2025-09-29T09:00:06.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:00:06.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:00:06.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:00:06.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 8, 59, 35), 1.81, 88.71, 0.0, 24.49, 7.38, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:00:06.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 08:59:35
2025-09-29T09:00:06.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:00:06.874 [DEBUG] [Thread-151590] [transport.py] [_log()] starting thread (client mode): 0x30ddf6d0
2025-09-29T09:00:06.874 [DEBUG] [Thread-151590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:00:06.885 [DEBUG] [Thread-151590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:00:06.885 [INFO] [Thread-151590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] client lang: <none>
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] server lang: <none>
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] kex follows: False
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:00:06.887 [DEBUG] [Thread-151590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:00:06.888 [DEBUG] [Thread-151590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:00:06.888 [DEBUG] [Thread-151590] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:00:06.888 [DEBUG] [Thread-151590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:00:06.888 [DEBUG] [Thread-151590] [transport.py] [_log()] Compression: none
2025-09-29T09:00:06.888 [DEBUG] [Thread-151590] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:00:06.897 [DEBUG] [Thread-151590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:00:06.898 [DEBUG] [Thread-151590] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:00:06.898 [DEBUG] [Thread-151590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:00:06.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:00:06.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:00:06.900 [DEBUG] [Thread-151590] [transport.py] [_log()] userauth is OK
2025-09-29T09:00:06.900 [DEBUG] [Thread-151590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:00:06.900 [DEBUG] [Thread-151590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:00:06.900 [DEBUG] [Thread-151590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:00:06.900 [DEBUG] [Thread-151590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:00:06.934 [INFO] [Thread-151590] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:00:06.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:00:13.799 [DEBUG] [Thread-151590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:00:13.800 [DEBUG] [Thread-151590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:00:13.800 [DEBUG] [Thread-151590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:00:13.840 [DEBUG] [Thread-151590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:00:13.840 [DEBUG] [Thread-151590] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:00:13.842 [DEBUG] [Thread-151590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:00:13.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:00:13.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:00:13.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:00:13.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:00:14.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:00:14.022 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:00:14.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:00:14.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:00:14.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.291042 -999.00   +8.30  15.95     82   +5.60 1 3 1 2 1   888    0 3.14 21.46 ----- 17.9 15.9 126.8 27.0 12.2 -10.2 11.8 -8.8 11.3 -10.4 11.8 -12.0
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.291042
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:00:14.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T08:59:35', tmtdew=1.81, humidity=88.71, cloud=0.0, wind=24.49, temperature=7.38, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T06:59:06.029', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:00:14.023 [DEBUG] [Thread-151590] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:00:14.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:00:14.111 [DEBUG] [Thread-151593] [transport.py] [_log()] starting thread (client mode): 0x2b9dcc10
2025-09-29T09:00:14.111 [DEBUG] [Thread-151593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:00:14.129 [DEBUG] [Thread-151593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:00:14.129 [INFO] [Thread-151593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:00:14.136 [DEBUG] [Thread-151593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:00:14.136 [DEBUG] [Thread-151593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:00:14.136 [DEBUG] [Thread-151593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:00:14.136 [DEBUG] [Thread-151593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:14.136 [DEBUG] [Thread-151593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:14.136 [DEBUG] [Thread-151593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:14.136 [DEBUG] [Thread-151593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] client lang: <none>
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] server lang: <none>
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] kex follows: False
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] Compression: none
2025-09-29T09:00:14.137 [DEBUG] [Thread-151593] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:00:14.193 [DEBUG] [Thread-151593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:00:14.193 [DEBUG] [Thread-151593] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:00:14.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:00:14.193 [DEBUG] [Thread-151593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:00:14.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:00:14.250 [DEBUG] [Thread-151593] [transport.py] [_log()] userauth is OK
2025-09-29T09:00:14.250 [DEBUG] [Thread-151593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:00:14.250 [DEBUG] [Thread-151593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:00:14.250 [DEBUG] [Thread-151593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:00:14.250 [DEBUG] [Thread-151593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:00:14.264 [INFO] [Thread-151593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:00:14.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:00:14.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:00:15.156 [DEBUG] [Thread-151595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:00:15.251 [DEBUG] [Thread-151593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:00:15.251 [DEBUG] [Thread-151593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:00:15.299 [DEBUG] [Thread-151593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:00:15.299 [DEBUG] [Thread-151593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:00:15.308 [DEBUG] [Thread-151593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:00:15.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:00:15.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:00:15.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:00:15.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:00:15.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:00:15.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:00:15.342 [DEBUG] [Thread-151593] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:00:17.552 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:00:17.553 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:00:25.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:00:25.344 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:00:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:00:25.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 0, 7), 1.75, 89.03, 0.0, 23.77, 7.33, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:00:25.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:00:07
2025-09-29T09:00:26.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:00:26.187 [DEBUG] [Thread-151596] [transport.py] [_log()] starting thread (client mode): 0x2e3df130
2025-09-29T09:00:26.187 [DEBUG] [Thread-151596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:00:26.206 [DEBUG] [Thread-151596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:00:26.206 [INFO] [Thread-151596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] client lang: <none>
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] server lang: <none>
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] kex follows: False
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] Compression: none
2025-09-29T09:00:26.208 [DEBUG] [Thread-151596] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:00:26.224 [DEBUG] [Thread-151596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:00:26.224 [DEBUG] [Thread-151596] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:00:26.224 [DEBUG] [Thread-151596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:00:26.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:00:26.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:00:26.225 [DEBUG] [Thread-151596] [transport.py] [_log()] userauth is OK
2025-09-29T09:00:26.225 [DEBUG] [Thread-151596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:00:26.225 [DEBUG] [Thread-151596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:00:26.225 [DEBUG] [Thread-151596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:00:26.225 [DEBUG] [Thread-151596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:00:26.234 [INFO] [Thread-151596] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:00:26.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:00:26.829 [DEBUG] [Thread-151596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:00:26.829 [DEBUG] [Thread-151596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:00:26.829 [DEBUG] [Thread-151596] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:00:26.870 [DEBUG] [Thread-151596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:00:26.871 [DEBUG] [Thread-151596] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:00:26.873 [DEBUG] [Thread-151596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:00:26.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:00:26.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:00:26.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:00:26.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:00:26.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:00:26.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:00:26.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:00:26.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:00:26.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:00:26.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.291389 -999.00   +8.50  19.97     82   +5.60 1 3 1 2 1   888    0 3.10 19.95 ----- 15.5 20.0 135.8 23.6 12.2 -10.7 11.8 -9.8 11.3 -10.0 11.8 -11.4
2025-09-29T09:00:26.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:00:26.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:00:26.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.291389
2025-09-29T09:00:26.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:00:26.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:00:26.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:00:26.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:00:26.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:00:26.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:00:07', tmtdew=1.75, humidity=89.03, cloud=0.0, wind=23.77, temperature=7.33, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T06:59:36.010', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:00:26.898 [DEBUG] [Thread-151596] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:00:26.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:00:26.994 [DEBUG] [Thread-151599] [transport.py] [_log()] starting thread (client mode): 0x2e3dc2e0
2025-09-29T09:00:26.994 [DEBUG] [Thread-151599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:00:27.008 [DEBUG] [Thread-151599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:00:27.008 [INFO] [Thread-151599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:00:27.016 [DEBUG] [Thread-151599] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:00:27.016 [DEBUG] [Thread-151599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:00:27.016 [DEBUG] [Thread-151599] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:00:27.016 [DEBUG] [Thread-151599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] client lang: <none>
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] server lang: <none>
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] kex follows: False
2025-09-29T09:00:27.017 [DEBUG] [Thread-151599] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:00:27.018 [DEBUG] [Thread-151599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:00:27.018 [DEBUG] [Thread-151599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:00:27.018 [DEBUG] [Thread-151599] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:00:27.018 [DEBUG] [Thread-151599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:00:27.018 [DEBUG] [Thread-151599] [transport.py] [_log()] Compression: none
2025-09-29T09:00:27.018 [DEBUG] [Thread-151599] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:00:27.075 [DEBUG] [Thread-151599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:00:27.075 [DEBUG] [Thread-151599] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:00:27.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:00:27.076 [DEBUG] [Thread-151599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:00:27.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:00:27.130 [DEBUG] [Thread-151599] [transport.py] [_log()] userauth is OK
2025-09-29T09:00:27.130 [DEBUG] [Thread-151599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:00:27.131 [DEBUG] [Thread-151599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:00:27.131 [DEBUG] [Thread-151599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:00:27.131 [DEBUG] [Thread-151599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:00:27.150 [INFO] [Thread-151599] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:00:27.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:00:27.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:00:28.160 [DEBUG] [Thread-151599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:00:28.160 [DEBUG] [Thread-151599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:00:28.208 [DEBUG] [Thread-151599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:00:28.208 [DEBUG] [Thread-151599] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:00:28.217 [DEBUG] [Thread-151599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:00:28.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:00:28.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:00:28.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:00:28.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:00:28.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:00:28.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:00:28.254 [DEBUG] [Thread-151599] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:00:28.312 [DEBUG] [Thread-151601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:00:30.182 [DEBUG] [Thread-151602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:00:38.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:00:38.257 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:00:38.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:00:38.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 0, 7), 1.75, 89.03, 0.0, 23.77, 7.33, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:00:38.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:00:07
2025-09-29T09:00:38.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:00:39.108 [DEBUG] [Thread-151603] [transport.py] [_log()] starting thread (client mode): 0x2e3621a0
2025-09-29T09:00:39.108 [DEBUG] [Thread-151603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:00:39.128 [DEBUG] [Thread-151603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:00:39.129 [INFO] [Thread-151603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:00:39.132 [DEBUG] [Thread-151603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:00:39.132 [DEBUG] [Thread-151603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:00:39.132 [DEBUG] [Thread-151603] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:00:39.132 [DEBUG] [Thread-151603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:39.132 [DEBUG] [Thread-151603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:00:39.132 [DEBUG] [Thread-151603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:39.132 [DEBUG] [Thread-151603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] client lang: <none>
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] server lang: <none>
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] kex follows: False
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] Compression: none
2025-09-29T09:00:39.133 [DEBUG] [Thread-151603] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:00:39.152 [DEBUG] [Thread-151603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:00:39.153 [DEBUG] [Thread-151603] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:00:39.153 [DEBUG] [Thread-151603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:00:39.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:00:39.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:00:39.156 [DEBUG] [Thread-151603] [transport.py] [_log()] userauth is OK
2025-09-29T09:00:39.156 [DEBUG] [Thread-151603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:00:39.156 [DEBUG] [Thread-151603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:00:39.156 [DEBUG] [Thread-151603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:00:39.156 [DEBUG] [Thread-151603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:00:39.179 [INFO] [Thread-151603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:00:39.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:00:39.961 [DEBUG] [Thread-151603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:00:39.961 [DEBUG] [Thread-151603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:00:39.961 [DEBUG] [Thread-151603] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:00:40.001 [DEBUG] [Thread-151603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:00:40.002 [DEBUG] [Thread-151603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:00:40.005 [DEBUG] [Thread-151603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:00:40.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:00:40.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:00:40.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:00:40.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:00:40.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:00:40.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:00:40.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:00:40.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:00:40.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:00:40.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.291389 -999.00   +8.50  19.97     82   +5.60 1 3 1 2 1   888    0 3.10 19.95 ----- 15.5 20.0 135.8 23.6 12.2 -10.7 11.8 -9.8 11.3 -10.0 11.8 -11.4
2025-09-29T09:00:40.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:00:40.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:00:40.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.291389
2025-09-29T09:00:40.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:00:40.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:00:40.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:00:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:00:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:00:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:00:07', tmtdew=1.75, humidity=89.03, cloud=0.0, wind=23.77, temperature=7.33, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T06:59:36.010', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:00:40.029 [DEBUG] [Thread-151603] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:00:40.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:00:45.236 [DEBUG] [Thread-151606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:01:00.265 [DEBUG] [Thread-151607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:01:15.292 [DEBUG] [Thread-151608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:01:17.696 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:01:17.697 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:01:28.365 [DEBUG] [Thread-151609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:01:30.322 [DEBUG] [Thread-151610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:01:45.350 [DEBUG] [Thread-151611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:02:00.377 [DEBUG] [Thread-151612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:02:15.405 [DEBUG] [Thread-151613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:02:17.839 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:02:17.840 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:02:28.417 [DEBUG] [Thread-151614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:02:30.433 [DEBUG] [Thread-151615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:02:45.464 [DEBUG] [Thread-151616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:02:53.883 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T09:03:00.493 [DEBUG] [Thread-151617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:03:03.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:03:03.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:03:03.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:03:04.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 2, 47), 1.9, 88.26, 0.0, 22.25, 7.49, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:03:04.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:02:47
2025-09-29T09:03:04.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:03:04.770 [DEBUG] [Thread-151618] [transport.py] [_log()] starting thread (client mode): 0x2b91ff40
2025-09-29T09:03:04.770 [DEBUG] [Thread-151618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:04.784 [DEBUG] [Thread-151618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:03:04.784 [INFO] [Thread-151618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:04.786 [DEBUG] [Thread-151618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:04.787 [DEBUG] [Thread-151618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:04.787 [DEBUG] [Thread-151618] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:04.787 [DEBUG] [Thread-151618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:04.787 [DEBUG] [Thread-151618] [transport.py] [_log()] Compression: none
2025-09-29T09:03:04.787 [DEBUG] [Thread-151618] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:04.794 [DEBUG] [Thread-151618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:04.794 [DEBUG] [Thread-151618] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:04.794 [DEBUG] [Thread-151618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:03:04.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:03:04.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:04.795 [DEBUG] [Thread-151618] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:04.795 [DEBUG] [Thread-151618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:04.795 [DEBUG] [Thread-151618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:04.796 [DEBUG] [Thread-151618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:03:04.796 [DEBUG] [Thread-151618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:04.809 [INFO] [Thread-151618] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:04.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:05.382 [DEBUG] [Thread-151618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:05.382 [DEBUG] [Thread-151618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:05.383 [DEBUG] [Thread-151618] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:03:05.423 [DEBUG] [Thread-151618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:05.423 [DEBUG] [Thread-151618] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:05.429 [DEBUG] [Thread-151618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:05.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:05.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:03:05.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:03:05.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:03:05.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:05.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:03:05.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:05.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:05.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:03:05.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.293472 -999.00   +7.90  18.17     83   +5.20 1 2 1 2 1   888    0 3.15 19.37 ----- 14.4 18.2 159.0 25.7 11.8 -14.4 11.3 -15.5 10.9 -20.3 11.5 -19.1
2025-09-29T09:03:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:03:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:03:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.293472
2025-09-29T09:03:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:03:05.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:03:05.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:03:05.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:03:05.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:03:05.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:02:47', tmtdew=1.9, humidity=88.26, cloud=0.0, wind=22.25, temperature=7.49, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:02:35.981', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:03:05.454 [DEBUG] [Thread-151618] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:05.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:03:05.547 [DEBUG] [Thread-151621] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-29T09:03:05.547 [DEBUG] [Thread-151621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:05.563 [DEBUG] [Thread-151621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:03:05.563 [INFO] [Thread-151621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:05.572 [DEBUG] [Thread-151621] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:05.573 [DEBUG] [Thread-151621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:05.573 [DEBUG] [Thread-151621] [transport.py] [_log()] Compression: none
2025-09-29T09:03:05.573 [DEBUG] [Thread-151621] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:05.629 [DEBUG] [Thread-151621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:05.629 [DEBUG] [Thread-151621] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:05.630 [DEBUG] [Thread-151621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:03:05.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:03:05.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:05.685 [DEBUG] [Thread-151621] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:05.685 [DEBUG] [Thread-151621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:05.685 [DEBUG] [Thread-151621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:05.686 [DEBUG] [Thread-151621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:03:05.686 [DEBUG] [Thread-151621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:05.705 [INFO] [Thread-151621] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:05.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:03:05.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:06.726 [DEBUG] [Thread-151621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:06.726 [DEBUG] [Thread-151621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:06.775 [DEBUG] [Thread-151621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:06.775 [DEBUG] [Thread-151621] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:06.786 [DEBUG] [Thread-151621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:06.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:06.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:03:06.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:03:06.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:06.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:06.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:06.826 [DEBUG] [Thread-151621] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:15.522 [DEBUG] [Thread-151623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:03:16.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:03:16.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:03:16.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:03:17.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 2, 47), 1.9, 88.26, 0.0, 22.25, 7.49, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:03:17.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:02:47
2025-09-29T09:03:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:03:17.684 [DEBUG] [Thread-151624] [transport.py] [_log()] starting thread (client mode): 0x2b91ec80
2025-09-29T09:03:17.684 [DEBUG] [Thread-151624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:17.701 [DEBUG] [Thread-151624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:03:17.701 [INFO] [Thread-151624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:03:17.702 [DEBUG] [Thread-151624] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:17.702 [DEBUG] [Thread-151624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:03:17.702 [DEBUG] [Thread-151624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:17.702 [DEBUG] [Thread-151624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:17.702 [DEBUG] [Thread-151624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:17.702 [DEBUG] [Thread-151624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] Compression: none
2025-09-29T09:03:17.703 [DEBUG] [Thread-151624] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:17.710 [DEBUG] [Thread-151624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:17.710 [DEBUG] [Thread-151624] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:17.710 [DEBUG] [Thread-151624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:03:17.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:03:17.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:17.712 [DEBUG] [Thread-151624] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:17.712 [DEBUG] [Thread-151624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:17.712 [DEBUG] [Thread-151624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:17.712 [DEBUG] [Thread-151624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:03:17.712 [DEBUG] [Thread-151624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:17.732 [INFO] [Thread-151624] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:17.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:17.981 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:03:17.982 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:03:18.341 [DEBUG] [Thread-151624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:18.341 [DEBUG] [Thread-151624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:18.342 [DEBUG] [Thread-151624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:03:18.382 [DEBUG] [Thread-151624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:18.382 [DEBUG] [Thread-151624] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:18.386 [DEBUG] [Thread-151624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:18.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:18.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:03:18.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:03:18.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:03:18.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:18.409 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:03:18.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:18.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:18.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:03:18.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.293472 -999.00   +7.90  18.17     83   +5.20 1 2 1 2 1   888    0 3.15 19.37 ----- 14.4 18.2 159.0 25.7 11.8 -14.4 11.3 -15.5 10.9 -20.3 11.5 -19.1
2025-09-29T09:03:18.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:03:18.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:03:18.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.293472
2025-09-29T09:03:18.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:03:18.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:03:18.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:03:18.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:03:18.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:03:18.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:02:47', tmtdew=1.9, humidity=88.26, cloud=0.0, wind=22.25, temperature=7.49, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:02:35.981', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:03:18.412 [DEBUG] [Thread-151624] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:18.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:03:18.506 [DEBUG] [Thread-151627] [transport.py] [_log()] starting thread (client mode): 0x2b91fac0
2025-09-29T09:03:18.506 [DEBUG] [Thread-151627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:18.521 [DEBUG] [Thread-151627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:03:18.521 [INFO] [Thread-151627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:03:18.529 [DEBUG] [Thread-151627] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:18.529 [DEBUG] [Thread-151627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:03:18.529 [DEBUG] [Thread-151627] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:18.529 [DEBUG] [Thread-151627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:18.529 [DEBUG] [Thread-151627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:18.529 [DEBUG] [Thread-151627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:18.529 [DEBUG] [Thread-151627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] Compression: none
2025-09-29T09:03:18.530 [DEBUG] [Thread-151627] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:18.590 [DEBUG] [Thread-151627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:18.590 [DEBUG] [Thread-151627] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:18.591 [DEBUG] [Thread-151627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:03:18.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:03:18.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:18.648 [DEBUG] [Thread-151627] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:18.649 [DEBUG] [Thread-151627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:18.649 [DEBUG] [Thread-151627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:18.649 [DEBUG] [Thread-151627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:03:18.649 [DEBUG] [Thread-151627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:18.673 [INFO] [Thread-151627] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:18.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:03:18.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:19.693 [DEBUG] [Thread-151627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:19.693 [DEBUG] [Thread-151627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:19.741 [DEBUG] [Thread-151627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:19.741 [DEBUG] [Thread-151627] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:19.750 [DEBUG] [Thread-151627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:19.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:19.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:03:19.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:03:19.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:19.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:19.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:19.786 [DEBUG] [Thread-151627] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:28.468 [DEBUG] [Thread-151629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:03:29.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:03:29.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:03:29.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:03:30.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 3, 19), 1.91, 88.21, 0.0, 24.46, 7.56, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:03:30.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:03:19
2025-09-29T09:03:30.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:03:30.563 [DEBUG] [Thread-151630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:03:30.658 [DEBUG] [Thread-151631] [transport.py] [_log()] starting thread (client mode): 0x2e3f86a0
2025-09-29T09:03:30.658 [DEBUG] [Thread-151631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:30.676 [DEBUG] [Thread-151631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:03:30.676 [INFO] [Thread-151631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] Compression: none
2025-09-29T09:03:30.679 [DEBUG] [Thread-151631] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:30.699 [DEBUG] [Thread-151631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:30.700 [DEBUG] [Thread-151631] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:30.700 [DEBUG] [Thread-151631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:03:30.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:03:30.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:30.701 [DEBUG] [Thread-151631] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:30.702 [DEBUG] [Thread-151631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:30.702 [DEBUG] [Thread-151631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:30.702 [DEBUG] [Thread-151631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:03:30.702 [DEBUG] [Thread-151631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:30.720 [INFO] [Thread-151631] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:30.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:31.340 [DEBUG] [Thread-151631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:31.341 [DEBUG] [Thread-151631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:31.341 [DEBUG] [Thread-151631] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:03:31.381 [DEBUG] [Thread-151631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:31.381 [DEBUG] [Thread-151631] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:31.385 [DEBUG] [Thread-151631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:31.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:31.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:03:31.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:03:31.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:03:31.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:31.409 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:03:31.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:31.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:31.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:03:31.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.293472 -999.00   +7.90  18.17     83   +5.20 1 2 1 2 1   888    0 3.15 19.37 ----- 14.4 18.2 159.0 25.7 11.8 -14.4 11.3 -15.5 10.9 -20.3 11.5 -19.1
2025-09-29T09:03:31.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:03:31.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:03:31.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.293472
2025-09-29T09:03:31.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:03:31.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:03:31.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:03:31.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:03:31.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:03:31.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:03:19', tmtdew=1.91, humidity=88.21, cloud=0.0, wind=24.46, temperature=7.56, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:02:35.981', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:03:31.412 [DEBUG] [Thread-151631] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:31.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:03:31.510 [DEBUG] [Thread-151634] [transport.py] [_log()] starting thread (client mode): 0x2e361450
2025-09-29T09:03:31.511 [DEBUG] [Thread-151634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:31.527 [DEBUG] [Thread-151634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:03:31.527 [INFO] [Thread-151634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:03:31.534 [DEBUG] [Thread-151634] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:31.535 [DEBUG] [Thread-151634] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:31.536 [DEBUG] [Thread-151634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:31.536 [DEBUG] [Thread-151634] [transport.py] [_log()] Compression: none
2025-09-29T09:03:31.536 [DEBUG] [Thread-151634] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:31.595 [DEBUG] [Thread-151634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:31.596 [DEBUG] [Thread-151634] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:31.596 [DEBUG] [Thread-151634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:03:31.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:03:31.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:31.654 [DEBUG] [Thread-151634] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:31.654 [DEBUG] [Thread-151634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:31.654 [DEBUG] [Thread-151634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:31.655 [DEBUG] [Thread-151634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:03:31.655 [DEBUG] [Thread-151634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:31.674 [INFO] [Thread-151634] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:31.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:03:31.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:32.736 [DEBUG] [Thread-151634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:32.736 [DEBUG] [Thread-151634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:32.784 [DEBUG] [Thread-151634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:32.784 [DEBUG] [Thread-151634] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:32.793 [DEBUG] [Thread-151634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:32.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:32.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:03:32.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:03:32.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:32.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:32.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:32.827 [DEBUG] [Thread-151634] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:03:42.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:03:42.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:03:43.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 3, 19), 1.91, 88.21, 0.0, 24.46, 7.56, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:03:43.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:03:19
2025-09-29T09:03:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:03:43.685 [DEBUG] [Thread-151636] [transport.py] [_log()] starting thread (client mode): 0x2b9a71f0
2025-09-29T09:03:43.685 [DEBUG] [Thread-151636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:43.696 [DEBUG] [Thread-151636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:03:43.696 [INFO] [Thread-151636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] Compression: none
2025-09-29T09:03:43.697 [DEBUG] [Thread-151636] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:43.705 [DEBUG] [Thread-151636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:43.705 [DEBUG] [Thread-151636] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:43.706 [DEBUG] [Thread-151636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:03:43.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:03:43.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:43.707 [DEBUG] [Thread-151636] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:43.707 [DEBUG] [Thread-151636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:43.707 [DEBUG] [Thread-151636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:43.707 [DEBUG] [Thread-151636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:03:43.707 [DEBUG] [Thread-151636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:43.718 [INFO] [Thread-151636] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:43.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:44.372 [DEBUG] [Thread-151636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:44.372 [DEBUG] [Thread-151636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:44.373 [DEBUG] [Thread-151636] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:03:44.413 [DEBUG] [Thread-151636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:44.414 [DEBUG] [Thread-151636] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:44.417 [DEBUG] [Thread-151636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:44.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:44.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:03:44.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:03:44.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:03:44.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:44.440 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:03:44.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:44.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:44.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:03:44.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.293820 -999.00   +8.00  15.33     83   +5.30 1 2 1 2 1   888    0 3.17 18.67 ----- 18.2 15.3 167.4 24.5 11.7 -11.3 11.2 -12.9 10.9 -16.0 11.4 -15.6
2025-09-29T09:03:44.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:03:44.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:03:44.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.293820
2025-09-29T09:03:44.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:03:44.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:03:44.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:03:44.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:03:44.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:03:44.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:03:19', tmtdew=1.91, humidity=88.21, cloud=0.0, wind=24.46, temperature=7.56, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:03:06.048', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:03:44.443 [DEBUG] [Thread-151636] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:44.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:03:44.539 [DEBUG] [Thread-151639] [transport.py] [_log()] starting thread (client mode): 0x2b9a7f40
2025-09-29T09:03:44.539 [DEBUG] [Thread-151639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:44.554 [DEBUG] [Thread-151639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:03:44.554 [INFO] [Thread-151639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:03:44.561 [DEBUG] [Thread-151639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:44.561 [DEBUG] [Thread-151639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] Compression: none
2025-09-29T09:03:44.562 [DEBUG] [Thread-151639] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:44.619 [DEBUG] [Thread-151639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:44.620 [DEBUG] [Thread-151639] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:44.620 [DEBUG] [Thread-151639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:03:44.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:03:44.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:44.676 [DEBUG] [Thread-151639] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:44.676 [DEBUG] [Thread-151639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:44.676 [DEBUG] [Thread-151639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:44.676 [DEBUG] [Thread-151639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:03:44.676 [DEBUG] [Thread-151639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:44.694 [INFO] [Thread-151639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:44.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:03:44.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:45.588 [DEBUG] [Thread-151641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:03:45.665 [DEBUG] [Thread-151639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:45.665 [DEBUG] [Thread-151639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:45.713 [DEBUG] [Thread-151639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:45.713 [DEBUG] [Thread-151639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:45.722 [DEBUG] [Thread-151639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:45.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:45.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:03:45.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:03:45.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:45.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:45.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:45.757 [DEBUG] [Thread-151639] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:55.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:03:55.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:03:55.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:03:56.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 3, 51), 1.98, 87.8, 0.0, 26.29, 7.29, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:03:56.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:03:51
2025-09-29T09:03:56.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:03:56.630 [DEBUG] [Thread-151642] [transport.py] [_log()] starting thread (client mode): 0x2b9a75b0
2025-09-29T09:03:56.630 [DEBUG] [Thread-151642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:56.650 [DEBUG] [Thread-151642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:03:56.650 [INFO] [Thread-151642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:03:56.653 [DEBUG] [Thread-151642] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:56.653 [DEBUG] [Thread-151642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:03:56.653 [DEBUG] [Thread-151642] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:56.653 [DEBUG] [Thread-151642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:56.653 [DEBUG] [Thread-151642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:56.653 [DEBUG] [Thread-151642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:56.653 [DEBUG] [Thread-151642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] Compression: none
2025-09-29T09:03:56.654 [DEBUG] [Thread-151642] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:56.670 [DEBUG] [Thread-151642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:56.671 [DEBUG] [Thread-151642] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:56.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:03:56.672 [DEBUG] [Thread-151642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:03:56.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:56.673 [DEBUG] [Thread-151642] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:56.674 [DEBUG] [Thread-151642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:56.674 [DEBUG] [Thread-151642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:56.674 [DEBUG] [Thread-151642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:03:56.674 [DEBUG] [Thread-151642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:56.697 [INFO] [Thread-151642] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:56.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:57.327 [DEBUG] [Thread-151642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:57.328 [DEBUG] [Thread-151642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:57.328 [DEBUG] [Thread-151642] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:03:57.368 [DEBUG] [Thread-151642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:57.368 [DEBUG] [Thread-151642] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:57.371 [DEBUG] [Thread-151642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:57.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:57.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:03:57.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:03:57.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:03:57.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:57.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:03:57.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:57.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:57.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:03:57.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.293820 -999.00   +8.00  15.33     83   +5.30 1 2 1 2 1   888    0 3.17 18.67 ----- 18.2 15.3 167.4 24.5 11.7 -11.3 11.2 -12.9 10.9 -16.0 11.4 -15.6
2025-09-29T09:03:57.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:03:57.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:03:57.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.293820
2025-09-29T09:03:57.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:03:57.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:03:57.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:03:57.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:03:57.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:03:57.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:03:51', tmtdew=1.98, humidity=87.8, cloud=0.0, wind=26.29, temperature=7.29, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:03:06.048', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:03:57.396 [DEBUG] [Thread-151642] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:03:57.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:03:57.486 [DEBUG] [Thread-151645] [transport.py] [_log()] starting thread (client mode): 0x2e363490
2025-09-29T09:03:57.486 [DEBUG] [Thread-151645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:03:57.501 [DEBUG] [Thread-151645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:03:57.501 [INFO] [Thread-151645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:03:57.508 [DEBUG] [Thread-151645] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:03:57.508 [DEBUG] [Thread-151645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] client lang: <none>
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] server lang: <none>
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] kex follows: False
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] Compression: none
2025-09-29T09:03:57.509 [DEBUG] [Thread-151645] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:03:57.567 [DEBUG] [Thread-151645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:03:57.568 [DEBUG] [Thread-151645] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:03:57.568 [DEBUG] [Thread-151645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:03:57.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:03:57.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:03:57.623 [DEBUG] [Thread-151645] [transport.py] [_log()] userauth is OK
2025-09-29T09:03:57.623 [DEBUG] [Thread-151645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:03:57.623 [DEBUG] [Thread-151645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:03:57.623 [DEBUG] [Thread-151645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:03:57.623 [DEBUG] [Thread-151645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:03:57.641 [INFO] [Thread-151645] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:03:57.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:03:57.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:03:58.749 [DEBUG] [Thread-151645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:03:58.750 [DEBUG] [Thread-151645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:03:58.801 [DEBUG] [Thread-151645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:03:58.802 [DEBUG] [Thread-151645] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:03:58.814 [DEBUG] [Thread-151645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:03:58.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:03:58.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:03:58.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:03:58.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:03:58.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:03:58.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:03:58.851 [DEBUG] [Thread-151645] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:04:00.643 [DEBUG] [Thread-151647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:04:08.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:04:08.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:04:08.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:04:09.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 3, 51), 1.98, 87.8, 0.0, 26.29, 7.29, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:04:09.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:03:51
2025-09-29T09:04:09.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:04:09.700 [DEBUG] [Thread-151648] [transport.py] [_log()] starting thread (client mode): 0x2b9cd5a0
2025-09-29T09:04:09.700 [DEBUG] [Thread-151648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:04:09.718 [DEBUG] [Thread-151648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:04:09.718 [INFO] [Thread-151648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] client lang: <none>
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] server lang: <none>
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] kex follows: False
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] Compression: none
2025-09-29T09:04:09.720 [DEBUG] [Thread-151648] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:04:09.728 [DEBUG] [Thread-151648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:04:09.728 [DEBUG] [Thread-151648] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:04:09.729 [DEBUG] [Thread-151648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:04:09.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:04:09.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:04:09.730 [DEBUG] [Thread-151648] [transport.py] [_log()] userauth is OK
2025-09-29T09:04:09.730 [DEBUG] [Thread-151648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:04:09.730 [DEBUG] [Thread-151648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:04:09.730 [DEBUG] [Thread-151648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:04:09.730 [DEBUG] [Thread-151648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:04:09.746 [INFO] [Thread-151648] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:04:09.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:04:10.343 [DEBUG] [Thread-151648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:04:10.343 [DEBUG] [Thread-151648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:04:10.344 [DEBUG] [Thread-151648] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:04:10.385 [DEBUG] [Thread-151648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:04:10.386 [DEBUG] [Thread-151648] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:04:10.388 [DEBUG] [Thread-151648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:04:10.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:04:10.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:04:10.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:04:10.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:04:10.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:04:10.407 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:04:10.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:04:10.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:04:10.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:04:10.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.293820 -999.00   +8.00  15.33     83   +5.30 1 2 1 2 1   888    0 3.17 18.67 ----- 18.2 15.3 167.4 24.5 11.7 -11.3 11.2 -12.9 10.9 -16.0 11.4 -15.6
2025-09-29T09:04:10.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:04:10.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:04:10.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.293820
2025-09-29T09:04:10.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:04:10.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:04:10.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:04:10.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:04:10.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:04:10.410 [DEBUG] [Thread-151648] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:04:10.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:03:51', tmtdew=1.98, humidity=87.8, cloud=0.0, wind=26.29, temperature=7.29, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:03:06.048', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:04:10.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:04:10.507 [DEBUG] [Thread-151651] [transport.py] [_log()] starting thread (client mode): 0x2b9a48e0
2025-09-29T09:04:10.508 [DEBUG] [Thread-151651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:04:10.522 [DEBUG] [Thread-151651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:04:10.522 [INFO] [Thread-151651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:04:10.536 [DEBUG] [Thread-151651] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] client lang: <none>
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] server lang: <none>
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] kex follows: False
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:04:10.537 [DEBUG] [Thread-151651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:04:10.538 [DEBUG] [Thread-151651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:04:10.538 [DEBUG] [Thread-151651] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:04:10.538 [DEBUG] [Thread-151651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:04:10.538 [DEBUG] [Thread-151651] [transport.py] [_log()] Compression: none
2025-09-29T09:04:10.538 [DEBUG] [Thread-151651] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:04:10.587 [DEBUG] [Thread-151651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:04:10.588 [DEBUG] [Thread-151651] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:04:10.588 [DEBUG] [Thread-151651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:04:10.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:04:10.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:04:10.644 [DEBUG] [Thread-151651] [transport.py] [_log()] userauth is OK
2025-09-29T09:04:10.644 [DEBUG] [Thread-151651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:04:10.644 [DEBUG] [Thread-151651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:04:10.644 [DEBUG] [Thread-151651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:04:10.644 [DEBUG] [Thread-151651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:04:10.664 [INFO] [Thread-151651] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:04:10.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:04:10.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:04:11.670 [DEBUG] [Thread-151651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:04:11.670 [DEBUG] [Thread-151651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:04:11.718 [DEBUG] [Thread-151651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:04:11.718 [DEBUG] [Thread-151651] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:04:11.727 [DEBUG] [Thread-151651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:04:11.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:04:11.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:04:11.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:04:11.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:04:11.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:04:11.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:04:11.761 [DEBUG] [Thread-151651] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:04:15.689 [DEBUG] [Thread-151653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:04:18.127 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:04:18.128 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:04:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:04:21.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:04:21.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:04:22.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 3, 51), 1.98, 87.8, 0.0, 26.29, 7.29, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:04:22.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:03:51
2025-09-29T09:04:22.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:04:22.628 [DEBUG] [Thread-151654] [transport.py] [_log()] starting thread (client mode): 0x2b9a5630
2025-09-29T09:04:22.628 [DEBUG] [Thread-151654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:04:22.649 [DEBUG] [Thread-151654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:04:22.649 [INFO] [Thread-151654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:04:22.652 [DEBUG] [Thread-151654] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:04:22.652 [DEBUG] [Thread-151654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] client lang: <none>
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] server lang: <none>
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] kex follows: False
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] Compression: none
2025-09-29T09:04:22.653 [DEBUG] [Thread-151654] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:04:22.670 [DEBUG] [Thread-151654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:04:22.671 [DEBUG] [Thread-151654] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:04:22.671 [DEBUG] [Thread-151654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:04:22.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:04:22.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:04:22.676 [DEBUG] [Thread-151654] [transport.py] [_log()] userauth is OK
2025-09-29T09:04:22.676 [DEBUG] [Thread-151654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:04:22.676 [DEBUG] [Thread-151654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:04:22.676 [DEBUG] [Thread-151654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:04:22.676 [DEBUG] [Thread-151654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:04:22.694 [INFO] [Thread-151654] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:04:22.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:04:23.259 [DEBUG] [Thread-151654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:04:23.259 [DEBUG] [Thread-151654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:04:23.260 [DEBUG] [Thread-151654] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:04:23.300 [DEBUG] [Thread-151654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:04:23.300 [DEBUG] [Thread-151654] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:04:23.303 [DEBUG] [Thread-151654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:04:23.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:04:23.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:04:23.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:04:23.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:04:23.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:04:23.327 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:04:23.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:04:23.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:04:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:04:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.294514 -999.00   +7.80  16.84     82   +5.10 1 2 1 2 1   888    0 3.17 18.27 ----- 15.6 16.8 160.2 24.3 11.6 -8.5 11.1 -10.2 10.8 -12.6 11.4 -11.8
2025-09-29T09:04:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:04:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:04:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.294514
2025-09-29T09:04:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:04:23.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:04:23.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:04:23.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:04:23.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:04:23.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:03:51', tmtdew=1.98, humidity=87.8, cloud=0.0, wind=26.29, temperature=7.29, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:04:06.010', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:04:23.330 [DEBUG] [Thread-151654] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:04:23.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:04:23.424 [DEBUG] [Thread-151657] [transport.py] [_log()] starting thread (client mode): 0x2b91e410
2025-09-29T09:04:23.424 [DEBUG] [Thread-151657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:04:23.438 [DEBUG] [Thread-151657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:04:23.439 [INFO] [Thread-151657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:04:23.446 [DEBUG] [Thread-151657] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:04:23.446 [DEBUG] [Thread-151657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:04:23.446 [DEBUG] [Thread-151657] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] client lang: <none>
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] server lang: <none>
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] kex follows: False
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] Compression: none
2025-09-29T09:04:23.447 [DEBUG] [Thread-151657] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:04:23.508 [DEBUG] [Thread-151657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:04:23.509 [DEBUG] [Thread-151657] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:04:23.509 [DEBUG] [Thread-151657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:04:23.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:04:23.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:04:23.564 [DEBUG] [Thread-151657] [transport.py] [_log()] userauth is OK
2025-09-29T09:04:23.564 [DEBUG] [Thread-151657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:04:23.564 [DEBUG] [Thread-151657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:04:23.564 [DEBUG] [Thread-151657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:04:23.564 [DEBUG] [Thread-151657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:04:23.582 [INFO] [Thread-151657] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:04:23.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:04:23.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:04:24.601 [DEBUG] [Thread-151657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:04:24.601 [DEBUG] [Thread-151657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:04:24.649 [DEBUG] [Thread-151657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:04:24.649 [DEBUG] [Thread-151657] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:04:24.657 [DEBUG] [Thread-151657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:04:24.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:04:24.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:04:24.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:04:24.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:04:24.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:04:24.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:04:24.688 [DEBUG] [Thread-151657] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:04:28.523 [DEBUG] [Thread-151659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:04:30.713 [DEBUG] [Thread-151660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:04:34.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:04:34.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:04:34.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:04:35.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 4, 23), 1.98, 87.83, 0.0, 26.73, 7.24, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:04:35.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:04:23
2025-09-29T09:04:35.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:04:35.544 [DEBUG] [Thread-151661] [transport.py] [_log()] starting thread (client mode): 0x2b91f460
2025-09-29T09:04:35.544 [DEBUG] [Thread-151661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:04:35.564 [DEBUG] [Thread-151661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:04:35.564 [INFO] [Thread-151661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] client lang: <none>
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] server lang: <none>
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] kex follows: False
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] Compression: none
2025-09-29T09:04:35.567 [DEBUG] [Thread-151661] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:04:35.583 [DEBUG] [Thread-151661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:04:35.584 [DEBUG] [Thread-151661] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:04:35.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:04:35.585 [DEBUG] [Thread-151661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:04:35.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:04:35.587 [DEBUG] [Thread-151661] [transport.py] [_log()] userauth is OK
2025-09-29T09:04:35.587 [DEBUG] [Thread-151661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:04:35.587 [DEBUG] [Thread-151661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:04:35.587 [DEBUG] [Thread-151661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:04:35.587 [DEBUG] [Thread-151661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:04:35.605 [INFO] [Thread-151661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:04:35.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:04:36.336 [DEBUG] [Thread-151661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:04:36.336 [DEBUG] [Thread-151661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:04:36.336 [DEBUG] [Thread-151661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:04:36.377 [DEBUG] [Thread-151661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:04:36.377 [DEBUG] [Thread-151661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:04:36.380 [DEBUG] [Thread-151661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:04:36.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:04:36.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:04:36.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:04:36.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:04:36.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:04:36.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:04:36.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:04:36.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:04:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:04:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.294514 -999.00   +7.80  16.84     82   +5.10 1 2 1 2 1   888    0 3.17 18.27 ----- 15.6 16.8 160.2 24.3 11.6 -8.5 11.1 -10.2 10.8 -12.6 11.4 -11.8
2025-09-29T09:04:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:04:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:04:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.294514
2025-09-29T09:04:36.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:04:36.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:04:36.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:04:36.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:04:36.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:04:36.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:04:23', tmtdew=1.98, humidity=87.83, cloud=0.0, wind=26.73, temperature=7.24, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:04:06.010', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:04:36.407 [DEBUG] [Thread-151661] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:04:36.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:04:36.503 [DEBUG] [Thread-151664] [transport.py] [_log()] starting thread (client mode): 0x2e3dd090
2025-09-29T09:04:36.504 [DEBUG] [Thread-151664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:04:36.519 [DEBUG] [Thread-151664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:04:36.519 [INFO] [Thread-151664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:04:36.526 [DEBUG] [Thread-151664] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:04:36.526 [DEBUG] [Thread-151664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:04:36.526 [DEBUG] [Thread-151664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:04:36.526 [DEBUG] [Thread-151664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] client lang: <none>
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] server lang: <none>
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] kex follows: False
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] Compression: none
2025-09-29T09:04:36.527 [DEBUG] [Thread-151664] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:04:36.582 [DEBUG] [Thread-151664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:04:36.582 [DEBUG] [Thread-151664] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:04:36.582 [DEBUG] [Thread-151664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:04:36.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:04:36.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:04:36.639 [DEBUG] [Thread-151664] [transport.py] [_log()] userauth is OK
2025-09-29T09:04:36.639 [DEBUG] [Thread-151664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:04:36.639 [DEBUG] [Thread-151664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:04:36.639 [DEBUG] [Thread-151664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:04:36.639 [DEBUG] [Thread-151664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:04:36.653 [INFO] [Thread-151664] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:04:36.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:04:36.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:04:37.654 [DEBUG] [Thread-151664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:04:37.655 [DEBUG] [Thread-151664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:04:37.705 [DEBUG] [Thread-151664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:04:37.705 [DEBUG] [Thread-151664] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:04:37.714 [DEBUG] [Thread-151664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:04:37.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:04:37.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:04:37.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:04:37.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:04:37.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:04:37.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:04:37.749 [DEBUG] [Thread-151664] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:04:45.764 [DEBUG] [Thread-151666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:04:47.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:04:47.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:04:47.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:04:48.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 4, 23), 1.98, 87.83, 0.0, 26.73, 7.24, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:04:48.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:04:23
2025-09-29T09:04:48.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:04:48.603 [DEBUG] [Thread-151667] [transport.py] [_log()] starting thread (client mode): 0x2b91cdc0
2025-09-29T09:04:48.603 [DEBUG] [Thread-151667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:04:48.631 [DEBUG] [Thread-151667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:04:48.631 [INFO] [Thread-151667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:04:48.635 [DEBUG] [Thread-151667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:04:48.635 [DEBUG] [Thread-151667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:04:48.635 [DEBUG] [Thread-151667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:04:48.635 [DEBUG] [Thread-151667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:48.635 [DEBUG] [Thread-151667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:48.635 [DEBUG] [Thread-151667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:48.635 [DEBUG] [Thread-151667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] client lang: <none>
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] server lang: <none>
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] kex follows: False
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] Compression: none
2025-09-29T09:04:48.636 [DEBUG] [Thread-151667] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:04:48.658 [DEBUG] [Thread-151667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:04:48.658 [DEBUG] [Thread-151667] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:04:48.659 [DEBUG] [Thread-151667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:04:48.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:04:48.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:04:48.660 [DEBUG] [Thread-151667] [transport.py] [_log()] userauth is OK
2025-09-29T09:04:48.661 [DEBUG] [Thread-151667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:04:48.661 [DEBUG] [Thread-151667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:04:48.661 [DEBUG] [Thread-151667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:04:48.661 [DEBUG] [Thread-151667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:04:48.684 [INFO] [Thread-151667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:04:48.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:04:49.277 [DEBUG] [Thread-151667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:04:49.277 [DEBUG] [Thread-151667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:04:49.277 [DEBUG] [Thread-151667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:04:49.317 [DEBUG] [Thread-151667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:04:49.317 [DEBUG] [Thread-151667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:04:49.319 [DEBUG] [Thread-151667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:04:49.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:04:49.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:04:49.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:04:49.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:04:49.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:04:49.337 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:04:49.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:04:49.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:04:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:04:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.294861 -999.00   +7.90  18.14     83   +5.20 1 3 1 2 1   888    0 3.18 17.87 ----- 22.4 18.1 172.6 27.4 11.6 -7.7 11.1 -7.9 10.7 -10.3 11.3 -10.1
2025-09-29T09:04:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:04:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:04:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.294861
2025-09-29T09:04:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:04:49.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:04:49.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:04:49.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:04:49.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:04:49.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:04:23', tmtdew=1.98, humidity=87.83, cloud=0.0, wind=26.73, temperature=7.24, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:04:35.990', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:04:49.340 [DEBUG] [Thread-151667] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:04:49.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:04:49.433 [DEBUG] [Thread-151670] [transport.py] [_log()] starting thread (client mode): 0x2b91db40
2025-09-29T09:04:49.433 [DEBUG] [Thread-151670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:04:49.447 [DEBUG] [Thread-151670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:04:49.447 [INFO] [Thread-151670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:04:49.455 [DEBUG] [Thread-151670] [transport.py] [_log()] client lang: <none>
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] server lang: <none>
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] kex follows: False
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] Compression: none
2025-09-29T09:04:49.456 [DEBUG] [Thread-151670] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:04:49.511 [DEBUG] [Thread-151670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:04:49.511 [DEBUG] [Thread-151670] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:04:49.512 [DEBUG] [Thread-151670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:04:49.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:04:49.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:04:49.573 [DEBUG] [Thread-151670] [transport.py] [_log()] userauth is OK
2025-09-29T09:04:49.573 [DEBUG] [Thread-151670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:04:49.573 [DEBUG] [Thread-151670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:04:49.573 [DEBUG] [Thread-151670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:04:49.573 [DEBUG] [Thread-151670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:04:49.597 [INFO] [Thread-151670] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:04:49.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:04:49.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:04:50.593 [DEBUG] [Thread-151670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:04:50.593 [DEBUG] [Thread-151670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:04:50.641 [DEBUG] [Thread-151670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:04:50.641 [DEBUG] [Thread-151670] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:04:50.649 [DEBUG] [Thread-151670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:04:50.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:04:50.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:04:50.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:04:50.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:04:50.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:04:50.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:04:50.681 [DEBUG] [Thread-151670] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:00.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:05:00.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:05:00.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:05:00.802 [DEBUG] [Thread-151672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:05:01.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 4, 55), 1.99, 87.75, 0.0, 23.01, 7.29, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:05:01.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:04:55
2025-09-29T09:05:01.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:05:01.529 [DEBUG] [Thread-151673] [transport.py] [_log()] starting thread (client mode): 0x2b9a7280
2025-09-29T09:05:01.529 [DEBUG] [Thread-151673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:05:01.550 [DEBUG] [Thread-151673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:05:01.550 [INFO] [Thread-151673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:05:01.554 [DEBUG] [Thread-151673] [transport.py] [_log()] client lang: <none>
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] server lang: <none>
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] kex follows: False
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] Compression: none
2025-09-29T09:05:01.555 [DEBUG] [Thread-151673] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:05:01.571 [DEBUG] [Thread-151673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:05:01.572 [DEBUG] [Thread-151673] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:05:01.572 [DEBUG] [Thread-151673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:05:01.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:05:01.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:05:01.574 [DEBUG] [Thread-151673] [transport.py] [_log()] userauth is OK
2025-09-29T09:05:01.574 [DEBUG] [Thread-151673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:05:01.574 [DEBUG] [Thread-151673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:05:01.575 [DEBUG] [Thread-151673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:05:01.575 [DEBUG] [Thread-151673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:05:01.592 [INFO] [Thread-151673] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:05:01.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:05:02.380 [DEBUG] [Thread-151673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:05:02.381 [DEBUG] [Thread-151673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:05:02.381 [DEBUG] [Thread-151673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:05:02.421 [DEBUG] [Thread-151673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:05:02.421 [DEBUG] [Thread-151673] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:05:02.423 [DEBUG] [Thread-151673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:05:02.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:05:02.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:05:02.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:05:02.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:05:02.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:05:02.440 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:05:02.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:05:02.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:05:02.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:05:02.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.294861 -999.00   +7.90  18.14     83   +5.20 1 3 1 2 1   888    0 3.18 17.87 ----- 22.4 18.1 172.6 27.4 11.6 -7.7 11.1 -7.9 10.7 -10.3 11.3 -10.1
2025-09-29T09:05:02.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:05:02.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:05:02.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.294861
2025-09-29T09:05:02.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:05:02.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:05:02.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:05:02.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:05:02.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:05:02.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:04:55', tmtdew=1.99, humidity=87.75, cloud=0.0, wind=23.01, temperature=7.29, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:04:35.990', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:05:02.444 [DEBUG] [Thread-151673] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:02.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:05:02.530 [DEBUG] [Thread-151676] [transport.py] [_log()] starting thread (client mode): 0x2e374250
2025-09-29T09:05:02.530 [DEBUG] [Thread-151676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:05:02.545 [DEBUG] [Thread-151676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:05:02.545 [INFO] [Thread-151676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:05:02.553 [DEBUG] [Thread-151676] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:05:02.553 [DEBUG] [Thread-151676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:05:02.553 [DEBUG] [Thread-151676] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:05:02.553 [DEBUG] [Thread-151676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:02.553 [DEBUG] [Thread-151676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:02.553 [DEBUG] [Thread-151676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:02.553 [DEBUG] [Thread-151676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] client lang: <none>
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] server lang: <none>
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] kex follows: False
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:05:02.554 [DEBUG] [Thread-151676] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:05:02.555 [DEBUG] [Thread-151676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:05:02.555 [DEBUG] [Thread-151676] [transport.py] [_log()] Compression: none
2025-09-29T09:05:02.555 [DEBUG] [Thread-151676] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:05:02.612 [DEBUG] [Thread-151676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:05:02.612 [DEBUG] [Thread-151676] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:05:02.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:05:02.613 [DEBUG] [Thread-151676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:05:02.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:05:02.672 [DEBUG] [Thread-151676] [transport.py] [_log()] userauth is OK
2025-09-29T09:05:02.672 [DEBUG] [Thread-151676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:05:02.672 [DEBUG] [Thread-151676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:05:02.672 [DEBUG] [Thread-151676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:05:02.672 [DEBUG] [Thread-151676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:05:02.691 [INFO] [Thread-151676] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:05:02.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:05:02.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:05:03.704 [DEBUG] [Thread-151676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:05:03.704 [DEBUG] [Thread-151676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:05:03.754 [DEBUG] [Thread-151676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:05:03.754 [DEBUG] [Thread-151676] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:05:03.762 [DEBUG] [Thread-151676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:05:03.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:05:03.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:05:03.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:05:03.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:05:03.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:05:03.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:05:03.796 [DEBUG] [Thread-151676] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:13.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:05:13.799 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:05:13.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:05:14.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 4, 55), 1.99, 87.75, 0.0, 23.01, 7.29, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:05:14.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:04:55
2025-09-29T09:05:14.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:05:14.648 [DEBUG] [Thread-151678] [transport.py] [_log()] starting thread (client mode): 0x2b9ddf00
2025-09-29T09:05:14.648 [DEBUG] [Thread-151678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:05:14.668 [DEBUG] [Thread-151678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:05:14.668 [INFO] [Thread-151678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:05:14.671 [DEBUG] [Thread-151678] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:05:14.671 [DEBUG] [Thread-151678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:05:14.671 [DEBUG] [Thread-151678] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] client lang: <none>
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] server lang: <none>
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] kex follows: False
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] Compression: none
2025-09-29T09:05:14.672 [DEBUG] [Thread-151678] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:05:14.689 [DEBUG] [Thread-151678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:05:14.689 [DEBUG] [Thread-151678] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:05:14.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:05:14.690 [DEBUG] [Thread-151678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:05:14.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:05:14.693 [DEBUG] [Thread-151678] [transport.py] [_log()] userauth is OK
2025-09-29T09:05:14.693 [DEBUG] [Thread-151678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:05:14.693 [DEBUG] [Thread-151678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:05:14.693 [DEBUG] [Thread-151678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:05:14.693 [DEBUG] [Thread-151678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:05:14.718 [INFO] [Thread-151678] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:05:14.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:05:15.840 [DEBUG] [Thread-151680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:05:18.270 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:05:18.271 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:05:22.098 [DEBUG] [Thread-151678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:05:22.099 [DEBUG] [Thread-151678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:05:22.099 [DEBUG] [Thread-151678] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:05:22.139 [DEBUG] [Thread-151678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:05:22.140 [DEBUG] [Thread-151678] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:05:22.143 [DEBUG] [Thread-151678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:05:22.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:05:22.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:05:22.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:05:22.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:05:22.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:05:22.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:05:22.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:05:22.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:05:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:05:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.294861 -999.00   +7.90  18.14     83   +5.20 1 3 1 2 1   888    0 3.18 17.87 ----- 22.4 18.1 172.6 27.4 11.6 -7.7 11.1 -7.9 10.7 -10.3 11.3 -10.1
2025-09-29T09:05:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:05:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:05:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.294861
2025-09-29T09:05:22.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:05:22.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:05:22.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:05:22.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:05:22.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:05:22.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:04:55', tmtdew=1.99, humidity=87.75, cloud=0.0, wind=23.01, temperature=7.29, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:04:35.990', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:05:22.233 [DEBUG] [Thread-151678] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:22.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:05:22.330 [DEBUG] [Thread-151682] [transport.py] [_log()] starting thread (client mode): 0x2b9de5c0
2025-09-29T09:05:22.331 [DEBUG] [Thread-151682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:05:22.346 [DEBUG] [Thread-151682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:05:22.346 [INFO] [Thread-151682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:05:22.353 [DEBUG] [Thread-151682] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] client lang: <none>
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] server lang: <none>
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] kex follows: False
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] Compression: none
2025-09-29T09:05:22.354 [DEBUG] [Thread-151682] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:05:22.415 [DEBUG] [Thread-151682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:05:22.416 [DEBUG] [Thread-151682] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:05:22.416 [DEBUG] [Thread-151682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:05:22.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:05:22.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:05:22.471 [DEBUG] [Thread-151682] [transport.py] [_log()] userauth is OK
2025-09-29T09:05:22.471 [DEBUG] [Thread-151682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:05:22.471 [DEBUG] [Thread-151682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:05:22.471 [DEBUG] [Thread-151682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:05:22.472 [DEBUG] [Thread-151682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:05:22.492 [INFO] [Thread-151682] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:05:22.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:05:22.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:05:23.530 [DEBUG] [Thread-151682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:05:23.530 [DEBUG] [Thread-151682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:05:23.578 [DEBUG] [Thread-151682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:05:23.578 [DEBUG] [Thread-151682] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:05:23.587 [DEBUG] [Thread-151682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:05:23.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:05:23.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:05:23.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:05:23.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:05:23.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:05:23.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:05:23.626 [DEBUG] [Thread-151682] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:28.567 [DEBUG] [Thread-151684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:05:30.890 [DEBUG] [Thread-151685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:05:33.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:05:33.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:05:33.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:05:34.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 5, 27), 1.97, 87.93, 0.0, 22.8, 7.52, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:05:34.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:05:27
2025-09-29T09:05:34.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:05:34.466 [DEBUG] [Thread-151686] [transport.py] [_log()] starting thread (client mode): 0x2e3deb00
2025-09-29T09:05:34.466 [DEBUG] [Thread-151686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:05:34.486 [DEBUG] [Thread-151686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:05:34.486 [INFO] [Thread-151686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] client lang: <none>
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] server lang: <none>
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] kex follows: False
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] Compression: none
2025-09-29T09:05:34.489 [DEBUG] [Thread-151686] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:05:34.507 [DEBUG] [Thread-151686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:05:34.507 [DEBUG] [Thread-151686] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:05:34.508 [DEBUG] [Thread-151686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:05:34.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:05:34.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:05:34.510 [DEBUG] [Thread-151686] [transport.py] [_log()] userauth is OK
2025-09-29T09:05:34.510 [DEBUG] [Thread-151686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:05:34.511 [DEBUG] [Thread-151686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:05:34.511 [DEBUG] [Thread-151686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:05:34.511 [DEBUG] [Thread-151686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:05:34.535 [INFO] [Thread-151686] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:05:34.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:05:35.119 [DEBUG] [Thread-151686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:05:35.120 [DEBUG] [Thread-151686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:05:35.120 [DEBUG] [Thread-151686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:05:35.160 [DEBUG] [Thread-151686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:05:35.160 [DEBUG] [Thread-151686] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:05:35.163 [DEBUG] [Thread-151686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:05:35.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:05:35.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:05:35.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:05:35.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:05:35.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:05:35.183 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:05:35.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:05:35.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:05:35.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:05:35.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.295214 -999.00   +8.00  20.22     83   +5.30 1 3 1 2 1   888    0 3.18 17.57 ----- 23.2 20.2 166.2 26.8 11.7 -6.5 11.1 -5.8 10.8 -8.5 11.3 -8.8
2025-09-29T09:05:35.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:05:35.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:05:35.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.295214
2025-09-29T09:05:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:05:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:05:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:05:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:05:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:05:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:05:27', tmtdew=1.97, humidity=87.93, cloud=0.0, wind=22.8, temperature=7.52, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:05:06.490', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:05:35.186 [DEBUG] [Thread-151686] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:35.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:05:35.282 [DEBUG] [Thread-151689] [transport.py] [_log()] starting thread (client mode): 0x2b9cc9d0
2025-09-29T09:05:35.282 [DEBUG] [Thread-151689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:05:35.299 [DEBUG] [Thread-151689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:05:35.299 [INFO] [Thread-151689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] client lang: <none>
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] server lang: <none>
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] kex follows: False
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] Compression: none
2025-09-29T09:05:35.309 [DEBUG] [Thread-151689] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:05:35.365 [DEBUG] [Thread-151689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:05:35.366 [DEBUG] [Thread-151689] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:05:35.366 [DEBUG] [Thread-151689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:05:35.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:05:35.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:05:35.423 [DEBUG] [Thread-151689] [transport.py] [_log()] userauth is OK
2025-09-29T09:05:35.423 [DEBUG] [Thread-151689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:05:35.423 [DEBUG] [Thread-151689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:05:35.423 [DEBUG] [Thread-151689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:05:35.423 [DEBUG] [Thread-151689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:05:35.443 [INFO] [Thread-151689] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:05:35.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:05:35.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:05:36.471 [DEBUG] [Thread-151689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:05:36.471 [DEBUG] [Thread-151689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:05:36.519 [DEBUG] [Thread-151689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:05:36.519 [DEBUG] [Thread-151689] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:05:36.528 [DEBUG] [Thread-151689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:05:36.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:05:36.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:05:36.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:05:36.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:05:36.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:05:36.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:05:36.561 [DEBUG] [Thread-151689] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:45.920 [DEBUG] [Thread-151691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:05:46.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:05:46.564 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:05:46.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:05:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 5, 27), 1.97, 87.93, 0.0, 22.8, 7.52, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:05:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:05:27
2025-09-29T09:05:47.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:05:47.406 [DEBUG] [Thread-151692] [transport.py] [_log()] starting thread (client mode): 0x2e377820
2025-09-29T09:05:47.407 [DEBUG] [Thread-151692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:05:47.426 [DEBUG] [Thread-151692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:05:47.426 [INFO] [Thread-151692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:05:47.430 [DEBUG] [Thread-151692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:05:47.430 [DEBUG] [Thread-151692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:05:47.430 [DEBUG] [Thread-151692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:05:47.430 [DEBUG] [Thread-151692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] client lang: <none>
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] server lang: <none>
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] kex follows: False
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:05:47.431 [DEBUG] [Thread-151692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:05:47.432 [DEBUG] [Thread-151692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:05:47.432 [DEBUG] [Thread-151692] [transport.py] [_log()] Compression: none
2025-09-29T09:05:47.432 [DEBUG] [Thread-151692] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:05:47.451 [DEBUG] [Thread-151692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:05:47.451 [DEBUG] [Thread-151692] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:05:47.452 [DEBUG] [Thread-151692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:05:47.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:05:47.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:05:47.454 [DEBUG] [Thread-151692] [transport.py] [_log()] userauth is OK
2025-09-29T09:05:47.454 [DEBUG] [Thread-151692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:05:47.454 [DEBUG] [Thread-151692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:05:47.454 [DEBUG] [Thread-151692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:05:47.454 [DEBUG] [Thread-151692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:05:47.471 [INFO] [Thread-151692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:05:47.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:05:48.197 [DEBUG] [Thread-151692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:05:48.198 [DEBUG] [Thread-151692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:05:48.198 [DEBUG] [Thread-151692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:05:48.238 [DEBUG] [Thread-151692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:05:48.238 [DEBUG] [Thread-151692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:05:48.242 [DEBUG] [Thread-151692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:05:48.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:05:48.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:05:48.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:05:48.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:05:48.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:05:48.264 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:05:48.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:05:48.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:05:48.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:05:48.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.295214 -999.00   +8.00  20.22     83   +5.30 1 3 1 2 1   888    0 3.18 17.57 ----- 23.2 20.2 166.2 26.8 11.7 -6.5 11.1 -5.8 10.8 -8.5 11.3 -8.8
2025-09-29T09:05:48.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:05:48.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:05:48.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.295214
2025-09-29T09:05:48.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:05:48.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:05:48.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:05:48.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:05:48.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:05:48.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:05:27', tmtdew=1.97, humidity=87.93, cloud=0.0, wind=22.8, temperature=7.52, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:05:06.490', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:05:48.267 [DEBUG] [Thread-151692] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:48.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:05:48.361 [DEBUG] [Thread-151695] [transport.py] [_log()] starting thread (client mode): 0x2b9ccfa0
2025-09-29T09:05:48.361 [DEBUG] [Thread-151695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:05:48.375 [DEBUG] [Thread-151695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:05:48.375 [INFO] [Thread-151695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:05:48.383 [DEBUG] [Thread-151695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:05:48.383 [DEBUG] [Thread-151695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:05:48.383 [DEBUG] [Thread-151695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:05:48.383 [DEBUG] [Thread-151695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:48.383 [DEBUG] [Thread-151695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] client lang: <none>
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] server lang: <none>
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] kex follows: False
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] Compression: none
2025-09-29T09:05:48.384 [DEBUG] [Thread-151695] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:05:48.443 [DEBUG] [Thread-151695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:05:48.443 [DEBUG] [Thread-151695] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:05:48.444 [DEBUG] [Thread-151695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:05:48.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:05:48.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:05:48.499 [DEBUG] [Thread-151695] [transport.py] [_log()] userauth is OK
2025-09-29T09:05:48.499 [DEBUG] [Thread-151695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:05:48.499 [DEBUG] [Thread-151695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:05:48.499 [DEBUG] [Thread-151695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:05:48.499 [DEBUG] [Thread-151695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:05:48.518 [INFO] [Thread-151695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:05:48.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:05:48.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:05:49.494 [DEBUG] [Thread-151695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:05:49.495 [DEBUG] [Thread-151695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:05:49.542 [DEBUG] [Thread-151695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:05:49.542 [DEBUG] [Thread-151695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:05:49.551 [DEBUG] [Thread-151695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:05:49.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:05:49.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:05:49.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:05:49.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:05:49.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:05:49.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:05:49.595 [DEBUG] [Thread-151695] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:05:59.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:05:59.590 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:05:59.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:06:00.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 5, 27), 1.97, 87.93, 0.0, 22.8, 7.52, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:06:00.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:05:27
2025-09-29T09:06:00.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:06:00.493 [DEBUG] [Thread-151697] [transport.py] [_log()] starting thread (client mode): 0x2b91f0a0
2025-09-29T09:06:00.493 [DEBUG] [Thread-151697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:00.515 [DEBUG] [Thread-151697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:06:00.515 [INFO] [Thread-151697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] Compression: none
2025-09-29T09:06:00.519 [DEBUG] [Thread-151697] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:00.526 [DEBUG] [Thread-151697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:00.526 [DEBUG] [Thread-151697] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:00.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:06:00.526 [DEBUG] [Thread-151697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:06:00.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:00.527 [DEBUG] [Thread-151697] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:00.527 [DEBUG] [Thread-151697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:00.527 [DEBUG] [Thread-151697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:00.527 [DEBUG] [Thread-151697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:06:00.527 [DEBUG] [Thread-151697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:00.535 [INFO] [Thread-151697] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:00.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:00.970 [DEBUG] [Thread-151699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:06:01.134 [DEBUG] [Thread-151697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:01.134 [DEBUG] [Thread-151697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:01.134 [DEBUG] [Thread-151697] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:06:01.175 [DEBUG] [Thread-151697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:01.175 [DEBUG] [Thread-151697] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:01.177 [DEBUG] [Thread-151697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:01.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:01.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:06:01.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:06:01.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:06:01.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:01.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:06:01.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:01.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:01.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:06:01.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.295556 -999.00   +8.00  24.79     82   +5.20 1 3 1 2 1   888    0 3.18 17.57 ----- 16.5 24.8 166.8 29.2 11.7 -6.9 11.2 -6.6 10.8 -7.5 11.4 -7.5
2025-09-29T09:06:01.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:06:01.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:06:01.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.295556
2025-09-29T09:06:01.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:06:01.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:06:01.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:06:01.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:06:01.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:06:01.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:05:27', tmtdew=1.97, humidity=87.93, cloud=0.0, wind=22.8, temperature=7.52, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:05:36.038', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:06:01.190 [DEBUG] [Thread-151697] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:01.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:06:01.276 [DEBUG] [Thread-151701] [transport.py] [_log()] starting thread (client mode): 0x30ddee60
2025-09-29T09:06:01.276 [DEBUG] [Thread-151701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:01.291 [DEBUG] [Thread-151701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:06:01.291 [INFO] [Thread-151701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:06:01.298 [DEBUG] [Thread-151701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:01.298 [DEBUG] [Thread-151701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:06:01.298 [DEBUG] [Thread-151701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:01.298 [DEBUG] [Thread-151701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:01.298 [DEBUG] [Thread-151701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:01.298 [DEBUG] [Thread-151701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] Compression: none
2025-09-29T09:06:01.299 [DEBUG] [Thread-151701] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:01.357 [DEBUG] [Thread-151701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:01.357 [DEBUG] [Thread-151701] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:01.358 [DEBUG] [Thread-151701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:06:01.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:06:01.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:01.418 [DEBUG] [Thread-151701] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:01.418 [DEBUG] [Thread-151701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:01.418 [DEBUG] [Thread-151701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:01.418 [DEBUG] [Thread-151701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:06:01.418 [DEBUG] [Thread-151701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:01.432 [INFO] [Thread-151701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:01.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:06:01.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:02.431 [DEBUG] [Thread-151701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:02.431 [DEBUG] [Thread-151701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:02.487 [DEBUG] [Thread-151701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:02.487 [DEBUG] [Thread-151701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:02.496 [DEBUG] [Thread-151701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:02.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:02.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:06:02.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:06:02.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:02.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:02.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:02.530 [DEBUG] [Thread-151701] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:12.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:06:12.533 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:06:12.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:06:13.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 5, 59), 2.02, 87.68, 0.0, 27.05, 7.84, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:06:13.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:05:59
2025-09-29T09:06:13.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:06:13.383 [DEBUG] [Thread-151703] [transport.py] [_log()] starting thread (client mode): 0x30ddf3d0
2025-09-29T09:06:13.383 [DEBUG] [Thread-151703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:13.406 [DEBUG] [Thread-151703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:06:13.406 [INFO] [Thread-151703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:06:13.409 [DEBUG] [Thread-151703] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:13.409 [DEBUG] [Thread-151703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] Compression: none
2025-09-29T09:06:13.410 [DEBUG] [Thread-151703] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:13.428 [DEBUG] [Thread-151703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:13.429 [DEBUG] [Thread-151703] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:13.429 [DEBUG] [Thread-151703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:06:13.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:06:13.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:13.431 [DEBUG] [Thread-151703] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:13.431 [DEBUG] [Thread-151703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:13.431 [DEBUG] [Thread-151703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:13.432 [DEBUG] [Thread-151703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:06:13.432 [DEBUG] [Thread-151703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:13.449 [INFO] [Thread-151703] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:13.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:14.174 [DEBUG] [Thread-151703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:14.174 [DEBUG] [Thread-151703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:14.175 [DEBUG] [Thread-151703] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:06:14.215 [DEBUG] [Thread-151703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:14.215 [DEBUG] [Thread-151703] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:14.218 [DEBUG] [Thread-151703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:14.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:14.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:06:14.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:06:14.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:06:14.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:14.241 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:06:14.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:14.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:14.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:06:14.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.295556 -999.00   +8.00  24.79     82   +5.20 1 3 1 2 1   888    0 3.18 17.57 ----- 16.5 24.8 166.8 29.2 11.7 -6.9 11.2 -6.6 10.8 -7.5 11.4 -7.5
2025-09-29T09:06:14.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:06:14.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:06:14.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.295556
2025-09-29T09:06:14.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:06:14.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:06:14.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:06:14.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:06:14.244 [DEBUG] [Thread-151703] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:14.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:06:14.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:05:59', tmtdew=2.02, humidity=87.68, cloud=0.0, wind=27.05, temperature=7.84, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:05:36.038', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:06:14.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:06:14.339 [DEBUG] [Thread-151706] [transport.py] [_log()] starting thread (client mode): 0x2e3dea10
2025-09-29T09:06:14.340 [DEBUG] [Thread-151706] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:14.359 [DEBUG] [Thread-151706] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:06:14.359 [INFO] [Thread-151706] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:06:14.369 [DEBUG] [Thread-151706] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:14.370 [DEBUG] [Thread-151706] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:14.371 [DEBUG] [Thread-151706] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:14.371 [DEBUG] [Thread-151706] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:14.371 [DEBUG] [Thread-151706] [transport.py] [_log()] Compression: none
2025-09-29T09:06:14.371 [DEBUG] [Thread-151706] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:14.434 [DEBUG] [Thread-151706] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:14.434 [DEBUG] [Thread-151706] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:14.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:06:14.435 [DEBUG] [Thread-151706] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:06:14.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:14.497 [DEBUG] [Thread-151706] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:14.497 [DEBUG] [Thread-151706] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:14.498 [DEBUG] [Thread-151706] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:14.498 [DEBUG] [Thread-151706] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:06:14.498 [DEBUG] [Thread-151706] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:14.520 [INFO] [Thread-151706] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:14.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:06:14.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:15.548 [DEBUG] [Thread-151706] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:15.548 [DEBUG] [Thread-151706] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:15.599 [DEBUG] [Thread-151706] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:15.599 [DEBUG] [Thread-151706] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:15.609 [DEBUG] [Thread-151706] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:15.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:15.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:06:15.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:06:15.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:15.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:15.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:15.656 [DEBUG] [Thread-151706] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:15.999 [DEBUG] [Thread-151708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:06:18.413 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:06:18.414 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:06:25.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:06:25.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:06:25.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:06:26.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 5, 59), 2.02, 87.68, 0.0, 27.05, 7.84, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:06:26.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:05:59
2025-09-29T09:06:26.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:06:26.499 [DEBUG] [Thread-151709] [transport.py] [_log()] starting thread (client mode): 0x2b9cfb80
2025-09-29T09:06:26.499 [DEBUG] [Thread-151709] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:26.520 [DEBUG] [Thread-151709] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:06:26.520 [INFO] [Thread-151709] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:26.523 [DEBUG] [Thread-151709] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:26.524 [DEBUG] [Thread-151709] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:26.524 [DEBUG] [Thread-151709] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:26.524 [DEBUG] [Thread-151709] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:26.524 [DEBUG] [Thread-151709] [transport.py] [_log()] Compression: none
2025-09-29T09:06:26.524 [DEBUG] [Thread-151709] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:26.540 [DEBUG] [Thread-151709] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:26.541 [DEBUG] [Thread-151709] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:26.541 [DEBUG] [Thread-151709] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:06:26.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:06:26.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:26.543 [DEBUG] [Thread-151709] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:26.543 [DEBUG] [Thread-151709] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:26.543 [DEBUG] [Thread-151709] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:26.544 [DEBUG] [Thread-151709] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:06:26.544 [DEBUG] [Thread-151709] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:26.576 [INFO] [Thread-151709] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:26.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:27.291 [DEBUG] [Thread-151709] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:27.291 [DEBUG] [Thread-151709] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:27.291 [DEBUG] [Thread-151709] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:06:27.332 [DEBUG] [Thread-151709] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:27.332 [DEBUG] [Thread-151709] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:27.334 [DEBUG] [Thread-151709] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:27.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:27.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:06:27.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:06:27.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:06:27.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:27.354 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:06:27.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:27.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:27.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:06:27.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.295556 -999.00   +8.00  24.79     82   +5.20 1 3 1 2 1   888    0 3.18 17.57 ----- 16.5 24.8 166.8 29.2 11.7 -6.9 11.2 -6.6 10.8 -7.5 11.4 -7.5
2025-09-29T09:06:27.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:06:27.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:06:27.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.295556
2025-09-29T09:06:27.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:06:27.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:06:27.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:06:27.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:06:27.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:06:27.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:05:59', tmtdew=2.02, humidity=87.68, cloud=0.0, wind=27.05, temperature=7.84, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:05:36.038', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:06:27.356 [DEBUG] [Thread-151709] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:27.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:06:27.453 [DEBUG] [Thread-151712] [transport.py] [_log()] starting thread (client mode): 0x2b9b8e50
2025-09-29T09:06:27.453 [DEBUG] [Thread-151712] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:27.469 [DEBUG] [Thread-151712] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:06:27.469 [INFO] [Thread-151712] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:06:27.477 [DEBUG] [Thread-151712] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:27.477 [DEBUG] [Thread-151712] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:06:27.477 [DEBUG] [Thread-151712] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:27.477 [DEBUG] [Thread-151712] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:27.477 [DEBUG] [Thread-151712] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:27.477 [DEBUG] [Thread-151712] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:27.477 [DEBUG] [Thread-151712] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:27.478 [DEBUG] [Thread-151712] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:27.478 [DEBUG] [Thread-151712] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:27.478 [DEBUG] [Thread-151712] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:27.478 [DEBUG] [Thread-151712] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:27.478 [DEBUG] [Thread-151712] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:27.478 [DEBUG] [Thread-151712] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:27.478 [DEBUG] [Thread-151712] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:27.478 [DEBUG] [Thread-151712] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:27.479 [DEBUG] [Thread-151712] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:27.479 [DEBUG] [Thread-151712] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:27.479 [DEBUG] [Thread-151712] [transport.py] [_log()] Compression: none
2025-09-29T09:06:27.479 [DEBUG] [Thread-151712] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:27.535 [DEBUG] [Thread-151712] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:27.535 [DEBUG] [Thread-151712] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:27.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:06:27.536 [DEBUG] [Thread-151712] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:06:27.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:27.590 [DEBUG] [Thread-151712] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:27.590 [DEBUG] [Thread-151712] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:27.590 [DEBUG] [Thread-151712] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:27.590 [DEBUG] [Thread-151712] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:06:27.590 [DEBUG] [Thread-151712] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:27.604 [INFO] [Thread-151712] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:27.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:06:27.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:28.601 [DEBUG] [Thread-151714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:06:28.652 [DEBUG] [Thread-151712] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:28.652 [DEBUG] [Thread-151712] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:28.700 [DEBUG] [Thread-151712] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:28.700 [DEBUG] [Thread-151712] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:28.709 [DEBUG] [Thread-151712] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:28.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:28.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:06:28.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:06:28.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:28.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:28.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:28.749 [DEBUG] [Thread-151712] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:31.041 [DEBUG] [Thread-151715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:06:38.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:06:38.748 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:06:38.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:06:39.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 6, 31), 2.12, 87.12, 0.0, 25.21, 7.71, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:06:39.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:06:31
2025-09-29T09:06:39.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:06:39.588 [DEBUG] [Thread-151716] [transport.py] [_log()] starting thread (client mode): 0x2e3dc280
2025-09-29T09:06:39.588 [DEBUG] [Thread-151716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:39.608 [DEBUG] [Thread-151716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:06:39.608 [INFO] [Thread-151716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:06:39.611 [DEBUG] [Thread-151716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:39.611 [DEBUG] [Thread-151716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:06:39.611 [DEBUG] [Thread-151716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:39.611 [DEBUG] [Thread-151716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:39.611 [DEBUG] [Thread-151716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:39.611 [DEBUG] [Thread-151716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:39.611 [DEBUG] [Thread-151716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] Compression: none
2025-09-29T09:06:39.612 [DEBUG] [Thread-151716] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:39.631 [DEBUG] [Thread-151716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:39.631 [DEBUG] [Thread-151716] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:39.632 [DEBUG] [Thread-151716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:06:39.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:06:39.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:39.634 [DEBUG] [Thread-151716] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:39.634 [DEBUG] [Thread-151716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:39.634 [DEBUG] [Thread-151716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:39.634 [DEBUG] [Thread-151716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:06:39.634 [DEBUG] [Thread-151716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:39.652 [INFO] [Thread-151716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:39.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:40.197 [DEBUG] [Thread-151716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:40.197 [DEBUG] [Thread-151716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:40.198 [DEBUG] [Thread-151716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:06:40.238 [DEBUG] [Thread-151716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:40.238 [DEBUG] [Thread-151716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:40.241 [DEBUG] [Thread-151716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:40.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:40.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:06:40.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:06:40.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:06:40.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:40.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:06:40.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:40.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:40.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:06:40.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.295903 -999.00   +8.00  16.63     82   +5.30 1 3 1 2 1   888    0 3.08 14.78 ----- 17.4 16.6 159.0 22.8 11.8 -7.2 11.2 -6.8 10.8 -7.3 11.3 -7.1
2025-09-29T09:06:40.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:06:40.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:06:40.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.295903
2025-09-29T09:06:40.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:06:40.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:06:40.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:06:40.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:06:40.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:06:40.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:06:31', tmtdew=2.12, humidity=87.12, cloud=0.0, wind=25.21, temperature=7.71, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:06:06.019', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:06:40.264 [DEBUG] [Thread-151716] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:40.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:06:40.360 [DEBUG] [Thread-151719] [transport.py] [_log()] starting thread (client mode): 0x2b91ea40
2025-09-29T09:06:40.360 [DEBUG] [Thread-151719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:40.375 [DEBUG] [Thread-151719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:06:40.375 [INFO] [Thread-151719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:06:40.382 [DEBUG] [Thread-151719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:40.383 [DEBUG] [Thread-151719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:40.384 [DEBUG] [Thread-151719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:40.384 [DEBUG] [Thread-151719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:40.384 [DEBUG] [Thread-151719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:40.384 [DEBUG] [Thread-151719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:40.384 [DEBUG] [Thread-151719] [transport.py] [_log()] Compression: none
2025-09-29T09:06:40.384 [DEBUG] [Thread-151719] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:40.442 [DEBUG] [Thread-151719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:40.443 [DEBUG] [Thread-151719] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:40.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:06:40.444 [DEBUG] [Thread-151719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:06:40.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:40.502 [DEBUG] [Thread-151719] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:40.502 [DEBUG] [Thread-151719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:40.502 [DEBUG] [Thread-151719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:40.502 [DEBUG] [Thread-151719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:06:40.502 [DEBUG] [Thread-151719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:40.521 [INFO] [Thread-151719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:40.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:06:40.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:41.521 [DEBUG] [Thread-151719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:41.521 [DEBUG] [Thread-151719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:41.570 [DEBUG] [Thread-151719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:41.571 [DEBUG] [Thread-151719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:41.580 [DEBUG] [Thread-151719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:41.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:41.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:06:41.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:06:41.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:41.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:41.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:41.621 [DEBUG] [Thread-151719] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:46.067 [DEBUG] [Thread-151721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:06:51.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:06:51.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:06:51.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:06:52.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 6, 31), 2.12, 87.12, 0.0, 25.21, 7.71, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:06:52.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:06:31
2025-09-29T09:06:52.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:06:52.476 [DEBUG] [Thread-151722] [transport.py] [_log()] starting thread (client mode): 0x2b9b9e10
2025-09-29T09:06:52.476 [DEBUG] [Thread-151722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:52.496 [DEBUG] [Thread-151722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:06:52.496 [INFO] [Thread-151722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] Compression: none
2025-09-29T09:06:52.500 [DEBUG] [Thread-151722] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:52.517 [DEBUG] [Thread-151722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:52.518 [DEBUG] [Thread-151722] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:52.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:06:52.519 [DEBUG] [Thread-151722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:06:52.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:52.521 [DEBUG] [Thread-151722] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:52.521 [DEBUG] [Thread-151722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:52.521 [DEBUG] [Thread-151722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:52.521 [DEBUG] [Thread-151722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:06:52.521 [DEBUG] [Thread-151722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:52.536 [INFO] [Thread-151722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:52.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:53.267 [DEBUG] [Thread-151722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:53.268 [DEBUG] [Thread-151722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:53.268 [DEBUG] [Thread-151722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:06:53.308 [DEBUG] [Thread-151722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:53.308 [DEBUG] [Thread-151722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:53.311 [DEBUG] [Thread-151722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:53.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:53.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:06:53.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:06:53.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:06:53.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:53.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:06:53.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:53.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:53.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:06:53.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.295903 -999.00   +8.00  16.63     82   +5.30 1 3 1 2 1   888    0 3.08 14.78 ----- 17.4 16.6 159.0 22.8 11.8 -7.2 11.2 -6.8 10.8 -7.3 11.3 -7.1
2025-09-29T09:06:53.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:06:53.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:06:53.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.295903
2025-09-29T09:06:53.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:06:53.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:06:53.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:06:53.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:06:53.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:06:53.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:06:31', tmtdew=2.12, humidity=87.12, cloud=0.0, wind=25.21, temperature=7.71, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:06:06.019', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:06:53.339 [DEBUG] [Thread-151722] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:06:53.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:06:53.438 [DEBUG] [Thread-151725] [transport.py] [_log()] starting thread (client mode): 0x2b9cff70
2025-09-29T09:06:53.438 [DEBUG] [Thread-151725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:06:53.453 [DEBUG] [Thread-151725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:06:53.453 [INFO] [Thread-151725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:06:53.460 [DEBUG] [Thread-151725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] client lang: <none>
2025-09-29T09:06:53.461 [DEBUG] [Thread-151725] [transport.py] [_log()] server lang: <none>
2025-09-29T09:06:53.462 [DEBUG] [Thread-151725] [transport.py] [_log()] kex follows: False
2025-09-29T09:06:53.462 [DEBUG] [Thread-151725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:06:53.462 [DEBUG] [Thread-151725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:06:53.462 [DEBUG] [Thread-151725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:06:53.462 [DEBUG] [Thread-151725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:06:53.462 [DEBUG] [Thread-151725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:06:53.462 [DEBUG] [Thread-151725] [transport.py] [_log()] Compression: none
2025-09-29T09:06:53.462 [DEBUG] [Thread-151725] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:06:53.521 [DEBUG] [Thread-151725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:06:53.521 [DEBUG] [Thread-151725] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:06:53.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:06:53.521 [DEBUG] [Thread-151725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:06:53.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:06:53.583 [DEBUG] [Thread-151725] [transport.py] [_log()] userauth is OK
2025-09-29T09:06:53.583 [DEBUG] [Thread-151725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:06:53.583 [DEBUG] [Thread-151725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:06:53.583 [DEBUG] [Thread-151725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:06:53.583 [DEBUG] [Thread-151725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:06:53.598 [INFO] [Thread-151725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:06:53.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:06:53.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:06:54.688 [DEBUG] [Thread-151725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:06:54.688 [DEBUG] [Thread-151725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:06:54.738 [DEBUG] [Thread-151725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:06:54.738 [DEBUG] [Thread-151725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:06:54.747 [DEBUG] [Thread-151725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:06:54.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:06:54.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:06:54.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:06:54.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:06:54.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:06:54.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:06:54.795 [DEBUG] [Thread-151725] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:01.099 [DEBUG] [Thread-151727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:07:04.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:07:04.793 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:07:04.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:07:05.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 6, 31), 2.12, 87.12, 0.0, 25.21, 7.71, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:07:05.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:06:31
2025-09-29T09:07:05.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:07:05.671 [DEBUG] [Thread-151728] [transport.py] [_log()] starting thread (client mode): 0x2b9bb250
2025-09-29T09:07:05.671 [DEBUG] [Thread-151728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:05.681 [DEBUG] [Thread-151728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:07:05.681 [INFO] [Thread-151728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:07:05.682 [DEBUG] [Thread-151728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:05.682 [DEBUG] [Thread-151728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] Compression: none
2025-09-29T09:07:05.683 [DEBUG] [Thread-151728] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:05.691 [DEBUG] [Thread-151728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:05.691 [DEBUG] [Thread-151728] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:05.692 [DEBUG] [Thread-151728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:07:05.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:07:05.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:05.693 [DEBUG] [Thread-151728] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:05.694 [DEBUG] [Thread-151728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:05.694 [DEBUG] [Thread-151728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:05.694 [DEBUG] [Thread-151728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:07:05.694 [DEBUG] [Thread-151728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:05.705 [INFO] [Thread-151728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:05.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:06.267 [DEBUG] [Thread-151728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:06.267 [DEBUG] [Thread-151728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:06.268 [DEBUG] [Thread-151728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:07:06.308 [DEBUG] [Thread-151728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:06.308 [DEBUG] [Thread-151728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:06.311 [DEBUG] [Thread-151728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:06.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:06.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:07:06.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:07:06.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:07:06.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:06.328 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:07:06.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:06.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:06.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:07:06.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.296250 -999.00   +7.90  16.28     82   +5.10 1 3 1 2 1   888    0 3.07 13.84 ----- 14.7 16.3 151.2 28.5 11.6 -9.9 11.2 -8.8 10.8 -9.6 11.4 -8.2
2025-09-29T09:07:06.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:07:06.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:07:06.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.296250
2025-09-29T09:07:06.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:07:06.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:07:06.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:07:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:07:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:07:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:06:31', tmtdew=2.12, humidity=87.12, cloud=0.0, wind=25.21, temperature=7.71, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:06:36.000', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:07:06.331 [DEBUG] [Thread-151728] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:06.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:07:06.430 [DEBUG] [Thread-151731] [transport.py] [_log()] starting thread (client mode): 0x30ddfd90
2025-09-29T09:07:06.430 [DEBUG] [Thread-151731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:06.445 [DEBUG] [Thread-151731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:07:06.445 [INFO] [Thread-151731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:06.453 [DEBUG] [Thread-151731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:06.454 [DEBUG] [Thread-151731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:06.454 [DEBUG] [Thread-151731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:06.454 [DEBUG] [Thread-151731] [transport.py] [_log()] Compression: none
2025-09-29T09:07:06.454 [DEBUG] [Thread-151731] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:06.513 [DEBUG] [Thread-151731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:06.514 [DEBUG] [Thread-151731] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:06.514 [DEBUG] [Thread-151731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:07:06.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:07:06.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:06.569 [DEBUG] [Thread-151731] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:06.570 [DEBUG] [Thread-151731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:06.570 [DEBUG] [Thread-151731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:06.570 [DEBUG] [Thread-151731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:07:06.570 [DEBUG] [Thread-151731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:06.583 [INFO] [Thread-151731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:06.584 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:07:06.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:07.580 [DEBUG] [Thread-151731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:07.580 [DEBUG] [Thread-151731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:07.628 [DEBUG] [Thread-151731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:07.628 [DEBUG] [Thread-151731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:07.637 [DEBUG] [Thread-151731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:07.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:07.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:07:07.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:07:07.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:07.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:07.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:07.674 [DEBUG] [Thread-151731] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:16.133 [DEBUG] [Thread-151733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:07:17.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:07:17.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:07:17.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:07:18.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 7, 3), 2.13, 87.07, 0.0, 25.78, 7.66, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:07:18.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:07:03
2025-09-29T09:07:18.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:07:18.510 [DEBUG] [Thread-151734] [transport.py] [_log()] starting thread (client mode): 0x2e3dd090
2025-09-29T09:07:18.511 [DEBUG] [Thread-151734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:18.531 [DEBUG] [Thread-151734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:07:18.531 [INFO] [Thread-151734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:07:18.534 [DEBUG] [Thread-151734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:18.535 [DEBUG] [Thread-151734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:18.536 [DEBUG] [Thread-151734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:18.536 [DEBUG] [Thread-151734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:18.536 [DEBUG] [Thread-151734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:18.536 [DEBUG] [Thread-151734] [transport.py] [_log()] Compression: none
2025-09-29T09:07:18.536 [DEBUG] [Thread-151734] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:18.554 [DEBUG] [Thread-151734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:18.555 [DEBUG] [Thread-151734] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:18.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:07:18.556 [DEBUG] [Thread-151734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:07:18.557 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:07:18.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:18.558 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:07:18.559 [DEBUG] [Thread-151734] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:18.559 [DEBUG] [Thread-151734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:18.560 [DEBUG] [Thread-151734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:18.560 [DEBUG] [Thread-151734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:07:18.560 [DEBUG] [Thread-151734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:18.585 [INFO] [Thread-151734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:18.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:19.284 [DEBUG] [Thread-151734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:19.284 [DEBUG] [Thread-151734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:19.284 [DEBUG] [Thread-151734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:07:19.324 [DEBUG] [Thread-151734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:19.324 [DEBUG] [Thread-151734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:19.327 [DEBUG] [Thread-151734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:19.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:19.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:07:19.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:07:19.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:07:19.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:19.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:07:19.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:19.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:19.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:07:19.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.296250 -999.00   +7.90  16.28     82   +5.10 1 3 1 2 1   888    0 3.07 13.84 ----- 14.7 16.3 151.2 28.5 11.6 -9.9 11.2 -8.8 10.8 -9.6 11.4 -8.2
2025-09-29T09:07:19.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:07:19.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:07:19.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.296250
2025-09-29T09:07:19.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:07:19.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:07:19.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:07:19.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:07:19.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:07:19.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:07:03', tmtdew=2.13, humidity=87.07, cloud=0.0, wind=25.78, temperature=7.66, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:06:36.000', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:07:19.355 [DEBUG] [Thread-151734] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:19.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:07:19.450 [DEBUG] [Thread-151737] [transport.py] [_log()] starting thread (client mode): 0x2e3ddf30
2025-09-29T09:07:19.450 [DEBUG] [Thread-151737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:19.465 [DEBUG] [Thread-151737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:07:19.465 [INFO] [Thread-151737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:07:19.472 [DEBUG] [Thread-151737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:19.472 [DEBUG] [Thread-151737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] Compression: none
2025-09-29T09:07:19.473 [DEBUG] [Thread-151737] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:19.529 [DEBUG] [Thread-151737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:19.530 [DEBUG] [Thread-151737] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:19.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:07:19.531 [DEBUG] [Thread-151737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:07:19.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:19.586 [DEBUG] [Thread-151737] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:19.586 [DEBUG] [Thread-151737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:19.586 [DEBUG] [Thread-151737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:19.586 [DEBUG] [Thread-151737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:07:19.586 [DEBUG] [Thread-151737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:19.605 [INFO] [Thread-151737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:19.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:07:19.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:20.621 [DEBUG] [Thread-151737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:20.621 [DEBUG] [Thread-151737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:20.669 [DEBUG] [Thread-151737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:20.669 [DEBUG] [Thread-151737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:20.677 [DEBUG] [Thread-151737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:20.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:20.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:07:20.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:07:20.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:20.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:20.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:20.709 [DEBUG] [Thread-151737] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:28.655 [DEBUG] [Thread-151739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:07:30.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:07:30.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:07:30.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:07:31.173 [DEBUG] [Thread-151740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:07:31.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 7, 3), 2.13, 87.07, 0.0, 25.78, 7.66, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:07:31.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:07:03
2025-09-29T09:07:31.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:07:31.545 [DEBUG] [Thread-151741] [transport.py] [_log()] starting thread (client mode): 0x2b9b8a90
2025-09-29T09:07:31.545 [DEBUG] [Thread-151741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:31.561 [DEBUG] [Thread-151741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:07:31.561 [INFO] [Thread-151741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] Compression: none
2025-09-29T09:07:31.564 [DEBUG] [Thread-151741] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:31.581 [DEBUG] [Thread-151741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:31.582 [DEBUG] [Thread-151741] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:31.582 [DEBUG] [Thread-151741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:07:31.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:07:31.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:31.584 [DEBUG] [Thread-151741] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:31.584 [DEBUG] [Thread-151741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:31.585 [DEBUG] [Thread-151741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:31.585 [DEBUG] [Thread-151741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:07:31.585 [DEBUG] [Thread-151741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:31.620 [INFO] [Thread-151741] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:31.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:32.368 [DEBUG] [Thread-151741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:32.368 [DEBUG] [Thread-151741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:32.368 [DEBUG] [Thread-151741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:07:32.408 [DEBUG] [Thread-151741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:32.408 [DEBUG] [Thread-151741] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:32.411 [DEBUG] [Thread-151741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:32.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:32.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:07:32.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:07:32.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:07:32.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:32.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:07:32.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:32.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:32.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:07:32.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.296250 -999.00   +7.90  16.28     82   +5.10 1 3 1 2 1   888    0 3.07 13.84 ----- 14.7 16.3 151.2 28.5 11.6 -9.9 11.2 -8.8 10.8 -9.6 11.4 -8.2
2025-09-29T09:07:32.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:07:32.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:07:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.296250
2025-09-29T09:07:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:07:32.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:07:32.437 [DEBUG] [Thread-151741] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:32.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:07:32.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:07:32.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:07:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:07:03', tmtdew=2.13, humidity=87.07, cloud=0.0, wind=25.78, temperature=7.66, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:06:36.000', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:07:32.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:07:32.535 [DEBUG] [Thread-151744] [transport.py] [_log()] starting thread (client mode): 0x2b94f220
2025-09-29T09:07:32.535 [DEBUG] [Thread-151744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:32.550 [DEBUG] [Thread-151744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:07:32.550 [INFO] [Thread-151744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:32.558 [DEBUG] [Thread-151744] [transport.py] [_log()] Compression: none
2025-09-29T09:07:32.559 [DEBUG] [Thread-151744] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:32.617 [DEBUG] [Thread-151744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:32.618 [DEBUG] [Thread-151744] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:32.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:07:32.619 [DEBUG] [Thread-151744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:07:32.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:32.674 [DEBUG] [Thread-151744] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:32.674 [DEBUG] [Thread-151744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:32.674 [DEBUG] [Thread-151744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:32.674 [DEBUG] [Thread-151744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:07:32.674 [DEBUG] [Thread-151744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:32.693 [INFO] [Thread-151744] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:32.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:07:32.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:33.680 [DEBUG] [Thread-151744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:33.680 [DEBUG] [Thread-151744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:33.728 [DEBUG] [Thread-151744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:33.728 [DEBUG] [Thread-151744] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:33.737 [DEBUG] [Thread-151744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:33.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:33.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:07:33.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:07:33.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:33.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:33.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:33.771 [DEBUG] [Thread-151744] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:43.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:07:43.767 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:07:43.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:07:44.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 7, 35), 2.09, 87.28, 0.0, 27.61, 7.61, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:07:44.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:07:35
2025-09-29T09:07:44.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:07:44.600 [DEBUG] [Thread-151746] [transport.py] [_log()] starting thread (client mode): 0x28704280
2025-09-29T09:07:44.601 [DEBUG] [Thread-151746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:44.620 [DEBUG] [Thread-151746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:07:44.620 [INFO] [Thread-151746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] Compression: none
2025-09-29T09:07:44.624 [DEBUG] [Thread-151746] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:44.640 [DEBUG] [Thread-151746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:44.641 [DEBUG] [Thread-151746] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:44.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:07:44.642 [DEBUG] [Thread-151746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:07:44.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:44.644 [DEBUG] [Thread-151746] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:44.644 [DEBUG] [Thread-151746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:44.644 [DEBUG] [Thread-151746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:44.644 [DEBUG] [Thread-151746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:07:44.644 [DEBUG] [Thread-151746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:44.667 [INFO] [Thread-151746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:44.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:45.250 [DEBUG] [Thread-151746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:45.250 [DEBUG] [Thread-151746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:45.250 [DEBUG] [Thread-151746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:07:45.291 [DEBUG] [Thread-151746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:45.291 [DEBUG] [Thread-151746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:45.294 [DEBUG] [Thread-151746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:45.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:45.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:07:45.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:07:45.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:07:45.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:45.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:07:45.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:45.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:07:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.296603 -999.00   +8.00  19.65     82   +5.30 1 2 1 2 1   888    0 3.03 13.30 ----- 21.5 19.6 159.0 26.2 11.7 -10.1 11.1 -9.5 10.8 -11.3 11.4 -11.3
2025-09-29T09:07:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:07:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:07:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.296603
2025-09-29T09:07:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:07:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:07:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:07:45.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:07:45.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:07:45.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:07:35', tmtdew=2.09, humidity=87.28, cloud=0.0, wind=27.61, temperature=7.61, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:07:06.499', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:07:45.323 [DEBUG] [Thread-151746] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:45.408 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:07:45.420 [DEBUG] [Thread-151749] [transport.py] [_log()] starting thread (client mode): 0x2b91e500
2025-09-29T09:07:45.420 [DEBUG] [Thread-151749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:45.434 [DEBUG] [Thread-151749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:07:45.434 [INFO] [Thread-151749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:45.442 [DEBUG] [Thread-151749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:45.443 [DEBUG] [Thread-151749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:45.443 [DEBUG] [Thread-151749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:45.443 [DEBUG] [Thread-151749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:45.443 [DEBUG] [Thread-151749] [transport.py] [_log()] Compression: none
2025-09-29T09:07:45.443 [DEBUG] [Thread-151749] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:45.501 [DEBUG] [Thread-151749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:45.501 [DEBUG] [Thread-151749] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:45.502 [DEBUG] [Thread-151749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:07:45.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:07:45.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:45.557 [DEBUG] [Thread-151749] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:45.558 [DEBUG] [Thread-151749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:45.558 [DEBUG] [Thread-151749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:45.558 [DEBUG] [Thread-151749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:07:45.558 [DEBUG] [Thread-151749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:45.578 [INFO] [Thread-151749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:45.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:07:45.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:46.211 [DEBUG] [Thread-151751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:07:46.584 [DEBUG] [Thread-151749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:46.584 [DEBUG] [Thread-151749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:46.632 [DEBUG] [Thread-151749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:46.632 [DEBUG] [Thread-151749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:46.641 [DEBUG] [Thread-151749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:46.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:46.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:07:46.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:07:46.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:46.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:46.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:46.675 [DEBUG] [Thread-151749] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:07:56.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:07:56.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:07:57.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 7, 35), 2.09, 87.28, 0.0, 27.61, 7.61, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:07:57.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:07:35
2025-09-29T09:07:57.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:07:57.517 [DEBUG] [Thread-151752] [transport.py] [_log()] starting thread (client mode): 0x2b9ccca0
2025-09-29T09:07:57.517 [DEBUG] [Thread-151752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:57.539 [DEBUG] [Thread-151752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:07:57.539 [INFO] [Thread-151752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] Compression: none
2025-09-29T09:07:57.543 [DEBUG] [Thread-151752] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:57.552 [DEBUG] [Thread-151752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:57.552 [DEBUG] [Thread-151752] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:57.552 [DEBUG] [Thread-151752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:07:57.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:07:57.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:57.554 [DEBUG] [Thread-151752] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:57.555 [DEBUG] [Thread-151752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:57.555 [DEBUG] [Thread-151752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:57.555 [DEBUG] [Thread-151752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:07:57.555 [DEBUG] [Thread-151752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:57.573 [INFO] [Thread-151752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:57.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:58.297 [DEBUG] [Thread-151752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:58.297 [DEBUG] [Thread-151752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:58.297 [DEBUG] [Thread-151752] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:07:58.338 [DEBUG] [Thread-151752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:58.338 [DEBUG] [Thread-151752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:58.341 [DEBUG] [Thread-151752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:58.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:58.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:07:58.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:07:58.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:07:58.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:58.361 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:07:58.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.296603 -999.00   +8.00  19.65     82   +5.30 1 2 1 2 1   888    0 3.03 13.30 ----- 21.5 19.6 159.0 26.2 11.7 -10.1 11.1 -9.5 10.8 -11.3 11.4 -11.3
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.296603
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:07:58.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:07:35', tmtdew=2.09, humidity=87.28, cloud=0.0, wind=27.61, temperature=7.61, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:07:06.499', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:07:58.362 [DEBUG] [Thread-151752] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:07:58.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:07:58.444 [DEBUG] [Thread-151755] [transport.py] [_log()] starting thread (client mode): 0x2b9a5c30
2025-09-29T09:07:58.444 [DEBUG] [Thread-151755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:07:58.458 [DEBUG] [Thread-151755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:07:58.458 [INFO] [Thread-151755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:07:58.465 [DEBUG] [Thread-151755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] client lang: <none>
2025-09-29T09:07:58.466 [DEBUG] [Thread-151755] [transport.py] [_log()] server lang: <none>
2025-09-29T09:07:58.467 [DEBUG] [Thread-151755] [transport.py] [_log()] kex follows: False
2025-09-29T09:07:58.467 [DEBUG] [Thread-151755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:07:58.467 [DEBUG] [Thread-151755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:07:58.467 [DEBUG] [Thread-151755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:07:58.467 [DEBUG] [Thread-151755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:07:58.467 [DEBUG] [Thread-151755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:07:58.467 [DEBUG] [Thread-151755] [transport.py] [_log()] Compression: none
2025-09-29T09:07:58.467 [DEBUG] [Thread-151755] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:07:58.525 [DEBUG] [Thread-151755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:07:58.525 [DEBUG] [Thread-151755] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:07:58.526 [DEBUG] [Thread-151755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:07:58.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:07:58.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:07:58.587 [DEBUG] [Thread-151755] [transport.py] [_log()] userauth is OK
2025-09-29T09:07:58.588 [DEBUG] [Thread-151755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:07:58.588 [DEBUG] [Thread-151755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:07:58.588 [DEBUG] [Thread-151755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:07:58.588 [DEBUG] [Thread-151755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:07:58.607 [INFO] [Thread-151755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:07:58.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:07:58.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:07:59.675 [DEBUG] [Thread-151755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:07:59.675 [DEBUG] [Thread-151755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:07:59.723 [DEBUG] [Thread-151755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:07:59.724 [DEBUG] [Thread-151755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:07:59.732 [DEBUG] [Thread-151755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:07:59.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:07:59.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:07:59.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:07:59.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:07:59.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:07:59.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:07:59.767 [DEBUG] [Thread-151755] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:08:01.263 [DEBUG] [Thread-151757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:08:09.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:08:09.768 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:08:09.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:08:10.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 8, 7), 2.14, 87.07, 0.0, 24.74, 7.87, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:08:10.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:08:07
2025-09-29T09:08:10.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:08:10.629 [DEBUG] [Thread-151758] [transport.py] [_log()] starting thread (client mode): 0x28707310
2025-09-29T09:08:10.629 [DEBUG] [Thread-151758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:08:10.648 [DEBUG] [Thread-151758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:08:10.648 [INFO] [Thread-151758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] client lang: <none>
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] server lang: <none>
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] kex follows: False
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] Compression: none
2025-09-29T09:08:10.651 [DEBUG] [Thread-151758] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:08:10.667 [DEBUG] [Thread-151758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:08:10.668 [DEBUG] [Thread-151758] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:08:10.668 [DEBUG] [Thread-151758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:08:10.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:08:10.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:08:10.670 [DEBUG] [Thread-151758] [transport.py] [_log()] userauth is OK
2025-09-29T09:08:10.670 [DEBUG] [Thread-151758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:08:10.670 [DEBUG] [Thread-151758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:08:10.670 [DEBUG] [Thread-151758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:08:10.670 [DEBUG] [Thread-151758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:08:10.695 [INFO] [Thread-151758] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:08:10.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:08:11.409 [DEBUG] [Thread-151758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:08:11.409 [DEBUG] [Thread-151758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:08:11.410 [DEBUG] [Thread-151758] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:08:11.450 [DEBUG] [Thread-151758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:08:11.450 [DEBUG] [Thread-151758] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:08:11.453 [DEBUG] [Thread-151758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:08:11.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:08:11.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:08:11.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:08:11.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:08:11.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:08:11.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:08:11.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:08:11.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:08:11.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:08:11.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.296603 -999.00   +8.00  19.65     82   +5.30 1 2 1 2 1   888    0 3.03 13.30 ----- 21.5 19.6 159.0 26.2 11.7 -10.1 11.1 -9.5 10.8 -11.3 11.4 -11.3
2025-09-29T09:08:11.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:08:11.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:08:11.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.296603
2025-09-29T09:08:11.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:08:11.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:08:11.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:08:11.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:08:11.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:08:11.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:08:07', tmtdew=2.14, humidity=87.07, cloud=0.0, wind=24.74, temperature=7.87, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:07:06.499', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:08:11.479 [DEBUG] [Thread-151758] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:08:11.566 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:08:11.576 [DEBUG] [Thread-151761] [transport.py] [_log()] starting thread (client mode): 0x287075b0
2025-09-29T09:08:11.577 [DEBUG] [Thread-151761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:08:11.591 [DEBUG] [Thread-151761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:08:11.591 [INFO] [Thread-151761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:08:11.598 [DEBUG] [Thread-151761] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:08:11.598 [DEBUG] [Thread-151761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] client lang: <none>
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] server lang: <none>
2025-09-29T09:08:11.599 [DEBUG] [Thread-151761] [transport.py] [_log()] kex follows: False
2025-09-29T09:08:11.600 [DEBUG] [Thread-151761] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:08:11.600 [DEBUG] [Thread-151761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:08:11.600 [DEBUG] [Thread-151761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:08:11.600 [DEBUG] [Thread-151761] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:08:11.600 [DEBUG] [Thread-151761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:08:11.600 [DEBUG] [Thread-151761] [transport.py] [_log()] Compression: none
2025-09-29T09:08:11.600 [DEBUG] [Thread-151761] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:08:11.657 [DEBUG] [Thread-151761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:08:11.657 [DEBUG] [Thread-151761] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:08:11.658 [DEBUG] [Thread-151761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:08:11.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:08:11.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:08:11.713 [DEBUG] [Thread-151761] [transport.py] [_log()] userauth is OK
2025-09-29T09:08:11.713 [DEBUG] [Thread-151761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:08:11.713 [DEBUG] [Thread-151761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:08:11.713 [DEBUG] [Thread-151761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:08:11.713 [DEBUG] [Thread-151761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:08:11.731 [INFO] [Thread-151761] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:08:11.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:08:11.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:08:12.758 [DEBUG] [Thread-151761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:08:12.758 [DEBUG] [Thread-151761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:08:12.806 [DEBUG] [Thread-151761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:08:12.806 [DEBUG] [Thread-151761] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:08:12.815 [DEBUG] [Thread-151761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:08:12.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:08:12.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:08:12.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:08:12.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:08:12.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:08:12.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:08:12.849 [DEBUG] [Thread-151761] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:08:16.289 [DEBUG] [Thread-151763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:08:18.698 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:08:18.699 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:08:22.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:08:22.847 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:08:22.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:08:23.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 8, 7), 2.14, 87.07, 0.0, 24.74, 7.87, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:08:23.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:08:07
2025-09-29T09:08:23.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:08:23.681 [DEBUG] [Thread-151764] [transport.py] [_log()] starting thread (client mode): 0x2b9cc640
2025-09-29T09:08:23.681 [DEBUG] [Thread-151764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:08:23.701 [DEBUG] [Thread-151764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:08:23.701 [INFO] [Thread-151764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:08:23.702 [DEBUG] [Thread-151764] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:08:23.702 [DEBUG] [Thread-151764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:08:23.702 [DEBUG] [Thread-151764] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:08:23.702 [DEBUG] [Thread-151764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] client lang: <none>
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] server lang: <none>
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] kex follows: False
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] Compression: none
2025-09-29T09:08:23.703 [DEBUG] [Thread-151764] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:08:23.712 [DEBUG] [Thread-151764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:08:23.713 [DEBUG] [Thread-151764] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:08:23.713 [DEBUG] [Thread-151764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:08:23.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:08:23.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:08:23.715 [DEBUG] [Thread-151764] [transport.py] [_log()] userauth is OK
2025-09-29T09:08:23.715 [DEBUG] [Thread-151764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:08:23.715 [DEBUG] [Thread-151764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:08:23.715 [DEBUG] [Thread-151764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:08:23.715 [DEBUG] [Thread-151764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:08:23.738 [INFO] [Thread-151764] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:08:23.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:08:24.338 [DEBUG] [Thread-151764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:08:24.338 [DEBUG] [Thread-151764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:08:24.339 [DEBUG] [Thread-151764] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:08:24.379 [DEBUG] [Thread-151764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:08:24.380 [DEBUG] [Thread-151764] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:08:24.383 [DEBUG] [Thread-151764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:08:24.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:08:24.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:08:24.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:08:24.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:08:24.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:08:24.406 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:08:24.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:08:24.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:08:24.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:08:24.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.297297 -999.00   +7.90  19.05     82   +5.20 1 3 1 2 1   888    0 3.05 13.33 ----- 22.9 19.1 168.8 27.4 11.8 -7.4 11.2 -8.5 10.9 -10.0 11.4 -9.8
2025-09-29T09:08:24.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:08:24.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:08:24.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.297297
2025-09-29T09:08:24.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:08:24.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:08:24.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:08:24.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:08:24.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:08:24.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:08:07', tmtdew=2.14, humidity=87.07, cloud=0.0, wind=24.74, temperature=7.87, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:08:06.461', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:08:24.408 [DEBUG] [Thread-151764] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:08:24.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:08:24.503 [DEBUG] [Thread-151767] [transport.py] [_log()] starting thread (client mode): 0x2b9b9e10
2025-09-29T09:08:24.503 [DEBUG] [Thread-151767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:08:24.517 [DEBUG] [Thread-151767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:08:24.517 [INFO] [Thread-151767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:08:24.524 [DEBUG] [Thread-151767] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] client lang: <none>
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] server lang: <none>
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] kex follows: False
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] Compression: none
2025-09-29T09:08:24.525 [DEBUG] [Thread-151767] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:08:24.589 [DEBUG] [Thread-151767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:08:24.589 [DEBUG] [Thread-151767] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:08:24.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:08:24.590 [DEBUG] [Thread-151767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:08:24.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:08:24.645 [DEBUG] [Thread-151767] [transport.py] [_log()] userauth is OK
2025-09-29T09:08:24.645 [DEBUG] [Thread-151767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:08:24.646 [DEBUG] [Thread-151767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:08:24.646 [DEBUG] [Thread-151767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:08:24.646 [DEBUG] [Thread-151767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:08:24.665 [INFO] [Thread-151767] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:08:24.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:08:24.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:08:25.699 [DEBUG] [Thread-151767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:08:25.700 [DEBUG] [Thread-151767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:08:25.747 [DEBUG] [Thread-151767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:08:25.747 [DEBUG] [Thread-151767] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:08:25.756 [DEBUG] [Thread-151767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:08:25.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:08:25.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:08:25.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:08:25.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:08:25.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:08:25.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:08:25.790 [DEBUG] [Thread-151767] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:08:28.706 [DEBUG] [Thread-151769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:08:31.335 [DEBUG] [Thread-151770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:08:35.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:08:35.787 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:08:35.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:08:36.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 8, 7), 2.14, 87.07, 0.0, 24.74, 7.87, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:08:36.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:08:07
2025-09-29T09:08:36.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:08:36.611 [DEBUG] [Thread-151771] [transport.py] [_log()] starting thread (client mode): 0x2b9b9a50
2025-09-29T09:08:36.611 [DEBUG] [Thread-151771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:08:36.633 [DEBUG] [Thread-151771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:08:36.633 [INFO] [Thread-151771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:08:36.636 [DEBUG] [Thread-151771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:08:36.636 [DEBUG] [Thread-151771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:08:36.636 [DEBUG] [Thread-151771] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:08:36.636 [DEBUG] [Thread-151771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:36.636 [DEBUG] [Thread-151771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:36.636 [DEBUG] [Thread-151771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] client lang: <none>
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] server lang: <none>
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] kex follows: False
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] Compression: none
2025-09-29T09:08:36.637 [DEBUG] [Thread-151771] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:08:36.652 [DEBUG] [Thread-151771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:08:36.652 [DEBUG] [Thread-151771] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:08:36.652 [DEBUG] [Thread-151771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:08:36.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:08:36.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:08:36.652 [DEBUG] [Thread-151771] [transport.py] [_log()] userauth is OK
2025-09-29T09:08:36.652 [DEBUG] [Thread-151771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:08:36.653 [DEBUG] [Thread-151771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:08:36.653 [DEBUG] [Thread-151771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:08:36.653 [DEBUG] [Thread-151771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:08:36.661 [INFO] [Thread-151771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:08:36.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:08:37.405 [DEBUG] [Thread-151771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:08:37.405 [DEBUG] [Thread-151771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:08:37.406 [DEBUG] [Thread-151771] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:08:37.445 [DEBUG] [Thread-151771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:08:37.445 [DEBUG] [Thread-151771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:08:37.448 [DEBUG] [Thread-151771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:08:37.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:08:37.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:08:37.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:08:37.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:08:37.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:08:37.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:08:37.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:08:37.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:08:37.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:08:37.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.297297 -999.00   +7.90  19.05     82   +5.20 1 3 1 2 1   888    0 3.05 13.33 ----- 22.9 19.1 168.8 27.4 11.8 -7.4 11.2 -8.5 10.9 -10.0 11.4 -9.8
2025-09-29T09:08:37.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:08:37.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:08:37.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.297297
2025-09-29T09:08:37.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:08:37.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:08:37.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:08:37.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:08:37.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:08:37.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:08:07', tmtdew=2.14, humidity=87.07, cloud=0.0, wind=24.74, temperature=7.87, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:08:06.461', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:08:37.479 [DEBUG] [Thread-151771] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:08:37.563 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:08:37.576 [DEBUG] [Thread-151774] [transport.py] [_log()] starting thread (client mode): 0x2b9cff70
2025-09-29T09:08:37.577 [DEBUG] [Thread-151774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:08:37.593 [DEBUG] [Thread-151774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:08:37.593 [INFO] [Thread-151774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:08:37.606 [DEBUG] [Thread-151774] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:08:37.606 [DEBUG] [Thread-151774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] client lang: <none>
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] server lang: <none>
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] kex follows: False
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] Compression: none
2025-09-29T09:08:37.607 [DEBUG] [Thread-151774] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:08:37.657 [DEBUG] [Thread-151774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:08:37.658 [DEBUG] [Thread-151774] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:08:37.658 [DEBUG] [Thread-151774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:08:37.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:08:37.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:08:37.713 [DEBUG] [Thread-151774] [transport.py] [_log()] userauth is OK
2025-09-29T09:08:37.713 [DEBUG] [Thread-151774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:08:37.713 [DEBUG] [Thread-151774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:08:37.713 [DEBUG] [Thread-151774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:08:37.713 [DEBUG] [Thread-151774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:08:37.733 [INFO] [Thread-151774] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:08:37.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:08:37.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:08:38.737 [DEBUG] [Thread-151774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:08:38.737 [DEBUG] [Thread-151774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:08:38.785 [DEBUG] [Thread-151774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:08:38.785 [DEBUG] [Thread-151774] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:08:38.797 [DEBUG] [Thread-151774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:08:38.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:08:38.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:08:38.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:08:38.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:08:38.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:08:38.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:08:38.832 [DEBUG] [Thread-151774] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:08:46.376 [DEBUG] [Thread-151776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:08:48.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:08:48.827 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:08:48.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:08:49.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 8, 39), 2.2, 86.74, 0.0, 27.76, 8.01, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:08:49.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:08:39
2025-09-29T09:08:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:08:49.655 [DEBUG] [Thread-151777] [transport.py] [_log()] starting thread (client mode): 0x2b9cf310
2025-09-29T09:08:49.655 [DEBUG] [Thread-151777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:08:49.675 [DEBUG] [Thread-151777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:08:49.675 [INFO] [Thread-151777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:08:49.678 [DEBUG] [Thread-151777] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:08:49.678 [DEBUG] [Thread-151777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:08:49.678 [DEBUG] [Thread-151777] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] client lang: <none>
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] server lang: <none>
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] kex follows: False
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:08:49.679 [DEBUG] [Thread-151777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:08:49.680 [DEBUG] [Thread-151777] [transport.py] [_log()] Compression: none
2025-09-29T09:08:49.680 [DEBUG] [Thread-151777] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:08:49.698 [DEBUG] [Thread-151777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:08:49.698 [DEBUG] [Thread-151777] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:08:49.699 [DEBUG] [Thread-151777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:08:49.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:08:49.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:08:49.701 [DEBUG] [Thread-151777] [transport.py] [_log()] userauth is OK
2025-09-29T09:08:49.701 [DEBUG] [Thread-151777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:08:49.702 [DEBUG] [Thread-151777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:08:49.702 [DEBUG] [Thread-151777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:08:49.702 [DEBUG] [Thread-151777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:08:49.737 [INFO] [Thread-151777] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:08:49.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:08:50.319 [DEBUG] [Thread-151777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:08:50.319 [DEBUG] [Thread-151777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:08:50.319 [DEBUG] [Thread-151777] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:08:50.360 [DEBUG] [Thread-151777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:08:50.360 [DEBUG] [Thread-151777] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:08:50.363 [DEBUG] [Thread-151777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:08:50.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:08:50.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:08:50.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:08:50.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:08:50.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:08:50.388 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:08:50.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:08:50.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:08:50.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:08:50.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.297645 -999.00   +8.20  21.41     82   +5.30 1 3 1 2 1   888    0 3.02 13.08 ----- 16.9 21.4 149.6 24.6 12.1 -7.7 11.4 -6.8 11.0 -8.3 11.5 -8.6
2025-09-29T09:08:50.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:08:50.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:08:50.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.297645
2025-09-29T09:08:50.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:08:50.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:08:50.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:08:50.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:08:50.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:08:50.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:08:39', tmtdew=2.2, humidity=86.74, cloud=0.0, wind=27.76, temperature=8.01, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:08:36.528', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:08:50.391 [DEBUG] [Thread-151777] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:08:50.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:08:50.490 [DEBUG] [Thread-151780] [transport.py] [_log()] starting thread (client mode): 0x2b9cfa60
2025-09-29T09:08:50.490 [DEBUG] [Thread-151780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:08:50.505 [DEBUG] [Thread-151780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:08:50.505 [INFO] [Thread-151780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:08:50.513 [DEBUG] [Thread-151780] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:08:50.513 [DEBUG] [Thread-151780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:08:50.513 [DEBUG] [Thread-151780] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:08:50.513 [DEBUG] [Thread-151780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] client lang: <none>
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] server lang: <none>
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] kex follows: False
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] Compression: none
2025-09-29T09:08:50.514 [DEBUG] [Thread-151780] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:08:50.571 [DEBUG] [Thread-151780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:08:50.572 [DEBUG] [Thread-151780] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:08:50.572 [DEBUG] [Thread-151780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:08:50.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:08:50.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:08:50.633 [DEBUG] [Thread-151780] [transport.py] [_log()] userauth is OK
2025-09-29T09:08:50.633 [DEBUG] [Thread-151780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:08:50.633 [DEBUG] [Thread-151780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:08:50.634 [DEBUG] [Thread-151780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:08:50.634 [DEBUG] [Thread-151780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:08:50.654 [INFO] [Thread-151780] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:08:50.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:08:50.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:08:51.717 [DEBUG] [Thread-151780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:08:51.718 [DEBUG] [Thread-151780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:08:51.766 [DEBUG] [Thread-151780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:08:51.766 [DEBUG] [Thread-151780] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:08:51.775 [DEBUG] [Thread-151780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:08:51.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:08:51.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:08:51.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:08:51.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:08:51.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:08:51.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:08:51.813 [DEBUG] [Thread-151780] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:09:01.408 [DEBUG] [Thread-151782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:09:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:09:01.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:09:01.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:09:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 8, 39), 2.2, 86.74, 0.0, 27.76, 8.01, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:09:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:08:39
2025-09-29T09:09:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:09:02.651 [DEBUG] [Thread-151783] [transport.py] [_log()] starting thread (client mode): 0x2b9bb0d0
2025-09-29T09:09:02.651 [DEBUG] [Thread-151783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:09:02.672 [DEBUG] [Thread-151783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:09:02.672 [INFO] [Thread-151783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] client lang: <none>
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] server lang: <none>
2025-09-29T09:09:02.675 [DEBUG] [Thread-151783] [transport.py] [_log()] kex follows: False
2025-09-29T09:09:02.676 [DEBUG] [Thread-151783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:09:02.676 [DEBUG] [Thread-151783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:09:02.676 [DEBUG] [Thread-151783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:09:02.676 [DEBUG] [Thread-151783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:09:02.676 [DEBUG] [Thread-151783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:09:02.676 [DEBUG] [Thread-151783] [transport.py] [_log()] Compression: none
2025-09-29T09:09:02.676 [DEBUG] [Thread-151783] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:09:02.692 [DEBUG] [Thread-151783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:09:02.692 [DEBUG] [Thread-151783] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:09:02.693 [DEBUG] [Thread-151783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:09:02.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:09:02.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:09:02.695 [DEBUG] [Thread-151783] [transport.py] [_log()] userauth is OK
2025-09-29T09:09:02.695 [DEBUG] [Thread-151783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:09:02.695 [DEBUG] [Thread-151783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:09:02.695 [DEBUG] [Thread-151783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:09:02.695 [DEBUG] [Thread-151783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:09:02.721 [INFO] [Thread-151783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:09:02.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:09:03.468 [DEBUG] [Thread-151783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:09:03.468 [DEBUG] [Thread-151783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:09:03.468 [DEBUG] [Thread-151783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:09:03.509 [DEBUG] [Thread-151783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:09:03.509 [DEBUG] [Thread-151783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:09:03.512 [DEBUG] [Thread-151783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:09:03.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:09:03.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:09:03.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:09:03.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:09:03.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:09:03.535 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:09:03.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:09:03.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:09:03.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:09:03.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.297645 -999.00   +8.20  21.41     82   +5.30 1 3 1 2 1   888    0 3.02 13.08 ----- 16.9 21.4 149.6 24.6 12.1 -7.7 11.4 -6.8 11.0 -8.3 11.5 -8.6
2025-09-29T09:09:03.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:09:03.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:09:03.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.297645
2025-09-29T09:09:03.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:09:03.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:09:03.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:09:03.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:09:03.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:09:03.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:08:39', tmtdew=2.2, humidity=86.74, cloud=0.0, wind=27.76, temperature=8.01, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:08:36.528', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:09:03.538 [DEBUG] [Thread-151783] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:09:03.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:09:03.633 [DEBUG] [Thread-151786] [transport.py] [_log()] starting thread (client mode): 0x2e3dcca0
2025-09-29T09:09:03.633 [DEBUG] [Thread-151786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:09:03.648 [DEBUG] [Thread-151786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:09:03.648 [INFO] [Thread-151786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] client lang: <none>
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] server lang: <none>
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] kex follows: False
2025-09-29T09:09:03.656 [DEBUG] [Thread-151786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:09:03.657 [DEBUG] [Thread-151786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:09:03.657 [DEBUG] [Thread-151786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:09:03.657 [DEBUG] [Thread-151786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:09:03.657 [DEBUG] [Thread-151786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:09:03.657 [DEBUG] [Thread-151786] [transport.py] [_log()] Compression: none
2025-09-29T09:09:03.657 [DEBUG] [Thread-151786] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:09:03.717 [DEBUG] [Thread-151786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:09:03.717 [DEBUG] [Thread-151786] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:09:03.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:09:03.718 [DEBUG] [Thread-151786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:09:03.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:09:03.774 [DEBUG] [Thread-151786] [transport.py] [_log()] userauth is OK
2025-09-29T09:09:03.774 [DEBUG] [Thread-151786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:09:03.774 [DEBUG] [Thread-151786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:09:03.774 [DEBUG] [Thread-151786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:09:03.774 [DEBUG] [Thread-151786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:09:03.796 [INFO] [Thread-151786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:09:03.797 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:09:03.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:09:04.841 [DEBUG] [Thread-151786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:09:04.842 [DEBUG] [Thread-151786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:09:04.889 [DEBUG] [Thread-151786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:09:04.889 [DEBUG] [Thread-151786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:09:04.898 [DEBUG] [Thread-151786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:09:04.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:09:04.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:09:04.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:09:04.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:09:04.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:09:04.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:09:04.937 [DEBUG] [Thread-151786] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:09:14.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:09:14.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:09:14.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:09:15.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 9, 11), 2.42, 85.63, 0.0, 30.19, 7.92, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:09:15.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:09:11
2025-09-29T09:09:15.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:09:15.782 [DEBUG] [Thread-151788] [transport.py] [_log()] starting thread (client mode): 0x2e3de410
2025-09-29T09:09:15.782 [DEBUG] [Thread-151788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:09:15.802 [DEBUG] [Thread-151788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:09:15.802 [INFO] [Thread-151788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:09:15.805 [DEBUG] [Thread-151788] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:09:15.805 [DEBUG] [Thread-151788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:09:15.805 [DEBUG] [Thread-151788] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] client lang: <none>
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] server lang: <none>
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] kex follows: False
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] Compression: none
2025-09-29T09:09:15.806 [DEBUG] [Thread-151788] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:09:15.822 [DEBUG] [Thread-151788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:09:15.823 [DEBUG] [Thread-151788] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:09:15.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:09:15.824 [DEBUG] [Thread-151788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:09:15.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:09:15.827 [DEBUG] [Thread-151788] [transport.py] [_log()] userauth is OK
2025-09-29T09:09:15.827 [DEBUG] [Thread-151788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:09:15.828 [DEBUG] [Thread-151788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:09:15.828 [DEBUG] [Thread-151788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:09:15.828 [DEBUG] [Thread-151788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:09:15.842 [INFO] [Thread-151788] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:09:15.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:09:16.449 [DEBUG] [Thread-151790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:09:16.558 [DEBUG] [Thread-151788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:09:16.559 [DEBUG] [Thread-151788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:09:16.559 [DEBUG] [Thread-151788] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:09:16.599 [DEBUG] [Thread-151788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:09:16.599 [DEBUG] [Thread-151788] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:09:16.603 [DEBUG] [Thread-151788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:09:16.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:09:16.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:09:16.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:09:16.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:09:16.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:09:16.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:09:16.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:09:16.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:09:16.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:09:16.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.297645 -999.00   +8.20  21.41     82   +5.30 1 3 1 2 1   888    0 3.02 13.08 ----- 16.9 21.4 149.6 24.6 12.1 -7.7 11.4 -6.8 11.0 -8.3 11.5 -8.6
2025-09-29T09:09:16.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:09:16.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:09:16.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.297645
2025-09-29T09:09:16.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:09:16.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:09:16.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:09:16.628 [DEBUG] [Thread-151788] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:09:16.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:09:16.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:09:16.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:09:11', tmtdew=2.42, humidity=85.63, cloud=0.0, wind=30.19, temperature=7.92, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:08:36.528', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:09:16.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:09:16.724 [DEBUG] [Thread-151792] [transport.py] [_log()] starting thread (client mode): 0x2e3dfe20
2025-09-29T09:09:16.724 [DEBUG] [Thread-151792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:09:16.740 [DEBUG] [Thread-151792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:09:16.740 [INFO] [Thread-151792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] client lang: <none>
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] server lang: <none>
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] kex follows: False
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:09:16.748 [DEBUG] [Thread-151792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:09:16.749 [DEBUG] [Thread-151792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:09:16.749 [DEBUG] [Thread-151792] [transport.py] [_log()] Compression: none
2025-09-29T09:09:16.749 [DEBUG] [Thread-151792] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:09:16.809 [DEBUG] [Thread-151792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:09:16.810 [DEBUG] [Thread-151792] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:09:16.810 [DEBUG] [Thread-151792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:09:16.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:09:16.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:09:16.866 [DEBUG] [Thread-151792] [transport.py] [_log()] userauth is OK
2025-09-29T09:09:16.867 [DEBUG] [Thread-151792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:09:16.867 [DEBUG] [Thread-151792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:09:16.867 [DEBUG] [Thread-151792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:09:16.867 [DEBUG] [Thread-151792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:09:16.890 [INFO] [Thread-151792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:09:16.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:09:16.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:09:17.930 [DEBUG] [Thread-151792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:09:17.930 [DEBUG] [Thread-151792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:09:17.979 [DEBUG] [Thread-151792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:09:17.979 [DEBUG] [Thread-151792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:09:17.990 [DEBUG] [Thread-151792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:09:17.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:09:17.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:09:18.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:09:18.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:09:18.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:09:18.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:09:18.028 [DEBUG] [Thread-151792] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:09:18.840 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:09:18.841 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:09:28.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:09:28.030 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:09:28.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:09:28.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 9, 11), 2.42, 85.63, 0.0, 30.19, 7.92, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:09:28.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:09:11
2025-09-29T09:09:28.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:09:28.755 [DEBUG] [Thread-151794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:09:28.875 [DEBUG] [Thread-151795] [transport.py] [_log()] starting thread (client mode): 0x2b9cd3c0
2025-09-29T09:09:28.875 [DEBUG] [Thread-151795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:09:28.895 [DEBUG] [Thread-151795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:09:28.895 [INFO] [Thread-151795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] client lang: <none>
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] server lang: <none>
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] kex follows: False
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:09:28.898 [DEBUG] [Thread-151795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:09:28.899 [DEBUG] [Thread-151795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:09:28.899 [DEBUG] [Thread-151795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:09:28.899 [DEBUG] [Thread-151795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:09:28.899 [DEBUG] [Thread-151795] [transport.py] [_log()] Compression: none
2025-09-29T09:09:28.899 [DEBUG] [Thread-151795] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:09:28.913 [DEBUG] [Thread-151795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:09:28.913 [DEBUG] [Thread-151795] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:09:28.914 [DEBUG] [Thread-151795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:09:28.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:09:28.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:09:28.915 [DEBUG] [Thread-151795] [transport.py] [_log()] userauth is OK
2025-09-29T09:09:28.916 [DEBUG] [Thread-151795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:09:28.916 [DEBUG] [Thread-151795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:09:28.916 [DEBUG] [Thread-151795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:09:28.916 [DEBUG] [Thread-151795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:09:28.936 [INFO] [Thread-151795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:09:28.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:09:29.496 [DEBUG] [Thread-151795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:09:29.496 [DEBUG] [Thread-151795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:09:29.497 [DEBUG] [Thread-151795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:09:29.537 [DEBUG] [Thread-151795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:09:29.538 [DEBUG] [Thread-151795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:09:29.541 [DEBUG] [Thread-151795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:09:29.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:09:29.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:09:29.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:09:29.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:09:29.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:09:29.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:09:29.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:09:29.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:09:29.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:09:29.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.297986 -999.00   +8.30  21.01     81   +5.30 1 3 1 2 1   888    0 3.11 13.74 ----- 21.8 21.0 146.0 31.9 12.2 -9.6 11.6 -7.8 11.0 -9.9 11.7 -10.4
2025-09-29T09:09:29.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:09:29.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:09:29.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.297986
2025-09-29T09:09:29.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:09:29.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:09:29.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:09:29.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:09:29.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 3
2025-09-29T09:09:29.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:09:11', tmtdew=2.42, humidity=85.63, cloud=0.0, wind=30.19, temperature=7.92, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:09:05.990', atlas_cloud=3, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:09:29.566 [DEBUG] [Thread-151795] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:09:29.651 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:09:31.476 [DEBUG] [Thread-151798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:09:46.514 [DEBUG] [Thread-151799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:10:01.542 [DEBUG] [Thread-151800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:10:16.572 [DEBUG] [Thread-151801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:10:18.983 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:10:18.984 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:10:28.821 [DEBUG] [Thread-151802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:10:31.601 [DEBUG] [Thread-151803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:10:46.635 [DEBUG] [Thread-151804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:11:01.667 [DEBUG] [Thread-151805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:11:16.694 [DEBUG] [Thread-151806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:11:19.126 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:11:19.127 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:11:28.872 [DEBUG] [Thread-151807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:11:31.724 [DEBUG] [Thread-151808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:11:42.266 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T09:11:46.755 [DEBUG] [Thread-151809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:11:52.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:11:52.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:11:52.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:11:52.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 11, 18), 2.4, 85.73, 0.0, 30.63, 8.09, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:11:52.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:11:18
2025-09-29T09:11:53.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:11:53.204 [DEBUG] [Thread-151810] [transport.py] [_log()] starting thread (client mode): 0x2b9a52a0
2025-09-29T09:11:53.204 [DEBUG] [Thread-151810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:11:53.224 [DEBUG] [Thread-151810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:11:53.224 [INFO] [Thread-151810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] client lang: <none>
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] server lang: <none>
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] kex follows: False
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:11:53.225 [DEBUG] [Thread-151810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:11:53.226 [DEBUG] [Thread-151810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:11:53.226 [DEBUG] [Thread-151810] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:11:53.226 [DEBUG] [Thread-151810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:11:53.226 [DEBUG] [Thread-151810] [transport.py] [_log()] Compression: none
2025-09-29T09:11:53.226 [DEBUG] [Thread-151810] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:11:53.233 [DEBUG] [Thread-151810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:11:53.234 [DEBUG] [Thread-151810] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:11:53.234 [DEBUG] [Thread-151810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:11:53.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:11:53.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:11:53.235 [DEBUG] [Thread-151810] [transport.py] [_log()] userauth is OK
2025-09-29T09:11:53.235 [DEBUG] [Thread-151810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:11:53.235 [DEBUG] [Thread-151810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:11:53.235 [DEBUG] [Thread-151810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:11:53.235 [DEBUG] [Thread-151810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:11:53.254 [INFO] [Thread-151810] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:11:53.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:11:53.886 [DEBUG] [Thread-151810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:11:53.886 [DEBUG] [Thread-151810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:11:53.886 [DEBUG] [Thread-151810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:11:53.927 [DEBUG] [Thread-151810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:11:53.927 [DEBUG] [Thread-151810] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:11:53.930 [DEBUG] [Thread-151810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:11:53.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:11:53.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:11:53.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:11:53.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:11:53.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:11:53.950 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:11:53.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:11:53.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:11:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:11:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.299381 -999.00   +8.70  21.33     78   +5.20 1 2 1 1 1   888    0 3.33 21.34 ----- 22.2 21.3 152.9 27.7 12.6 -14.8 12.0 -11.6 11.3 -12.4 12.0 -14.2
2025-09-29T09:11:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:11:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:11:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.299381
2025-09-29T09:11:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:11:53.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:11:53.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:11:53.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:11:53.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:11:53.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:11:18', tmtdew=2.4, humidity=85.73, cloud=0.0, wind=30.63, temperature=8.09, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:11:06.518', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:11:53.952 [DEBUG] [Thread-151810] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:11:54.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:11:54.037 [DEBUG] [Thread-151813] [transport.py] [_log()] starting thread (client mode): 0x2b9b94b0
2025-09-29T09:11:54.037 [DEBUG] [Thread-151813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:11:54.052 [DEBUG] [Thread-151813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:11:54.052 [INFO] [Thread-151813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] client lang: <none>
2025-09-29T09:11:54.059 [DEBUG] [Thread-151813] [transport.py] [_log()] server lang: <none>
2025-09-29T09:11:54.060 [DEBUG] [Thread-151813] [transport.py] [_log()] kex follows: False
2025-09-29T09:11:54.060 [DEBUG] [Thread-151813] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:11:54.060 [DEBUG] [Thread-151813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:11:54.060 [DEBUG] [Thread-151813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:11:54.060 [DEBUG] [Thread-151813] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:11:54.060 [DEBUG] [Thread-151813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:11:54.060 [DEBUG] [Thread-151813] [transport.py] [_log()] Compression: none
2025-09-29T09:11:54.060 [DEBUG] [Thread-151813] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:11:54.118 [DEBUG] [Thread-151813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:11:54.118 [DEBUG] [Thread-151813] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:11:54.118 [DEBUG] [Thread-151813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:11:54.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:11:54.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:11:54.176 [DEBUG] [Thread-151813] [transport.py] [_log()] userauth is OK
2025-09-29T09:11:54.176 [DEBUG] [Thread-151813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:11:54.176 [DEBUG] [Thread-151813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:11:54.176 [DEBUG] [Thread-151813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:11:54.176 [DEBUG] [Thread-151813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:11:54.190 [INFO] [Thread-151813] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:11:54.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:11:54.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:11:55.175 [DEBUG] [Thread-151813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:11:55.176 [DEBUG] [Thread-151813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:11:55.224 [DEBUG] [Thread-151813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:11:55.224 [DEBUG] [Thread-151813] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:11:55.232 [DEBUG] [Thread-151813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:11:55.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:11:55.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:11:55.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:11:55.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:11:55.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:11:55.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:11:55.264 [DEBUG] [Thread-151813] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:01.784 [DEBUG] [Thread-151815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:12:05.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:12:05.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:12:05.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:12:05.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 11, 50), 2.53, 85.06, 0.0, 29.98, 7.92, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:12:05.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:11:50
2025-09-29T09:12:05.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:12:06.140 [DEBUG] [Thread-151816] [transport.py] [_log()] starting thread (client mode): 0x287071f0
2025-09-29T09:12:06.140 [DEBUG] [Thread-151816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:06.159 [DEBUG] [Thread-151816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:12:06.159 [INFO] [Thread-151816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:12:06.162 [DEBUG] [Thread-151816] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:06.162 [DEBUG] [Thread-151816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] Compression: none
2025-09-29T09:12:06.163 [DEBUG] [Thread-151816] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:06.179 [DEBUG] [Thread-151816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:06.179 [DEBUG] [Thread-151816] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:06.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:12:06.180 [DEBUG] [Thread-151816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:12:06.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:06.182 [DEBUG] [Thread-151816] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:06.183 [DEBUG] [Thread-151816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:06.183 [DEBUG] [Thread-151816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:06.183 [DEBUG] [Thread-151816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:12:06.183 [DEBUG] [Thread-151816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:06.208 [INFO] [Thread-151816] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:06.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:06.834 [DEBUG] [Thread-151816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:06.834 [DEBUG] [Thread-151816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:06.835 [DEBUG] [Thread-151816] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:12:06.875 [DEBUG] [Thread-151816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:06.876 [DEBUG] [Thread-151816] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:06.878 [DEBUG] [Thread-151816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:06.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:06.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:12:06.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:12:06.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:12:06.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:06.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:12:06.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:06.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:12:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.299381 -999.00   +8.70  21.33     78   +5.20 1 2 1 1 1   888    0 3.33 21.34 ----- 22.2 21.3 152.9 27.7 12.6 -14.8 12.0 -11.6 11.3 -12.4 12.0 -14.2
2025-09-29T09:12:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:12:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:12:06.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.299381
2025-09-29T09:12:06.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:12:06.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:12:06.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:12:06.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:12:06.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:12:06.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:11:50', tmtdew=2.53, humidity=85.06, cloud=0.0, wind=29.98, temperature=7.92, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:11:06.518', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:12:06.900 [DEBUG] [Thread-151816] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:06.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:12:06.992 [DEBUG] [Thread-151819] [transport.py] [_log()] starting thread (client mode): 0x2b9cd030
2025-09-29T09:12:06.992 [DEBUG] [Thread-151819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:07.006 [DEBUG] [Thread-151819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:12:07.007 [INFO] [Thread-151819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:12:07.014 [DEBUG] [Thread-151819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:07.014 [DEBUG] [Thread-151819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:12:07.014 [DEBUG] [Thread-151819] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:07.014 [DEBUG] [Thread-151819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:07.015 [DEBUG] [Thread-151819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:07.016 [DEBUG] [Thread-151819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:07.016 [DEBUG] [Thread-151819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:07.016 [DEBUG] [Thread-151819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:07.016 [DEBUG] [Thread-151819] [transport.py] [_log()] Compression: none
2025-09-29T09:12:07.016 [DEBUG] [Thread-151819] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:07.070 [DEBUG] [Thread-151819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:07.071 [DEBUG] [Thread-151819] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:07.071 [DEBUG] [Thread-151819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:12:07.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:12:07.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:07.127 [DEBUG] [Thread-151819] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:07.127 [DEBUG] [Thread-151819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:07.127 [DEBUG] [Thread-151819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:07.127 [DEBUG] [Thread-151819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:12:07.127 [DEBUG] [Thread-151819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:07.150 [INFO] [Thread-151819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:07.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:12:07.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:08.175 [DEBUG] [Thread-151819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:08.175 [DEBUG] [Thread-151819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:08.222 [DEBUG] [Thread-151819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:08.222 [DEBUG] [Thread-151819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:08.230 [DEBUG] [Thread-151819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:08.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:08.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:12:08.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:12:08.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:08.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:08.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:08.264 [DEBUG] [Thread-151819] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:16.832 [DEBUG] [Thread-151821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:12:18.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:12:18.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:12:18.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:12:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 11, 50), 2.53, 85.06, 0.0, 29.98, 7.92, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:12:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:11:50
2025-09-29T09:12:18.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:12:19.127 [DEBUG] [Thread-151822] [transport.py] [_log()] starting thread (client mode): 0x2e374250
2025-09-29T09:12:19.128 [DEBUG] [Thread-151822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:19.149 [DEBUG] [Thread-151822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:12:19.149 [INFO] [Thread-151822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:12:19.153 [DEBUG] [Thread-151822] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:19.153 [DEBUG] [Thread-151822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:12:19.153 [DEBUG] [Thread-151822] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:19.153 [DEBUG] [Thread-151822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] Compression: none
2025-09-29T09:12:19.154 [DEBUG] [Thread-151822] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:19.173 [DEBUG] [Thread-151822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:19.174 [DEBUG] [Thread-151822] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:19.175 [DEBUG] [Thread-151822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:12:19.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:12:19.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:19.177 [DEBUG] [Thread-151822] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:19.177 [DEBUG] [Thread-151822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:19.177 [DEBUG] [Thread-151822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:19.177 [DEBUG] [Thread-151822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:12:19.177 [DEBUG] [Thread-151822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:19.200 [INFO] [Thread-151822] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:19.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:19.272 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:12:19.273 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:12:19.853 [DEBUG] [Thread-151822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:19.853 [DEBUG] [Thread-151822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:19.854 [DEBUG] [Thread-151822] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:12:19.894 [DEBUG] [Thread-151822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:19.894 [DEBUG] [Thread-151822] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:19.897 [DEBUG] [Thread-151822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:19.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:19.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:12:19.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:12:19.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:12:19.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:19.921 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:12:19.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:19.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:19.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:12:19.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.300075 -999.00   +8.30  24.98     80   +5.10 1 2 1 2 1   888    0 3.48 24.62 ----- 26.6 25.0 144.8 31.2 12.5 -13.2 11.8 -13.1 11.2 -13.4 11.9 -14.9
2025-09-29T09:12:19.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:12:19.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:12:19.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.300075
2025-09-29T09:12:19.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:12:19.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:12:19.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:12:19.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:12:19.924 [DEBUG] [Thread-151822] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:19.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:12:19.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:11:50', tmtdew=2.53, humidity=85.06, cloud=0.0, wind=29.98, temperature=7.92, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:12:06.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:12:20.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:12:20.021 [DEBUG] [Thread-151825] [transport.py] [_log()] starting thread (client mode): 0x2b9bb100
2025-09-29T09:12:20.021 [DEBUG] [Thread-151825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:20.041 [DEBUG] [Thread-151825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:12:20.041 [INFO] [Thread-151825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:20.050 [DEBUG] [Thread-151825] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:20.051 [DEBUG] [Thread-151825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:20.051 [DEBUG] [Thread-151825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:20.051 [DEBUG] [Thread-151825] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:20.051 [DEBUG] [Thread-151825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:20.051 [DEBUG] [Thread-151825] [transport.py] [_log()] Compression: none
2025-09-29T09:12:20.051 [DEBUG] [Thread-151825] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:20.106 [DEBUG] [Thread-151825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:20.107 [DEBUG] [Thread-151825] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:20.107 [DEBUG] [Thread-151825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:12:20.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:12:20.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:20.164 [DEBUG] [Thread-151825] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:20.164 [DEBUG] [Thread-151825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:20.164 [DEBUG] [Thread-151825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:20.165 [DEBUG] [Thread-151825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:12:20.165 [DEBUG] [Thread-151825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:20.184 [INFO] [Thread-151825] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:20.184 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:12:20.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:21.187 [DEBUG] [Thread-151825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:21.187 [DEBUG] [Thread-151825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:21.235 [DEBUG] [Thread-151825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:21.235 [DEBUG] [Thread-151825] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:21.243 [DEBUG] [Thread-151825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:21.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:21.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:12:21.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:12:21.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:21.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:21.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:21.274 [DEBUG] [Thread-151825] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:28.919 [DEBUG] [Thread-151827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:12:31.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:12:31.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:12:31.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:12:31.885 [DEBUG] [Thread-151828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:12:31.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 12, 22), 2.49, 85.24, 0.0, 26.5, 7.77, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:12:31.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:12:22
2025-09-29T09:12:32.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:12:32.186 [DEBUG] [Thread-151829] [transport.py] [_log()] starting thread (client mode): 0x2b9dda50
2025-09-29T09:12:32.187 [DEBUG] [Thread-151829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:32.208 [DEBUG] [Thread-151829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:12:32.208 [INFO] [Thread-151829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] Compression: none
2025-09-29T09:12:32.212 [DEBUG] [Thread-151829] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:32.227 [DEBUG] [Thread-151829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:32.228 [DEBUG] [Thread-151829] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:32.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:12:32.228 [DEBUG] [Thread-151829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:12:32.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:32.229 [DEBUG] [Thread-151829] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:32.229 [DEBUG] [Thread-151829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:32.229 [DEBUG] [Thread-151829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:32.229 [DEBUG] [Thread-151829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:12:32.229 [DEBUG] [Thread-151829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:32.241 [INFO] [Thread-151829] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:32.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:32.863 [DEBUG] [Thread-151829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:32.863 [DEBUG] [Thread-151829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:32.863 [DEBUG] [Thread-151829] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:12:32.904 [DEBUG] [Thread-151829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:32.904 [DEBUG] [Thread-151829] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:32.906 [DEBUG] [Thread-151829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:32.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:32.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:12:32.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:12:32.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:12:32.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:32.923 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:12:32.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:32.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:32.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:12:32.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.300075 -999.00   +8.30  24.98     80   +5.10 1 2 1 2 1   888    0 3.48 24.62 ----- 26.6 25.0 144.8 31.2 12.5 -13.2 11.8 -13.1 11.2 -13.4 11.9 -14.9
2025-09-29T09:12:32.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:12:32.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:12:32.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.300075
2025-09-29T09:12:32.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:12:32.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:12:32.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:12:32.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:12:32.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:12:32.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:12:22', tmtdew=2.49, humidity=85.24, cloud=0.0, wind=26.5, temperature=7.77, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:12:06.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:12:32.924 [DEBUG] [Thread-151829] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:32.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:12:33.007 [DEBUG] [Thread-151832] [transport.py] [_log()] starting thread (client mode): 0x28706cb0
2025-09-29T09:12:33.008 [DEBUG] [Thread-151832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:33.023 [DEBUG] [Thread-151832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:12:33.023 [INFO] [Thread-151832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:12:33.030 [DEBUG] [Thread-151832] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:33.030 [DEBUG] [Thread-151832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:12:33.030 [DEBUG] [Thread-151832] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:33.030 [DEBUG] [Thread-151832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:33.030 [DEBUG] [Thread-151832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:33.030 [DEBUG] [Thread-151832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:33.030 [DEBUG] [Thread-151832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] Compression: none
2025-09-29T09:12:33.031 [DEBUG] [Thread-151832] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:33.085 [DEBUG] [Thread-151832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:33.085 [DEBUG] [Thread-151832] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:33.085 [DEBUG] [Thread-151832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:12:33.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:12:33.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:33.142 [DEBUG] [Thread-151832] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:33.142 [DEBUG] [Thread-151832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:33.142 [DEBUG] [Thread-151832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:33.142 [DEBUG] [Thread-151832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:12:33.142 [DEBUG] [Thread-151832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:33.156 [INFO] [Thread-151832] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:33.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:12:33.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:34.232 [DEBUG] [Thread-151832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:34.232 [DEBUG] [Thread-151832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:34.280 [DEBUG] [Thread-151832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:34.280 [DEBUG] [Thread-151832] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:34.289 [DEBUG] [Thread-151832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:34.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:34.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:12:34.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:12:34.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:34.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:34.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:34.324 [DEBUG] [Thread-151832] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:44.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:12:44.327 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:12:44.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:12:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 12, 22), 2.49, 85.24, 0.0, 26.5, 7.77, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:12:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:12:22
2025-09-29T09:12:45.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:12:45.191 [DEBUG] [Thread-151834] [transport.py] [_log()] starting thread (client mode): 0x287062c0
2025-09-29T09:12:45.191 [DEBUG] [Thread-151834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:45.210 [DEBUG] [Thread-151834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:12:45.210 [INFO] [Thread-151834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:12:45.213 [DEBUG] [Thread-151834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:45.213 [DEBUG] [Thread-151834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] Compression: none
2025-09-29T09:12:45.214 [DEBUG] [Thread-151834] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:45.222 [DEBUG] [Thread-151834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:45.223 [DEBUG] [Thread-151834] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:45.223 [DEBUG] [Thread-151834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:12:45.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:12:45.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:45.225 [DEBUG] [Thread-151834] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:45.225 [DEBUG] [Thread-151834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:45.225 [DEBUG] [Thread-151834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:45.225 [DEBUG] [Thread-151834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:12:45.225 [DEBUG] [Thread-151834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:45.244 [INFO] [Thread-151834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:45.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:45.822 [DEBUG] [Thread-151834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:45.822 [DEBUG] [Thread-151834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:45.822 [DEBUG] [Thread-151834] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:12:45.862 [DEBUG] [Thread-151834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:45.862 [DEBUG] [Thread-151834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:45.866 [DEBUG] [Thread-151834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:45.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:45.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:12:45.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:12:45.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:12:45.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:45.892 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:12:45.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:45.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:45.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:12:45.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.300422 -999.00   +8.10  13.66     81   +5.10 1 2 1 2 1   888    0 3.60 28.01 ----- 15.9 13.7 152.1 28.8 12.4 -15.1 11.9 -14.6 11.3 -14.8 11.9 -15.6
2025-09-29T09:12:45.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:12:45.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:12:45.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.300422
2025-09-29T09:12:45.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:12:45.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:12:45.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:12:45.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:12:45.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:12:45.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:12:22', tmtdew=2.49, humidity=85.24, cloud=0.0, wind=26.5, temperature=7.77, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:12:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:12:45.896 [DEBUG] [Thread-151834] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:45.979 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:12:45.992 [DEBUG] [Thread-151837] [transport.py] [_log()] starting thread (client mode): 0x2b9bb310
2025-09-29T09:12:45.992 [DEBUG] [Thread-151837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:46.011 [DEBUG] [Thread-151837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:12:46.011 [INFO] [Thread-151837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:12:46.020 [DEBUG] [Thread-151837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:46.020 [DEBUG] [Thread-151837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:12:46.021 [DEBUG] [Thread-151837] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:46.021 [DEBUG] [Thread-151837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:46.021 [DEBUG] [Thread-151837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:46.021 [DEBUG] [Thread-151837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:46.021 [DEBUG] [Thread-151837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:46.021 [DEBUG] [Thread-151837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:46.021 [DEBUG] [Thread-151837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:46.021 [DEBUG] [Thread-151837] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] Compression: none
2025-09-29T09:12:46.022 [DEBUG] [Thread-151837] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:46.080 [DEBUG] [Thread-151837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:46.080 [DEBUG] [Thread-151837] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:46.081 [DEBUG] [Thread-151837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:12:46.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:12:46.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:46.141 [DEBUG] [Thread-151837] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:46.141 [DEBUG] [Thread-151837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:46.141 [DEBUG] [Thread-151837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:46.141 [DEBUG] [Thread-151837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:12:46.142 [DEBUG] [Thread-151837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:46.163 [INFO] [Thread-151837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:46.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:12:46.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:46.919 [DEBUG] [Thread-151839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:12:47.155 [DEBUG] [Thread-151837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:47.155 [DEBUG] [Thread-151837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:47.203 [DEBUG] [Thread-151837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:47.203 [DEBUG] [Thread-151837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:47.215 [DEBUG] [Thread-151837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:47.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:47.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:12:47.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:12:47.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:47.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:47.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:47.252 [DEBUG] [Thread-151837] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:57.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:12:57.254 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:12:57.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:12:57.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 12, 54), 2.42, 85.59, 0.0, 22.78, 7.77, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:12:57.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:12:54
2025-09-29T09:12:57.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:12:58.129 [DEBUG] [Thread-151840] [transport.py] [_log()] starting thread (client mode): 0x2b9dfb80
2025-09-29T09:12:58.129 [DEBUG] [Thread-151840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:58.149 [DEBUG] [Thread-151840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:12:58.149 [INFO] [Thread-151840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] Compression: none
2025-09-29T09:12:58.152 [DEBUG] [Thread-151840] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:58.168 [DEBUG] [Thread-151840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:58.169 [DEBUG] [Thread-151840] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:58.169 [DEBUG] [Thread-151840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:12:58.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:12:58.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:58.171 [DEBUG] [Thread-151840] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:58.171 [DEBUG] [Thread-151840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:58.171 [DEBUG] [Thread-151840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:58.171 [DEBUG] [Thread-151840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:12:58.171 [DEBUG] [Thread-151840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:58.195 [INFO] [Thread-151840] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:58.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:12:58.848 [DEBUG] [Thread-151840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:12:58.848 [DEBUG] [Thread-151840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:12:58.848 [DEBUG] [Thread-151840] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:12:58.889 [DEBUG] [Thread-151840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:12:58.889 [DEBUG] [Thread-151840] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:12:58.891 [DEBUG] [Thread-151840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:12:58.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:12:58.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:12:58.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:12:58.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:12:58.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:12:58.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:12:58.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:12:58.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:12:58.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:12:58.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.300422 -999.00   +8.10  13.66     81   +5.10 1 2 1 2 1   888    0 3.60 28.01 ----- 15.9 13.7 152.1 28.8 12.4 -15.1 11.9 -14.6 11.3 -14.8 11.9 -15.6
2025-09-29T09:12:58.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:12:58.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:12:58.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.300422
2025-09-29T09:12:58.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:12:58.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:12:58.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:12:58.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:12:58.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:12:58.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:12:54', tmtdew=2.42, humidity=85.59, cloud=0.0, wind=22.78, temperature=7.77, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:12:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:12:58.914 [DEBUG] [Thread-151840] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:12:58.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:12:58.996 [DEBUG] [Thread-151843] [transport.py] [_log()] starting thread (client mode): 0x2b9ded40
2025-09-29T09:12:58.996 [DEBUG] [Thread-151843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:12:59.011 [DEBUG] [Thread-151843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:12:59.011 [INFO] [Thread-151843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] client lang: <none>
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] server lang: <none>
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] kex follows: False
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] Compression: none
2025-09-29T09:12:59.019 [DEBUG] [Thread-151843] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:12:59.079 [DEBUG] [Thread-151843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:12:59.079 [DEBUG] [Thread-151843] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:12:59.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:12:59.081 [DEBUG] [Thread-151843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:12:59.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:12:59.135 [DEBUG] [Thread-151843] [transport.py] [_log()] userauth is OK
2025-09-29T09:12:59.135 [DEBUG] [Thread-151843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:12:59.135 [DEBUG] [Thread-151843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:12:59.135 [DEBUG] [Thread-151843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:12:59.135 [DEBUG] [Thread-151843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:12:59.155 [INFO] [Thread-151843] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:12:59.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:12:59.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:00.146 [DEBUG] [Thread-151843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:00.146 [DEBUG] [Thread-151843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:00.194 [DEBUG] [Thread-151843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:00.195 [DEBUG] [Thread-151843] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:00.204 [DEBUG] [Thread-151843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:00.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:00.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:13:00.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:13:00.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:00.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:00.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:00.239 [DEBUG] [Thread-151843] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:13:01.971 [DEBUG] [Thread-151845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:13:10.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:13:10.241 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:13:10.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:13:10.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 12, 54), 2.42, 85.59, 0.0, 22.78, 7.77, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:13:10.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:12:54
2025-09-29T09:13:11.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:13:11.152 [DEBUG] [Thread-151846] [transport.py] [_log()] starting thread (client mode): 0x2b94fac0
2025-09-29T09:13:11.152 [DEBUG] [Thread-151846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:13:11.172 [DEBUG] [Thread-151846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:13:11.172 [INFO] [Thread-151846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:13:11.175 [DEBUG] [Thread-151846] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:13:11.175 [DEBUG] [Thread-151846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:13:11.175 [DEBUG] [Thread-151846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:13:11.175 [DEBUG] [Thread-151846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:11.175 [DEBUG] [Thread-151846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:11.175 [DEBUG] [Thread-151846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:11.175 [DEBUG] [Thread-151846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:11.175 [DEBUG] [Thread-151846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] client lang: <none>
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] server lang: <none>
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] kex follows: False
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] Compression: none
2025-09-29T09:13:11.176 [DEBUG] [Thread-151846] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:13:11.190 [DEBUG] [Thread-151846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:13:11.191 [DEBUG] [Thread-151846] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:13:11.191 [DEBUG] [Thread-151846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:13:11.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:13:11.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:13:11.192 [DEBUG] [Thread-151846] [transport.py] [_log()] userauth is OK
2025-09-29T09:13:11.192 [DEBUG] [Thread-151846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:13:11.192 [DEBUG] [Thread-151846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:13:11.192 [DEBUG] [Thread-151846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:13:11.192 [DEBUG] [Thread-151846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:13:11.207 [INFO] [Thread-151846] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:13:11.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:11.851 [DEBUG] [Thread-151846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:11.851 [DEBUG] [Thread-151846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:11.851 [DEBUG] [Thread-151846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:13:11.892 [DEBUG] [Thread-151846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:11.892 [DEBUG] [Thread-151846] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:11.895 [DEBUG] [Thread-151846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:11.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:11.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:13:11.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:13:11.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:13:11.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:11.916 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:13:11.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:11.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:11.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:13:11.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.300422 -999.00   +8.10  13.66     81   +5.10 1 2 1 2 1   888    0 3.60 28.01 ----- 15.9 13.7 152.1 28.8 12.4 -15.1 11.9 -14.6 11.3 -14.8 11.9 -15.6
2025-09-29T09:13:11.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:13:11.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:13:11.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.300422
2025-09-29T09:13:11.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:13:11.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:13:11.919 [DEBUG] [Thread-151846] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:13:11.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:13:11.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:13:11.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:13:11.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:12:54', tmtdew=2.42, humidity=85.59, cloud=0.0, wind=22.78, temperature=7.77, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:12:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:13:12.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:13:12.016 [DEBUG] [Thread-151849] [transport.py] [_log()] starting thread (client mode): 0x30ddd630
2025-09-29T09:13:12.016 [DEBUG] [Thread-151849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:13:12.030 [DEBUG] [Thread-151849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:13:12.031 [INFO] [Thread-151849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:13:12.038 [DEBUG] [Thread-151849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:13:12.038 [DEBUG] [Thread-151849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] client lang: <none>
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] server lang: <none>
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] kex follows: False
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] Compression: none
2025-09-29T09:13:12.039 [DEBUG] [Thread-151849] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:13:12.098 [DEBUG] [Thread-151849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:13:12.099 [DEBUG] [Thread-151849] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:13:12.099 [DEBUG] [Thread-151849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:13:12.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:13:12.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:13:12.154 [DEBUG] [Thread-151849] [transport.py] [_log()] userauth is OK
2025-09-29T09:13:12.155 [DEBUG] [Thread-151849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:13:12.155 [DEBUG] [Thread-151849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:13:12.155 [DEBUG] [Thread-151849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:13:12.155 [DEBUG] [Thread-151849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:13:12.173 [INFO] [Thread-151849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:13:12.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:13:12.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:13.304 [DEBUG] [Thread-151849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:13.305 [DEBUG] [Thread-151849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:13.352 [DEBUG] [Thread-151849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:13.352 [DEBUG] [Thread-151849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:13.361 [DEBUG] [Thread-151849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:13.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:13.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:13:13.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:13:13.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:13.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:13.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:13.395 [DEBUG] [Thread-151849] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:13:17.014 [DEBUG] [Thread-151851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:13:19.415 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:13:19.416 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:13:23.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:13:23.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:13:23.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:13:24.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 12, 54), 2.42, 85.59, 0.0, 22.78, 7.77, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:13:24.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:12:54
2025-09-29T09:13:24.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:13:24.266 [DEBUG] [Thread-151852] [transport.py] [_log()] starting thread (client mode): 0x28707af0
2025-09-29T09:13:24.266 [DEBUG] [Thread-151852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:13:24.286 [DEBUG] [Thread-151852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:13:24.286 [INFO] [Thread-151852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:13:24.289 [DEBUG] [Thread-151852] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:13:24.289 [DEBUG] [Thread-151852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:13:24.289 [DEBUG] [Thread-151852] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] client lang: <none>
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] server lang: <none>
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] kex follows: False
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:13:24.290 [DEBUG] [Thread-151852] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:13:24.291 [DEBUG] [Thread-151852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:13:24.291 [DEBUG] [Thread-151852] [transport.py] [_log()] Compression: none
2025-09-29T09:13:24.291 [DEBUG] [Thread-151852] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:13:24.307 [DEBUG] [Thread-151852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:13:24.308 [DEBUG] [Thread-151852] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:13:24.308 [DEBUG] [Thread-151852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:13:24.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:13:24.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:13:24.311 [DEBUG] [Thread-151852] [transport.py] [_log()] userauth is OK
2025-09-29T09:13:24.311 [DEBUG] [Thread-151852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:13:24.311 [DEBUG] [Thread-151852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:13:24.311 [DEBUG] [Thread-151852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:13:24.311 [DEBUG] [Thread-151852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:13:24.336 [INFO] [Thread-151852] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:13:24.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:24.936 [DEBUG] [Thread-151852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:24.936 [DEBUG] [Thread-151852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:24.936 [DEBUG] [Thread-151852] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:13:24.977 [DEBUG] [Thread-151852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:24.978 [DEBUG] [Thread-151852] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:24.981 [DEBUG] [Thread-151852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:24.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:24.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:13:24.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:13:24.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:13:25.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:25.006 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:13:25.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:25.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:25.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:13:25.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.300770 -999.00   +8.20  16.75     81   +5.20 1 2 1 2 1   888    0 3.76 31.28 ----- 22.0 16.8 158.4 24.6 12.4 -17.2 11.8 -17.1 11.2 -17.3 11.9 -16.8
2025-09-29T09:13:25.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:13:25.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:13:25.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.300770
2025-09-29T09:13:25.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:13:25.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:13:25.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:13:25.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:13:25.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:13:25.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:12:54', tmtdew=2.42, humidity=85.59, cloud=0.0, wind=22.78, temperature=7.77, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:13:06.528', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:13:25.009 [DEBUG] [Thread-151852] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:13:25.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:13:25.104 [DEBUG] [Thread-151855] [transport.py] [_log()] starting thread (client mode): 0x287054b0
2025-09-29T09:13:25.104 [DEBUG] [Thread-151855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:13:25.119 [DEBUG] [Thread-151855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:13:25.119 [INFO] [Thread-151855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:13:25.127 [DEBUG] [Thread-151855] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:13:25.127 [DEBUG] [Thread-151855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:13:25.127 [DEBUG] [Thread-151855] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:13:25.127 [DEBUG] [Thread-151855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:25.127 [DEBUG] [Thread-151855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:25.127 [DEBUG] [Thread-151855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:25.127 [DEBUG] [Thread-151855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] client lang: <none>
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] server lang: <none>
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] kex follows: False
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:13:25.128 [DEBUG] [Thread-151855] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:13:25.129 [DEBUG] [Thread-151855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:13:25.129 [DEBUG] [Thread-151855] [transport.py] [_log()] Compression: none
2025-09-29T09:13:25.129 [DEBUG] [Thread-151855] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:13:25.189 [DEBUG] [Thread-151855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:13:25.190 [DEBUG] [Thread-151855] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:13:25.190 [DEBUG] [Thread-151855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:13:25.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:13:25.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:13:25.252 [DEBUG] [Thread-151855] [transport.py] [_log()] userauth is OK
2025-09-29T09:13:25.252 [DEBUG] [Thread-151855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:13:25.252 [DEBUG] [Thread-151855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:13:25.253 [DEBUG] [Thread-151855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:13:25.253 [DEBUG] [Thread-151855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:13:25.273 [INFO] [Thread-151855] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:13:25.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:13:25.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:26.293 [DEBUG] [Thread-151855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:26.293 [DEBUG] [Thread-151855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:26.341 [DEBUG] [Thread-151855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:26.341 [DEBUG] [Thread-151855] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:26.350 [DEBUG] [Thread-151855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:26.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:26.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:13:26.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:13:26.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:26.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:26.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:26.385 [DEBUG] [Thread-151855] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:13:28.970 [DEBUG] [Thread-151857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:13:32.045 [DEBUG] [Thread-151858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:13:36.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:13:36.379 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:13:36.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:13:36.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 13, 26), 2.37, 85.86, 0.0, 21.14, 7.84, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:13:36.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:13:26
2025-09-29T09:13:37.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:13:37.257 [DEBUG] [Thread-151859] [transport.py] [_log()] starting thread (client mode): 0x28705bd0
2025-09-29T09:13:37.257 [DEBUG] [Thread-151859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:13:37.277 [DEBUG] [Thread-151859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:13:37.277 [INFO] [Thread-151859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:13:37.280 [DEBUG] [Thread-151859] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:13:37.280 [DEBUG] [Thread-151859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:13:37.280 [DEBUG] [Thread-151859] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] client lang: <none>
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] server lang: <none>
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] kex follows: False
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] Compression: none
2025-09-29T09:13:37.281 [DEBUG] [Thread-151859] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:13:37.298 [DEBUG] [Thread-151859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:13:37.299 [DEBUG] [Thread-151859] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:13:37.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:13:37.300 [DEBUG] [Thread-151859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:13:37.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:13:37.302 [DEBUG] [Thread-151859] [transport.py] [_log()] userauth is OK
2025-09-29T09:13:37.303 [DEBUG] [Thread-151859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:13:37.303 [DEBUG] [Thread-151859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:13:37.303 [DEBUG] [Thread-151859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:13:37.303 [DEBUG] [Thread-151859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:13:37.327 [INFO] [Thread-151859] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:13:37.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:37.975 [DEBUG] [Thread-151859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:37.975 [DEBUG] [Thread-151859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:37.976 [DEBUG] [Thread-151859] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:13:38.016 [DEBUG] [Thread-151859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:38.017 [DEBUG] [Thread-151859] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:38.019 [DEBUG] [Thread-151859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:38.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:38.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:13:38.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:13:38.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:13:38.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:38.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:13:38.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:38.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:13:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.300770 -999.00   +8.20  16.75     81   +5.20 1 2 1 2 1   888    0 3.76 31.28 ----- 22.0 16.8 158.4 24.6 12.4 -17.2 11.8 -17.1 11.2 -17.3 11.9 -16.8
2025-09-29T09:13:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:13:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:13:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.300770
2025-09-29T09:13:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:13:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:13:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:13:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:13:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:13:38.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:13:26', tmtdew=2.37, humidity=85.86, cloud=0.0, wind=21.14, temperature=7.84, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:13:06.528', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:13:38.046 [DEBUG] [Thread-151859] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:13:38.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:13:38.142 [DEBUG] [Thread-151862] [transport.py] [_log()] starting thread (client mode): 0x2b94db10
2025-09-29T09:13:38.143 [DEBUG] [Thread-151862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:13:38.158 [DEBUG] [Thread-151862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:13:38.158 [INFO] [Thread-151862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:13:38.168 [DEBUG] [Thread-151862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:13:38.169 [DEBUG] [Thread-151862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:13:38.169 [DEBUG] [Thread-151862] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:13:38.169 [DEBUG] [Thread-151862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:38.169 [DEBUG] [Thread-151862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:38.169 [DEBUG] [Thread-151862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:38.169 [DEBUG] [Thread-151862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:38.169 [DEBUG] [Thread-151862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:13:38.169 [DEBUG] [Thread-151862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:13:38.170 [DEBUG] [Thread-151862] [transport.py] [_log()] client lang: <none>
2025-09-29T09:13:38.170 [DEBUG] [Thread-151862] [transport.py] [_log()] server lang: <none>
2025-09-29T09:13:38.170 [DEBUG] [Thread-151862] [transport.py] [_log()] kex follows: False
2025-09-29T09:13:38.170 [DEBUG] [Thread-151862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:13:38.170 [DEBUG] [Thread-151862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:13:38.170 [DEBUG] [Thread-151862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:13:38.170 [DEBUG] [Thread-151862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:13:38.171 [DEBUG] [Thread-151862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:13:38.171 [DEBUG] [Thread-151862] [transport.py] [_log()] Compression: none
2025-09-29T09:13:38.171 [DEBUG] [Thread-151862] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:13:38.222 [DEBUG] [Thread-151862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:13:38.223 [DEBUG] [Thread-151862] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:13:38.223 [DEBUG] [Thread-151862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:13:38.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:13:38.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:13:38.278 [DEBUG] [Thread-151862] [transport.py] [_log()] userauth is OK
2025-09-29T09:13:38.278 [DEBUG] [Thread-151862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:13:38.278 [DEBUG] [Thread-151862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:13:38.278 [DEBUG] [Thread-151862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:13:38.278 [DEBUG] [Thread-151862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:13:38.297 [INFO] [Thread-151862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:13:38.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:13:38.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:39.278 [DEBUG] [Thread-151862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:39.278 [DEBUG] [Thread-151862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:39.327 [DEBUG] [Thread-151862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:39.327 [DEBUG] [Thread-151862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:39.337 [DEBUG] [Thread-151862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:39.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:39.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:13:39.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:13:39.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:39.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:39.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:39.372 [DEBUG] [Thread-151862] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:13:47.087 [DEBUG] [Thread-151864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:13:49.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:13:49.373 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:13:49.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:13:49.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 13, 26), 2.37, 85.86, 0.0, 21.14, 7.84, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:13:49.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:13:26
2025-09-29T09:13:50.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:13:50.242 [DEBUG] [Thread-151865] [transport.py] [_log()] starting thread (client mode): 0x287041c0
2025-09-29T09:13:50.242 [DEBUG] [Thread-151865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:13:50.261 [DEBUG] [Thread-151865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:13:50.262 [INFO] [Thread-151865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:13:50.265 [DEBUG] [Thread-151865] [transport.py] [_log()] client lang: <none>
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] server lang: <none>
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] kex follows: False
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] Compression: none
2025-09-29T09:13:50.266 [DEBUG] [Thread-151865] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:13:50.283 [DEBUG] [Thread-151865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:13:50.284 [DEBUG] [Thread-151865] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:13:50.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:13:50.285 [DEBUG] [Thread-151865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:13:50.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:13:50.286 [DEBUG] [Thread-151865] [transport.py] [_log()] userauth is OK
2025-09-29T09:13:50.286 [DEBUG] [Thread-151865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:13:50.286 [DEBUG] [Thread-151865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:13:50.286 [DEBUG] [Thread-151865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:13:50.287 [DEBUG] [Thread-151865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:13:50.311 [INFO] [Thread-151865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:13:50.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:50.945 [DEBUG] [Thread-151865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:50.945 [DEBUG] [Thread-151865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:50.945 [DEBUG] [Thread-151865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:13:50.985 [DEBUG] [Thread-151865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:50.986 [DEBUG] [Thread-151865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:50.989 [DEBUG] [Thread-151865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:51.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:51.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:13:51.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:13:51.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:13:51.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:51.012 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:13:51.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:51.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:51.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:13:51.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.300770 -999.00   +8.20  16.75     81   +5.20 1 2 1 2 1   888    0 3.76 31.28 ----- 22.0 16.8 158.4 24.6 12.4 -17.2 11.8 -17.1 11.2 -17.3 11.9 -16.8
2025-09-29T09:13:51.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:13:51.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:13:51.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.300770
2025-09-29T09:13:51.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:13:51.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:13:51.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:13:51.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:13:51.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:13:51.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:13:26', tmtdew=2.37, humidity=85.86, cloud=0.0, wind=21.14, temperature=7.84, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:13:06.528', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:13:51.015 [DEBUG] [Thread-151865] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:13:51.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:13:51.108 [DEBUG] [Thread-151868] [transport.py] [_log()] starting thread (client mode): 0x28705060
2025-09-29T09:13:51.108 [DEBUG] [Thread-151868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:13:51.123 [DEBUG] [Thread-151868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:13:51.123 [INFO] [Thread-151868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:13:51.130 [DEBUG] [Thread-151868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] client lang: <none>
2025-09-29T09:13:51.131 [DEBUG] [Thread-151868] [transport.py] [_log()] server lang: <none>
2025-09-29T09:13:51.132 [DEBUG] [Thread-151868] [transport.py] [_log()] kex follows: False
2025-09-29T09:13:51.132 [DEBUG] [Thread-151868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:13:51.132 [DEBUG] [Thread-151868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:13:51.132 [DEBUG] [Thread-151868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:13:51.132 [DEBUG] [Thread-151868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:13:51.132 [DEBUG] [Thread-151868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:13:51.132 [DEBUG] [Thread-151868] [transport.py] [_log()] Compression: none
2025-09-29T09:13:51.132 [DEBUG] [Thread-151868] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:13:51.191 [DEBUG] [Thread-151868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:13:51.191 [DEBUG] [Thread-151868] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:13:51.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:13:51.192 [DEBUG] [Thread-151868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:13:51.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:13:51.246 [DEBUG] [Thread-151868] [transport.py] [_log()] userauth is OK
2025-09-29T09:13:51.246 [DEBUG] [Thread-151868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:13:51.247 [DEBUG] [Thread-151868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:13:51.247 [DEBUG] [Thread-151868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:13:51.247 [DEBUG] [Thread-151868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:13:51.266 [INFO] [Thread-151868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:13:51.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:13:51.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:13:52.265 [DEBUG] [Thread-151868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:13:52.265 [DEBUG] [Thread-151868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:13:52.313 [DEBUG] [Thread-151868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:13:52.314 [DEBUG] [Thread-151868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:13:52.322 [DEBUG] [Thread-151868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:13:52.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:13:52.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:13:52.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:13:52.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:13:52.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:13:52.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:13:52.357 [DEBUG] [Thread-151868] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:14:02.118 [DEBUG] [Thread-151870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:14:02.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:14:02.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:14:02.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:14:02.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 13, 26), 2.37, 85.86, 0.0, 21.14, 7.84, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:14:02.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:13:26
2025-09-29T09:14:03.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:14:03.232 [DEBUG] [Thread-151871] [transport.py] [_log()] starting thread (client mode): 0x30ddf490
2025-09-29T09:14:03.232 [DEBUG] [Thread-151871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:14:03.252 [DEBUG] [Thread-151871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:14:03.252 [INFO] [Thread-151871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:14:03.256 [DEBUG] [Thread-151871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:14:03.256 [DEBUG] [Thread-151871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:14:03.256 [DEBUG] [Thread-151871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:14:03.256 [DEBUG] [Thread-151871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:14:03.256 [DEBUG] [Thread-151871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:14:03.256 [DEBUG] [Thread-151871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:14:03.256 [DEBUG] [Thread-151871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:14:03.256 [DEBUG] [Thread-151871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] client lang: <none>
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] server lang: <none>
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] kex follows: False
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] Compression: none
2025-09-29T09:14:03.257 [DEBUG] [Thread-151871] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:14:03.273 [DEBUG] [Thread-151871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:14:03.274 [DEBUG] [Thread-151871] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:14:03.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:14:03.274 [DEBUG] [Thread-151871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:14:03.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:14:03.276 [DEBUG] [Thread-151871] [transport.py] [_log()] userauth is OK
2025-09-29T09:14:03.276 [DEBUG] [Thread-151871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:14:03.276 [DEBUG] [Thread-151871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:14:03.276 [DEBUG] [Thread-151871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:14:03.276 [DEBUG] [Thread-151871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:14:03.299 [INFO] [Thread-151871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:14:03.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:14:03.920 [DEBUG] [Thread-151871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:14:03.920 [DEBUG] [Thread-151871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:14:03.921 [DEBUG] [Thread-151871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:14:03.961 [DEBUG] [Thread-151871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:14:03.962 [DEBUG] [Thread-151871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:14:03.965 [DEBUG] [Thread-151871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:14:03.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:14:03.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:14:03.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:14:03.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:14:03.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:14:03.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:14:03.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:14:03.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:14:03.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:14:03.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.301117 -999.00   +8.20  18.68     80   +5.10 1 2 1 2 1   888    0 3.76 33.85 ----- 16.6 18.7 168.0 24.4 12.3 -17.8 11.7 -18.6 11.2 -19.1 11.8 -18.6
2025-09-29T09:14:03.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:14:03.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:14:03.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.301117
2025-09-29T09:14:03.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:14:03.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:14:03.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:14:03.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:14:03.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:14:03.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:13:26', tmtdew=2.37, humidity=85.86, cloud=0.0, wind=21.14, temperature=7.84, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:13:36.509', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:14:03.993 [DEBUG] [Thread-151871] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:14:04.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:14:04.091 [DEBUG] [Thread-151874] [transport.py] [_log()] starting thread (client mode): 0x2e3492a0
2025-09-29T09:14:04.091 [DEBUG] [Thread-151874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:14:04.106 [DEBUG] [Thread-151874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:14:04.106 [INFO] [Thread-151874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:14:04.114 [DEBUG] [Thread-151874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:14:04.114 [DEBUG] [Thread-151874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:14:04.114 [DEBUG] [Thread-151874] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:14:04.114 [DEBUG] [Thread-151874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:14:04.114 [DEBUG] [Thread-151874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:14:04.114 [DEBUG] [Thread-151874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:14:04.114 [DEBUG] [Thread-151874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:14:04.114 [DEBUG] [Thread-151874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:14:04.115 [DEBUG] [Thread-151874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:14:04.115 [DEBUG] [Thread-151874] [transport.py] [_log()] client lang: <none>
2025-09-29T09:14:04.115 [DEBUG] [Thread-151874] [transport.py] [_log()] server lang: <none>
2025-09-29T09:14:04.115 [DEBUG] [Thread-151874] [transport.py] [_log()] kex follows: False
2025-09-29T09:14:04.115 [DEBUG] [Thread-151874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:14:04.115 [DEBUG] [Thread-151874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:14:04.115 [DEBUG] [Thread-151874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:14:04.115 [DEBUG] [Thread-151874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:14:04.116 [DEBUG] [Thread-151874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:14:04.116 [DEBUG] [Thread-151874] [transport.py] [_log()] Compression: none
2025-09-29T09:14:04.116 [DEBUG] [Thread-151874] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:14:04.171 [DEBUG] [Thread-151874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:14:04.172 [DEBUG] [Thread-151874] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:14:04.172 [DEBUG] [Thread-151874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:14:04.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:14:04.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:14:04.226 [DEBUG] [Thread-151874] [transport.py] [_log()] userauth is OK
2025-09-29T09:14:04.227 [DEBUG] [Thread-151874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:14:04.227 [DEBUG] [Thread-151874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:14:04.227 [DEBUG] [Thread-151874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:14:04.227 [DEBUG] [Thread-151874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:14:04.246 [INFO] [Thread-151874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:14:04.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:14:04.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:14:05.239 [DEBUG] [Thread-151874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:14:05.239 [DEBUG] [Thread-151874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:14:05.287 [DEBUG] [Thread-151874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:14:05.288 [DEBUG] [Thread-151874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:14:05.296 [DEBUG] [Thread-151874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:14:05.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:14:05.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:14:05.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:14:05.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:14:05.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:14:05.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:14:05.331 [DEBUG] [Thread-151874] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:14:15.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:14:15.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:14:15.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:14:15.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 13, 26), 2.37, 85.86, 0.0, 21.14, 7.84, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:14:15.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:13:26
2025-09-29T09:14:16.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:14:16.190 [DEBUG] [Thread-151876] [transport.py] [_log()] starting thread (client mode): 0x2e3487f0
2025-09-29T09:14:16.190 [DEBUG] [Thread-151876] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:14:16.210 [DEBUG] [Thread-151876] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:14:16.210 [INFO] [Thread-151876] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:14:16.214 [DEBUG] [Thread-151876] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:14:16.214 [DEBUG] [Thread-151876] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:14:16.214 [DEBUG] [Thread-151876] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:14:16.214 [DEBUG] [Thread-151876] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:14:16.214 [DEBUG] [Thread-151876] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:14:16.214 [DEBUG] [Thread-151876] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:14:16.214 [DEBUG] [Thread-151876] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] client lang: <none>
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] server lang: <none>
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] kex follows: False
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] Compression: none
2025-09-29T09:14:16.215 [DEBUG] [Thread-151876] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:14:16.231 [DEBUG] [Thread-151876] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:14:16.232 [DEBUG] [Thread-151876] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:14:16.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:14:16.233 [DEBUG] [Thread-151876] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:14:16.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:14:16.235 [DEBUG] [Thread-151876] [transport.py] [_log()] userauth is OK
2025-09-29T09:14:16.235 [DEBUG] [Thread-151876] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:14:16.235 [DEBUG] [Thread-151876] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:14:16.236 [DEBUG] [Thread-151876] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:14:16.236 [DEBUG] [Thread-151876] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:14:16.270 [INFO] [Thread-151876] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:14:16.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:14:16.891 [DEBUG] [Thread-151876] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:14:16.891 [DEBUG] [Thread-151876] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:14:16.892 [DEBUG] [Thread-151876] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:14:16.932 [DEBUG] [Thread-151876] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:14:16.932 [DEBUG] [Thread-151876] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:14:16.935 [DEBUG] [Thread-151876] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:14:16.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:14:16.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:14:16.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:14:16.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:14:16.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:14:16.958 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:14:16.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:14:16.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:14:16.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:14:16.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.301117 -999.00   +8.20  18.68     80   +5.10 1 2 1 2 1   888    0 3.76 33.85 ----- 16.6 18.7 168.0 24.4 12.3 -17.8 11.7 -18.6 11.2 -19.1 11.8 -18.6
2025-09-29T09:14:16.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:14:16.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:14:16.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.301117
2025-09-29T09:14:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:14:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:14:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:14:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:14:16.961 [DEBUG] [Thread-151876] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:14:16.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:14:16.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:13:26', tmtdew=2.37, humidity=85.86, cloud=0.0, wind=21.14, temperature=7.84, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:13:36.509', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:14:17.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:14:17.149 [DEBUG] [Thread-151879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:14:19.559 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:14:19.559 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:14:29.022 [DEBUG] [Thread-151880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:14:32.200 [DEBUG] [Thread-151881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:14:47.234 [DEBUG] [Thread-151882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:15:02.267 [DEBUG] [Thread-151883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:15:17.294 [DEBUG] [Thread-151884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:15:19.701 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:15:19.703 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:15:29.073 [DEBUG] [Thread-151885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:15:32.325 [DEBUG] [Thread-151886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:15:47.353 [DEBUG] [Thread-151887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:16:02.384 [DEBUG] [Thread-151888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:16:17.415 [DEBUG] [Thread-151889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:16:19.843 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:16:19.843 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:16:28.987 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T09:16:29.137 [DEBUG] [Thread-151890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:16:32.443 [DEBUG] [Thread-151891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:16:38.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:16:38.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:16:38.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:16:39.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 16, 7), 2.4, 85.67, 0.0, 27.24, 7.84, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:16:39.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:16:07
2025-09-29T09:16:39.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:16:39.867 [DEBUG] [Thread-151892] [transport.py] [_log()] starting thread (client mode): 0x2b94f5b0
2025-09-29T09:16:39.867 [DEBUG] [Thread-151892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:16:39.887 [DEBUG] [Thread-151892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:16:39.887 [INFO] [Thread-151892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] client lang: <none>
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] server lang: <none>
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] kex follows: False
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:16:39.890 [DEBUG] [Thread-151892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:16:39.891 [DEBUG] [Thread-151892] [transport.py] [_log()] Compression: none
2025-09-29T09:16:39.891 [DEBUG] [Thread-151892] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:16:39.906 [DEBUG] [Thread-151892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:16:39.906 [DEBUG] [Thread-151892] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:16:39.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:16:39.907 [DEBUG] [Thread-151892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:16:39.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:16:39.907 [DEBUG] [Thread-151892] [transport.py] [_log()] userauth is OK
2025-09-29T09:16:39.907 [DEBUG] [Thread-151892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:16:39.907 [DEBUG] [Thread-151892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:16:39.907 [DEBUG] [Thread-151892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:16:39.907 [DEBUG] [Thread-151892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:16:39.924 [INFO] [Thread-151892] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:16:39.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:16:40.569 [DEBUG] [Thread-151892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:16:40.570 [DEBUG] [Thread-151892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:16:40.570 [DEBUG] [Thread-151892] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:16:40.611 [DEBUG] [Thread-151892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:16:40.611 [DEBUG] [Thread-151892] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:16:40.613 [DEBUG] [Thread-151892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:16:40.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:16:40.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:16:40.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:16:40.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:16:40.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:16:40.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:16:40.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.302506 -999.00   +8.20  20.01     81   +5.20 1 2 1 2 1   888    0 3.93 37.94 ----- 23.0 20.0 155.2 29.6 12.3 -20.3 11.7 -20.3 11.1 -21.4 11.9 -18.9
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.302506
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:16:40.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:16:07', tmtdew=2.4, humidity=85.67, cloud=0.0, wind=27.24, temperature=7.84, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:15:36.518', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:16:40.632 [DEBUG] [Thread-151892] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:16:40.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:16:40.718 [DEBUG] [Thread-151895] [transport.py] [_log()] starting thread (client mode): 0x2b91e320
2025-09-29T09:16:40.718 [DEBUG] [Thread-151895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:16:40.732 [DEBUG] [Thread-151895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:16:40.732 [INFO] [Thread-151895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:16:40.739 [DEBUG] [Thread-151895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:16:40.739 [DEBUG] [Thread-151895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:16:40.739 [DEBUG] [Thread-151895] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:16:40.739 [DEBUG] [Thread-151895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:16:40.739 [DEBUG] [Thread-151895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:16:40.739 [DEBUG] [Thread-151895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:16:40.739 [DEBUG] [Thread-151895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] client lang: <none>
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] server lang: <none>
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] kex follows: False
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] Compression: none
2025-09-29T09:16:40.740 [DEBUG] [Thread-151895] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:16:40.801 [DEBUG] [Thread-151895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:16:40.801 [DEBUG] [Thread-151895] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:16:40.801 [DEBUG] [Thread-151895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:16:40.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:16:40.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:16:40.859 [DEBUG] [Thread-151895] [transport.py] [_log()] userauth is OK
2025-09-29T09:16:40.859 [DEBUG] [Thread-151895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:16:40.859 [DEBUG] [Thread-151895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:16:40.859 [DEBUG] [Thread-151895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:16:40.860 [DEBUG] [Thread-151895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:16:40.877 [INFO] [Thread-151895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:16:40.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:16:40.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:16:41.986 [DEBUG] [Thread-151895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:16:41.986 [DEBUG] [Thread-151895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:16:42.034 [DEBUG] [Thread-151895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:16:42.034 [DEBUG] [Thread-151895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:16:42.044 [DEBUG] [Thread-151895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:16:42.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:16:42.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:16:42.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:16:42.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:16:42.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:16:42.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:16:42.077 [DEBUG] [Thread-151895] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:16:47.472 [DEBUG] [Thread-151897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:16:52.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:16:52.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:16:52.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:16:52.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 16, 39), 2.34, 85.96, 0.0, 23.27, 7.67, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:16:52.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:16:39
2025-09-29T09:16:52.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:16:52.946 [DEBUG] [Thread-151898] [transport.py] [_log()] starting thread (client mode): 0x2b91e8c0
2025-09-29T09:16:52.946 [DEBUG] [Thread-151898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:16:52.965 [DEBUG] [Thread-151898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:16:52.965 [INFO] [Thread-151898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:16:52.967 [DEBUG] [Thread-151898] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:16:52.967 [DEBUG] [Thread-151898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] client lang: <none>
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] server lang: <none>
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] kex follows: False
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] Compression: none
2025-09-29T09:16:52.968 [DEBUG] [Thread-151898] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:16:52.988 [DEBUG] [Thread-151898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:16:52.989 [DEBUG] [Thread-151898] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:16:52.989 [DEBUG] [Thread-151898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:16:52.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:16:52.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:16:52.991 [DEBUG] [Thread-151898] [transport.py] [_log()] userauth is OK
2025-09-29T09:16:52.991 [DEBUG] [Thread-151898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:16:52.992 [DEBUG] [Thread-151898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:16:52.992 [DEBUG] [Thread-151898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:16:52.992 [DEBUG] [Thread-151898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:16:53.016 [INFO] [Thread-151898] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:16:53.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:16:53.621 [DEBUG] [Thread-151898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:16:53.621 [DEBUG] [Thread-151898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:16:53.621 [DEBUG] [Thread-151898] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:16:53.662 [DEBUG] [Thread-151898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:16:53.662 [DEBUG] [Thread-151898] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:16:53.665 [DEBUG] [Thread-151898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:16:53.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:16:53.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:16:53.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:16:53.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:16:53.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:16:53.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:16:53.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:16:53.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:16:53.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:16:53.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.303200 -999.00   +8.10  20.06     80   +5.00 1 1 1 2 1   888    0 4.09 40.35 ----- 20.9 20.1 145.5 27.0 12.0 -22.3 11.4 -22.7 10.9 -23.7 11.7 -23.2
2025-09-29T09:16:53.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:16:53.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:16:53.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.303200
2025-09-29T09:16:53.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:16:53.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:16:53.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:16:53.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:16:53.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:16:53.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:16:39', tmtdew=2.34, humidity=85.96, cloud=0.0, wind=23.27, temperature=7.67, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:16:36.480', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:16:53.693 [DEBUG] [Thread-151898] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:16:53.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:16:53.796 [DEBUG] [Thread-151901] [transport.py] [_log()] starting thread (client mode): 0x30ddd420
2025-09-29T09:16:53.797 [DEBUG] [Thread-151901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:16:53.812 [DEBUG] [Thread-151901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:16:53.812 [INFO] [Thread-151901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:16:53.820 [DEBUG] [Thread-151901] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:16:53.820 [DEBUG] [Thread-151901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:16:53.820 [DEBUG] [Thread-151901] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:16:53.820 [DEBUG] [Thread-151901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:16:53.820 [DEBUG] [Thread-151901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:16:53.820 [DEBUG] [Thread-151901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:16:53.820 [DEBUG] [Thread-151901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] client lang: <none>
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] server lang: <none>
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] kex follows: False
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] Compression: none
2025-09-29T09:16:53.821 [DEBUG] [Thread-151901] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:16:53.878 [DEBUG] [Thread-151901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:16:53.879 [DEBUG] [Thread-151901] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:16:53.879 [DEBUG] [Thread-151901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:16:53.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:16:53.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:16:53.935 [DEBUG] [Thread-151901] [transport.py] [_log()] userauth is OK
2025-09-29T09:16:53.935 [DEBUG] [Thread-151901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:16:53.935 [DEBUG] [Thread-151901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:16:53.935 [DEBUG] [Thread-151901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:16:53.935 [DEBUG] [Thread-151901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:16:53.955 [INFO] [Thread-151901] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:16:53.955 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:16:53.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:16:54.968 [DEBUG] [Thread-151901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:16:54.968 [DEBUG] [Thread-151901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:16:55.016 [DEBUG] [Thread-151901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:16:55.016 [DEBUG] [Thread-151901] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:16:55.027 [DEBUG] [Thread-151901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:16:55.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:16:55.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:16:55.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:16:55.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:16:55.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:16:55.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:16:55.060 [DEBUG] [Thread-151901] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:02.526 [DEBUG] [Thread-151903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:17:05.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:17:05.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:17:05.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:17:05.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 16, 39), 2.34, 85.96, 0.0, 23.27, 7.67, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:17:05.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:16:39
2025-09-29T09:17:05.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:17:05.915 [DEBUG] [Thread-151904] [transport.py] [_log()] starting thread (client mode): 0x2e3de740
2025-09-29T09:17:05.915 [DEBUG] [Thread-151904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:05.935 [DEBUG] [Thread-151904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:17:05.936 [INFO] [Thread-151904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:17:05.939 [DEBUG] [Thread-151904] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:05.939 [DEBUG] [Thread-151904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:17:05.939 [DEBUG] [Thread-151904] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:05.939 [DEBUG] [Thread-151904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:05.939 [DEBUG] [Thread-151904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:05.939 [DEBUG] [Thread-151904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] Compression: none
2025-09-29T09:17:05.940 [DEBUG] [Thread-151904] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:05.957 [DEBUG] [Thread-151904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:05.957 [DEBUG] [Thread-151904] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:05.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:17:05.958 [DEBUG] [Thread-151904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:17:05.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:05.960 [DEBUG] [Thread-151904] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:05.961 [DEBUG] [Thread-151904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:05.961 [DEBUG] [Thread-151904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:05.961 [DEBUG] [Thread-151904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:17:05.961 [DEBUG] [Thread-151904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:05.984 [INFO] [Thread-151904] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:05.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:06.622 [DEBUG] [Thread-151904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:06.622 [DEBUG] [Thread-151904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:06.622 [DEBUG] [Thread-151904] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:17:06.663 [DEBUG] [Thread-151904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:06.663 [DEBUG] [Thread-151904] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:06.666 [DEBUG] [Thread-151904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:06.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:06.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:17:06.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:17:06.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:17:06.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:06.689 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:17:06.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:06.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:06.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:17:06.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.303200 -999.00   +8.10  20.06     80   +5.00 1 1 1 2 1   888    0 4.09 40.35 ----- 20.9 20.1 145.5 27.0 12.0 -22.3 11.4 -22.7 10.9 -23.7 11.7 -23.2
2025-09-29T09:17:06.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:17:06.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:17:06.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.303200
2025-09-29T09:17:06.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:17:06.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:17:06.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:17:06.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:17:06.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:17:06.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:16:39', tmtdew=2.34, humidity=85.96, cloud=0.0, wind=23.27, temperature=7.67, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:16:36.480', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:17:06.692 [DEBUG] [Thread-151904] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:06.775 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:17:06.788 [DEBUG] [Thread-151907] [transport.py] [_log()] starting thread (client mode): 0x2e3de8f0
2025-09-29T09:17:06.788 [DEBUG] [Thread-151907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:06.803 [DEBUG] [Thread-151907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:17:06.803 [INFO] [Thread-151907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:06.811 [DEBUG] [Thread-151907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:06.812 [DEBUG] [Thread-151907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:06.812 [DEBUG] [Thread-151907] [transport.py] [_log()] Compression: none
2025-09-29T09:17:06.812 [DEBUG] [Thread-151907] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:06.867 [DEBUG] [Thread-151907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:06.868 [DEBUG] [Thread-151907] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:06.868 [DEBUG] [Thread-151907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:17:06.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:17:06.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:06.923 [DEBUG] [Thread-151907] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:06.924 [DEBUG] [Thread-151907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:06.924 [DEBUG] [Thread-151907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:06.924 [DEBUG] [Thread-151907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:17:06.924 [DEBUG] [Thread-151907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:06.943 [INFO] [Thread-151907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:06.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:17:06.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:07.987 [DEBUG] [Thread-151907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:07.988 [DEBUG] [Thread-151907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:08.035 [DEBUG] [Thread-151907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:08.035 [DEBUG] [Thread-151907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:08.044 [DEBUG] [Thread-151907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:08.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:08.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:17:08.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:17:08.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:08.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:08.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:08.079 [DEBUG] [Thread-151907] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:17.573 [DEBUG] [Thread-151909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:17:18.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:17:18.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:17:18.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:17:18.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 17, 11), 2.32, 86.07, 0.0, 25.64, 7.71, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:17:18.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:17:11
2025-09-29T09:17:18.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:17:18.936 [DEBUG] [Thread-151910] [transport.py] [_log()] starting thread (client mode): 0x2b9cc640
2025-09-29T09:17:18.936 [DEBUG] [Thread-151910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:18.958 [DEBUG] [Thread-151910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:17:18.958 [INFO] [Thread-151910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:17:18.961 [DEBUG] [Thread-151910] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:18.961 [DEBUG] [Thread-151910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:17:18.961 [DEBUG] [Thread-151910] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:18.961 [DEBUG] [Thread-151910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:18.961 [DEBUG] [Thread-151910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:18.962 [DEBUG] [Thread-151910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:18.963 [DEBUG] [Thread-151910] [transport.py] [_log()] Compression: none
2025-09-29T09:17:18.963 [DEBUG] [Thread-151910] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:18.980 [DEBUG] [Thread-151910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:18.981 [DEBUG] [Thread-151910] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:18.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:17:18.982 [DEBUG] [Thread-151910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:17:18.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:18.984 [DEBUG] [Thread-151910] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:18.984 [DEBUG] [Thread-151910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:18.984 [DEBUG] [Thread-151910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:18.985 [DEBUG] [Thread-151910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:17:18.985 [DEBUG] [Thread-151910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:19.008 [INFO] [Thread-151910] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:19.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:19.645 [DEBUG] [Thread-151910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:19.646 [DEBUG] [Thread-151910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:19.646 [DEBUG] [Thread-151910] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:17:19.686 [DEBUG] [Thread-151910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:19.687 [DEBUG] [Thread-151910] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:19.690 [DEBUG] [Thread-151910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:19.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:19.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:17:19.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:17:19.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:17:19.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:19.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:17:19.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:19.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:19.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:17:19.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.303547 -999.00   +8.10  22.69     80   +5.00 1 2 1 2 1   888    0 4.02 40.16 ----- 21.7 22.7 170.4 33.2 12.0 -21.3 11.3 -22.2 10.9 -23.4 11.6 -22.6
2025-09-29T09:17:19.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:17:19.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:17:19.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.303547
2025-09-29T09:17:19.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:17:19.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:17:19.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:17:19.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:17:19.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:17:19.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:17:11', tmtdew=2.32, humidity=86.07, cloud=0.0, wind=25.64, temperature=7.71, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:17:06.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:17:19.715 [DEBUG] [Thread-151910] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:19.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:17:19.809 [DEBUG] [Thread-151913] [transport.py] [_log()] starting thread (client mode): 0x2e3de8f0
2025-09-29T09:17:19.809 [DEBUG] [Thread-151913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:19.824 [DEBUG] [Thread-151913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:17:19.824 [INFO] [Thread-151913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:17:19.832 [DEBUG] [Thread-151913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:19.832 [DEBUG] [Thread-151913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:17:19.832 [DEBUG] [Thread-151913] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:19.832 [DEBUG] [Thread-151913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:19.832 [DEBUG] [Thread-151913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:19.832 [DEBUG] [Thread-151913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:19.833 [DEBUG] [Thread-151913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:19.834 [DEBUG] [Thread-151913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:19.834 [DEBUG] [Thread-151913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:19.834 [DEBUG] [Thread-151913] [transport.py] [_log()] Compression: none
2025-09-29T09:17:19.834 [DEBUG] [Thread-151913] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:19.892 [DEBUG] [Thread-151913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:19.892 [DEBUG] [Thread-151913] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:19.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:17:19.894 [DEBUG] [Thread-151913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:17:19.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:19.951 [DEBUG] [Thread-151913] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:19.952 [DEBUG] [Thread-151913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:19.952 [DEBUG] [Thread-151913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:19.952 [DEBUG] [Thread-151913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:17:19.952 [DEBUG] [Thread-151913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:19.972 [INFO] [Thread-151913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:19.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:17:19.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:19.983 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:17:19.984 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:17:20.966 [DEBUG] [Thread-151913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:20.967 [DEBUG] [Thread-151913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:21.014 [DEBUG] [Thread-151913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:21.014 [DEBUG] [Thread-151913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:21.024 [DEBUG] [Thread-151913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:21.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:21.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:17:21.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:17:21.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:21.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:21.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:21.060 [DEBUG] [Thread-151913] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:29.189 [DEBUG] [Thread-151915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:17:31.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:17:31.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:17:31.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:17:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 17, 11), 2.32, 86.07, 0.0, 25.64, 7.71, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:17:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:17:11
2025-09-29T09:17:31.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:17:31.915 [DEBUG] [Thread-151916] [transport.py] [_log()] starting thread (client mode): 0x30ddf4f0
2025-09-29T09:17:31.915 [DEBUG] [Thread-151916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:31.936 [DEBUG] [Thread-151916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:17:31.936 [INFO] [Thread-151916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:31.939 [DEBUG] [Thread-151916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:31.940 [DEBUG] [Thread-151916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:31.940 [DEBUG] [Thread-151916] [transport.py] [_log()] Compression: none
2025-09-29T09:17:31.940 [DEBUG] [Thread-151916] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:31.957 [DEBUG] [Thread-151916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:31.957 [DEBUG] [Thread-151916] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:31.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:17:31.958 [DEBUG] [Thread-151916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:17:31.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:31.960 [DEBUG] [Thread-151916] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:31.960 [DEBUG] [Thread-151916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:31.960 [DEBUG] [Thread-151916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:31.961 [DEBUG] [Thread-151916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:17:31.961 [DEBUG] [Thread-151916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:31.995 [INFO] [Thread-151916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:31.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:32.603 [DEBUG] [Thread-151918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:17:32.642 [DEBUG] [Thread-151916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:32.642 [DEBUG] [Thread-151916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:32.643 [DEBUG] [Thread-151916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:17:32.683 [DEBUG] [Thread-151916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:32.683 [DEBUG] [Thread-151916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:32.685 [DEBUG] [Thread-151916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:32.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:32.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:17:32.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:17:32.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:17:32.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:32.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:17:32.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:32.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:32.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:17:32.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.303547 -999.00   +8.10  22.69     80   +5.00 1 2 1 2 1   888    0 4.02 40.16 ----- 21.7 22.7 170.4 33.2 12.0 -21.3 11.3 -22.2 10.9 -23.4 11.6 -22.6
2025-09-29T09:17:32.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:17:32.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:17:32.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.303547
2025-09-29T09:17:32.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:17:32.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:17:32.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:17:32.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:17:32.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:17:32.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:17:11', tmtdew=2.32, humidity=86.07, cloud=0.0, wind=25.64, temperature=7.71, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:17:06.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:17:32.704 [DEBUG] [Thread-151916] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:32.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:17:32.788 [DEBUG] [Thread-151920] [transport.py] [_log()] starting thread (client mode): 0x2e3dfca0
2025-09-29T09:17:32.788 [DEBUG] [Thread-151920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:32.803 [DEBUG] [Thread-151920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:17:32.803 [INFO] [Thread-151920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:32.810 [DEBUG] [Thread-151920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:32.811 [DEBUG] [Thread-151920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:32.811 [DEBUG] [Thread-151920] [transport.py] [_log()] Compression: none
2025-09-29T09:17:32.811 [DEBUG] [Thread-151920] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:32.870 [DEBUG] [Thread-151920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:32.871 [DEBUG] [Thread-151920] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:32.872 [DEBUG] [Thread-151920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:17:32.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:17:32.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:32.928 [DEBUG] [Thread-151920] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:32.928 [DEBUG] [Thread-151920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:32.928 [DEBUG] [Thread-151920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:32.928 [DEBUG] [Thread-151920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:17:32.929 [DEBUG] [Thread-151920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:32.947 [INFO] [Thread-151920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:32.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:17:32.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:33.936 [DEBUG] [Thread-151920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:33.936 [DEBUG] [Thread-151920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:33.984 [DEBUG] [Thread-151920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:33.984 [DEBUG] [Thread-151920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:33.993 [DEBUG] [Thread-151920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:34.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:34.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:17:34.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:17:34.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:34.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:34.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:34.027 [DEBUG] [Thread-151920] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:17:44.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:17:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:17:44.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 17, 11), 2.32, 86.07, 0.0, 25.64, 7.71, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:17:44.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:17:11
2025-09-29T09:17:44.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:17:44.934 [DEBUG] [Thread-151922] [transport.py] [_log()] starting thread (client mode): 0x2b91c4c0
2025-09-29T09:17:44.934 [DEBUG] [Thread-151922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:44.956 [DEBUG] [Thread-151922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:17:44.956 [INFO] [Thread-151922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:17:44.959 [DEBUG] [Thread-151922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:44.959 [DEBUG] [Thread-151922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:17:44.959 [DEBUG] [Thread-151922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:44.959 [DEBUG] [Thread-151922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] Compression: none
2025-09-29T09:17:44.960 [DEBUG] [Thread-151922] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:44.976 [DEBUG] [Thread-151922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:44.976 [DEBUG] [Thread-151922] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:44.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:17:44.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:44.976 [DEBUG] [Thread-151922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:17:44.977 [DEBUG] [Thread-151922] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:44.977 [DEBUG] [Thread-151922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:44.977 [DEBUG] [Thread-151922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:44.977 [DEBUG] [Thread-151922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:17:44.977 [DEBUG] [Thread-151922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:45.007 [INFO] [Thread-151922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:45.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:45.635 [DEBUG] [Thread-151922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:45.635 [DEBUG] [Thread-151922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:45.636 [DEBUG] [Thread-151922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:17:45.676 [DEBUG] [Thread-151922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:45.676 [DEBUG] [Thread-151922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:45.680 [DEBUG] [Thread-151922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:45.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:45.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:17:45.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:17:45.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:17:45.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:45.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:17:45.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:45.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:45.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:17:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.303547 -999.00   +8.10  22.69     80   +5.00 1 2 1 2 1   888    0 4.02 40.16 ----- 21.7 22.7 170.4 33.2 12.0 -21.3 11.3 -22.2 10.9 -23.4 11.6 -22.6
2025-09-29T09:17:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:17:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:17:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.303547
2025-09-29T09:17:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:17:45.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:17:45.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:17:45.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:17:45.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:17:45.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:17:11', tmtdew=2.32, humidity=86.07, cloud=0.0, wind=25.64, temperature=7.71, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:17:06.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:17:45.705 [DEBUG] [Thread-151922] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:45.790 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:17:45.802 [DEBUG] [Thread-151925] [transport.py] [_log()] starting thread (client mode): 0x2b91dde0
2025-09-29T09:17:45.802 [DEBUG] [Thread-151925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:45.822 [DEBUG] [Thread-151925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:17:45.822 [INFO] [Thread-151925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:17:45.829 [DEBUG] [Thread-151925] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:45.830 [DEBUG] [Thread-151925] [transport.py] [_log()] Compression: none
2025-09-29T09:17:45.831 [DEBUG] [Thread-151925] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:45.888 [DEBUG] [Thread-151925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:45.888 [DEBUG] [Thread-151925] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:45.889 [DEBUG] [Thread-151925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:17:45.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:17:45.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:45.944 [DEBUG] [Thread-151925] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:45.944 [DEBUG] [Thread-151925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:45.944 [DEBUG] [Thread-151925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:45.944 [DEBUG] [Thread-151925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:17:45.945 [DEBUG] [Thread-151925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:45.964 [INFO] [Thread-151925] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:45.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:17:45.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:46.953 [DEBUG] [Thread-151925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:46.953 [DEBUG] [Thread-151925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:47.001 [DEBUG] [Thread-151925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:47.002 [DEBUG] [Thread-151925] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:47.013 [DEBUG] [Thread-151925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:47.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:47.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:17:47.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:17:47.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:47.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:47.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:47.056 [DEBUG] [Thread-151925] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:47.660 [DEBUG] [Thread-151927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:17:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:17:57.055 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:17:57.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:17:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 17, 43), 2.34, 85.99, 0.0, 22.39, 7.54, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:17:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:17:43
2025-09-29T09:17:57.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:17:57.904 [DEBUG] [Thread-151928] [transport.py] [_log()] starting thread (client mode): 0x2b91d8d0
2025-09-29T09:17:57.904 [DEBUG] [Thread-151928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:57.923 [DEBUG] [Thread-151928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:17:57.924 [INFO] [Thread-151928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] Compression: none
2025-09-29T09:17:57.927 [DEBUG] [Thread-151928] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:57.944 [DEBUG] [Thread-151928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:57.944 [DEBUG] [Thread-151928] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:57.944 [DEBUG] [Thread-151928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:17:57.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:17:57.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:57.945 [DEBUG] [Thread-151928] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:57.945 [DEBUG] [Thread-151928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:57.945 [DEBUG] [Thread-151928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:57.945 [DEBUG] [Thread-151928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:17:57.945 [DEBUG] [Thread-151928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:57.955 [INFO] [Thread-151928] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:57.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:58.574 [DEBUG] [Thread-151928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:58.574 [DEBUG] [Thread-151928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:58.575 [DEBUG] [Thread-151928] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:17:58.615 [DEBUG] [Thread-151928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:58.615 [DEBUG] [Thread-151928] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:58.618 [DEBUG] [Thread-151928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:58.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:58.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:17:58.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:17:58.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:17:58.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:58.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:17:58.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:58.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:17:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.303894 -999.00   +8.00  13.55     81   +5.00 1 2 1 2 1   888    0 4.19 42.37 ----- 14.6 13.6 145.5 24.1 12.0 -21.3 11.3 -22.2 10.8 -22.7 11.5 -22.1
2025-09-29T09:17:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:17:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:17:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.303894
2025-09-29T09:17:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:17:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:17:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:17:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:17:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:17:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:17:43', tmtdew=2.34, humidity=85.99, cloud=0.0, wind=22.39, temperature=7.54, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:17:36.442', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:17:58.643 [DEBUG] [Thread-151928] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:17:58.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:17:58.739 [DEBUG] [Thread-151931] [transport.py] [_log()] starting thread (client mode): 0x2e3600d0
2025-09-29T09:17:58.739 [DEBUG] [Thread-151931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:17:58.755 [DEBUG] [Thread-151931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:17:58.755 [INFO] [Thread-151931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] client lang: <none>
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] server lang: <none>
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] kex follows: False
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:17:58.763 [DEBUG] [Thread-151931] [transport.py] [_log()] Compression: none
2025-09-29T09:17:58.764 [DEBUG] [Thread-151931] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:17:58.820 [DEBUG] [Thread-151931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:17:58.820 [DEBUG] [Thread-151931] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:17:58.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:17:58.821 [DEBUG] [Thread-151931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:17:58.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:17:58.876 [DEBUG] [Thread-151931] [transport.py] [_log()] userauth is OK
2025-09-29T09:17:58.876 [DEBUG] [Thread-151931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:17:58.876 [DEBUG] [Thread-151931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:17:58.876 [DEBUG] [Thread-151931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:17:58.877 [DEBUG] [Thread-151931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:17:58.896 [INFO] [Thread-151931] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:17:58.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:17:58.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:17:59.890 [DEBUG] [Thread-151931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:17:59.890 [DEBUG] [Thread-151931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:17:59.938 [DEBUG] [Thread-151931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:17:59.938 [DEBUG] [Thread-151931] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:17:59.950 [DEBUG] [Thread-151931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:17:59.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:17:59.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:17:59.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:17:59.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:17:59.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:17:59.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:17:59.994 [DEBUG] [Thread-151931] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:18:02.693 [DEBUG] [Thread-151933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:18:09.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:18:09.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:18:10.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:18:10.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 17, 43), 2.34, 85.99, 0.0, 22.39, 7.54, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:18:10.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:17:43
2025-09-29T09:18:10.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:18:10.851 [DEBUG] [Thread-151934] [transport.py] [_log()] starting thread (client mode): 0x30dddc00
2025-09-29T09:18:10.851 [DEBUG] [Thread-151934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:18:10.872 [DEBUG] [Thread-151934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:18:10.872 [INFO] [Thread-151934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] client lang: <none>
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] server lang: <none>
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] kex follows: False
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:18:10.873 [DEBUG] [Thread-151934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:18:10.874 [DEBUG] [Thread-151934] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:18:10.874 [DEBUG] [Thread-151934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:18:10.874 [DEBUG] [Thread-151934] [transport.py] [_log()] Compression: none
2025-09-29T09:18:10.874 [DEBUG] [Thread-151934] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:18:10.892 [DEBUG] [Thread-151934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:18:10.892 [DEBUG] [Thread-151934] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:18:10.893 [DEBUG] [Thread-151934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:18:10.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:18:10.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:18:10.895 [DEBUG] [Thread-151934] [transport.py] [_log()] userauth is OK
2025-09-29T09:18:10.895 [DEBUG] [Thread-151934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:18:10.895 [DEBUG] [Thread-151934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:18:10.895 [DEBUG] [Thread-151934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:18:10.895 [DEBUG] [Thread-151934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:18:10.920 [INFO] [Thread-151934] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:18:10.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:18:11.591 [DEBUG] [Thread-151934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:18:11.591 [DEBUG] [Thread-151934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:18:11.592 [DEBUG] [Thread-151934] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:18:11.632 [DEBUG] [Thread-151934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:18:11.633 [DEBUG] [Thread-151934] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:18:11.636 [DEBUG] [Thread-151934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:18:11.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:18:11.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:18:11.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:18:11.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:18:11.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:18:11.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:18:11.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:18:11.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:18:11.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:18:11.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.303894 -999.00   +8.00  13.55     81   +5.00 1 2 1 2 1   888    0 4.19 42.37 ----- 14.6 13.6 145.5 24.1 12.0 -21.3 11.3 -22.2 10.8 -22.7 11.5 -22.1
2025-09-29T09:18:11.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:18:11.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:18:11.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.303894
2025-09-29T09:18:11.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:18:11.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:18:11.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:18:11.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:18:11.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:18:11.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:17:43', tmtdew=2.34, humidity=85.99, cloud=0.0, wind=22.39, temperature=7.54, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:17:36.442', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:18:11.661 [DEBUG] [Thread-151934] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:18:11.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:18:11.758 [DEBUG] [Thread-151937] [transport.py] [_log()] starting thread (client mode): 0x2b9ccfa0
2025-09-29T09:18:11.758 [DEBUG] [Thread-151937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:18:11.772 [DEBUG] [Thread-151937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:18:11.772 [INFO] [Thread-151937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:18:11.780 [DEBUG] [Thread-151937] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:18:11.780 [DEBUG] [Thread-151937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] client lang: <none>
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] server lang: <none>
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] kex follows: False
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] Compression: none
2025-09-29T09:18:11.781 [DEBUG] [Thread-151937] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:18:11.836 [DEBUG] [Thread-151937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:18:11.836 [DEBUG] [Thread-151937] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:18:11.837 [DEBUG] [Thread-151937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:18:11.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:18:11.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:18:11.897 [DEBUG] [Thread-151937] [transport.py] [_log()] userauth is OK
2025-09-29T09:18:11.898 [DEBUG] [Thread-151937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:18:11.898 [DEBUG] [Thread-151937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:18:11.898 [DEBUG] [Thread-151937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:18:11.898 [DEBUG] [Thread-151937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:18:11.923 [INFO] [Thread-151937] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:18:11.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:18:11.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:18:12.905 [DEBUG] [Thread-151937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:18:12.905 [DEBUG] [Thread-151937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:18:12.953 [DEBUG] [Thread-151937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:18:12.953 [DEBUG] [Thread-151937] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:18:12.962 [DEBUG] [Thread-151937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:18:12.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:18:12.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:18:12.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:18:12.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:18:12.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:18:12.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:18:12.998 [DEBUG] [Thread-151937] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:18:17.743 [DEBUG] [Thread-151939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:18:20.125 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:18:20.126 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:18:22.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:18:22.999 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:18:23.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:18:23.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 18, 15), 2.34, 85.94, 0.0, 24.26, 7.52, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:18:23.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:18:15
2025-09-29T09:18:23.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:18:23.836 [DEBUG] [Thread-151940] [transport.py] [_log()] starting thread (client mode): 0x2e3632e0
2025-09-29T09:18:23.837 [DEBUG] [Thread-151940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:18:23.858 [DEBUG] [Thread-151940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:18:23.858 [INFO] [Thread-151940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] client lang: <none>
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] server lang: <none>
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] kex follows: False
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:18:23.859 [DEBUG] [Thread-151940] [transport.py] [_log()] Compression: none
2025-09-29T09:18:23.860 [DEBUG] [Thread-151940] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:18:23.867 [DEBUG] [Thread-151940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:18:23.868 [DEBUG] [Thread-151940] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:18:23.868 [DEBUG] [Thread-151940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:18:23.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:18:23.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:18:23.869 [DEBUG] [Thread-151940] [transport.py] [_log()] userauth is OK
2025-09-29T09:18:23.870 [DEBUG] [Thread-151940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:18:23.870 [DEBUG] [Thread-151940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:18:23.870 [DEBUG] [Thread-151940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:18:23.870 [DEBUG] [Thread-151940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:18:23.887 [INFO] [Thread-151940] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:18:23.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:18:24.472 [DEBUG] [Thread-151940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:18:24.472 [DEBUG] [Thread-151940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:18:24.472 [DEBUG] [Thread-151940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:18:24.513 [DEBUG] [Thread-151940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:18:24.514 [DEBUG] [Thread-151940] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:18:24.516 [DEBUG] [Thread-151940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:18:24.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:18:24.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:18:24.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:18:24.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:18:24.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:18:24.537 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:18:24.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:18:24.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:18:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:18:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.304242 -999.00   +8.10  17.19     81   +5.00 1 2 1 2 1   888    0 4.01 37.99 ----- 15.0 17.2 139.8 22.1 12.0 -21.1 11.2 -22.5 10.8 -22.9 11.5 -22.5
2025-09-29T09:18:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:18:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:18:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.304242
2025-09-29T09:18:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:18:24.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:18:24.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:18:24.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:18:24.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:18:24.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:18:15', tmtdew=2.34, humidity=85.94, cloud=0.0, wind=24.26, temperature=7.52, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:18:06.509', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:18:24.539 [DEBUG] [Thread-151940] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:18:24.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:18:24.633 [DEBUG] [Thread-151943] [transport.py] [_log()] starting thread (client mode): 0x2b91fa90
2025-09-29T09:18:24.633 [DEBUG] [Thread-151943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:18:24.647 [DEBUG] [Thread-151943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:18:24.647 [INFO] [Thread-151943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] client lang: <none>
2025-09-29T09:18:24.655 [DEBUG] [Thread-151943] [transport.py] [_log()] server lang: <none>
2025-09-29T09:18:24.656 [DEBUG] [Thread-151943] [transport.py] [_log()] kex follows: False
2025-09-29T09:18:24.656 [DEBUG] [Thread-151943] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:18:24.656 [DEBUG] [Thread-151943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:18:24.656 [DEBUG] [Thread-151943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:18:24.656 [DEBUG] [Thread-151943] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:18:24.656 [DEBUG] [Thread-151943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:18:24.656 [DEBUG] [Thread-151943] [transport.py] [_log()] Compression: none
2025-09-29T09:18:24.656 [DEBUG] [Thread-151943] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:18:24.716 [DEBUG] [Thread-151943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:18:24.716 [DEBUG] [Thread-151943] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:18:24.717 [DEBUG] [Thread-151943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:18:24.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:18:24.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:18:24.774 [DEBUG] [Thread-151943] [transport.py] [_log()] userauth is OK
2025-09-29T09:18:24.774 [DEBUG] [Thread-151943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:18:24.775 [DEBUG] [Thread-151943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:18:24.775 [DEBUG] [Thread-151943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:18:24.775 [DEBUG] [Thread-151943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:18:24.794 [INFO] [Thread-151943] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:18:24.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:18:24.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:18:25.850 [DEBUG] [Thread-151943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:18:25.851 [DEBUG] [Thread-151943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:18:25.898 [DEBUG] [Thread-151943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:18:25.898 [DEBUG] [Thread-151943] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:18:25.908 [DEBUG] [Thread-151943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:18:25.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:18:25.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:18:25.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:18:25.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:18:25.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:18:25.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:18:25.943 [DEBUG] [Thread-151943] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:18:29.241 [DEBUG] [Thread-151945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:18:32.777 [DEBUG] [Thread-151946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:18:35.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:18:35.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:18:35.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:18:36.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 18, 15), 2.34, 85.94, 0.0, 24.26, 7.52, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:18:36.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:18:15
2025-09-29T09:18:36.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:18:36.826 [DEBUG] [Thread-151947] [transport.py] [_log()] starting thread (client mode): 0x30ddd4b0
2025-09-29T09:18:36.826 [DEBUG] [Thread-151947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:18:36.847 [DEBUG] [Thread-151947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:18:36.847 [INFO] [Thread-151947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] client lang: <none>
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] server lang: <none>
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] kex follows: False
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] Compression: none
2025-09-29T09:18:36.850 [DEBUG] [Thread-151947] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:18:36.865 [DEBUG] [Thread-151947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:18:36.865 [DEBUG] [Thread-151947] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:18:36.865 [DEBUG] [Thread-151947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:18:36.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:18:36.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:18:36.866 [DEBUG] [Thread-151947] [transport.py] [_log()] userauth is OK
2025-09-29T09:18:36.866 [DEBUG] [Thread-151947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:18:36.866 [DEBUG] [Thread-151947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:18:36.866 [DEBUG] [Thread-151947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:18:36.866 [DEBUG] [Thread-151947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:18:36.877 [INFO] [Thread-151947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:18:36.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:18:37.536 [DEBUG] [Thread-151947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:18:37.537 [DEBUG] [Thread-151947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:18:37.537 [DEBUG] [Thread-151947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:18:37.577 [DEBUG] [Thread-151947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:18:37.578 [DEBUG] [Thread-151947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:18:37.581 [DEBUG] [Thread-151947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:18:37.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:18:37.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:18:37.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:18:37.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:18:37.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:18:37.606 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:18:37.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:18:37.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:18:37.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:18:37.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.304242 -999.00   +8.10  17.19     81   +5.00 1 2 1 2 1   888    0 4.01 37.99 ----- 15.0 17.2 139.8 22.1 12.0 -21.1 11.2 -22.5 10.8 -22.9 11.5 -22.5
2025-09-29T09:18:37.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:18:37.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:18:37.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.304242
2025-09-29T09:18:37.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:18:37.609 [DEBUG] [Thread-151947] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:18:37.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:18:37.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:18:37.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:18:37.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:18:37.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:18:15', tmtdew=2.34, humidity=85.94, cloud=0.0, wind=24.26, temperature=7.52, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:18:06.509', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:18:37.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:18:37.712 [DEBUG] [Thread-151950] [transport.py] [_log()] starting thread (client mode): 0x2b91dea0
2025-09-29T09:18:37.712 [DEBUG] [Thread-151950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:18:37.727 [DEBUG] [Thread-151950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:18:37.727 [INFO] [Thread-151950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:18:37.734 [DEBUG] [Thread-151950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:18:37.734 [DEBUG] [Thread-151950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] client lang: <none>
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] server lang: <none>
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] kex follows: False
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] Compression: none
2025-09-29T09:18:37.735 [DEBUG] [Thread-151950] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:18:37.793 [DEBUG] [Thread-151950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:18:37.793 [DEBUG] [Thread-151950] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:18:37.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:18:37.794 [DEBUG] [Thread-151950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:18:37.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:18:37.849 [DEBUG] [Thread-151950] [transport.py] [_log()] userauth is OK
2025-09-29T09:18:37.849 [DEBUG] [Thread-151950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:18:37.849 [DEBUG] [Thread-151950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:18:37.849 [DEBUG] [Thread-151950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:18:37.849 [DEBUG] [Thread-151950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:18:37.868 [INFO] [Thread-151950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:18:37.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:18:37.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:18:38.818 [DEBUG] [Thread-151950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:18:38.818 [DEBUG] [Thread-151950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:18:38.869 [DEBUG] [Thread-151950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:18:38.870 [DEBUG] [Thread-151950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:18:38.879 [DEBUG] [Thread-151950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:18:38.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:18:38.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:18:38.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:18:38.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:18:38.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:18:38.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:18:38.913 [DEBUG] [Thread-151950] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:18:47.818 [DEBUG] [Thread-151952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:18:48.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:18:48.914 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:18:48.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:18:49.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 18, 15), 2.34, 85.94, 0.0, 24.26, 7.52, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:18:49.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:18:15
2025-09-29T09:18:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:18:49.780 [DEBUG] [Thread-151953] [transport.py] [_log()] starting thread (client mode): 0x2b9cc9d0
2025-09-29T09:18:49.780 [DEBUG] [Thread-151953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:18:49.799 [DEBUG] [Thread-151953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:18:49.799 [INFO] [Thread-151953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] client lang: <none>
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] server lang: <none>
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] kex follows: False
2025-09-29T09:18:49.803 [DEBUG] [Thread-151953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:18:49.804 [DEBUG] [Thread-151953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:18:49.804 [DEBUG] [Thread-151953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:18:49.804 [DEBUG] [Thread-151953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:18:49.804 [DEBUG] [Thread-151953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:18:49.804 [DEBUG] [Thread-151953] [transport.py] [_log()] Compression: none
2025-09-29T09:18:49.804 [DEBUG] [Thread-151953] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:18:49.822 [DEBUG] [Thread-151953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:18:49.822 [DEBUG] [Thread-151953] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:18:49.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:18:49.823 [DEBUG] [Thread-151953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:18:49.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:18:49.825 [DEBUG] [Thread-151953] [transport.py] [_log()] userauth is OK
2025-09-29T09:18:49.826 [DEBUG] [Thread-151953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:18:49.826 [DEBUG] [Thread-151953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:18:49.826 [DEBUG] [Thread-151953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:18:49.826 [DEBUG] [Thread-151953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:18:49.844 [INFO] [Thread-151953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:18:49.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:18:50.474 [DEBUG] [Thread-151953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:18:50.474 [DEBUG] [Thread-151953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:18:50.474 [DEBUG] [Thread-151953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:18:50.515 [DEBUG] [Thread-151953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:18:50.515 [DEBUG] [Thread-151953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:18:50.518 [DEBUG] [Thread-151953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:18:50.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:18:50.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:18:50.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:18:50.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:18:50.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:18:50.540 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:18:50.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:18:50.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:18:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:18:50.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.304242 -999.00   +8.10  17.19     81   +5.00 1 2 1 2 1   888    0 4.01 37.99 ----- 15.0 17.2 139.8 22.1 12.0 -21.1 11.2 -22.5 10.8 -22.9 11.5 -22.5
2025-09-29T09:18:50.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:18:50.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:18:50.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.304242
2025-09-29T09:18:50.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:18:50.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:18:50.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:18:50.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:18:50.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:18:50.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:18:15', tmtdew=2.34, humidity=85.94, cloud=0.0, wind=24.26, temperature=7.52, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:18:06.509', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:18:50.542 [DEBUG] [Thread-151953] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:18:50.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:18:50.636 [DEBUG] [Thread-151956] [transport.py] [_log()] starting thread (client mode): 0x2e3620e0
2025-09-29T09:18:50.636 [DEBUG] [Thread-151956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:18:50.652 [DEBUG] [Thread-151956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:18:50.652 [INFO] [Thread-151956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] client lang: <none>
2025-09-29T09:18:50.659 [DEBUG] [Thread-151956] [transport.py] [_log()] server lang: <none>
2025-09-29T09:18:50.660 [DEBUG] [Thread-151956] [transport.py] [_log()] kex follows: False
2025-09-29T09:18:50.660 [DEBUG] [Thread-151956] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:18:50.660 [DEBUG] [Thread-151956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:18:50.660 [DEBUG] [Thread-151956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:18:50.660 [DEBUG] [Thread-151956] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:18:50.660 [DEBUG] [Thread-151956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:18:50.660 [DEBUG] [Thread-151956] [transport.py] [_log()] Compression: none
2025-09-29T09:18:50.660 [DEBUG] [Thread-151956] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:18:50.717 [DEBUG] [Thread-151956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:18:50.717 [DEBUG] [Thread-151956] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:18:50.718 [DEBUG] [Thread-151956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:18:50.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:18:50.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:18:50.773 [DEBUG] [Thread-151956] [transport.py] [_log()] userauth is OK
2025-09-29T09:18:50.773 [DEBUG] [Thread-151956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:18:50.773 [DEBUG] [Thread-151956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:18:50.773 [DEBUG] [Thread-151956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:18:50.774 [DEBUG] [Thread-151956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:18:50.793 [INFO] [Thread-151956] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:18:50.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:18:50.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:18:51.823 [DEBUG] [Thread-151956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:18:51.824 [DEBUG] [Thread-151956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:18:51.871 [DEBUG] [Thread-151956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:18:51.871 [DEBUG] [Thread-151956] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:18:51.881 [DEBUG] [Thread-151956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:18:51.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:18:51.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:18:51.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:18:51.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:18:51.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:18:51.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:18:51.915 [DEBUG] [Thread-151956] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:01.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:19:01.918 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:19:01.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:19:02.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 18, 47), 2.32, 86.07, 0.0, 28.48, 7.62, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:19:02.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:18:47
2025-09-29T09:19:02.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:19:02.774 [DEBUG] [Thread-151958] [transport.py] [_log()] starting thread (client mode): 0x2e362080
2025-09-29T09:19:02.774 [DEBUG] [Thread-151958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:02.794 [DEBUG] [Thread-151958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:19:02.794 [INFO] [Thread-151958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:02.797 [DEBUG] [Thread-151958] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:02.798 [DEBUG] [Thread-151958] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:02.798 [DEBUG] [Thread-151958] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:02.798 [DEBUG] [Thread-151958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:02.798 [DEBUG] [Thread-151958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:02.798 [DEBUG] [Thread-151958] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:02.798 [DEBUG] [Thread-151958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:02.798 [DEBUG] [Thread-151958] [transport.py] [_log()] Compression: none
2025-09-29T09:19:02.798 [DEBUG] [Thread-151958] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:02.815 [DEBUG] [Thread-151958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:02.815 [DEBUG] [Thread-151958] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:02.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:19:02.816 [DEBUG] [Thread-151958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:19:02.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:02.818 [DEBUG] [Thread-151958] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:02.819 [DEBUG] [Thread-151958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:02.819 [DEBUG] [Thread-151958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:02.819 [DEBUG] [Thread-151958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:19:02.819 [DEBUG] [Thread-151958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:02.842 [INFO] [Thread-151958] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:02.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:02.844 [DEBUG] [Thread-151960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:19:03.496 [DEBUG] [Thread-151958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:03.496 [DEBUG] [Thread-151958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:03.497 [DEBUG] [Thread-151958] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:19:03.537 [DEBUG] [Thread-151958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:03.537 [DEBUG] [Thread-151958] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:03.540 [DEBUG] [Thread-151958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:03.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:03.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:19:03.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:19:03.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:19:03.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:03.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:19:03.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:03.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:19:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.304589 -999.00   +8.20  14.97     80   +5.10 1 2 1 2 1   888    0 4.01 38.12 ----- 20.3 15.0 142.1 23.1 11.9 -21.6 11.3 -22.4 10.8 -22.9 -999.0 -999.0
2025-09-29T09:19:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:19:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:19:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.304589
2025-09-29T09:19:03.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:19:03.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:19:03.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:19:03.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:19:03.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:19:03.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:18:47', tmtdew=2.32, humidity=86.07, cloud=0.0, wind=28.48, temperature=7.62, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:18:36.490', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:19:03.566 [DEBUG] [Thread-151958] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:03.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:19:03.666 [DEBUG] [Thread-151962] [transport.py] [_log()] starting thread (client mode): 0x2b9bb100
2025-09-29T09:19:03.666 [DEBUG] [Thread-151962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:03.682 [DEBUG] [Thread-151962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:19:03.682 [INFO] [Thread-151962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] Compression: none
2025-09-29T09:19:03.689 [DEBUG] [Thread-151962] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:03.747 [DEBUG] [Thread-151962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:03.747 [DEBUG] [Thread-151962] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:03.749 [DEBUG] [Thread-151962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:19:03.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:19:03.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:03.805 [DEBUG] [Thread-151962] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:03.805 [DEBUG] [Thread-151962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:03.805 [DEBUG] [Thread-151962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:03.805 [DEBUG] [Thread-151962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:19:03.805 [DEBUG] [Thread-151962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:03.825 [INFO] [Thread-151962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:03.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:19:03.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:04.780 [DEBUG] [Thread-151962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:04.780 [DEBUG] [Thread-151962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:04.827 [DEBUG] [Thread-151962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:04.827 [DEBUG] [Thread-151962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:04.836 [DEBUG] [Thread-151962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:04.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:04.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:19:04.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:19:04.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:04.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:04.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:04.871 [DEBUG] [Thread-151962] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:14.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:19:14.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:19:14.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:19:15.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 18, 47), 2.32, 86.07, 0.0, 28.48, 7.62, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:19:15.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:18:47
2025-09-29T09:19:15.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:19:15.717 [DEBUG] [Thread-151964] [transport.py] [_log()] starting thread (client mode): 0x2b9b9390
2025-09-29T09:19:15.717 [DEBUG] [Thread-151964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:15.738 [DEBUG] [Thread-151964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:19:15.738 [INFO] [Thread-151964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:15.742 [DEBUG] [Thread-151964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] Compression: none
2025-09-29T09:19:15.743 [DEBUG] [Thread-151964] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:15.759 [DEBUG] [Thread-151964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:15.760 [DEBUG] [Thread-151964] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:15.760 [DEBUG] [Thread-151964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:19:15.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:19:15.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:15.762 [DEBUG] [Thread-151964] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:15.763 [DEBUG] [Thread-151964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:15.763 [DEBUG] [Thread-151964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:15.763 [DEBUG] [Thread-151964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:19:15.763 [DEBUG] [Thread-151964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:15.786 [INFO] [Thread-151964] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:15.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:16.435 [DEBUG] [Thread-151964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:16.435 [DEBUG] [Thread-151964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:16.435 [DEBUG] [Thread-151964] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:19:16.476 [DEBUG] [Thread-151964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:16.477 [DEBUG] [Thread-151964] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:16.480 [DEBUG] [Thread-151964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:16.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:16.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:19:16.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:19:16.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:19:16.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:16.502 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:19:16.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:16.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:16.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:19:16.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.304589 -999.00   +8.20  14.97     80   +5.10 1 2 1 2 1   888    0 4.01 38.12 ----- 20.3 15.0 142.1 23.1 11.9 -21.6 11.3 -22.4 10.8 -22.9 -999.0 -999.0
2025-09-29T09:19:16.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:19:16.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:19:16.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.304589
2025-09-29T09:19:16.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:19:16.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:19:16.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:19:16.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:19:16.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:19:16.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:18:47', tmtdew=2.32, humidity=86.07, cloud=0.0, wind=28.48, temperature=7.62, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:18:36.490', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:19:16.504 [DEBUG] [Thread-151964] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:16.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:19:16.587 [DEBUG] [Thread-151967] [transport.py] [_log()] starting thread (client mode): 0x2e34a620
2025-09-29T09:19:16.587 [DEBUG] [Thread-151967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:16.602 [DEBUG] [Thread-151967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:19:16.602 [INFO] [Thread-151967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] Compression: none
2025-09-29T09:19:16.610 [DEBUG] [Thread-151967] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:16.669 [DEBUG] [Thread-151967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:16.669 [DEBUG] [Thread-151967] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:16.670 [DEBUG] [Thread-151967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:19:16.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:19:16.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:16.726 [DEBUG] [Thread-151967] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:16.726 [DEBUG] [Thread-151967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:16.726 [DEBUG] [Thread-151967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:16.726 [DEBUG] [Thread-151967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:19:16.726 [DEBUG] [Thread-151967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:16.745 [INFO] [Thread-151967] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:16.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:19:16.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:17.736 [DEBUG] [Thread-151967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:17.736 [DEBUG] [Thread-151967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:17.784 [DEBUG] [Thread-151967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:17.784 [DEBUG] [Thread-151967] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:17.793 [DEBUG] [Thread-151967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:17.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:17.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:19:17.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:19:17.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:17.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:17.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:17.827 [DEBUG] [Thread-151967] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:17.874 [DEBUG] [Thread-151969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:19:20.268 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:19:20.269 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:19:27.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:19:27.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:19:27.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:19:28.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 19, 19), 2.34, 85.97, 0.0, 28.39, 7.66, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:19:28.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:19:19
2025-09-29T09:19:28.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:19:28.687 [DEBUG] [Thread-151970] [transport.py] [_log()] starting thread (client mode): 0x2b9dd7b0
2025-09-29T09:19:28.687 [DEBUG] [Thread-151970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:28.707 [DEBUG] [Thread-151970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:19:28.707 [INFO] [Thread-151970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:19:28.710 [DEBUG] [Thread-151970] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:28.710 [DEBUG] [Thread-151970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] Compression: none
2025-09-29T09:19:28.711 [DEBUG] [Thread-151970] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:28.727 [DEBUG] [Thread-151970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:28.728 [DEBUG] [Thread-151970] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:28.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:19:28.729 [DEBUG] [Thread-151970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:19:28.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:28.772 [DEBUG] [Thread-151970] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:28.773 [DEBUG] [Thread-151970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:28.773 [DEBUG] [Thread-151970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:28.773 [DEBUG] [Thread-151970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:19:28.773 [DEBUG] [Thread-151970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:28.795 [INFO] [Thread-151970] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:28.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:29.302 [DEBUG] [Thread-151972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:19:29.398 [DEBUG] [Thread-151970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:29.398 [DEBUG] [Thread-151970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:29.398 [DEBUG] [Thread-151970] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:19:29.439 [DEBUG] [Thread-151970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:29.439 [DEBUG] [Thread-151970] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:29.442 [DEBUG] [Thread-151970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:29.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:29.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:19:29.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:19:29.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:19:29.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:29.463 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:19:29.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:29.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:29.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:19:29.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.304589 -999.00   +8.20  14.97     80   +5.10 1 2 1 2 1   888    0 4.01 38.12 ----- 20.3 15.0 142.1 23.1 11.9 -21.6 11.3 -22.4 10.8 -22.9 -999.0 -999.0
2025-09-29T09:19:29.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:19:29.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:19:29.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.304589
2025-09-29T09:19:29.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:19:29.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:19:29.465 [DEBUG] [Thread-151970] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:29.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:19:29.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:19:29.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:19:29.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:19:19', tmtdew=2.34, humidity=85.97, cloud=0.0, wind=28.39, temperature=7.66, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:18:36.490', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:19:29.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:19:29.561 [DEBUG] [Thread-151974] [transport.py] [_log()] starting thread (client mode): 0x30ddf730
2025-09-29T09:19:29.561 [DEBUG] [Thread-151974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:29.576 [DEBUG] [Thread-151974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:19:29.577 [INFO] [Thread-151974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:19:29.584 [DEBUG] [Thread-151974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:29.584 [DEBUG] [Thread-151974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:19:29.584 [DEBUG] [Thread-151974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:29.584 [DEBUG] [Thread-151974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:29.584 [DEBUG] [Thread-151974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:29.584 [DEBUG] [Thread-151974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:29.584 [DEBUG] [Thread-151974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] Compression: none
2025-09-29T09:19:29.585 [DEBUG] [Thread-151974] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:29.641 [DEBUG] [Thread-151974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:29.641 [DEBUG] [Thread-151974] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:29.642 [DEBUG] [Thread-151974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:19:29.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:19:29.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:29.698 [DEBUG] [Thread-151974] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:29.698 [DEBUG] [Thread-151974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:29.698 [DEBUG] [Thread-151974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:29.698 [DEBUG] [Thread-151974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:19:29.698 [DEBUG] [Thread-151974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:29.718 [INFO] [Thread-151974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:29.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:19:29.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:30.725 [DEBUG] [Thread-151974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:30.725 [DEBUG] [Thread-151974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:30.774 [DEBUG] [Thread-151974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:30.774 [DEBUG] [Thread-151974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:30.784 [DEBUG] [Thread-151974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:30.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:30.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:19:30.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:19:30.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:30.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:30.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:30.818 [DEBUG] [Thread-151974] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:32.921 [DEBUG] [Thread-151976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:19:40.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:19:40.822 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:19:40.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:19:41.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 19, 19), 2.34, 85.97, 0.0, 28.39, 7.66, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:19:41.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:19:19
2025-09-29T09:19:41.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:19:41.684 [DEBUG] [Thread-151977] [transport.py] [_log()] starting thread (client mode): 0x2b9a7460
2025-09-29T09:19:41.684 [DEBUG] [Thread-151977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:41.706 [DEBUG] [Thread-151977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:19:41.706 [INFO] [Thread-151977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:19:41.709 [DEBUG] [Thread-151977] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] Compression: none
2025-09-29T09:19:41.710 [DEBUG] [Thread-151977] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:41.726 [DEBUG] [Thread-151977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:41.726 [DEBUG] [Thread-151977] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:41.726 [DEBUG] [Thread-151977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:19:41.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:19:41.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:41.727 [DEBUG] [Thread-151977] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:41.727 [DEBUG] [Thread-151977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:41.727 [DEBUG] [Thread-151977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:41.727 [DEBUG] [Thread-151977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:19:41.727 [DEBUG] [Thread-151977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:41.737 [INFO] [Thread-151977] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:41.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:42.372 [DEBUG] [Thread-151977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:42.372 [DEBUG] [Thread-151977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:42.372 [DEBUG] [Thread-151977] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:19:42.413 [DEBUG] [Thread-151977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:42.413 [DEBUG] [Thread-151977] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:42.416 [DEBUG] [Thread-151977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:42.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:42.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:19:42.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:19:42.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:19:42.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:42.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:19:42.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:42.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:19:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.304936 -999.00   +8.50  20.31     80   +5.30 1 2 1 2 1   888    0 3.89 35.35 ----- 21.8 20.3 134.4 26.1 11.9 -22.3 11.4 -20.5 10.9 -22.5 11.5 -21.6
2025-09-29T09:19:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:19:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:19:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.304936
2025-09-29T09:19:42.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:19:42.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:19:42.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:19:42.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:19:42.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:19:42.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:19:19', tmtdew=2.34, humidity=85.97, cloud=0.0, wind=28.39, temperature=7.66, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:19:06.470', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:19:42.441 [DEBUG] [Thread-151977] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:42.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:19:42.536 [DEBUG] [Thread-151980] [transport.py] [_log()] starting thread (client mode): 0x2e3487c0
2025-09-29T09:19:42.536 [DEBUG] [Thread-151980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:42.551 [DEBUG] [Thread-151980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:19:42.551 [INFO] [Thread-151980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:19:42.559 [DEBUG] [Thread-151980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:42.559 [DEBUG] [Thread-151980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:19:42.559 [DEBUG] [Thread-151980] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:42.559 [DEBUG] [Thread-151980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:42.559 [DEBUG] [Thread-151980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:42.559 [DEBUG] [Thread-151980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:42.560 [DEBUG] [Thread-151980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:42.560 [DEBUG] [Thread-151980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:42.560 [DEBUG] [Thread-151980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:42.560 [DEBUG] [Thread-151980] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:42.560 [DEBUG] [Thread-151980] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:42.560 [DEBUG] [Thread-151980] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:42.560 [DEBUG] [Thread-151980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:42.560 [DEBUG] [Thread-151980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:42.561 [DEBUG] [Thread-151980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:42.561 [DEBUG] [Thread-151980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:42.561 [DEBUG] [Thread-151980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:42.561 [DEBUG] [Thread-151980] [transport.py] [_log()] Compression: none
2025-09-29T09:19:42.561 [DEBUG] [Thread-151980] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:42.618 [DEBUG] [Thread-151980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:42.619 [DEBUG] [Thread-151980] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:42.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:19:42.620 [DEBUG] [Thread-151980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:19:42.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:42.674 [DEBUG] [Thread-151980] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:42.674 [DEBUG] [Thread-151980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:42.674 [DEBUG] [Thread-151980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:42.674 [DEBUG] [Thread-151980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:19:42.674 [DEBUG] [Thread-151980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:42.693 [INFO] [Thread-151980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:42.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:19:42.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:43.688 [DEBUG] [Thread-151980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:43.688 [DEBUG] [Thread-151980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:43.735 [DEBUG] [Thread-151980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:43.735 [DEBUG] [Thread-151980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:43.744 [DEBUG] [Thread-151980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:43.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:43.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:19:43.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:19:43.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:43.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:43.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:43.779 [DEBUG] [Thread-151980] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:47.973 [DEBUG] [Thread-151982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:19:53.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:19:53.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:19:53.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:19:54.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 19, 51), 2.34, 86.02, 0.0, 30.35, 8.04, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:19:54.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:19:51
2025-09-29T09:19:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:19:54.624 [DEBUG] [Thread-151983] [transport.py] [_log()] starting thread (client mode): 0x2b9cd5a0
2025-09-29T09:19:54.624 [DEBUG] [Thread-151983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:54.644 [DEBUG] [Thread-151983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:19:54.645 [INFO] [Thread-151983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:54.648 [DEBUG] [Thread-151983] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] Compression: none
2025-09-29T09:19:54.649 [DEBUG] [Thread-151983] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:54.668 [DEBUG] [Thread-151983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:54.668 [DEBUG] [Thread-151983] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:54.669 [DEBUG] [Thread-151983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:19:54.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:19:54.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:54.671 [DEBUG] [Thread-151983] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:54.671 [DEBUG] [Thread-151983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:54.671 [DEBUG] [Thread-151983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:54.671 [DEBUG] [Thread-151983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:19:54.671 [DEBUG] [Thread-151983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:54.707 [INFO] [Thread-151983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:54.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:55.302 [DEBUG] [Thread-151983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:55.302 [DEBUG] [Thread-151983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:55.302 [DEBUG] [Thread-151983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:19:55.343 [DEBUG] [Thread-151983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:55.343 [DEBUG] [Thread-151983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:55.346 [DEBUG] [Thread-151983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:55.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:55.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:19:55.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:19:55.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:19:55.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:55.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:19:55.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:55.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:55.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:19:55.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.304936 -999.00   +8.50  20.31     80   +5.30 1 2 1 2 1   888    0 3.89 35.35 ----- 21.8 20.3 134.4 26.1 11.9 -22.3 11.4 -20.5 10.9 -22.5 11.5 -21.6
2025-09-29T09:19:55.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:19:55.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:19:55.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.304936
2025-09-29T09:19:55.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:19:55.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:19:55.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:19:55.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:19:55.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:19:55.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:19:51', tmtdew=2.34, humidity=86.02, cloud=0.0, wind=30.35, temperature=8.04, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:19:06.470', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:19:55.372 [DEBUG] [Thread-151983] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:19:55.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:19:55.466 [DEBUG] [Thread-151986] [transport.py] [_log()] starting thread (client mode): 0x2b91d270
2025-09-29T09:19:55.466 [DEBUG] [Thread-151986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:19:55.485 [DEBUG] [Thread-151986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:19:55.485 [INFO] [Thread-151986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:19:55.492 [DEBUG] [Thread-151986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:19:55.492 [DEBUG] [Thread-151986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:19:55.492 [DEBUG] [Thread-151986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:19:55.492 [DEBUG] [Thread-151986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] client lang: <none>
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] server lang: <none>
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] kex follows: False
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] Compression: none
2025-09-29T09:19:55.493 [DEBUG] [Thread-151986] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:19:55.550 [DEBUG] [Thread-151986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:19:55.551 [DEBUG] [Thread-151986] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:19:55.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:19:55.552 [DEBUG] [Thread-151986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:19:55.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:19:55.606 [DEBUG] [Thread-151986] [transport.py] [_log()] userauth is OK
2025-09-29T09:19:55.606 [DEBUG] [Thread-151986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:19:55.606 [DEBUG] [Thread-151986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:19:55.606 [DEBUG] [Thread-151986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:19:55.607 [DEBUG] [Thread-151986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:19:55.630 [INFO] [Thread-151986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:19:55.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:19:55.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:19:56.597 [DEBUG] [Thread-151986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:19:56.598 [DEBUG] [Thread-151986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:19:56.645 [DEBUG] [Thread-151986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:19:56.645 [DEBUG] [Thread-151986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:19:56.654 [DEBUG] [Thread-151986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:19:56.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:19:56.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:19:56.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:19:56.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:19:56.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:19:56.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:19:56.692 [DEBUG] [Thread-151986] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:03.027 [DEBUG] [Thread-151988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:20:06.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:20:06.694 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:20:06.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:20:07.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 19, 51), 2.34, 86.02, 0.0, 30.35, 8.04, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:20:07.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:19:51
2025-09-29T09:20:07.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:20:07.535 [DEBUG] [Thread-151989] [transport.py] [_log()] starting thread (client mode): 0x2b9bbe20
2025-09-29T09:20:07.535 [DEBUG] [Thread-151989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:07.554 [DEBUG] [Thread-151989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:20:07.554 [INFO] [Thread-151989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] Compression: none
2025-09-29T09:20:07.556 [DEBUG] [Thread-151989] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:07.568 [DEBUG] [Thread-151989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:07.568 [DEBUG] [Thread-151989] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:07.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:20:07.569 [DEBUG] [Thread-151989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:20:07.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:07.571 [DEBUG] [Thread-151989] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:07.571 [DEBUG] [Thread-151989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:07.571 [DEBUG] [Thread-151989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:07.571 [DEBUG] [Thread-151989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:20:07.572 [DEBUG] [Thread-151989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:07.585 [INFO] [Thread-151989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:07.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:20:08.319 [DEBUG] [Thread-151989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:20:08.320 [DEBUG] [Thread-151989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:20:08.320 [DEBUG] [Thread-151989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:20:08.360 [DEBUG] [Thread-151989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:20:08.361 [DEBUG] [Thread-151989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:20:08.363 [DEBUG] [Thread-151989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:20:08.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:20:08.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:20:08.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:20:08.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:20:08.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:20:08.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:20:08.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:20:08.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:20:08.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:20:08.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.305283 -999.00   +8.70  22.92     79   +5.30 1 2 1 1 1   888    0 3.84 32.59 ----- 26.4 22.9 152.7 31.0 12.3 -17.8 11.9 -20.1 11.2 -21.7 11.9 -20.2
2025-09-29T09:20:08.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:20:08.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:20:08.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.305283
2025-09-29T09:20:08.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:20:08.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:20:08.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:20:08.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:20:08.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:20:08.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:19:51', tmtdew=2.34, humidity=86.02, cloud=0.0, wind=30.35, temperature=8.04, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:19:36.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:20:08.386 [DEBUG] [Thread-151989] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:08.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:20:08.484 [DEBUG] [Thread-151992] [transport.py] [_log()] starting thread (client mode): 0x2e3608b0
2025-09-29T09:20:08.484 [DEBUG] [Thread-151992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:08.499 [DEBUG] [Thread-151992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:20:08.500 [INFO] [Thread-151992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:20:08.507 [DEBUG] [Thread-151992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:08.507 [DEBUG] [Thread-151992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:20:08.507 [DEBUG] [Thread-151992] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:08.507 [DEBUG] [Thread-151992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:08.507 [DEBUG] [Thread-151992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] Compression: none
2025-09-29T09:20:08.508 [DEBUG] [Thread-151992] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:08.569 [DEBUG] [Thread-151992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:08.569 [DEBUG] [Thread-151992] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:08.570 [DEBUG] [Thread-151992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:20:08.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:20:08.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:08.630 [DEBUG] [Thread-151992] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:08.630 [DEBUG] [Thread-151992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:08.630 [DEBUG] [Thread-151992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:08.631 [DEBUG] [Thread-151992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:20:08.631 [DEBUG] [Thread-151992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:08.650 [INFO] [Thread-151992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:08.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:20:08.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:20:09.724 [DEBUG] [Thread-151992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:20:09.724 [DEBUG] [Thread-151992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:20:09.772 [DEBUG] [Thread-151992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:20:09.772 [DEBUG] [Thread-151992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:20:09.781 [DEBUG] [Thread-151992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:20:09.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:20:09.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:20:09.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:20:09.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:20:09.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:20:09.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:20:09.817 [DEBUG] [Thread-151992] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:18.062 [DEBUG] [Thread-151994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:20:19.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:20:19.819 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:20:19.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:20:20.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 19, 51), 2.34, 86.02, 0.0, 30.35, 8.04, 1, 1, 0, 2, 0, 0),)
2025-09-29T09:20:20.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:19:51
2025-09-29T09:20:20.407 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:20:20.408 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:20:20.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:20:20.658 [DEBUG] [Thread-151995] [transport.py] [_log()] starting thread (client mode): 0x2e348370
2025-09-29T09:20:20.658 [DEBUG] [Thread-151995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:20.678 [DEBUG] [Thread-151995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:20:20.678 [INFO] [Thread-151995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:20:20.681 [DEBUG] [Thread-151995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:20.682 [DEBUG] [Thread-151995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:20.683 [DEBUG] [Thread-151995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:20.683 [DEBUG] [Thread-151995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:20.683 [DEBUG] [Thread-151995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:20.683 [DEBUG] [Thread-151995] [transport.py] [_log()] Compression: none
2025-09-29T09:20:20.683 [DEBUG] [Thread-151995] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:20.699 [DEBUG] [Thread-151995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:20.700 [DEBUG] [Thread-151995] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:20.700 [DEBUG] [Thread-151995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:20:20.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:20:20.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:20.702 [DEBUG] [Thread-151995] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:20.703 [DEBUG] [Thread-151995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:20.703 [DEBUG] [Thread-151995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:20.703 [DEBUG] [Thread-151995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:20:20.703 [DEBUG] [Thread-151995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:20.738 [INFO] [Thread-151995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:20.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:20:21.388 [DEBUG] [Thread-151995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:20:21.389 [DEBUG] [Thread-151995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:20:21.389 [DEBUG] [Thread-151995] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:20:21.429 [DEBUG] [Thread-151995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:20:21.429 [DEBUG] [Thread-151995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:20:21.433 [DEBUG] [Thread-151995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:20:21.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:20:21.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:20:21.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:20:21.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:20:21.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:20:21.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:20:21.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:20:21.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:20:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:20:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.305283 -999.00   +8.70  22.92     79   +5.30 1 2 1 1 1   888    0 3.84 32.59 ----- 26.4 22.9 152.7 31.0 12.3 -17.8 11.9 -20.1 11.2 -21.7 11.9 -20.2
2025-09-29T09:20:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:20:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:20:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.305283
2025-09-29T09:20:21.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:20:21.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:20:21.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:20:21.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:20:21.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:20:21.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:19:51', tmtdew=2.34, humidity=86.02, cloud=0.0, wind=30.35, temperature=8.04, tmtdew_warn=1, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:19:36.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:20:21.460 [DEBUG] [Thread-151995] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:21.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:20:21.554 [DEBUG] [Thread-151998] [transport.py] [_log()] starting thread (client mode): 0x2b9bb880
2025-09-29T09:20:21.554 [DEBUG] [Thread-151998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:21.569 [DEBUG] [Thread-151998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:20:21.569 [INFO] [Thread-151998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] Compression: none
2025-09-29T09:20:21.577 [DEBUG] [Thread-151998] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:21.635 [DEBUG] [Thread-151998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:21.635 [DEBUG] [Thread-151998] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:21.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:20:21.636 [DEBUG] [Thread-151998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:20:21.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:21.691 [DEBUG] [Thread-151998] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:21.691 [DEBUG] [Thread-151998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:21.691 [DEBUG] [Thread-151998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:21.691 [DEBUG] [Thread-151998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:20:21.691 [DEBUG] [Thread-151998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:21.713 [INFO] [Thread-151998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:21.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:20:21.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:20:22.696 [DEBUG] [Thread-151998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:20:22.696 [DEBUG] [Thread-151998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:20:22.744 [DEBUG] [Thread-151998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:20:22.744 [DEBUG] [Thread-151998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:20:22.752 [DEBUG] [Thread-151998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:20:22.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:20:22.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:20:22.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:20:22.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:20:22.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:20:22.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:20:22.787 [DEBUG] [Thread-151998] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:29.348 [DEBUG] [Thread-152000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:20:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:20:32.787 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:20:32.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:20:33.104 [DEBUG] [Thread-152001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:20:33.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 20, 23), 2.57, 84.89, 0.0, 31.23, 8.19, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:20:33.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:20:23
2025-09-29T09:20:33.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:20:33.627 [DEBUG] [Thread-152002] [transport.py] [_log()] starting thread (client mode): 0x2e3620e0
2025-09-29T09:20:33.627 [DEBUG] [Thread-152002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:33.647 [DEBUG] [Thread-152002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:20:33.647 [INFO] [Thread-152002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:20:33.650 [DEBUG] [Thread-152002] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:33.650 [DEBUG] [Thread-152002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] Compression: none
2025-09-29T09:20:33.651 [DEBUG] [Thread-152002] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:33.668 [DEBUG] [Thread-152002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:33.668 [DEBUG] [Thread-152002] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:33.669 [DEBUG] [Thread-152002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:20:33.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:20:33.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:33.671 [DEBUG] [Thread-152002] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:33.671 [DEBUG] [Thread-152002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:33.671 [DEBUG] [Thread-152002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:33.671 [DEBUG] [Thread-152002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:20:33.671 [DEBUG] [Thread-152002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:33.686 [INFO] [Thread-152002] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:33.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:20:34.323 [DEBUG] [Thread-152002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:20:34.324 [DEBUG] [Thread-152002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:20:34.324 [DEBUG] [Thread-152002] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:20:34.364 [DEBUG] [Thread-152002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:20:34.364 [DEBUG] [Thread-152002] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:20:34.367 [DEBUG] [Thread-152002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:20:34.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:20:34.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:20:34.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:20:34.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:20:34.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:20:34.387 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:20:34.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:20:34.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:20:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:20:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.305283 -999.00   +8.70  22.92     79   +5.30 1 2 1 1 1   888    0 3.84 32.59 ----- 26.4 22.9 152.7 31.0 12.3 -17.8 11.9 -20.1 11.2 -21.7 11.9 -20.2
2025-09-29T09:20:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:20:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:20:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.305283
2025-09-29T09:20:34.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:20:34.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:20:34.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:20:34.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:20:34.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:20:34.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:20:23', tmtdew=2.57, humidity=84.89, cloud=0.0, wind=31.23, temperature=8.19, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:19:36.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:20:34.388 [DEBUG] [Thread-152002] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:34.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:20:34.484 [DEBUG] [Thread-152005] [transport.py] [_log()] starting thread (client mode): 0x2b9de8c0
2025-09-29T09:20:34.484 [DEBUG] [Thread-152005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:34.499 [DEBUG] [Thread-152005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:20:34.500 [INFO] [Thread-152005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:20:34.507 [DEBUG] [Thread-152005] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:34.507 [DEBUG] [Thread-152005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:20:34.507 [DEBUG] [Thread-152005] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:34.507 [DEBUG] [Thread-152005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:34.507 [DEBUG] [Thread-152005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:34.507 [DEBUG] [Thread-152005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:34.507 [DEBUG] [Thread-152005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] Compression: none
2025-09-29T09:20:34.508 [DEBUG] [Thread-152005] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:34.567 [DEBUG] [Thread-152005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:34.567 [DEBUG] [Thread-152005] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:34.568 [DEBUG] [Thread-152005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:20:34.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:20:34.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:34.626 [DEBUG] [Thread-152005] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:34.626 [DEBUG] [Thread-152005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:34.626 [DEBUG] [Thread-152005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:34.627 [DEBUG] [Thread-152005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:20:34.627 [DEBUG] [Thread-152005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:34.646 [INFO] [Thread-152005] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:34.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:20:34.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:20:35.620 [DEBUG] [Thread-152005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:20:35.621 [DEBUG] [Thread-152005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:20:35.671 [DEBUG] [Thread-152005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:20:35.671 [DEBUG] [Thread-152005] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:20:35.680 [DEBUG] [Thread-152005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:20:35.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:20:35.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:20:35.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:20:35.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:20:35.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:20:35.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:20:35.715 [DEBUG] [Thread-152005] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:45.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:20:45.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:20:45.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:20:46.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 20, 23), 2.57, 84.89, 0.0, 31.23, 8.19, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:20:46.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:20:23
2025-09-29T09:20:46.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:20:46.554 [DEBUG] [Thread-152007] [transport.py] [_log()] starting thread (client mode): 0x28705b10
2025-09-29T09:20:46.554 [DEBUG] [Thread-152007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:46.574 [DEBUG] [Thread-152007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:20:46.574 [INFO] [Thread-152007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:20:46.577 [DEBUG] [Thread-152007] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:46.578 [DEBUG] [Thread-152007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:46.579 [DEBUG] [Thread-152007] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:46.579 [DEBUG] [Thread-152007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:46.579 [DEBUG] [Thread-152007] [transport.py] [_log()] Compression: none
2025-09-29T09:20:46.579 [DEBUG] [Thread-152007] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:46.598 [DEBUG] [Thread-152007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:46.599 [DEBUG] [Thread-152007] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:46.599 [DEBUG] [Thread-152007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:20:46.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:20:46.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:46.601 [DEBUG] [Thread-152007] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:46.601 [DEBUG] [Thread-152007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:46.601 [DEBUG] [Thread-152007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:46.601 [DEBUG] [Thread-152007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:20:46.601 [DEBUG] [Thread-152007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:46.623 [INFO] [Thread-152007] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:46.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:20:47.273 [DEBUG] [Thread-152007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:20:47.273 [DEBUG] [Thread-152007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:20:47.274 [DEBUG] [Thread-152007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:20:47.314 [DEBUG] [Thread-152007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:20:47.314 [DEBUG] [Thread-152007] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:20:47.317 [DEBUG] [Thread-152007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:20:47.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:20:47.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:20:47.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:20:47.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:20:47.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:20:47.340 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:20:47.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:20:47.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:20:47.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:20:47.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.305978 -999.00   +9.00  19.36     78   +5.40 1 2 1 1 1   888    0 3.99 35.30 ----- 21.1 19.4 143.2 31.4 13.1 -20.8 12.5 -20.1 11.5 -21.7 12.3 -21.1
2025-09-29T09:20:47.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:20:47.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:20:47.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.305978
2025-09-29T09:20:47.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:20:47.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:20:47.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:20:47.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:20:47.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:20:47.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:20:23', tmtdew=2.57, humidity=84.89, cloud=0.0, wind=31.23, temperature=8.19, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:20:36.499', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:20:47.343 [DEBUG] [Thread-152007] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:47.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:20:47.440 [DEBUG] [Thread-152010] [transport.py] [_log()] starting thread (client mode): 0x28704df0
2025-09-29T09:20:47.440 [DEBUG] [Thread-152010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:47.456 [DEBUG] [Thread-152010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:20:47.456 [INFO] [Thread-152010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:20:47.466 [DEBUG] [Thread-152010] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:47.467 [DEBUG] [Thread-152010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:47.468 [DEBUG] [Thread-152010] [transport.py] [_log()] Compression: none
2025-09-29T09:20:47.468 [DEBUG] [Thread-152010] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:47.523 [DEBUG] [Thread-152010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:47.523 [DEBUG] [Thread-152010] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:47.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:20:47.524 [DEBUG] [Thread-152010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:20:47.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:47.582 [DEBUG] [Thread-152010] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:47.583 [DEBUG] [Thread-152010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:47.583 [DEBUG] [Thread-152010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:47.583 [DEBUG] [Thread-152010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:20:47.583 [DEBUG] [Thread-152010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:47.602 [INFO] [Thread-152010] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:47.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:20:47.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:20:48.131 [DEBUG] [Thread-152012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:20:48.590 [DEBUG] [Thread-152010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:20:48.590 [DEBUG] [Thread-152010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:20:48.642 [DEBUG] [Thread-152010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:20:48.643 [DEBUG] [Thread-152010] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:20:48.653 [DEBUG] [Thread-152010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:20:48.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:20:48.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:20:48.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:20:48.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:20:48.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:20:48.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:20:48.692 [DEBUG] [Thread-152010] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:20:58.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:20:58.694 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:20:58.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:20:59.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 20, 54), 2.65, 84.74, 0.0, 26.15, 8.4, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:20:59.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:20:54
2025-09-29T09:20:59.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:20:59.558 [DEBUG] [Thread-152013] [transport.py] [_log()] starting thread (client mode): 0x2b91fdf0
2025-09-29T09:20:59.558 [DEBUG] [Thread-152013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:20:59.580 [DEBUG] [Thread-152013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:20:59.580 [INFO] [Thread-152013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:20:59.583 [DEBUG] [Thread-152013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] client lang: <none>
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] server lang: <none>
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] kex follows: False
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] Compression: none
2025-09-29T09:20:59.584 [DEBUG] [Thread-152013] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:20:59.603 [DEBUG] [Thread-152013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:20:59.603 [DEBUG] [Thread-152013] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:20:59.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:20:59.604 [DEBUG] [Thread-152013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:20:59.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:20:59.606 [DEBUG] [Thread-152013] [transport.py] [_log()] userauth is OK
2025-09-29T09:20:59.606 [DEBUG] [Thread-152013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:20:59.607 [DEBUG] [Thread-152013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:20:59.607 [DEBUG] [Thread-152013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:20:59.607 [DEBUG] [Thread-152013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:20:59.640 [INFO] [Thread-152013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:20:59.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:00.295 [DEBUG] [Thread-152013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:00.295 [DEBUG] [Thread-152013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:00.295 [DEBUG] [Thread-152013] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:21:00.336 [DEBUG] [Thread-152013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:00.336 [DEBUG] [Thread-152013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:00.339 [DEBUG] [Thread-152013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:00.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:00.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:21:00.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:21:00.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:21:00.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:00.361 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:21:00.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:00.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:21:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.305978 -999.00   +9.00  19.36     78   +5.40 1 2 1 1 1   888    0 3.99 35.30 ----- 21.1 19.4 143.2 31.4 13.1 -20.8 12.5 -20.1 11.5 -21.7 12.3 -21.1
2025-09-29T09:21:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:21:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:21:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.305978
2025-09-29T09:21:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:21:00.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:21:00.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:21:00.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:21:00.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:21:00.363 [DEBUG] [Thread-152013] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:00.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:20:54', tmtdew=2.65, humidity=84.74, cloud=0.0, wind=26.15, temperature=8.4, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:20:36.499', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:21:00.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:21:00.457 [DEBUG] [Thread-152016] [transport.py] [_log()] starting thread (client mode): 0x2e349930
2025-09-29T09:21:00.457 [DEBUG] [Thread-152016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:00.472 [DEBUG] [Thread-152016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:21:00.472 [INFO] [Thread-152016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:00.479 [DEBUG] [Thread-152016] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] Compression: none
2025-09-29T09:21:00.480 [DEBUG] [Thread-152016] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:00.537 [DEBUG] [Thread-152016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:00.538 [DEBUG] [Thread-152016] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:00.538 [DEBUG] [Thread-152016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:21:00.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:21:00.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:00.595 [DEBUG] [Thread-152016] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:00.595 [DEBUG] [Thread-152016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:00.595 [DEBUG] [Thread-152016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:00.595 [DEBUG] [Thread-152016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:21:00.595 [DEBUG] [Thread-152016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:00.614 [INFO] [Thread-152016] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:00.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:21:00.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:01.559 [DEBUG] [Thread-152016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:01.560 [DEBUG] [Thread-152016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:01.607 [DEBUG] [Thread-152016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:01.607 [DEBUG] [Thread-152016] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:01.616 [DEBUG] [Thread-152016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:01.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:01.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:21:01.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:21:01.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:01.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:01.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:01.650 [DEBUG] [Thread-152016] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:03.176 [DEBUG] [Thread-152018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:21:11.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:21:11.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:21:11.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:21:12.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 20, 54), 2.65, 84.74, 0.0, 26.15, 8.4, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:21:12.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:20:54
2025-09-29T09:21:12.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:21:12.505 [DEBUG] [Thread-152019] [transport.py] [_log()] starting thread (client mode): 0x2b9bab30
2025-09-29T09:21:12.505 [DEBUG] [Thread-152019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:12.525 [DEBUG] [Thread-152019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:21:12.525 [INFO] [Thread-152019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:12.528 [DEBUG] [Thread-152019] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:12.529 [DEBUG] [Thread-152019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:12.529 [DEBUG] [Thread-152019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:12.529 [DEBUG] [Thread-152019] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:12.529 [DEBUG] [Thread-152019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:12.529 [DEBUG] [Thread-152019] [transport.py] [_log()] Compression: none
2025-09-29T09:21:12.529 [DEBUG] [Thread-152019] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:12.538 [DEBUG] [Thread-152019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:12.538 [DEBUG] [Thread-152019] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:12.539 [DEBUG] [Thread-152019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:21:12.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:21:12.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:12.540 [DEBUG] [Thread-152019] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:12.540 [DEBUG] [Thread-152019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:12.540 [DEBUG] [Thread-152019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:12.540 [DEBUG] [Thread-152019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:21:12.540 [DEBUG] [Thread-152019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:12.554 [INFO] [Thread-152019] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:12.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:13.201 [DEBUG] [Thread-152019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:13.201 [DEBUG] [Thread-152019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:13.201 [DEBUG] [Thread-152019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:21:13.241 [DEBUG] [Thread-152019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:13.242 [DEBUG] [Thread-152019] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:13.244 [DEBUG] [Thread-152019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:13.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:13.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:21:13.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:21:13.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:21:13.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:13.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:21:13.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:13.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:13.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:21:13.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.305978 -999.00   +9.00  19.36     78   +5.40 1 2 1 1 1   888    0 3.99 35.30 ----- 21.1 19.4 143.2 31.4 13.1 -20.8 12.5 -20.1 11.5 -21.7 12.3 -21.1
2025-09-29T09:21:13.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:21:13.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:21:13.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.305978
2025-09-29T09:21:13.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:21:13.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:21:13.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:21:13.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:21:13.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:21:13.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:20:54', tmtdew=2.65, humidity=84.74, cloud=0.0, wind=26.15, temperature=8.4, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:20:36.499', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:21:13.271 [DEBUG] [Thread-152019] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:13.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:21:13.364 [DEBUG] [Thread-152022] [transport.py] [_log()] starting thread (client mode): 0x2b9cd570
2025-09-29T09:21:13.364 [DEBUG] [Thread-152022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:13.379 [DEBUG] [Thread-152022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:21:13.379 [INFO] [Thread-152022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:21:13.386 [DEBUG] [Thread-152022] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:13.386 [DEBUG] [Thread-152022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:21:13.386 [DEBUG] [Thread-152022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:13.386 [DEBUG] [Thread-152022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:13.386 [DEBUG] [Thread-152022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:13.387 [DEBUG] [Thread-152022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:13.387 [DEBUG] [Thread-152022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:13.387 [DEBUG] [Thread-152022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:13.387 [DEBUG] [Thread-152022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:13.387 [DEBUG] [Thread-152022] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:13.387 [DEBUG] [Thread-152022] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:13.387 [DEBUG] [Thread-152022] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:13.395 [DEBUG] [Thread-152022] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:13.396 [DEBUG] [Thread-152022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:13.396 [DEBUG] [Thread-152022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:13.396 [DEBUG] [Thread-152022] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:13.396 [DEBUG] [Thread-152022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:13.396 [DEBUG] [Thread-152022] [transport.py] [_log()] Compression: none
2025-09-29T09:21:13.396 [DEBUG] [Thread-152022] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:13.442 [DEBUG] [Thread-152022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:13.443 [DEBUG] [Thread-152022] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:13.443 [DEBUG] [Thread-152022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:21:13.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:21:13.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:13.500 [DEBUG] [Thread-152022] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:13.500 [DEBUG] [Thread-152022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:13.500 [DEBUG] [Thread-152022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:13.500 [DEBUG] [Thread-152022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:21:13.500 [DEBUG] [Thread-152022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:13.520 [INFO] [Thread-152022] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:13.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:21:13.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:14.485 [DEBUG] [Thread-152022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:14.486 [DEBUG] [Thread-152022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:14.534 [DEBUG] [Thread-152022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:14.534 [DEBUG] [Thread-152022] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:14.544 [DEBUG] [Thread-152022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:14.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:14.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:21:14.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:21:14.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:14.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:14.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:14.579 [DEBUG] [Thread-152022] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:18.227 [DEBUG] [Thread-152024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:21:20.550 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:21:20.551 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:21:24.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:21:24.582 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:21:24.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:21:25.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 20, 54), 2.65, 84.74, 0.0, 26.15, 8.4, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:21:25.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:20:54
2025-09-29T09:21:25.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:21:25.415 [DEBUG] [Thread-152025] [transport.py] [_log()] starting thread (client mode): 0x28707700
2025-09-29T09:21:25.415 [DEBUG] [Thread-152025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:25.434 [DEBUG] [Thread-152025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:21:25.434 [INFO] [Thread-152025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:21:25.437 [DEBUG] [Thread-152025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:25.437 [DEBUG] [Thread-152025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:21:25.437 [DEBUG] [Thread-152025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:25.437 [DEBUG] [Thread-152025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] Compression: none
2025-09-29T09:21:25.438 [DEBUG] [Thread-152025] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:25.454 [DEBUG] [Thread-152025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:25.455 [DEBUG] [Thread-152025] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:25.455 [DEBUG] [Thread-152025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:21:25.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:21:25.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:25.457 [DEBUG] [Thread-152025] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:25.457 [DEBUG] [Thread-152025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:25.458 [DEBUG] [Thread-152025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:25.458 [DEBUG] [Thread-152025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:21:25.458 [DEBUG] [Thread-152025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:25.481 [INFO] [Thread-152025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:25.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:26.100 [DEBUG] [Thread-152025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:26.101 [DEBUG] [Thread-152025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:26.101 [DEBUG] [Thread-152025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:21:26.141 [DEBUG] [Thread-152025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:26.141 [DEBUG] [Thread-152025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:26.145 [DEBUG] [Thread-152025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:26.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:26.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:21:26.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:21:26.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:21:26.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:26.165 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:21:26.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:26.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:21:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.306325 -999.00   +9.10  25.92     77   +5.40 1 1 1 1 1   888    0 4.10 39.31 ----- 20.1 25.9 146.6 31.6 13.4 -20.1 12.4 -22.6 11.5 -23.7 12.4 -24.0
2025-09-29T09:21:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:21:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:21:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.306325
2025-09-29T09:21:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:21:26.166 [DEBUG] [Thread-152025] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:26.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:21:26.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:21:26.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:21:26.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:21:26.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:20:54', tmtdew=2.65, humidity=84.74, cloud=0.0, wind=26.15, temperature=8.4, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:21:06.480', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:21:26.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:21:26.276 [DEBUG] [Thread-152028] [transport.py] [_log()] starting thread (client mode): 0x287077c0
2025-09-29T09:21:26.276 [DEBUG] [Thread-152028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:26.290 [DEBUG] [Thread-152028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:21:26.290 [INFO] [Thread-152028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:21:26.297 [DEBUG] [Thread-152028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] Compression: none
2025-09-29T09:21:26.298 [DEBUG] [Thread-152028] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:26.359 [DEBUG] [Thread-152028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:26.359 [DEBUG] [Thread-152028] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:26.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:21:26.360 [DEBUG] [Thread-152028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:21:26.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:26.415 [DEBUG] [Thread-152028] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:26.416 [DEBUG] [Thread-152028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:26.416 [DEBUG] [Thread-152028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:26.416 [DEBUG] [Thread-152028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:21:26.416 [DEBUG] [Thread-152028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:26.434 [INFO] [Thread-152028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:26.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:21:26.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:27.429 [DEBUG] [Thread-152028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:27.429 [DEBUG] [Thread-152028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:27.478 [DEBUG] [Thread-152028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:27.478 [DEBUG] [Thread-152028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:27.486 [DEBUG] [Thread-152028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:27.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:27.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:21:27.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:21:27.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:27.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:27.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:27.523 [DEBUG] [Thread-152028] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:29.398 [DEBUG] [Thread-152030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:21:33.256 [DEBUG] [Thread-152031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:21:37.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:21:37.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:21:37.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:21:38.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 21, 26), 2.58, 85.08, 0.0, 23.8, 8.45, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:21:38.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:21:26
2025-09-29T09:21:38.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:21:38.358 [DEBUG] [Thread-152032] [transport.py] [_log()] starting thread (client mode): 0x28706c50
2025-09-29T09:21:38.358 [DEBUG] [Thread-152032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:38.380 [DEBUG] [Thread-152032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:21:38.380 [INFO] [Thread-152032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:21:38.383 [DEBUG] [Thread-152032] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:38.383 [DEBUG] [Thread-152032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:21:38.383 [DEBUG] [Thread-152032] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] Compression: none
2025-09-29T09:21:38.384 [DEBUG] [Thread-152032] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:38.401 [DEBUG] [Thread-152032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:38.402 [DEBUG] [Thread-152032] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:38.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:21:38.403 [DEBUG] [Thread-152032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:21:38.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:38.405 [DEBUG] [Thread-152032] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:38.405 [DEBUG] [Thread-152032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:38.405 [DEBUG] [Thread-152032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:38.405 [DEBUG] [Thread-152032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:21:38.405 [DEBUG] [Thread-152032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:38.428 [INFO] [Thread-152032] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:38.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:39.042 [DEBUG] [Thread-152032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:39.042 [DEBUG] [Thread-152032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:39.043 [DEBUG] [Thread-152032] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:21:39.083 [DEBUG] [Thread-152032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:39.084 [DEBUG] [Thread-152032] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:39.087 [DEBUG] [Thread-152032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:39.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:39.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:21:39.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:21:39.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:21:39.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:39.110 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:21:39.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:39.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:39.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:21:39.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.306325 -999.00   +9.10  25.92     77   +5.40 1 1 1 1 1   888    0 4.10 39.31 ----- 20.1 25.9 146.6 31.6 13.4 -20.1 12.4 -22.6 11.5 -23.7 12.4 -24.0
2025-09-29T09:21:39.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:21:39.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:21:39.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.306325
2025-09-29T09:21:39.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:21:39.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:21:39.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:21:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:21:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:21:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:21:26', tmtdew=2.58, humidity=85.08, cloud=0.0, wind=23.8, temperature=8.45, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:21:06.480', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:21:39.113 [DEBUG] [Thread-152032] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:39.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:21:39.209 [DEBUG] [Thread-152035] [transport.py] [_log()] starting thread (client mode): 0x2b9cceb0
2025-09-29T09:21:39.209 [DEBUG] [Thread-152035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:39.224 [DEBUG] [Thread-152035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:21:39.225 [INFO] [Thread-152035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:21:39.232 [DEBUG] [Thread-152035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:39.232 [DEBUG] [Thread-152035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:21:39.232 [DEBUG] [Thread-152035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:39.233 [DEBUG] [Thread-152035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:39.234 [DEBUG] [Thread-152035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:39.234 [DEBUG] [Thread-152035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:39.234 [DEBUG] [Thread-152035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:39.234 [DEBUG] [Thread-152035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:39.234 [DEBUG] [Thread-152035] [transport.py] [_log()] Compression: none
2025-09-29T09:21:39.234 [DEBUG] [Thread-152035] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:39.292 [DEBUG] [Thread-152035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:39.292 [DEBUG] [Thread-152035] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:39.293 [DEBUG] [Thread-152035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:21:39.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:21:39.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:39.347 [DEBUG] [Thread-152035] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:39.348 [DEBUG] [Thread-152035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:39.348 [DEBUG] [Thread-152035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:39.348 [DEBUG] [Thread-152035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:21:39.348 [DEBUG] [Thread-152035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:39.367 [INFO] [Thread-152035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:39.367 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:21:39.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:40.376 [DEBUG] [Thread-152035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:40.376 [DEBUG] [Thread-152035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:40.424 [DEBUG] [Thread-152035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:40.424 [DEBUG] [Thread-152035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:40.433 [DEBUG] [Thread-152035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:40.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:40.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:21:40.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:21:40.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:40.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:40.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:40.469 [DEBUG] [Thread-152035] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:48.303 [DEBUG] [Thread-152037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:21:50.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:21:50.472 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:21:50.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:21:51.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 21, 26), 2.58, 85.08, 0.0, 23.8, 8.45, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:21:51.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:21:26
2025-09-29T09:21:51.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:21:51.298 [DEBUG] [Thread-152038] [transport.py] [_log()] starting thread (client mode): 0x2b9cfb20
2025-09-29T09:21:51.298 [DEBUG] [Thread-152038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:51.318 [DEBUG] [Thread-152038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:21:51.318 [INFO] [Thread-152038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:21:51.321 [DEBUG] [Thread-152038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:51.321 [DEBUG] [Thread-152038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:51.322 [DEBUG] [Thread-152038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:51.323 [DEBUG] [Thread-152038] [transport.py] [_log()] Compression: none
2025-09-29T09:21:51.323 [DEBUG] [Thread-152038] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:51.336 [DEBUG] [Thread-152038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:51.336 [DEBUG] [Thread-152038] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:51.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:21:51.337 [DEBUG] [Thread-152038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:21:51.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:51.339 [DEBUG] [Thread-152038] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:51.340 [DEBUG] [Thread-152038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:51.340 [DEBUG] [Thread-152038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:51.340 [DEBUG] [Thread-152038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:21:51.340 [DEBUG] [Thread-152038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:51.364 [INFO] [Thread-152038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:51.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:51.958 [DEBUG] [Thread-152038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:51.958 [DEBUG] [Thread-152038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:51.959 [DEBUG] [Thread-152038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:21:51.999 [DEBUG] [Thread-152038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:51.999 [DEBUG] [Thread-152038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:52.005 [DEBUG] [Thread-152038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:52.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:52.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:21:52.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:21:52.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:21:52.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:52.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:21:52.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:52.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:52.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:21:52.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.306672 -999.00   +9.30  19.07     77   +5.60 1 2 1 1 1   888    0 4.22 42.20 ----- 21.6 19.1 159.6 25.6 13.2 -22.1 12.6 -20.0 11.7 -21.7 12.4 -20.4
2025-09-29T09:21:52.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:21:52.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:21:52.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.306672
2025-09-29T09:21:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:21:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:21:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:21:52.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:21:52.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:21:52.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:21:26', tmtdew=2.58, humidity=85.08, cloud=0.0, wind=23.8, temperature=8.45, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:21:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:21:52.027 [DEBUG] [Thread-152038] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:21:52.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:21:52.121 [DEBUG] [Thread-152041] [transport.py] [_log()] starting thread (client mode): 0x28705810
2025-09-29T09:21:52.121 [DEBUG] [Thread-152041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:21:52.136 [DEBUG] [Thread-152041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:21:52.136 [INFO] [Thread-152041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] client lang: <none>
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] server lang: <none>
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] kex follows: False
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:21:52.144 [DEBUG] [Thread-152041] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:21:52.145 [DEBUG] [Thread-152041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:21:52.145 [DEBUG] [Thread-152041] [transport.py] [_log()] Compression: none
2025-09-29T09:21:52.145 [DEBUG] [Thread-152041] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:21:52.203 [DEBUG] [Thread-152041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:21:52.204 [DEBUG] [Thread-152041] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:21:52.204 [DEBUG] [Thread-152041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:21:52.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:21:52.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:21:52.260 [DEBUG] [Thread-152041] [transport.py] [_log()] userauth is OK
2025-09-29T09:21:52.260 [DEBUG] [Thread-152041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:21:52.260 [DEBUG] [Thread-152041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:21:52.260 [DEBUG] [Thread-152041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:21:52.260 [DEBUG] [Thread-152041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:21:52.280 [INFO] [Thread-152041] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:21:52.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:21:52.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:21:53.314 [DEBUG] [Thread-152041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:21:53.314 [DEBUG] [Thread-152041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:21:53.362 [DEBUG] [Thread-152041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:21:53.362 [DEBUG] [Thread-152041] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:21:53.371 [DEBUG] [Thread-152041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:21:53.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:21:53.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:21:53.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:21:53.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:21:53.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:21:53.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:21:53.406 [DEBUG] [Thread-152041] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:03.337 [DEBUG] [Thread-152043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:22:03.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:22:03.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:22:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:22:04.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 21, 58), 2.62, 84.63, 0.0, 26.24, 8.75, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:22:04.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:21:58
2025-09-29T09:22:04.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:22:04.255 [DEBUG] [Thread-152044] [transport.py] [_log()] starting thread (client mode): 0x28706b60
2025-09-29T09:22:04.256 [DEBUG] [Thread-152044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:04.277 [DEBUG] [Thread-152044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:22:04.278 [INFO] [Thread-152044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:22:04.279 [DEBUG] [Thread-152044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:04.279 [DEBUG] [Thread-152044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] Compression: none
2025-09-29T09:22:04.280 [DEBUG] [Thread-152044] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:04.288 [DEBUG] [Thread-152044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:04.288 [DEBUG] [Thread-152044] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:04.289 [DEBUG] [Thread-152044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:22:04.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:22:04.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:04.291 [DEBUG] [Thread-152044] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:04.291 [DEBUG] [Thread-152044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:04.291 [DEBUG] [Thread-152044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:04.291 [DEBUG] [Thread-152044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:22:04.291 [DEBUG] [Thread-152044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:04.315 [INFO] [Thread-152044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:04.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:04.958 [DEBUG] [Thread-152044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:04.958 [DEBUG] [Thread-152044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:04.959 [DEBUG] [Thread-152044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:22:04.999 [DEBUG] [Thread-152044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:05.000 [DEBUG] [Thread-152044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:05.003 [DEBUG] [Thread-152044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:05.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:05.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:22:05.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:22:05.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:22:05.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:05.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:22:05.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:05.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:22:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.306672 -999.00   +9.30  19.07     77   +5.60 1 2 1 1 1   888    0 4.22 42.20 ----- 21.6 19.1 159.6 25.6 13.2 -22.1 12.6 -20.0 11.7 -21.7 12.4 -20.4
2025-09-29T09:22:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:22:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:22:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.306672
2025-09-29T09:22:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:22:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:22:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:22:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:22:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:22:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:21:58', tmtdew=2.62, humidity=84.63, cloud=0.0, wind=26.24, temperature=8.75, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:21:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:22:05.028 [DEBUG] [Thread-152044] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:05.112 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:22:05.124 [DEBUG] [Thread-152047] [transport.py] [_log()] starting thread (client mode): 0x287051b0
2025-09-29T09:22:05.124 [DEBUG] [Thread-152047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:05.138 [DEBUG] [Thread-152047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:22:05.138 [INFO] [Thread-152047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:05.146 [DEBUG] [Thread-152047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:05.147 [DEBUG] [Thread-152047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:05.147 [DEBUG] [Thread-152047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:05.147 [DEBUG] [Thread-152047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:05.147 [DEBUG] [Thread-152047] [transport.py] [_log()] Compression: none
2025-09-29T09:22:05.147 [DEBUG] [Thread-152047] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:05.203 [DEBUG] [Thread-152047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:05.203 [DEBUG] [Thread-152047] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:05.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:22:05.204 [DEBUG] [Thread-152047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:22:05.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:05.260 [DEBUG] [Thread-152047] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:05.261 [DEBUG] [Thread-152047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:05.261 [DEBUG] [Thread-152047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:05.261 [DEBUG] [Thread-152047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:22:05.261 [DEBUG] [Thread-152047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:05.283 [INFO] [Thread-152047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:05.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:22:05.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:06.300 [DEBUG] [Thread-152047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:06.300 [DEBUG] [Thread-152047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:06.348 [DEBUG] [Thread-152047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:06.348 [DEBUG] [Thread-152047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:06.357 [DEBUG] [Thread-152047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:06.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:06.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:22:06.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:22:06.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:06.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:06.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:06.396 [DEBUG] [Thread-152047] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:16.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:22:16.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:22:16.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:22:16.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 21, 58), 2.62, 84.63, 0.0, 26.24, 8.75, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:22:16.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:21:58
2025-09-29T09:22:17.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:22:17.235 [DEBUG] [Thread-152049] [transport.py] [_log()] starting thread (client mode): 0x28706740
2025-09-29T09:22:17.236 [DEBUG] [Thread-152049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:17.250 [DEBUG] [Thread-152049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:22:17.250 [INFO] [Thread-152049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:17.254 [DEBUG] [Thread-152049] [transport.py] [_log()] Compression: none
2025-09-29T09:22:17.255 [DEBUG] [Thread-152049] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:17.271 [DEBUG] [Thread-152049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:17.272 [DEBUG] [Thread-152049] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:17.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:22:17.273 [DEBUG] [Thread-152049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:22:17.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:17.275 [DEBUG] [Thread-152049] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:17.275 [DEBUG] [Thread-152049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:17.275 [DEBUG] [Thread-152049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:17.275 [DEBUG] [Thread-152049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:22:17.275 [DEBUG] [Thread-152049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:17.299 [INFO] [Thread-152049] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:17.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:17.956 [DEBUG] [Thread-152049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:17.956 [DEBUG] [Thread-152049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:17.956 [DEBUG] [Thread-152049] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:22:17.997 [DEBUG] [Thread-152049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:17.997 [DEBUG] [Thread-152049] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:18.000 [DEBUG] [Thread-152049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:18.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:18.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:22:18.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:22:18.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:22:18.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:18.023 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:22:18.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:18.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:22:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.306672 -999.00   +9.30  19.07     77   +5.60 1 2 1 1 1   888    0 4.22 42.20 ----- 21.6 19.1 159.6 25.6 13.2 -22.1 12.6 -20.0 11.7 -21.7 12.4 -20.4
2025-09-29T09:22:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:22:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:22:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.306672
2025-09-29T09:22:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:22:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:22:18.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:22:18.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:22:18.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:22:18.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:21:58', tmtdew=2.62, humidity=84.63, cloud=0.0, wind=26.24, temperature=8.75, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:21:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:22:18.026 [DEBUG] [Thread-152049] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:18.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:22:18.121 [DEBUG] [Thread-152052] [transport.py] [_log()] starting thread (client mode): 0x2b9defe0
2025-09-29T09:22:18.121 [DEBUG] [Thread-152052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:18.136 [DEBUG] [Thread-152052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:22:18.136 [INFO] [Thread-152052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:22:18.143 [DEBUG] [Thread-152052] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] Compression: none
2025-09-29T09:22:18.144 [DEBUG] [Thread-152052] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:18.206 [DEBUG] [Thread-152052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:18.206 [DEBUG] [Thread-152052] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:18.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:22:18.207 [DEBUG] [Thread-152052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:22:18.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:18.266 [DEBUG] [Thread-152052] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:18.267 [DEBUG] [Thread-152052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:18.267 [DEBUG] [Thread-152052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:18.267 [DEBUG] [Thread-152052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:22:18.267 [DEBUG] [Thread-152052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:18.287 [INFO] [Thread-152052] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:18.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:22:18.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:18.375 [DEBUG] [Thread-152054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:22:19.270 [DEBUG] [Thread-152052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:19.270 [DEBUG] [Thread-152052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:19.319 [DEBUG] [Thread-152052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:19.319 [DEBUG] [Thread-152052] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:19.328 [DEBUG] [Thread-152052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:19.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:19.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:22:19.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:22:19.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:19.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:19.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:19.372 [DEBUG] [Thread-152052] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:20.693 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:22:20.694 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:22:29.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:22:29.374 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:22:29.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:22:29.444 [DEBUG] [Thread-152055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:22:29.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 21, 58), 2.62, 84.63, 0.0, 26.24, 8.75, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:22:29.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:21:58
2025-09-29T09:22:30.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:22:30.210 [DEBUG] [Thread-152056] [transport.py] [_log()] starting thread (client mode): 0x2b9cc9d0
2025-09-29T09:22:30.210 [DEBUG] [Thread-152056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:30.230 [DEBUG] [Thread-152056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:22:30.230 [INFO] [Thread-152056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] Compression: none
2025-09-29T09:22:30.234 [DEBUG] [Thread-152056] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:30.252 [DEBUG] [Thread-152056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:30.252 [DEBUG] [Thread-152056] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:30.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:22:30.253 [DEBUG] [Thread-152056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:22:30.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:30.256 [DEBUG] [Thread-152056] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:30.256 [DEBUG] [Thread-152056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:30.256 [DEBUG] [Thread-152056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:30.256 [DEBUG] [Thread-152056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:22:30.256 [DEBUG] [Thread-152056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:30.280 [INFO] [Thread-152056] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:30.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:30.939 [DEBUG] [Thread-152056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:30.939 [DEBUG] [Thread-152056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:30.940 [DEBUG] [Thread-152056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:22:30.980 [DEBUG] [Thread-152056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:30.980 [DEBUG] [Thread-152056] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:30.983 [DEBUG] [Thread-152056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:30.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:30.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:22:30.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:22:31.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:22:31.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:31.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:22:31.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:31.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:22:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.307019 -999.00   +9.10  20.02     76   +5.30 1 2 1 1 1   888    0 4.25 43.35 ----- 23.9 20.0 155.2 29.3 13.4 -20.1 12.5 -16.4 11.5 -19.5 12.4 -21.8
2025-09-29T09:22:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:22:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:22:31.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.307019
2025-09-29T09:22:31.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:22:31.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:22:31.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:22:31.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:22:31.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:22:31.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:21:58', tmtdew=2.62, humidity=84.63, cloud=0.0, wind=26.24, temperature=8.75, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:22:06.442', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:22:31.010 [DEBUG] [Thread-152056] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:31.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:22:31.107 [DEBUG] [Thread-152059] [transport.py] [_log()] starting thread (client mode): 0x2b9df610
2025-09-29T09:22:31.108 [DEBUG] [Thread-152059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:31.122 [DEBUG] [Thread-152059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:22:31.123 [INFO] [Thread-152059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:22:31.131 [DEBUG] [Thread-152059] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:31.131 [DEBUG] [Thread-152059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:22:31.131 [DEBUG] [Thread-152059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:31.131 [DEBUG] [Thread-152059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:31.131 [DEBUG] [Thread-152059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:31.131 [DEBUG] [Thread-152059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:31.131 [DEBUG] [Thread-152059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:31.131 [DEBUG] [Thread-152059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:31.132 [DEBUG] [Thread-152059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:31.132 [DEBUG] [Thread-152059] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:31.132 [DEBUG] [Thread-152059] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:31.132 [DEBUG] [Thread-152059] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:31.132 [DEBUG] [Thread-152059] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:31.132 [DEBUG] [Thread-152059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:31.132 [DEBUG] [Thread-152059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:31.132 [DEBUG] [Thread-152059] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:31.133 [DEBUG] [Thread-152059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:31.133 [DEBUG] [Thread-152059] [transport.py] [_log()] Compression: none
2025-09-29T09:22:31.133 [DEBUG] [Thread-152059] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:31.188 [DEBUG] [Thread-152059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:31.188 [DEBUG] [Thread-152059] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:31.189 [DEBUG] [Thread-152059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:22:31.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:22:31.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:31.244 [DEBUG] [Thread-152059] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:31.244 [DEBUG] [Thread-152059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:31.245 [DEBUG] [Thread-152059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:31.245 [DEBUG] [Thread-152059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:22:31.245 [DEBUG] [Thread-152059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:31.265 [INFO] [Thread-152059] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:31.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:22:31.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:32.268 [DEBUG] [Thread-152059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:32.268 [DEBUG] [Thread-152059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:32.316 [DEBUG] [Thread-152059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:32.316 [DEBUG] [Thread-152059] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:32.324 [DEBUG] [Thread-152059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:32.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:32.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:22:32.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:22:32.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:32.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:32.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:32.356 [DEBUG] [Thread-152059] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:33.418 [DEBUG] [Thread-152061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:22:42.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:22:42.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:22:42.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:22:42.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 22, 31), 2.71, 84.2, 0.0, 26.29, 8.64, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:22:42.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:22:31
2025-09-29T09:22:43.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:22:43.193 [DEBUG] [Thread-152062] [transport.py] [_log()] starting thread (client mode): 0x28705f90
2025-09-29T09:22:43.193 [DEBUG] [Thread-152062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:43.212 [DEBUG] [Thread-152062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:22:43.213 [INFO] [Thread-152062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:22:43.216 [DEBUG] [Thread-152062] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:43.216 [DEBUG] [Thread-152062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:22:43.216 [DEBUG] [Thread-152062] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:43.216 [DEBUG] [Thread-152062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] Compression: none
2025-09-29T09:22:43.217 [DEBUG] [Thread-152062] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:43.234 [DEBUG] [Thread-152062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:43.234 [DEBUG] [Thread-152062] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:43.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:22:43.236 [DEBUG] [Thread-152062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:22:43.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:43.237 [DEBUG] [Thread-152062] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:43.238 [DEBUG] [Thread-152062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:43.238 [DEBUG] [Thread-152062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:43.238 [DEBUG] [Thread-152062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:22:43.238 [DEBUG] [Thread-152062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:43.254 [INFO] [Thread-152062] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:43.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:43.876 [DEBUG] [Thread-152062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:43.876 [DEBUG] [Thread-152062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:43.877 [DEBUG] [Thread-152062] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:22:43.917 [DEBUG] [Thread-152062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:43.917 [DEBUG] [Thread-152062] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:43.920 [DEBUG] [Thread-152062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:43.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:43.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:22:43.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:22:43.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:22:43.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:43.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:22:43.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:43.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:43.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:22:43.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.307019 -999.00   +9.10  20.02     76   +5.30 1 2 1 1 1   888    0 4.25 43.35 ----- 23.9 20.0 155.2 29.3 13.4 -20.1 12.5 -16.4 11.5 -19.5 12.4 -21.8
2025-09-29T09:22:43.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:22:43.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:22:43.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.307019
2025-09-29T09:22:43.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:22:43.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:22:43.944 [DEBUG] [Thread-152062] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:43.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:22:43.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:22:43.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:22:43.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:22:31', tmtdew=2.71, humidity=84.2, cloud=0.0, wind=26.29, temperature=8.64, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:22:06.442', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:22:44.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:22:44.042 [DEBUG] [Thread-152065] [transport.py] [_log()] starting thread (client mode): 0x2e3620e0
2025-09-29T09:22:44.042 [DEBUG] [Thread-152065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:44.056 [DEBUG] [Thread-152065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:22:44.057 [INFO] [Thread-152065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:22:44.064 [DEBUG] [Thread-152065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:44.065 [DEBUG] [Thread-152065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:44.066 [DEBUG] [Thread-152065] [transport.py] [_log()] Compression: none
2025-09-29T09:22:44.066 [DEBUG] [Thread-152065] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:44.124 [DEBUG] [Thread-152065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:44.124 [DEBUG] [Thread-152065] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:44.124 [DEBUG] [Thread-152065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:22:44.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:22:44.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:44.180 [DEBUG] [Thread-152065] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:44.180 [DEBUG] [Thread-152065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:44.180 [DEBUG] [Thread-152065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:44.180 [DEBUG] [Thread-152065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:22:44.181 [DEBUG] [Thread-152065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:44.199 [INFO] [Thread-152065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:44.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:22:44.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:45.203 [DEBUG] [Thread-152065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:45.203 [DEBUG] [Thread-152065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:45.252 [DEBUG] [Thread-152065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:45.252 [DEBUG] [Thread-152065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:45.261 [DEBUG] [Thread-152065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:45.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:45.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:22:45.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:22:45.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:45.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:45.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:45.298 [DEBUG] [Thread-152065] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:48.463 [DEBUG] [Thread-152067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:22:55.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:22:55.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:22:55.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:22:55.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 22, 31), 2.71, 84.2, 0.0, 26.29, 8.64, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:22:55.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:22:31
2025-09-29T09:22:56.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:22:56.145 [DEBUG] [Thread-152068] [transport.py] [_log()] starting thread (client mode): 0x28707400
2025-09-29T09:22:56.145 [DEBUG] [Thread-152068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:56.166 [DEBUG] [Thread-152068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:22:56.166 [INFO] [Thread-152068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:22:56.169 [DEBUG] [Thread-152068] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] Compression: none
2025-09-29T09:22:56.170 [DEBUG] [Thread-152068] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:56.186 [DEBUG] [Thread-152068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:56.186 [DEBUG] [Thread-152068] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:56.187 [DEBUG] [Thread-152068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:22:56.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:22:56.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:56.189 [DEBUG] [Thread-152068] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:56.189 [DEBUG] [Thread-152068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:56.189 [DEBUG] [Thread-152068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:56.189 [DEBUG] [Thread-152068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:22:56.189 [DEBUG] [Thread-152068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:56.212 [INFO] [Thread-152068] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:56.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:56.852 [DEBUG] [Thread-152068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:56.852 [DEBUG] [Thread-152068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:56.852 [DEBUG] [Thread-152068] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:22:56.893 [DEBUG] [Thread-152068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:56.893 [DEBUG] [Thread-152068] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:56.895 [DEBUG] [Thread-152068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:56.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:56.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:22:56.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:22:56.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:22:56.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:56.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:22:56.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.307019 -999.00   +9.10  20.02     76   +5.30 1 2 1 1 1   888    0 4.25 43.35 ----- 23.9 20.0 155.2 29.3 13.4 -20.1 12.5 -16.4 11.5 -19.5 12.4 -21.8
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.307019
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:22:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:22:56.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:22:56.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:22:56.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:22:31', tmtdew=2.71, humidity=84.2, cloud=0.0, wind=26.29, temperature=8.64, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:22:06.442', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:22:56.912 [DEBUG] [Thread-152068] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:22:56.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:22:56.994 [DEBUG] [Thread-152071] [transport.py] [_log()] starting thread (client mode): 0x287060b0
2025-09-29T09:22:56.994 [DEBUG] [Thread-152071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:22:57.009 [DEBUG] [Thread-152071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:22:57.009 [INFO] [Thread-152071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:22:57.016 [DEBUG] [Thread-152071] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] client lang: <none>
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] server lang: <none>
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] kex follows: False
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] Compression: none
2025-09-29T09:22:57.017 [DEBUG] [Thread-152071] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:22:57.076 [DEBUG] [Thread-152071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:22:57.076 [DEBUG] [Thread-152071] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:22:57.077 [DEBUG] [Thread-152071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:22:57.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:22:57.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:22:57.133 [DEBUG] [Thread-152071] [transport.py] [_log()] userauth is OK
2025-09-29T09:22:57.133 [DEBUG] [Thread-152071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:22:57.133 [DEBUG] [Thread-152071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:22:57.134 [DEBUG] [Thread-152071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:22:57.134 [DEBUG] [Thread-152071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:22:57.153 [INFO] [Thread-152071] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:22:57.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:22:57.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:22:58.127 [DEBUG] [Thread-152071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:22:58.127 [DEBUG] [Thread-152071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:22:58.175 [DEBUG] [Thread-152071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:22:58.175 [DEBUG] [Thread-152071] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:22:58.184 [DEBUG] [Thread-152071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:22:58.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:22:58.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:22:58.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:22:58.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:22:58.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:22:58.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:22:58.218 [DEBUG] [Thread-152071] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:23:03.514 [DEBUG] [Thread-152073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:23:08.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:23:08.221 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:23:08.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:23:08.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 23, 3), 2.69, 84.3, 0.0, 28.39, 8.74, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:23:08.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:23:03
2025-09-29T09:23:08.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:23:09.067 [DEBUG] [Thread-152074] [transport.py] [_log()] starting thread (client mode): 0x2b9dc9a0
2025-09-29T09:23:09.067 [DEBUG] [Thread-152074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:23:09.087 [DEBUG] [Thread-152074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:23:09.087 [INFO] [Thread-152074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:23:09.090 [DEBUG] [Thread-152074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:23:09.090 [DEBUG] [Thread-152074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:23:09.090 [DEBUG] [Thread-152074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:23:09.090 [DEBUG] [Thread-152074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:23:09.090 [DEBUG] [Thread-152074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] client lang: <none>
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] server lang: <none>
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] kex follows: False
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] Compression: none
2025-09-29T09:23:09.091 [DEBUG] [Thread-152074] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:23:09.107 [DEBUG] [Thread-152074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:23:09.107 [DEBUG] [Thread-152074] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:23:09.107 [DEBUG] [Thread-152074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:23:09.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:23:09.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:23:09.152 [DEBUG] [Thread-152074] [transport.py] [_log()] userauth is OK
2025-09-29T09:23:09.152 [DEBUG] [Thread-152074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:23:09.152 [DEBUG] [Thread-152074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:23:09.153 [DEBUG] [Thread-152074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:23:09.153 [DEBUG] [Thread-152074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:23:09.185 [INFO] [Thread-152074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:23:09.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:23:09.806 [DEBUG] [Thread-152074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:23:09.806 [DEBUG] [Thread-152074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:23:09.806 [DEBUG] [Thread-152074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:23:09.847 [DEBUG] [Thread-152074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:23:09.848 [DEBUG] [Thread-152074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:23:09.850 [DEBUG] [Thread-152074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:23:09.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:23:09.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:23:09.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:23:09.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:23:09.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:23:09.872 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:23:09.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:23:09.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:23:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:23:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.307366 -999.00   +9.10  18.09     77   +5.30 1 2 1 1 1   888    0 4.29 43.87 ----- 29.5 18.1 156.4 29.7 13.4 -16.4 12.8 -16.5 11.9 -16.3 12.7 -18.0
2025-09-29T09:23:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:23:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:23:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.307366
2025-09-29T09:23:09.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:23:09.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:23:09.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:23:09.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:23:09.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:23:09.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:23:03', tmtdew=2.69, humidity=84.3, cloud=0.0, wind=28.39, temperature=8.74, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:22:36.422', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:23:09.875 [DEBUG] [Thread-152074] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:23:09.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:23:09.970 [DEBUG] [Thread-152077] [transport.py] [_log()] starting thread (client mode): 0x30ddd420
2025-09-29T09:23:09.971 [DEBUG] [Thread-152077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:23:09.985 [DEBUG] [Thread-152077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:23:09.985 [INFO] [Thread-152077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:23:09.993 [DEBUG] [Thread-152077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:23:09.993 [DEBUG] [Thread-152077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:23:09.994 [DEBUG] [Thread-152077] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:23:09.994 [DEBUG] [Thread-152077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:23:09.994 [DEBUG] [Thread-152077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:23:09.994 [DEBUG] [Thread-152077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:23:09.994 [DEBUG] [Thread-152077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:23:09.994 [DEBUG] [Thread-152077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:23:09.994 [DEBUG] [Thread-152077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:23:09.994 [DEBUG] [Thread-152077] [transport.py] [_log()] client lang: <none>
2025-09-29T09:23:09.995 [DEBUG] [Thread-152077] [transport.py] [_log()] server lang: <none>
2025-09-29T09:23:09.995 [DEBUG] [Thread-152077] [transport.py] [_log()] kex follows: False
2025-09-29T09:23:09.995 [DEBUG] [Thread-152077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:23:09.995 [DEBUG] [Thread-152077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:23:09.995 [DEBUG] [Thread-152077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:23:09.995 [DEBUG] [Thread-152077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:23:09.996 [DEBUG] [Thread-152077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:23:09.996 [DEBUG] [Thread-152077] [transport.py] [_log()] Compression: none
2025-09-29T09:23:09.996 [DEBUG] [Thread-152077] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:23:10.054 [DEBUG] [Thread-152077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:23:10.055 [DEBUG] [Thread-152077] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:23:10.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:23:10.056 [DEBUG] [Thread-152077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:23:10.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:23:10.112 [DEBUG] [Thread-152077] [transport.py] [_log()] userauth is OK
2025-09-29T09:23:10.112 [DEBUG] [Thread-152077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:23:10.113 [DEBUG] [Thread-152077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:23:10.113 [DEBUG] [Thread-152077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:23:10.113 [DEBUG] [Thread-152077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:23:10.131 [INFO] [Thread-152077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:23:10.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:23:10.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:23:11.119 [DEBUG] [Thread-152077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:23:11.119 [DEBUG] [Thread-152077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:23:11.168 [DEBUG] [Thread-152077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:23:11.169 [DEBUG] [Thread-152077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:23:11.180 [DEBUG] [Thread-152077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:23:11.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:23:11.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:23:11.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:23:11.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:23:11.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:23:11.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:23:11.222 [DEBUG] [Thread-152077] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:23:18.542 [DEBUG] [Thread-152079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:23:20.837 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:23:20.838 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:23:21.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:23:21.225 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:23:21.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:23:21.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 23, 3), 2.69, 84.3, 0.0, 28.39, 8.74, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:23:21.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:23:03
2025-09-29T09:23:21.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:23:22.056 [DEBUG] [Thread-152080] [transport.py] [_log()] starting thread (client mode): 0x2e360fa0
2025-09-29T09:23:22.056 [DEBUG] [Thread-152080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:23:22.075 [DEBUG] [Thread-152080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:23:22.075 [INFO] [Thread-152080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:23:22.078 [DEBUG] [Thread-152080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:23:22.078 [DEBUG] [Thread-152080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:23:22.078 [DEBUG] [Thread-152080] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:23:22.078 [DEBUG] [Thread-152080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:23:22.078 [DEBUG] [Thread-152080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:23:22.078 [DEBUG] [Thread-152080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:23:22.078 [DEBUG] [Thread-152080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:23:22.078 [DEBUG] [Thread-152080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] client lang: <none>
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] server lang: <none>
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] kex follows: False
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] Compression: none
2025-09-29T09:23:22.079 [DEBUG] [Thread-152080] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:23:22.093 [DEBUG] [Thread-152080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:23:22.093 [DEBUG] [Thread-152080] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:23:22.093 [DEBUG] [Thread-152080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:23:22.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:23:22.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:23:22.094 [DEBUG] [Thread-152080] [transport.py] [_log()] userauth is OK
2025-09-29T09:23:22.094 [DEBUG] [Thread-152080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:23:22.094 [DEBUG] [Thread-152080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:23:22.094 [DEBUG] [Thread-152080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:23:22.094 [DEBUG] [Thread-152080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:23:22.103 [INFO] [Thread-152080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:23:22.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:23:22.746 [DEBUG] [Thread-152080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:23:22.746 [DEBUG] [Thread-152080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:23:22.747 [DEBUG] [Thread-152080] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:23:22.787 [DEBUG] [Thread-152080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:23:22.787 [DEBUG] [Thread-152080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:23:22.791 [DEBUG] [Thread-152080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:23:22.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:23:22.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:23:22.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:23:22.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:23:22.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:23:22.823 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:23:22.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:23:22.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:23:22.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:23:22.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.307366 -999.00   +9.10  18.09     77   +5.30 1 2 1 1 1   888    0 4.29 43.87 ----- 29.5 18.1 156.4 29.7 13.4 -16.4 12.8 -16.5 11.9 -16.3 12.7 -18.0
2025-09-29T09:23:22.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:23:22.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:23:22.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.307366
2025-09-29T09:23:22.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:23:22.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:23:22.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:23:22.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:23:22.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:23:22.826 [DEBUG] [Thread-152080] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:23:22.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:23:03', tmtdew=2.69, humidity=84.3, cloud=0.0, wind=28.39, temperature=8.74, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:22:36.422', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:23:22.912 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:23:29.500 [DEBUG] [Thread-152083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:23:33.591 [DEBUG] [Thread-152084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:23:48.618 [DEBUG] [Thread-152085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:24:03.648 [DEBUG] [Thread-152086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:24:18.674 [DEBUG] [Thread-152087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:24:20.981 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:24:20.982 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:24:29.556 [DEBUG] [Thread-152088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:24:33.704 [DEBUG] [Thread-152089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:24:48.735 [DEBUG] [Thread-152090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:25:03.765 [DEBUG] [Thread-152091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:25:18.796 [DEBUG] [Thread-152092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:25:21.144 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:25:21.146 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:25:29.607 [DEBUG] [Thread-152093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:25:33.829 [DEBUG] [Thread-152094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:25:37.851 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T09:25:47.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:25:47.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:25:47.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:25:48.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 25, 42), 2.88, 83.33, 0.0, 22.9, 8.29, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:25:48.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:25:42
2025-09-29T09:25:48.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:25:48.726 [DEBUG] [Thread-152095] [transport.py] [_log()] starting thread (client mode): 0x2b94f640
2025-09-29T09:25:48.726 [DEBUG] [Thread-152095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:25:48.746 [DEBUG] [Thread-152095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:25:48.746 [INFO] [Thread-152095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:25:48.749 [DEBUG] [Thread-152095] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:25:48.749 [DEBUG] [Thread-152095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:25:48.749 [DEBUG] [Thread-152095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] client lang: <none>
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] server lang: <none>
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] kex follows: False
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:25:48.750 [DEBUG] [Thread-152095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:25:48.751 [DEBUG] [Thread-152095] [transport.py] [_log()] Compression: none
2025-09-29T09:25:48.751 [DEBUG] [Thread-152095] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:25:48.770 [DEBUG] [Thread-152095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:25:48.770 [DEBUG] [Thread-152095] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:25:48.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:25:48.771 [DEBUG] [Thread-152095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:25:48.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:25:48.773 [DEBUG] [Thread-152095] [transport.py] [_log()] userauth is OK
2025-09-29T09:25:48.773 [DEBUG] [Thread-152095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:25:48.773 [DEBUG] [Thread-152095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:25:48.773 [DEBUG] [Thread-152095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:25:48.774 [DEBUG] [Thread-152095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:25:48.791 [INFO] [Thread-152095] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:25:48.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:25:48.855 [DEBUG] [Thread-152097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:25:49.438 [DEBUG] [Thread-152095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:25:49.438 [DEBUG] [Thread-152095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:25:49.439 [DEBUG] [Thread-152095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:25:49.479 [DEBUG] [Thread-152095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:25:49.479 [DEBUG] [Thread-152095] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:25:49.482 [DEBUG] [Thread-152095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:25:49.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:25:49.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:25:49.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:25:49.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:25:49.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:25:49.507 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:25:49.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:25:49.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:25:49.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:25:49.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.309102 -999.00   +8.90  19.07     77   +5.10 1 1 1 1 1   888    0 4.99 62.43 ----- 18.7 19.1 151.2 34.7 13.9 -25.9 12.8 -23.2 11.8 -25.6 12.7 -26.6
2025-09-29T09:25:49.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:25:49.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:25:49.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.309102
2025-09-29T09:25:49.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:25:49.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:25:49.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:25:49.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:25:49.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:25:49.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:25:42', tmtdew=2.88, humidity=83.33, cloud=0.0, wind=22.9, temperature=8.29, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:25:06.413', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:25:49.510 [DEBUG] [Thread-152095] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:25:49.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:25:49.607 [DEBUG] [Thread-152099] [transport.py] [_log()] starting thread (client mode): 0x30ddeaa0
2025-09-29T09:25:49.608 [DEBUG] [Thread-152099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:25:49.627 [DEBUG] [Thread-152099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:25:49.628 [INFO] [Thread-152099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:25:49.637 [DEBUG] [Thread-152099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] client lang: <none>
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] server lang: <none>
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] kex follows: False
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:25:49.638 [DEBUG] [Thread-152099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:25:49.639 [DEBUG] [Thread-152099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:25:49.639 [DEBUG] [Thread-152099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:25:49.639 [DEBUG] [Thread-152099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:25:49.639 [DEBUG] [Thread-152099] [transport.py] [_log()] Compression: none
2025-09-29T09:25:49.639 [DEBUG] [Thread-152099] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:25:49.702 [DEBUG] [Thread-152099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:25:49.703 [DEBUG] [Thread-152099] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:25:49.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:25:49.704 [DEBUG] [Thread-152099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:25:49.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:25:49.761 [DEBUG] [Thread-152099] [transport.py] [_log()] userauth is OK
2025-09-29T09:25:49.761 [DEBUG] [Thread-152099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:25:49.762 [DEBUG] [Thread-152099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:25:49.762 [DEBUG] [Thread-152099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:25:49.762 [DEBUG] [Thread-152099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:25:49.780 [INFO] [Thread-152099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:25:49.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:25:49.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:25:50.786 [DEBUG] [Thread-152099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:25:50.787 [DEBUG] [Thread-152099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:25:50.834 [DEBUG] [Thread-152099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:25:50.834 [DEBUG] [Thread-152099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:25:50.843 [DEBUG] [Thread-152099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:25:50.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:25:50.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:25:50.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:25:50.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:25:50.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:25:50.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:25:50.878 [DEBUG] [Thread-152099] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:26:00.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:26:00.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:26:00.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:26:01.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 25, 42), 2.88, 83.33, 0.0, 22.9, 8.29, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:26:01.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:25:42
2025-09-29T09:26:01.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:26:01.746 [DEBUG] [Thread-152101] [transport.py] [_log()] starting thread (client mode): 0x28704130
2025-09-29T09:26:01.746 [DEBUG] [Thread-152101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:26:01.767 [DEBUG] [Thread-152101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:26:01.767 [INFO] [Thread-152101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] client lang: <none>
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] server lang: <none>
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] kex follows: False
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] Compression: none
2025-09-29T09:26:01.770 [DEBUG] [Thread-152101] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:26:01.787 [DEBUG] [Thread-152101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:26:01.788 [DEBUG] [Thread-152101] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:26:01.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:26:01.789 [DEBUG] [Thread-152101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:26:01.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:26:01.791 [DEBUG] [Thread-152101] [transport.py] [_log()] userauth is OK
2025-09-29T09:26:01.791 [DEBUG] [Thread-152101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:26:01.791 [DEBUG] [Thread-152101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:26:01.791 [DEBUG] [Thread-152101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:26:01.791 [DEBUG] [Thread-152101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:26:01.808 [INFO] [Thread-152101] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:26:01.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:26:02.469 [DEBUG] [Thread-152101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:26:02.469 [DEBUG] [Thread-152101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:26:02.469 [DEBUG] [Thread-152101] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:26:02.510 [DEBUG] [Thread-152101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:26:02.510 [DEBUG] [Thread-152101] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:26:02.512 [DEBUG] [Thread-152101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:26:02.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:26:02.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:26:02.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:26:02.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:26:02.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:26:02.531 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:26:02.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:26:02.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:26:02.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:26:02.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.309450 -999.00   +8.80  20.61     77   +5.10 1 2 1 1 1   888    0 5.01 61.97 ----- 20.5 20.6 144.5 24.7 13.6 -23.5 12.7 -21.6 11.8 -23.1 12.6 -24.9
2025-09-29T09:26:02.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:26:02.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:26:02.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.309450
2025-09-29T09:26:02.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:26:02.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:26:02.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:26:02.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:26:02.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:26:02.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:25:42', tmtdew=2.88, humidity=83.33, cloud=0.0, wind=22.9, temperature=8.29, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:25:36.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:26:02.532 [DEBUG] [Thread-152101] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:26:02.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:26:03.886 [DEBUG] [Thread-152104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:26:18.925 [DEBUG] [Thread-152105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:26:21.284 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:26:21.285 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:26:29.663 [DEBUG] [Thread-152106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:26:33.953 [DEBUG] [Thread-152107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:26:48.978 [DEBUG] [Thread-152108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:27:04.007 [DEBUG] [Thread-152109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:27:19.035 [DEBUG] [Thread-152110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:27:21.426 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:27:21.427 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:27:29.710 [DEBUG] [Thread-152111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:27:34.059 [DEBUG] [Thread-152112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:27:49.089 [DEBUG] [Thread-152113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:28:04.118 [DEBUG] [Thread-152114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:28:17.595 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T09:28:19.149 [DEBUG] [Thread-152115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:28:21.572 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:28:21.573 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:28:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:28:27.605 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:28:27.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:28:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 28, 22), 3.08, 81.98, 0.0, 30.19, 9.43, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:28:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:28:22
2025-09-29T09:28:28.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:28:28.469 [DEBUG] [Thread-152116] [transport.py] [_log()] starting thread (client mode): 0x2e348bb0
2025-09-29T09:28:28.469 [DEBUG] [Thread-152116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:28:28.490 [DEBUG] [Thread-152116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:28:28.490 [INFO] [Thread-152116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:28:28.493 [DEBUG] [Thread-152116] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:28:28.493 [DEBUG] [Thread-152116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:28:28.493 [DEBUG] [Thread-152116] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:28:28.493 [DEBUG] [Thread-152116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:28.493 [DEBUG] [Thread-152116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:28.493 [DEBUG] [Thread-152116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] client lang: <none>
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] server lang: <none>
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] kex follows: False
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] Compression: none
2025-09-29T09:28:28.494 [DEBUG] [Thread-152116] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:28:28.513 [DEBUG] [Thread-152116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:28:28.513 [DEBUG] [Thread-152116] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:28:28.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:28:28.514 [DEBUG] [Thread-152116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:28:28.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:28:28.516 [DEBUG] [Thread-152116] [transport.py] [_log()] userauth is OK
2025-09-29T09:28:28.516 [DEBUG] [Thread-152116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:28:28.516 [DEBUG] [Thread-152116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:28:28.516 [DEBUG] [Thread-152116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:28:28.516 [DEBUG] [Thread-152116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:28:28.539 [INFO] [Thread-152116] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:28:28.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:28:29.163 [DEBUG] [Thread-152116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:28:29.164 [DEBUG] [Thread-152116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:28:29.164 [DEBUG] [Thread-152116] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:28:29.204 [DEBUG] [Thread-152116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:28:29.205 [DEBUG] [Thread-152116] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:28:29.208 [DEBUG] [Thread-152116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:28:29.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:28:29.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:28:29.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:28:29.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:28:29.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:28:29.231 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:28:29.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:28:29.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:28:29.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:28:29.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.310839 -999.00   +9.20  19.29     76   +5.40 1 2 1 1 1   888    0 5.17 62.88 ----- 23.0 19.3 166.2 31.6 14.4 -20.7 13.4 -21.7 12.3 -21.4 13.3 -21.4
2025-09-29T09:28:29.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:28:29.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:28:29.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.310839
2025-09-29T09:28:29.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:28:29.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:28:29.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:28:29.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:28:29.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:28:29.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:28:22', tmtdew=3.08, humidity=81.98, cloud=0.0, wind=30.19, temperature=9.43, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:27:36.490', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:28:29.234 [DEBUG] [Thread-152116] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:28:29.318 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:28:29.330 [DEBUG] [Thread-152119] [transport.py] [_log()] starting thread (client mode): 0x2b9ccfa0
2025-09-29T09:28:29.330 [DEBUG] [Thread-152119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:28:29.345 [DEBUG] [Thread-152119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:28:29.345 [INFO] [Thread-152119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:28:29.353 [DEBUG] [Thread-152119] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:28:29.353 [DEBUG] [Thread-152119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:28:29.353 [DEBUG] [Thread-152119] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:28:29.353 [DEBUG] [Thread-152119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] client lang: <none>
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] server lang: <none>
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] kex follows: False
2025-09-29T09:28:29.354 [DEBUG] [Thread-152119] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:28:29.355 [DEBUG] [Thread-152119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:28:29.355 [DEBUG] [Thread-152119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:28:29.355 [DEBUG] [Thread-152119] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:28:29.355 [DEBUG] [Thread-152119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:28:29.355 [DEBUG] [Thread-152119] [transport.py] [_log()] Compression: none
2025-09-29T09:28:29.355 [DEBUG] [Thread-152119] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:28:29.411 [DEBUG] [Thread-152119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:28:29.412 [DEBUG] [Thread-152119] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:28:29.412 [DEBUG] [Thread-152119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:28:29.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:28:29.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:28:29.466 [DEBUG] [Thread-152119] [transport.py] [_log()] userauth is OK
2025-09-29T09:28:29.467 [DEBUG] [Thread-152119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:28:29.467 [DEBUG] [Thread-152119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:28:29.467 [DEBUG] [Thread-152119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:28:29.467 [DEBUG] [Thread-152119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:28:29.491 [INFO] [Thread-152119] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:28:29.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:28:29.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:28:29.767 [DEBUG] [Thread-152121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:28:30.532 [DEBUG] [Thread-152119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:28:30.532 [DEBUG] [Thread-152119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:28:30.580 [DEBUG] [Thread-152119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:28:30.580 [DEBUG] [Thread-152119] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:28:30.589 [DEBUG] [Thread-152119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:28:30.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:28:30.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:28:30.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:28:30.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:28:30.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:28:30.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:28:30.624 [DEBUG] [Thread-152119] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:28:34.182 [DEBUG] [Thread-152122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:28:40.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:28:40.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:28:40.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:28:41.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 28, 22), 3.08, 81.98, 0.0, 30.19, 9.43, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:28:41.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:28:22
2025-09-29T09:28:41.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:28:41.497 [DEBUG] [Thread-152123] [transport.py] [_log()] starting thread (client mode): 0x287052a0
2025-09-29T09:28:41.498 [DEBUG] [Thread-152123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:28:41.517 [DEBUG] [Thread-152123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:28:41.517 [INFO] [Thread-152123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:28:41.520 [DEBUG] [Thread-152123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:28:41.520 [DEBUG] [Thread-152123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] client lang: <none>
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] server lang: <none>
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] kex follows: False
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] Compression: none
2025-09-29T09:28:41.521 [DEBUG] [Thread-152123] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:28:41.537 [DEBUG] [Thread-152123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:28:41.538 [DEBUG] [Thread-152123] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:28:41.539 [DEBUG] [Thread-152123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:28:41.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:28:41.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:28:41.541 [DEBUG] [Thread-152123] [transport.py] [_log()] userauth is OK
2025-09-29T09:28:41.541 [DEBUG] [Thread-152123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:28:41.541 [DEBUG] [Thread-152123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:28:41.541 [DEBUG] [Thread-152123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:28:41.541 [DEBUG] [Thread-152123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:28:41.564 [INFO] [Thread-152123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:28:41.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:28:42.210 [DEBUG] [Thread-152123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:28:42.210 [DEBUG] [Thread-152123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:28:42.211 [DEBUG] [Thread-152123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:28:42.251 [DEBUG] [Thread-152123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:28:42.251 [DEBUG] [Thread-152123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:28:42.254 [DEBUG] [Thread-152123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:28:42.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:28:42.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:28:42.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:28:42.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:28:42.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:28:42.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:28:42.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:28:42.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:28:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:28:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.310839 -999.00   +9.20  19.29     76   +5.40 1 2 1 1 1   888    0 5.17 62.88 ----- 23.0 19.3 166.2 31.6 14.4 -20.7 13.4 -21.7 12.3 -21.4 13.3 -21.4
2025-09-29T09:28:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:28:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:28:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.310839
2025-09-29T09:28:42.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:28:42.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:28:42.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:28:42.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:28:42.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:28:42.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:28:22', tmtdew=3.08, humidity=81.98, cloud=0.0, wind=30.19, temperature=9.43, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:27:36.490', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:28:42.280 [DEBUG] [Thread-152123] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:28:42.375 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:28:42.386 [DEBUG] [Thread-152126] [transport.py] [_log()] starting thread (client mode): 0x2e361450
2025-09-29T09:28:42.386 [DEBUG] [Thread-152126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:28:42.404 [DEBUG] [Thread-152126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:28:42.404 [INFO] [Thread-152126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] client lang: <none>
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] server lang: <none>
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] kex follows: False
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:28:42.413 [DEBUG] [Thread-152126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:28:42.414 [DEBUG] [Thread-152126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:28:42.414 [DEBUG] [Thread-152126] [transport.py] [_log()] Compression: none
2025-09-29T09:28:42.414 [DEBUG] [Thread-152126] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:28:42.469 [DEBUG] [Thread-152126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:28:42.470 [DEBUG] [Thread-152126] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:28:42.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:28:42.470 [DEBUG] [Thread-152126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:28:42.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:28:42.529 [DEBUG] [Thread-152126] [transport.py] [_log()] userauth is OK
2025-09-29T09:28:42.529 [DEBUG] [Thread-152126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:28:42.529 [DEBUG] [Thread-152126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:28:42.530 [DEBUG] [Thread-152126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:28:42.530 [DEBUG] [Thread-152126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:28:42.546 [INFO] [Thread-152126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:28:42.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:28:42.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:28:43.531 [DEBUG] [Thread-152126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:28:43.532 [DEBUG] [Thread-152126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:28:43.580 [DEBUG] [Thread-152126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:28:43.580 [DEBUG] [Thread-152126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:28:43.588 [DEBUG] [Thread-152126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:28:43.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:28:43.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:28:43.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:28:43.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:28:43.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:28:43.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:28:43.621 [DEBUG] [Thread-152126] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:28:49.228 [DEBUG] [Thread-152128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:28:53.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:28:53.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:28:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:28:54.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 28, 22), 3.08, 81.98, 0.0, 30.19, 9.43, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:28:54.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:28:22
2025-09-29T09:28:54.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:28:54.509 [DEBUG] [Thread-152129] [transport.py] [_log()] starting thread (client mode): 0x2b94d990
2025-09-29T09:28:54.509 [DEBUG] [Thread-152129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:28:54.531 [DEBUG] [Thread-152129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:28:54.531 [INFO] [Thread-152129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] client lang: <none>
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] server lang: <none>
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] kex follows: False
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:28:54.534 [DEBUG] [Thread-152129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:28:54.535 [DEBUG] [Thread-152129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:28:54.535 [DEBUG] [Thread-152129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:28:54.535 [DEBUG] [Thread-152129] [transport.py] [_log()] Compression: none
2025-09-29T09:28:54.535 [DEBUG] [Thread-152129] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:28:54.550 [DEBUG] [Thread-152129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:28:54.550 [DEBUG] [Thread-152129] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:28:54.551 [DEBUG] [Thread-152129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:28:54.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:28:54.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:28:54.551 [DEBUG] [Thread-152129] [transport.py] [_log()] userauth is OK
2025-09-29T09:28:54.551 [DEBUG] [Thread-152129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:28:54.551 [DEBUG] [Thread-152129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:28:54.552 [DEBUG] [Thread-152129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:28:54.552 [DEBUG] [Thread-152129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:28:54.563 [INFO] [Thread-152129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:28:54.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:28:55.204 [DEBUG] [Thread-152129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:28:55.204 [DEBUG] [Thread-152129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:28:55.205 [DEBUG] [Thread-152129] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:28:55.246 [DEBUG] [Thread-152129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:28:55.246 [DEBUG] [Thread-152129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:28:55.248 [DEBUG] [Thread-152129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:28:55.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:28:55.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:28:55.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:28:55.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:28:55.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:28:55.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:28:55.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:28:55.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:28:55.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:28:55.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.311533 -999.00   +9.40  23.32     76   +5.50 1 2 1 1 1   888    0 5.08 59.01 ----- 25.4 23.3 137.0 31.2 14.7 -24.2 13.7 -22.6 12.5 -23.0 13.5 -24.3
2025-09-29T09:28:55.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:28:55.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:28:55.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.311533
2025-09-29T09:28:55.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:28:55.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:28:55.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:28:55.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:28:55.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:28:55.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:28:22', tmtdew=3.08, humidity=81.98, cloud=0.0, wind=30.19, temperature=9.43, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:28:36.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:28:55.266 [DEBUG] [Thread-152129] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:28:55.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:28:55.349 [DEBUG] [Thread-152132] [transport.py] [_log()] starting thread (client mode): 0x2e3f8220
2025-09-29T09:28:55.349 [DEBUG] [Thread-152132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:28:55.364 [DEBUG] [Thread-152132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:28:55.365 [INFO] [Thread-152132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] client lang: <none>
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] server lang: <none>
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] kex follows: False
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] Compression: none
2025-09-29T09:28:55.372 [DEBUG] [Thread-152132] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:28:55.428 [DEBUG] [Thread-152132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:28:55.429 [DEBUG] [Thread-152132] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:28:55.429 [DEBUG] [Thread-152132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:28:55.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:28:55.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:28:55.486 [DEBUG] [Thread-152132] [transport.py] [_log()] userauth is OK
2025-09-29T09:28:55.486 [DEBUG] [Thread-152132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:28:55.486 [DEBUG] [Thread-152132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:28:55.486 [DEBUG] [Thread-152132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:28:55.486 [DEBUG] [Thread-152132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:28:55.504 [INFO] [Thread-152132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:28:55.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:28:55.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:28:56.545 [DEBUG] [Thread-152132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:28:56.546 [DEBUG] [Thread-152132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:28:56.594 [DEBUG] [Thread-152132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:28:56.595 [DEBUG] [Thread-152132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:28:56.604 [DEBUG] [Thread-152132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:28:56.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:28:56.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:28:56.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:28:56.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:28:56.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:28:56.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:28:56.639 [DEBUG] [Thread-152132] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:04.263 [DEBUG] [Thread-152134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:29:06.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:29:06.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:29:06.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:29:07.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 28, 54), 3.22, 81.57, 0.0, 26.73, 9.55, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:29:07.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:28:54
2025-09-29T09:29:07.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:29:07.503 [DEBUG] [Thread-152135] [transport.py] [_log()] starting thread (client mode): 0x2e3deb00
2025-09-29T09:29:07.503 [DEBUG] [Thread-152135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:07.524 [DEBUG] [Thread-152135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:29:07.524 [INFO] [Thread-152135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:29:07.527 [DEBUG] [Thread-152135] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:07.527 [DEBUG] [Thread-152135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:29:07.527 [DEBUG] [Thread-152135] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] Compression: none
2025-09-29T09:29:07.528 [DEBUG] [Thread-152135] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:07.547 [DEBUG] [Thread-152135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:07.548 [DEBUG] [Thread-152135] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:07.548 [DEBUG] [Thread-152135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:29:07.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:29:07.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:07.550 [DEBUG] [Thread-152135] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:07.551 [DEBUG] [Thread-152135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:07.551 [DEBUG] [Thread-152135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:07.551 [DEBUG] [Thread-152135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:29:07.551 [DEBUG] [Thread-152135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:07.587 [INFO] [Thread-152135] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:07.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:29:08.267 [DEBUG] [Thread-152135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:29:08.267 [DEBUG] [Thread-152135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:29:08.268 [DEBUG] [Thread-152135] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:29:08.308 [DEBUG] [Thread-152135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:29:08.308 [DEBUG] [Thread-152135] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:29:08.312 [DEBUG] [Thread-152135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:29:08.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:29:08.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:29:08.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:29:08.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:29:08.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:29:08.328 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:29:08.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:29:08.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:29:08.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:29:08.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.311533 -999.00   +9.40  23.32     76   +5.50 1 2 1 1 1   888    0 5.08 59.01 ----- 25.4 23.3 137.0 31.2 14.7 -24.2 13.7 -22.6 12.5 -23.0 13.5 -24.3
2025-09-29T09:29:08.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:29:08.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:29:08.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.311533
2025-09-29T09:29:08.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:29:08.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:29:08.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:29:08.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:29:08.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:29:08.331 [DEBUG] [Thread-152135] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:08.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:28:54', tmtdew=3.22, humidity=81.57, cloud=0.0, wind=26.73, temperature=9.55, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:28:36.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:29:08.415 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:29:08.426 [DEBUG] [Thread-152138] [transport.py] [_log()] starting thread (client mode): 0x2b9de140
2025-09-29T09:29:08.426 [DEBUG] [Thread-152138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:08.441 [DEBUG] [Thread-152138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:29:08.442 [INFO] [Thread-152138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:29:08.450 [DEBUG] [Thread-152138] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:08.450 [DEBUG] [Thread-152138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:29:08.450 [DEBUG] [Thread-152138] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:08.450 [DEBUG] [Thread-152138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:08.450 [DEBUG] [Thread-152138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:08.450 [DEBUG] [Thread-152138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:08.450 [DEBUG] [Thread-152138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] Compression: none
2025-09-29T09:29:08.451 [DEBUG] [Thread-152138] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:08.513 [DEBUG] [Thread-152138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:08.513 [DEBUG] [Thread-152138] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:08.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:29:08.514 [DEBUG] [Thread-152138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:29:08.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:08.571 [DEBUG] [Thread-152138] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:08.571 [DEBUG] [Thread-152138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:08.571 [DEBUG] [Thread-152138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:08.572 [DEBUG] [Thread-152138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:29:08.572 [DEBUG] [Thread-152138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:08.591 [INFO] [Thread-152138] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:08.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:29:08.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:29:09.591 [DEBUG] [Thread-152138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:29:09.591 [DEBUG] [Thread-152138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:29:09.639 [DEBUG] [Thread-152138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:29:09.640 [DEBUG] [Thread-152138] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:29:09.649 [DEBUG] [Thread-152138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:29:09.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:29:09.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:29:09.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:29:09.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:29:09.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:29:09.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:29:09.691 [DEBUG] [Thread-152138] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:19.310 [DEBUG] [Thread-152140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:29:19.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:29:19.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:29:19.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:29:20.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 28, 54), 3.22, 81.57, 0.0, 26.73, 9.55, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:29:20.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:28:54
2025-09-29T09:29:20.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:29:20.539 [DEBUG] [Thread-152141] [transport.py] [_log()] starting thread (client mode): 0x30ddd420
2025-09-29T09:29:20.539 [DEBUG] [Thread-152141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:20.559 [DEBUG] [Thread-152141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:29:20.559 [INFO] [Thread-152141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:29:20.562 [DEBUG] [Thread-152141] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:20.562 [DEBUG] [Thread-152141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:29:20.562 [DEBUG] [Thread-152141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:20.563 [DEBUG] [Thread-152141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:20.564 [DEBUG] [Thread-152141] [transport.py] [_log()] Compression: none
2025-09-29T09:29:20.564 [DEBUG] [Thread-152141] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:20.583 [DEBUG] [Thread-152141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:20.583 [DEBUG] [Thread-152141] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:20.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:29:20.584 [DEBUG] [Thread-152141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:29:20.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:20.586 [DEBUG] [Thread-152141] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:20.587 [DEBUG] [Thread-152141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:20.587 [DEBUG] [Thread-152141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:20.587 [DEBUG] [Thread-152141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:29:20.587 [DEBUG] [Thread-152141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:20.610 [INFO] [Thread-152141] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:20.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:29:21.266 [DEBUG] [Thread-152141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:29:21.266 [DEBUG] [Thread-152141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:29:21.266 [DEBUG] [Thread-152141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:29:21.307 [DEBUG] [Thread-152141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:29:21.307 [DEBUG] [Thread-152141] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:29:21.310 [DEBUG] [Thread-152141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:29:21.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:29:21.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:29:21.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:29:21.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:29:21.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:29:21.329 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:29:21.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:29:21.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:29:21.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:29:21.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.311880 -999.00   +9.50  21.83     75   +5.30 1 1 1 1 1   888    0 5.12 59.21 ----- 23.0 21.8 141.6 29.9 14.8 -24.3 13.5 -25.9 12.3 -26.2 13.5 -27.5
2025-09-29T09:29:21.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:29:21.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:29:21.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.311880
2025-09-29T09:29:21.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:29:21.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:29:21.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:29:21.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:29:21.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:29:21.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:28:54', tmtdew=3.22, humidity=81.57, cloud=0.0, wind=26.73, temperature=9.55, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:29:06.432', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:29:21.331 [DEBUG] [Thread-152141] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:21.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:29:21.413 [DEBUG] [Thread-152144] [transport.py] [_log()] starting thread (client mode): 0x2e34b370
2025-09-29T09:29:21.414 [DEBUG] [Thread-152144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:21.428 [DEBUG] [Thread-152144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:29:21.429 [INFO] [Thread-152144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:21.436 [DEBUG] [Thread-152144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:21.437 [DEBUG] [Thread-152144] [transport.py] [_log()] Compression: none
2025-09-29T09:29:21.437 [DEBUG] [Thread-152144] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:21.493 [DEBUG] [Thread-152144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:21.493 [DEBUG] [Thread-152144] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:21.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:29:21.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:21.494 [DEBUG] [Thread-152144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:29:21.550 [DEBUG] [Thread-152144] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:21.550 [DEBUG] [Thread-152144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:21.550 [DEBUG] [Thread-152144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:21.550 [DEBUG] [Thread-152144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:29:21.550 [DEBUG] [Thread-152144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:21.564 [INFO] [Thread-152144] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:21.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:29:21.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:29:21.714 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:29:21.715 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:29:22.531 [DEBUG] [Thread-152144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:29:22.531 [DEBUG] [Thread-152144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:29:22.579 [DEBUG] [Thread-152144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:29:22.579 [DEBUG] [Thread-152144] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:29:22.587 [DEBUG] [Thread-152144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:29:22.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:29:22.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:29:22.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:29:22.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:29:22.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:29:22.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:29:22.618 [DEBUG] [Thread-152144] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:29.801 [DEBUG] [Thread-152146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:29:32.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:29:32.621 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:29:32.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:29:33.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 29, 25), 3.33, 81.0, 0.0, 28.27, 9.38, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:29:33.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:29:25
2025-09-29T09:29:33.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:29:33.490 [DEBUG] [Thread-152147] [transport.py] [_log()] starting thread (client mode): 0x2e362cb0
2025-09-29T09:29:33.491 [DEBUG] [Thread-152147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:33.508 [DEBUG] [Thread-152147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:29:33.509 [INFO] [Thread-152147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:33.512 [DEBUG] [Thread-152147] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] Compression: none
2025-09-29T09:29:33.513 [DEBUG] [Thread-152147] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:33.520 [DEBUG] [Thread-152147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:33.521 [DEBUG] [Thread-152147] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:33.521 [DEBUG] [Thread-152147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:29:33.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:29:33.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:33.522 [DEBUG] [Thread-152147] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:33.523 [DEBUG] [Thread-152147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:33.523 [DEBUG] [Thread-152147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:33.523 [DEBUG] [Thread-152147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:29:33.523 [DEBUG] [Thread-152147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:33.540 [INFO] [Thread-152147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:33.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:29:34.175 [DEBUG] [Thread-152147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:29:34.175 [DEBUG] [Thread-152147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:29:34.176 [DEBUG] [Thread-152147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:29:34.216 [DEBUG] [Thread-152147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:29:34.216 [DEBUG] [Thread-152147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:29:34.219 [DEBUG] [Thread-152147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:29:34.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:29:34.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:29:34.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:29:34.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:29:34.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:29:34.241 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:29:34.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:29:34.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:29:34.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:29:34.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.311880 -999.00   +9.50  21.83     75   +5.30 1 1 1 1 1   888    0 5.12 59.21 ----- 23.0 21.8 141.6 29.9 14.8 -24.3 13.5 -25.9 12.3 -26.2 13.5 -27.5
2025-09-29T09:29:34.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:29:34.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:29:34.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.311880
2025-09-29T09:29:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:29:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:29:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:29:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:29:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:29:34.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:29:25', tmtdew=3.33, humidity=81.0, cloud=0.0, wind=28.27, temperature=9.38, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:29:06.432', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:29:34.244 [DEBUG] [Thread-152147] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:34.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:29:34.338 [DEBUG] [Thread-152150] [transport.py] [_log()] starting thread (client mode): 0x2e34a8f0
2025-09-29T09:29:34.338 [DEBUG] [Thread-152150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:34.352 [DEBUG] [Thread-152150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:29:34.352 [INFO] [Thread-152150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:29:34.357 [DEBUG] [Thread-152152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:29:34.359 [DEBUG] [Thread-152150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] Compression: none
2025-09-29T09:29:34.360 [DEBUG] [Thread-152150] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:34.426 [DEBUG] [Thread-152150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:34.426 [DEBUG] [Thread-152150] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:34.427 [DEBUG] [Thread-152150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:29:34.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:29:34.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:34.482 [DEBUG] [Thread-152150] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:34.483 [DEBUG] [Thread-152150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:34.483 [DEBUG] [Thread-152150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:34.483 [DEBUG] [Thread-152150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:29:34.483 [DEBUG] [Thread-152150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:34.501 [INFO] [Thread-152150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:34.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:29:34.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:29:35.502 [DEBUG] [Thread-152150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:29:35.503 [DEBUG] [Thread-152150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:29:35.551 [DEBUG] [Thread-152150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:29:35.552 [DEBUG] [Thread-152150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:29:35.561 [DEBUG] [Thread-152150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:29:35.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:29:35.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:29:35.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:29:35.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:29:35.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:29:35.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:29:35.596 [DEBUG] [Thread-152150] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:45.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:29:45.599 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:29:45.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:29:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 29, 25), 3.33, 81.0, 0.0, 28.27, 9.38, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:29:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:29:25
2025-09-29T09:29:46.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:29:46.473 [DEBUG] [Thread-152153] [transport.py] [_log()] starting thread (client mode): 0x30ddd0f0
2025-09-29T09:29:46.473 [DEBUG] [Thread-152153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:46.492 [DEBUG] [Thread-152153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:29:46.493 [INFO] [Thread-152153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:29:46.495 [DEBUG] [Thread-152153] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:46.496 [DEBUG] [Thread-152153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:46.497 [DEBUG] [Thread-152153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:46.497 [DEBUG] [Thread-152153] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:46.497 [DEBUG] [Thread-152153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:46.497 [DEBUG] [Thread-152153] [transport.py] [_log()] Compression: none
2025-09-29T09:29:46.497 [DEBUG] [Thread-152153] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:46.512 [DEBUG] [Thread-152153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:46.513 [DEBUG] [Thread-152153] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:46.513 [DEBUG] [Thread-152153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:29:46.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:29:46.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:46.515 [DEBUG] [Thread-152153] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:46.515 [DEBUG] [Thread-152153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:46.516 [DEBUG] [Thread-152153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:46.516 [DEBUG] [Thread-152153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:29:46.516 [DEBUG] [Thread-152153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:46.540 [INFO] [Thread-152153] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:46.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:29:47.176 [DEBUG] [Thread-152153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:29:47.176 [DEBUG] [Thread-152153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:29:47.177 [DEBUG] [Thread-152153] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:29:47.217 [DEBUG] [Thread-152153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:29:47.217 [DEBUG] [Thread-152153] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:29:47.220 [DEBUG] [Thread-152153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:29:47.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:29:47.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:29:47.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:29:47.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:29:47.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:29:47.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:29:47.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:29:47.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:29:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:29:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.311880 -999.00   +9.50  21.83     75   +5.30 1 1 1 1 1   888    0 5.12 59.21 ----- 23.0 21.8 141.6 29.9 14.8 -24.3 13.5 -25.9 12.3 -26.2 13.5 -27.5
2025-09-29T09:29:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:29:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:29:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.311880
2025-09-29T09:29:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:29:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:29:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:29:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:29:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:29:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:29:25', tmtdew=3.33, humidity=81.0, cloud=0.0, wind=28.27, temperature=9.38, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:29:06.432', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:29:47.244 [DEBUG] [Thread-152153] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:47.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:29:47.338 [DEBUG] [Thread-152156] [transport.py] [_log()] starting thread (client mode): 0x2e3f9000
2025-09-29T09:29:47.338 [DEBUG] [Thread-152156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:47.354 [DEBUG] [Thread-152156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:29:47.354 [INFO] [Thread-152156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:29:47.361 [DEBUG] [Thread-152156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:47.362 [DEBUG] [Thread-152156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:29:47.362 [DEBUG] [Thread-152156] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:47.362 [DEBUG] [Thread-152156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:47.362 [DEBUG] [Thread-152156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:47.362 [DEBUG] [Thread-152156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:47.362 [DEBUG] [Thread-152156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:47.362 [DEBUG] [Thread-152156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:47.362 [DEBUG] [Thread-152156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:47.363 [DEBUG] [Thread-152156] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:47.363 [DEBUG] [Thread-152156] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:47.363 [DEBUG] [Thread-152156] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:47.363 [DEBUG] [Thread-152156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:47.363 [DEBUG] [Thread-152156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:47.363 [DEBUG] [Thread-152156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:47.363 [DEBUG] [Thread-152156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:47.364 [DEBUG] [Thread-152156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:47.364 [DEBUG] [Thread-152156] [transport.py] [_log()] Compression: none
2025-09-29T09:29:47.364 [DEBUG] [Thread-152156] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:47.419 [DEBUG] [Thread-152156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:47.420 [DEBUG] [Thread-152156] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:47.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:29:47.421 [DEBUG] [Thread-152156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:29:47.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:47.478 [DEBUG] [Thread-152156] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:47.478 [DEBUG] [Thread-152156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:47.478 [DEBUG] [Thread-152156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:47.479 [DEBUG] [Thread-152156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:29:47.479 [DEBUG] [Thread-152156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:47.497 [INFO] [Thread-152156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:47.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:29:47.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:29:48.522 [DEBUG] [Thread-152156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:29:48.523 [DEBUG] [Thread-152156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:29:48.570 [DEBUG] [Thread-152156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:29:48.571 [DEBUG] [Thread-152156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:29:48.581 [DEBUG] [Thread-152156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:29:48.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:29:48.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:29:48.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:29:48.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:29:48.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:29:48.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:29:48.620 [DEBUG] [Thread-152156] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:29:49.398 [DEBUG] [Thread-152158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:29:58.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:29:58.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:29:58.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:29:59.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 29, 25), 3.33, 81.0, 0.0, 28.27, 9.38, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:29:59.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:29:25
2025-09-29T09:29:59.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:29:59.564 [DEBUG] [Thread-152159] [transport.py] [_log()] starting thread (client mode): 0x2e363d30
2025-09-29T09:29:59.564 [DEBUG] [Thread-152159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:29:59.584 [DEBUG] [Thread-152159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:29:59.584 [INFO] [Thread-152159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] client lang: <none>
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] server lang: <none>
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] kex follows: False
2025-09-29T09:29:59.587 [DEBUG] [Thread-152159] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:29:59.588 [DEBUG] [Thread-152159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:29:59.588 [DEBUG] [Thread-152159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:29:59.588 [DEBUG] [Thread-152159] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:29:59.588 [DEBUG] [Thread-152159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:29:59.588 [DEBUG] [Thread-152159] [transport.py] [_log()] Compression: none
2025-09-29T09:29:59.588 [DEBUG] [Thread-152159] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:29:59.603 [DEBUG] [Thread-152159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:29:59.604 [DEBUG] [Thread-152159] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:29:59.604 [DEBUG] [Thread-152159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:29:59.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:29:59.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:29:59.605 [DEBUG] [Thread-152159] [transport.py] [_log()] userauth is OK
2025-09-29T09:29:59.605 [DEBUG] [Thread-152159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:29:59.605 [DEBUG] [Thread-152159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:29:59.605 [DEBUG] [Thread-152159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:29:59.605 [DEBUG] [Thread-152159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:29:59.635 [INFO] [Thread-152159] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:29:59.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:00.254 [DEBUG] [Thread-152159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:00.254 [DEBUG] [Thread-152159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:00.254 [DEBUG] [Thread-152159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:30:00.295 [DEBUG] [Thread-152159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:00.295 [DEBUG] [Thread-152159] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:00.297 [DEBUG] [Thread-152159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:00.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:00.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:30:00.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:30:00.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:30:00.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:00.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:30:00.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:00.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:00.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:30:00.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.312227 -999.00   +9.20  22.85     75   +5.00 1 1 1 1 1   888    0 5.10 58.57 ----- 19.2 22.9 162.0 27.1 14.5 -27.3 13.2 -24.1 12.2 -25.9 13.1 -27.7
2025-09-29T09:30:00.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:30:00.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:30:00.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.312227
2025-09-29T09:30:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:30:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:30:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:30:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:30:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:30:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:29:25', tmtdew=3.33, humidity=81.0, cloud=0.0, wind=28.27, temperature=9.38, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:29:36.413', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:30:00.316 [DEBUG] [Thread-152159] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:00.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:30:00.402 [DEBUG] [Thread-152162] [transport.py] [_log()] starting thread (client mode): 0x2b91eaa0
2025-09-29T09:30:00.402 [DEBUG] [Thread-152162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:00.416 [DEBUG] [Thread-152162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:30:00.417 [INFO] [Thread-152162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:00.424 [DEBUG] [Thread-152162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:00.425 [DEBUG] [Thread-152162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:00.425 [DEBUG] [Thread-152162] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:00.425 [DEBUG] [Thread-152162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:00.425 [DEBUG] [Thread-152162] [transport.py] [_log()] Compression: none
2025-09-29T09:30:00.425 [DEBUG] [Thread-152162] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:00.481 [DEBUG] [Thread-152162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:00.481 [DEBUG] [Thread-152162] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:00.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:30:00.482 [DEBUG] [Thread-152162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:30:00.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:00.538 [DEBUG] [Thread-152162] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:00.538 [DEBUG] [Thread-152162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:00.538 [DEBUG] [Thread-152162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:00.538 [DEBUG] [Thread-152162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:30:00.538 [DEBUG] [Thread-152162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:00.552 [INFO] [Thread-152162] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:00.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:30:00.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:01.546 [DEBUG] [Thread-152162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:01.546 [DEBUG] [Thread-152162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:01.594 [DEBUG] [Thread-152162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:01.594 [DEBUG] [Thread-152162] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:01.602 [DEBUG] [Thread-152162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:01.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:01.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:30:01.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:30:01.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:01.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:01.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:01.634 [DEBUG] [Thread-152162] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:04.424 [DEBUG] [Thread-152164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:30:11.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:30:11.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:30:11.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:30:12.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 29, 57), 3.49, 79.97, 0.0, 27.77, 9.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:30:12.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:29:57
2025-09-29T09:30:12.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:30:12.505 [DEBUG] [Thread-152165] [transport.py] [_log()] starting thread (client mode): 0x2e34bdc0
2025-09-29T09:30:12.505 [DEBUG] [Thread-152165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:12.524 [DEBUG] [Thread-152165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:30:12.524 [INFO] [Thread-152165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] Compression: none
2025-09-29T09:30:12.527 [DEBUG] [Thread-152165] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:12.542 [DEBUG] [Thread-152165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:12.542 [DEBUG] [Thread-152165] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:12.543 [DEBUG] [Thread-152165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:30:12.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:30:12.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:12.545 [DEBUG] [Thread-152165] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:12.545 [DEBUG] [Thread-152165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:12.545 [DEBUG] [Thread-152165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:12.545 [DEBUG] [Thread-152165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:30:12.545 [DEBUG] [Thread-152165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:12.573 [INFO] [Thread-152165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:12.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:13.232 [DEBUG] [Thread-152165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:13.233 [DEBUG] [Thread-152165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:13.233 [DEBUG] [Thread-152165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:30:13.274 [DEBUG] [Thread-152165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:13.274 [DEBUG] [Thread-152165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:13.276 [DEBUG] [Thread-152165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:13.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:13.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:30:13.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:30:13.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:30:13.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:13.297 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:30:13.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:13.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:13.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:30:13.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.312227 -999.00   +9.20  22.85     75   +5.00 1 1 1 1 1   888    0 5.10 58.57 ----- 19.2 22.9 162.0 27.1 14.5 -27.3 13.2 -24.1 12.2 -25.9 13.1 -27.7
2025-09-29T09:30:13.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:30:13.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:30:13.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.312227
2025-09-29T09:30:13.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:30:13.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:30:13.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:30:13.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:30:13.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:30:13.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:29:57', tmtdew=3.49, humidity=79.97, cloud=0.0, wind=27.77, temperature=9.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:29:36.413', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:30:13.299 [DEBUG] [Thread-152165] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:13.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:30:13.394 [DEBUG] [Thread-152168] [transport.py] [_log()] starting thread (client mode): 0x2b94ffd0
2025-09-29T09:30:13.395 [DEBUG] [Thread-152168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:13.410 [DEBUG] [Thread-152168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:30:13.411 [INFO] [Thread-152168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:30:13.422 [DEBUG] [Thread-152168] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:13.423 [DEBUG] [Thread-152168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:13.424 [DEBUG] [Thread-152168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:13.424 [DEBUG] [Thread-152168] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:13.424 [DEBUG] [Thread-152168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:13.424 [DEBUG] [Thread-152168] [transport.py] [_log()] Compression: none
2025-09-29T09:30:13.424 [DEBUG] [Thread-152168] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:13.479 [DEBUG] [Thread-152168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:13.480 [DEBUG] [Thread-152168] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:13.480 [DEBUG] [Thread-152168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:30:13.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:30:13.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:13.535 [DEBUG] [Thread-152168] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:13.535 [DEBUG] [Thread-152168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:13.535 [DEBUG] [Thread-152168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:13.535 [DEBUG] [Thread-152168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:30:13.536 [DEBUG] [Thread-152168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:13.556 [INFO] [Thread-152168] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:13.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:30:13.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:14.545 [DEBUG] [Thread-152168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:14.546 [DEBUG] [Thread-152168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:14.593 [DEBUG] [Thread-152168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:14.593 [DEBUG] [Thread-152168] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:14.602 [DEBUG] [Thread-152168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:14.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:14.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:30:14.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:30:14.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:14.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:14.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:14.642 [DEBUG] [Thread-152168] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:19.459 [DEBUG] [Thread-152170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:30:21.856 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:30:21.857 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:30:24.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:30:24.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:30:24.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:30:25.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 29, 57), 3.49, 79.97, 0.0, 27.77, 9.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:30:25.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:29:57
2025-09-29T09:30:25.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:30:25.486 [DEBUG] [Thread-152171] [transport.py] [_log()] starting thread (client mode): 0x2b9decb0
2025-09-29T09:30:25.486 [DEBUG] [Thread-152171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:25.496 [DEBUG] [Thread-152171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:30:25.496 [INFO] [Thread-152171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] Compression: none
2025-09-29T09:30:25.497 [DEBUG] [Thread-152171] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:25.505 [DEBUG] [Thread-152171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:25.505 [DEBUG] [Thread-152171] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:25.505 [DEBUG] [Thread-152171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:30:25.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:30:25.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:25.506 [DEBUG] [Thread-152171] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:25.506 [DEBUG] [Thread-152171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:25.506 [DEBUG] [Thread-152171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:25.506 [DEBUG] [Thread-152171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:30:25.506 [DEBUG] [Thread-152171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:25.516 [INFO] [Thread-152171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:25.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:26.107 [DEBUG] [Thread-152171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:26.107 [DEBUG] [Thread-152171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:26.107 [DEBUG] [Thread-152171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:30:26.148 [DEBUG] [Thread-152171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:26.148 [DEBUG] [Thread-152171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:26.151 [DEBUG] [Thread-152171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:26.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:26.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:30:26.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:30:26.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:30:26.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:26.167 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:30:26.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:26.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:26.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:30:26.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.312575 -999.00   +9.00  19.38     76   +5.00 1 2 1 1 1   888    0 5.29 62.88 ----- 16.3 19.4 140.2 25.8 14.2 -24.7 13.1 -21.6 12.1 -23.9 13.0 -26.0
2025-09-29T09:30:26.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:30:26.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:30:26.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.312575
2025-09-29T09:30:26.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:30:26.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:30:26.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:30:26.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:30:26.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:30:26.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:29:57', tmtdew=3.49, humidity=79.97, cloud=0.0, wind=27.77, temperature=9.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:30:06.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:30:26.169 [DEBUG] [Thread-152171] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:26.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:30:26.264 [DEBUG] [Thread-152174] [transport.py] [_log()] starting thread (client mode): 0x2b9dfdf0
2025-09-29T09:30:26.264 [DEBUG] [Thread-152174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:26.283 [DEBUG] [Thread-152174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:30:26.283 [INFO] [Thread-152174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:30:26.290 [DEBUG] [Thread-152174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:26.291 [DEBUG] [Thread-152174] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:26.292 [DEBUG] [Thread-152174] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:26.292 [DEBUG] [Thread-152174] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:26.292 [DEBUG] [Thread-152174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:26.292 [DEBUG] [Thread-152174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:26.292 [DEBUG] [Thread-152174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:26.292 [DEBUG] [Thread-152174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:26.292 [DEBUG] [Thread-152174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:26.292 [DEBUG] [Thread-152174] [transport.py] [_log()] Compression: none
2025-09-29T09:30:26.293 [DEBUG] [Thread-152174] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:26.354 [DEBUG] [Thread-152174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:26.354 [DEBUG] [Thread-152174] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:26.355 [DEBUG] [Thread-152174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:30:26.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:30:26.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:26.411 [DEBUG] [Thread-152174] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:26.411 [DEBUG] [Thread-152174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:26.411 [DEBUG] [Thread-152174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:26.411 [DEBUG] [Thread-152174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:30:26.411 [DEBUG] [Thread-152174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:26.430 [INFO] [Thread-152174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:26.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:30:26.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:27.428 [DEBUG] [Thread-152174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:27.428 [DEBUG] [Thread-152174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:27.477 [DEBUG] [Thread-152174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:27.478 [DEBUG] [Thread-152174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:27.486 [DEBUG] [Thread-152174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:27.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:27.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:30:27.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:30:27.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:27.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:27.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:27.525 [DEBUG] [Thread-152174] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:29.852 [DEBUG] [Thread-152176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:30:34.503 [DEBUG] [Thread-152177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:30:37.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:30:37.524 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:30:37.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:30:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 30, 29), 3.33, 80.67, 0.0, 27.3, 9.12, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:30:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:30:29
2025-09-29T09:30:38.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:30:38.381 [DEBUG] [Thread-152178] [transport.py] [_log()] starting thread (client mode): 0x2b9dddb0
2025-09-29T09:30:38.381 [DEBUG] [Thread-152178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:38.400 [DEBUG] [Thread-152178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:30:38.400 [INFO] [Thread-152178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] Compression: none
2025-09-29T09:30:38.403 [DEBUG] [Thread-152178] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:38.415 [DEBUG] [Thread-152178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:38.415 [DEBUG] [Thread-152178] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:38.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:30:38.415 [DEBUG] [Thread-152178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:30:38.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:38.416 [DEBUG] [Thread-152178] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:38.416 [DEBUG] [Thread-152178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:38.416 [DEBUG] [Thread-152178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:38.416 [DEBUG] [Thread-152178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:30:38.416 [DEBUG] [Thread-152178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:38.425 [INFO] [Thread-152178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:38.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:39.055 [DEBUG] [Thread-152178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:39.055 [DEBUG] [Thread-152178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:39.055 [DEBUG] [Thread-152178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:30:39.097 [DEBUG] [Thread-152178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:39.097 [DEBUG] [Thread-152178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:39.099 [DEBUG] [Thread-152178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:39.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:39.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:30:39.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:30:39.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:30:39.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:39.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:30:39.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:39.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.312575 -999.00   +9.00  19.38     76   +5.00 1 2 1 1 1   888    0 5.29 62.88 ----- 16.3 19.4 140.2 25.8 14.2 -24.7 13.1 -21.6 12.1 -23.9 13.0 -26.0
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.312575
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:30:39.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:30:29', tmtdew=3.33, humidity=80.67, cloud=0.0, wind=27.3, temperature=9.12, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:30:06.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:30:39.117 [DEBUG] [Thread-152178] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:39.192 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:30:39.205 [DEBUG] [Thread-152181] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-29T09:30:39.205 [DEBUG] [Thread-152181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:39.220 [DEBUG] [Thread-152181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:30:39.220 [INFO] [Thread-152181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] Compression: none
2025-09-29T09:30:39.228 [DEBUG] [Thread-152181] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:39.286 [DEBUG] [Thread-152181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:39.286 [DEBUG] [Thread-152181] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:39.286 [DEBUG] [Thread-152181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:30:39.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:30:39.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:39.342 [DEBUG] [Thread-152181] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:39.342 [DEBUG] [Thread-152181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:39.342 [DEBUG] [Thread-152181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:39.342 [DEBUG] [Thread-152181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:30:39.343 [DEBUG] [Thread-152181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:39.356 [INFO] [Thread-152181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:39.356 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:30:39.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:40.326 [DEBUG] [Thread-152181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:40.326 [DEBUG] [Thread-152181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:40.374 [DEBUG] [Thread-152181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:40.374 [DEBUG] [Thread-152181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:40.384 [DEBUG] [Thread-152181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:40.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:40.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:30:40.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:30:40.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:40.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:40.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:40.422 [DEBUG] [Thread-152181] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:49.548 [DEBUG] [Thread-152183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:30:50.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:30:50.425 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:30:50.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:30:50.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 30, 29), 3.33, 80.67, 0.0, 27.3, 9.12, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:30:50.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:30:29
2025-09-29T09:30:51.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:30:51.255 [DEBUG] [Thread-152184] [transport.py] [_log()] starting thread (client mode): 0x2b94dae0
2025-09-29T09:30:51.255 [DEBUG] [Thread-152184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:51.275 [DEBUG] [Thread-152184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:30:51.275 [INFO] [Thread-152184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:30:51.278 [DEBUG] [Thread-152184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:51.278 [DEBUG] [Thread-152184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:30:51.278 [DEBUG] [Thread-152184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] Compression: none
2025-09-29T09:30:51.279 [DEBUG] [Thread-152184] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:51.298 [DEBUG] [Thread-152184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:51.298 [DEBUG] [Thread-152184] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:51.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:30:51.299 [DEBUG] [Thread-152184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:30:51.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:51.300 [DEBUG] [Thread-152184] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:51.300 [DEBUG] [Thread-152184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:51.300 [DEBUG] [Thread-152184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:51.300 [DEBUG] [Thread-152184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:30:51.301 [DEBUG] [Thread-152184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:51.320 [INFO] [Thread-152184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:51.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:51.969 [DEBUG] [Thread-152184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:51.969 [DEBUG] [Thread-152184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:51.969 [DEBUG] [Thread-152184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:30:52.010 [DEBUG] [Thread-152184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:52.010 [DEBUG] [Thread-152184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:52.013 [DEBUG] [Thread-152184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:52.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:52.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:30:52.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:30:52.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:30:52.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:52.035 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:30:52.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:52.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:52.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:30:52.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.312575 -999.00   +9.00  19.38     76   +5.00 1 2 1 1 1   888    0 5.29 62.88 ----- 16.3 19.4 140.2 25.8 14.2 -24.7 13.1 -21.6 12.1 -23.9 13.0 -26.0
2025-09-29T09:30:52.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:30:52.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:30:52.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.312575
2025-09-29T09:30:52.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:30:52.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:30:52.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:30:52.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:30:52.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:30:52.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:30:29', tmtdew=3.33, humidity=80.67, cloud=0.0, wind=27.3, temperature=9.12, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:30:06.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:30:52.037 [DEBUG] [Thread-152184] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:30:52.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:30:52.129 [DEBUG] [Thread-152187] [transport.py] [_log()] starting thread (client mode): 0x2e3df400
2025-09-29T09:30:52.129 [DEBUG] [Thread-152187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:30:52.144 [DEBUG] [Thread-152187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:30:52.144 [INFO] [Thread-152187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] client lang: <none>
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] server lang: <none>
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] kex follows: False
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] Compression: none
2025-09-29T09:30:52.152 [DEBUG] [Thread-152187] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:30:52.209 [DEBUG] [Thread-152187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:30:52.209 [DEBUG] [Thread-152187] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:30:52.209 [DEBUG] [Thread-152187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:30:52.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:30:52.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:30:52.270 [DEBUG] [Thread-152187] [transport.py] [_log()] userauth is OK
2025-09-29T09:30:52.270 [DEBUG] [Thread-152187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:30:52.270 [DEBUG] [Thread-152187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:30:52.270 [DEBUG] [Thread-152187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:30:52.271 [DEBUG] [Thread-152187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:30:52.288 [INFO] [Thread-152187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:30:52.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:30:52.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:30:53.339 [DEBUG] [Thread-152187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:30:53.339 [DEBUG] [Thread-152187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:30:53.387 [DEBUG] [Thread-152187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:30:53.387 [DEBUG] [Thread-152187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:30:53.396 [DEBUG] [Thread-152187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:30:53.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:30:53.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:30:53.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:30:53.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:30:53.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:30:53.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:30:53.430 [DEBUG] [Thread-152187] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:03.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:31:03.431 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:31:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:31:04.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 30, 29), 3.33, 80.67, 0.0, 27.3, 9.12, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:31:04.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:30:29
2025-09-29T09:31:04.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:31:04.291 [DEBUG] [Thread-152189] [transport.py] [_log()] starting thread (client mode): 0x2b94c910
2025-09-29T09:31:04.291 [DEBUG] [Thread-152189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:04.308 [DEBUG] [Thread-152189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:31:04.308 [INFO] [Thread-152189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:04.311 [DEBUG] [Thread-152189] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:04.312 [DEBUG] [Thread-152189] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:04.312 [DEBUG] [Thread-152189] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:04.312 [DEBUG] [Thread-152189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:04.312 [DEBUG] [Thread-152189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:04.312 [DEBUG] [Thread-152189] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:04.312 [DEBUG] [Thread-152189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:04.312 [DEBUG] [Thread-152189] [transport.py] [_log()] Compression: none
2025-09-29T09:31:04.312 [DEBUG] [Thread-152189] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:04.320 [DEBUG] [Thread-152189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:04.320 [DEBUG] [Thread-152189] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:04.320 [DEBUG] [Thread-152189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:31:04.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:31:04.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:04.321 [DEBUG] [Thread-152189] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:04.321 [DEBUG] [Thread-152189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:04.321 [DEBUG] [Thread-152189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:04.322 [DEBUG] [Thread-152189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:31:04.322 [DEBUG] [Thread-152189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:04.334 [INFO] [Thread-152189] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:04.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:04.590 [DEBUG] [Thread-152191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:31:04.957 [DEBUG] [Thread-152189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:04.957 [DEBUG] [Thread-152189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:04.958 [DEBUG] [Thread-152189] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:31:04.998 [DEBUG] [Thread-152189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:04.998 [DEBUG] [Thread-152189] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:05.001 [DEBUG] [Thread-152189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:05.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:05.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:31:05.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:31:05.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:31:05.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:05.023 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:31:05.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:05.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:05.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:31:05.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.312922 -999.00   +9.10  22.28     76   +5.10 1 2 1 1 1   888    0 5.28 62.90 ----- 29.1 22.3 138.2 32.1 14.0 -22.0 13.0 -19.9 12.1 -22.9 12.9 -23.7
2025-09-29T09:31:05.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:31:05.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:31:05.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.312922
2025-09-29T09:31:05.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:31:05.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:31:05.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:31:05.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:31:05.026 [DEBUG] [Thread-152189] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:05.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:31:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:30:29', tmtdew=3.33, humidity=80.67, cloud=0.0, wind=27.3, temperature=9.12, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:30:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:31:05.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:31:05.122 [DEBUG] [Thread-152193] [transport.py] [_log()] starting thread (client mode): 0x2b91d5d0
2025-09-29T09:31:05.122 [DEBUG] [Thread-152193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:05.137 [DEBUG] [Thread-152193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:31:05.137 [INFO] [Thread-152193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:31:05.144 [DEBUG] [Thread-152193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:05.144 [DEBUG] [Thread-152193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:31:05.144 [DEBUG] [Thread-152193] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:05.144 [DEBUG] [Thread-152193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:05.144 [DEBUG] [Thread-152193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:05.144 [DEBUG] [Thread-152193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] Compression: none
2025-09-29T09:31:05.145 [DEBUG] [Thread-152193] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:05.204 [DEBUG] [Thread-152193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:05.205 [DEBUG] [Thread-152193] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:05.205 [DEBUG] [Thread-152193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:31:05.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:31:05.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:05.263 [DEBUG] [Thread-152193] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:05.263 [DEBUG] [Thread-152193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:05.263 [DEBUG] [Thread-152193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:05.263 [DEBUG] [Thread-152193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:31:05.263 [DEBUG] [Thread-152193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:05.282 [INFO] [Thread-152193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:05.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:31:05.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:06.275 [DEBUG] [Thread-152193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:06.275 [DEBUG] [Thread-152193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:06.322 [DEBUG] [Thread-152193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:06.322 [DEBUG] [Thread-152193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:06.331 [DEBUG] [Thread-152193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:06.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:06.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:31:06.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:31:06.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:06.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:06.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:06.365 [DEBUG] [Thread-152193] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:16.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:31:16.367 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:31:16.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:31:16.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 31, 1), 3.17, 81.38, 0.0, 28.34, 8.9, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:31:16.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:31:01
2025-09-29T09:31:17.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:31:17.232 [DEBUG] [Thread-152195] [transport.py] [_log()] starting thread (client mode): 0x2b91fcd0
2025-09-29T09:31:17.232 [DEBUG] [Thread-152195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:17.252 [DEBUG] [Thread-152195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:31:17.253 [INFO] [Thread-152195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] Compression: none
2025-09-29T09:31:17.254 [DEBUG] [Thread-152195] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:17.270 [DEBUG] [Thread-152195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:17.271 [DEBUG] [Thread-152195] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:17.271 [DEBUG] [Thread-152195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:31:17.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:31:17.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:17.272 [DEBUG] [Thread-152195] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:17.272 [DEBUG] [Thread-152195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:17.272 [DEBUG] [Thread-152195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:17.272 [DEBUG] [Thread-152195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:31:17.272 [DEBUG] [Thread-152195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:17.281 [INFO] [Thread-152195] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:17.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:17.807 [DEBUG] [Thread-152195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:17.807 [DEBUG] [Thread-152195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:17.807 [DEBUG] [Thread-152195] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:31:17.848 [DEBUG] [Thread-152195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:17.848 [DEBUG] [Thread-152195] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:17.850 [DEBUG] [Thread-152195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:17.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:17.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:31:17.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:31:17.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:31:17.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:17.863 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:31:17.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.312922 -999.00   +9.10  22.28     76   +5.10 1 2 1 1 1   888    0 5.28 62.90 ----- 29.1 22.3 138.2 32.1 14.0 -22.0 13.0 -19.9 12.1 -22.9 12.9 -23.7
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.312922
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:31:17.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:31:01', tmtdew=3.17, humidity=81.38, cloud=0.0, wind=28.34, temperature=8.9, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:30:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:31:17.864 [DEBUG] [Thread-152195] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:17.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:31:17.946 [DEBUG] [Thread-152198] [transport.py] [_log()] starting thread (client mode): 0x2b9ded40
2025-09-29T09:31:17.946 [DEBUG] [Thread-152198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:17.961 [DEBUG] [Thread-152198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:31:17.961 [INFO] [Thread-152198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:31:17.968 [DEBUG] [Thread-152198] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] Compression: none
2025-09-29T09:31:17.969 [DEBUG] [Thread-152198] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:18.025 [DEBUG] [Thread-152198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:18.025 [DEBUG] [Thread-152198] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:18.025 [DEBUG] [Thread-152198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:31:18.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:31:18.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:18.083 [DEBUG] [Thread-152198] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:18.083 [DEBUG] [Thread-152198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:18.083 [DEBUG] [Thread-152198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:18.083 [DEBUG] [Thread-152198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:31:18.083 [DEBUG] [Thread-152198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:18.097 [INFO] [Thread-152198] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:18.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:31:18.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:19.097 [DEBUG] [Thread-152198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:19.097 [DEBUG] [Thread-152198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:19.145 [DEBUG] [Thread-152198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:19.145 [DEBUG] [Thread-152198] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:19.153 [DEBUG] [Thread-152198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:19.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:19.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:31:19.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:31:19.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:19.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:19.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:19.186 [DEBUG] [Thread-152198] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:19.617 [DEBUG] [Thread-152200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:31:21.999 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:31:22.000 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:31:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:31:29.181 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:31:29.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:31:29.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 31, 1), 3.17, 81.38, 0.0, 28.34, 8.9, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:31:29.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:31:01
2025-09-29T09:31:29.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:31:29.899 [DEBUG] [Thread-152201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:31:30.128 [DEBUG] [Thread-152202] [transport.py] [_log()] starting thread (client mode): 0x2b94ffd0
2025-09-29T09:31:30.128 [DEBUG] [Thread-152202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:30.147 [DEBUG] [Thread-152202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:31:30.147 [INFO] [Thread-152202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:31:30.150 [DEBUG] [Thread-152202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:30.150 [DEBUG] [Thread-152202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:30.151 [DEBUG] [Thread-152202] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:30.152 [DEBUG] [Thread-152202] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:30.152 [DEBUG] [Thread-152202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:30.152 [DEBUG] [Thread-152202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:30.152 [DEBUG] [Thread-152202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:30.152 [DEBUG] [Thread-152202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:30.152 [DEBUG] [Thread-152202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:30.152 [DEBUG] [Thread-152202] [transport.py] [_log()] Compression: none
2025-09-29T09:31:30.153 [DEBUG] [Thread-152202] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:30.167 [DEBUG] [Thread-152202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:30.168 [DEBUG] [Thread-152202] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:30.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:31:30.169 [DEBUG] [Thread-152202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:31:30.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:30.171 [DEBUG] [Thread-152202] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:30.171 [DEBUG] [Thread-152202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:30.172 [DEBUG] [Thread-152202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:30.172 [DEBUG] [Thread-152202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:31:30.172 [DEBUG] [Thread-152202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:30.195 [INFO] [Thread-152202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:30.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:30.913 [DEBUG] [Thread-152202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:30.913 [DEBUG] [Thread-152202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:30.914 [DEBUG] [Thread-152202] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:31:30.954 [DEBUG] [Thread-152202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:30.955 [DEBUG] [Thread-152202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:30.957 [DEBUG] [Thread-152202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:30.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:30.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:31:30.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:31:30.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:31:30.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:30.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:31:30.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:30.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:30.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:31:30.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.312922 -999.00   +9.10  22.28     76   +5.10 1 2 1 1 1   888    0 5.28 62.90 ----- 29.1 22.3 138.2 32.1 14.0 -22.0 13.0 -19.9 12.1 -22.9 12.9 -23.7
2025-09-29T09:31:30.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:31:30.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:31:30.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.312922
2025-09-29T09:31:30.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:31:30.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:31:30.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:31:30.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:31:30.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:31:30.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:31:01', tmtdew=3.17, humidity=81.38, cloud=0.0, wind=28.34, temperature=8.9, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:30:36.461', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:31:30.985 [DEBUG] [Thread-152202] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:31.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:31:31.081 [DEBUG] [Thread-152205] [transport.py] [_log()] starting thread (client mode): 0x2b91f460
2025-09-29T09:31:31.081 [DEBUG] [Thread-152205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:31.096 [DEBUG] [Thread-152205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:31:31.096 [INFO] [Thread-152205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:31:31.104 [DEBUG] [Thread-152205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:31.104 [DEBUG] [Thread-152205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:31:31.104 [DEBUG] [Thread-152205] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:31.104 [DEBUG] [Thread-152205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:31.104 [DEBUG] [Thread-152205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:31.104 [DEBUG] [Thread-152205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:31.104 [DEBUG] [Thread-152205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:31.105 [DEBUG] [Thread-152205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:31.105 [DEBUG] [Thread-152205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:31.105 [DEBUG] [Thread-152205] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:31.105 [DEBUG] [Thread-152205] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:31.105 [DEBUG] [Thread-152205] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:31.105 [DEBUG] [Thread-152205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:31.105 [DEBUG] [Thread-152205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:31.106 [DEBUG] [Thread-152205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:31.106 [DEBUG] [Thread-152205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:31.106 [DEBUG] [Thread-152205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:31.106 [DEBUG] [Thread-152205] [transport.py] [_log()] Compression: none
2025-09-29T09:31:31.106 [DEBUG] [Thread-152205] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:31.163 [DEBUG] [Thread-152205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:31.164 [DEBUG] [Thread-152205] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:31.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:31:31.165 [DEBUG] [Thread-152205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:31:31.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:31.219 [DEBUG] [Thread-152205] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:31.219 [DEBUG] [Thread-152205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:31.219 [DEBUG] [Thread-152205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:31.219 [DEBUG] [Thread-152205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:31:31.220 [DEBUG] [Thread-152205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:31.239 [INFO] [Thread-152205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:31.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:31:31.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:32.334 [DEBUG] [Thread-152205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:32.335 [DEBUG] [Thread-152205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:32.382 [DEBUG] [Thread-152205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:32.382 [DEBUG] [Thread-152205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:32.391 [DEBUG] [Thread-152205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:32.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:32.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:31:32.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:31:32.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:32.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:32.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:32.430 [DEBUG] [Thread-152205] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:34.651 [DEBUG] [Thread-152207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:31:42.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:31:42.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:31:42.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:31:43.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 31, 33), 3.13, 81.56, 0.0, 29.25, 8.64, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:31:43.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:31:33
2025-09-29T09:31:43.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:31:43.263 [DEBUG] [Thread-152208] [transport.py] [_log()] starting thread (client mode): 0x2b94f640
2025-09-29T09:31:43.264 [DEBUG] [Thread-152208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:43.284 [DEBUG] [Thread-152208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:31:43.284 [INFO] [Thread-152208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:31:43.287 [DEBUG] [Thread-152208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:43.287 [DEBUG] [Thread-152208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:31:43.287 [DEBUG] [Thread-152208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:43.287 [DEBUG] [Thread-152208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:43.288 [DEBUG] [Thread-152208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:43.289 [DEBUG] [Thread-152208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:43.289 [DEBUG] [Thread-152208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:43.289 [DEBUG] [Thread-152208] [transport.py] [_log()] Compression: none
2025-09-29T09:31:43.289 [DEBUG] [Thread-152208] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:43.306 [DEBUG] [Thread-152208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:43.306 [DEBUG] [Thread-152208] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:43.307 [DEBUG] [Thread-152208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:31:43.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:31:43.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:43.309 [DEBUG] [Thread-152208] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:43.309 [DEBUG] [Thread-152208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:43.309 [DEBUG] [Thread-152208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:43.309 [DEBUG] [Thread-152208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:31:43.309 [DEBUG] [Thread-152208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:43.327 [INFO] [Thread-152208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:43.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:43.902 [DEBUG] [Thread-152208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:43.902 [DEBUG] [Thread-152208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:43.903 [DEBUG] [Thread-152208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:31:43.943 [DEBUG] [Thread-152208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:43.943 [DEBUG] [Thread-152208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:43.946 [DEBUG] [Thread-152208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:43.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:43.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:31:43.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:31:43.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:31:43.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:43.968 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:31:43.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:43.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:43.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:31:43.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.313269 -999.00   +8.70  22.77     76   +4.80 1 2 1 1 1   888    0 5.32 65.57 ----- 23.3 22.8 141.4 34.6 13.7 -20.5 12.8 -19.0 12.0 -22.0 12.7 -22.7
2025-09-29T09:31:43.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:31:43.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:31:43.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.313269
2025-09-29T09:31:43.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:31:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:31:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:31:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:31:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:31:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:31:33', tmtdew=3.13, humidity=81.56, cloud=0.0, wind=29.25, temperature=8.64, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:31:06.442', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:31:43.971 [DEBUG] [Thread-152208] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:44.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:31:44.069 [DEBUG] [Thread-152211] [transport.py] [_log()] starting thread (client mode): 0x2e3de230
2025-09-29T09:31:44.069 [DEBUG] [Thread-152211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:44.084 [DEBUG] [Thread-152211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:31:44.084 [INFO] [Thread-152211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:31:44.091 [DEBUG] [Thread-152211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:44.092 [DEBUG] [Thread-152211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:44.093 [DEBUG] [Thread-152211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:44.093 [DEBUG] [Thread-152211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:44.093 [DEBUG] [Thread-152211] [transport.py] [_log()] Compression: none
2025-09-29T09:31:44.093 [DEBUG] [Thread-152211] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:44.150 [DEBUG] [Thread-152211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:44.151 [DEBUG] [Thread-152211] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:44.152 [DEBUG] [Thread-152211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:31:44.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:31:44.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:44.207 [DEBUG] [Thread-152211] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:44.207 [DEBUG] [Thread-152211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:44.207 [DEBUG] [Thread-152211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:44.207 [DEBUG] [Thread-152211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:31:44.207 [DEBUG] [Thread-152211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:44.226 [INFO] [Thread-152211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:44.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:31:44.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:45.188 [DEBUG] [Thread-152211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:45.188 [DEBUG] [Thread-152211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:45.236 [DEBUG] [Thread-152211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:45.236 [DEBUG] [Thread-152211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:45.245 [DEBUG] [Thread-152211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:45.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:45.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:31:45.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:31:45.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:45.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:45.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:45.280 [DEBUG] [Thread-152211] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:49.678 [DEBUG] [Thread-152213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:31:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:31:55.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:31:55.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:31:55.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 31, 33), 3.13, 81.56, 0.0, 29.25, 8.64, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:31:55.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:31:33
2025-09-29T09:31:55.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:31:56.149 [DEBUG] [Thread-152214] [transport.py] [_log()] starting thread (client mode): 0x2e348880
2025-09-29T09:31:56.149 [DEBUG] [Thread-152214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:56.168 [DEBUG] [Thread-152214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:31:56.168 [INFO] [Thread-152214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:31:56.171 [DEBUG] [Thread-152214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:56.171 [DEBUG] [Thread-152214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:31:56.171 [DEBUG] [Thread-152214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:56.171 [DEBUG] [Thread-152214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:56.171 [DEBUG] [Thread-152214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] Compression: none
2025-09-29T09:31:56.172 [DEBUG] [Thread-152214] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:56.187 [DEBUG] [Thread-152214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:56.188 [DEBUG] [Thread-152214] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:56.188 [DEBUG] [Thread-152214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:31:56.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:31:56.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:56.188 [DEBUG] [Thread-152214] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:56.188 [DEBUG] [Thread-152214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:56.189 [DEBUG] [Thread-152214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:56.189 [DEBUG] [Thread-152214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:31:56.189 [DEBUG] [Thread-152214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:56.203 [INFO] [Thread-152214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:56.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:56.908 [DEBUG] [Thread-152214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:56.908 [DEBUG] [Thread-152214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:56.908 [DEBUG] [Thread-152214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:31:56.949 [DEBUG] [Thread-152214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:56.949 [DEBUG] [Thread-152214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:56.951 [DEBUG] [Thread-152214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:56.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:56.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:31:56.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:31:56.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:31:56.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:56.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:31:56.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.313269 -999.00   +8.70  22.77     76   +4.80 1 2 1 1 1   888    0 5.32 65.57 ----- 23.3 22.8 141.4 34.6 13.7 -20.5 12.8 -19.0 12.0 -22.0 12.7 -22.7
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.313269
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:31:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:31:33', tmtdew=3.13, humidity=81.56, cloud=0.0, wind=29.25, temperature=8.64, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:31:06.442', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:31:56.972 [DEBUG] [Thread-152214] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:31:57.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:31:57.053 [DEBUG] [Thread-152217] [transport.py] [_log()] starting thread (client mode): 0x2b9ddf00
2025-09-29T09:31:57.053 [DEBUG] [Thread-152217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:31:57.074 [DEBUG] [Thread-152217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:31:57.074 [INFO] [Thread-152217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] client lang: <none>
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] server lang: <none>
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] kex follows: False
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:31:57.081 [DEBUG] [Thread-152217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:31:57.082 [DEBUG] [Thread-152217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:31:57.082 [DEBUG] [Thread-152217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:31:57.082 [DEBUG] [Thread-152217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:31:57.082 [DEBUG] [Thread-152217] [transport.py] [_log()] Compression: none
2025-09-29T09:31:57.082 [DEBUG] [Thread-152217] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:31:57.137 [DEBUG] [Thread-152217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:31:57.138 [DEBUG] [Thread-152217] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:31:57.138 [DEBUG] [Thread-152217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:31:57.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:31:57.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:31:57.195 [DEBUG] [Thread-152217] [transport.py] [_log()] userauth is OK
2025-09-29T09:31:57.195 [DEBUG] [Thread-152217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:31:57.195 [DEBUG] [Thread-152217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:31:57.195 [DEBUG] [Thread-152217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:31:57.195 [DEBUG] [Thread-152217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:31:57.208 [INFO] [Thread-152217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:31:57.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:31:57.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:31:58.209 [DEBUG] [Thread-152217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:31:58.209 [DEBUG] [Thread-152217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:31:58.257 [DEBUG] [Thread-152217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:31:58.257 [DEBUG] [Thread-152217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:31:58.265 [DEBUG] [Thread-152217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:31:58.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:31:58.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:31:58.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:31:58.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:31:58.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:31:58.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:31:58.297 [DEBUG] [Thread-152217] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:32:04.726 [DEBUG] [Thread-152219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:32:08.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:32:08.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:32:08.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:32:08.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 32, 5), 3.09, 81.8, 0.0, 30.26, 8.64, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:32:08.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:32:05
2025-09-29T09:32:08.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:32:09.143 [DEBUG] [Thread-152220] [transport.py] [_log()] starting thread (client mode): 0x2e3de8f0
2025-09-29T09:32:09.143 [DEBUG] [Thread-152220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:32:09.163 [DEBUG] [Thread-152220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:32:09.163 [INFO] [Thread-152220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] client lang: <none>
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] server lang: <none>
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] kex follows: False
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] Compression: none
2025-09-29T09:32:09.166 [DEBUG] [Thread-152220] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:32:09.184 [DEBUG] [Thread-152220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:32:09.184 [DEBUG] [Thread-152220] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:32:09.185 [DEBUG] [Thread-152220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:32:09.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:32:09.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:32:09.228 [DEBUG] [Thread-152220] [transport.py] [_log()] userauth is OK
2025-09-29T09:32:09.229 [DEBUG] [Thread-152220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:32:09.229 [DEBUG] [Thread-152220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:32:09.229 [DEBUG] [Thread-152220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:32:09.229 [DEBUG] [Thread-152220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:32:09.261 [INFO] [Thread-152220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:32:09.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:32:09.850 [DEBUG] [Thread-152220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:32:09.850 [DEBUG] [Thread-152220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:32:09.851 [DEBUG] [Thread-152220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:32:09.891 [DEBUG] [Thread-152220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:32:09.891 [DEBUG] [Thread-152220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:32:09.893 [DEBUG] [Thread-152220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:32:09.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:32:09.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:32:09.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:32:09.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:32:09.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:32:09.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:32:09.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:32:09.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:32:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:32:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.313611 -999.00   +8.70  20.69     77   +5.00 1 2 1 1 1   888    0 5.34 64.29 ----- 17.0 20.7 141.7 25.5 13.5 -17.5 12.7 -17.8 11.9 -19.7 12.7 -20.7
2025-09-29T09:32:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:32:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:32:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.313611
2025-09-29T09:32:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:32:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:32:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:32:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:32:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:32:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:32:05', tmtdew=3.09, humidity=81.8, cloud=0.0, wind=30.26, temperature=8.64, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:31:35.990', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:32:09.918 [DEBUG] [Thread-152220] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:32:10.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:32:10.014 [DEBUG] [Thread-152223] [transport.py] [_log()] starting thread (client mode): 0x2e34ae00
2025-09-29T09:32:10.014 [DEBUG] [Thread-152223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:32:10.029 [DEBUG] [Thread-152223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:32:10.029 [INFO] [Thread-152223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:32:10.036 [DEBUG] [Thread-152223] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:32:10.036 [DEBUG] [Thread-152223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:32:10.036 [DEBUG] [Thread-152223] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:32:10.036 [DEBUG] [Thread-152223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:10.036 [DEBUG] [Thread-152223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:10.036 [DEBUG] [Thread-152223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] client lang: <none>
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] server lang: <none>
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] kex follows: False
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] Compression: none
2025-09-29T09:32:10.037 [DEBUG] [Thread-152223] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:32:10.094 [DEBUG] [Thread-152223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:32:10.095 [DEBUG] [Thread-152223] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:32:10.095 [DEBUG] [Thread-152223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:32:10.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:32:10.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:32:10.151 [DEBUG] [Thread-152223] [transport.py] [_log()] userauth is OK
2025-09-29T09:32:10.151 [DEBUG] [Thread-152223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:32:10.151 [DEBUG] [Thread-152223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:32:10.151 [DEBUG] [Thread-152223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:32:10.151 [DEBUG] [Thread-152223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:32:10.170 [INFO] [Thread-152223] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:32:10.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:32:10.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:32:11.134 [DEBUG] [Thread-152223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:32:11.134 [DEBUG] [Thread-152223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:32:11.183 [DEBUG] [Thread-152223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:32:11.183 [DEBUG] [Thread-152223] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:32:11.192 [DEBUG] [Thread-152223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:32:11.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:32:11.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:32:11.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:32:11.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:32:11.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:32:11.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:32:11.228 [DEBUG] [Thread-152223] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:32:19.759 [DEBUG] [Thread-152225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:32:21.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:32:21.222 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:32:21.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:32:21.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 32, 5), 3.09, 81.8, 0.0, 30.26, 8.64, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:32:21.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:32:05
2025-09-29T09:32:21.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:32:22.060 [DEBUG] [Thread-152226] [transport.py] [_log()] starting thread (client mode): 0x2b9cff70
2025-09-29T09:32:22.060 [DEBUG] [Thread-152226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:32:22.080 [DEBUG] [Thread-152226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:32:22.080 [INFO] [Thread-152226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:32:22.083 [DEBUG] [Thread-152226] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:32:22.083 [DEBUG] [Thread-152226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] client lang: <none>
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] server lang: <none>
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] kex follows: False
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] Compression: none
2025-09-29T09:32:22.084 [DEBUG] [Thread-152226] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:32:22.103 [DEBUG] [Thread-152226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:32:22.103 [DEBUG] [Thread-152226] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:32:22.104 [DEBUG] [Thread-152226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:32:22.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:32:22.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:32:22.105 [DEBUG] [Thread-152226] [transport.py] [_log()] userauth is OK
2025-09-29T09:32:22.105 [DEBUG] [Thread-152226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:32:22.106 [DEBUG] [Thread-152226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:32:22.106 [DEBUG] [Thread-152226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:32:22.106 [DEBUG] [Thread-152226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:32:22.130 [INFO] [Thread-152226] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:32:22.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:32:22.140 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:32:22.141 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:32:22.857 [DEBUG] [Thread-152226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:32:22.858 [DEBUG] [Thread-152226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:32:22.858 [DEBUG] [Thread-152226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:32:22.898 [DEBUG] [Thread-152226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:32:22.898 [DEBUG] [Thread-152226] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:32:22.900 [DEBUG] [Thread-152226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:32:22.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:32:22.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:32:22.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:32:22.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:32:22.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:32:22.914 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:32:22.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:32:22.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:32:22.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:32:22.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.313611 -999.00   +8.70  20.69     77   +5.00 1 2 1 1 1   888    0 5.34 64.29 ----- 17.0 20.7 141.7 25.5 13.5 -17.5 12.7 -17.8 11.9 -19.7 12.7 -20.7
2025-09-29T09:32:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:32:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:32:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.313611
2025-09-29T09:32:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:32:22.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:32:22.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:32:22.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:32:22.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:32:22.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:32:05', tmtdew=3.09, humidity=81.8, cloud=0.0, wind=30.26, temperature=8.64, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:31:35.990', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:32:22.916 [DEBUG] [Thread-152226] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:32:23.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:32:23.010 [DEBUG] [Thread-152229] [transport.py] [_log()] starting thread (client mode): 0x2b9ded40
2025-09-29T09:32:23.010 [DEBUG] [Thread-152229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:32:23.031 [DEBUG] [Thread-152229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:32:23.031 [INFO] [Thread-152229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:32:23.039 [DEBUG] [Thread-152229] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:32:23.039 [DEBUG] [Thread-152229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] client lang: <none>
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] server lang: <none>
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] kex follows: False
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:32:23.040 [DEBUG] [Thread-152229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:32:23.041 [DEBUG] [Thread-152229] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:32:23.041 [DEBUG] [Thread-152229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:32:23.041 [DEBUG] [Thread-152229] [transport.py] [_log()] Compression: none
2025-09-29T09:32:23.041 [DEBUG] [Thread-152229] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:32:23.102 [DEBUG] [Thread-152229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:32:23.102 [DEBUG] [Thread-152229] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:32:23.103 [DEBUG] [Thread-152229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:32:23.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:32:23.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:32:23.159 [DEBUG] [Thread-152229] [transport.py] [_log()] userauth is OK
2025-09-29T09:32:23.159 [DEBUG] [Thread-152229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:32:23.159 [DEBUG] [Thread-152229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:32:23.159 [DEBUG] [Thread-152229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:32:23.159 [DEBUG] [Thread-152229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:32:23.178 [INFO] [Thread-152229] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:32:23.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:32:23.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:32:24.201 [DEBUG] [Thread-152229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:32:24.201 [DEBUG] [Thread-152229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:32:24.249 [DEBUG] [Thread-152229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:32:24.249 [DEBUG] [Thread-152229] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:32:24.258 [DEBUG] [Thread-152229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:32:24.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:32:24.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:32:24.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:32:24.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:32:24.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:32:24.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:32:24.296 [DEBUG] [Thread-152229] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:32:29.949 [DEBUG] [Thread-152231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:32:34.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:32:34.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:32:34.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:32:34.800 [DEBUG] [Thread-152232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:32:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 32, 5), 3.09, 81.8, 0.0, 30.26, 8.64, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:32:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:32:05
2025-09-29T09:32:35.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:32:35.160 [DEBUG] [Thread-152233] [transport.py] [_log()] starting thread (client mode): 0x2e3dc2e0
2025-09-29T09:32:35.160 [DEBUG] [Thread-152233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:32:35.180 [DEBUG] [Thread-152233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:32:35.180 [INFO] [Thread-152233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] client lang: <none>
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] server lang: <none>
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] kex follows: False
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] Compression: none
2025-09-29T09:32:35.184 [DEBUG] [Thread-152233] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:32:35.199 [DEBUG] [Thread-152233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:32:35.199 [DEBUG] [Thread-152233] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:32:35.200 [DEBUG] [Thread-152233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:32:35.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:32:35.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:32:35.200 [DEBUG] [Thread-152233] [transport.py] [_log()] userauth is OK
2025-09-29T09:32:35.200 [DEBUG] [Thread-152233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:32:35.200 [DEBUG] [Thread-152233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:32:35.200 [DEBUG] [Thread-152233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:32:35.200 [DEBUG] [Thread-152233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:32:35.210 [INFO] [Thread-152233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:32:35.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:32:35.927 [DEBUG] [Thread-152233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:32:35.927 [DEBUG] [Thread-152233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:32:35.927 [DEBUG] [Thread-152233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:32:35.968 [DEBUG] [Thread-152233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:32:35.968 [DEBUG] [Thread-152233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:32:35.970 [DEBUG] [Thread-152233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:32:35.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:32:35.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:32:35.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:32:35.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:32:35.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:32:35.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:32:35.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:32:35.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:32:35.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:32:35.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.313611 -999.00   +8.70  20.69     77   +5.00 1 2 1 1 1   888    0 5.34 64.29 ----- 17.0 20.7 141.7 25.5 13.5 -17.5 12.7 -17.8 11.9 -19.7 12.7 -20.7
2025-09-29T09:32:35.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:32:35.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:32:35.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.313611
2025-09-29T09:32:35.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:32:35.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:32:35.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:32:35.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:32:35.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:32:35.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:32:05', tmtdew=3.09, humidity=81.8, cloud=0.0, wind=30.26, temperature=8.64, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:31:35.990', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:32:35.989 [DEBUG] [Thread-152233] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:32:36.071 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:32:36.084 [DEBUG] [Thread-152236] [transport.py] [_log()] starting thread (client mode): 0x2e3de830
2025-09-29T09:32:36.084 [DEBUG] [Thread-152236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:32:36.102 [DEBUG] [Thread-152236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:32:36.102 [INFO] [Thread-152236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] client lang: <none>
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] server lang: <none>
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] kex follows: False
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] Compression: none
2025-09-29T09:32:36.114 [DEBUG] [Thread-152236] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:32:36.169 [DEBUG] [Thread-152236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:32:36.169 [DEBUG] [Thread-152236] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:32:36.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:32:36.169 [DEBUG] [Thread-152236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:32:36.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:32:36.227 [DEBUG] [Thread-152236] [transport.py] [_log()] userauth is OK
2025-09-29T09:32:36.227 [DEBUG] [Thread-152236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:32:36.227 [DEBUG] [Thread-152236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:32:36.227 [DEBUG] [Thread-152236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:32:36.227 [DEBUG] [Thread-152236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:32:36.241 [INFO] [Thread-152236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:32:36.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:32:36.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:32:37.208 [DEBUG] [Thread-152236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:32:37.208 [DEBUG] [Thread-152236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:32:37.256 [DEBUG] [Thread-152236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:32:37.256 [DEBUG] [Thread-152236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:32:37.266 [DEBUG] [Thread-152236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:32:37.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:32:37.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:32:37.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:32:37.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:32:37.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:32:37.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:32:37.303 [DEBUG] [Thread-152236] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:32:47.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:32:47.306 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:32:47.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:32:47.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 32, 37), 3.04, 82.01, 0.0, 29.22, 8.79, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:32:47.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:32:37
2025-09-29T09:32:47.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:32:48.136 [DEBUG] [Thread-152238] [transport.py] [_log()] starting thread (client mode): 0x2b91f640
2025-09-29T09:32:48.136 [DEBUG] [Thread-152238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:32:48.155 [DEBUG] [Thread-152238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:32:48.156 [INFO] [Thread-152238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:32:48.159 [DEBUG] [Thread-152238] [transport.py] [_log()] client lang: <none>
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] server lang: <none>
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] kex follows: False
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] Compression: none
2025-09-29T09:32:48.160 [DEBUG] [Thread-152238] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:32:48.178 [DEBUG] [Thread-152238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:32:48.179 [DEBUG] [Thread-152238] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:32:48.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:32:48.180 [DEBUG] [Thread-152238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:32:48.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:32:48.181 [DEBUG] [Thread-152238] [transport.py] [_log()] userauth is OK
2025-09-29T09:32:48.182 [DEBUG] [Thread-152238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:32:48.182 [DEBUG] [Thread-152238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:32:48.182 [DEBUG] [Thread-152238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:32:48.182 [DEBUG] [Thread-152238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:32:48.205 [INFO] [Thread-152238] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:32:48.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:32:48.800 [DEBUG] [Thread-152238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:32:48.801 [DEBUG] [Thread-152238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:32:48.801 [DEBUG] [Thread-152238] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:32:48.841 [DEBUG] [Thread-152238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:32:48.841 [DEBUG] [Thread-152238] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:32:48.844 [DEBUG] [Thread-152238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:32:48.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:32:48.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:32:48.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:32:48.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:32:48.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:32:48.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:32:48.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:32:48.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:32:48.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:32:48.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.314311 -999.00   +8.90  17.43     77   +5.20 1 2 1 1 1   888    0 5.29 62.67 ----- 20.1 17.4 157.2 38.9 13.3 -18.0 12.5 -18.5 11.9 -19.8 12.6 -18.5
2025-09-29T09:32:48.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:32:48.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:32:48.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.314311
2025-09-29T09:32:48.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:32:48.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:32:48.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:32:48.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:32:48.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:32:48.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:32:37', tmtdew=3.04, humidity=82.01, cloud=0.0, wind=29.22, temperature=8.79, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:32:36.470', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:32:48.867 [DEBUG] [Thread-152238] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:32:48.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:32:48.961 [DEBUG] [Thread-152241] [transport.py] [_log()] starting thread (client mode): 0x2b9bbd00
2025-09-29T09:32:48.961 [DEBUG] [Thread-152241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:32:48.975 [DEBUG] [Thread-152241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:32:48.975 [INFO] [Thread-152241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:32:48.983 [DEBUG] [Thread-152241] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:32:48.983 [DEBUG] [Thread-152241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] client lang: <none>
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] server lang: <none>
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] kex follows: False
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] Compression: none
2025-09-29T09:32:48.984 [DEBUG] [Thread-152241] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:32:49.042 [DEBUG] [Thread-152241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:32:49.043 [DEBUG] [Thread-152241] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:32:49.043 [DEBUG] [Thread-152241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:32:49.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:32:49.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:32:49.099 [DEBUG] [Thread-152241] [transport.py] [_log()] userauth is OK
2025-09-29T09:32:49.099 [DEBUG] [Thread-152241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:32:49.099 [DEBUG] [Thread-152241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:32:49.099 [DEBUG] [Thread-152241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:32:49.099 [DEBUG] [Thread-152241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:32:49.120 [INFO] [Thread-152241] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:32:49.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:32:49.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:32:49.828 [DEBUG] [Thread-152243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:32:50.127 [DEBUG] [Thread-152241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:32:50.127 [DEBUG] [Thread-152241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:32:50.175 [DEBUG] [Thread-152241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:32:50.175 [DEBUG] [Thread-152241] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:32:50.190 [DEBUG] [Thread-152241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:32:50.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:32:50.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:32:50.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:32:50.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:32:50.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:32:50.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:32:50.225 [DEBUG] [Thread-152241] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:00.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:33:00.226 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:33:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:33:00.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 32, 37), 3.04, 82.01, 0.0, 29.22, 8.79, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:33:00.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:32:37
2025-09-29T09:33:00.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:33:01.065 [DEBUG] [Thread-152244] [transport.py] [_log()] starting thread (client mode): 0x2e34b1f0
2025-09-29T09:33:01.065 [DEBUG] [Thread-152244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:01.085 [DEBUG] [Thread-152244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:33:01.085 [INFO] [Thread-152244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:33:01.087 [DEBUG] [Thread-152244] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:01.087 [DEBUG] [Thread-152244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:33:01.087 [DEBUG] [Thread-152244] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:01.087 [DEBUG] [Thread-152244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:01.087 [DEBUG] [Thread-152244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:01.087 [DEBUG] [Thread-152244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] Compression: none
2025-09-29T09:33:01.088 [DEBUG] [Thread-152244] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:01.106 [DEBUG] [Thread-152244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:01.106 [DEBUG] [Thread-152244] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:01.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:33:01.107 [DEBUG] [Thread-152244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:33:01.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:01.109 [DEBUG] [Thread-152244] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:01.109 [DEBUG] [Thread-152244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:01.109 [DEBUG] [Thread-152244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:01.109 [DEBUG] [Thread-152244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:33:01.109 [DEBUG] [Thread-152244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:01.133 [INFO] [Thread-152244] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:01.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:01.887 [DEBUG] [Thread-152244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:01.888 [DEBUG] [Thread-152244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:01.888 [DEBUG] [Thread-152244] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:33:01.928 [DEBUG] [Thread-152244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:01.929 [DEBUG] [Thread-152244] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:01.931 [DEBUG] [Thread-152244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:01.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:01.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:33:01.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:33:01.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:33:01.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:01.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:33:01.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:01.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:01.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:33:01.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.314311 -999.00   +8.90  17.43     77   +5.20 1 2 1 1 1   888    0 5.29 62.67 ----- 20.1 17.4 157.2 38.9 13.3 -18.0 12.5 -18.5 11.9 -19.8 12.6 -18.5
2025-09-29T09:33:01.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:33:01.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:33:01.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.314311
2025-09-29T09:33:01.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:33:01.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:33:01.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:33:01.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:33:01.956 [DEBUG] [Thread-152244] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:01.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:33:01.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:32:37', tmtdew=3.04, humidity=82.01, cloud=0.0, wind=29.22, temperature=8.79, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:32:36.470', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:33:02.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:33:02.056 [DEBUG] [Thread-152247] [transport.py] [_log()] starting thread (client mode): 0x2b9bbd00
2025-09-29T09:33:02.056 [DEBUG] [Thread-152247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:02.071 [DEBUG] [Thread-152247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:33:02.071 [INFO] [Thread-152247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:33:02.079 [DEBUG] [Thread-152247] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:02.080 [DEBUG] [Thread-152247] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:02.081 [DEBUG] [Thread-152247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:02.081 [DEBUG] [Thread-152247] [transport.py] [_log()] Compression: none
2025-09-29T09:33:02.081 [DEBUG] [Thread-152247] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:02.138 [DEBUG] [Thread-152247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:02.139 [DEBUG] [Thread-152247] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:02.139 [DEBUG] [Thread-152247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:33:02.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:33:02.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:02.195 [DEBUG] [Thread-152247] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:02.195 [DEBUG] [Thread-152247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:02.195 [DEBUG] [Thread-152247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:02.195 [DEBUG] [Thread-152247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:33:02.195 [DEBUG] [Thread-152247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:02.214 [INFO] [Thread-152247] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:02.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:33:02.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:03.242 [DEBUG] [Thread-152247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:03.242 [DEBUG] [Thread-152247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:03.290 [DEBUG] [Thread-152247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:03.290 [DEBUG] [Thread-152247] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:03.303 [DEBUG] [Thread-152247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:03.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:03.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:33:03.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:33:03.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:03.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:03.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:03.342 [DEBUG] [Thread-152247] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:04.872 [DEBUG] [Thread-152249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:33:13.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:33:13.340 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:33:13.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:33:13.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 33, 9), 3.04, 82.04, 0.0, 27.88, 8.84, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:33:13.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:33:09
2025-09-29T09:33:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:33:14.204 [DEBUG] [Thread-152250] [transport.py] [_log()] starting thread (client mode): 0x2e34bee0
2025-09-29T09:33:14.204 [DEBUG] [Thread-152250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:14.223 [DEBUG] [Thread-152250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:33:14.223 [INFO] [Thread-152250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] Compression: none
2025-09-29T09:33:14.227 [DEBUG] [Thread-152250] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:14.242 [DEBUG] [Thread-152250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:14.242 [DEBUG] [Thread-152250] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:14.242 [DEBUG] [Thread-152250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:33:14.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:33:14.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:14.243 [DEBUG] [Thread-152250] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:14.243 [DEBUG] [Thread-152250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:14.243 [DEBUG] [Thread-152250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:14.243 [DEBUG] [Thread-152250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:33:14.243 [DEBUG] [Thread-152250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:14.252 [INFO] [Thread-152250] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:14.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:14.988 [DEBUG] [Thread-152250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:14.988 [DEBUG] [Thread-152250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:14.988 [DEBUG] [Thread-152250] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:33:15.029 [DEBUG] [Thread-152250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:15.029 [DEBUG] [Thread-152250] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:15.032 [DEBUG] [Thread-152250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:15.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:15.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:33:15.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:33:15.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:33:15.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:15.049 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:33:15.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.314311 -999.00   +8.90  17.43     77   +5.20 1 2 1 1 1   888    0 5.29 62.67 ----- 20.1 17.4 157.2 38.9 13.3 -18.0 12.5 -18.5 11.9 -19.8 12.6 -18.5
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.314311
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:33:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:33:09', tmtdew=3.04, humidity=82.04, cloud=0.0, wind=27.88, temperature=8.84, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:32:36.470', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:33:15.050 [DEBUG] [Thread-152250] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:15.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:33:15.131 [DEBUG] [Thread-152253] [transport.py] [_log()] starting thread (client mode): 0x2e349900
2025-09-29T09:33:15.132 [DEBUG] [Thread-152253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:15.149 [DEBUG] [Thread-152253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:33:15.149 [INFO] [Thread-152253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:33:15.158 [DEBUG] [Thread-152253] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:15.158 [DEBUG] [Thread-152253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:33:15.158 [DEBUG] [Thread-152253] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:15.158 [DEBUG] [Thread-152253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:15.158 [DEBUG] [Thread-152253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:15.159 [DEBUG] [Thread-152253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:15.160 [DEBUG] [Thread-152253] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:15.160 [DEBUG] [Thread-152253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:15.160 [DEBUG] [Thread-152253] [transport.py] [_log()] Compression: none
2025-09-29T09:33:15.160 [DEBUG] [Thread-152253] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:15.214 [DEBUG] [Thread-152253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:15.215 [DEBUG] [Thread-152253] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:15.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:33:15.216 [DEBUG] [Thread-152253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:33:15.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:15.271 [DEBUG] [Thread-152253] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:15.271 [DEBUG] [Thread-152253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:15.271 [DEBUG] [Thread-152253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:15.271 [DEBUG] [Thread-152253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:33:15.271 [DEBUG] [Thread-152253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:15.291 [INFO] [Thread-152253] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:15.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:33:15.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:16.301 [DEBUG] [Thread-152253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:16.302 [DEBUG] [Thread-152253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:16.350 [DEBUG] [Thread-152253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:16.350 [DEBUG] [Thread-152253] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:16.359 [DEBUG] [Thread-152253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:16.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:16.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:33:16.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:33:16.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:16.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:16.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:16.395 [DEBUG] [Thread-152253] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:19.899 [DEBUG] [Thread-152255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:33:22.282 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:33:22.283 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:33:26.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:33:26.397 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:33:26.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:33:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 33, 9), 3.04, 82.04, 0.0, 27.88, 8.84, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:33:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:33:09
2025-09-29T09:33:27.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:33:27.212 [DEBUG] [Thread-152256] [transport.py] [_log()] starting thread (client mode): 0x2b91ffd0
2025-09-29T09:33:27.212 [DEBUG] [Thread-152256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:27.231 [DEBUG] [Thread-152256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:33:27.231 [INFO] [Thread-152256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:33:27.232 [DEBUG] [Thread-152256] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:27.232 [DEBUG] [Thread-152256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:33:27.232 [DEBUG] [Thread-152256] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:27.232 [DEBUG] [Thread-152256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] Compression: none
2025-09-29T09:33:27.233 [DEBUG] [Thread-152256] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:27.240 [DEBUG] [Thread-152256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:27.240 [DEBUG] [Thread-152256] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:27.241 [DEBUG] [Thread-152256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:33:27.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:33:27.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:27.242 [DEBUG] [Thread-152256] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:27.242 [DEBUG] [Thread-152256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:27.242 [DEBUG] [Thread-152256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:27.242 [DEBUG] [Thread-152256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:33:27.242 [DEBUG] [Thread-152256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:27.273 [INFO] [Thread-152256] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:27.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:27.844 [DEBUG] [Thread-152256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:27.844 [DEBUG] [Thread-152256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:27.845 [DEBUG] [Thread-152256] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:33:27.885 [DEBUG] [Thread-152256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:27.885 [DEBUG] [Thread-152256] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:27.888 [DEBUG] [Thread-152256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:27.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:27.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:33:27.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:33:27.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:33:27.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:27.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:33:27.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:27.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:27.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:33:27.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.314658 -999.00   +9.00  23.20     77   +5.30 1 2 1 1 1   888    0 5.57 69.98 ----- 27.8 23.2 157.2 30.4 13.5 -14.7 12.9 -18.8 12.3 -19.2 13.0 -15.9
2025-09-29T09:33:27.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:33:27.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:33:27.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.314658
2025-09-29T09:33:27.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:33:27.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:33:27.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:33:27.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:33:27.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:33:27.911 [DEBUG] [Thread-152256] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:27.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:33:09', tmtdew=3.04, humidity=82.04, cloud=0.0, wind=27.88, temperature=8.84, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:33:06.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:33:27.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:33:28.005 [DEBUG] [Thread-152259] [transport.py] [_log()] starting thread (client mode): 0x2b9ce680
2025-09-29T09:33:28.005 [DEBUG] [Thread-152259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:28.022 [DEBUG] [Thread-152259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:33:28.022 [INFO] [Thread-152259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:33:28.029 [DEBUG] [Thread-152259] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:28.030 [DEBUG] [Thread-152259] [transport.py] [_log()] Compression: none
2025-09-29T09:33:28.031 [DEBUG] [Thread-152259] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:28.087 [DEBUG] [Thread-152259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:28.087 [DEBUG] [Thread-152259] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:28.088 [DEBUG] [Thread-152259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:33:28.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:33:28.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:28.143 [DEBUG] [Thread-152259] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:28.143 [DEBUG] [Thread-152259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:28.143 [DEBUG] [Thread-152259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:28.143 [DEBUG] [Thread-152259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:33:28.143 [DEBUG] [Thread-152259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:28.162 [INFO] [Thread-152259] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:28.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:33:28.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:29.189 [DEBUG] [Thread-152259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:29.189 [DEBUG] [Thread-152259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:29.237 [DEBUG] [Thread-152259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:29.238 [DEBUG] [Thread-152259] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:29.246 [DEBUG] [Thread-152259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:29.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:29.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:33:29.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:33:29.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:29.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:29.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:29.281 [DEBUG] [Thread-152259] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:30.006 [DEBUG] [Thread-152261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:33:34.943 [DEBUG] [Thread-152262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:33:39.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:33:39.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:33:39.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:33:39.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 33, 9), 3.04, 82.04, 0.0, 27.88, 8.84, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:33:39.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:33:09
2025-09-29T09:33:39.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:33:40.110 [DEBUG] [Thread-152263] [transport.py] [_log()] starting thread (client mode): 0x2b91d630
2025-09-29T09:33:40.110 [DEBUG] [Thread-152263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:40.130 [DEBUG] [Thread-152263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:33:40.131 [INFO] [Thread-152263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:33:40.134 [DEBUG] [Thread-152263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:40.134 [DEBUG] [Thread-152263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:33:40.134 [DEBUG] [Thread-152263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:40.134 [DEBUG] [Thread-152263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:40.134 [DEBUG] [Thread-152263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:40.134 [DEBUG] [Thread-152263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:40.135 [DEBUG] [Thread-152263] [transport.py] [_log()] Compression: none
2025-09-29T09:33:40.136 [DEBUG] [Thread-152263] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:40.144 [DEBUG] [Thread-152263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:40.145 [DEBUG] [Thread-152263] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:40.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:33:40.146 [DEBUG] [Thread-152263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:33:40.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:40.148 [DEBUG] [Thread-152263] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:40.148 [DEBUG] [Thread-152263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:40.148 [DEBUG] [Thread-152263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:40.148 [DEBUG] [Thread-152263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:33:40.148 [DEBUG] [Thread-152263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:40.165 [INFO] [Thread-152263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:40.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:40.913 [DEBUG] [Thread-152263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:40.913 [DEBUG] [Thread-152263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:40.914 [DEBUG] [Thread-152263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:33:40.954 [DEBUG] [Thread-152263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:40.954 [DEBUG] [Thread-152263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:40.956 [DEBUG] [Thread-152263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:40.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:40.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:33:40.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:33:40.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:33:40.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:40.980 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:33:40.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:40.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:40.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:33:40.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.314658 -999.00   +9.00  23.20     77   +5.30 1 2 1 1 1   888    0 5.57 69.98 ----- 27.8 23.2 157.2 30.4 13.5 -14.7 12.9 -18.8 12.3 -19.2 13.0 -15.9
2025-09-29T09:33:40.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:33:40.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:33:40.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.314658
2025-09-29T09:33:40.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:33:40.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:33:40.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:33:40.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:33:40.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:33:40.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:33:09', tmtdew=3.04, humidity=82.04, cloud=0.0, wind=27.88, temperature=8.84, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:33:06.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:33:40.983 [DEBUG] [Thread-152263] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:41.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:33:41.079 [DEBUG] [Thread-152266] [transport.py] [_log()] starting thread (client mode): 0x2b91c790
2025-09-29T09:33:41.079 [DEBUG] [Thread-152266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:41.095 [DEBUG] [Thread-152266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:33:41.096 [INFO] [Thread-152266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:33:41.103 [DEBUG] [Thread-152266] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:41.103 [DEBUG] [Thread-152266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:33:41.103 [DEBUG] [Thread-152266] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:41.103 [DEBUG] [Thread-152266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:41.103 [DEBUG] [Thread-152266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:41.103 [DEBUG] [Thread-152266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:41.103 [DEBUG] [Thread-152266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:41.103 [DEBUG] [Thread-152266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] Compression: none
2025-09-29T09:33:41.104 [DEBUG] [Thread-152266] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:41.162 [DEBUG] [Thread-152266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:41.162 [DEBUG] [Thread-152266] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:41.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:33:41.163 [DEBUG] [Thread-152266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:33:41.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:41.219 [DEBUG] [Thread-152266] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:41.220 [DEBUG] [Thread-152266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:41.220 [DEBUG] [Thread-152266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:41.220 [DEBUG] [Thread-152266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:33:41.220 [DEBUG] [Thread-152266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:41.239 [INFO] [Thread-152266] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:41.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:33:41.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:42.211 [DEBUG] [Thread-152266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:42.211 [DEBUG] [Thread-152266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:42.259 [DEBUG] [Thread-152266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:42.259 [DEBUG] [Thread-152266] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:42.267 [DEBUG] [Thread-152266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:42.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:42.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:33:42.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:33:42.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:42.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:42.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:42.298 [DEBUG] [Thread-152266] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:49.983 [DEBUG] [Thread-152268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:33:52.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:33:52.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:33:52.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:33:52.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 33, 41), 3.18, 81.36, 0.0, 26.93, 9.15, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:33:52.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:33:41
2025-09-29T09:33:52.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:33:53.130 [DEBUG] [Thread-152269] [transport.py] [_log()] starting thread (client mode): 0x287052a0
2025-09-29T09:33:53.130 [DEBUG] [Thread-152269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:53.150 [DEBUG] [Thread-152269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:33:53.150 [INFO] [Thread-152269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:33:53.153 [DEBUG] [Thread-152269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:53.153 [DEBUG] [Thread-152269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:33:53.153 [DEBUG] [Thread-152269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:53.153 [DEBUG] [Thread-152269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:53.153 [DEBUG] [Thread-152269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:53.153 [DEBUG] [Thread-152269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:53.153 [DEBUG] [Thread-152269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] Compression: none
2025-09-29T09:33:53.154 [DEBUG] [Thread-152269] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:53.173 [DEBUG] [Thread-152269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:53.173 [DEBUG] [Thread-152269] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:53.173 [DEBUG] [Thread-152269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:33:53.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:33:53.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:53.175 [DEBUG] [Thread-152269] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:53.175 [DEBUG] [Thread-152269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:53.175 [DEBUG] [Thread-152269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:53.176 [DEBUG] [Thread-152269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:33:53.176 [DEBUG] [Thread-152269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:53.199 [INFO] [Thread-152269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:53.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:53.812 [DEBUG] [Thread-152269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:53.812 [DEBUG] [Thread-152269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:53.812 [DEBUG] [Thread-152269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:33:53.853 [DEBUG] [Thread-152269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:53.853 [DEBUG] [Thread-152269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:53.856 [DEBUG] [Thread-152269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:53.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:53.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:33:53.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:33:53.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:33:53.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:53.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:33:53.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:53.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:33:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.315005 -999.00   +9.00  25.11     76   +5.10 1 2 1 1 1   888    0 5.53 69.38 ----- 28.8 25.1 155.8 32.6 13.9 -17.6 13.1 -19.7 12.3 -21.5 13.1 -19.3
2025-09-29T09:33:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:33:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:33:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.315005
2025-09-29T09:33:53.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:33:53.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:33:53.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:33:53.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:33:53.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:33:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:33:41', tmtdew=3.18, humidity=81.36, cloud=0.0, wind=26.93, temperature=9.15, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:33:36.432', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:33:53.880 [DEBUG] [Thread-152269] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:33:53.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:33:53.974 [DEBUG] [Thread-152272] [transport.py] [_log()] starting thread (client mode): 0x28707a30
2025-09-29T09:33:53.974 [DEBUG] [Thread-152272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:33:53.989 [DEBUG] [Thread-152272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:33:53.989 [INFO] [Thread-152272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:33:53.996 [DEBUG] [Thread-152272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:33:53.997 [DEBUG] [Thread-152272] [transport.py] [_log()] client lang: <none>
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] server lang: <none>
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] kex follows: False
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] Compression: none
2025-09-29T09:33:53.998 [DEBUG] [Thread-152272] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:33:54.057 [DEBUG] [Thread-152272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:33:54.057 [DEBUG] [Thread-152272] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:33:54.058 [DEBUG] [Thread-152272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:33:54.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:33:54.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:33:54.115 [DEBUG] [Thread-152272] [transport.py] [_log()] userauth is OK
2025-09-29T09:33:54.115 [DEBUG] [Thread-152272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:33:54.115 [DEBUG] [Thread-152272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:33:54.116 [DEBUG] [Thread-152272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:33:54.116 [DEBUG] [Thread-152272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:33:54.134 [INFO] [Thread-152272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:33:54.134 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:33:54.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:33:55.120 [DEBUG] [Thread-152272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:33:55.120 [DEBUG] [Thread-152272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:33:55.167 [DEBUG] [Thread-152272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:33:55.167 [DEBUG] [Thread-152272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:33:55.176 [DEBUG] [Thread-152272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:33:55.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:33:55.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:33:55.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:33:55.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:33:55.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:33:55.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:33:55.215 [DEBUG] [Thread-152272] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:05.011 [DEBUG] [Thread-152274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:34:05.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:34:05.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:34:05.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:34:05.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 33, 41), 3.18, 81.36, 0.0, 26.93, 9.15, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:34:05.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:33:41
2025-09-29T09:34:05.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:34:06.040 [DEBUG] [Thread-152275] [transport.py] [_log()] starting thread (client mode): 0x2e34ab90
2025-09-29T09:34:06.040 [DEBUG] [Thread-152275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:06.062 [DEBUG] [Thread-152275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:34:06.062 [INFO] [Thread-152275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:34:06.065 [DEBUG] [Thread-152275] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] Compression: none
2025-09-29T09:34:06.066 [DEBUG] [Thread-152275] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:06.085 [DEBUG] [Thread-152275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:06.086 [DEBUG] [Thread-152275] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:06.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:34:06.087 [DEBUG] [Thread-152275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:34:06.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:06.088 [DEBUG] [Thread-152275] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:06.088 [DEBUG] [Thread-152275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:06.088 [DEBUG] [Thread-152275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:06.088 [DEBUG] [Thread-152275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:34:06.089 [DEBUG] [Thread-152275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:06.104 [INFO] [Thread-152275] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:06.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:06.852 [DEBUG] [Thread-152275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:06.853 [DEBUG] [Thread-152275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:06.853 [DEBUG] [Thread-152275] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:34:06.893 [DEBUG] [Thread-152275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:06.893 [DEBUG] [Thread-152275] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:06.898 [DEBUG] [Thread-152275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:06.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:06.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:34:06.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:34:06.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:34:06.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:06.919 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:34:06.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:06.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:06.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:34:06.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.315005 -999.00   +9.00  25.11     76   +5.10 1 2 1 1 1   888    0 5.53 69.38 ----- 28.8 25.1 155.8 32.6 13.9 -17.6 13.1 -19.7 12.3 -21.5 13.1 -19.3
2025-09-29T09:34:06.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:34:06.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:34:06.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.315005
2025-09-29T09:34:06.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:34:06.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:34:06.922 [DEBUG] [Thread-152275] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:06.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:34:06.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:34:06.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:34:06.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:33:41', tmtdew=3.18, humidity=81.36, cloud=0.0, wind=26.93, temperature=9.15, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:33:36.432', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:34:07.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:34:07.022 [DEBUG] [Thread-152278] [transport.py] [_log()] starting thread (client mode): 0x2b9cdab0
2025-09-29T09:34:07.022 [DEBUG] [Thread-152278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:07.037 [DEBUG] [Thread-152278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:34:07.037 [INFO] [Thread-152278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:34:07.044 [DEBUG] [Thread-152278] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:07.045 [DEBUG] [Thread-152278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:07.046 [DEBUG] [Thread-152278] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:07.046 [DEBUG] [Thread-152278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:07.046 [DEBUG] [Thread-152278] [transport.py] [_log()] Compression: none
2025-09-29T09:34:07.046 [DEBUG] [Thread-152278] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:07.102 [DEBUG] [Thread-152278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:07.103 [DEBUG] [Thread-152278] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:07.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:34:07.104 [DEBUG] [Thread-152278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:34:07.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:07.159 [DEBUG] [Thread-152278] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:07.160 [DEBUG] [Thread-152278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:07.160 [DEBUG] [Thread-152278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:07.160 [DEBUG] [Thread-152278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:34:07.160 [DEBUG] [Thread-152278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:07.181 [INFO] [Thread-152278] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:07.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:34:07.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:08.271 [DEBUG] [Thread-152278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:08.271 [DEBUG] [Thread-152278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:08.319 [DEBUG] [Thread-152278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:08.319 [DEBUG] [Thread-152278] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:08.328 [DEBUG] [Thread-152278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:08.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:08.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:34:08.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:34:08.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:08.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:08.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:08.363 [DEBUG] [Thread-152278] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:34:18.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:34:18.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:34:18.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 34, 13), 3.27, 80.96, 0.0, 28.62, 9.2, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:34:18.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:34:13
2025-09-29T09:34:19.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:34:19.183 [DEBUG] [Thread-152280] [transport.py] [_log()] starting thread (client mode): 0x2b91d270
2025-09-29T09:34:19.184 [DEBUG] [Thread-152280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:19.204 [DEBUG] [Thread-152280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:34:19.204 [INFO] [Thread-152280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:34:19.207 [DEBUG] [Thread-152280] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:19.207 [DEBUG] [Thread-152280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] Compression: none
2025-09-29T09:34:19.208 [DEBUG] [Thread-152280] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:19.224 [DEBUG] [Thread-152280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:19.225 [DEBUG] [Thread-152280] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:19.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:34:19.225 [DEBUG] [Thread-152280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:34:19.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:19.227 [DEBUG] [Thread-152280] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:19.227 [DEBUG] [Thread-152280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:19.227 [DEBUG] [Thread-152280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:19.227 [DEBUG] [Thread-152280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:34:19.228 [DEBUG] [Thread-152280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:19.249 [INFO] [Thread-152280] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:19.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:20.008 [DEBUG] [Thread-152280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:20.008 [DEBUG] [Thread-152280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:20.008 [DEBUG] [Thread-152280] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:34:20.049 [DEBUG] [Thread-152280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:20.049 [DEBUG] [Thread-152280] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:20.052 [DEBUG] [Thread-152280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:20.056 [DEBUG] [Thread-152282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:34:20.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:20.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:34:20.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:34:20.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:34:20.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:20.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:34:20.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:20.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:20.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:34:20.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.315005 -999.00   +9.00  25.11     76   +5.10 1 2 1 1 1   888    0 5.53 69.38 ----- 28.8 25.1 155.8 32.6 13.9 -17.6 13.1 -19.7 12.3 -21.5 13.1 -19.3
2025-09-29T09:34:20.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:34:20.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:34:20.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.315005
2025-09-29T09:34:20.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:34:20.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:34:20.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:34:20.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:34:20.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:34:20.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:34:13', tmtdew=3.27, humidity=80.96, cloud=0.0, wind=28.62, temperature=9.2, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:33:36.432', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:34:20.078 [DEBUG] [Thread-152280] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:20.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:34:20.177 [DEBUG] [Thread-152284] [transport.py] [_log()] starting thread (client mode): 0x2e3631c0
2025-09-29T09:34:20.177 [DEBUG] [Thread-152284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:20.191 [DEBUG] [Thread-152284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:34:20.192 [INFO] [Thread-152284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:34:20.199 [DEBUG] [Thread-152284] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:20.199 [DEBUG] [Thread-152284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:34:20.199 [DEBUG] [Thread-152284] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] Compression: none
2025-09-29T09:34:20.200 [DEBUG] [Thread-152284] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:20.259 [DEBUG] [Thread-152284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:20.259 [DEBUG] [Thread-152284] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:20.260 [DEBUG] [Thread-152284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:34:20.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:34:20.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:20.315 [DEBUG] [Thread-152284] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:20.316 [DEBUG] [Thread-152284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:20.316 [DEBUG] [Thread-152284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:20.316 [DEBUG] [Thread-152284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:34:20.316 [DEBUG] [Thread-152284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:20.334 [INFO] [Thread-152284] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:20.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:34:20.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:21.354 [DEBUG] [Thread-152284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:21.354 [DEBUG] [Thread-152284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:21.402 [DEBUG] [Thread-152284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:21.402 [DEBUG] [Thread-152284] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:21.411 [DEBUG] [Thread-152284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:21.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:21.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:34:21.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:34:21.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:21.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:21.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:21.447 [DEBUG] [Thread-152284] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:22.425 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:34:22.426 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:34:30.056 [DEBUG] [Thread-152286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:34:31.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:34:31.450 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:34:31.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:34:32.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 34, 13), 3.27, 80.96, 0.0, 28.62, 9.2, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:34:32.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:34:13
2025-09-29T09:34:32.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:34:32.274 [DEBUG] [Thread-152287] [transport.py] [_log()] starting thread (client mode): 0x2b9c0910
2025-09-29T09:34:32.274 [DEBUG] [Thread-152287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:32.293 [DEBUG] [Thread-152287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:34:32.293 [INFO] [Thread-152287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:32.297 [DEBUG] [Thread-152287] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:32.298 [DEBUG] [Thread-152287] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:32.298 [DEBUG] [Thread-152287] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:32.298 [DEBUG] [Thread-152287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:32.298 [DEBUG] [Thread-152287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:32.298 [DEBUG] [Thread-152287] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:32.298 [DEBUG] [Thread-152287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:32.298 [DEBUG] [Thread-152287] [transport.py] [_log()] Compression: none
2025-09-29T09:34:32.298 [DEBUG] [Thread-152287] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:32.317 [DEBUG] [Thread-152287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:32.317 [DEBUG] [Thread-152287] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:32.318 [DEBUG] [Thread-152287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:34:32.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:34:32.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:32.320 [DEBUG] [Thread-152287] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:32.320 [DEBUG] [Thread-152287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:32.320 [DEBUG] [Thread-152287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:32.320 [DEBUG] [Thread-152287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:34:32.320 [DEBUG] [Thread-152287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:32.356 [INFO] [Thread-152287] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:32.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:32.926 [DEBUG] [Thread-152287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:32.927 [DEBUG] [Thread-152287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:32.927 [DEBUG] [Thread-152287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:34:32.967 [DEBUG] [Thread-152287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:32.967 [DEBUG] [Thread-152287] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:32.970 [DEBUG] [Thread-152287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:32.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:32.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:34:32.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:34:32.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:34:32.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:32.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:34:32.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:32.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:32.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:34:32.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.315352 -999.00   +8.80  33.93     76   +4.90 1 1 2 1 1   888    0 5.45 66.06 ----- 24.8 33.9 172.0 39.4 14.0 -24.0 12.7 -28.2 12.0 -25.6 12.9 -25.5
2025-09-29T09:34:32.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:34:32.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:34:32.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.315352
2025-09-29T09:34:32.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:34:32.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:34:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:34:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:34:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:34:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:34:13', tmtdew=3.27, humidity=80.96, cloud=0.0, wind=28.62, temperature=9.2, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:34:06.413', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:34:32.994 [DEBUG] [Thread-152287] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:33.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:34:33.091 [DEBUG] [Thread-152290] [transport.py] [_log()] starting thread (client mode): 0x2b9c3fa0
2025-09-29T09:34:33.091 [DEBUG] [Thread-152290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:33.111 [DEBUG] [Thread-152290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:34:33.111 [INFO] [Thread-152290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:34:33.119 [DEBUG] [Thread-152290] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:33.120 [DEBUG] [Thread-152290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:33.121 [DEBUG] [Thread-152290] [transport.py] [_log()] Compression: none
2025-09-29T09:34:33.121 [DEBUG] [Thread-152290] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:33.177 [DEBUG] [Thread-152290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:33.178 [DEBUG] [Thread-152290] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:33.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:34:33.179 [DEBUG] [Thread-152290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:34:33.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:33.240 [DEBUG] [Thread-152290] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:33.240 [DEBUG] [Thread-152290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:33.240 [DEBUG] [Thread-152290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:33.240 [DEBUG] [Thread-152290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:34:33.240 [DEBUG] [Thread-152290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:33.259 [INFO] [Thread-152290] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:33.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:34:33.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:34.275 [DEBUG] [Thread-152290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:34.275 [DEBUG] [Thread-152290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:34.324 [DEBUG] [Thread-152290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:34.324 [DEBUG] [Thread-152290] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:34.335 [DEBUG] [Thread-152290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:34.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:34.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:34:34.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:34:34.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:34.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:34.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:34.368 [DEBUG] [Thread-152290] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:35.088 [DEBUG] [Thread-152292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:34:44.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:34:44.368 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:34:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:34:44.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 34, 13), 3.27, 80.96, 0.0, 28.62, 9.2, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:34:44.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:34:13
2025-09-29T09:34:45.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:34:45.201 [DEBUG] [Thread-152293] [transport.py] [_log()] starting thread (client mode): 0x2b9c37f0
2025-09-29T09:34:45.201 [DEBUG] [Thread-152293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:45.222 [DEBUG] [Thread-152293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:34:45.222 [INFO] [Thread-152293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:34:45.225 [DEBUG] [Thread-152293] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:45.226 [DEBUG] [Thread-152293] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] Compression: none
2025-09-29T09:34:45.227 [DEBUG] [Thread-152293] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:45.243 [DEBUG] [Thread-152293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:45.243 [DEBUG] [Thread-152293] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:45.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:34:45.244 [DEBUG] [Thread-152293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:34:45.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:45.246 [DEBUG] [Thread-152293] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:45.246 [DEBUG] [Thread-152293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:45.247 [DEBUG] [Thread-152293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:45.247 [DEBUG] [Thread-152293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:34:45.247 [DEBUG] [Thread-152293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:45.271 [INFO] [Thread-152293] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:45.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:46.036 [DEBUG] [Thread-152293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:46.036 [DEBUG] [Thread-152293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:46.036 [DEBUG] [Thread-152293] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:34:46.077 [DEBUG] [Thread-152293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:46.077 [DEBUG] [Thread-152293] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:46.080 [DEBUG] [Thread-152293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:46.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:46.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:34:46.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:34:46.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:34:46.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:46.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:34:46.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.315352 -999.00   +8.80  33.93     76   +4.90 1 1 2 1 1   888    0 5.45 66.06 ----- 24.8 33.9 172.0 39.4 14.0 -24.0 12.7 -28.2 12.0 -25.6 12.9 -25.5
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.315352
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:34:46.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:34:13', tmtdew=3.27, humidity=80.96, cloud=0.0, wind=28.62, temperature=9.2, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:34:06.413', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:34:46.098 [DEBUG] [Thread-152293] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:46.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:34:46.184 [DEBUG] [Thread-152296] [transport.py] [_log()] starting thread (client mode): 0x2b9c1750
2025-09-29T09:34:46.184 [DEBUG] [Thread-152296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:46.198 [DEBUG] [Thread-152296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:34:46.198 [INFO] [Thread-152296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:46.206 [DEBUG] [Thread-152296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:46.207 [DEBUG] [Thread-152296] [transport.py] [_log()] Compression: none
2025-09-29T09:34:46.207 [DEBUG] [Thread-152296] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:46.265 [DEBUG] [Thread-152296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:46.265 [DEBUG] [Thread-152296] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:46.265 [DEBUG] [Thread-152296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:34:46.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:34:46.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:46.322 [DEBUG] [Thread-152296] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:46.322 [DEBUG] [Thread-152296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:46.322 [DEBUG] [Thread-152296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:46.323 [DEBUG] [Thread-152296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:34:46.323 [DEBUG] [Thread-152296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:46.339 [INFO] [Thread-152296] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:46.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:34:46.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:47.344 [DEBUG] [Thread-152296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:47.344 [DEBUG] [Thread-152296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:47.392 [DEBUG] [Thread-152296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:47.392 [DEBUG] [Thread-152296] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:47.400 [DEBUG] [Thread-152296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:47.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:47.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:34:47.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:34:47.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:47.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:47.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:47.431 [DEBUG] [Thread-152296] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:50.130 [DEBUG] [Thread-152298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:34:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:34:57.434 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:34:57.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:34:58.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 34, 45), 3.41, 80.23, 0.0, 35.04, 8.94, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:34:58.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:34:45
2025-09-29T09:34:58.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:34:58.265 [DEBUG] [Thread-152299] [transport.py] [_log()] starting thread (client mode): 0x2b9c1b10
2025-09-29T09:34:58.265 [DEBUG] [Thread-152299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:58.285 [DEBUG] [Thread-152299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:34:58.285 [INFO] [Thread-152299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:34:58.288 [DEBUG] [Thread-152299] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:58.288 [DEBUG] [Thread-152299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:34:58.288 [DEBUG] [Thread-152299] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:58.288 [DEBUG] [Thread-152299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:58.288 [DEBUG] [Thread-152299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] Compression: none
2025-09-29T09:34:58.289 [DEBUG] [Thread-152299] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:58.302 [DEBUG] [Thread-152299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:58.303 [DEBUG] [Thread-152299] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:58.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:34:58.304 [DEBUG] [Thread-152299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:34:58.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:58.306 [DEBUG] [Thread-152299] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:58.306 [DEBUG] [Thread-152299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:58.307 [DEBUG] [Thread-152299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:58.307 [DEBUG] [Thread-152299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:34:58.307 [DEBUG] [Thread-152299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:58.333 [INFO] [Thread-152299] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:58.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:34:58.911 [DEBUG] [Thread-152299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:34:58.911 [DEBUG] [Thread-152299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:34:58.912 [DEBUG] [Thread-152299] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:34:58.952 [DEBUG] [Thread-152299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:34:58.952 [DEBUG] [Thread-152299] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:34:58.954 [DEBUG] [Thread-152299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:34:58.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:34:58.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:34:58.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:34:58.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:34:58.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:34:58.977 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:34:58.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:34:58.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:34:58.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:34:58.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.315700 -999.00   +8.80  26.04     76   +5.00 1 2 1 1 1   888    0 5.42 63.93 ----- 25.8 26.0 160.6 30.4 13.6 -25.4 12.9 -20.3 12.1 -22.4 12.7 -23.9
2025-09-29T09:34:58.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:34:58.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:34:58.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.315700
2025-09-29T09:34:58.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:34:58.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:34:58.979 [DEBUG] [Thread-152299] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:34:58.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:34:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:34:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:34:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:34:45', tmtdew=3.41, humidity=80.23, cloud=0.0, wind=35.04, temperature=8.94, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:34:36.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:34:59.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:34:59.077 [DEBUG] [Thread-152302] [transport.py] [_log()] starting thread (client mode): 0x2b9c28f0
2025-09-29T09:34:59.078 [DEBUG] [Thread-152302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:34:59.092 [DEBUG] [Thread-152302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:34:59.092 [INFO] [Thread-152302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:34:59.100 [DEBUG] [Thread-152302] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] client lang: <none>
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] server lang: <none>
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] kex follows: False
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:34:59.101 [DEBUG] [Thread-152302] [transport.py] [_log()] Compression: none
2025-09-29T09:34:59.102 [DEBUG] [Thread-152302] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:34:59.163 [DEBUG] [Thread-152302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:34:59.163 [DEBUG] [Thread-152302] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:34:59.164 [DEBUG] [Thread-152302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:34:59.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:34:59.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:34:59.219 [DEBUG] [Thread-152302] [transport.py] [_log()] userauth is OK
2025-09-29T09:34:59.219 [DEBUG] [Thread-152302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:34:59.219 [DEBUG] [Thread-152302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:34:59.219 [DEBUG] [Thread-152302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:34:59.220 [DEBUG] [Thread-152302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:34:59.239 [INFO] [Thread-152302] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:34:59.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:34:59.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:00.207 [DEBUG] [Thread-152302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:00.207 [DEBUG] [Thread-152302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:00.255 [DEBUG] [Thread-152302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:00.255 [DEBUG] [Thread-152302] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:00.264 [DEBUG] [Thread-152302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:00.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:00.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:35:00.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:35:00.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:00.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:00.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:00.298 [DEBUG] [Thread-152302] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:35:05.159 [DEBUG] [Thread-152304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:35:10.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:35:10.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:35:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:35:10.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 34, 45), 3.41, 80.23, 0.0, 35.04, 8.94, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:35:10.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:34:45
2025-09-29T09:35:10.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:35:11.115 [DEBUG] [Thread-152305] [transport.py] [_log()] starting thread (client mode): 0x2e3f9060
2025-09-29T09:35:11.115 [DEBUG] [Thread-152305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:35:11.136 [DEBUG] [Thread-152305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:35:11.136 [INFO] [Thread-152305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:35:11.139 [DEBUG] [Thread-152305] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] client lang: <none>
2025-09-29T09:35:11.140 [DEBUG] [Thread-152305] [transport.py] [_log()] server lang: <none>
2025-09-29T09:35:11.141 [DEBUG] [Thread-152305] [transport.py] [_log()] kex follows: False
2025-09-29T09:35:11.141 [DEBUG] [Thread-152305] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:35:11.141 [DEBUG] [Thread-152305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:35:11.141 [DEBUG] [Thread-152305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:35:11.141 [DEBUG] [Thread-152305] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:35:11.141 [DEBUG] [Thread-152305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:35:11.141 [DEBUG] [Thread-152305] [transport.py] [_log()] Compression: none
2025-09-29T09:35:11.141 [DEBUG] [Thread-152305] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:35:11.155 [DEBUG] [Thread-152305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:35:11.155 [DEBUG] [Thread-152305] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:35:11.156 [DEBUG] [Thread-152305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:35:11.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:35:11.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:35:11.158 [DEBUG] [Thread-152305] [transport.py] [_log()] userauth is OK
2025-09-29T09:35:11.158 [DEBUG] [Thread-152305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:35:11.158 [DEBUG] [Thread-152305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:35:11.158 [DEBUG] [Thread-152305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:35:11.158 [DEBUG] [Thread-152305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:35:11.192 [INFO] [Thread-152305] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:35:11.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:17.591 [DEBUG] [Thread-152305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:17.592 [DEBUG] [Thread-152305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:17.592 [DEBUG] [Thread-152305] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:35:17.632 [DEBUG] [Thread-152305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:17.633 [DEBUG] [Thread-152305] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:17.636 [DEBUG] [Thread-152305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:17.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:17.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:35:17.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:35:17.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:35:17.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:17.745 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:35:17.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:17.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:17.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:35:17.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.315700 -999.00   +8.80  26.04     76   +5.00 1 2 1 1 1   888    0 5.42 63.93 ----- 25.8 26.0 160.6 30.4 13.6 -25.4 12.9 -20.3 12.1 -22.4 12.7 -23.9
2025-09-29T09:35:17.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:35:17.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:35:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.315700
2025-09-29T09:35:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:35:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:35:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:35:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:35:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:35:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:34:45', tmtdew=3.41, humidity=80.23, cloud=0.0, wind=35.04, temperature=8.94, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:34:36.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:35:17.748 [DEBUG] [Thread-152305] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:35:17.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:35:17.846 [DEBUG] [Thread-152308] [transport.py] [_log()] starting thread (client mode): 0x2b9c1e40
2025-09-29T09:35:17.846 [DEBUG] [Thread-152308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:35:17.861 [DEBUG] [Thread-152308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:35:17.861 [INFO] [Thread-152308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:35:17.868 [DEBUG] [Thread-152308] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:35:17.868 [DEBUG] [Thread-152308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:35:17.868 [DEBUG] [Thread-152308] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:35:17.868 [DEBUG] [Thread-152308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] client lang: <none>
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] server lang: <none>
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] kex follows: False
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] Compression: none
2025-09-29T09:35:17.869 [DEBUG] [Thread-152308] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:35:17.925 [DEBUG] [Thread-152308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:35:17.926 [DEBUG] [Thread-152308] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:35:17.926 [DEBUG] [Thread-152308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:35:17.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:35:17.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:35:17.983 [DEBUG] [Thread-152308] [transport.py] [_log()] userauth is OK
2025-09-29T09:35:17.983 [DEBUG] [Thread-152308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:35:17.983 [DEBUG] [Thread-152308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:35:17.983 [DEBUG] [Thread-152308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:35:17.983 [DEBUG] [Thread-152308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:35:17.996 [INFO] [Thread-152308] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:35:17.996 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:35:17.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:19.000 [DEBUG] [Thread-152308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:19.001 [DEBUG] [Thread-152308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:19.049 [DEBUG] [Thread-152308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:19.049 [DEBUG] [Thread-152308] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:19.057 [DEBUG] [Thread-152308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:19.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:19.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:35:19.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:35:19.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:19.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:19.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:19.088 [DEBUG] [Thread-152308] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:35:20.194 [DEBUG] [Thread-152310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:35:22.570 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:35:22.571 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:35:29.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:35:29.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:35:29.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:35:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 35, 17), 3.41, 80.23, 0.0, 31.0, 8.95, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:35:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:35:17
2025-09-29T09:35:29.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:35:29.905 [DEBUG] [Thread-152311] [transport.py] [_log()] starting thread (client mode): 0x2b9c34c0
2025-09-29T09:35:29.905 [DEBUG] [Thread-152311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:35:29.926 [DEBUG] [Thread-152311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:35:29.926 [INFO] [Thread-152311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:35:29.929 [DEBUG] [Thread-152311] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] client lang: <none>
2025-09-29T09:35:29.930 [DEBUG] [Thread-152311] [transport.py] [_log()] server lang: <none>
2025-09-29T09:35:29.931 [DEBUG] [Thread-152311] [transport.py] [_log()] kex follows: False
2025-09-29T09:35:29.931 [DEBUG] [Thread-152311] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:35:29.931 [DEBUG] [Thread-152311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:35:29.931 [DEBUG] [Thread-152311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:35:29.931 [DEBUG] [Thread-152311] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:35:29.931 [DEBUG] [Thread-152311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:35:29.931 [DEBUG] [Thread-152311] [transport.py] [_log()] Compression: none
2025-09-29T09:35:29.931 [DEBUG] [Thread-152311] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:35:29.947 [DEBUG] [Thread-152311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:35:29.948 [DEBUG] [Thread-152311] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:35:29.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:35:29.948 [DEBUG] [Thread-152311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:35:29.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:35:29.950 [DEBUG] [Thread-152311] [transport.py] [_log()] userauth is OK
2025-09-29T09:35:29.950 [DEBUG] [Thread-152311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:35:29.951 [DEBUG] [Thread-152311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:35:29.951 [DEBUG] [Thread-152311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:35:29.951 [DEBUG] [Thread-152311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:35:29.973 [INFO] [Thread-152311] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:35:29.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:30.121 [DEBUG] [Thread-152313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:35:30.711 [DEBUG] [Thread-152311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:30.711 [DEBUG] [Thread-152311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:30.712 [DEBUG] [Thread-152311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:35:30.752 [DEBUG] [Thread-152311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:30.752 [DEBUG] [Thread-152311] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:30.755 [DEBUG] [Thread-152311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:30.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:30.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:35:30.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:35:30.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:35:30.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:30.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:35:30.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:30.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:30.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:35:30.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.315700 -999.00   +8.80  26.04     76   +5.00 1 2 1 1 1   888    0 5.42 63.93 ----- 25.8 26.0 160.6 30.4 13.6 -25.4 12.9 -20.3 12.1 -22.4 12.7 -23.9
2025-09-29T09:35:30.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:35:30.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:35:30.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.315700
2025-09-29T09:35:30.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:35:30.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:35:30.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:35:30.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:35:30.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:35:30.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:35:17', tmtdew=3.41, humidity=80.23, cloud=0.0, wind=31.0, temperature=8.95, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:34:36.480', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:35:30.782 [DEBUG] [Thread-152311] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:35:30.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:35:30.877 [DEBUG] [Thread-152315] [transport.py] [_log()] starting thread (client mode): 0x2b9c1150
2025-09-29T09:35:30.877 [DEBUG] [Thread-152315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:35:30.891 [DEBUG] [Thread-152315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:35:30.892 [INFO] [Thread-152315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:35:30.899 [DEBUG] [Thread-152315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:35:30.899 [DEBUG] [Thread-152315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:35:30.899 [DEBUG] [Thread-152315] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] client lang: <none>
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] server lang: <none>
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] kex follows: False
2025-09-29T09:35:30.900 [DEBUG] [Thread-152315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:35:30.901 [DEBUG] [Thread-152315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:35:30.901 [DEBUG] [Thread-152315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:35:30.901 [DEBUG] [Thread-152315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:35:30.901 [DEBUG] [Thread-152315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:35:30.901 [DEBUG] [Thread-152315] [transport.py] [_log()] Compression: none
2025-09-29T09:35:30.901 [DEBUG] [Thread-152315] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:35:30.959 [DEBUG] [Thread-152315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:35:30.960 [DEBUG] [Thread-152315] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:35:30.960 [DEBUG] [Thread-152315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:35:30.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:35:30.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:35:31.015 [DEBUG] [Thread-152315] [transport.py] [_log()] userauth is OK
2025-09-29T09:35:31.015 [DEBUG] [Thread-152315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:35:31.016 [DEBUG] [Thread-152315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:35:31.016 [DEBUG] [Thread-152315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:35:31.016 [DEBUG] [Thread-152315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:35:31.035 [INFO] [Thread-152315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:35:31.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:35:31.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:32.039 [DEBUG] [Thread-152315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:32.040 [DEBUG] [Thread-152315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:32.087 [DEBUG] [Thread-152315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:32.088 [DEBUG] [Thread-152315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:32.097 [DEBUG] [Thread-152315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:32.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:32.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:35:32.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:35:32.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:32.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:32.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:32.134 [DEBUG] [Thread-152315] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:35:35.226 [DEBUG] [Thread-152317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:35:42.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:35:42.132 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:35:42.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:35:42.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 35, 17), 3.41, 80.23, 0.0, 31.0, 8.95, 0, 1, 0, 2, 0, 0),)
2025-09-29T09:35:42.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:35:17
2025-09-29T09:35:42.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:35:42.987 [DEBUG] [Thread-152318] [transport.py] [_log()] starting thread (client mode): 0x28704430
2025-09-29T09:35:42.987 [DEBUG] [Thread-152318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:35:43.006 [DEBUG] [Thread-152318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:35:43.006 [INFO] [Thread-152318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] client lang: <none>
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] server lang: <none>
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] kex follows: False
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] Compression: none
2025-09-29T09:35:43.010 [DEBUG] [Thread-152318] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:35:43.025 [DEBUG] [Thread-152318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:35:43.025 [DEBUG] [Thread-152318] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:35:43.026 [DEBUG] [Thread-152318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:35:43.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:35:43.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:35:43.026 [DEBUG] [Thread-152318] [transport.py] [_log()] userauth is OK
2025-09-29T09:35:43.027 [DEBUG] [Thread-152318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:35:43.027 [DEBUG] [Thread-152318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:35:43.027 [DEBUG] [Thread-152318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:35:43.027 [DEBUG] [Thread-152318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:35:43.036 [INFO] [Thread-152318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:35:43.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:43.631 [DEBUG] [Thread-152318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:43.631 [DEBUG] [Thread-152318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:43.631 [DEBUG] [Thread-152318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:35:43.672 [DEBUG] [Thread-152318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:43.672 [DEBUG] [Thread-152318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:43.674 [DEBUG] [Thread-152318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:43.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:43.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:35:43.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:35:43.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:35:43.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:43.686 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:35:43.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.316046 -999.00   +9.00  33.46     76   +5.10 1 1 2 1 1   888    0 5.50 63.97 ----- 25.0 33.5 147.6 39.5 14.0 -19.7 12.8 -24.4 12.1 -24.7 13.1 -24.8
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.316046
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:35:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:35:17', tmtdew=3.41, humidity=80.23, cloud=0.0, wind=31.0, temperature=8.95, tmtdew_warn=0, humidity_warn=1, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:35:06.374', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:35:43.687 [DEBUG] [Thread-152318] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:35:43.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:35:43.776 [DEBUG] [Thread-152321] [transport.py] [_log()] starting thread (client mode): 0x2b9a52a0
2025-09-29T09:35:43.776 [DEBUG] [Thread-152321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:35:43.791 [DEBUG] [Thread-152321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:35:43.791 [INFO] [Thread-152321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:35:43.798 [DEBUG] [Thread-152321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:35:43.798 [DEBUG] [Thread-152321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:35:43.798 [DEBUG] [Thread-152321] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] client lang: <none>
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] server lang: <none>
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] kex follows: False
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] Compression: none
2025-09-29T09:35:43.799 [DEBUG] [Thread-152321] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:35:43.853 [DEBUG] [Thread-152321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:35:43.854 [DEBUG] [Thread-152321] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:35:43.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:35:43.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:35:43.854 [DEBUG] [Thread-152321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:35:43.912 [DEBUG] [Thread-152321] [transport.py] [_log()] userauth is OK
2025-09-29T09:35:43.912 [DEBUG] [Thread-152321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:35:43.912 [DEBUG] [Thread-152321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:35:43.912 [DEBUG] [Thread-152321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:35:43.912 [DEBUG] [Thread-152321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:35:43.936 [INFO] [Thread-152321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:35:43.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:35:43.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:44.894 [DEBUG] [Thread-152321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:44.894 [DEBUG] [Thread-152321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:44.942 [DEBUG] [Thread-152321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:44.942 [DEBUG] [Thread-152321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:44.950 [DEBUG] [Thread-152321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:44.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:44.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:35:44.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:35:44.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:44.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:44.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:44.983 [DEBUG] [Thread-152321] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:35:50.272 [DEBUG] [Thread-152323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:35:54.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:35:54.975 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:35:54.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:35:55.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 35, 49), 3.55, 79.01, 0.0, 33.22, 9.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:35:55.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:35:49
2025-09-29T09:35:55.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:35:55.804 [DEBUG] [Thread-152324] [transport.py] [_log()] starting thread (client mode): 0x28705f30
2025-09-29T09:35:55.804 [DEBUG] [Thread-152324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:35:55.824 [DEBUG] [Thread-152324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:35:55.824 [INFO] [Thread-152324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:35:55.828 [DEBUG] [Thread-152324] [transport.py] [_log()] client lang: <none>
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] server lang: <none>
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] kex follows: False
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] Compression: none
2025-09-29T09:35:55.829 [DEBUG] [Thread-152324] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:35:55.848 [DEBUG] [Thread-152324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:35:55.848 [DEBUG] [Thread-152324] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:35:55.849 [DEBUG] [Thread-152324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:35:55.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:35:55.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:35:55.851 [DEBUG] [Thread-152324] [transport.py] [_log()] userauth is OK
2025-09-29T09:35:55.851 [DEBUG] [Thread-152324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:35:55.851 [DEBUG] [Thread-152324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:35:55.852 [DEBUG] [Thread-152324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:35:55.852 [DEBUG] [Thread-152324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:35:55.874 [INFO] [Thread-152324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:35:55.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:56.579 [DEBUG] [Thread-152324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:56.580 [DEBUG] [Thread-152324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:56.580 [DEBUG] [Thread-152324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:35:56.620 [DEBUG] [Thread-152324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:56.620 [DEBUG] [Thread-152324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:56.623 [DEBUG] [Thread-152324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:56.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:56.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:35:56.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:35:56.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:35:56.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:56.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:35:56.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:56.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:56.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:35:56.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.316046 -999.00   +9.00  33.46     76   +5.10 1 1 2 1 1   888    0 5.50 63.97 ----- 25.0 33.5 147.6 39.5 14.0 -19.7 12.8 -24.4 12.1 -24.7 13.1 -24.8
2025-09-29T09:35:56.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:35:56.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:35:56.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.316046
2025-09-29T09:35:56.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:35:56.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:35:56.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:35:56.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:35:56.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:35:56.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:35:49', tmtdew=3.55, humidity=79.01, cloud=0.0, wind=33.22, temperature=9.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:35:06.374', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:35:56.646 [DEBUG] [Thread-152324] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:35:56.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:35:56.734 [DEBUG] [Thread-152327] [transport.py] [_log()] starting thread (client mode): 0x28706800
2025-09-29T09:35:56.735 [DEBUG] [Thread-152327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:35:56.750 [DEBUG] [Thread-152327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:35:56.750 [INFO] [Thread-152327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:35:56.757 [DEBUG] [Thread-152327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:35:56.757 [DEBUG] [Thread-152327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:35:56.757 [DEBUG] [Thread-152327] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:35:56.757 [DEBUG] [Thread-152327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] client lang: <none>
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] server lang: <none>
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] kex follows: False
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:35:56.758 [DEBUG] [Thread-152327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:35:56.759 [DEBUG] [Thread-152327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:35:56.759 [DEBUG] [Thread-152327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:35:56.759 [DEBUG] [Thread-152327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:35:56.759 [DEBUG] [Thread-152327] [transport.py] [_log()] Compression: none
2025-09-29T09:35:56.759 [DEBUG] [Thread-152327] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:35:56.816 [DEBUG] [Thread-152327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:35:56.816 [DEBUG] [Thread-152327] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:35:56.817 [DEBUG] [Thread-152327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:35:56.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:35:56.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:35:56.871 [DEBUG] [Thread-152327] [transport.py] [_log()] userauth is OK
2025-09-29T09:35:56.872 [DEBUG] [Thread-152327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:35:56.872 [DEBUG] [Thread-152327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:35:56.872 [DEBUG] [Thread-152327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:35:56.872 [DEBUG] [Thread-152327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:35:56.891 [INFO] [Thread-152327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:35:56.891 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:35:56.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:35:57.866 [DEBUG] [Thread-152327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:35:57.866 [DEBUG] [Thread-152327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:35:57.914 [DEBUG] [Thread-152327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:35:57.915 [DEBUG] [Thread-152327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:35:57.924 [DEBUG] [Thread-152327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:35:57.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:35:57.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:35:57.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:35:57.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:35:57.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:35:57.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:35:57.959 [DEBUG] [Thread-152327] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:05.306 [DEBUG] [Thread-152329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:36:07.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:36:07.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:36:07.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:36:08.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 35, 49), 3.55, 79.01, 0.0, 33.22, 9.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:36:08.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:35:49
2025-09-29T09:36:08.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:36:08.789 [DEBUG] [Thread-152330] [transport.py] [_log()] starting thread (client mode): 0x2b9b94b0
2025-09-29T09:36:08.789 [DEBUG] [Thread-152330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:36:08.809 [DEBUG] [Thread-152330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:36:08.810 [INFO] [Thread-152330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:36:08.813 [DEBUG] [Thread-152330] [transport.py] [_log()] client lang: <none>
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] server lang: <none>
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] kex follows: False
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] Compression: none
2025-09-29T09:36:08.814 [DEBUG] [Thread-152330] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:36:08.833 [DEBUG] [Thread-152330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:36:08.833 [DEBUG] [Thread-152330] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:36:08.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:36:08.835 [DEBUG] [Thread-152330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:36:08.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:36:08.836 [DEBUG] [Thread-152330] [transport.py] [_log()] userauth is OK
2025-09-29T09:36:08.836 [DEBUG] [Thread-152330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:36:08.836 [DEBUG] [Thread-152330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:36:08.837 [DEBUG] [Thread-152330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:36:08.837 [DEBUG] [Thread-152330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:36:08.860 [INFO] [Thread-152330] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:36:08.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:36:09.455 [DEBUG] [Thread-152330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:36:09.455 [DEBUG] [Thread-152330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:36:09.456 [DEBUG] [Thread-152330] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:36:09.496 [DEBUG] [Thread-152330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:36:09.496 [DEBUG] [Thread-152330] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:36:09.501 [DEBUG] [Thread-152330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:36:09.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:36:09.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:36:09.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:36:09.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:36:09.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:36:09.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:36:09.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:36:09.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:36:09.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:36:09.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.316394 -999.00   +8.80  25.52     76   +4.90 1 1 1 1 1   888    0 5.23 56.06 ----- 23.8 25.5 140.0 33.3 13.7 -24.1 12.7 -25.1 11.9 -25.4 12.8 -26.0
2025-09-29T09:36:09.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:36:09.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:36:09.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.316394
2025-09-29T09:36:09.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:36:09.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:36:09.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:36:09.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:36:09.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:36:09.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:35:49', tmtdew=3.55, humidity=79.01, cloud=0.0, wind=33.22, temperature=9.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:35:36.442', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:36:09.527 [DEBUG] [Thread-152330] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:09.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:36:09.623 [DEBUG] [Thread-152333] [transport.py] [_log()] starting thread (client mode): 0x2b9c3760
2025-09-29T09:36:09.623 [DEBUG] [Thread-152333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:36:09.639 [DEBUG] [Thread-152333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:36:09.639 [INFO] [Thread-152333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:36:09.647 [DEBUG] [Thread-152333] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:36:09.647 [DEBUG] [Thread-152333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:36:09.647 [DEBUG] [Thread-152333] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:36:09.647 [DEBUG] [Thread-152333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] client lang: <none>
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] server lang: <none>
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] kex follows: False
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] Compression: none
2025-09-29T09:36:09.648 [DEBUG] [Thread-152333] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:36:09.703 [DEBUG] [Thread-152333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:36:09.704 [DEBUG] [Thread-152333] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:36:09.704 [DEBUG] [Thread-152333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:36:09.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:36:09.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:36:09.759 [DEBUG] [Thread-152333] [transport.py] [_log()] userauth is OK
2025-09-29T09:36:09.759 [DEBUG] [Thread-152333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:36:09.759 [DEBUG] [Thread-152333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:36:09.760 [DEBUG] [Thread-152333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:36:09.760 [DEBUG] [Thread-152333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:36:09.778 [INFO] [Thread-152333] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:36:09.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:36:09.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:36:10.764 [DEBUG] [Thread-152333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:36:10.765 [DEBUG] [Thread-152333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:36:10.812 [DEBUG] [Thread-152333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:36:10.812 [DEBUG] [Thread-152333] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:36:10.821 [DEBUG] [Thread-152333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:36:10.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:36:10.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:36:10.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:36:10.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:36:10.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:36:10.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:36:10.855 [DEBUG] [Thread-152333] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:20.348 [DEBUG] [Thread-152335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:36:20.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:36:20.858 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:36:20.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:36:21.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 35, 49), 3.55, 79.01, 0.0, 33.22, 9.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:36:21.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:35:49
2025-09-29T09:36:21.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:36:21.712 [DEBUG] [Thread-152336] [transport.py] [_log()] starting thread (client mode): 0x2b9bbb50
2025-09-29T09:36:21.712 [DEBUG] [Thread-152336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:36:21.733 [DEBUG] [Thread-152336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:36:21.733 [INFO] [Thread-152336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] client lang: <none>
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] server lang: <none>
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] kex follows: False
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] Compression: none
2025-09-29T09:36:21.736 [DEBUG] [Thread-152336] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:36:21.753 [DEBUG] [Thread-152336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:36:21.754 [DEBUG] [Thread-152336] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:36:21.754 [DEBUG] [Thread-152336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:36:21.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:36:21.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:36:21.755 [DEBUG] [Thread-152336] [transport.py] [_log()] userauth is OK
2025-09-29T09:36:21.755 [DEBUG] [Thread-152336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:36:21.755 [DEBUG] [Thread-152336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:36:21.755 [DEBUG] [Thread-152336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:36:21.755 [DEBUG] [Thread-152336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:36:21.768 [INFO] [Thread-152336] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:36:21.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:36:22.494 [DEBUG] [Thread-152336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:36:22.495 [DEBUG] [Thread-152336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:36:22.495 [DEBUG] [Thread-152336] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:36:22.535 [DEBUG] [Thread-152336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:36:22.535 [DEBUG] [Thread-152336] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:36:22.537 [DEBUG] [Thread-152336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:36:22.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:36:22.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:36:22.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:36:22.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:36:22.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:36:22.555 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:36:22.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:36:22.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:36:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:36:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.316394 -999.00   +8.80  25.52     76   +4.90 1 1 1 1 1   888    0 5.23 56.06 ----- 23.8 25.5 140.0 33.3 13.7 -24.1 12.7 -25.1 11.9 -25.4 12.8 -26.0
2025-09-29T09:36:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:36:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:36:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.316394
2025-09-29T09:36:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:36:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:36:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:36:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:36:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:36:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:35:49', tmtdew=3.55, humidity=79.01, cloud=0.0, wind=33.22, temperature=9.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:35:36.442', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:36:22.556 [DEBUG] [Thread-152336] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:22.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:36:22.645 [DEBUG] [Thread-152339] [transport.py] [_log()] starting thread (client mode): 0x2e360610
2025-09-29T09:36:22.645 [DEBUG] [Thread-152339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:36:22.662 [DEBUG] [Thread-152339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:36:22.662 [INFO] [Thread-152339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:36:22.670 [DEBUG] [Thread-152339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:36:22.670 [DEBUG] [Thread-152339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:36:22.670 [DEBUG] [Thread-152339] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:36:22.670 [DEBUG] [Thread-152339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] client lang: <none>
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] server lang: <none>
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] kex follows: False
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] Compression: none
2025-09-29T09:36:22.671 [DEBUG] [Thread-152339] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:36:22.710 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:36:22.711 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:36:22.727 [DEBUG] [Thread-152339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:36:22.727 [DEBUG] [Thread-152339] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:36:22.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:36:22.728 [DEBUG] [Thread-152339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:36:22.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:36:22.783 [DEBUG] [Thread-152339] [transport.py] [_log()] userauth is OK
2025-09-29T09:36:22.783 [DEBUG] [Thread-152339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:36:22.783 [DEBUG] [Thread-152339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:36:22.783 [DEBUG] [Thread-152339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:36:22.783 [DEBUG] [Thread-152339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:36:22.801 [INFO] [Thread-152339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:36:22.801 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:36:22.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:36:23.768 [DEBUG] [Thread-152339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:36:23.768 [DEBUG] [Thread-152339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:36:23.816 [DEBUG] [Thread-152339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:36:23.816 [DEBUG] [Thread-152339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:36:23.824 [DEBUG] [Thread-152339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:36:23.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:36:23.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:36:23.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:36:23.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:36:23.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:36:23.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:36:23.856 [DEBUG] [Thread-152339] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:30.177 [DEBUG] [Thread-152341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:36:33.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:36:33.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:36:33.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:36:34.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 36, 21), 3.51, 79.21, 0.0, 28.97, 9.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:36:34.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:36:21
2025-09-29T09:36:34.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:36:34.695 [DEBUG] [Thread-152342] [transport.py] [_log()] starting thread (client mode): 0x2b9b80d0
2025-09-29T09:36:34.695 [DEBUG] [Thread-152342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:36:34.715 [DEBUG] [Thread-152342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:36:34.715 [INFO] [Thread-152342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] client lang: <none>
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] server lang: <none>
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] kex follows: False
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] Compression: none
2025-09-29T09:36:34.718 [DEBUG] [Thread-152342] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:36:34.734 [DEBUG] [Thread-152342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:36:34.735 [DEBUG] [Thread-152342] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:36:34.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:36:34.736 [DEBUG] [Thread-152342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:36:34.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:36:34.737 [DEBUG] [Thread-152342] [transport.py] [_log()] userauth is OK
2025-09-29T09:36:34.738 [DEBUG] [Thread-152342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:36:34.738 [DEBUG] [Thread-152342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:36:34.738 [DEBUG] [Thread-152342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:36:34.738 [DEBUG] [Thread-152342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:36:34.764 [INFO] [Thread-152342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:36:34.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:36:35.390 [DEBUG] [Thread-152344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:36:35.523 [DEBUG] [Thread-152342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:36:35.523 [DEBUG] [Thread-152342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:36:35.524 [DEBUG] [Thread-152342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:36:35.564 [DEBUG] [Thread-152342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:36:35.564 [DEBUG] [Thread-152342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:36:35.569 [DEBUG] [Thread-152342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:36:35.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:36:35.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:36:35.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:36:35.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:36:35.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:36:35.588 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:36:35.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:36:35.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:36:35.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:36:35.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.316394 -999.00   +8.80  25.52     76   +4.90 1 1 1 1 1   888    0 5.23 56.06 ----- 23.8 25.5 140.0 33.3 13.7 -24.1 12.7 -25.1 11.9 -25.4 12.8 -26.0
2025-09-29T09:36:35.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:36:35.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:36:35.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.316394
2025-09-29T09:36:35.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:36:35.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:36:35.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:36:35.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:36:35.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:36:35.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:36:21', tmtdew=3.51, humidity=79.21, cloud=0.0, wind=28.97, temperature=9.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:35:36.442', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:36:35.590 [DEBUG] [Thread-152342] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:35.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:36:35.694 [DEBUG] [Thread-152346] [transport.py] [_log()] starting thread (client mode): 0x2b9c1f60
2025-09-29T09:36:35.694 [DEBUG] [Thread-152346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:36:35.709 [DEBUG] [Thread-152346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:36:35.709 [INFO] [Thread-152346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:36:35.716 [DEBUG] [Thread-152346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:36:35.716 [DEBUG] [Thread-152346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] client lang: <none>
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] server lang: <none>
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] kex follows: False
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] Compression: none
2025-09-29T09:36:35.717 [DEBUG] [Thread-152346] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:36:35.775 [DEBUG] [Thread-152346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:36:35.776 [DEBUG] [Thread-152346] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:36:35.776 [DEBUG] [Thread-152346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:36:35.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:36:35.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:36:35.831 [DEBUG] [Thread-152346] [transport.py] [_log()] userauth is OK
2025-09-29T09:36:35.831 [DEBUG] [Thread-152346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:36:35.831 [DEBUG] [Thread-152346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:36:35.831 [DEBUG] [Thread-152346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:36:35.831 [DEBUG] [Thread-152346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:36:35.852 [INFO] [Thread-152346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:36:35.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:36:35.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:36:36.863 [DEBUG] [Thread-152346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:36:36.863 [DEBUG] [Thread-152346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:36:36.911 [DEBUG] [Thread-152346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:36:36.911 [DEBUG] [Thread-152346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:36:36.920 [DEBUG] [Thread-152346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:36:36.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:36:36.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:36:36.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:36:36.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:36:36.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:36:36.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:36:36.954 [DEBUG] [Thread-152346] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:46.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:36:46.957 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:36:46.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:36:47.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 36, 21), 3.51, 79.21, 0.0, 28.97, 9.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:36:47.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:36:21
2025-09-29T09:36:47.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:36:47.778 [DEBUG] [Thread-152348] [transport.py] [_log()] starting thread (client mode): 0x2b9c1ab0
2025-09-29T09:36:47.778 [DEBUG] [Thread-152348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:36:47.797 [DEBUG] [Thread-152348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:36:47.797 [INFO] [Thread-152348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] client lang: <none>
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] server lang: <none>
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] kex follows: False
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] Compression: none
2025-09-29T09:36:47.801 [DEBUG] [Thread-152348] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:36:47.816 [DEBUG] [Thread-152348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:36:47.817 [DEBUG] [Thread-152348] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:36:47.817 [DEBUG] [Thread-152348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:36:47.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:36:47.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:36:47.818 [DEBUG] [Thread-152348] [transport.py] [_log()] userauth is OK
2025-09-29T09:36:47.818 [DEBUG] [Thread-152348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:36:47.818 [DEBUG] [Thread-152348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:36:47.818 [DEBUG] [Thread-152348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:36:47.818 [DEBUG] [Thread-152348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:36:47.834 [INFO] [Thread-152348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:36:47.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:36:48.449 [DEBUG] [Thread-152348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:36:48.449 [DEBUG] [Thread-152348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:36:48.450 [DEBUG] [Thread-152348] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:36:48.490 [DEBUG] [Thread-152348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:36:48.490 [DEBUG] [Thread-152348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:36:48.493 [DEBUG] [Thread-152348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:36:48.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:36:48.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:36:48.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:36:48.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:36:48.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:36:48.515 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:36:48.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:36:48.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:36:48.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:36:48.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.317089 -999.00   +8.70  16.00     77   +4.90 1 1 1 1 1   888    0 5.31 57.53 ----- 19.7 16.0 151.0 26.5 13.3 -23.4 12.5 -23.9 11.8 -24.9 12.6 -23.5
2025-09-29T09:36:48.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:36:48.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:36:48.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.317089
2025-09-29T09:36:48.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:36:48.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:36:48.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:36:48.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:36:48.518 [DEBUG] [Thread-152348] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:48.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:36:48.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:36:21', tmtdew=3.51, humidity=79.21, cloud=0.0, wind=28.97, temperature=9.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:36:36.490', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:36:48.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:36:48.625 [DEBUG] [Thread-152351] [transport.py] [_log()] starting thread (client mode): 0x28705840
2025-09-29T09:36:48.625 [DEBUG] [Thread-152351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:36:48.640 [DEBUG] [Thread-152351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:36:48.640 [INFO] [Thread-152351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:36:48.648 [DEBUG] [Thread-152351] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:36:48.648 [DEBUG] [Thread-152351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:36:48.648 [DEBUG] [Thread-152351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] client lang: <none>
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] server lang: <none>
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] kex follows: False
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] Compression: none
2025-09-29T09:36:48.649 [DEBUG] [Thread-152351] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:36:48.707 [DEBUG] [Thread-152351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:36:48.707 [DEBUG] [Thread-152351] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:36:48.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:36:48.708 [DEBUG] [Thread-152351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:36:48.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:36:48.763 [DEBUG] [Thread-152351] [transport.py] [_log()] userauth is OK
2025-09-29T09:36:48.763 [DEBUG] [Thread-152351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:36:48.764 [DEBUG] [Thread-152351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:36:48.764 [DEBUG] [Thread-152351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:36:48.764 [DEBUG] [Thread-152351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:36:48.783 [INFO] [Thread-152351] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:36:48.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:36:48.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:36:49.849 [DEBUG] [Thread-152351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:36:49.849 [DEBUG] [Thread-152351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:36:49.897 [DEBUG] [Thread-152351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:36:49.897 [DEBUG] [Thread-152351] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:36:49.906 [DEBUG] [Thread-152351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:36:49.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:36:49.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:36:49.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:36:49.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:36:49.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:36:49.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:36:49.941 [DEBUG] [Thread-152351] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:36:50.421 [DEBUG] [Thread-152353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:36:59.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:36:59.943 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:36:59.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:37:00.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 36, 53), 3.44, 79.81, 0.0, 24.86, 8.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:37:00.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:36:53
2025-09-29T09:37:00.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:37:00.799 [DEBUG] [Thread-152354] [transport.py] [_log()] starting thread (client mode): 0x2b9a42e0
2025-09-29T09:37:00.799 [DEBUG] [Thread-152354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:00.820 [DEBUG] [Thread-152354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:37:00.820 [INFO] [Thread-152354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] Compression: none
2025-09-29T09:37:00.823 [DEBUG] [Thread-152354] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:00.838 [DEBUG] [Thread-152354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:00.838 [DEBUG] [Thread-152354] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:00.838 [DEBUG] [Thread-152354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:37:00.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:37:00.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:00.839 [DEBUG] [Thread-152354] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:00.839 [DEBUG] [Thread-152354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:00.839 [DEBUG] [Thread-152354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:00.839 [DEBUG] [Thread-152354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:37:00.839 [DEBUG] [Thread-152354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:00.848 [INFO] [Thread-152354] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:00.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:01.597 [DEBUG] [Thread-152354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:01.597 [DEBUG] [Thread-152354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:01.597 [DEBUG] [Thread-152354] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:37:01.638 [DEBUG] [Thread-152354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:01.638 [DEBUG] [Thread-152354] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:01.640 [DEBUG] [Thread-152354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:01.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:01.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:37:01.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:37:01.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:37:01.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:01.657 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:37:01.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:01.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.317089 -999.00   +8.70  16.00     77   +4.90 1 1 1 1 1   888    0 5.31 57.53 ----- 19.7 16.0 151.0 26.5 13.3 -23.4 12.5 -23.9 11.8 -24.9 12.6 -23.5
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.317089
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:37:01.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:36:53', tmtdew=3.44, humidity=79.81, cloud=0.0, wind=24.86, temperature=8.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:36:36.490', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:37:01.659 [DEBUG] [Thread-152354] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:01.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:37:01.744 [DEBUG] [Thread-152357] [transport.py] [_log()] starting thread (client mode): 0x2e3629b0
2025-09-29T09:37:01.744 [DEBUG] [Thread-152357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:01.758 [DEBUG] [Thread-152357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:37:01.758 [INFO] [Thread-152357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:01.767 [DEBUG] [Thread-152357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:01.768 [DEBUG] [Thread-152357] [transport.py] [_log()] Compression: none
2025-09-29T09:37:01.768 [DEBUG] [Thread-152357] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:01.822 [DEBUG] [Thread-152357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:01.822 [DEBUG] [Thread-152357] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:01.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:37:01.822 [DEBUG] [Thread-152357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:37:01.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:01.880 [DEBUG] [Thread-152357] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:01.880 [DEBUG] [Thread-152357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:01.880 [DEBUG] [Thread-152357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:01.880 [DEBUG] [Thread-152357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:37:01.880 [DEBUG] [Thread-152357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:01.901 [INFO] [Thread-152357] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:01.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:37:01.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:02.966 [DEBUG] [Thread-152357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:02.967 [DEBUG] [Thread-152357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:03.015 [DEBUG] [Thread-152357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:03.015 [DEBUG] [Thread-152357] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:03.023 [DEBUG] [Thread-152357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:03.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:03.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:37:03.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:37:03.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:03.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:03.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:03.054 [DEBUG] [Thread-152357] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:05.471 [DEBUG] [Thread-152359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:37:13.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:37:13.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:37:13.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:37:13.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 36, 53), 3.44, 79.81, 0.0, 24.86, 8.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:37:13.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:36:53
2025-09-29T09:37:13.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:37:13.886 [DEBUG] [Thread-152360] [transport.py] [_log()] starting thread (client mode): 0x2b9ce680
2025-09-29T09:37:13.886 [DEBUG] [Thread-152360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:13.896 [DEBUG] [Thread-152360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:37:13.896 [INFO] [Thread-152360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] Compression: none
2025-09-29T09:37:13.899 [DEBUG] [Thread-152360] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:13.907 [DEBUG] [Thread-152360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:13.907 [DEBUG] [Thread-152360] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:13.907 [DEBUG] [Thread-152360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:37:13.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:37:13.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:13.908 [DEBUG] [Thread-152360] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:13.909 [DEBUG] [Thread-152360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:13.909 [DEBUG] [Thread-152360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:13.909 [DEBUG] [Thread-152360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:37:13.909 [DEBUG] [Thread-152360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:13.927 [INFO] [Thread-152360] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:13.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:14.541 [DEBUG] [Thread-152360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:14.541 [DEBUG] [Thread-152360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:14.541 [DEBUG] [Thread-152360] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:37:14.582 [DEBUG] [Thread-152360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:14.582 [DEBUG] [Thread-152360] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:14.585 [DEBUG] [Thread-152360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:14.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:14.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:37:14.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:37:14.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:37:14.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:14.603 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:37:14.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:14.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:14.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:37:14.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.317436 -999.00   +8.70  23.71     76   +4.80 1 1 1 1 1   888    0 5.20 53.46 ----- 32.4 23.7 149.6 36.2 13.3 -24.1 12.4 -24.7 11.7 -25.8 12.5 -24.6
2025-09-29T09:37:14.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:37:14.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:37:14.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.317436
2025-09-29T09:37:14.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:37:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:37:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:37:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:37:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:37:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:36:53', tmtdew=3.44, humidity=79.81, cloud=0.0, wind=24.86, temperature=8.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:37:06.470', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:37:14.605 [DEBUG] [Thread-152360] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:14.690 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:37:14.699 [DEBUG] [Thread-152363] [transport.py] [_log()] starting thread (client mode): 0x2e34b100
2025-09-29T09:37:14.699 [DEBUG] [Thread-152363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:14.715 [DEBUG] [Thread-152363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:37:14.715 [INFO] [Thread-152363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:37:14.722 [DEBUG] [Thread-152363] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:14.722 [DEBUG] [Thread-152363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:37:14.722 [DEBUG] [Thread-152363] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:14.722 [DEBUG] [Thread-152363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:14.722 [DEBUG] [Thread-152363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:14.722 [DEBUG] [Thread-152363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:14.722 [DEBUG] [Thread-152363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] Compression: none
2025-09-29T09:37:14.723 [DEBUG] [Thread-152363] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:14.778 [DEBUG] [Thread-152363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:14.779 [DEBUG] [Thread-152363] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:14.779 [DEBUG] [Thread-152363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:37:14.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:37:14.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:14.835 [DEBUG] [Thread-152363] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:14.835 [DEBUG] [Thread-152363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:14.835 [DEBUG] [Thread-152363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:14.836 [DEBUG] [Thread-152363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:37:14.836 [DEBUG] [Thread-152363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:14.854 [INFO] [Thread-152363] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:14.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:37:14.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:15.819 [DEBUG] [Thread-152363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:15.819 [DEBUG] [Thread-152363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:15.867 [DEBUG] [Thread-152363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:15.867 [DEBUG] [Thread-152363] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:15.876 [DEBUG] [Thread-152363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:15.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:15.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:37:15.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:37:15.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:15.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:15.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:15.910 [DEBUG] [Thread-152363] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:20.512 [DEBUG] [Thread-152365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:37:22.853 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:37:22.855 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:37:25.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:37:25.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:37:25.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:37:26.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 36, 53), 3.44, 79.81, 0.0, 24.86, 8.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:37:26.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:36:53
2025-09-29T09:37:26.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:37:26.781 [DEBUG] [Thread-152366] [transport.py] [_log()] starting thread (client mode): 0x28704e20
2025-09-29T09:37:26.781 [DEBUG] [Thread-152366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:26.803 [DEBUG] [Thread-152366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:37:26.803 [INFO] [Thread-152366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:37:26.804 [DEBUG] [Thread-152366] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:26.804 [DEBUG] [Thread-152366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] Compression: none
2025-09-29T09:37:26.805 [DEBUG] [Thread-152366] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:26.816 [DEBUG] [Thread-152366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:26.816 [DEBUG] [Thread-152366] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:26.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:37:26.816 [DEBUG] [Thread-152366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:37:26.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:26.817 [DEBUG] [Thread-152366] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:26.817 [DEBUG] [Thread-152366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:26.817 [DEBUG] [Thread-152366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:26.817 [DEBUG] [Thread-152366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:37:26.817 [DEBUG] [Thread-152366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:26.829 [INFO] [Thread-152366] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:26.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:27.463 [DEBUG] [Thread-152366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:27.463 [DEBUG] [Thread-152366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:27.463 [DEBUG] [Thread-152366] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:37:27.504 [DEBUG] [Thread-152366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:27.504 [DEBUG] [Thread-152366] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:27.507 [DEBUG] [Thread-152366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:27.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:27.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:37:27.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:37:27.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:37:27.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:27.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:37:27.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:27.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:27.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:37:27.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.317436 -999.00   +8.70  23.71     76   +4.80 1 1 1 1 1   888    0 5.20 53.46 ----- 32.4 23.7 149.6 36.2 13.3 -24.1 12.4 -24.7 11.7 -25.8 12.5 -24.6
2025-09-29T09:37:27.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:37:27.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:37:27.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.317436
2025-09-29T09:37:27.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:37:27.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:37:27.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:37:27.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:37:27.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:37:27.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:36:53', tmtdew=3.44, humidity=79.81, cloud=0.0, wind=24.86, temperature=8.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:37:06.470', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:37:27.530 [DEBUG] [Thread-152366] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:27.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:37:27.629 [DEBUG] [Thread-152369] [transport.py] [_log()] starting thread (client mode): 0x2b9a7460
2025-09-29T09:37:27.629 [DEBUG] [Thread-152369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:27.643 [DEBUG] [Thread-152369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:37:27.643 [INFO] [Thread-152369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:37:27.651 [DEBUG] [Thread-152369] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:27.651 [DEBUG] [Thread-152369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:37:27.651 [DEBUG] [Thread-152369] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:27.651 [DEBUG] [Thread-152369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:27.652 [DEBUG] [Thread-152369] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:27.653 [DEBUG] [Thread-152369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:27.653 [DEBUG] [Thread-152369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:27.653 [DEBUG] [Thread-152369] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:27.653 [DEBUG] [Thread-152369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:27.653 [DEBUG] [Thread-152369] [transport.py] [_log()] Compression: none
2025-09-29T09:37:27.653 [DEBUG] [Thread-152369] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:27.711 [DEBUG] [Thread-152369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:27.712 [DEBUG] [Thread-152369] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:27.712 [DEBUG] [Thread-152369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:37:27.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:37:27.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:27.771 [DEBUG] [Thread-152369] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:27.771 [DEBUG] [Thread-152369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:27.771 [DEBUG] [Thread-152369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:27.771 [DEBUG] [Thread-152369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:37:27.771 [DEBUG] [Thread-152369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:27.787 [INFO] [Thread-152369] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:27.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:37:27.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:28.774 [DEBUG] [Thread-152369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:28.774 [DEBUG] [Thread-152369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:28.822 [DEBUG] [Thread-152369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:28.822 [DEBUG] [Thread-152369] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:28.830 [DEBUG] [Thread-152369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:28.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:28.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:37:28.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:37:28.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:28.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:28.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:28.862 [DEBUG] [Thread-152369] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:30.229 [DEBUG] [Thread-152371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:37:35.557 [DEBUG] [Thread-152372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:37:38.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:37:38.864 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:37:38.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:37:39.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 37, 25), 3.47, 79.68, 0.0, 31.49, 9.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:37:39.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:37:25
2025-09-29T09:37:39.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:37:39.739 [DEBUG] [Thread-152373] [transport.py] [_log()] starting thread (client mode): 0x2e3493c0
2025-09-29T09:37:39.739 [DEBUG] [Thread-152373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:39.760 [DEBUG] [Thread-152373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:37:39.760 [INFO] [Thread-152373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:39.763 [DEBUG] [Thread-152373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:39.764 [DEBUG] [Thread-152373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:39.764 [DEBUG] [Thread-152373] [transport.py] [_log()] Compression: none
2025-09-29T09:37:39.764 [DEBUG] [Thread-152373] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:39.778 [DEBUG] [Thread-152373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:39.778 [DEBUG] [Thread-152373] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:39.779 [DEBUG] [Thread-152373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:37:39.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:37:39.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:39.779 [DEBUG] [Thread-152373] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:39.780 [DEBUG] [Thread-152373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:39.780 [DEBUG] [Thread-152373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:39.780 [DEBUG] [Thread-152373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:37:39.780 [DEBUG] [Thread-152373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:39.791 [INFO] [Thread-152373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:39.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:40.555 [DEBUG] [Thread-152373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:40.555 [DEBUG] [Thread-152373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:40.555 [DEBUG] [Thread-152373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:37:40.596 [DEBUG] [Thread-152373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:40.596 [DEBUG] [Thread-152373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:40.598 [DEBUG] [Thread-152373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:40.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:40.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:37:40.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:37:40.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:37:40.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:40.614 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:37:40.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.317436 -999.00   +8.70  23.71     76   +4.80 1 1 1 1 1   888    0 5.20 53.46 ----- 32.4 23.7 149.6 36.2 13.3 -24.1 12.4 -24.7 11.7 -25.8 12.5 -24.6
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.317436
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:37:40.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:37:25', tmtdew=3.47, humidity=79.68, cloud=0.0, wind=31.49, temperature=9.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:37:06.470', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:37:40.615 [DEBUG] [Thread-152373] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:40.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:37:40.700 [DEBUG] [Thread-152376] [transport.py] [_log()] starting thread (client mode): 0x2e34a980
2025-09-29T09:37:40.700 [DEBUG] [Thread-152376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:40.715 [DEBUG] [Thread-152376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:37:40.715 [INFO] [Thread-152376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:37:40.722 [DEBUG] [Thread-152376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:40.722 [DEBUG] [Thread-152376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:37:40.722 [DEBUG] [Thread-152376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:40.722 [DEBUG] [Thread-152376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:40.722 [DEBUG] [Thread-152376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:40.722 [DEBUG] [Thread-152376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:40.722 [DEBUG] [Thread-152376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] Compression: none
2025-09-29T09:37:40.723 [DEBUG] [Thread-152376] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:40.782 [DEBUG] [Thread-152376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:40.782 [DEBUG] [Thread-152376] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:40.782 [DEBUG] [Thread-152376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:37:40.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:37:40.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:40.839 [DEBUG] [Thread-152376] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:40.839 [DEBUG] [Thread-152376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:40.839 [DEBUG] [Thread-152376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:40.839 [DEBUG] [Thread-152376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:37:40.839 [DEBUG] [Thread-152376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:40.856 [INFO] [Thread-152376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:40.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:37:40.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:41.827 [DEBUG] [Thread-152376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:41.827 [DEBUG] [Thread-152376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:41.875 [DEBUG] [Thread-152376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:41.875 [DEBUG] [Thread-152376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:41.883 [DEBUG] [Thread-152376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:41.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:41.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:37:41.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:37:41.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:41.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:41.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:41.914 [DEBUG] [Thread-152376] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:50.587 [DEBUG] [Thread-152378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:37:51.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:37:51.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:37:51.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:37:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 37, 25), 3.47, 79.68, 0.0, 31.49, 9.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:37:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:37:25
2025-09-29T09:37:52.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:37:52.749 [DEBUG] [Thread-152379] [transport.py] [_log()] starting thread (client mode): 0x2e34a950
2025-09-29T09:37:52.749 [DEBUG] [Thread-152379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:52.770 [DEBUG] [Thread-152379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:37:52.771 [INFO] [Thread-152379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:37:52.774 [DEBUG] [Thread-152379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:52.774 [DEBUG] [Thread-152379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:37:52.774 [DEBUG] [Thread-152379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:52.774 [DEBUG] [Thread-152379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:52.774 [DEBUG] [Thread-152379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:52.774 [DEBUG] [Thread-152379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:52.774 [DEBUG] [Thread-152379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:52.774 [DEBUG] [Thread-152379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] Compression: none
2025-09-29T09:37:52.775 [DEBUG] [Thread-152379] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:52.794 [DEBUG] [Thread-152379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:52.794 [DEBUG] [Thread-152379] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:52.795 [DEBUG] [Thread-152379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:37:52.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:37:52.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:52.797 [DEBUG] [Thread-152379] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:52.797 [DEBUG] [Thread-152379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:52.797 [DEBUG] [Thread-152379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:52.797 [DEBUG] [Thread-152379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:37:52.797 [DEBUG] [Thread-152379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:52.814 [INFO] [Thread-152379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:52.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:53.437 [DEBUG] [Thread-152379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:53.437 [DEBUG] [Thread-152379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:53.437 [DEBUG] [Thread-152379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:37:53.477 [DEBUG] [Thread-152379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:53.477 [DEBUG] [Thread-152379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:53.480 [DEBUG] [Thread-152379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:53.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:53.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:37:53.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:37:53.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:37:53.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:53.501 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:37:53.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:53.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:53.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:37:53.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.317783 -999.00   +8.70  26.81     76   +4.80 1 1 1 1 1   888    0 5.09 49.27 ----- 24.8 26.8 144.2 33.5 13.1 -24.6 12.4 -23.0 11.7 -24.8 12.4 -24.5
2025-09-29T09:37:53.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:37:53.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:37:53.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.317783
2025-09-29T09:37:53.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:37:53.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:37:53.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:37:53.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:37:53.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:37:53.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:37:25', tmtdew=3.47, humidity=79.68, cloud=0.0, wind=31.49, temperature=9.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:37:36.451', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:37:53.504 [DEBUG] [Thread-152379] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:37:53.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:37:53.604 [DEBUG] [Thread-152382] [transport.py] [_log()] starting thread (client mode): 0x2e349300
2025-09-29T09:37:53.604 [DEBUG] [Thread-152382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:37:53.618 [DEBUG] [Thread-152382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:37:53.618 [INFO] [Thread-152382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:37:53.625 [DEBUG] [Thread-152382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:37:53.625 [DEBUG] [Thread-152382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:37:53.625 [DEBUG] [Thread-152382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:37:53.625 [DEBUG] [Thread-152382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:53.625 [DEBUG] [Thread-152382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:37:53.625 [DEBUG] [Thread-152382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] client lang: <none>
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] server lang: <none>
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] kex follows: False
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] Compression: none
2025-09-29T09:37:53.626 [DEBUG] [Thread-152382] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:37:53.683 [DEBUG] [Thread-152382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:37:53.683 [DEBUG] [Thread-152382] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:37:53.684 [DEBUG] [Thread-152382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:37:53.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:37:53.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:37:53.739 [DEBUG] [Thread-152382] [transport.py] [_log()] userauth is OK
2025-09-29T09:37:53.739 [DEBUG] [Thread-152382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:37:53.739 [DEBUG] [Thread-152382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:37:53.739 [DEBUG] [Thread-152382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:37:53.739 [DEBUG] [Thread-152382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:37:53.757 [INFO] [Thread-152382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:37:53.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:37:53.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:37:54.750 [DEBUG] [Thread-152382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:37:54.750 [DEBUG] [Thread-152382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:37:54.798 [DEBUG] [Thread-152382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:37:54.798 [DEBUG] [Thread-152382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:37:54.807 [DEBUG] [Thread-152382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:37:54.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:37:54.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:37:54.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:37:54.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:37:54.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:37:54.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:37:54.840 [DEBUG] [Thread-152382] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:04.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:38:04.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:38:04.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:38:05.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 37, 57), 3.67, 78.93, 0.0, 32.29, 9.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:38:05.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:37:57
2025-09-29T09:38:05.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:38:05.633 [DEBUG] [Thread-152384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:38:05.685 [DEBUG] [Thread-152385] [transport.py] [_log()] starting thread (client mode): 0x287077c0
2025-09-29T09:38:05.685 [DEBUG] [Thread-152385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:05.705 [DEBUG] [Thread-152385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:38:05.705 [INFO] [Thread-152385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:05.708 [DEBUG] [Thread-152385] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] Compression: none
2025-09-29T09:38:05.709 [DEBUG] [Thread-152385] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:05.728 [DEBUG] [Thread-152385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:05.729 [DEBUG] [Thread-152385] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:05.729 [DEBUG] [Thread-152385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:38:05.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:38:05.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:05.731 [DEBUG] [Thread-152385] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:05.731 [DEBUG] [Thread-152385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:05.731 [DEBUG] [Thread-152385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:05.732 [DEBUG] [Thread-152385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:38:05.732 [DEBUG] [Thread-152385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:05.755 [INFO] [Thread-152385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:05.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:06.539 [DEBUG] [Thread-152385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:06.539 [DEBUG] [Thread-152385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:06.539 [DEBUG] [Thread-152385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:38:06.580 [DEBUG] [Thread-152385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:06.580 [DEBUG] [Thread-152385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:06.583 [DEBUG] [Thread-152385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:06.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:06.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:38:06.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:38:06.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:38:06.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:06.601 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:38:06.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.317783 -999.00   +8.70  26.81     76   +4.80 1 1 1 1 1   888    0 5.09 49.27 ----- 24.8 26.8 144.2 33.5 13.1 -24.6 12.4 -23.0 11.7 -24.8 12.4 -24.5
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.317783
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:38:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:37:57', tmtdew=3.67, humidity=78.93, cloud=0.0, wind=32.29, temperature=9.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:37:36.451', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:38:06.602 [DEBUG] [Thread-152385] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:06.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:38:06.686 [DEBUG] [Thread-152388] [transport.py] [_log()] starting thread (client mode): 0x2b9c2b00
2025-09-29T09:38:06.686 [DEBUG] [Thread-152388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:06.700 [DEBUG] [Thread-152388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:38:06.701 [INFO] [Thread-152388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:38:06.708 [DEBUG] [Thread-152388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:06.709 [DEBUG] [Thread-152388] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:06.710 [DEBUG] [Thread-152388] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:06.710 [DEBUG] [Thread-152388] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:06.710 [DEBUG] [Thread-152388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:06.710 [DEBUG] [Thread-152388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:06.710 [DEBUG] [Thread-152388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:06.710 [DEBUG] [Thread-152388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:06.710 [DEBUG] [Thread-152388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:06.711 [DEBUG] [Thread-152388] [transport.py] [_log()] Compression: none
2025-09-29T09:38:06.711 [DEBUG] [Thread-152388] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:06.767 [DEBUG] [Thread-152388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:06.768 [DEBUG] [Thread-152388] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:06.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:38:06.769 [DEBUG] [Thread-152388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:38:06.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:06.823 [DEBUG] [Thread-152388] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:06.823 [DEBUG] [Thread-152388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:06.823 [DEBUG] [Thread-152388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:06.823 [DEBUG] [Thread-152388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:38:06.823 [DEBUG] [Thread-152388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:06.842 [INFO] [Thread-152388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:06.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:38:06.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:07.864 [DEBUG] [Thread-152388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:07.865 [DEBUG] [Thread-152388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:07.913 [DEBUG] [Thread-152388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:07.913 [DEBUG] [Thread-152388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:07.922 [DEBUG] [Thread-152388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:07.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:07.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:38:07.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:38:07.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:07.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:07.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:07.959 [DEBUG] [Thread-152388] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:17.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:38:17.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:38:17.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:38:18.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 37, 57), 3.67, 78.93, 0.0, 32.29, 9.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:38:18.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:37:57
2025-09-29T09:38:18.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:38:18.822 [DEBUG] [Thread-152390] [transport.py] [_log()] starting thread (client mode): 0x28707c40
2025-09-29T09:38:18.822 [DEBUG] [Thread-152390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:18.843 [DEBUG] [Thread-152390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:38:18.843 [INFO] [Thread-152390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:38:18.846 [DEBUG] [Thread-152390] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:18.846 [DEBUG] [Thread-152390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:38:18.846 [DEBUG] [Thread-152390] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:18.846 [DEBUG] [Thread-152390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:18.846 [DEBUG] [Thread-152390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:18.846 [DEBUG] [Thread-152390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] Compression: none
2025-09-29T09:38:18.847 [DEBUG] [Thread-152390] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:18.861 [DEBUG] [Thread-152390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:18.862 [DEBUG] [Thread-152390] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:18.862 [DEBUG] [Thread-152390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:38:18.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:38:18.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:18.863 [DEBUG] [Thread-152390] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:18.863 [DEBUG] [Thread-152390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:18.863 [DEBUG] [Thread-152390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:18.863 [DEBUG] [Thread-152390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:38:18.863 [DEBUG] [Thread-152390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:18.873 [INFO] [Thread-152390] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:18.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:19.680 [DEBUG] [Thread-152390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:19.680 [DEBUG] [Thread-152390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:19.680 [DEBUG] [Thread-152390] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:38:19.721 [DEBUG] [Thread-152390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:19.721 [DEBUG] [Thread-152390] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:19.723 [DEBUG] [Thread-152390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:19.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:19.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:38:19.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:38:19.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:38:19.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:19.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:38:19.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:19.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:38:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.317783 -999.00   +8.70  26.81     76   +4.80 1 1 1 1 1   888    0 5.09 49.27 ----- 24.8 26.8 144.2 33.5 13.1 -24.6 12.4 -23.0 11.7 -24.8 12.4 -24.5
2025-09-29T09:38:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:38:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:38:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.317783
2025-09-29T09:38:19.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:38:19.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:38:19.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:38:19.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:38:19.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:38:19.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:37:57', tmtdew=3.67, humidity=78.93, cloud=0.0, wind=32.29, temperature=9.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:37:36.451', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:38:19.744 [DEBUG] [Thread-152390] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:19.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:38:19.827 [DEBUG] [Thread-152393] [transport.py] [_log()] starting thread (client mode): 0x287075e0
2025-09-29T09:38:19.827 [DEBUG] [Thread-152393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:19.842 [DEBUG] [Thread-152393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:38:19.842 [INFO] [Thread-152393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:19.850 [DEBUG] [Thread-152393] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:19.851 [DEBUG] [Thread-152393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:19.851 [DEBUG] [Thread-152393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:19.851 [DEBUG] [Thread-152393] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:19.851 [DEBUG] [Thread-152393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:19.851 [DEBUG] [Thread-152393] [transport.py] [_log()] Compression: none
2025-09-29T09:38:19.851 [DEBUG] [Thread-152393] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:19.905 [DEBUG] [Thread-152393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:19.905 [DEBUG] [Thread-152393] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:19.906 [DEBUG] [Thread-152393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:38:19.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:38:19.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:19.963 [DEBUG] [Thread-152393] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:19.963 [DEBUG] [Thread-152393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:19.963 [DEBUG] [Thread-152393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:19.963 [DEBUG] [Thread-152393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:38:19.963 [DEBUG] [Thread-152393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:19.978 [INFO] [Thread-152393] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:19.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:38:19.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:20.676 [DEBUG] [Thread-152395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:38:20.971 [DEBUG] [Thread-152393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:20.971 [DEBUG] [Thread-152393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:21.019 [DEBUG] [Thread-152393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:21.019 [DEBUG] [Thread-152393] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:21.028 [DEBUG] [Thread-152393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:21.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:21.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:38:21.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:38:21.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:21.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:21.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:21.063 [DEBUG] [Thread-152393] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:22.996 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:38:22.997 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:38:30.281 [DEBUG] [Thread-152396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:38:31.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:38:31.064 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:38:31.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:38:31.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 37, 57), 3.67, 78.93, 0.0, 32.29, 9.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:38:31.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:37:57
2025-09-29T09:38:31.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:38:31.918 [DEBUG] [Thread-152397] [transport.py] [_log()] starting thread (client mode): 0x2b91d630
2025-09-29T09:38:31.918 [DEBUG] [Thread-152397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:31.939 [DEBUG] [Thread-152397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:38:31.939 [INFO] [Thread-152397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] Compression: none
2025-09-29T09:38:31.942 [DEBUG] [Thread-152397] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:31.958 [DEBUG] [Thread-152397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:31.958 [DEBUG] [Thread-152397] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:31.959 [DEBUG] [Thread-152397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:38:31.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:38:31.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:31.961 [DEBUG] [Thread-152397] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:31.961 [DEBUG] [Thread-152397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:31.961 [DEBUG] [Thread-152397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:31.961 [DEBUG] [Thread-152397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:38:31.961 [DEBUG] [Thread-152397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:31.979 [INFO] [Thread-152397] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:31.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:32.614 [DEBUG] [Thread-152397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:32.615 [DEBUG] [Thread-152397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:32.615 [DEBUG] [Thread-152397] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:38:32.655 [DEBUG] [Thread-152397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:32.655 [DEBUG] [Thread-152397] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:32.658 [DEBUG] [Thread-152397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:32.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:32.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:38:32.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:38:32.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:38:32.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:32.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:38:32.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:32.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:32.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:38:32.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.318130 -999.00   +8.80  27.81     76   +4.80 1 1 1 1 1   888    0 5.09 47.67 ----- 27.9 27.8 147.4 36.5 13.3 -21.1 12.7 -23.1 11.9 -23.9 12.7 -22.5
2025-09-29T09:38:32.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:38:32.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:38:32.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.318130
2025-09-29T09:38:32.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:38:32.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:38:32.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:38:32.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:38:32.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:38:32.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:37:57', tmtdew=3.67, humidity=78.93, cloud=0.0, wind=32.29, temperature=9.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:38:06.432', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:38:32.681 [DEBUG] [Thread-152397] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:32.766 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:38:32.778 [DEBUG] [Thread-152400] [transport.py] [_log()] starting thread (client mode): 0x2e3dda80
2025-09-29T09:38:32.778 [DEBUG] [Thread-152400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:32.792 [DEBUG] [Thread-152400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:38:32.792 [INFO] [Thread-152400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:38:32.800 [DEBUG] [Thread-152400] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:32.800 [DEBUG] [Thread-152400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:38:32.800 [DEBUG] [Thread-152400] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] Compression: none
2025-09-29T09:38:32.801 [DEBUG] [Thread-152400] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:32.858 [DEBUG] [Thread-152400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:32.859 [DEBUG] [Thread-152400] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:32.859 [DEBUG] [Thread-152400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:38:32.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:38:32.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:32.917 [DEBUG] [Thread-152400] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:32.917 [DEBUG] [Thread-152400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:32.917 [DEBUG] [Thread-152400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:32.917 [DEBUG] [Thread-152400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:38:32.917 [DEBUG] [Thread-152400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:32.935 [INFO] [Thread-152400] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:32.935 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:38:32.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:33.907 [DEBUG] [Thread-152400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:33.907 [DEBUG] [Thread-152400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:33.955 [DEBUG] [Thread-152400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:33.955 [DEBUG] [Thread-152400] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:33.964 [DEBUG] [Thread-152400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:33.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:33.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:38:33.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:38:33.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:33.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:33.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:34.003 [DEBUG] [Thread-152400] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:35.719 [DEBUG] [Thread-152402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:38:43.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:38:43.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:38:44.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:38:44.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 38, 29), 3.79, 78.45, 0.0, 31.95, 9.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:38:44.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:38:29
2025-09-29T09:38:44.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:38:44.837 [DEBUG] [Thread-152403] [transport.py] [_log()] starting thread (client mode): 0x287041f0
2025-09-29T09:38:44.837 [DEBUG] [Thread-152403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:44.858 [DEBUG] [Thread-152403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:38:44.858 [INFO] [Thread-152403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:44.861 [DEBUG] [Thread-152403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:44.862 [DEBUG] [Thread-152403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:44.862 [DEBUG] [Thread-152403] [transport.py] [_log()] Compression: none
2025-09-29T09:38:44.862 [DEBUG] [Thread-152403] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:44.878 [DEBUG] [Thread-152403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:44.878 [DEBUG] [Thread-152403] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:44.879 [DEBUG] [Thread-152403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:38:44.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:38:44.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:44.880 [DEBUG] [Thread-152403] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:44.881 [DEBUG] [Thread-152403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:44.881 [DEBUG] [Thread-152403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:44.881 [DEBUG] [Thread-152403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:38:44.881 [DEBUG] [Thread-152403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:44.896 [INFO] [Thread-152403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:44.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:45.648 [DEBUG] [Thread-152403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:45.648 [DEBUG] [Thread-152403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:45.648 [DEBUG] [Thread-152403] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:38:45.689 [DEBUG] [Thread-152403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:45.689 [DEBUG] [Thread-152403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:45.692 [DEBUG] [Thread-152403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:45.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:45.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:38:45.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:38:45.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:38:45.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:45.716 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:38:45.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:45.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:38:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.318130 -999.00   +8.80  27.81     76   +4.80 1 1 1 1 1   888    0 5.09 47.67 ----- 27.9 27.8 147.4 36.5 13.3 -21.1 12.7 -23.1 11.9 -23.9 12.7 -22.5
2025-09-29T09:38:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:38:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:38:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.318130
2025-09-29T09:38:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:38:45.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:38:45.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:38:45.718 [DEBUG] [Thread-152403] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:45.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:38:45.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:38:45.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:38:29', tmtdew=3.79, humidity=78.45, cloud=0.0, wind=31.95, temperature=9.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:38:06.432', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:38:45.803 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:38:45.815 [DEBUG] [Thread-152406] [transport.py] [_log()] starting thread (client mode): 0x2b91dc90
2025-09-29T09:38:45.815 [DEBUG] [Thread-152406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:45.830 [DEBUG] [Thread-152406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:38:45.830 [INFO] [Thread-152406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:38:45.840 [DEBUG] [Thread-152406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:45.840 [DEBUG] [Thread-152406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] Compression: none
2025-09-29T09:38:45.841 [DEBUG] [Thread-152406] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:45.898 [DEBUG] [Thread-152406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:45.899 [DEBUG] [Thread-152406] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:45.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:38:45.900 [DEBUG] [Thread-152406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:38:45.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:45.955 [DEBUG] [Thread-152406] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:45.955 [DEBUG] [Thread-152406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:45.955 [DEBUG] [Thread-152406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:45.955 [DEBUG] [Thread-152406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:38:45.955 [DEBUG] [Thread-152406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:45.974 [INFO] [Thread-152406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:45.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:38:45.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:46.970 [DEBUG] [Thread-152406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:46.970 [DEBUG] [Thread-152406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:47.018 [DEBUG] [Thread-152406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:47.018 [DEBUG] [Thread-152406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:47.027 [DEBUG] [Thread-152406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:47.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:47.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:38:47.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:38:47.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:47.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:47.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:47.066 [DEBUG] [Thread-152406] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:50.773 [DEBUG] [Thread-152408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:38:57.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:38:57.068 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:38:57.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:38:57.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 38, 29), 3.79, 78.45, 0.0, 31.95, 9.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:38:57.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:38:29
2025-09-29T09:38:57.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:38:57.923 [DEBUG] [Thread-152409] [transport.py] [_log()] starting thread (client mode): 0x2e34a4d0
2025-09-29T09:38:57.923 [DEBUG] [Thread-152409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:57.945 [DEBUG] [Thread-152409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:38:57.945 [INFO] [Thread-152409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:38:57.948 [DEBUG] [Thread-152409] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] Compression: none
2025-09-29T09:38:57.949 [DEBUG] [Thread-152409] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:57.956 [DEBUG] [Thread-152409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:57.956 [DEBUG] [Thread-152409] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:57.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:38:57.957 [DEBUG] [Thread-152409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:38:57.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:57.958 [DEBUG] [Thread-152409] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:57.958 [DEBUG] [Thread-152409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:57.958 [DEBUG] [Thread-152409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:57.958 [DEBUG] [Thread-152409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:38:57.958 [DEBUG] [Thread-152409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:57.971 [INFO] [Thread-152409] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:57.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:58.533 [DEBUG] [Thread-152409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:58.534 [DEBUG] [Thread-152409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:58.534 [DEBUG] [Thread-152409] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:38:58.574 [DEBUG] [Thread-152409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:58.574 [DEBUG] [Thread-152409] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:58.576 [DEBUG] [Thread-152409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:58.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:58.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:38:58.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:38:58.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:38:58.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:58.596 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:38:58.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:58.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:58.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:38:58.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.318477 -999.00   +8.90  19.61     76   +5.00 1 2 1 1 1   888    0 4.99 44.98 ----- 15.4 19.6 137.8 32.6 13.6 -22.8 12.9 -21.6 12.1 -23.1 12.8 -23.2
2025-09-29T09:38:58.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:38:58.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:38:58.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.318477
2025-09-29T09:38:58.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:38:58.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:38:58.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:38:58.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:38:58.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:38:58.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:38:29', tmtdew=3.79, humidity=78.45, cloud=0.0, wind=31.95, temperature=9.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:38:36.413', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:38:58.597 [DEBUG] [Thread-152409] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:38:58.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:38:58.681 [DEBUG] [Thread-152412] [transport.py] [_log()] starting thread (client mode): 0x2b91cee0
2025-09-29T09:38:58.681 [DEBUG] [Thread-152412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:38:58.696 [DEBUG] [Thread-152412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:38:58.696 [INFO] [Thread-152412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] client lang: <none>
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] server lang: <none>
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] kex follows: False
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] Compression: none
2025-09-29T09:38:58.705 [DEBUG] [Thread-152412] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:38:58.761 [DEBUG] [Thread-152412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:38:58.761 [DEBUG] [Thread-152412] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:38:58.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:38:58.762 [DEBUG] [Thread-152412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:38:58.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:38:58.818 [DEBUG] [Thread-152412] [transport.py] [_log()] userauth is OK
2025-09-29T09:38:58.819 [DEBUG] [Thread-152412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:38:58.819 [DEBUG] [Thread-152412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:38:58.819 [DEBUG] [Thread-152412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:38:58.819 [DEBUG] [Thread-152412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:38:58.832 [INFO] [Thread-152412] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:38:58.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:38:58.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:38:59.810 [DEBUG] [Thread-152412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:38:59.810 [DEBUG] [Thread-152412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:38:59.858 [DEBUG] [Thread-152412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:38:59.858 [DEBUG] [Thread-152412] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:38:59.867 [DEBUG] [Thread-152412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:38:59.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:38:59.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:38:59.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:38:59.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:38:59.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:38:59.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:38:59.902 [DEBUG] [Thread-152412] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:39:05.813 [DEBUG] [Thread-152414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:39:09.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:39:09.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:39:09.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:39:10.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 39, 1), 3.93, 77.29, 0.0, 25.5, 9.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:39:10.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:39:01
2025-09-29T09:39:10.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:39:10.749 [DEBUG] [Thread-152415] [transport.py] [_log()] starting thread (client mode): 0x2b91f130
2025-09-29T09:39:10.750 [DEBUG] [Thread-152415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:39:10.771 [DEBUG] [Thread-152415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:39:10.771 [INFO] [Thread-152415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:39:10.774 [DEBUG] [Thread-152415] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] client lang: <none>
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] server lang: <none>
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] kex follows: False
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] Compression: none
2025-09-29T09:39:10.775 [DEBUG] [Thread-152415] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:39:10.792 [DEBUG] [Thread-152415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:39:10.792 [DEBUG] [Thread-152415] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:39:10.792 [DEBUG] [Thread-152415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:39:10.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:39:10.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:39:10.795 [DEBUG] [Thread-152415] [transport.py] [_log()] userauth is OK
2025-09-29T09:39:10.795 [DEBUG] [Thread-152415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:39:10.795 [DEBUG] [Thread-152415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:39:10.795 [DEBUG] [Thread-152415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:39:10.795 [DEBUG] [Thread-152415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:39:10.819 [INFO] [Thread-152415] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:39:10.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:39:11.606 [DEBUG] [Thread-152415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:39:11.606 [DEBUG] [Thread-152415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:39:11.606 [DEBUG] [Thread-152415] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:39:11.648 [DEBUG] [Thread-152415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:39:11.648 [DEBUG] [Thread-152415] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:39:11.651 [DEBUG] [Thread-152415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:39:11.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:39:11.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:39:11.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:39:11.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:39:11.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:39:11.673 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:39:11.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:39:11.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:39:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:39:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.318477 -999.00   +8.90  19.61     76   +5.00 1 2 1 1 1   888    0 4.99 44.98 ----- 15.4 19.6 137.8 32.6 13.6 -22.8 12.9 -21.6 12.1 -23.1 12.8 -23.2
2025-09-29T09:39:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:39:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:39:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.318477
2025-09-29T09:39:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:39:11.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:39:11.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:39:11.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:39:11.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:39:11.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:39:01', tmtdew=3.93, humidity=77.29, cloud=0.0, wind=25.5, temperature=9.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:38:36.413', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:39:11.675 [DEBUG] [Thread-152415] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:39:11.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:39:11.771 [DEBUG] [Thread-152418] [transport.py] [_log()] starting thread (client mode): 0x2b91e290
2025-09-29T09:39:11.772 [DEBUG] [Thread-152418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:39:11.787 [DEBUG] [Thread-152418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:39:11.787 [INFO] [Thread-152418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:39:11.794 [DEBUG] [Thread-152418] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:39:11.794 [DEBUG] [Thread-152418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] client lang: <none>
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] server lang: <none>
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] kex follows: False
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] Compression: none
2025-09-29T09:39:11.795 [DEBUG] [Thread-152418] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:39:11.850 [DEBUG] [Thread-152418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:39:11.851 [DEBUG] [Thread-152418] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:39:11.851 [DEBUG] [Thread-152418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:39:11.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:39:11.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:39:11.907 [DEBUG] [Thread-152418] [transport.py] [_log()] userauth is OK
2025-09-29T09:39:11.907 [DEBUG] [Thread-152418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:39:11.907 [DEBUG] [Thread-152418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:39:11.907 [DEBUG] [Thread-152418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:39:11.907 [DEBUG] [Thread-152418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:39:11.927 [INFO] [Thread-152418] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:39:11.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:39:11.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:39:12.940 [DEBUG] [Thread-152418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:39:12.940 [DEBUG] [Thread-152418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:39:12.988 [DEBUG] [Thread-152418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:39:12.988 [DEBUG] [Thread-152418] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:39:12.997 [DEBUG] [Thread-152418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:39:13.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:39:13.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:39:13.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:39:13.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:39:13.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:39:13.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:39:13.030 [DEBUG] [Thread-152418] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:39:20.860 [DEBUG] [Thread-152420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:39:23.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:39:23.033 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:39:23.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:39:23.138 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:39:23.139 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:39:23.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 39, 1), 3.93, 77.29, 0.0, 25.5, 9.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:39:23.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:39:01
2025-09-29T09:39:23.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:39:23.862 [DEBUG] [Thread-152421] [transport.py] [_log()] starting thread (client mode): 0x2e3dd510
2025-09-29T09:39:23.862 [DEBUG] [Thread-152421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:39:23.877 [DEBUG] [Thread-152421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:39:23.877 [INFO] [Thread-152421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] client lang: <none>
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] server lang: <none>
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] kex follows: False
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:39:23.881 [DEBUG] [Thread-152421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:39:23.882 [DEBUG] [Thread-152421] [transport.py] [_log()] Compression: none
2025-09-29T09:39:23.882 [DEBUG] [Thread-152421] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:39:23.899 [DEBUG] [Thread-152421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:39:23.899 [DEBUG] [Thread-152421] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:39:23.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:39:23.900 [DEBUG] [Thread-152421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:39:23.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:39:23.902 [DEBUG] [Thread-152421] [transport.py] [_log()] userauth is OK
2025-09-29T09:39:23.902 [DEBUG] [Thread-152421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:39:23.902 [DEBUG] [Thread-152421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:39:23.902 [DEBUG] [Thread-152421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:39:23.902 [DEBUG] [Thread-152421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:39:23.920 [INFO] [Thread-152421] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:39:23.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:39:24.706 [DEBUG] [Thread-152421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:39:24.706 [DEBUG] [Thread-152421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:39:24.706 [DEBUG] [Thread-152421] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:39:24.747 [DEBUG] [Thread-152421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:39:24.747 [DEBUG] [Thread-152421] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:39:24.750 [DEBUG] [Thread-152421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:39:24.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:39:24.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:39:24.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:39:24.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:39:24.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:39:24.773 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:39:24.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:39:24.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:39:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:39:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.318477 -999.00   +8.90  19.61     76   +5.00 1 2 1 1 1   888    0 4.99 44.98 ----- 15.4 19.6 137.8 32.6 13.6 -22.8 12.9 -21.6 12.1 -23.1 12.8 -23.2
2025-09-29T09:39:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:39:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:39:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.318477
2025-09-29T09:39:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:39:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:39:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:39:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:39:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:39:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:39:01', tmtdew=3.93, humidity=77.29, cloud=0.0, wind=25.5, temperature=9.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:38:36.413', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:39:24.776 [DEBUG] [Thread-152421] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:39:24.871 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:39:24.880 [DEBUG] [Thread-152424] [transport.py] [_log()] starting thread (client mode): 0x2e3dedd0
2025-09-29T09:39:24.880 [DEBUG] [Thread-152424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:39:24.894 [DEBUG] [Thread-152424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:39:24.894 [INFO] [Thread-152424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:39:24.902 [DEBUG] [Thread-152424] [transport.py] [_log()] client lang: <none>
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] server lang: <none>
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] kex follows: False
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] Compression: none
2025-09-29T09:39:24.903 [DEBUG] [Thread-152424] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:39:24.961 [DEBUG] [Thread-152424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:39:24.961 [DEBUG] [Thread-152424] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:39:24.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:39:24.962 [DEBUG] [Thread-152424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:39:24.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:39:25.024 [DEBUG] [Thread-152424] [transport.py] [_log()] userauth is OK
2025-09-29T09:39:25.024 [DEBUG] [Thread-152424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:39:25.024 [DEBUG] [Thread-152424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:39:25.025 [DEBUG] [Thread-152424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:39:25.025 [DEBUG] [Thread-152424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:39:25.044 [INFO] [Thread-152424] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:39:25.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:39:25.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:39:26.022 [DEBUG] [Thread-152424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:39:26.022 [DEBUG] [Thread-152424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:39:26.069 [DEBUG] [Thread-152424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:39:26.069 [DEBUG] [Thread-152424] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:39:26.079 [DEBUG] [Thread-152424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:39:26.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:39:26.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:39:26.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:39:26.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:39:26.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:39:26.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:39:26.125 [DEBUG] [Thread-152424] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:39:30.345 [DEBUG] [Thread-152426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:39:35.899 [DEBUG] [Thread-152427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:39:36.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:39:36.114 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:39:36.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:39:36.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 39, 33), 3.9, 77.39, 0.0, 24.01, 9.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:39:36.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:39:33
2025-09-29T09:39:36.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:39:36.966 [DEBUG] [Thread-152428] [transport.py] [_log()] starting thread (client mode): 0x2b91f4f0
2025-09-29T09:39:36.966 [DEBUG] [Thread-152428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:39:36.986 [DEBUG] [Thread-152428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:39:36.986 [INFO] [Thread-152428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] client lang: <none>
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] server lang: <none>
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] kex follows: False
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] Compression: none
2025-09-29T09:39:36.989 [DEBUG] [Thread-152428] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:39:37.004 [DEBUG] [Thread-152428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:39:37.004 [DEBUG] [Thread-152428] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:39:37.004 [DEBUG] [Thread-152428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:39:37.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:39:37.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:39:37.005 [DEBUG] [Thread-152428] [transport.py] [_log()] userauth is OK
2025-09-29T09:39:37.005 [DEBUG] [Thread-152428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:39:37.005 [DEBUG] [Thread-152428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:39:37.005 [DEBUG] [Thread-152428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:39:37.005 [DEBUG] [Thread-152428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:39:37.014 [INFO] [Thread-152428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:39:37.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:39:37.643 [DEBUG] [Thread-152428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:39:37.644 [DEBUG] [Thread-152428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:39:37.644 [DEBUG] [Thread-152428] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:39:37.684 [DEBUG] [Thread-152428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:39:37.684 [DEBUG] [Thread-152428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:39:37.687 [DEBUG] [Thread-152428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:39:37.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:39:37.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:39:37.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:39:37.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:39:37.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:39:37.710 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:39:37.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:39:37.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:39:37.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:39:37.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.318824 -999.00   +9.10  19.76     75   +5.10 1 2 1 1 1   888    0 4.91 42.34 ----- 14.1 19.8 138.2 25.8 13.8 -24.5 13.1 -21.2 12.2 -22.1 13.0 -23.2
2025-09-29T09:39:37.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:39:37.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:39:37.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.318824
2025-09-29T09:39:37.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:39:37.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:39:37.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:39:37.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:39:37.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:39:37.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:39:33', tmtdew=3.9, humidity=77.39, cloud=0.0, wind=24.01, temperature=9.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:39:06.394', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:39:37.713 [DEBUG] [Thread-152428] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:39:37.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:39:37.810 [DEBUG] [Thread-152431] [transport.py] [_log()] starting thread (client mode): 0x2b9a52a0
2025-09-29T09:39:37.810 [DEBUG] [Thread-152431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:39:37.825 [DEBUG] [Thread-152431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:39:37.825 [INFO] [Thread-152431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] client lang: <none>
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] server lang: <none>
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] kex follows: False
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:39:37.832 [DEBUG] [Thread-152431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:39:37.833 [DEBUG] [Thread-152431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:39:37.833 [DEBUG] [Thread-152431] [transport.py] [_log()] Compression: none
2025-09-29T09:39:37.833 [DEBUG] [Thread-152431] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:39:37.889 [DEBUG] [Thread-152431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:39:37.889 [DEBUG] [Thread-152431] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:39:37.889 [DEBUG] [Thread-152431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:39:37.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:39:37.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:39:37.947 [DEBUG] [Thread-152431] [transport.py] [_log()] userauth is OK
2025-09-29T09:39:37.947 [DEBUG] [Thread-152431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:39:37.947 [DEBUG] [Thread-152431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:39:37.947 [DEBUG] [Thread-152431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:39:37.947 [DEBUG] [Thread-152431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:39:37.962 [INFO] [Thread-152431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:39:37.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:39:37.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:39:38.918 [DEBUG] [Thread-152431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:39:38.918 [DEBUG] [Thread-152431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:39:38.966 [DEBUG] [Thread-152431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:39:38.966 [DEBUG] [Thread-152431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:39:38.975 [DEBUG] [Thread-152431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:39:38.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:39:38.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:39:38.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:39:39.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:39:39.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:39:39.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:39:39.011 [DEBUG] [Thread-152431] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:39:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:39:49.014 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:39:49.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:39:49.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 39, 33), 3.9, 77.39, 0.0, 24.01, 9.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:39:49.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:39:33
2025-09-29T09:39:49.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:39:49.854 [DEBUG] [Thread-152433] [transport.py] [_log()] starting thread (client mode): 0x2e3dc070
2025-09-29T09:39:49.854 [DEBUG] [Thread-152433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:39:49.874 [DEBUG] [Thread-152433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:39:49.874 [INFO] [Thread-152433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] client lang: <none>
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] server lang: <none>
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] kex follows: False
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] Compression: none
2025-09-29T09:39:49.876 [DEBUG] [Thread-152433] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:39:49.888 [DEBUG] [Thread-152433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:39:49.888 [DEBUG] [Thread-152433] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:39:49.888 [DEBUG] [Thread-152433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:39:49.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:39:49.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:39:49.890 [DEBUG] [Thread-152433] [transport.py] [_log()] userauth is OK
2025-09-29T09:39:49.890 [DEBUG] [Thread-152433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:39:49.890 [DEBUG] [Thread-152433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:39:49.890 [DEBUG] [Thread-152433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:39:49.890 [DEBUG] [Thread-152433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:39:49.906 [INFO] [Thread-152433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:39:49.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:39:50.698 [DEBUG] [Thread-152433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:39:50.698 [DEBUG] [Thread-152433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:39:50.699 [DEBUG] [Thread-152433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:39:50.739 [DEBUG] [Thread-152433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:39:50.739 [DEBUG] [Thread-152433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:39:50.742 [DEBUG] [Thread-152433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:39:50.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:39:50.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:39:50.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:39:50.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:39:50.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:39:50.764 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:39:50.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:39:50.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:39:50.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:39:50.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.318824 -999.00   +9.10  19.76     75   +5.10 1 2 1 1 1   888    0 4.91 42.34 ----- 14.1 19.8 138.2 25.8 13.8 -24.5 13.1 -21.2 12.2 -22.1 13.0 -23.2
2025-09-29T09:39:50.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:39:50.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:39:50.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.318824
2025-09-29T09:39:50.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:39:50.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:39:50.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:39:50.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:39:50.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:39:50.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:39:33', tmtdew=3.9, humidity=77.39, cloud=0.0, wind=24.01, temperature=9.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:39:06.394', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:39:50.767 [DEBUG] [Thread-152433] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:39:50.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:39:50.861 [DEBUG] [Thread-152436] [transport.py] [_log()] starting thread (client mode): 0x2b9a76a0
2025-09-29T09:39:50.861 [DEBUG] [Thread-152436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:39:50.876 [DEBUG] [Thread-152436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:39:50.876 [INFO] [Thread-152436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] client lang: <none>
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] server lang: <none>
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] kex follows: False
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] Compression: none
2025-09-29T09:39:50.884 [DEBUG] [Thread-152436] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:39:50.928 [DEBUG] [Thread-152438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:39:50.942 [DEBUG] [Thread-152436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:39:50.943 [DEBUG] [Thread-152436] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:39:50.943 [DEBUG] [Thread-152436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:39:50.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:39:50.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:39:50.999 [DEBUG] [Thread-152436] [transport.py] [_log()] userauth is OK
2025-09-29T09:39:50.999 [DEBUG] [Thread-152436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:39:50.999 [DEBUG] [Thread-152436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:39:50.999 [DEBUG] [Thread-152436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:39:50.999 [DEBUG] [Thread-152436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:39:51.019 [INFO] [Thread-152436] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:39:51.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:39:51.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:39:52.018 [DEBUG] [Thread-152436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:39:52.018 [DEBUG] [Thread-152436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:39:52.066 [DEBUG] [Thread-152436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:39:52.067 [DEBUG] [Thread-152436] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:39:52.076 [DEBUG] [Thread-152436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:39:52.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:39:52.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:39:52.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:39:52.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:39:52.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:39:52.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:39:52.111 [DEBUG] [Thread-152436] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:02.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:40:02.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:40:02.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:40:02.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 39, 33), 3.9, 77.39, 0.0, 24.01, 9.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:40:02.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:39:33
2025-09-29T09:40:02.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:40:02.968 [DEBUG] [Thread-152439] [transport.py] [_log()] starting thread (client mode): 0x2e360c40
2025-09-29T09:40:02.968 [DEBUG] [Thread-152439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:02.982 [DEBUG] [Thread-152439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:40:02.982 [INFO] [Thread-152439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:40:02.985 [DEBUG] [Thread-152439] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:02.985 [DEBUG] [Thread-152439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:40:02.985 [DEBUG] [Thread-152439] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:02.985 [DEBUG] [Thread-152439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] Compression: none
2025-09-29T09:40:02.986 [DEBUG] [Thread-152439] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:03.001 [DEBUG] [Thread-152439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:03.001 [DEBUG] [Thread-152439] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:03.001 [DEBUG] [Thread-152439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:40:03.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:40:03.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:03.002 [DEBUG] [Thread-152439] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:03.002 [DEBUG] [Thread-152439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:03.002 [DEBUG] [Thread-152439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:03.002 [DEBUG] [Thread-152439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:40:03.002 [DEBUG] [Thread-152439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:03.012 [INFO] [Thread-152439] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:03.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:40:05.982 [DEBUG] [Thread-152441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:40:06.907 [DEBUG] [Thread-152439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:40:06.907 [DEBUG] [Thread-152439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:40:06.907 [DEBUG] [Thread-152439] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:40:06.948 [DEBUG] [Thread-152439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:40:06.948 [DEBUG] [Thread-152439] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:40:06.949 [DEBUG] [Thread-152439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:40:07.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:40:07.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:40:07.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:40:07.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:40:07.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:40:07.148 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:40:07.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.319172 -999.00   +9.40  25.04     74   +5.10 1 1 1 1 1   888    0 5.03 44.16 ----- 25.6 25.0 163.6 33.7 14.0 -24.2 13.2 -22.8 12.2 -24.2 13.2 -22.7
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.319172
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:40:07.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:40:07.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:39:33', tmtdew=3.9, humidity=77.39, cloud=0.0, wind=24.01, temperature=9.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:39:36.461', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:40:07.149 [DEBUG] [Thread-152439] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:07.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:40:07.235 [DEBUG] [Thread-152443] [transport.py] [_log()] starting thread (client mode): 0x2e360fa0
2025-09-29T09:40:07.235 [DEBUG] [Thread-152443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:07.250 [DEBUG] [Thread-152443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:40:07.250 [INFO] [Thread-152443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:07.257 [DEBUG] [Thread-152443] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:07.258 [DEBUG] [Thread-152443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:07.258 [DEBUG] [Thread-152443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:07.258 [DEBUG] [Thread-152443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:07.258 [DEBUG] [Thread-152443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:07.258 [DEBUG] [Thread-152443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:07.258 [DEBUG] [Thread-152443] [transport.py] [_log()] Compression: none
2025-09-29T09:40:07.258 [DEBUG] [Thread-152443] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:07.316 [DEBUG] [Thread-152443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:07.317 [DEBUG] [Thread-152443] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:07.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:40:07.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:07.317 [DEBUG] [Thread-152443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:40:07.375 [DEBUG] [Thread-152443] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:07.375 [DEBUG] [Thread-152443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:07.375 [DEBUG] [Thread-152443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:07.375 [DEBUG] [Thread-152443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:40:07.375 [DEBUG] [Thread-152443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:07.392 [INFO] [Thread-152443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:07.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:40:07.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:40:08.440 [DEBUG] [Thread-152443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:40:08.440 [DEBUG] [Thread-152443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:40:08.488 [DEBUG] [Thread-152443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:40:08.488 [DEBUG] [Thread-152443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:40:08.496 [DEBUG] [Thread-152443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:40:08.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:40:08.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:40:08.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:40:08.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:40:08.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:40:08.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:40:08.531 [DEBUG] [Thread-152443] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:18.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:40:18.533 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:40:18.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:40:19.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 40, 5), 3.91, 77.37, 0.0, 27.21, 9.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:40:19.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:40:05
2025-09-29T09:40:19.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:40:19.376 [DEBUG] [Thread-152445] [transport.py] [_log()] starting thread (client mode): 0x2b91d0c0
2025-09-29T09:40:19.376 [DEBUG] [Thread-152445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:19.398 [DEBUG] [Thread-152445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:40:19.398 [INFO] [Thread-152445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] Compression: none
2025-09-29T09:40:19.400 [DEBUG] [Thread-152445] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:19.413 [DEBUG] [Thread-152445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:19.414 [DEBUG] [Thread-152445] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:19.414 [DEBUG] [Thread-152445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:40:19.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:40:19.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:19.417 [DEBUG] [Thread-152445] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:19.417 [DEBUG] [Thread-152445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:19.417 [DEBUG] [Thread-152445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:19.417 [DEBUG] [Thread-152445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:40:19.417 [DEBUG] [Thread-152445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:19.433 [INFO] [Thread-152445] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:19.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:40:20.024 [DEBUG] [Thread-152445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:40:20.024 [DEBUG] [Thread-152445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:40:20.024 [DEBUG] [Thread-152445] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:40:20.065 [DEBUG] [Thread-152445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:40:20.065 [DEBUG] [Thread-152445] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:40:20.068 [DEBUG] [Thread-152445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:40:20.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:40:20.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:40:20.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:40:20.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:40:20.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:40:20.092 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:40:20.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:40:20.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:40:20.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:40:20.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.319172 -999.00   +9.40  25.04     74   +5.10 1 1 1 1 1   888    0 5.03 44.16 ----- 25.6 25.0 163.6 33.7 14.0 -24.2 13.2 -22.8 12.2 -24.2 13.2 -22.7
2025-09-29T09:40:20.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:40:20.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:40:20.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.319172
2025-09-29T09:40:20.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:40:20.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:40:20.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:40:20.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:40:20.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:40:20.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:40:05', tmtdew=3.91, humidity=77.37, cloud=0.0, wind=27.21, temperature=9.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:39:36.461', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:40:20.095 [DEBUG] [Thread-152445] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:20.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:40:20.192 [DEBUG] [Thread-152448] [transport.py] [_log()] starting thread (client mode): 0x2e3dc670
2025-09-29T09:40:20.192 [DEBUG] [Thread-152448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:20.208 [DEBUG] [Thread-152448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:40:20.208 [INFO] [Thread-152448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:20.216 [DEBUG] [Thread-152448] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:20.217 [DEBUG] [Thread-152448] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:20.217 [DEBUG] [Thread-152448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:20.217 [DEBUG] [Thread-152448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:20.217 [DEBUG] [Thread-152448] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:20.217 [DEBUG] [Thread-152448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:20.217 [DEBUG] [Thread-152448] [transport.py] [_log()] Compression: none
2025-09-29T09:40:20.217 [DEBUG] [Thread-152448] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:20.277 [DEBUG] [Thread-152448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:20.277 [DEBUG] [Thread-152448] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:20.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:40:20.278 [DEBUG] [Thread-152448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:40:20.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:20.335 [DEBUG] [Thread-152448] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:20.335 [DEBUG] [Thread-152448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:20.335 [DEBUG] [Thread-152448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:20.336 [DEBUG] [Thread-152448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:40:20.336 [DEBUG] [Thread-152448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:20.354 [INFO] [Thread-152448] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:20.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:40:20.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:40:21.011 [DEBUG] [Thread-152450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:40:21.320 [DEBUG] [Thread-152448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:40:21.320 [DEBUG] [Thread-152448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:40:21.368 [DEBUG] [Thread-152448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:40:21.368 [DEBUG] [Thread-152448] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:40:21.377 [DEBUG] [Thread-152448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:40:21.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:40:21.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:40:21.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:40:21.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:40:21.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:40:21.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:40:21.412 [DEBUG] [Thread-152448] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:23.283 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:40:23.284 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:40:30.400 [DEBUG] [Thread-152451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:40:31.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:40:31.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:40:31.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:40:31.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 40, 5), 3.91, 77.37, 0.0, 27.21, 9.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:40:31.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:40:05
2025-09-29T09:40:32.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:40:32.239 [DEBUG] [Thread-152452] [transport.py] [_log()] starting thread (client mode): 0x2b9a7d90
2025-09-29T09:40:32.239 [DEBUG] [Thread-152452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:32.261 [DEBUG] [Thread-152452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:40:32.261 [INFO] [Thread-152452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] Compression: none
2025-09-29T09:40:32.263 [DEBUG] [Thread-152452] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:32.276 [DEBUG] [Thread-152452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:32.276 [DEBUG] [Thread-152452] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:32.277 [DEBUG] [Thread-152452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:40:32.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:40:32.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:32.279 [DEBUG] [Thread-152452] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:32.279 [DEBUG] [Thread-152452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:32.279 [DEBUG] [Thread-152452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:32.279 [DEBUG] [Thread-152452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:40:32.279 [DEBUG] [Thread-152452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:32.297 [INFO] [Thread-152452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:32.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:40:34.158 [DEBUG] [Thread-152452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:40:34.159 [DEBUG] [Thread-152452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:40:34.159 [DEBUG] [Thread-152452] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:40:34.199 [DEBUG] [Thread-152452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:40:34.199 [DEBUG] [Thread-152452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:40:34.202 [DEBUG] [Thread-152452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:40:34.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:40:34.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:40:34.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:40:34.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:40:34.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:40:34.225 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:40:34.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:40:34.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:40:34.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:40:34.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.319172 -999.00   +9.40  25.04     74   +5.10 1 1 1 1 1   888    0 5.03 44.16 ----- 25.6 25.0 163.6 33.7 14.0 -24.2 13.2 -22.8 12.2 -24.2 13.2 -22.7
2025-09-29T09:40:34.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:40:34.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:40:34.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.319172
2025-09-29T09:40:34.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:40:34.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:40:34.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:40:34.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:40:34.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:40:34.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:40:05', tmtdew=3.91, humidity=77.37, cloud=0.0, wind=27.21, temperature=9.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:39:36.461', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:40:34.228 [DEBUG] [Thread-152452] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:34.311 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:40:34.322 [DEBUG] [Thread-152455] [transport.py] [_log()] starting thread (client mode): 0x2b91f670
2025-09-29T09:40:34.322 [DEBUG] [Thread-152455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:34.337 [DEBUG] [Thread-152455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:40:34.337 [INFO] [Thread-152455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:40:34.344 [DEBUG] [Thread-152455] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:34.345 [DEBUG] [Thread-152455] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] Compression: none
2025-09-29T09:40:34.346 [DEBUG] [Thread-152455] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:34.409 [DEBUG] [Thread-152455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:34.409 [DEBUG] [Thread-152455] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:34.409 [DEBUG] [Thread-152455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:40:34.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:40:34.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:34.467 [DEBUG] [Thread-152455] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:34.467 [DEBUG] [Thread-152455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:34.467 [DEBUG] [Thread-152455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:34.467 [DEBUG] [Thread-152455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:40:34.467 [DEBUG] [Thread-152455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:34.481 [INFO] [Thread-152455] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:34.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:40:34.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:40:35.470 [DEBUG] [Thread-152455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:40:35.470 [DEBUG] [Thread-152455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:40:35.518 [DEBUG] [Thread-152455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:40:35.518 [DEBUG] [Thread-152455] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:40:35.526 [DEBUG] [Thread-152455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:40:35.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:40:35.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:40:35.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:40:35.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:40:35.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:40:35.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:40:35.560 [DEBUG] [Thread-152455] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:36.065 [DEBUG] [Thread-152457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:40:45.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:40:45.556 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:40:45.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:40:46.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 40, 37), 4.11, 76.09, 0.0, 31.5, 9.18, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:40:46.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:40:37
2025-09-29T09:40:46.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:40:46.398 [DEBUG] [Thread-152458] [transport.py] [_log()] starting thread (client mode): 0x2e3deb90
2025-09-29T09:40:46.398 [DEBUG] [Thread-152458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:46.418 [DEBUG] [Thread-152458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:40:46.418 [INFO] [Thread-152458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:40:46.421 [DEBUG] [Thread-152458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:46.421 [DEBUG] [Thread-152458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:40:46.421 [DEBUG] [Thread-152458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:46.421 [DEBUG] [Thread-152458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] Compression: none
2025-09-29T09:40:46.422 [DEBUG] [Thread-152458] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:46.438 [DEBUG] [Thread-152458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:46.439 [DEBUG] [Thread-152458] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:46.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:40:46.440 [DEBUG] [Thread-152458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:40:46.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:46.442 [DEBUG] [Thread-152458] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:46.442 [DEBUG] [Thread-152458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:46.442 [DEBUG] [Thread-152458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:46.442 [DEBUG] [Thread-152458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:40:46.442 [DEBUG] [Thread-152458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:46.460 [INFO] [Thread-152458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:46.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:40:47.063 [DEBUG] [Thread-152458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:40:47.063 [DEBUG] [Thread-152458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:40:47.063 [DEBUG] [Thread-152458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:40:47.104 [DEBUG] [Thread-152458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:40:47.104 [DEBUG] [Thread-152458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:40:47.105 [DEBUG] [Thread-152458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:40:47.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:40:47.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:40:47.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:40:47.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:40:47.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:40:47.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:40:47.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.319866 -999.00   +9.20  28.25     73   +4.80 1 1 1 1 1   888    0 5.08 45.18 ----- 22.2 28.2 157.4 32.4 14.3 -23.0 13.2 -24.6 12.3 -24.9 13.3 -25.0
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.319866
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:40:47.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:40:37', tmtdew=4.11, humidity=76.09, cloud=0.0, wind=31.5, temperature=9.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:40:36.422', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:40:47.116 [DEBUG] [Thread-152458] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:47.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:40:47.208 [DEBUG] [Thread-152461] [transport.py] [_log()] starting thread (client mode): 0x2b9b8640
2025-09-29T09:40:47.209 [DEBUG] [Thread-152461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:47.227 [DEBUG] [Thread-152461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:40:47.227 [INFO] [Thread-152461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:47.235 [DEBUG] [Thread-152461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] Compression: none
2025-09-29T09:40:47.236 [DEBUG] [Thread-152461] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:47.294 [DEBUG] [Thread-152461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:47.295 [DEBUG] [Thread-152461] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:47.295 [DEBUG] [Thread-152461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:40:47.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:40:47.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:47.351 [DEBUG] [Thread-152461] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:47.351 [DEBUG] [Thread-152461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:47.351 [DEBUG] [Thread-152461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:47.351 [DEBUG] [Thread-152461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:40:47.351 [DEBUG] [Thread-152461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:47.370 [INFO] [Thread-152461] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:47.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:40:47.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:40:48.340 [DEBUG] [Thread-152461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:40:48.340 [DEBUG] [Thread-152461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:40:48.388 [DEBUG] [Thread-152461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:40:48.388 [DEBUG] [Thread-152461] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:40:48.396 [DEBUG] [Thread-152461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:40:48.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:40:48.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:40:48.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:40:48.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:40:48.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:40:48.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:40:48.428 [DEBUG] [Thread-152461] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:40:51.092 [DEBUG] [Thread-152463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:40:58.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:40:58.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:40:58.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:40:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 40, 37), 4.11, 76.09, 0.0, 31.5, 9.18, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:40:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:40:37
2025-09-29T09:40:59.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:40:59.256 [DEBUG] [Thread-152464] [transport.py] [_log()] starting thread (client mode): 0x2e348250
2025-09-29T09:40:59.257 [DEBUG] [Thread-152464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:40:59.277 [DEBUG] [Thread-152464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:40:59.277 [INFO] [Thread-152464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:40:59.280 [DEBUG] [Thread-152464] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:40:59.280 [DEBUG] [Thread-152464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:40:59.280 [DEBUG] [Thread-152464] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:40:59.280 [DEBUG] [Thread-152464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:59.280 [DEBUG] [Thread-152464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] client lang: <none>
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] server lang: <none>
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] kex follows: False
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] Compression: none
2025-09-29T09:40:59.281 [DEBUG] [Thread-152464] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:40:59.298 [DEBUG] [Thread-152464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:40:59.298 [DEBUG] [Thread-152464] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:40:59.299 [DEBUG] [Thread-152464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:40:59.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:40:59.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:40:59.301 [DEBUG] [Thread-152464] [transport.py] [_log()] userauth is OK
2025-09-29T09:40:59.301 [DEBUG] [Thread-152464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:40:59.301 [DEBUG] [Thread-152464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:40:59.301 [DEBUG] [Thread-152464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:40:59.301 [DEBUG] [Thread-152464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:40:59.320 [INFO] [Thread-152464] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:40:59.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:00.064 [DEBUG] [Thread-152464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:00.064 [DEBUG] [Thread-152464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:00.065 [DEBUG] [Thread-152464] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:41:00.105 [DEBUG] [Thread-152464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:00.106 [DEBUG] [Thread-152464] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:00.108 [DEBUG] [Thread-152464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:00.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:00.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:41:00.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:41:00.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:41:00.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:00.128 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:41:00.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:00.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:00.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:41:00.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.319866 -999.00   +9.20  28.25     73   +4.80 1 1 1 1 1   888    0 5.08 45.18 ----- 22.2 28.2 157.4 32.4 14.3 -23.0 13.2 -24.6 12.3 -24.9 13.3 -25.0
2025-09-29T09:41:00.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:41:00.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:41:00.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.319866
2025-09-29T09:41:00.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:41:00.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:41:00.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:41:00.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:41:00.130 [DEBUG] [Thread-152464] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:00.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:41:00.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:40:37', tmtdew=4.11, humidity=76.09, cloud=0.0, wind=31.5, temperature=9.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:40:36.422', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:41:00.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:41:00.225 [DEBUG] [Thread-152467] [transport.py] [_log()] starting thread (client mode): 0x2e348df0
2025-09-29T09:41:00.225 [DEBUG] [Thread-152467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:00.240 [DEBUG] [Thread-152467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:41:00.240 [INFO] [Thread-152467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:41:00.247 [DEBUG] [Thread-152467] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] Compression: none
2025-09-29T09:41:00.248 [DEBUG] [Thread-152467] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:00.307 [DEBUG] [Thread-152467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:00.307 [DEBUG] [Thread-152467] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:00.308 [DEBUG] [Thread-152467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:41:00.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:41:00.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:00.364 [DEBUG] [Thread-152467] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:00.364 [DEBUG] [Thread-152467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:00.364 [DEBUG] [Thread-152467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:00.365 [DEBUG] [Thread-152467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:41:00.365 [DEBUG] [Thread-152467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:00.387 [INFO] [Thread-152467] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:00.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:41:00.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:01.473 [DEBUG] [Thread-152467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:01.473 [DEBUG] [Thread-152467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:01.525 [DEBUG] [Thread-152467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:01.525 [DEBUG] [Thread-152467] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:01.535 [DEBUG] [Thread-152467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:01.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:01.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:41:01.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:41:01.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:01.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:01.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:01.570 [DEBUG] [Thread-152467] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:06.129 [DEBUG] [Thread-152469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:41:11.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:41:11.572 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:41:11.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:41:12.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 40, 37), 4.11, 76.09, 0.0, 31.5, 9.18, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:41:12.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:40:37
2025-09-29T09:41:12.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:41:12.413 [DEBUG] [Thread-152470] [transport.py] [_log()] starting thread (client mode): 0x2b9dfb80
2025-09-29T09:41:12.413 [DEBUG] [Thread-152470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:12.428 [DEBUG] [Thread-152470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:41:12.428 [INFO] [Thread-152470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:12.432 [DEBUG] [Thread-152470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:12.433 [DEBUG] [Thread-152470] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:12.433 [DEBUG] [Thread-152470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:12.433 [DEBUG] [Thread-152470] [transport.py] [_log()] Compression: none
2025-09-29T09:41:12.433 [DEBUG] [Thread-152470] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:12.451 [DEBUG] [Thread-152470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:12.452 [DEBUG] [Thread-152470] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:12.452 [DEBUG] [Thread-152470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:41:12.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:41:12.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:12.454 [DEBUG] [Thread-152470] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:12.454 [DEBUG] [Thread-152470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:12.455 [DEBUG] [Thread-152470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:12.455 [DEBUG] [Thread-152470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:41:12.455 [DEBUG] [Thread-152470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:12.471 [INFO] [Thread-152470] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:12.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:13.204 [DEBUG] [Thread-152470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:13.205 [DEBUG] [Thread-152470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:13.205 [DEBUG] [Thread-152470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:41:13.245 [DEBUG] [Thread-152470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:13.245 [DEBUG] [Thread-152470] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:13.247 [DEBUG] [Thread-152470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:13.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:13.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:41:13.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:41:13.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:41:13.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:13.262 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:41:13.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:13.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:13.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:41:13.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.319866 -999.00   +9.20  28.25     73   +4.80 1 1 1 1 1   888    0 5.08 45.18 ----- 22.2 28.2 157.4 32.4 14.3 -23.0 13.2 -24.6 12.3 -24.9 13.3 -25.0
2025-09-29T09:41:13.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:41:13.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:41:13.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.319866
2025-09-29T09:41:13.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:41:13.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:41:13.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:41:13.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:41:13.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:41:13.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:40:37', tmtdew=4.11, humidity=76.09, cloud=0.0, wind=31.5, temperature=9.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:40:36.422', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:41:13.265 [DEBUG] [Thread-152470] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:13.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:41:13.362 [DEBUG] [Thread-152473] [transport.py] [_log()] starting thread (client mode): 0x2b91dab0
2025-09-29T09:41:13.362 [DEBUG] [Thread-152473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:13.380 [DEBUG] [Thread-152473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:41:13.381 [INFO] [Thread-152473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:41:13.392 [DEBUG] [Thread-152473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:13.393 [DEBUG] [Thread-152473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:13.394 [DEBUG] [Thread-152473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:13.394 [DEBUG] [Thread-152473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:13.394 [DEBUG] [Thread-152473] [transport.py] [_log()] Compression: none
2025-09-29T09:41:13.394 [DEBUG] [Thread-152473] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:13.447 [DEBUG] [Thread-152473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:13.447 [DEBUG] [Thread-152473] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:13.447 [DEBUG] [Thread-152473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:41:13.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:41:13.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:13.504 [DEBUG] [Thread-152473] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:13.504 [DEBUG] [Thread-152473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:13.504 [DEBUG] [Thread-152473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:13.504 [DEBUG] [Thread-152473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:41:13.504 [DEBUG] [Thread-152473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:13.528 [INFO] [Thread-152473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:13.528 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:41:13.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:14.598 [DEBUG] [Thread-152473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:14.598 [DEBUG] [Thread-152473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:14.646 [DEBUG] [Thread-152473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:14.646 [DEBUG] [Thread-152473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:14.655 [DEBUG] [Thread-152473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:14.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:14.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:41:14.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:41:14.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:14.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:14.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:14.690 [DEBUG] [Thread-152473] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:21.160 [DEBUG] [Thread-152475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:41:23.425 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:41:23.426 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:41:24.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:41:24.684 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:41:24.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:41:25.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 41, 9), 4.12, 76.0, 0.0, 30.65, 9.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:41:25.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:41:09
2025-09-29T09:41:25.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:41:25.513 [DEBUG] [Thread-152476] [transport.py] [_log()] starting thread (client mode): 0x2e3481f0
2025-09-29T09:41:25.514 [DEBUG] [Thread-152476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:25.533 [DEBUG] [Thread-152476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:41:25.533 [INFO] [Thread-152476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:41:25.536 [DEBUG] [Thread-152476] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:25.536 [DEBUG] [Thread-152476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:41:25.536 [DEBUG] [Thread-152476] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:25.536 [DEBUG] [Thread-152476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:25.536 [DEBUG] [Thread-152476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:25.536 [DEBUG] [Thread-152476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] Compression: none
2025-09-29T09:41:25.537 [DEBUG] [Thread-152476] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:25.555 [DEBUG] [Thread-152476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:25.556 [DEBUG] [Thread-152476] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:25.556 [DEBUG] [Thread-152476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:41:25.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:41:25.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:25.558 [DEBUG] [Thread-152476] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:25.558 [DEBUG] [Thread-152476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:25.558 [DEBUG] [Thread-152476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:25.558 [DEBUG] [Thread-152476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:41:25.558 [DEBUG] [Thread-152476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:25.593 [INFO] [Thread-152476] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:25.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:26.143 [DEBUG] [Thread-152476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:26.143 [DEBUG] [Thread-152476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:26.143 [DEBUG] [Thread-152476] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:41:26.184 [DEBUG] [Thread-152476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:26.184 [DEBUG] [Thread-152476] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:26.185 [DEBUG] [Thread-152476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:26.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:26.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:41:26.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:41:26.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:41:26.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:26.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:41:26.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:26.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:26.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:41:26.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.320213 -999.00   +9.20  21.72     74   +4.80 1 2 1 1 1   888    0 5.21 51.22 ----- 21.1 21.7 162.6 27.0 14.2 -25.2 13.3 -21.6 12.3 -22.9 13.2 -23.5
2025-09-29T09:41:26.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:41:26.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:41:26.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.320213
2025-09-29T09:41:26.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:41:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:41:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:41:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:41:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:41:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:41:09', tmtdew=4.12, humidity=76.0, cloud=0.0, wind=30.65, temperature=9.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:41:06.403', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:41:26.198 [DEBUG] [Thread-152476] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:26.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:41:26.282 [DEBUG] [Thread-152479] [transport.py] [_log()] starting thread (client mode): 0x2b9b9960
2025-09-29T09:41:26.282 [DEBUG] [Thread-152479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:26.296 [DEBUG] [Thread-152479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:41:26.296 [INFO] [Thread-152479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] Compression: none
2025-09-29T09:41:26.304 [DEBUG] [Thread-152479] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:26.361 [DEBUG] [Thread-152479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:26.361 [DEBUG] [Thread-152479] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:26.362 [DEBUG] [Thread-152479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:41:26.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:41:26.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:26.420 [DEBUG] [Thread-152479] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:26.420 [DEBUG] [Thread-152479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:26.421 [DEBUG] [Thread-152479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:26.421 [DEBUG] [Thread-152479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:41:26.421 [DEBUG] [Thread-152479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:26.435 [INFO] [Thread-152479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:26.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:41:26.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:27.545 [DEBUG] [Thread-152479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:27.545 [DEBUG] [Thread-152479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:27.593 [DEBUG] [Thread-152479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:27.593 [DEBUG] [Thread-152479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:27.601 [DEBUG] [Thread-152479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:27.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:27.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:41:27.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:41:27.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:27.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:27.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:27.633 [DEBUG] [Thread-152479] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:30.448 [DEBUG] [Thread-152481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:41:36.191 [DEBUG] [Thread-152482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:41:37.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:41:37.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:41:37.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:41:38.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 41, 9), 4.12, 76.0, 0.0, 30.65, 9.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:41:38.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:41:09
2025-09-29T09:41:38.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:41:38.455 [DEBUG] [Thread-152483] [transport.py] [_log()] starting thread (client mode): 0x2b9b8190
2025-09-29T09:41:38.455 [DEBUG] [Thread-152483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:38.472 [DEBUG] [Thread-152483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:41:38.472 [INFO] [Thread-152483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:41:38.475 [DEBUG] [Thread-152483] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:38.475 [DEBUG] [Thread-152483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] Compression: none
2025-09-29T09:41:38.476 [DEBUG] [Thread-152483] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:38.493 [DEBUG] [Thread-152483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:38.493 [DEBUG] [Thread-152483] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:38.494 [DEBUG] [Thread-152483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:41:38.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:41:38.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:38.496 [DEBUG] [Thread-152483] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:38.496 [DEBUG] [Thread-152483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:38.496 [DEBUG] [Thread-152483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:38.496 [DEBUG] [Thread-152483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:41:38.496 [DEBUG] [Thread-152483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:38.514 [INFO] [Thread-152483] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:38.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:39.253 [DEBUG] [Thread-152483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:39.253 [DEBUG] [Thread-152483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:39.253 [DEBUG] [Thread-152483] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:41:39.294 [DEBUG] [Thread-152483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:39.294 [DEBUG] [Thread-152483] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:39.298 [DEBUG] [Thread-152483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:39.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:39.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:41:39.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:41:39.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:41:39.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:39.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:41:39.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:39.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:39.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:41:39.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.320213 -999.00   +9.20  21.72     74   +4.80 1 2 1 1 1   888    0 5.21 51.22 ----- 21.1 21.7 162.6 27.0 14.2 -25.2 13.3 -21.6 12.3 -22.9 13.2 -23.5
2025-09-29T09:41:39.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:41:39.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:41:39.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.320213
2025-09-29T09:41:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:41:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:41:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:41:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:41:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:41:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:41:09', tmtdew=4.12, humidity=76.0, cloud=0.0, wind=30.65, temperature=9.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:41:06.403', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:41:39.326 [DEBUG] [Thread-152483] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:39.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:41:39.424 [DEBUG] [Thread-152486] [transport.py] [_log()] starting thread (client mode): 0x2b9a41f0
2025-09-29T09:41:39.424 [DEBUG] [Thread-152486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:39.439 [DEBUG] [Thread-152486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:41:39.439 [INFO] [Thread-152486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:41:39.446 [DEBUG] [Thread-152486] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:39.446 [DEBUG] [Thread-152486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:41:39.446 [DEBUG] [Thread-152486] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:39.446 [DEBUG] [Thread-152486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:39.446 [DEBUG] [Thread-152486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] Compression: none
2025-09-29T09:41:39.447 [DEBUG] [Thread-152486] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:39.503 [DEBUG] [Thread-152486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:39.503 [DEBUG] [Thread-152486] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:39.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:41:39.504 [DEBUG] [Thread-152486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:41:39.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:39.559 [DEBUG] [Thread-152486] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:39.559 [DEBUG] [Thread-152486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:39.560 [DEBUG] [Thread-152486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:39.560 [DEBUG] [Thread-152486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:41:39.560 [DEBUG] [Thread-152486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:39.579 [INFO] [Thread-152486] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:39.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:41:39.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:40.541 [DEBUG] [Thread-152486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:40.541 [DEBUG] [Thread-152486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:40.589 [DEBUG] [Thread-152486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:40.589 [DEBUG] [Thread-152486] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:40.597 [DEBUG] [Thread-152486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:40.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:40.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:41:40.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:41:40.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:40.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:40.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:40.633 [DEBUG] [Thread-152486] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:50.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:41:50.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:41:50.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:41:51.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 41, 41), 4.13, 75.93, 0.0, 26.04, 9.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:41:51.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:41:41
2025-09-29T09:41:51.241 [DEBUG] [Thread-152488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:41:51.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:41:51.448 [DEBUG] [Thread-152489] [transport.py] [_log()] starting thread (client mode): 0x2e3dffd0
2025-09-29T09:41:51.448 [DEBUG] [Thread-152489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:51.469 [DEBUG] [Thread-152489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:41:51.469 [INFO] [Thread-152489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:41:51.472 [DEBUG] [Thread-152489] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:51.473 [DEBUG] [Thread-152489] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:51.474 [DEBUG] [Thread-152489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:51.474 [DEBUG] [Thread-152489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:51.474 [DEBUG] [Thread-152489] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:51.474 [DEBUG] [Thread-152489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:51.474 [DEBUG] [Thread-152489] [transport.py] [_log()] Compression: none
2025-09-29T09:41:51.474 [DEBUG] [Thread-152489] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:51.490 [DEBUG] [Thread-152489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:51.491 [DEBUG] [Thread-152489] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:51.492 [DEBUG] [Thread-152489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:41:51.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:41:51.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:51.494 [DEBUG] [Thread-152489] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:51.494 [DEBUG] [Thread-152489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:51.494 [DEBUG] [Thread-152489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:51.494 [DEBUG] [Thread-152489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:41:51.494 [DEBUG] [Thread-152489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:51.517 [INFO] [Thread-152489] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:51.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:52.118 [DEBUG] [Thread-152489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:52.118 [DEBUG] [Thread-152489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:52.118 [DEBUG] [Thread-152489] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:41:52.158 [DEBUG] [Thread-152489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:52.158 [DEBUG] [Thread-152489] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:52.160 [DEBUG] [Thread-152489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:52.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:52.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:41:52.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:41:52.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:41:52.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:52.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:41:52.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:52.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:52.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:41:52.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.320561 -999.00   +9.20  17.14     74   +4.90 1 2 1 1 1   888    0 5.36 54.47 ----- 21.6 17.1 148.5 27.0 14.4 -21.8 13.4 -20.1 12.5 -22.3 13.4 -22.8
2025-09-29T09:41:52.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:41:52.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:41:52.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.320561
2025-09-29T09:41:52.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:41:52.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:41:52.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:41:52.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:41:52.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:41:52.182 [DEBUG] [Thread-152489] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:41:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:41:41', tmtdew=4.13, humidity=75.93, cloud=0.0, wind=26.04, temperature=9.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:41:36.470', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:41:52.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:41:52.279 [DEBUG] [Thread-152492] [transport.py] [_log()] starting thread (client mode): 0x2b9a5c30
2025-09-29T09:41:52.279 [DEBUG] [Thread-152492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:41:52.297 [DEBUG] [Thread-152492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:41:52.298 [INFO] [Thread-152492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:41:52.307 [DEBUG] [Thread-152492] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:41:52.307 [DEBUG] [Thread-152492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:41:52.307 [DEBUG] [Thread-152492] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:41:52.307 [DEBUG] [Thread-152492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:52.307 [DEBUG] [Thread-152492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:41:52.307 [DEBUG] [Thread-152492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] client lang: <none>
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] server lang: <none>
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] kex follows: False
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] Compression: none
2025-09-29T09:41:52.308 [DEBUG] [Thread-152492] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:41:52.369 [DEBUG] [Thread-152492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:41:52.369 [DEBUG] [Thread-152492] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:41:52.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:41:52.370 [DEBUG] [Thread-152492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:41:52.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:41:52.431 [DEBUG] [Thread-152492] [transport.py] [_log()] userauth is OK
2025-09-29T09:41:52.431 [DEBUG] [Thread-152492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:41:52.431 [DEBUG] [Thread-152492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:41:52.431 [DEBUG] [Thread-152492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:41:52.431 [DEBUG] [Thread-152492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:41:52.454 [INFO] [Thread-152492] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:41:52.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:41:52.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:41:53.551 [DEBUG] [Thread-152492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:41:53.551 [DEBUG] [Thread-152492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:41:53.601 [DEBUG] [Thread-152492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:41:53.601 [DEBUG] [Thread-152492] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:41:53.612 [DEBUG] [Thread-152492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:41:53.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:41:53.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:41:53.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:41:53.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:41:53.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:41:53.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:41:53.658 [DEBUG] [Thread-152492] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:03.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:42:03.655 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:42:03.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:42:04.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 41, 41), 4.13, 75.93, 0.0, 26.04, 9.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:42:04.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:41:41
2025-09-29T09:42:04.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:42:04.538 [DEBUG] [Thread-152494] [transport.py] [_log()] starting thread (client mode): 0x2e34a5f0
2025-09-29T09:42:04.538 [DEBUG] [Thread-152494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:04.558 [DEBUG] [Thread-152494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:42:04.558 [INFO] [Thread-152494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:04.559 [DEBUG] [Thread-152494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:04.560 [DEBUG] [Thread-152494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:04.560 [DEBUG] [Thread-152494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:04.560 [DEBUG] [Thread-152494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:04.560 [DEBUG] [Thread-152494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:04.560 [DEBUG] [Thread-152494] [transport.py] [_log()] Compression: none
2025-09-29T09:42:04.560 [DEBUG] [Thread-152494] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:04.566 [DEBUG] [Thread-152494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:04.567 [DEBUG] [Thread-152494] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:04.567 [DEBUG] [Thread-152494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:42:04.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:42:04.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:04.567 [DEBUG] [Thread-152494] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:04.568 [DEBUG] [Thread-152494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:04.568 [DEBUG] [Thread-152494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:04.568 [DEBUG] [Thread-152494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:42:04.568 [DEBUG] [Thread-152494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:04.584 [INFO] [Thread-152494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:04.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:05.192 [DEBUG] [Thread-152494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:05.192 [DEBUG] [Thread-152494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:05.192 [DEBUG] [Thread-152494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:42:05.233 [DEBUG] [Thread-152494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:05.233 [DEBUG] [Thread-152494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:05.235 [DEBUG] [Thread-152494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:05.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:05.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:42:05.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:42:05.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:42:05.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:05.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:42:05.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.320561 -999.00   +9.20  17.14     74   +4.90 1 2 1 1 1   888    0 5.36 54.47 ----- 21.6 17.1 148.5 27.0 14.4 -21.8 13.4 -20.1 12.5 -22.3 13.4 -22.8
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.320561
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:42:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:41:41', tmtdew=4.13, humidity=75.93, cloud=0.0, wind=26.04, temperature=9.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:41:36.470', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:42:05.253 [DEBUG] [Thread-152494] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:05.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:42:05.339 [DEBUG] [Thread-152497] [transport.py] [_log()] starting thread (client mode): 0x2e3480d0
2025-09-29T09:42:05.339 [DEBUG] [Thread-152497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:05.353 [DEBUG] [Thread-152497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:42:05.353 [INFO] [Thread-152497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] Compression: none
2025-09-29T09:42:05.361 [DEBUG] [Thread-152497] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:05.419 [DEBUG] [Thread-152497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:05.419 [DEBUG] [Thread-152497] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:05.419 [DEBUG] [Thread-152497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:42:05.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:42:05.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:05.475 [DEBUG] [Thread-152497] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:05.475 [DEBUG] [Thread-152497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:05.475 [DEBUG] [Thread-152497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:05.475 [DEBUG] [Thread-152497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:42:05.475 [DEBUG] [Thread-152497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:05.489 [INFO] [Thread-152497] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:05.489 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:42:05.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:06.268 [DEBUG] [Thread-152499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:42:06.554 [DEBUG] [Thread-152497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:06.554 [DEBUG] [Thread-152497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:06.602 [DEBUG] [Thread-152497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:06.602 [DEBUG] [Thread-152497] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:06.612 [DEBUG] [Thread-152497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:06.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:06.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:42:06.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:42:06.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:06.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:06.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:06.647 [DEBUG] [Thread-152497] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:16.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:42:16.647 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:42:16.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:42:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 42, 13), 4.21, 75.57, 0.0, 25.76, 9.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:42:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:42:13
2025-09-29T09:42:17.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:42:17.488 [DEBUG] [Thread-152500] [transport.py] [_log()] starting thread (client mode): 0x28705780
2025-09-29T09:42:17.488 [DEBUG] [Thread-152500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:17.507 [DEBUG] [Thread-152500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:42:17.507 [INFO] [Thread-152500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:42:17.510 [DEBUG] [Thread-152500] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] Compression: none
2025-09-29T09:42:17.511 [DEBUG] [Thread-152500] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:17.526 [DEBUG] [Thread-152500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:17.527 [DEBUG] [Thread-152500] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:17.527 [DEBUG] [Thread-152500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:42:17.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:42:17.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:17.529 [DEBUG] [Thread-152500] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:17.529 [DEBUG] [Thread-152500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:17.529 [DEBUG] [Thread-152500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:17.530 [DEBUG] [Thread-152500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:42:17.530 [DEBUG] [Thread-152500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:17.547 [INFO] [Thread-152500] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:17.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:18.305 [DEBUG] [Thread-152500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:18.307 [DEBUG] [Thread-152500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:18.307 [DEBUG] [Thread-152500] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:42:18.346 [DEBUG] [Thread-152500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:18.346 [DEBUG] [Thread-152500] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:18.348 [DEBUG] [Thread-152500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:18.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:18.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:42:18.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:42:18.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:42:18.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:18.365 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:42:18.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.320561 -999.00   +9.20  17.14     74   +4.90 1 2 1 1 1   888    0 5.36 54.47 ----- 21.6 17.1 148.5 27.0 14.4 -21.8 13.4 -20.1 12.5 -22.3 13.4 -22.8
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.320561
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:42:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:42:13', tmtdew=4.21, humidity=75.57, cloud=0.0, wind=25.76, temperature=9.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:41:36.470', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:42:18.367 [DEBUG] [Thread-152500] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:18.439 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:42:18.448 [DEBUG] [Thread-152503] [transport.py] [_log()] starting thread (client mode): 0x28706a10
2025-09-29T09:42:18.448 [DEBUG] [Thread-152503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:18.463 [DEBUG] [Thread-152503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:42:18.464 [INFO] [Thread-152503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:42:18.471 [DEBUG] [Thread-152503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:18.471 [DEBUG] [Thread-152503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:42:18.471 [DEBUG] [Thread-152503] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:18.471 [DEBUG] [Thread-152503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:18.471 [DEBUG] [Thread-152503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:18.471 [DEBUG] [Thread-152503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:18.472 [DEBUG] [Thread-152503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:18.473 [DEBUG] [Thread-152503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:18.473 [DEBUG] [Thread-152503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:18.473 [DEBUG] [Thread-152503] [transport.py] [_log()] Compression: none
2025-09-29T09:42:18.473 [DEBUG] [Thread-152503] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:18.531 [DEBUG] [Thread-152503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:18.532 [DEBUG] [Thread-152503] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:18.532 [DEBUG] [Thread-152503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:42:18.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:42:18.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:18.587 [DEBUG] [Thread-152503] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:18.587 [DEBUG] [Thread-152503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:18.587 [DEBUG] [Thread-152503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:18.587 [DEBUG] [Thread-152503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:42:18.587 [DEBUG] [Thread-152503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:18.607 [INFO] [Thread-152503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:18.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:42:18.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:19.600 [DEBUG] [Thread-152503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:19.600 [DEBUG] [Thread-152503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:19.648 [DEBUG] [Thread-152503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:19.648 [DEBUG] [Thread-152503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:19.658 [DEBUG] [Thread-152503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:19.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:19.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:42:19.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:42:19.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:19.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:19.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:19.697 [DEBUG] [Thread-152503] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:21.303 [DEBUG] [Thread-152505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:42:23.569 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:42:23.571 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:42:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:42:29.700 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:42:29.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:42:30.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 42, 13), 4.21, 75.57, 0.0, 25.76, 9.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:42:30.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:42:13
2025-09-29T09:42:30.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:42:30.476 [DEBUG] [Thread-152506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:42:30.530 [DEBUG] [Thread-152507] [transport.py] [_log()] starting thread (client mode): 0x2b9b9030
2025-09-29T09:42:30.530 [DEBUG] [Thread-152507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:30.549 [DEBUG] [Thread-152507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:42:30.549 [INFO] [Thread-152507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:30.553 [DEBUG] [Thread-152507] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:30.554 [DEBUG] [Thread-152507] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:30.554 [DEBUG] [Thread-152507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:30.554 [DEBUG] [Thread-152507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:30.554 [DEBUG] [Thread-152507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:30.554 [DEBUG] [Thread-152507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:30.554 [DEBUG] [Thread-152507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:30.554 [DEBUG] [Thread-152507] [transport.py] [_log()] Compression: none
2025-09-29T09:42:30.554 [DEBUG] [Thread-152507] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:30.569 [DEBUG] [Thread-152507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:30.570 [DEBUG] [Thread-152507] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:30.571 [DEBUG] [Thread-152507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:42:30.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:42:30.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:30.573 [DEBUG] [Thread-152507] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:30.573 [DEBUG] [Thread-152507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:30.573 [DEBUG] [Thread-152507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:30.573 [DEBUG] [Thread-152507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:42:30.573 [DEBUG] [Thread-152507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:30.597 [INFO] [Thread-152507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:30.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:31.191 [DEBUG] [Thread-152507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:31.192 [DEBUG] [Thread-152507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:31.192 [DEBUG] [Thread-152507] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:42:31.232 [DEBUG] [Thread-152507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:31.232 [DEBUG] [Thread-152507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:31.237 [DEBUG] [Thread-152507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:31.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:31.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:42:31.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:42:31.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:42:31.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:31.260 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:42:31.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:31.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:31.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:42:31.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.320908 -999.00   +9.50  23.83     74   +5.20 1 2 1 1 1   888    0 5.53 57.23 ----- 24.3 23.8 164.8 34.0 14.7 -21.0 13.7 -20.7 -999.0 -999.0 13.6 -21.3
2025-09-29T09:42:31.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:42:31.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:42:31.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.320908
2025-09-29T09:42:31.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:42:31.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:42:31.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:42:31.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:42:31.263 [DEBUG] [Thread-152507] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:31.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:42:31.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:42:13', tmtdew=4.21, humidity=75.57, cloud=0.0, wind=25.76, temperature=9.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:42:06.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:42:31.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:42:31.360 [DEBUG] [Thread-152510] [transport.py] [_log()] starting thread (client mode): 0x2e34a5f0
2025-09-29T09:42:31.360 [DEBUG] [Thread-152510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:31.375 [DEBUG] [Thread-152510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:42:31.375 [INFO] [Thread-152510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:42:31.383 [DEBUG] [Thread-152510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:31.383 [DEBUG] [Thread-152510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:42:31.383 [DEBUG] [Thread-152510] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:31.383 [DEBUG] [Thread-152510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:31.383 [DEBUG] [Thread-152510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] Compression: none
2025-09-29T09:42:31.384 [DEBUG] [Thread-152510] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:31.439 [DEBUG] [Thread-152510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:31.439 [DEBUG] [Thread-152510] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:31.440 [DEBUG] [Thread-152510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:42:31.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:42:31.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:31.505 [DEBUG] [Thread-152510] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:31.505 [DEBUG] [Thread-152510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:31.506 [DEBUG] [Thread-152510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:31.506 [DEBUG] [Thread-152510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:42:31.506 [DEBUG] [Thread-152510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:31.525 [INFO] [Thread-152510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:31.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:42:31.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:32.550 [DEBUG] [Thread-152510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:32.551 [DEBUG] [Thread-152510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:32.598 [DEBUG] [Thread-152510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:32.598 [DEBUG] [Thread-152510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:32.607 [DEBUG] [Thread-152510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:32.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:32.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:42:32.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:42:32.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:32.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:32.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:32.641 [DEBUG] [Thread-152510] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:36.361 [DEBUG] [Thread-152512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:42:42.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:42:42.639 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:42:42.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:42:43.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 42, 13), 4.21, 75.57, 0.0, 25.76, 9.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:42:43.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:42:13
2025-09-29T09:42:43.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:42:43.475 [DEBUG] [Thread-152513] [transport.py] [_log()] starting thread (client mode): 0x2b9a7490
2025-09-29T09:42:43.476 [DEBUG] [Thread-152513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:43.495 [DEBUG] [Thread-152513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:42:43.495 [INFO] [Thread-152513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] Compression: none
2025-09-29T09:42:43.499 [DEBUG] [Thread-152513] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:43.517 [DEBUG] [Thread-152513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:43.517 [DEBUG] [Thread-152513] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:43.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:42:43.517 [DEBUG] [Thread-152513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:42:43.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:43.517 [DEBUG] [Thread-152513] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:43.517 [DEBUG] [Thread-152513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:43.517 [DEBUG] [Thread-152513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:43.517 [DEBUG] [Thread-152513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:42:43.517 [DEBUG] [Thread-152513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:43.526 [INFO] [Thread-152513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:43.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:44.312 [DEBUG] [Thread-152513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:44.312 [DEBUG] [Thread-152513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:44.312 [DEBUG] [Thread-152513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:42:44.354 [DEBUG] [Thread-152513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:44.354 [DEBUG] [Thread-152513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:44.355 [DEBUG] [Thread-152513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:44.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:44.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:42:44.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:42:44.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:42:44.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:44.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:42:44.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:44.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:42:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.320908 -999.00   +9.50  23.83     74   +5.20 1 2 1 1 1   888    0 5.53 57.23 ----- 24.3 23.8 164.8 34.0 14.7 -21.0 13.7 -20.7 -999.0 -999.0 13.6 -21.3
2025-09-29T09:42:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:42:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:42:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.320908
2025-09-29T09:42:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:42:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:42:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:42:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:42:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:42:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:42:13', tmtdew=4.21, humidity=75.57, cloud=0.0, wind=25.76, temperature=9.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:42:06.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:42:44.364 [DEBUG] [Thread-152513] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:44.439 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:42:44.450 [DEBUG] [Thread-152516] [transport.py] [_log()] starting thread (client mode): 0x2b9bbd00
2025-09-29T09:42:44.450 [DEBUG] [Thread-152516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:44.467 [DEBUG] [Thread-152516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:42:44.467 [INFO] [Thread-152516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:44.477 [DEBUG] [Thread-152516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:44.478 [DEBUG] [Thread-152516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:44.478 [DEBUG] [Thread-152516] [transport.py] [_log()] Compression: none
2025-09-29T09:42:44.478 [DEBUG] [Thread-152516] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:44.535 [DEBUG] [Thread-152516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:44.535 [DEBUG] [Thread-152516] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:44.535 [DEBUG] [Thread-152516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:42:44.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:42:44.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:44.598 [DEBUG] [Thread-152516] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:44.598 [DEBUG] [Thread-152516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:44.598 [DEBUG] [Thread-152516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:44.598 [DEBUG] [Thread-152516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:42:44.598 [DEBUG] [Thread-152516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:44.621 [INFO] [Thread-152516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:44.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:42:44.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:45.606 [DEBUG] [Thread-152516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:45.607 [DEBUG] [Thread-152516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:45.654 [DEBUG] [Thread-152516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:45.655 [DEBUG] [Thread-152516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:45.663 [DEBUG] [Thread-152516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:45.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:45.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:42:45.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:42:45.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:45.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:45.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:45.697 [DEBUG] [Thread-152516] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:51.400 [DEBUG] [Thread-152518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:42:55.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:42:55.700 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:42:55.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:42:56.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 42, 45), 4.36, 74.59, 0.0, 26.61, 9.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:42:56.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:42:45
2025-09-29T09:42:56.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:42:56.523 [DEBUG] [Thread-152519] [transport.py] [_log()] starting thread (client mode): 0x2e3df130
2025-09-29T09:42:56.524 [DEBUG] [Thread-152519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:56.545 [DEBUG] [Thread-152519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:42:56.545 [INFO] [Thread-152519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:42:56.548 [DEBUG] [Thread-152519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] Compression: none
2025-09-29T09:42:56.549 [DEBUG] [Thread-152519] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:56.565 [DEBUG] [Thread-152519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:56.566 [DEBUG] [Thread-152519] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:56.566 [DEBUG] [Thread-152519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:42:56.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:42:56.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:56.568 [DEBUG] [Thread-152519] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:56.568 [DEBUG] [Thread-152519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:56.569 [DEBUG] [Thread-152519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:56.569 [DEBUG] [Thread-152519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:42:56.569 [DEBUG] [Thread-152519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:56.604 [INFO] [Thread-152519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:56.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:57.315 [DEBUG] [Thread-152519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:57.315 [DEBUG] [Thread-152519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:57.316 [DEBUG] [Thread-152519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:42:57.356 [DEBUG] [Thread-152519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:57.357 [DEBUG] [Thread-152519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:57.360 [DEBUG] [Thread-152519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:57.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:57.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:42:57.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:42:57.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:42:57.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:57.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:42:57.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:57.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:57.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:42:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.320908 -999.00   +9.50  23.83     74   +5.20 1 2 1 1 1   888    0 5.53 57.23 ----- 24.3 23.8 164.8 34.0 14.7 -21.0 13.7 -20.7 -999.0 -999.0 13.6 -21.3
2025-09-29T09:42:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:42:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:42:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.320908
2025-09-29T09:42:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:42:57.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:42:57.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:42:57.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:42:57.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:42:57.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:42:45', tmtdew=4.36, humidity=74.59, cloud=0.0, wind=26.61, temperature=9.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:42:06.451', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:42:57.386 [DEBUG] [Thread-152519] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:42:57.471 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:42:57.481 [DEBUG] [Thread-152522] [transport.py] [_log()] starting thread (client mode): 0x2e34aa70
2025-09-29T09:42:57.481 [DEBUG] [Thread-152522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:42:57.496 [DEBUG] [Thread-152522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:42:57.496 [INFO] [Thread-152522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] client lang: <none>
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] server lang: <none>
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] kex follows: False
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] Compression: none
2025-09-29T09:42:57.504 [DEBUG] [Thread-152522] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:42:57.563 [DEBUG] [Thread-152522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:42:57.563 [DEBUG] [Thread-152522] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:42:57.564 [DEBUG] [Thread-152522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:42:57.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:42:57.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:42:57.623 [DEBUG] [Thread-152522] [transport.py] [_log()] userauth is OK
2025-09-29T09:42:57.623 [DEBUG] [Thread-152522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:42:57.623 [DEBUG] [Thread-152522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:42:57.623 [DEBUG] [Thread-152522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:42:57.623 [DEBUG] [Thread-152522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:42:57.642 [INFO] [Thread-152522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:42:57.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:42:57.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:42:58.610 [DEBUG] [Thread-152522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:42:58.610 [DEBUG] [Thread-152522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:42:58.658 [DEBUG] [Thread-152522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:42:58.658 [DEBUG] [Thread-152522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:42:58.667 [DEBUG] [Thread-152522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:42:58.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:42:58.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:42:58.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:42:58.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:42:58.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:42:58.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:42:58.702 [DEBUG] [Thread-152522] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:06.429 [DEBUG] [Thread-152524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:43:08.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:43:08.704 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:43:08.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:43:09.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 42, 45), 4.36, 74.59, 0.0, 26.61, 9.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:43:09.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:42:45
2025-09-29T09:43:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:43:09.521 [DEBUG] [Thread-152525] [transport.py] [_log()] starting thread (client mode): 0x2b9c03d0
2025-09-29T09:43:09.521 [DEBUG] [Thread-152525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:43:09.543 [DEBUG] [Thread-152525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:43:09.543 [INFO] [Thread-152525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:43:09.547 [DEBUG] [Thread-152525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:43:09.547 [DEBUG] [Thread-152525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:43:09.547 [DEBUG] [Thread-152525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:43:09.547 [DEBUG] [Thread-152525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:09.547 [DEBUG] [Thread-152525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:09.547 [DEBUG] [Thread-152525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:09.547 [DEBUG] [Thread-152525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] client lang: <none>
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] server lang: <none>
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] kex follows: False
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] Compression: none
2025-09-29T09:43:09.548 [DEBUG] [Thread-152525] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:43:09.565 [DEBUG] [Thread-152525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:43:09.566 [DEBUG] [Thread-152525] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:43:09.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:43:09.567 [DEBUG] [Thread-152525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:43:09.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:43:09.569 [DEBUG] [Thread-152525] [transport.py] [_log()] userauth is OK
2025-09-29T09:43:09.569 [DEBUG] [Thread-152525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:43:09.569 [DEBUG] [Thread-152525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:43:09.569 [DEBUG] [Thread-152525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:43:09.569 [DEBUG] [Thread-152525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:43:09.594 [INFO] [Thread-152525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:43:09.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:43:10.208 [DEBUG] [Thread-152525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:43:10.208 [DEBUG] [Thread-152525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:43:10.208 [DEBUG] [Thread-152525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:43:10.249 [DEBUG] [Thread-152525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:43:10.249 [DEBUG] [Thread-152525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:43:10.251 [DEBUG] [Thread-152525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:43:10.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:43:10.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:43:10.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:43:10.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:43:10.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:43:10.275 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:43:10.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:43:10.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:43:10.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:43:10.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.321255 -999.00   +9.80  24.65     72   +5.20 1 1 1 1 1   888    0 5.59 58.68 ----- 25.9 24.6 165.2 30.0 15.0 -20.5 13.8 -24.1 12.7 -23.8 13.7 -24.0
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.321255
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:43:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:42:45', tmtdew=4.36, humidity=74.59, cloud=0.0, wind=26.61, temperature=9.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:42:36.432', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:43:10.277 [DEBUG] [Thread-152525] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:10.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:43:10.375 [DEBUG] [Thread-152528] [transport.py] [_log()] starting thread (client mode): 0x28706470
2025-09-29T09:43:10.375 [DEBUG] [Thread-152528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:43:10.390 [DEBUG] [Thread-152528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:43:10.390 [INFO] [Thread-152528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:43:10.397 [DEBUG] [Thread-152528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] client lang: <none>
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] server lang: <none>
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] kex follows: False
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] Compression: none
2025-09-29T09:43:10.398 [DEBUG] [Thread-152528] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:43:10.454 [DEBUG] [Thread-152528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:43:10.455 [DEBUG] [Thread-152528] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:43:10.455 [DEBUG] [Thread-152528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:43:10.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:43:10.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:43:10.511 [DEBUG] [Thread-152528] [transport.py] [_log()] userauth is OK
2025-09-29T09:43:10.511 [DEBUG] [Thread-152528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:43:10.511 [DEBUG] [Thread-152528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:43:10.511 [DEBUG] [Thread-152528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:43:10.511 [DEBUG] [Thread-152528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:43:10.540 [INFO] [Thread-152528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:43:10.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:43:10.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:43:11.530 [DEBUG] [Thread-152528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:43:11.530 [DEBUG] [Thread-152528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:43:11.578 [DEBUG] [Thread-152528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:43:11.578 [DEBUG] [Thread-152528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:43:11.587 [DEBUG] [Thread-152528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:43:11.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:43:11.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:43:11.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:43:11.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:43:11.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:43:11.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:43:11.623 [DEBUG] [Thread-152528] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:21.468 [DEBUG] [Thread-152530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:43:21.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:43:21.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:43:21.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:43:22.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 43, 17), 4.41, 74.37, 0.0, 28.5, 9.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:43:22.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:43:17
2025-09-29T09:43:22.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:43:22.467 [DEBUG] [Thread-152531] [transport.py] [_log()] starting thread (client mode): 0x2b9b85b0
2025-09-29T09:43:22.467 [DEBUG] [Thread-152531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:43:22.487 [DEBUG] [Thread-152531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:43:22.487 [INFO] [Thread-152531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] client lang: <none>
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] server lang: <none>
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] kex follows: False
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] Compression: none
2025-09-29T09:43:22.490 [DEBUG] [Thread-152531] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:43:22.510 [DEBUG] [Thread-152531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:43:22.510 [DEBUG] [Thread-152531] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:43:22.510 [DEBUG] [Thread-152531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:43:22.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:43:22.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:43:22.511 [DEBUG] [Thread-152531] [transport.py] [_log()] userauth is OK
2025-09-29T09:43:22.511 [DEBUG] [Thread-152531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:43:22.511 [DEBUG] [Thread-152531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:43:22.511 [DEBUG] [Thread-152531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:43:22.511 [DEBUG] [Thread-152531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:43:22.525 [INFO] [Thread-152531] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:43:22.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:43:23.252 [DEBUG] [Thread-152531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:43:23.252 [DEBUG] [Thread-152531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:43:23.252 [DEBUG] [Thread-152531] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:43:23.293 [DEBUG] [Thread-152531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:43:23.293 [DEBUG] [Thread-152531] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:43:23.295 [DEBUG] [Thread-152531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:43:23.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:43:23.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:43:23.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:43:23.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:43:23.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:43:23.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:43:23.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.321255 -999.00   +9.80  24.65     72   +5.20 1 1 1 1 1   888    0 5.59 58.68 ----- 25.9 24.6 165.2 30.0 15.0 -20.5 13.8 -24.1 12.7 -23.8 13.7 -24.0
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.321255
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:43:23.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:43:17', tmtdew=4.41, humidity=74.37, cloud=0.0, wind=28.5, temperature=9.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:42:36.432', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:43:23.314 [DEBUG] [Thread-152531] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:23.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:43:23.397 [DEBUG] [Thread-152534] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d40
2025-09-29T09:43:23.398 [DEBUG] [Thread-152534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:43:23.412 [DEBUG] [Thread-152534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:43:23.412 [INFO] [Thread-152534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] client lang: <none>
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] server lang: <none>
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] kex follows: False
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] Compression: none
2025-09-29T09:43:23.420 [DEBUG] [Thread-152534] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:43:23.477 [DEBUG] [Thread-152534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:43:23.477 [DEBUG] [Thread-152534] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:43:23.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:43:23.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:43:23.478 [DEBUG] [Thread-152534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:43:23.535 [DEBUG] [Thread-152534] [transport.py] [_log()] userauth is OK
2025-09-29T09:43:23.535 [DEBUG] [Thread-152534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:43:23.535 [DEBUG] [Thread-152534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:43:23.535 [DEBUG] [Thread-152534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:43:23.535 [DEBUG] [Thread-152534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:43:23.552 [INFO] [Thread-152534] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:43:23.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:43:23.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:43:23.715 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:43:23.716 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:43:24.574 [DEBUG] [Thread-152534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:43:24.574 [DEBUG] [Thread-152534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:43:24.624 [DEBUG] [Thread-152534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:43:24.624 [DEBUG] [Thread-152534] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:43:24.633 [DEBUG] [Thread-152534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:43:24.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:43:24.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:43:24.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:43:24.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:43:24.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:43:24.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:43:24.665 [DEBUG] [Thread-152534] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:30.547 [DEBUG] [Thread-152536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:43:34.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:43:34.668 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:43:34.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:43:35.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 43, 17), 4.41, 74.37, 0.0, 28.5, 9.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:43:35.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:43:17
2025-09-29T09:43:35.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:43:35.503 [DEBUG] [Thread-152537] [transport.py] [_log()] starting thread (client mode): 0x2b9b88b0
2025-09-29T09:43:35.503 [DEBUG] [Thread-152537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:43:35.522 [DEBUG] [Thread-152537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:43:35.522 [INFO] [Thread-152537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:43:35.523 [DEBUG] [Thread-152537] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:43:35.523 [DEBUG] [Thread-152537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:43:35.523 [DEBUG] [Thread-152537] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:43:35.523 [DEBUG] [Thread-152537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] client lang: <none>
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] server lang: <none>
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] kex follows: False
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] Compression: none
2025-09-29T09:43:35.524 [DEBUG] [Thread-152537] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:43:35.531 [DEBUG] [Thread-152537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:43:35.531 [DEBUG] [Thread-152537] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:43:35.531 [DEBUG] [Thread-152537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:43:35.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:43:35.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:43:35.532 [DEBUG] [Thread-152537] [transport.py] [_log()] userauth is OK
2025-09-29T09:43:35.532 [DEBUG] [Thread-152537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:43:35.532 [DEBUG] [Thread-152537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:43:35.532 [DEBUG] [Thread-152537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:43:35.532 [DEBUG] [Thread-152537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:43:35.543 [INFO] [Thread-152537] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:43:35.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:43:36.098 [DEBUG] [Thread-152537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:43:36.098 [DEBUG] [Thread-152537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:43:36.098 [DEBUG] [Thread-152537] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:43:36.139 [DEBUG] [Thread-152537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:43:36.139 [DEBUG] [Thread-152537] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:43:36.141 [DEBUG] [Thread-152537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:43:36.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:43:36.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:43:36.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:43:36.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:43:36.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:43:36.157 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:43:36.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:43:36.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:43:36.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:43:36.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.321602 -999.00   +9.40  26.81     72   +4.80 1 1 1 1 1   888    0 5.65 59.76 ----- 23.8 26.8 170.2 32.3 14.7 -27.3 13.3 -25.2 12.3 -25.6 13.3 -26.6
2025-09-29T09:43:36.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:43:36.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:43:36.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.321602
2025-09-29T09:43:36.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:43:36.158 [DEBUG] [Thread-152537] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:36.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:43:36.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:43:36.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:43:36.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:43:36.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:43:17', tmtdew=4.41, humidity=74.37, cloud=0.0, wind=28.5, temperature=9.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:43:06.413', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:43:36.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:43:36.417 [DEBUG] [Thread-152540] [transport.py] [_log()] starting thread (client mode): 0x2b9b8a60
2025-09-29T09:43:36.417 [DEBUG] [Thread-152540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:43:36.431 [DEBUG] [Thread-152540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:43:36.431 [INFO] [Thread-152540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:43:36.438 [DEBUG] [Thread-152540] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:43:36.439 [DEBUG] [Thread-152540] [transport.py] [_log()] client lang: <none>
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] server lang: <none>
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] kex follows: False
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] Compression: none
2025-09-29T09:43:36.440 [DEBUG] [Thread-152540] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:43:36.499 [DEBUG] [Thread-152540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:43:36.500 [DEBUG] [Thread-152540] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:43:36.500 [DEBUG] [Thread-152540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:43:36.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:43:36.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:43:36.504 [DEBUG] [Thread-152542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:43:36.555 [DEBUG] [Thread-152540] [transport.py] [_log()] userauth is OK
2025-09-29T09:43:36.555 [DEBUG] [Thread-152540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:43:36.555 [DEBUG] [Thread-152540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:43:36.555 [DEBUG] [Thread-152540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:43:36.555 [DEBUG] [Thread-152540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:43:36.578 [INFO] [Thread-152540] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:43:36.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:43:36.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:43:37.546 [DEBUG] [Thread-152540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:43:37.547 [DEBUG] [Thread-152540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:43:37.594 [DEBUG] [Thread-152540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:43:37.594 [DEBUG] [Thread-152540] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:43:37.603 [DEBUG] [Thread-152540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:43:37.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:43:37.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:43:37.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:43:37.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:43:37.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:43:37.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:43:37.637 [DEBUG] [Thread-152540] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:47.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:43:47.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:43:47.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:43:48.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 43, 17), 4.41, 74.37, 0.0, 28.5, 9.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:43:48.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:43:17
2025-09-29T09:43:48.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:43:48.458 [DEBUG] [Thread-152543] [transport.py] [_log()] starting thread (client mode): 0x2b9b9390
2025-09-29T09:43:48.459 [DEBUG] [Thread-152543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:43:48.478 [DEBUG] [Thread-152543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:43:48.478 [INFO] [Thread-152543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:43:48.481 [DEBUG] [Thread-152543] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] client lang: <none>
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] server lang: <none>
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] kex follows: False
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] Compression: none
2025-09-29T09:43:48.482 [DEBUG] [Thread-152543] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:43:48.498 [DEBUG] [Thread-152543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:43:48.499 [DEBUG] [Thread-152543] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:43:48.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:43:48.500 [DEBUG] [Thread-152543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:43:48.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:43:48.501 [DEBUG] [Thread-152543] [transport.py] [_log()] userauth is OK
2025-09-29T09:43:48.501 [DEBUG] [Thread-152543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:43:48.501 [DEBUG] [Thread-152543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:43:48.501 [DEBUG] [Thread-152543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:43:48.501 [DEBUG] [Thread-152543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:43:48.517 [INFO] [Thread-152543] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:43:48.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:43:49.287 [DEBUG] [Thread-152543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:43:49.287 [DEBUG] [Thread-152543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:43:49.287 [DEBUG] [Thread-152543] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:43:49.328 [DEBUG] [Thread-152543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:43:49.329 [DEBUG] [Thread-152543] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:43:49.331 [DEBUG] [Thread-152543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:43:49.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:43:49.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:43:49.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:43:49.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:43:49.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:43:49.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:43:49.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:43:49.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:43:49.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:43:49.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.321602 -999.00   +9.40  26.81     72   +4.80 1 1 1 1 1   888    0 5.65 59.76 ----- 23.8 26.8 170.2 32.3 14.7 -27.3 13.3 -25.2 12.3 -25.6 13.3 -26.6
2025-09-29T09:43:49.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:43:49.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:43:49.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.321602
2025-09-29T09:43:49.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:43:49.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:43:49.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:43:49.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:43:49.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:43:49.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:43:17', tmtdew=4.41, humidity=74.37, cloud=0.0, wind=28.5, temperature=9.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:43:06.413', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:43:49.359 [DEBUG] [Thread-152543] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:49.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:43:49.451 [DEBUG] [Thread-152546] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d10
2025-09-29T09:43:49.451 [DEBUG] [Thread-152546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:43:49.466 [DEBUG] [Thread-152546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:43:49.466 [INFO] [Thread-152546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:43:49.474 [DEBUG] [Thread-152546] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:43:49.474 [DEBUG] [Thread-152546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:43:49.474 [DEBUG] [Thread-152546] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:43:49.474 [DEBUG] [Thread-152546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:49.474 [DEBUG] [Thread-152546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:43:49.474 [DEBUG] [Thread-152546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] client lang: <none>
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] server lang: <none>
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] kex follows: False
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] Compression: none
2025-09-29T09:43:49.475 [DEBUG] [Thread-152546] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:43:49.534 [DEBUG] [Thread-152546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:43:49.535 [DEBUG] [Thread-152546] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:43:49.535 [DEBUG] [Thread-152546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:43:49.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:43:49.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:43:49.590 [DEBUG] [Thread-152546] [transport.py] [_log()] userauth is OK
2025-09-29T09:43:49.591 [DEBUG] [Thread-152546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:43:49.591 [DEBUG] [Thread-152546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:43:49.591 [DEBUG] [Thread-152546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:43:49.591 [DEBUG] [Thread-152546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:43:49.610 [INFO] [Thread-152546] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:43:49.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:43:49.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:43:50.605 [DEBUG] [Thread-152546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:43:50.605 [DEBUG] [Thread-152546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:43:50.654 [DEBUG] [Thread-152546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:43:50.654 [DEBUG] [Thread-152546] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:43:50.662 [DEBUG] [Thread-152546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:43:50.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:43:50.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:43:50.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:43:50.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:43:50.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:43:50.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:43:50.693 [DEBUG] [Thread-152546] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:43:51.555 [DEBUG] [Thread-152548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:44:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:44:00.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:44:00.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:44:01.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 43, 49), 4.58, 73.59, 0.0, 29.29, 9.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:44:01.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:43:49
2025-09-29T09:44:01.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:44:01.532 [DEBUG] [Thread-152549] [transport.py] [_log()] starting thread (client mode): 0x28704d90
2025-09-29T09:44:01.532 [DEBUG] [Thread-152549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:01.552 [DEBUG] [Thread-152549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:44:01.552 [INFO] [Thread-152549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:01.555 [DEBUG] [Thread-152549] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:01.556 [DEBUG] [Thread-152549] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:01.556 [DEBUG] [Thread-152549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:01.556 [DEBUG] [Thread-152549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:01.556 [DEBUG] [Thread-152549] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:01.556 [DEBUG] [Thread-152549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:01.556 [DEBUG] [Thread-152549] [transport.py] [_log()] Compression: none
2025-09-29T09:44:01.556 [DEBUG] [Thread-152549] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:01.571 [DEBUG] [Thread-152549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:01.571 [DEBUG] [Thread-152549] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:01.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:44:01.572 [DEBUG] [Thread-152549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:44:01.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:01.572 [DEBUG] [Thread-152549] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:01.572 [DEBUG] [Thread-152549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:01.573 [DEBUG] [Thread-152549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:01.573 [DEBUG] [Thread-152549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:44:01.573 [DEBUG] [Thread-152549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:01.590 [INFO] [Thread-152549] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:01.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:02.343 [DEBUG] [Thread-152549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:02.343 [DEBUG] [Thread-152549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:02.344 [DEBUG] [Thread-152549] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:44:02.384 [DEBUG] [Thread-152549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:02.384 [DEBUG] [Thread-152549] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:02.386 [DEBUG] [Thread-152549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:02.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:02.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:44:02.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:44:02.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:44:02.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:02.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:44:02.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.321602 -999.00   +9.40  26.81     72   +4.80 1 1 1 1 1   888    0 5.65 59.76 ----- 23.8 26.8 170.2 32.3 14.7 -27.3 13.3 -25.2 12.3 -25.6 13.3 -26.6
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.321602
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:44:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:43:49', tmtdew=4.58, humidity=73.59, cloud=0.0, wind=29.29, temperature=9.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:43:06.413', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:44:02.407 [DEBUG] [Thread-152549] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:02.479 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:44:02.491 [DEBUG] [Thread-152552] [transport.py] [_log()] starting thread (client mode): 0x2b9b8190
2025-09-29T09:44:02.491 [DEBUG] [Thread-152552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:02.506 [DEBUG] [Thread-152552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:44:02.506 [INFO] [Thread-152552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:44:02.513 [DEBUG] [Thread-152552] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:02.513 [DEBUG] [Thread-152552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:44:02.513 [DEBUG] [Thread-152552] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:02.513 [DEBUG] [Thread-152552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:02.513 [DEBUG] [Thread-152552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:02.513 [DEBUG] [Thread-152552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:02.513 [DEBUG] [Thread-152552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:02.513 [DEBUG] [Thread-152552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] Compression: none
2025-09-29T09:44:02.514 [DEBUG] [Thread-152552] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:02.576 [DEBUG] [Thread-152552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:02.576 [DEBUG] [Thread-152552] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:02.576 [DEBUG] [Thread-152552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:44:02.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:44:02.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:02.634 [DEBUG] [Thread-152552] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:02.634 [DEBUG] [Thread-152552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:02.634 [DEBUG] [Thread-152552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:02.634 [DEBUG] [Thread-152552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:44:02.634 [DEBUG] [Thread-152552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:02.648 [INFO] [Thread-152552] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:02.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:44:02.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:03.676 [DEBUG] [Thread-152552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:03.676 [DEBUG] [Thread-152552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:03.724 [DEBUG] [Thread-152552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:03.725 [DEBUG] [Thread-152552] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:03.734 [DEBUG] [Thread-152552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:03.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:03.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:44:03.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:44:03.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:03.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:03.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:03.767 [DEBUG] [Thread-152552] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:06.584 [DEBUG] [Thread-152554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:44:13.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:44:13.770 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:44:13.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:44:14.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 43, 49), 4.58, 73.59, 0.0, 29.29, 9.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:44:14.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:43:49
2025-09-29T09:44:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:44:14.596 [DEBUG] [Thread-152555] [transport.py] [_log()] starting thread (client mode): 0x287043a0
2025-09-29T09:44:14.596 [DEBUG] [Thread-152555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:14.619 [DEBUG] [Thread-152555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:44:14.619 [INFO] [Thread-152555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:44:14.623 [DEBUG] [Thread-152555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:14.623 [DEBUG] [Thread-152555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:44:14.623 [DEBUG] [Thread-152555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:14.623 [DEBUG] [Thread-152555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:14.623 [DEBUG] [Thread-152555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:14.623 [DEBUG] [Thread-152555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:14.624 [DEBUG] [Thread-152555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:14.624 [DEBUG] [Thread-152555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:14.624 [DEBUG] [Thread-152555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:14.624 [DEBUG] [Thread-152555] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:14.624 [DEBUG] [Thread-152555] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:14.624 [DEBUG] [Thread-152555] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:14.624 [DEBUG] [Thread-152555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:14.624 [DEBUG] [Thread-152555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:14.625 [DEBUG] [Thread-152555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:14.625 [DEBUG] [Thread-152555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:14.625 [DEBUG] [Thread-152555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:14.625 [DEBUG] [Thread-152555] [transport.py] [_log()] Compression: none
2025-09-29T09:44:14.625 [DEBUG] [Thread-152555] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:14.643 [DEBUG] [Thread-152555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:14.644 [DEBUG] [Thread-152555] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:14.644 [DEBUG] [Thread-152555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:44:14.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:44:14.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:14.646 [DEBUG] [Thread-152555] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:14.646 [DEBUG] [Thread-152555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:14.646 [DEBUG] [Thread-152555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:14.647 [DEBUG] [Thread-152555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:44:14.647 [DEBUG] [Thread-152555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:14.681 [INFO] [Thread-152555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:14.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:15.262 [DEBUG] [Thread-152555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:15.263 [DEBUG] [Thread-152555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:15.263 [DEBUG] [Thread-152555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:44:15.303 [DEBUG] [Thread-152555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:15.303 [DEBUG] [Thread-152555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:15.306 [DEBUG] [Thread-152555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:15.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:15.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:44:15.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:44:15.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:44:15.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:15.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:44:15.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:15.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:15.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:44:15.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.321949 -999.00   +9.30  19.74     74   +4.90 1 1 1 1 1   888    0 5.64 58.91 ----- 26.5 19.7 152.4 28.1 14.4 -26.7 13.3 -24.4 12.3 -24.9 13.3 -24.9
2025-09-29T09:44:15.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:44:15.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:44:15.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.321949
2025-09-29T09:44:15.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:44:15.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:44:15.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:44:15.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:44:15.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:44:15.332 [DEBUG] [Thread-152555] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:15.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:43:49', tmtdew=4.58, humidity=73.59, cloud=0.0, wind=29.29, temperature=9.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:43:36.394', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:44:15.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:44:15.426 [DEBUG] [Thread-152558] [transport.py] [_log()] starting thread (client mode): 0x28704250
2025-09-29T09:44:15.426 [DEBUG] [Thread-152558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:15.442 [DEBUG] [Thread-152558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:44:15.442 [INFO] [Thread-152558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:44:15.449 [DEBUG] [Thread-152558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] Compression: none
2025-09-29T09:44:15.450 [DEBUG] [Thread-152558] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:15.507 [DEBUG] [Thread-152558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:15.507 [DEBUG] [Thread-152558] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:15.508 [DEBUG] [Thread-152558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:44:15.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:44:15.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:15.563 [DEBUG] [Thread-152558] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:15.563 [DEBUG] [Thread-152558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:15.563 [DEBUG] [Thread-152558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:15.563 [DEBUG] [Thread-152558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:44:15.563 [DEBUG] [Thread-152558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:15.585 [INFO] [Thread-152558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:15.585 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:44:15.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:16.658 [DEBUG] [Thread-152558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:16.658 [DEBUG] [Thread-152558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:16.706 [DEBUG] [Thread-152558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:16.706 [DEBUG] [Thread-152558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:16.715 [DEBUG] [Thread-152558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:16.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:16.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:44:16.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:44:16.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:16.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:16.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:16.750 [DEBUG] [Thread-152558] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:21.631 [DEBUG] [Thread-152560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:44:23.857 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:44:23.858 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:44:26.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:44:26.748 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:44:26.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:44:27.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 44, 21), 4.65, 73.29, 0.0, 29.03, 9.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:44:27.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:44:21
2025-09-29T09:44:27.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:44:27.591 [DEBUG] [Thread-152561] [transport.py] [_log()] starting thread (client mode): 0x2b9a70d0
2025-09-29T09:44:27.591 [DEBUG] [Thread-152561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:27.611 [DEBUG] [Thread-152561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:44:27.611 [INFO] [Thread-152561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:27.615 [DEBUG] [Thread-152561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] Compression: none
2025-09-29T09:44:27.616 [DEBUG] [Thread-152561] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:27.632 [DEBUG] [Thread-152561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:27.633 [DEBUG] [Thread-152561] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:27.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:44:27.634 [DEBUG] [Thread-152561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:44:27.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:27.636 [DEBUG] [Thread-152561] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:27.636 [DEBUG] [Thread-152561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:27.636 [DEBUG] [Thread-152561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:27.636 [DEBUG] [Thread-152561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:44:27.636 [DEBUG] [Thread-152561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:27.657 [INFO] [Thread-152561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:27.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:28.391 [DEBUG] [Thread-152561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:28.391 [DEBUG] [Thread-152561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:28.392 [DEBUG] [Thread-152561] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:44:28.432 [DEBUG] [Thread-152561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:28.432 [DEBUG] [Thread-152561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:28.435 [DEBUG] [Thread-152561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:28.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:28.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:44:28.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:44:28.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:44:28.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:28.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:44:28.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:28.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:28.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:44:28.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.321949 -999.00   +9.30  19.74     74   +4.90 1 1 1 1 1   888    0 5.64 58.91 ----- 26.5 19.7 152.4 28.1 14.4 -26.7 13.3 -24.4 12.3 -24.9 13.3 -24.9
2025-09-29T09:44:28.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:44:28.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:44:28.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.321949
2025-09-29T09:44:28.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:44:28.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:44:28.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:44:28.462 [DEBUG] [Thread-152561] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:28.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:44:28.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:44:28.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:44:21', tmtdew=4.65, humidity=73.29, cloud=0.0, wind=29.03, temperature=9.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:43:36.394', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:44:28.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:44:28.559 [DEBUG] [Thread-152564] [transport.py] [_log()] starting thread (client mode): 0x2b9a52a0
2025-09-29T09:44:28.559 [DEBUG] [Thread-152564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:28.574 [DEBUG] [Thread-152564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:44:28.574 [INFO] [Thread-152564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:44:28.581 [DEBUG] [Thread-152564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:28.582 [DEBUG] [Thread-152564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:44:28.582 [DEBUG] [Thread-152564] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:28.582 [DEBUG] [Thread-152564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:28.582 [DEBUG] [Thread-152564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:28.582 [DEBUG] [Thread-152564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] Compression: none
2025-09-29T09:44:28.583 [DEBUG] [Thread-152564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:28.638 [DEBUG] [Thread-152564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:28.639 [DEBUG] [Thread-152564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:28.640 [DEBUG] [Thread-152564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:44:28.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:44:28.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:28.699 [DEBUG] [Thread-152564] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:28.699 [DEBUG] [Thread-152564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:28.699 [DEBUG] [Thread-152564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:28.699 [DEBUG] [Thread-152564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:44:28.699 [DEBUG] [Thread-152564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:28.721 [INFO] [Thread-152564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:28.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:44:28.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:29.724 [DEBUG] [Thread-152564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:29.724 [DEBUG] [Thread-152564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:29.772 [DEBUG] [Thread-152564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:29.772 [DEBUG] [Thread-152564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:29.781 [DEBUG] [Thread-152564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:29.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:29.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:44:29.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:44:29.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:29.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:29.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:29.818 [DEBUG] [Thread-152564] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:30.597 [DEBUG] [Thread-152566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:44:36.664 [DEBUG] [Thread-152567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:44:39.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:44:39.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:44:39.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:44:40.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 44, 21), 4.65, 73.29, 0.0, 29.03, 9.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:44:40.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:44:21
2025-09-29T09:44:40.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:44:40.648 [DEBUG] [Thread-152568] [transport.py] [_log()] starting thread (client mode): 0x28706170
2025-09-29T09:44:40.648 [DEBUG] [Thread-152568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:40.659 [DEBUG] [Thread-152568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:44:40.659 [INFO] [Thread-152568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:44:40.662 [DEBUG] [Thread-152568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:40.662 [DEBUG] [Thread-152568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:44:40.662 [DEBUG] [Thread-152568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:40.662 [DEBUG] [Thread-152568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:40.662 [DEBUG] [Thread-152568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:40.662 [DEBUG] [Thread-152568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:40.662 [DEBUG] [Thread-152568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] Compression: none
2025-09-29T09:44:40.663 [DEBUG] [Thread-152568] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:40.678 [DEBUG] [Thread-152568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:40.679 [DEBUG] [Thread-152568] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:40.679 [DEBUG] [Thread-152568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:44:40.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:44:40.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:40.679 [DEBUG] [Thread-152568] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:40.679 [DEBUG] [Thread-152568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:40.679 [DEBUG] [Thread-152568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:40.680 [DEBUG] [Thread-152568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:44:40.680 [DEBUG] [Thread-152568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:40.695 [INFO] [Thread-152568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:40.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:41.269 [DEBUG] [Thread-152568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:41.270 [DEBUG] [Thread-152568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:41.270 [DEBUG] [Thread-152568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:44:41.310 [DEBUG] [Thread-152568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:41.310 [DEBUG] [Thread-152568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:41.312 [DEBUG] [Thread-152568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:41.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:41.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:44:41.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:44:41.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:44:41.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:41.333 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:44:41.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:41.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:44:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.322644 -999.00   +9.20  24.88     74   +4.90 1 1 1 1 1   888    0 5.45 54.08 ----- 22.6 24.9 168.8 35.2 14.6 -22.5 13.6 -24.0 12.6 -22.9 13.6 -24.0
2025-09-29T09:44:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:44:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:44:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.322644
2025-09-29T09:44:41.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:44:41.335 [DEBUG] [Thread-152568] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:41.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:44:41.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:44:41.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:44:41.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:44:41.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:44:21', tmtdew=4.65, humidity=73.29, cloud=0.0, wind=29.03, temperature=9.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:44:36.442', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:44:41.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:44:41.430 [DEBUG] [Thread-152571] [transport.py] [_log()] starting thread (client mode): 0x2b9bb190
2025-09-29T09:44:41.430 [DEBUG] [Thread-152571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:41.444 [DEBUG] [Thread-152571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:44:41.445 [INFO] [Thread-152571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:41.452 [DEBUG] [Thread-152571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] Compression: none
2025-09-29T09:44:41.453 [DEBUG] [Thread-152571] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:41.511 [DEBUG] [Thread-152571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:41.512 [DEBUG] [Thread-152571] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:41.513 [DEBUG] [Thread-152571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:44:41.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:44:41.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:41.571 [DEBUG] [Thread-152571] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:41.571 [DEBUG] [Thread-152571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:41.571 [DEBUG] [Thread-152571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:41.571 [DEBUG] [Thread-152571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:44:41.571 [DEBUG] [Thread-152571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:41.590 [INFO] [Thread-152571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:41.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:44:41.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:42.562 [DEBUG] [Thread-152571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:42.563 [DEBUG] [Thread-152571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:42.610 [DEBUG] [Thread-152571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:42.610 [DEBUG] [Thread-152571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:42.619 [DEBUG] [Thread-152571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:42.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:42.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:44:42.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:44:42.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:42.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:42.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:42.654 [DEBUG] [Thread-152571] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:51.699 [DEBUG] [Thread-152573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:44:52.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:44:52.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:44:52.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:44:53.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 44, 21), 4.65, 73.29, 0.0, 29.03, 9.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:44:53.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:44:21
2025-09-29T09:44:53.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:44:53.478 [DEBUG] [Thread-152574] [transport.py] [_log()] starting thread (client mode): 0x2b9bb3a0
2025-09-29T09:44:53.478 [DEBUG] [Thread-152574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:53.498 [DEBUG] [Thread-152574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:44:53.498 [INFO] [Thread-152574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:53.501 [DEBUG] [Thread-152574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] Compression: none
2025-09-29T09:44:53.502 [DEBUG] [Thread-152574] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:53.519 [DEBUG] [Thread-152574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:53.519 [DEBUG] [Thread-152574] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:53.519 [DEBUG] [Thread-152574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:44:53.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:44:53.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:53.520 [DEBUG] [Thread-152574] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:53.520 [DEBUG] [Thread-152574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:53.520 [DEBUG] [Thread-152574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:53.520 [DEBUG] [Thread-152574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:44:53.520 [DEBUG] [Thread-152574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:53.529 [INFO] [Thread-152574] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:53.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:54.123 [DEBUG] [Thread-152574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:54.123 [DEBUG] [Thread-152574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:54.123 [DEBUG] [Thread-152574] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:44:54.164 [DEBUG] [Thread-152574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:54.164 [DEBUG] [Thread-152574] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:54.168 [DEBUG] [Thread-152574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:54.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:54.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:44:54.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:44:54.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:44:54.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:54.187 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:44:54.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.322644 -999.00   +9.20  24.88     74   +4.90 1 1 1 1 1   888    0 5.45 54.08 ----- 22.6 24.9 168.8 35.2 14.6 -22.5 13.6 -24.0 12.6 -22.9 13.6 -24.0
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.322644
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:44:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:44:21', tmtdew=4.65, humidity=73.29, cloud=0.0, wind=29.03, temperature=9.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:44:36.442', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:44:54.188 [DEBUG] [Thread-152574] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:44:54.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:44:54.271 [DEBUG] [Thread-152577] [transport.py] [_log()] starting thread (client mode): 0x287073a0
2025-09-29T09:44:54.271 [DEBUG] [Thread-152577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:44:54.287 [DEBUG] [Thread-152577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:44:54.287 [INFO] [Thread-152577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:44:54.294 [DEBUG] [Thread-152577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:44:54.294 [DEBUG] [Thread-152577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] client lang: <none>
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] server lang: <none>
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] kex follows: False
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] Compression: none
2025-09-29T09:44:54.295 [DEBUG] [Thread-152577] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:44:54.353 [DEBUG] [Thread-152577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:44:54.353 [DEBUG] [Thread-152577] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:44:54.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:44:54.354 [DEBUG] [Thread-152577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:44:54.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:44:54.420 [DEBUG] [Thread-152577] [transport.py] [_log()] userauth is OK
2025-09-29T09:44:54.421 [DEBUG] [Thread-152577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:44:54.421 [DEBUG] [Thread-152577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:44:54.421 [DEBUG] [Thread-152577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:44:54.421 [DEBUG] [Thread-152577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:44:54.434 [INFO] [Thread-152577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:44:54.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:44:54.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:44:55.431 [DEBUG] [Thread-152577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:44:55.432 [DEBUG] [Thread-152577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:44:55.479 [DEBUG] [Thread-152577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:44:55.479 [DEBUG] [Thread-152577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:44:55.492 [DEBUG] [Thread-152577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:44:55.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:44:55.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:44:55.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:44:55.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:44:55.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:44:55.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:44:55.527 [DEBUG] [Thread-152577] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:45:05.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:45:05.530 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:45:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:45:06.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 44, 53), 4.88, 72.14, 0.0, 28.0, 9.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:45:06.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:44:53
2025-09-29T09:45:06.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:45:06.379 [DEBUG] [Thread-152579] [transport.py] [_log()] starting thread (client mode): 0x28704280
2025-09-29T09:45:06.379 [DEBUG] [Thread-152579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:45:06.399 [DEBUG] [Thread-152579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:45:06.400 [INFO] [Thread-152579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:45:06.403 [DEBUG] [Thread-152579] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:45:06.403 [DEBUG] [Thread-152579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:45:06.403 [DEBUG] [Thread-152579] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:45:06.403 [DEBUG] [Thread-152579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:06.403 [DEBUG] [Thread-152579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:06.403 [DEBUG] [Thread-152579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:06.403 [DEBUG] [Thread-152579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] client lang: <none>
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] server lang: <none>
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] kex follows: False
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] Compression: none
2025-09-29T09:45:06.404 [DEBUG] [Thread-152579] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:45:06.421 [DEBUG] [Thread-152579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:45:06.422 [DEBUG] [Thread-152579] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:45:06.422 [DEBUG] [Thread-152579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:45:06.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:45:06.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:45:06.465 [DEBUG] [Thread-152579] [transport.py] [_log()] userauth is OK
2025-09-29T09:45:06.465 [DEBUG] [Thread-152579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:45:06.465 [DEBUG] [Thread-152579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:45:06.465 [DEBUG] [Thread-152579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:45:06.465 [DEBUG] [Thread-152579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:45:06.485 [INFO] [Thread-152579] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:45:06.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:45:06.751 [DEBUG] [Thread-152581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:45:13.457 [DEBUG] [Thread-152579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:45:13.457 [DEBUG] [Thread-152579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:45:13.457 [DEBUG] [Thread-152579] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:45:13.498 [DEBUG] [Thread-152579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:45:13.499 [DEBUG] [Thread-152579] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:45:13.501 [DEBUG] [Thread-152579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:45:13.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:45:13.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:45:13.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:45:13.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:45:13.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:45:13.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:45:13.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:45:13.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:45:13.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:45:13.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.322644 -999.00   +9.20  24.88     74   +4.90 1 1 1 1 1   888    0 5.45 54.08 ----- 22.6 24.9 168.8 35.2 14.6 -22.5 13.6 -24.0 12.6 -22.9 13.6 -24.0
2025-09-29T09:45:13.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:45:13.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:45:13.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.322644
2025-09-29T09:45:13.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:45:13.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:45:13.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:45:13.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:45:13.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:45:13.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:44:53', tmtdew=4.88, humidity=72.14, cloud=0.0, wind=28.0, temperature=9.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:44:36.442', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:45:13.569 [DEBUG] [Thread-152579] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:45:13.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:45:13.667 [DEBUG] [Thread-152583] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-29T09:45:13.667 [DEBUG] [Thread-152583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:45:13.685 [DEBUG] [Thread-152583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:45:13.685 [INFO] [Thread-152583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:45:13.692 [DEBUG] [Thread-152583] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:45:13.692 [DEBUG] [Thread-152583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:45:13.692 [DEBUG] [Thread-152583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:45:13.692 [DEBUG] [Thread-152583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:13.692 [DEBUG] [Thread-152583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:13.692 [DEBUG] [Thread-152583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:13.692 [DEBUG] [Thread-152583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] client lang: <none>
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] server lang: <none>
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] kex follows: False
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] Compression: none
2025-09-29T09:45:13.693 [DEBUG] [Thread-152583] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:45:13.751 [DEBUG] [Thread-152583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:45:13.751 [DEBUG] [Thread-152583] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:45:13.752 [DEBUG] [Thread-152583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:45:13.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:45:13.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:45:13.807 [DEBUG] [Thread-152583] [transport.py] [_log()] userauth is OK
2025-09-29T09:45:13.807 [DEBUG] [Thread-152583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:45:13.807 [DEBUG] [Thread-152583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:45:13.807 [DEBUG] [Thread-152583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:45:13.807 [DEBUG] [Thread-152583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:45:13.826 [INFO] [Thread-152583] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:45:13.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:45:13.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:45:14.813 [DEBUG] [Thread-152583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:45:14.813 [DEBUG] [Thread-152583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:45:14.864 [DEBUG] [Thread-152583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:45:14.864 [DEBUG] [Thread-152583] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:45:14.874 [DEBUG] [Thread-152583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:45:14.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:45:14.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:45:14.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:45:14.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:45:14.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:45:14.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:45:14.907 [DEBUG] [Thread-152583] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:45:21.780 [DEBUG] [Thread-152585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:45:23.998 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:45:23.999 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:45:24.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:45:24.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:45:24.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:45:25.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 44, 53), 4.88, 72.14, 0.0, 28.0, 9.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:45:25.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:44:53
2025-09-29T09:45:25.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:45:25.747 [DEBUG] [Thread-152586] [transport.py] [_log()] starting thread (client mode): 0x2b9c3550
2025-09-29T09:45:25.747 [DEBUG] [Thread-152586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:45:25.768 [DEBUG] [Thread-152586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:45:25.768 [INFO] [Thread-152586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:45:25.769 [DEBUG] [Thread-152586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:45:25.769 [DEBUG] [Thread-152586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:45:25.769 [DEBUG] [Thread-152586] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] client lang: <none>
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] server lang: <none>
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] kex follows: False
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] Compression: none
2025-09-29T09:45:25.770 [DEBUG] [Thread-152586] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:45:25.782 [DEBUG] [Thread-152586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:45:25.782 [DEBUG] [Thread-152586] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:45:25.782 [DEBUG] [Thread-152586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:45:25.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:45:25.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:45:25.783 [DEBUG] [Thread-152586] [transport.py] [_log()] userauth is OK
2025-09-29T09:45:25.783 [DEBUG] [Thread-152586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:45:25.783 [DEBUG] [Thread-152586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:45:25.783 [DEBUG] [Thread-152586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:45:25.783 [DEBUG] [Thread-152586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:45:25.796 [INFO] [Thread-152586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:45:25.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:45:26.389 [DEBUG] [Thread-152586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:45:26.389 [DEBUG] [Thread-152586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:45:26.389 [DEBUG] [Thread-152586] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:45:26.430 [DEBUG] [Thread-152586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:45:26.430 [DEBUG] [Thread-152586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:45:26.432 [DEBUG] [Thread-152586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:45:26.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:45:26.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:45:26.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:45:26.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:45:26.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:45:26.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:45:26.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:45:26.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:45:26.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:45:26.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.322990 -999.00   +9.20  27.50     74   +5.00 1 1 1 1 1   888    0 5.37 50.46 ----- 22.7 27.5 171.2 36.4 14.8 -22.4 13.5 -28.0 12.7 -24.7 13.7 -23.1
2025-09-29T09:45:26.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:45:26.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:45:26.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.322990
2025-09-29T09:45:26.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:45:26.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:45:26.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:45:26.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:45:26.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:45:26.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:44:53', tmtdew=4.88, humidity=72.14, cloud=0.0, wind=28.0, temperature=9.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:45:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:45:26.444 [DEBUG] [Thread-152586] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:45:26.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:45:26.528 [DEBUG] [Thread-152589] [transport.py] [_log()] starting thread (client mode): 0x2b9bb9a0
2025-09-29T09:45:26.528 [DEBUG] [Thread-152589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:45:26.542 [DEBUG] [Thread-152589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:45:26.542 [INFO] [Thread-152589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] client lang: <none>
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] server lang: <none>
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] kex follows: False
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] Compression: none
2025-09-29T09:45:26.550 [DEBUG] [Thread-152589] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:45:26.606 [DEBUG] [Thread-152589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:45:26.606 [DEBUG] [Thread-152589] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:45:26.606 [DEBUG] [Thread-152589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:45:26.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:45:26.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:45:26.662 [DEBUG] [Thread-152589] [transport.py] [_log()] userauth is OK
2025-09-29T09:45:26.662 [DEBUG] [Thread-152589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:45:26.662 [DEBUG] [Thread-152589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:45:26.662 [DEBUG] [Thread-152589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:45:26.662 [DEBUG] [Thread-152589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:45:26.676 [INFO] [Thread-152589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:45:26.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:45:26.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:45:27.661 [DEBUG] [Thread-152589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:45:27.661 [DEBUG] [Thread-152589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:45:27.713 [DEBUG] [Thread-152589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:45:27.713 [DEBUG] [Thread-152589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:45:27.722 [DEBUG] [Thread-152589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:45:27.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:45:27.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:45:27.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:45:27.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:45:27.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:45:27.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:45:27.757 [DEBUG] [Thread-152589] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:45:30.652 [DEBUG] [Thread-152591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:45:36.831 [DEBUG] [Thread-152592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:45:37.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:45:37.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:45:37.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:45:38.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 45, 25), 4.79, 72.54, 0.0, 26.61, 9.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:45:38.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:45:25
2025-09-29T09:45:38.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:45:38.599 [DEBUG] [Thread-152593] [transport.py] [_log()] starting thread (client mode): 0x2e363c10
2025-09-29T09:45:38.599 [DEBUG] [Thread-152593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:45:38.621 [DEBUG] [Thread-152593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:45:38.621 [INFO] [Thread-152593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] client lang: <none>
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] server lang: <none>
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] kex follows: False
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] Compression: none
2025-09-29T09:45:38.625 [DEBUG] [Thread-152593] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:45:38.643 [DEBUG] [Thread-152593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:45:38.644 [DEBUG] [Thread-152593] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:45:38.644 [DEBUG] [Thread-152593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:45:38.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:45:38.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:45:38.646 [DEBUG] [Thread-152593] [transport.py] [_log()] userauth is OK
2025-09-29T09:45:38.647 [DEBUG] [Thread-152593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:45:38.647 [DEBUG] [Thread-152593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:45:38.647 [DEBUG] [Thread-152593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:45:38.647 [DEBUG] [Thread-152593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:45:38.662 [INFO] [Thread-152593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:45:38.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:45:39.376 [DEBUG] [Thread-152593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:45:39.377 [DEBUG] [Thread-152593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:45:39.377 [DEBUG] [Thread-152593] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:45:39.417 [DEBUG] [Thread-152593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:45:39.417 [DEBUG] [Thread-152593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:45:39.420 [DEBUG] [Thread-152593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:45:39.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:45:39.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:45:39.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:45:39.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:45:39.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:45:39.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:45:39.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:45:39.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:45:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:45:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.322990 -999.00   +9.20  27.50     74   +5.00 1 1 1 1 1   888    0 5.37 50.46 ----- 22.7 27.5 171.2 36.4 14.8 -22.4 13.5 -28.0 12.7 -24.7 13.7 -23.1
2025-09-29T09:45:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:45:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:45:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.322990
2025-09-29T09:45:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:45:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:45:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:45:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:45:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:45:39.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:45:25', tmtdew=4.79, humidity=72.54, cloud=0.0, wind=26.61, temperature=9.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:45:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:45:39.441 [DEBUG] [Thread-152593] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:45:39.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:45:39.537 [DEBUG] [Thread-152596] [transport.py] [_log()] starting thread (client mode): 0x2b9a50f0
2025-09-29T09:45:39.538 [DEBUG] [Thread-152596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:45:39.553 [DEBUG] [Thread-152596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:45:39.553 [INFO] [Thread-152596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:45:39.561 [DEBUG] [Thread-152596] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] client lang: <none>
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] server lang: <none>
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] kex follows: False
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:45:39.562 [DEBUG] [Thread-152596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:45:39.563 [DEBUG] [Thread-152596] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:45:39.563 [DEBUG] [Thread-152596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:45:39.563 [DEBUG] [Thread-152596] [transport.py] [_log()] Compression: none
2025-09-29T09:45:39.563 [DEBUG] [Thread-152596] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:45:39.618 [DEBUG] [Thread-152596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:45:39.618 [DEBUG] [Thread-152596] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:45:39.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:45:39.619 [DEBUG] [Thread-152596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:45:39.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:45:39.676 [DEBUG] [Thread-152596] [transport.py] [_log()] userauth is OK
2025-09-29T09:45:39.676 [DEBUG] [Thread-152596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:45:39.676 [DEBUG] [Thread-152596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:45:39.676 [DEBUG] [Thread-152596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:45:39.676 [DEBUG] [Thread-152596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:45:39.695 [INFO] [Thread-152596] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:45:39.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:45:39.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:45:40.669 [DEBUG] [Thread-152596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:45:40.669 [DEBUG] [Thread-152596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:45:40.717 [DEBUG] [Thread-152596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:45:40.717 [DEBUG] [Thread-152596] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:45:40.726 [DEBUG] [Thread-152596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:45:40.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:45:40.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:45:40.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:45:40.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:45:40.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:45:40.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:45:40.761 [DEBUG] [Thread-152596] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:45:50.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:45:50.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:45:50.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:45:51.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 45, 25), 4.79, 72.54, 0.0, 26.61, 9.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:45:51.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:45:25
2025-09-29T09:45:51.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:45:51.582 [DEBUG] [Thread-152598] [transport.py] [_log()] starting thread (client mode): 0x28704250
2025-09-29T09:45:51.582 [DEBUG] [Thread-152598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:45:51.603 [DEBUG] [Thread-152598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:45:51.603 [INFO] [Thread-152598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] client lang: <none>
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] server lang: <none>
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] kex follows: False
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:45:51.607 [DEBUG] [Thread-152598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:45:51.608 [DEBUG] [Thread-152598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:45:51.608 [DEBUG] [Thread-152598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:45:51.608 [DEBUG] [Thread-152598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:45:51.608 [DEBUG] [Thread-152598] [transport.py] [_log()] Compression: none
2025-09-29T09:45:51.608 [DEBUG] [Thread-152598] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:45:51.622 [DEBUG] [Thread-152598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:45:51.623 [DEBUG] [Thread-152598] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:45:51.623 [DEBUG] [Thread-152598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:45:51.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:45:51.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:45:51.625 [DEBUG] [Thread-152598] [transport.py] [_log()] userauth is OK
2025-09-29T09:45:51.625 [DEBUG] [Thread-152598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:45:51.626 [DEBUG] [Thread-152598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:45:51.626 [DEBUG] [Thread-152598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:45:51.626 [DEBUG] [Thread-152598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:45:51.643 [INFO] [Thread-152598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:45:51.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:45:51.869 [DEBUG] [Thread-152600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:45:52.260 [DEBUG] [Thread-152598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:45:52.260 [DEBUG] [Thread-152598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:45:52.260 [DEBUG] [Thread-152598] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:45:52.302 [DEBUG] [Thread-152598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:45:52.302 [DEBUG] [Thread-152598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:45:52.304 [DEBUG] [Thread-152598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:45:52.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:45:52.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:45:52.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:45:52.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:45:52.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:45:52.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:45:52.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.323338 -999.00   +9.40  24.37     74   +5.10 1 1 1 1 1   888    0 5.48 53.01 ----- 24.1 24.4 158.0 32.2 14.9 -23.2 13.8 -22.2 12.8 -24.6 13.8 -23.3
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.323338
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:45:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:45:25', tmtdew=4.79, humidity=72.54, cloud=0.0, wind=26.61, temperature=9.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:45:36.403', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:45:52.314 [DEBUG] [Thread-152598] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:45:52.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:45:52.398 [DEBUG] [Thread-152602] [transport.py] [_log()] starting thread (client mode): 0x287042e0
2025-09-29T09:45:52.398 [DEBUG] [Thread-152602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:45:52.413 [DEBUG] [Thread-152602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:45:52.413 [INFO] [Thread-152602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] client lang: <none>
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] server lang: <none>
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] kex follows: False
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] Compression: none
2025-09-29T09:45:52.420 [DEBUG] [Thread-152602] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:45:52.478 [DEBUG] [Thread-152602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:45:52.478 [DEBUG] [Thread-152602] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:45:52.478 [DEBUG] [Thread-152602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:45:52.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:45:52.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:45:52.534 [DEBUG] [Thread-152602] [transport.py] [_log()] userauth is OK
2025-09-29T09:45:52.534 [DEBUG] [Thread-152602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:45:52.534 [DEBUG] [Thread-152602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:45:52.534 [DEBUG] [Thread-152602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:45:52.534 [DEBUG] [Thread-152602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:45:52.548 [INFO] [Thread-152602] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:45:52.548 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:45:52.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:45:53.538 [DEBUG] [Thread-152602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:45:53.538 [DEBUG] [Thread-152602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:45:53.592 [DEBUG] [Thread-152602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:45:53.592 [DEBUG] [Thread-152602] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:45:53.603 [DEBUG] [Thread-152602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:45:53.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:45:53.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:45:53.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:45:53.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:45:53.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:45:53.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:45:53.648 [DEBUG] [Thread-152602] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:46:03.650 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:46:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:46:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 45, 57), 4.97, 71.45, 0.0, 24.07, 9.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:46:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:45:57
2025-09-29T09:46:04.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:46:04.483 [DEBUG] [Thread-152604] [transport.py] [_log()] starting thread (client mode): 0x2b9a5090
2025-09-29T09:46:04.483 [DEBUG] [Thread-152604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:04.503 [DEBUG] [Thread-152604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:46:04.504 [INFO] [Thread-152604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:04.507 [DEBUG] [Thread-152604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:04.508 [DEBUG] [Thread-152604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:04.508 [DEBUG] [Thread-152604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:04.508 [DEBUG] [Thread-152604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:04.508 [DEBUG] [Thread-152604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:04.508 [DEBUG] [Thread-152604] [transport.py] [_log()] Compression: none
2025-09-29T09:46:04.508 [DEBUG] [Thread-152604] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:04.525 [DEBUG] [Thread-152604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:04.525 [DEBUG] [Thread-152604] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:04.526 [DEBUG] [Thread-152604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:46:04.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:46:04.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:04.527 [DEBUG] [Thread-152604] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:04.528 [DEBUG] [Thread-152604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:04.528 [DEBUG] [Thread-152604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:04.528 [DEBUG] [Thread-152604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:46:04.528 [DEBUG] [Thread-152604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:04.551 [INFO] [Thread-152604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:04.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:05.311 [DEBUG] [Thread-152604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:05.311 [DEBUG] [Thread-152604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:05.311 [DEBUG] [Thread-152604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:46:05.351 [DEBUG] [Thread-152604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:05.352 [DEBUG] [Thread-152604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:05.354 [DEBUG] [Thread-152604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:05.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:05.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:46:05.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:46:05.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:46:05.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:05.377 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:46:05.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:05.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:05.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:46:05.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.323338 -999.00   +9.40  24.37     74   +5.10 1 1 1 1 1   888    0 5.48 53.01 ----- 24.1 24.4 158.0 32.2 14.9 -23.2 13.8 -22.2 12.8 -24.6 13.8 -23.3
2025-09-29T09:46:05.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:46:05.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:46:05.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.323338
2025-09-29T09:46:05.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:46:05.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:46:05.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:46:05.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:46:05.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:46:05.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:45:57', tmtdew=4.97, humidity=71.45, cloud=0.0, wind=24.07, temperature=9.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:45:36.403', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:46:05.379 [DEBUG] [Thread-152604] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:05.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:46:05.472 [DEBUG] [Thread-152607] [transport.py] [_log()] starting thread (client mode): 0x2e34b3a0
2025-09-29T09:46:05.472 [DEBUG] [Thread-152607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:05.487 [DEBUG] [Thread-152607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:46:05.487 [INFO] [Thread-152607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:46:05.495 [DEBUG] [Thread-152607] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:05.495 [DEBUG] [Thread-152607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:46:05.495 [DEBUG] [Thread-152607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:05.495 [DEBUG] [Thread-152607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:05.495 [DEBUG] [Thread-152607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:05.495 [DEBUG] [Thread-152607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:05.495 [DEBUG] [Thread-152607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:05.496 [DEBUG] [Thread-152607] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:05.497 [DEBUG] [Thread-152607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:05.497 [DEBUG] [Thread-152607] [transport.py] [_log()] Compression: none
2025-09-29T09:46:05.497 [DEBUG] [Thread-152607] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:05.555 [DEBUG] [Thread-152607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:05.555 [DEBUG] [Thread-152607] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:05.556 [DEBUG] [Thread-152607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:46:05.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:46:05.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:05.610 [DEBUG] [Thread-152607] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:05.611 [DEBUG] [Thread-152607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:05.611 [DEBUG] [Thread-152607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:05.611 [DEBUG] [Thread-152607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:46:05.611 [DEBUG] [Thread-152607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:05.630 [INFO] [Thread-152607] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:05.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:46:05.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:06.642 [DEBUG] [Thread-152607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:06.642 [DEBUG] [Thread-152607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:06.690 [DEBUG] [Thread-152607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:06.690 [DEBUG] [Thread-152607] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:06.699 [DEBUG] [Thread-152607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:06.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:06.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:46:06.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:46:06.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:06.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:06.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:06.739 [DEBUG] [Thread-152607] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:06.911 [DEBUG] [Thread-152609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:46:16.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:46:16.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:46:16.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:46:17.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 45, 57), 4.97, 71.45, 0.0, 24.07, 9.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:46:17.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:45:57
2025-09-29T09:46:17.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:46:17.568 [DEBUG] [Thread-152610] [transport.py] [_log()] starting thread (client mode): 0x2e3ddf90
2025-09-29T09:46:17.568 [DEBUG] [Thread-152610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:17.587 [DEBUG] [Thread-152610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:46:17.588 [INFO] [Thread-152610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] Compression: none
2025-09-29T09:46:17.591 [DEBUG] [Thread-152610] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:17.608 [DEBUG] [Thread-152610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:17.608 [DEBUG] [Thread-152610] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:17.608 [DEBUG] [Thread-152610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:46:17.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:46:17.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:17.609 [DEBUG] [Thread-152610] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:17.609 [DEBUG] [Thread-152610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:17.609 [DEBUG] [Thread-152610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:17.609 [DEBUG] [Thread-152610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:46:17.609 [DEBUG] [Thread-152610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:17.618 [INFO] [Thread-152610] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:17.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:18.295 [DEBUG] [Thread-152610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:18.296 [DEBUG] [Thread-152610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:18.296 [DEBUG] [Thread-152610] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:46:18.336 [DEBUG] [Thread-152610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:18.337 [DEBUG] [Thread-152610] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:18.339 [DEBUG] [Thread-152610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:18.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:18.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:46:18.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:46:18.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:46:18.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:18.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:46:18.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:18.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:18.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:46:18.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.323338 -999.00   +9.40  24.37     74   +5.10 1 1 1 1 1   888    0 5.48 53.01 ----- 24.1 24.4 158.0 32.2 14.9 -23.2 13.8 -22.2 12.8 -24.6 13.8 -23.3
2025-09-29T09:46:18.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:46:18.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:46:18.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.323338
2025-09-29T09:46:18.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:46:18.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:46:18.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:46:18.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:46:18.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:46:18.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:45:57', tmtdew=4.97, humidity=71.45, cloud=0.0, wind=24.07, temperature=9.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:45:36.403', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:46:18.365 [DEBUG] [Thread-152610] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:18.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:46:18.459 [DEBUG] [Thread-152613] [transport.py] [_log()] starting thread (client mode): 0x2b9b88b0
2025-09-29T09:46:18.459 [DEBUG] [Thread-152613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:18.474 [DEBUG] [Thread-152613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:46:18.474 [INFO] [Thread-152613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:46:18.482 [DEBUG] [Thread-152613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:18.482 [DEBUG] [Thread-152613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:46:18.482 [DEBUG] [Thread-152613] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:18.482 [DEBUG] [Thread-152613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:18.482 [DEBUG] [Thread-152613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:18.482 [DEBUG] [Thread-152613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:18.482 [DEBUG] [Thread-152613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:18.483 [DEBUG] [Thread-152613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:18.484 [DEBUG] [Thread-152613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:18.484 [DEBUG] [Thread-152613] [transport.py] [_log()] Compression: none
2025-09-29T09:46:18.484 [DEBUG] [Thread-152613] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:18.539 [DEBUG] [Thread-152613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:18.539 [DEBUG] [Thread-152613] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:18.540 [DEBUG] [Thread-152613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:46:18.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:46:18.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:18.598 [DEBUG] [Thread-152613] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:18.599 [DEBUG] [Thread-152613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:18.599 [DEBUG] [Thread-152613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:18.599 [DEBUG] [Thread-152613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:46:18.599 [DEBUG] [Thread-152613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:18.617 [INFO] [Thread-152613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:18.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:46:18.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:19.581 [DEBUG] [Thread-152613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:19.581 [DEBUG] [Thread-152613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:19.629 [DEBUG] [Thread-152613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:19.629 [DEBUG] [Thread-152613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:19.638 [DEBUG] [Thread-152613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:19.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:19.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:46:19.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:46:19.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:19.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:19.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:19.673 [DEBUG] [Thread-152613] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:21.965 [DEBUG] [Thread-152615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:46:24.140 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:46:24.141 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:46:29.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:46:29.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:46:29.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:46:30.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 45, 57), 4.97, 71.45, 0.0, 24.07, 9.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:46:30.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:45:57
2025-09-29T09:46:30.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:46:30.571 [DEBUG] [Thread-152616] [transport.py] [_log()] starting thread (client mode): 0x2e3494e0
2025-09-29T09:46:30.571 [DEBUG] [Thread-152616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:30.590 [DEBUG] [Thread-152616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:46:30.590 [INFO] [Thread-152616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] Compression: none
2025-09-29T09:46:30.594 [DEBUG] [Thread-152616] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:30.611 [DEBUG] [Thread-152616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:30.611 [DEBUG] [Thread-152616] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:30.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:46:30.612 [DEBUG] [Thread-152616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:46:30.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:30.612 [DEBUG] [Thread-152616] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:30.612 [DEBUG] [Thread-152616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:30.612 [DEBUG] [Thread-152616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:30.612 [DEBUG] [Thread-152616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:46:30.612 [DEBUG] [Thread-152616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:30.624 [INFO] [Thread-152616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:30.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:30.700 [DEBUG] [Thread-152618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:46:31.205 [DEBUG] [Thread-152616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:31.205 [DEBUG] [Thread-152616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:31.205 [DEBUG] [Thread-152616] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:46:31.246 [DEBUG] [Thread-152616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:31.246 [DEBUG] [Thread-152616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:31.249 [DEBUG] [Thread-152616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:31.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:31.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:46:31.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:46:31.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:46:31.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:31.267 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:46:31.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:31.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.323685 -999.00   +9.40  20.35     74   +5.10 1 2 1 1 1   888    0 5.47 51.27 ----- 24.6 20.4 158.8 27.1 15.1 -23.3 14.0 -21.2 12.9 -22.6 13.9 -22.9
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.323685
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:46:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:45:57', tmtdew=4.97, humidity=71.45, cloud=0.0, wind=24.07, temperature=9.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:46:06.384', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:46:31.269 [DEBUG] [Thread-152616] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:31.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:46:31.354 [DEBUG] [Thread-152620] [transport.py] [_log()] starting thread (client mode): 0x2e363be0
2025-09-29T09:46:31.354 [DEBUG] [Thread-152620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:31.368 [DEBUG] [Thread-152620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:46:31.368 [INFO] [Thread-152620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] Compression: none
2025-09-29T09:46:31.376 [DEBUG] [Thread-152620] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:31.433 [DEBUG] [Thread-152620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:31.433 [DEBUG] [Thread-152620] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:31.433 [DEBUG] [Thread-152620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:46:31.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:46:31.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:31.490 [DEBUG] [Thread-152620] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:31.490 [DEBUG] [Thread-152620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:31.490 [DEBUG] [Thread-152620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:31.490 [DEBUG] [Thread-152620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:46:31.490 [DEBUG] [Thread-152620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:31.504 [INFO] [Thread-152620] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:31.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:46:31.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:32.524 [DEBUG] [Thread-152620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:32.524 [DEBUG] [Thread-152620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:32.572 [DEBUG] [Thread-152620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:32.572 [DEBUG] [Thread-152620] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:32.580 [DEBUG] [Thread-152620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:32.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:32.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:46:32.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:46:32.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:32.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:32.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:32.613 [DEBUG] [Thread-152620] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:36.998 [DEBUG] [Thread-152622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:46:42.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:46:42.615 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:46:42.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:46:43.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 46, 29), 5.22, 70.34, 0.0, 27.91, 9.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:46:43.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:46:29
2025-09-29T09:46:43.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:46:43.440 [DEBUG] [Thread-152623] [transport.py] [_log()] starting thread (client mode): 0x2b91c9d0
2025-09-29T09:46:43.440 [DEBUG] [Thread-152623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:43.460 [DEBUG] [Thread-152623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:46:43.460 [INFO] [Thread-152623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] Compression: none
2025-09-29T09:46:43.463 [DEBUG] [Thread-152623] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:43.481 [DEBUG] [Thread-152623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:43.481 [DEBUG] [Thread-152623] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:43.482 [DEBUG] [Thread-152623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:46:43.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:46:43.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:43.484 [DEBUG] [Thread-152623] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:43.484 [DEBUG] [Thread-152623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:43.484 [DEBUG] [Thread-152623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:43.484 [DEBUG] [Thread-152623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:46:43.484 [DEBUG] [Thread-152623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:43.499 [INFO] [Thread-152623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:43.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:44.292 [DEBUG] [Thread-152623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:44.292 [DEBUG] [Thread-152623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:44.293 [DEBUG] [Thread-152623] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:46:44.333 [DEBUG] [Thread-152623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:44.333 [DEBUG] [Thread-152623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:44.336 [DEBUG] [Thread-152623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:44.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:44.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:46:44.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:46:44.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:46:44.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:44.360 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:46:44.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:44.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:44.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:46:44.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.323685 -999.00   +9.40  20.35     74   +5.10 1 2 1 1 1   888    0 5.47 51.27 ----- 24.6 20.4 158.8 27.1 15.1 -23.3 14.0 -21.2 12.9 -22.6 13.9 -22.9
2025-09-29T09:46:44.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:46:44.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:46:44.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.323685
2025-09-29T09:46:44.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:46:44.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:46:44.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:46:44.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:46:44.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:46:44.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:46:29', tmtdew=5.22, humidity=70.34, cloud=0.0, wind=27.91, temperature=9.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:46:06.384', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:46:44.362 [DEBUG] [Thread-152623] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:44.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:46:44.470 [DEBUG] [Thread-152626] [transport.py] [_log()] starting thread (client mode): 0x2e3dffd0
2025-09-29T09:46:44.470 [DEBUG] [Thread-152626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:44.484 [DEBUG] [Thread-152626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:46:44.485 [INFO] [Thread-152626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:44.492 [DEBUG] [Thread-152626] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:44.493 [DEBUG] [Thread-152626] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:44.493 [DEBUG] [Thread-152626] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:44.493 [DEBUG] [Thread-152626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:44.493 [DEBUG] [Thread-152626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:44.493 [DEBUG] [Thread-152626] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:44.493 [DEBUG] [Thread-152626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:44.493 [DEBUG] [Thread-152626] [transport.py] [_log()] Compression: none
2025-09-29T09:46:44.493 [DEBUG] [Thread-152626] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:44.550 [DEBUG] [Thread-152626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:44.550 [DEBUG] [Thread-152626] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:44.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:46:44.551 [DEBUG] [Thread-152626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:46:44.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:44.606 [DEBUG] [Thread-152626] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:44.607 [DEBUG] [Thread-152626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:44.607 [DEBUG] [Thread-152626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:44.607 [DEBUG] [Thread-152626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:46:44.607 [DEBUG] [Thread-152626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:44.625 [INFO] [Thread-152626] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:44.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:46:44.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:45.594 [DEBUG] [Thread-152626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:45.595 [DEBUG] [Thread-152626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:45.642 [DEBUG] [Thread-152626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:45.642 [DEBUG] [Thread-152626] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:45.651 [DEBUG] [Thread-152626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:45.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:45.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:46:45.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:46:45.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:45.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:45.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:45.687 [DEBUG] [Thread-152626] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:52.044 [DEBUG] [Thread-152628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:46:55.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:46:55.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:46:55.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:46:56.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 46, 29), 5.22, 70.34, 0.0, 27.91, 9.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:46:56.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:46:29
2025-09-29T09:46:56.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:46:56.503 [DEBUG] [Thread-152629] [transport.py] [_log()] starting thread (client mode): 0x2b91cca0
2025-09-29T09:46:56.503 [DEBUG] [Thread-152629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:56.523 [DEBUG] [Thread-152629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:46:56.523 [INFO] [Thread-152629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:46:56.526 [DEBUG] [Thread-152629] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:56.526 [DEBUG] [Thread-152629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:46:56.526 [DEBUG] [Thread-152629] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:56.526 [DEBUG] [Thread-152629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:56.527 [DEBUG] [Thread-152629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:56.528 [DEBUG] [Thread-152629] [transport.py] [_log()] Compression: none
2025-09-29T09:46:56.528 [DEBUG] [Thread-152629] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:56.543 [DEBUG] [Thread-152629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:56.544 [DEBUG] [Thread-152629] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:56.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:46:56.545 [DEBUG] [Thread-152629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:46:56.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:56.588 [DEBUG] [Thread-152629] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:56.589 [DEBUG] [Thread-152629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:56.589 [DEBUG] [Thread-152629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:56.589 [DEBUG] [Thread-152629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:46:56.589 [DEBUG] [Thread-152629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:56.603 [INFO] [Thread-152629] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:56.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:57.316 [DEBUG] [Thread-152629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:57.316 [DEBUG] [Thread-152629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:57.316 [DEBUG] [Thread-152629] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:46:57.357 [DEBUG] [Thread-152629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:57.357 [DEBUG] [Thread-152629] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:57.359 [DEBUG] [Thread-152629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:57.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:57.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:46:57.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:46:57.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:46:57.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:57.383 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:46:57.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:57.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:57.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:46:57.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.324032 -999.00   +9.40  21.33     73   +5.00 1 1 1 1 1   888    0 5.39 47.76 ----- 23.4 21.3 145.2 32.2 15.2 -22.4 13.9 -23.6 12.8 -25.3 13.9 -25.0
2025-09-29T09:46:57.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:46:57.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:46:57.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.324032
2025-09-29T09:46:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:46:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:46:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:46:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:46:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:46:57.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:46:29', tmtdew=5.22, humidity=70.34, cloud=0.0, wind=27.91, temperature=9.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:46:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:46:57.386 [DEBUG] [Thread-152629] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:46:57.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:46:57.478 [DEBUG] [Thread-152632] [transport.py] [_log()] starting thread (client mode): 0x287043a0
2025-09-29T09:46:57.478 [DEBUG] [Thread-152632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:46:57.493 [DEBUG] [Thread-152632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:46:57.493 [INFO] [Thread-152632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:46:57.501 [DEBUG] [Thread-152632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:46:57.501 [DEBUG] [Thread-152632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:46:57.501 [DEBUG] [Thread-152632] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:46:57.501 [DEBUG] [Thread-152632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:57.501 [DEBUG] [Thread-152632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:46:57.501 [DEBUG] [Thread-152632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:57.501 [DEBUG] [Thread-152632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:46:57.501 [DEBUG] [Thread-152632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:46:57.502 [DEBUG] [Thread-152632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:46:57.502 [DEBUG] [Thread-152632] [transport.py] [_log()] client lang: <none>
2025-09-29T09:46:57.502 [DEBUG] [Thread-152632] [transport.py] [_log()] server lang: <none>
2025-09-29T09:46:57.502 [DEBUG] [Thread-152632] [transport.py] [_log()] kex follows: False
2025-09-29T09:46:57.502 [DEBUG] [Thread-152632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:46:57.502 [DEBUG] [Thread-152632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:46:57.502 [DEBUG] [Thread-152632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:46:57.502 [DEBUG] [Thread-152632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:46:57.503 [DEBUG] [Thread-152632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:46:57.503 [DEBUG] [Thread-152632] [transport.py] [_log()] Compression: none
2025-09-29T09:46:57.503 [DEBUG] [Thread-152632] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:46:57.558 [DEBUG] [Thread-152632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:46:57.559 [DEBUG] [Thread-152632] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:46:57.559 [DEBUG] [Thread-152632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:46:57.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:46:57.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:46:57.614 [DEBUG] [Thread-152632] [transport.py] [_log()] userauth is OK
2025-09-29T09:46:57.615 [DEBUG] [Thread-152632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:46:57.615 [DEBUG] [Thread-152632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:46:57.615 [DEBUG] [Thread-152632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:46:57.615 [DEBUG] [Thread-152632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:46:57.635 [INFO] [Thread-152632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:46:57.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:46:57.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:46:58.629 [DEBUG] [Thread-152632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:46:58.629 [DEBUG] [Thread-152632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:46:58.677 [DEBUG] [Thread-152632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:46:58.677 [DEBUG] [Thread-152632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:46:58.686 [DEBUG] [Thread-152632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:46:58.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:46:58.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:46:58.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:46:58.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:46:58.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:46:58.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:46:58.721 [DEBUG] [Thread-152632] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:07.089 [DEBUG] [Thread-152634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:47:08.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:47:08.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:47:08.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:47:09.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 47, 1), 5.38, 69.29, 0.0, 27.86, 10.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:47:09.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:47:01
2025-09-29T09:47:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:47:09.573 [DEBUG] [Thread-152635] [transport.py] [_log()] starting thread (client mode): 0x2b9b8cd0
2025-09-29T09:47:09.574 [DEBUG] [Thread-152635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:47:09.596 [DEBUG] [Thread-152635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:47:09.597 [INFO] [Thread-152635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:47:09.600 [DEBUG] [Thread-152635] [transport.py] [_log()] client lang: <none>
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] server lang: <none>
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] kex follows: False
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] Compression: none
2025-09-29T09:47:09.601 [DEBUG] [Thread-152635] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:47:09.616 [DEBUG] [Thread-152635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:47:09.616 [DEBUG] [Thread-152635] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:47:09.616 [DEBUG] [Thread-152635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:47:09.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:47:09.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:47:09.617 [DEBUG] [Thread-152635] [transport.py] [_log()] userauth is OK
2025-09-29T09:47:09.617 [DEBUG] [Thread-152635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:47:09.617 [DEBUG] [Thread-152635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:47:09.617 [DEBUG] [Thread-152635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:47:09.617 [DEBUG] [Thread-152635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:47:09.626 [INFO] [Thread-152635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:47:09.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:47:10.217 [DEBUG] [Thread-152635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:47:10.217 [DEBUG] [Thread-152635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:47:10.217 [DEBUG] [Thread-152635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:47:10.258 [DEBUG] [Thread-152635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:47:10.258 [DEBUG] [Thread-152635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:47:10.260 [DEBUG] [Thread-152635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:47:10.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:47:10.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:47:10.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:47:10.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:47:10.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:47:10.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:47:10.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:47:10.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.324032 -999.00   +9.40  21.33     73   +5.00 1 1 1 1 1   888    0 5.39 47.76 ----- 23.4 21.3 145.2 32.2 15.2 -22.4 13.9 -23.6 12.8 -25.3 13.9 -25.0
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.324032
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:47:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:47:01', tmtdew=5.38, humidity=69.29, cloud=0.0, wind=27.86, temperature=10.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:46:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:47:10.278 [DEBUG] [Thread-152635] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:10.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:47:10.364 [DEBUG] [Thread-152638] [transport.py] [_log()] starting thread (client mode): 0x2e3de830
2025-09-29T09:47:10.364 [DEBUG] [Thread-152638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:47:10.379 [DEBUG] [Thread-152638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:47:10.379 [INFO] [Thread-152638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:47:10.386 [DEBUG] [Thread-152638] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] client lang: <none>
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] server lang: <none>
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] kex follows: False
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] Compression: none
2025-09-29T09:47:10.387 [DEBUG] [Thread-152638] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:47:10.449 [DEBUG] [Thread-152638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:47:10.449 [DEBUG] [Thread-152638] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:47:10.450 [DEBUG] [Thread-152638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:47:10.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:47:10.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:47:10.507 [DEBUG] [Thread-152638] [transport.py] [_log()] userauth is OK
2025-09-29T09:47:10.507 [DEBUG] [Thread-152638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:47:10.507 [DEBUG] [Thread-152638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:47:10.507 [DEBUG] [Thread-152638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:47:10.507 [DEBUG] [Thread-152638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:47:10.521 [INFO] [Thread-152638] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:47:10.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:47:10.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:47:11.489 [DEBUG] [Thread-152638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:47:11.489 [DEBUG] [Thread-152638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:47:11.537 [DEBUG] [Thread-152638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:47:11.537 [DEBUG] [Thread-152638] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:47:11.545 [DEBUG] [Thread-152638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:47:11.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:47:11.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:47:11.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:47:11.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:47:11.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:47:11.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:47:11.577 [DEBUG] [Thread-152638] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:21.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:47:21.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:47:21.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:47:22.135 [DEBUG] [Thread-152640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:47:22.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 47, 1), 5.38, 69.29, 0.0, 27.86, 10.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:47:22.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:47:01
2025-09-29T09:47:22.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:47:22.407 [DEBUG] [Thread-152641] [transport.py] [_log()] starting thread (client mode): 0x2e34bee0
2025-09-29T09:47:22.407 [DEBUG] [Thread-152641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:47:22.427 [DEBUG] [Thread-152641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:47:22.427 [INFO] [Thread-152641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:47:22.430 [DEBUG] [Thread-152641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:47:22.430 [DEBUG] [Thread-152641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:47:22.430 [DEBUG] [Thread-152641] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] client lang: <none>
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] server lang: <none>
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] kex follows: False
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:47:22.431 [DEBUG] [Thread-152641] [transport.py] [_log()] Compression: none
2025-09-29T09:47:22.432 [DEBUG] [Thread-152641] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:47:22.450 [DEBUG] [Thread-152641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:47:22.451 [DEBUG] [Thread-152641] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:47:22.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:47:22.452 [DEBUG] [Thread-152641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:47:22.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:47:22.455 [DEBUG] [Thread-152641] [transport.py] [_log()] userauth is OK
2025-09-29T09:47:22.455 [DEBUG] [Thread-152641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:47:22.455 [DEBUG] [Thread-152641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:47:22.455 [DEBUG] [Thread-152641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:47:22.455 [DEBUG] [Thread-152641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:47:22.472 [INFO] [Thread-152641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:47:22.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:47:23.240 [DEBUG] [Thread-152641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:47:23.240 [DEBUG] [Thread-152641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:47:23.241 [DEBUG] [Thread-152641] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:47:23.281 [DEBUG] [Thread-152641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:47:23.281 [DEBUG] [Thread-152641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:47:23.284 [DEBUG] [Thread-152641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:47:23.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:47:23.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:47:23.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:47:23.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:47:23.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:47:23.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:47:23.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:47:23.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:47:23.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:47:23.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.324032 -999.00   +9.40  21.33     73   +5.00 1 1 1 1 1   888    0 5.39 47.76 ----- 23.4 21.3 145.2 32.2 15.2 -22.4 13.9 -23.6 12.8 -25.3 13.9 -25.0
2025-09-29T09:47:23.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:47:23.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:47:23.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.324032
2025-09-29T09:47:23.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:47:23.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:47:23.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:47:23.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:47:23.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:47:23.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:47:01', tmtdew=5.38, humidity=69.29, cloud=0.0, wind=27.86, temperature=10.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:46:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:47:23.310 [DEBUG] [Thread-152641] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:23.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:47:23.416 [DEBUG] [Thread-152644] [transport.py] [_log()] starting thread (client mode): 0x2e349030
2025-09-29T09:47:23.416 [DEBUG] [Thread-152644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:47:23.430 [DEBUG] [Thread-152644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:47:23.431 [INFO] [Thread-152644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:47:23.438 [DEBUG] [Thread-152644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:47:23.438 [DEBUG] [Thread-152644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] client lang: <none>
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] server lang: <none>
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] kex follows: False
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] Compression: none
2025-09-29T09:47:23.439 [DEBUG] [Thread-152644] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:47:23.499 [DEBUG] [Thread-152644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:47:23.499 [DEBUG] [Thread-152644] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:47:23.500 [DEBUG] [Thread-152644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:47:23.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:47:23.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:47:23.554 [DEBUG] [Thread-152644] [transport.py] [_log()] userauth is OK
2025-09-29T09:47:23.554 [DEBUG] [Thread-152644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:47:23.555 [DEBUG] [Thread-152644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:47:23.555 [DEBUG] [Thread-152644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:47:23.555 [DEBUG] [Thread-152644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:47:23.575 [INFO] [Thread-152644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:47:23.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:47:23.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:47:24.283 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:47:24.285 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:47:24.584 [DEBUG] [Thread-152644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:47:24.585 [DEBUG] [Thread-152644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:47:24.632 [DEBUG] [Thread-152644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:47:24.632 [DEBUG] [Thread-152644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:47:24.641 [DEBUG] [Thread-152644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:47:24.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:47:24.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:47:24.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:47:24.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:47:24.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:47:24.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:47:24.676 [DEBUG] [Thread-152644] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:30.750 [DEBUG] [Thread-152646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:47:34.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:47:34.677 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:47:34.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:47:35.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 47, 1), 5.38, 69.29, 0.0, 27.86, 10.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:47:35.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:47:01
2025-09-29T09:47:35.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:47:35.535 [DEBUG] [Thread-152647] [transport.py] [_log()] starting thread (client mode): 0x2b91ca00
2025-09-29T09:47:35.535 [DEBUG] [Thread-152647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:47:35.554 [DEBUG] [Thread-152647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:47:35.554 [INFO] [Thread-152647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] client lang: <none>
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] server lang: <none>
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] kex follows: False
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:47:35.557 [DEBUG] [Thread-152647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:47:35.558 [DEBUG] [Thread-152647] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:47:35.558 [DEBUG] [Thread-152647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:47:35.558 [DEBUG] [Thread-152647] [transport.py] [_log()] Compression: none
2025-09-29T09:47:35.558 [DEBUG] [Thread-152647] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:47:35.575 [DEBUG] [Thread-152647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:47:35.576 [DEBUG] [Thread-152647] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:47:35.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:47:35.577 [DEBUG] [Thread-152647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:47:35.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:47:35.579 [DEBUG] [Thread-152647] [transport.py] [_log()] userauth is OK
2025-09-29T09:47:35.579 [DEBUG] [Thread-152647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:47:35.579 [DEBUG] [Thread-152647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:47:35.579 [DEBUG] [Thread-152647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:47:35.579 [DEBUG] [Thread-152647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:47:35.597 [INFO] [Thread-152647] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:47:35.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:47:36.248 [DEBUG] [Thread-152647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:47:36.248 [DEBUG] [Thread-152647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:47:36.248 [DEBUG] [Thread-152647] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:47:36.289 [DEBUG] [Thread-152647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:47:36.289 [DEBUG] [Thread-152647] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:47:36.291 [DEBUG] [Thread-152647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:47:36.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:47:36.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:47:36.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:47:36.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:47:36.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:47:36.306 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:47:36.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.324380 -999.00   +9.30  14.65     74   +4.90 1 2 1 1 1   888    0 5.27 43.36 ----- 23.2 14.7 159.2 28.6 14.8 -26.7 13.7 -21.8 12.6 -23.6 13.6 -26.9
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.324380
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:47:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:47:01', tmtdew=5.38, humidity=69.29, cloud=0.0, wind=27.86, temperature=10.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:47:06.432', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:47:36.307 [DEBUG] [Thread-152647] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:36.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:47:36.392 [DEBUG] [Thread-152650] [transport.py] [_log()] starting thread (client mode): 0x2b91c220
2025-09-29T09:47:36.392 [DEBUG] [Thread-152650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:47:36.407 [DEBUG] [Thread-152650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:47:36.407 [INFO] [Thread-152650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] client lang: <none>
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] server lang: <none>
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] kex follows: False
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:47:36.415 [DEBUG] [Thread-152650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:47:36.416 [DEBUG] [Thread-152650] [transport.py] [_log()] Compression: none
2025-09-29T09:47:36.416 [DEBUG] [Thread-152650] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:47:36.474 [DEBUG] [Thread-152650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:47:36.474 [DEBUG] [Thread-152650] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:47:36.475 [DEBUG] [Thread-152650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:47:36.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:47:36.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:47:36.533 [DEBUG] [Thread-152650] [transport.py] [_log()] userauth is OK
2025-09-29T09:47:36.533 [DEBUG] [Thread-152650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:47:36.533 [DEBUG] [Thread-152650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:47:36.533 [DEBUG] [Thread-152650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:47:36.534 [DEBUG] [Thread-152650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:47:36.555 [INFO] [Thread-152650] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:47:36.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:47:36.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:47:37.174 [DEBUG] [Thread-152652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:47:37.537 [DEBUG] [Thread-152650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:47:37.537 [DEBUG] [Thread-152650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:47:37.585 [DEBUG] [Thread-152650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:47:37.585 [DEBUG] [Thread-152650] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:47:37.594 [DEBUG] [Thread-152650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:47:37.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:47:37.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:47:37.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:47:37.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:47:37.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:47:37.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:47:37.628 [DEBUG] [Thread-152650] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:47.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:47:47.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:47:47.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:47:48.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 47, 33), 5.41, 69.13, 0.0, 25.97, 10.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:47:48.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:47:33
2025-09-29T09:47:48.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:47:48.492 [DEBUG] [Thread-152653] [transport.py] [_log()] starting thread (client mode): 0x2b91eec0
2025-09-29T09:47:48.492 [DEBUG] [Thread-152653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:47:48.511 [DEBUG] [Thread-152653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:47:48.511 [INFO] [Thread-152653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:47:48.514 [DEBUG] [Thread-152653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:47:48.514 [DEBUG] [Thread-152653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:47:48.514 [DEBUG] [Thread-152653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:47:48.514 [DEBUG] [Thread-152653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] client lang: <none>
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] server lang: <none>
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] kex follows: False
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] Compression: none
2025-09-29T09:47:48.515 [DEBUG] [Thread-152653] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:47:48.533 [DEBUG] [Thread-152653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:47:48.533 [DEBUG] [Thread-152653] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:47:48.533 [DEBUG] [Thread-152653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:47:48.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:47:48.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:47:48.534 [DEBUG] [Thread-152653] [transport.py] [_log()] userauth is OK
2025-09-29T09:47:48.535 [DEBUG] [Thread-152653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:47:48.535 [DEBUG] [Thread-152653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:47:48.535 [DEBUG] [Thread-152653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:47:48.535 [DEBUG] [Thread-152653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:47:48.546 [INFO] [Thread-152653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:47:48.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:47:49.328 [DEBUG] [Thread-152653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:47:49.328 [DEBUG] [Thread-152653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:47:49.328 [DEBUG] [Thread-152653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:47:49.369 [DEBUG] [Thread-152653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:47:49.369 [DEBUG] [Thread-152653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:47:49.371 [DEBUG] [Thread-152653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:47:49.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:47:49.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:47:49.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:47:49.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:47:49.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:47:49.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:47:49.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:47:49.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:47:49.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:47:49.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.324380 -999.00   +9.30  14.65     74   +4.90 1 2 1 1 1   888    0 5.27 43.36 ----- 23.2 14.7 159.2 28.6 14.8 -26.7 13.7 -21.8 12.6 -23.6 13.6 -26.9
2025-09-29T09:47:49.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:47:49.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:47:49.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.324380
2025-09-29T09:47:49.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:47:49.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:47:49.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:47:49.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:47:49.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:47:49.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:47:33', tmtdew=5.41, humidity=69.13, cloud=0.0, wind=25.97, temperature=10.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:47:06.432', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:47:49.390 [DEBUG] [Thread-152653] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:49.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:47:49.475 [DEBUG] [Thread-152656] [transport.py] [_log()] starting thread (client mode): 0x2e3c2b00
2025-09-29T09:47:49.475 [DEBUG] [Thread-152656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:47:49.489 [DEBUG] [Thread-152656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:47:49.489 [INFO] [Thread-152656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] client lang: <none>
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] server lang: <none>
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] kex follows: False
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] Compression: none
2025-09-29T09:47:49.498 [DEBUG] [Thread-152656] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:47:49.557 [DEBUG] [Thread-152656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:47:49.558 [DEBUG] [Thread-152656] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:47:49.558 [DEBUG] [Thread-152656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:47:49.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:47:49.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:47:49.615 [DEBUG] [Thread-152656] [transport.py] [_log()] userauth is OK
2025-09-29T09:47:49.615 [DEBUG] [Thread-152656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:47:49.615 [DEBUG] [Thread-152656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:47:49.615 [DEBUG] [Thread-152656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:47:49.615 [DEBUG] [Thread-152656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:47:49.629 [INFO] [Thread-152656] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:47:49.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:47:49.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:47:50.628 [DEBUG] [Thread-152656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:47:50.628 [DEBUG] [Thread-152656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:47:50.676 [DEBUG] [Thread-152656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:47:50.676 [DEBUG] [Thread-152656] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:47:50.685 [DEBUG] [Thread-152656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:47:50.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:47:50.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:47:50.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:47:50.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:47:50.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:47:50.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:47:50.717 [DEBUG] [Thread-152656] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:47:52.217 [DEBUG] [Thread-152658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:48:00.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:48:00.720 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:48:00.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:48:01.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 47, 33), 5.41, 69.13, 0.0, 25.97, 10.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:48:01.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:47:33
2025-09-29T09:48:01.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:48:01.577 [DEBUG] [Thread-152659] [transport.py] [_log()] starting thread (client mode): 0x2e3c11e0
2025-09-29T09:48:01.577 [DEBUG] [Thread-152659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:48:01.597 [DEBUG] [Thread-152659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:48:01.597 [INFO] [Thread-152659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:48:01.600 [DEBUG] [Thread-152659] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:48:01.600 [DEBUG] [Thread-152659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:48:01.600 [DEBUG] [Thread-152659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:48:01.600 [DEBUG] [Thread-152659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:48:01.600 [DEBUG] [Thread-152659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:48:01.600 [DEBUG] [Thread-152659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:48:01.600 [DEBUG] [Thread-152659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] client lang: <none>
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] server lang: <none>
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] kex follows: False
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] Compression: none
2025-09-29T09:48:01.601 [DEBUG] [Thread-152659] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:48:01.617 [DEBUG] [Thread-152659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:48:01.617 [DEBUG] [Thread-152659] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:48:01.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:48:01.618 [DEBUG] [Thread-152659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:48:01.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:48:01.618 [DEBUG] [Thread-152659] [transport.py] [_log()] userauth is OK
2025-09-29T09:48:01.618 [DEBUG] [Thread-152659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:48:01.618 [DEBUG] [Thread-152659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:48:01.619 [DEBUG] [Thread-152659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:48:01.619 [DEBUG] [Thread-152659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:48:01.646 [INFO] [Thread-152659] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:48:01.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:48:02.459 [DEBUG] [Thread-152659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:48:02.459 [DEBUG] [Thread-152659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:48:02.460 [DEBUG] [Thread-152659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:48:02.500 [DEBUG] [Thread-152659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:48:02.500 [DEBUG] [Thread-152659] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:48:02.503 [DEBUG] [Thread-152659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:48:02.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:48:02.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:48:02.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:48:02.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:48:02.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:48:02.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:48:02.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:48:02.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:48:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:48:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.324380 -999.00   +9.30  14.65     74   +4.90 1 2 1 1 1   888    0 5.27 43.36 ----- 23.2 14.7 159.2 28.6 14.8 -26.7 13.7 -21.8 12.6 -23.6 13.6 -26.9
2025-09-29T09:48:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:48:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:48:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.324380
2025-09-29T09:48:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:48:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:48:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:48:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:48:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:48:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:47:33', tmtdew=5.41, humidity=69.13, cloud=0.0, wind=25.97, temperature=10.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:47:06.432', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:48:02.527 [DEBUG] [Thread-152659] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:48:02.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:48:02.622 [DEBUG] [Thread-152662] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e60
2025-09-29T09:48:02.622 [DEBUG] [Thread-152662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:48:02.637 [DEBUG] [Thread-152662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:48:02.637 [INFO] [Thread-152662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:48:02.644 [DEBUG] [Thread-152662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] client lang: <none>
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] server lang: <none>
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] kex follows: False
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] Compression: none
2025-09-29T09:48:02.645 [DEBUG] [Thread-152662] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:48:02.704 [DEBUG] [Thread-152662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:48:02.704 [DEBUG] [Thread-152662] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:48:02.704 [DEBUG] [Thread-152662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:48:02.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:48:02.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:48:02.763 [DEBUG] [Thread-152662] [transport.py] [_log()] userauth is OK
2025-09-29T09:48:02.763 [DEBUG] [Thread-152662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:48:02.763 [DEBUG] [Thread-152662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:48:02.763 [DEBUG] [Thread-152662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:48:02.763 [DEBUG] [Thread-152662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:48:02.782 [INFO] [Thread-152662] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:48:02.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:48:02.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:48:03.795 [DEBUG] [Thread-152662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:48:03.796 [DEBUG] [Thread-152662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:48:03.843 [DEBUG] [Thread-152662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:48:03.843 [DEBUG] [Thread-152662] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:48:03.852 [DEBUG] [Thread-152662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:48:03.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:48:03.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:48:03.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:48:03.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:48:03.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:48:03.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:48:03.884 [DEBUG] [Thread-152662] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:48:07.264 [DEBUG] [Thread-152664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:48:13.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:48:13.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:48:13.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:48:14.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 48, 5), 5.39, 69.23, 0.0, 26.2, 10.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:48:14.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:48:05
2025-09-29T09:48:14.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:48:14.725 [DEBUG] [Thread-152665] [transport.py] [_log()] starting thread (client mode): 0x2e3c0be0
2025-09-29T09:48:14.725 [DEBUG] [Thread-152665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:48:14.746 [DEBUG] [Thread-152665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:48:14.746 [INFO] [Thread-152665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] client lang: <none>
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] server lang: <none>
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] kex follows: False
2025-09-29T09:48:14.748 [DEBUG] [Thread-152665] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:48:14.749 [DEBUG] [Thread-152665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:48:14.749 [DEBUG] [Thread-152665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:48:14.749 [DEBUG] [Thread-152665] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:48:14.749 [DEBUG] [Thread-152665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:48:14.749 [DEBUG] [Thread-152665] [transport.py] [_log()] Compression: none
2025-09-29T09:48:14.749 [DEBUG] [Thread-152665] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:48:14.767 [DEBUG] [Thread-152665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:48:14.768 [DEBUG] [Thread-152665] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:48:14.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:48:14.769 [DEBUG] [Thread-152665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:48:14.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:48:14.771 [DEBUG] [Thread-152665] [transport.py] [_log()] userauth is OK
2025-09-29T09:48:14.771 [DEBUG] [Thread-152665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:48:14.772 [DEBUG] [Thread-152665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:48:14.772 [DEBUG] [Thread-152665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:48:14.772 [DEBUG] [Thread-152665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:48:14.788 [INFO] [Thread-152665] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:48:14.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:48:15.379 [DEBUG] [Thread-152665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:48:15.379 [DEBUG] [Thread-152665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:48:15.379 [DEBUG] [Thread-152665] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:48:15.420 [DEBUG] [Thread-152665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:48:15.421 [DEBUG] [Thread-152665] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:48:15.423 [DEBUG] [Thread-152665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:48:15.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:48:15.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:48:15.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:48:15.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:48:15.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:48:15.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:48:15.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:48:15.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:48:15.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:48:15.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.324727 -999.00   +9.50  20.58     73   +5.00 1 2 1 1 1   888    0 5.21 41.29 ----- 17.5 20.6 155.4 30.5 15.0 -20.1 14.0 -17.8 13.0 -20.1 13.9 -20.7
2025-09-29T09:48:15.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:48:15.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:48:15.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.324727
2025-09-29T09:48:15.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:48:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:48:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:48:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:48:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:48:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:48:05', tmtdew=5.39, humidity=69.23, cloud=0.0, wind=26.2, temperature=10.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:47:36.413', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:48:15.449 [DEBUG] [Thread-152665] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:48:15.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:48:22.300 [DEBUG] [Thread-152668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:48:24.425 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:48:24.426 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:48:30.810 [DEBUG] [Thread-152669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:48:37.351 [DEBUG] [Thread-152670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:48:52.379 [DEBUG] [Thread-152671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:49:07.404 [DEBUG] [Thread-152672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:49:22.432 [DEBUG] [Thread-152673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:49:24.568 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:49:24.569 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:49:30.862 [DEBUG] [Thread-152674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:49:37.461 [DEBUG] [Thread-152675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:49:52.487 [DEBUG] [Thread-152676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:50:07.513 [DEBUG] [Thread-152677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:50:22.546 [DEBUG] [Thread-152678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:50:24.715 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:50:24.717 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:50:28.795 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T09:50:30.911 [DEBUG] [Thread-152679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:50:37.573 [DEBUG] [Thread-152680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:50:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:50:38.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:50:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:50:39.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 50, 13), 5.98, 66.3, 0.0, 28.48, 9.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:50:39.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:50:13
2025-09-29T09:50:39.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:50:39.656 [DEBUG] [Thread-152681] [transport.py] [_log()] starting thread (client mode): 0x2e3c0880
2025-09-29T09:50:39.656 [DEBUG] [Thread-152681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:50:39.676 [DEBUG] [Thread-152681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:50:39.676 [INFO] [Thread-152681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:50:39.677 [DEBUG] [Thread-152681] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:50:39.677 [DEBUG] [Thread-152681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] client lang: <none>
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] server lang: <none>
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] kex follows: False
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] Compression: none
2025-09-29T09:50:39.678 [DEBUG] [Thread-152681] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:50:39.686 [DEBUG] [Thread-152681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:50:39.687 [DEBUG] [Thread-152681] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:50:39.687 [DEBUG] [Thread-152681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:50:39.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:50:39.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:50:39.689 [DEBUG] [Thread-152681] [transport.py] [_log()] userauth is OK
2025-09-29T09:50:39.689 [DEBUG] [Thread-152681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:50:39.690 [DEBUG] [Thread-152681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:50:39.690 [DEBUG] [Thread-152681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:50:39.690 [DEBUG] [Thread-152681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:50:39.709 [INFO] [Thread-152681] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:50:39.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:50:40.322 [DEBUG] [Thread-152681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:50:40.323 [DEBUG] [Thread-152681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:50:40.323 [DEBUG] [Thread-152681] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:50:40.364 [DEBUG] [Thread-152681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:50:40.364 [DEBUG] [Thread-152681] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:50:40.367 [DEBUG] [Thread-152681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:50:40.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:50:40.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:50:40.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:50:40.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:50:40.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:50:40.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:50:40.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:50:40.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:50:40.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:50:40.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.326463 -999.00  +10.00  29.09     70   +5.00 1 2 1 1 1   888    0 5.41 43.14 ----- 22.3 29.1 164.0 39.1 15.9 -23.3 14.5 -23.1 13.3 -22.1 14.5 -24.0
2025-09-29T09:50:40.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:50:40.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:50:40.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.326463
2025-09-29T09:50:40.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:50:40.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:50:40.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:50:40.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:50:40.392 [DEBUG] [Thread-152681] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:50:40.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:50:40.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:50:13', tmtdew=5.98, humidity=66.3, cloud=0.0, wind=28.48, temperature=9.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:50:06.403', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:50:40.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:50:40.483 [DEBUG] [Thread-152684] [transport.py] [_log()] starting thread (client mode): 0x2e3c1270
2025-09-29T09:50:40.484 [DEBUG] [Thread-152684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:50:40.498 [DEBUG] [Thread-152684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:50:40.498 [INFO] [Thread-152684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:50:40.505 [DEBUG] [Thread-152684] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] client lang: <none>
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] server lang: <none>
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] kex follows: False
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:50:40.506 [DEBUG] [Thread-152684] [transport.py] [_log()] Compression: none
2025-09-29T09:50:40.507 [DEBUG] [Thread-152684] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:50:40.565 [DEBUG] [Thread-152684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:50:40.565 [DEBUG] [Thread-152684] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:50:40.566 [DEBUG] [Thread-152684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:50:40.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:50:40.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:50:40.625 [DEBUG] [Thread-152684] [transport.py] [_log()] userauth is OK
2025-09-29T09:50:40.625 [DEBUG] [Thread-152684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:50:40.625 [DEBUG] [Thread-152684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:50:40.625 [DEBUG] [Thread-152684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:50:40.625 [DEBUG] [Thread-152684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:50:40.644 [INFO] [Thread-152684] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:50:40.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:50:40.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:50:41.635 [DEBUG] [Thread-152684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:50:41.635 [DEBUG] [Thread-152684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:50:41.684 [DEBUG] [Thread-152684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:50:41.684 [DEBUG] [Thread-152684] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:50:41.693 [DEBUG] [Thread-152684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:50:41.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:50:41.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:50:41.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:50:41.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:50:41.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:50:41.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:50:41.727 [DEBUG] [Thread-152684] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:50:51.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:50:51.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:50:51.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:50:52.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 50, 45), 6.16, 65.36, 0.0, 33.19, 10.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:50:52.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:50:45
2025-09-29T09:50:52.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:50:52.594 [DEBUG] [Thread-152686] [transport.py] [_log()] starting thread (client mode): 0x2b9a4820
2025-09-29T09:50:52.594 [DEBUG] [Thread-152686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:50:52.601 [DEBUG] [Thread-152687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:50:52.614 [DEBUG] [Thread-152686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:50:52.614 [INFO] [Thread-152686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:50:52.617 [DEBUG] [Thread-152686] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:50:52.617 [DEBUG] [Thread-152686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:50:52.617 [DEBUG] [Thread-152686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:50:52.617 [DEBUG] [Thread-152686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] client lang: <none>
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] server lang: <none>
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] kex follows: False
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] Compression: none
2025-09-29T09:50:52.618 [DEBUG] [Thread-152686] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:50:52.636 [DEBUG] [Thread-152686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:50:52.636 [DEBUG] [Thread-152686] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:50:52.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:50:52.637 [DEBUG] [Thread-152686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:50:52.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:50:52.639 [DEBUG] [Thread-152686] [transport.py] [_log()] userauth is OK
2025-09-29T09:50:52.639 [DEBUG] [Thread-152686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:50:52.639 [DEBUG] [Thread-152686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:50:52.639 [DEBUG] [Thread-152686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:50:52.639 [DEBUG] [Thread-152686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:50:52.664 [INFO] [Thread-152686] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:50:52.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:50:53.324 [DEBUG] [Thread-152686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:50:53.325 [DEBUG] [Thread-152686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:50:53.325 [DEBUG] [Thread-152686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:50:53.365 [DEBUG] [Thread-152686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:50:53.366 [DEBUG] [Thread-152686] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:50:53.369 [DEBUG] [Thread-152686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:50:53.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:50:53.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:50:53.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:50:53.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:50:53.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:50:53.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:50:53.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:50:53.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:50:53.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:50:53.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.326463 -999.00  +10.00  29.09     70   +5.00 1 2 1 1 1   888    0 5.41 43.14 ----- 22.3 29.1 164.0 39.1 15.9 -23.3 14.5 -23.1 13.3 -22.1 14.5 -24.0
2025-09-29T09:50:53.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:50:53.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:50:53.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.326463
2025-09-29T09:50:53.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:50:53.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:50:53.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:50:53.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:50:53.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:50:53.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:50:45', tmtdew=6.16, humidity=65.36, cloud=0.0, wind=33.19, temperature=10.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:50:06.403', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:50:53.396 [DEBUG] [Thread-152686] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:50:53.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:50:53.491 [DEBUG] [Thread-152690] [transport.py] [_log()] starting thread (client mode): 0x2b91fee0
2025-09-29T09:50:53.491 [DEBUG] [Thread-152690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:50:53.505 [DEBUG] [Thread-152690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:50:53.506 [INFO] [Thread-152690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] client lang: <none>
2025-09-29T09:50:53.513 [DEBUG] [Thread-152690] [transport.py] [_log()] server lang: <none>
2025-09-29T09:50:53.514 [DEBUG] [Thread-152690] [transport.py] [_log()] kex follows: False
2025-09-29T09:50:53.514 [DEBUG] [Thread-152690] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:50:53.514 [DEBUG] [Thread-152690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:50:53.514 [DEBUG] [Thread-152690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:50:53.514 [DEBUG] [Thread-152690] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:50:53.514 [DEBUG] [Thread-152690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:50:53.514 [DEBUG] [Thread-152690] [transport.py] [_log()] Compression: none
2025-09-29T09:50:53.514 [DEBUG] [Thread-152690] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:50:53.568 [DEBUG] [Thread-152690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:50:53.568 [DEBUG] [Thread-152690] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:50:53.568 [DEBUG] [Thread-152690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:50:53.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:50:53.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:50:53.625 [DEBUG] [Thread-152690] [transport.py] [_log()] userauth is OK
2025-09-29T09:50:53.625 [DEBUG] [Thread-152690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:50:53.625 [DEBUG] [Thread-152690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:50:53.625 [DEBUG] [Thread-152690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:50:53.625 [DEBUG] [Thread-152690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:50:53.640 [INFO] [Thread-152690] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:50:53.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:50:53.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:50:54.580 [DEBUG] [Thread-152690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:50:54.580 [DEBUG] [Thread-152690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:50:54.629 [DEBUG] [Thread-152690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:50:54.629 [DEBUG] [Thread-152690] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:50:54.638 [DEBUG] [Thread-152690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:50:54.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:50:54.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:50:54.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:50:54.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:50:54.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:50:54.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:50:54.673 [DEBUG] [Thread-152690] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:04.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:51:04.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:51:04.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:51:05.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 50, 45), 6.16, 65.36, 0.0, 33.19, 10.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:51:05.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:50:45
2025-09-29T09:51:05.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:51:05.529 [DEBUG] [Thread-152692] [transport.py] [_log()] starting thread (client mode): 0x2b91d090
2025-09-29T09:51:05.530 [DEBUG] [Thread-152692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:05.550 [DEBUG] [Thread-152692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:51:05.550 [INFO] [Thread-152692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:51:05.553 [DEBUG] [Thread-152692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:05.553 [DEBUG] [Thread-152692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:51:05.553 [DEBUG] [Thread-152692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:05.553 [DEBUG] [Thread-152692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:05.553 [DEBUG] [Thread-152692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:05.553 [DEBUG] [Thread-152692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] Compression: none
2025-09-29T09:51:05.554 [DEBUG] [Thread-152692] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:05.571 [DEBUG] [Thread-152692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:05.571 [DEBUG] [Thread-152692] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:05.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:51:05.572 [DEBUG] [Thread-152692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:51:05.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:05.574 [DEBUG] [Thread-152692] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:05.574 [DEBUG] [Thread-152692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:05.575 [DEBUG] [Thread-152692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:05.575 [DEBUG] [Thread-152692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:51:05.575 [DEBUG] [Thread-152692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:05.598 [INFO] [Thread-152692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:05.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:06.242 [DEBUG] [Thread-152692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:06.243 [DEBUG] [Thread-152692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:06.243 [DEBUG] [Thread-152692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:51:06.283 [DEBUG] [Thread-152692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:06.284 [DEBUG] [Thread-152692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:06.286 [DEBUG] [Thread-152692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:06.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:06.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:51:06.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:51:06.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:51:06.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:06.311 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:51:06.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:06.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:06.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:51:06.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.326810 -999.00   +9.90  24.25     70   +4.90 1 2 1 1 1   888    0 5.41 41.23 ----- 20.6 24.2 152.2 32.8 15.8 -24.2 14.7 -20.8 13.5 -21.4 14.6 -22.3
2025-09-29T09:51:06.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:51:06.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:51:06.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.326810
2025-09-29T09:51:06.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:51:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:51:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:51:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:51:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:51:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:50:45', tmtdew=6.16, humidity=65.36, cloud=0.0, wind=33.19, temperature=10.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:50:36.384', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:51:06.313 [DEBUG] [Thread-152692] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:06.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:51:06.409 [DEBUG] [Thread-152695] [transport.py] [_log()] starting thread (client mode): 0x2b91d3f0
2025-09-29T09:51:06.410 [DEBUG] [Thread-152695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:06.425 [DEBUG] [Thread-152695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:51:06.425 [INFO] [Thread-152695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:51:06.433 [DEBUG] [Thread-152695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:06.433 [DEBUG] [Thread-152695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:51:06.433 [DEBUG] [Thread-152695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:06.433 [DEBUG] [Thread-152695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] Compression: none
2025-09-29T09:51:06.434 [DEBUG] [Thread-152695] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:06.490 [DEBUG] [Thread-152695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:06.491 [DEBUG] [Thread-152695] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:06.491 [DEBUG] [Thread-152695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:51:06.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:51:06.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:06.550 [DEBUG] [Thread-152695] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:06.550 [DEBUG] [Thread-152695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:06.550 [DEBUG] [Thread-152695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:06.550 [DEBUG] [Thread-152695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:51:06.550 [DEBUG] [Thread-152695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:06.570 [INFO] [Thread-152695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:06.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:51:06.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:07.554 [DEBUG] [Thread-152695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:07.555 [DEBUG] [Thread-152695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:07.602 [DEBUG] [Thread-152695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:07.602 [DEBUG] [Thread-152695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:07.615 [DEBUG] [Thread-152695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:07.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:07.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:51:07.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:51:07.637 [DEBUG] [Thread-152697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:51:07.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:07.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:07.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:07.653 [DEBUG] [Thread-152695] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:17.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:51:17.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:51:17.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:51:18.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 50, 45), 6.16, 65.36, 0.0, 33.19, 10.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:51:18.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:50:45
2025-09-29T09:51:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:51:18.564 [DEBUG] [Thread-152698] [transport.py] [_log()] starting thread (client mode): 0x2e3c0910
2025-09-29T09:51:18.564 [DEBUG] [Thread-152698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:18.584 [DEBUG] [Thread-152698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:51:18.584 [INFO] [Thread-152698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] Compression: none
2025-09-29T09:51:18.588 [DEBUG] [Thread-152698] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:18.605 [DEBUG] [Thread-152698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:18.605 [DEBUG] [Thread-152698] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:18.605 [DEBUG] [Thread-152698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:51:18.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:51:18.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:18.606 [DEBUG] [Thread-152698] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:18.606 [DEBUG] [Thread-152698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:18.606 [DEBUG] [Thread-152698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:18.606 [DEBUG] [Thread-152698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:51:18.606 [DEBUG] [Thread-152698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:18.619 [INFO] [Thread-152698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:18.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:19.253 [DEBUG] [Thread-152698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:19.254 [DEBUG] [Thread-152698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:19.254 [DEBUG] [Thread-152698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:51:19.294 [DEBUG] [Thread-152698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:19.294 [DEBUG] [Thread-152698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:19.297 [DEBUG] [Thread-152698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:19.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:19.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:51:19.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:51:19.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:51:19.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:19.318 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:51:19.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:19.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:19.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:51:19.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.326810 -999.00   +9.90  24.25     70   +4.90 1 2 1 1 1   888    0 5.41 41.23 ----- 20.6 24.2 152.2 32.8 15.8 -24.2 14.7 -20.8 13.5 -21.4 14.6 -22.3
2025-09-29T09:51:19.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:51:19.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:51:19.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.326810
2025-09-29T09:51:19.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:51:19.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:51:19.320 [DEBUG] [Thread-152698] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:51:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:51:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:51:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:50:45', tmtdew=6.16, humidity=65.36, cloud=0.0, wind=33.19, temperature=10.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:50:36.384', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:51:19.406 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:51:19.415 [DEBUG] [Thread-152701] [transport.py] [_log()] starting thread (client mode): 0x2e3c3be0
2025-09-29T09:51:19.415 [DEBUG] [Thread-152701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:19.435 [DEBUG] [Thread-152701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:51:19.435 [INFO] [Thread-152701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:19.443 [DEBUG] [Thread-152701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:19.444 [DEBUG] [Thread-152701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:19.444 [DEBUG] [Thread-152701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:19.444 [DEBUG] [Thread-152701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:19.444 [DEBUG] [Thread-152701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:19.444 [DEBUG] [Thread-152701] [transport.py] [_log()] Compression: none
2025-09-29T09:51:19.444 [DEBUG] [Thread-152701] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:19.502 [DEBUG] [Thread-152701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:19.503 [DEBUG] [Thread-152701] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:19.503 [DEBUG] [Thread-152701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:51:19.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:51:19.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:19.559 [DEBUG] [Thread-152701] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:19.559 [DEBUG] [Thread-152701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:19.559 [DEBUG] [Thread-152701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:19.559 [DEBUG] [Thread-152701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:51:19.559 [DEBUG] [Thread-152701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:19.578 [INFO] [Thread-152701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:19.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:51:19.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:20.558 [DEBUG] [Thread-152701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:20.559 [DEBUG] [Thread-152701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:20.606 [DEBUG] [Thread-152701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:20.606 [DEBUG] [Thread-152701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:20.615 [DEBUG] [Thread-152701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:20.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:20.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:51:20.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:51:20.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:20.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:20.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:20.650 [DEBUG] [Thread-152701] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:22.683 [DEBUG] [Thread-152703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:51:24.857 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:51:24.858 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:51:30.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:51:30.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:51:30.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:51:30.958 [DEBUG] [Thread-152704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:51:31.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 51, 17), 6.13, 65.46, 0.0, 31.78, 10.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:51:31.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:51:17
2025-09-29T09:51:31.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:51:31.511 [DEBUG] [Thread-152705] [transport.py] [_log()] starting thread (client mode): 0x2b9a59f0
2025-09-29T09:51:31.511 [DEBUG] [Thread-152705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:31.530 [DEBUG] [Thread-152705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:51:31.530 [INFO] [Thread-152705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:51:31.533 [DEBUG] [Thread-152705] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:31.533 [DEBUG] [Thread-152705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:51:31.533 [DEBUG] [Thread-152705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:31.533 [DEBUG] [Thread-152705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:31.533 [DEBUG] [Thread-152705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:31.533 [DEBUG] [Thread-152705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:31.533 [DEBUG] [Thread-152705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] Compression: none
2025-09-29T09:51:31.534 [DEBUG] [Thread-152705] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:31.547 [DEBUG] [Thread-152705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:31.547 [DEBUG] [Thread-152705] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:31.547 [DEBUG] [Thread-152705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:51:31.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:51:31.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:31.548 [DEBUG] [Thread-152705] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:31.549 [DEBUG] [Thread-152705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:31.549 [DEBUG] [Thread-152705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:31.549 [DEBUG] [Thread-152705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:51:31.549 [DEBUG] [Thread-152705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:31.563 [INFO] [Thread-152705] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:31.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:32.155 [DEBUG] [Thread-152705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:32.155 [DEBUG] [Thread-152705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:32.156 [DEBUG] [Thread-152705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:51:32.196 [DEBUG] [Thread-152705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:32.196 [DEBUG] [Thread-152705] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:32.199 [DEBUG] [Thread-152705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:32.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:32.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:51:32.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:51:32.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:51:32.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:32.222 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:51:32.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:32.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:32.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:51:32.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.327157 -999.00  +10.00  29.78     70   +4.80 1 1 1 1 1   888    0 5.45 42.75 ----- 22.6 29.8 156.2 35.9 16.0 -21.7 14.4 -24.7 13.3 -23.5 14.6 -23.7
2025-09-29T09:51:32.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:51:32.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:51:32.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.327157
2025-09-29T09:51:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:51:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:51:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:51:32.224 [DEBUG] [Thread-152705] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:32.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:51:32.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:51:32.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:51:17', tmtdew=6.13, humidity=65.46, cloud=0.0, wind=31.78, temperature=10.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:51:06.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:51:32.311 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:51:32.322 [DEBUG] [Thread-152708] [transport.py] [_log()] starting thread (client mode): 0x2e3dc3a0
2025-09-29T09:51:32.322 [DEBUG] [Thread-152708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:32.337 [DEBUG] [Thread-152708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:51:32.337 [INFO] [Thread-152708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:51:32.344 [DEBUG] [Thread-152708] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:32.344 [DEBUG] [Thread-152708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:51:32.344 [DEBUG] [Thread-152708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] Compression: none
2025-09-29T09:51:32.345 [DEBUG] [Thread-152708] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:32.402 [DEBUG] [Thread-152708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:32.403 [DEBUG] [Thread-152708] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:32.403 [DEBUG] [Thread-152708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:51:32.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:51:32.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:32.460 [DEBUG] [Thread-152708] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:32.460 [DEBUG] [Thread-152708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:32.461 [DEBUG] [Thread-152708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:32.461 [DEBUG] [Thread-152708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:51:32.461 [DEBUG] [Thread-152708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:32.481 [INFO] [Thread-152708] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:32.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:51:32.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:33.487 [DEBUG] [Thread-152708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:33.488 [DEBUG] [Thread-152708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:33.535 [DEBUG] [Thread-152708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:33.536 [DEBUG] [Thread-152708] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:33.545 [DEBUG] [Thread-152708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:33.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:33.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:51:33.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:51:33.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:33.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:33.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:33.579 [DEBUG] [Thread-152708] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:37.713 [DEBUG] [Thread-152710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:51:43.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:51:43.582 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:51:43.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:51:44.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 51, 17), 6.13, 65.46, 0.0, 31.78, 10.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:51:44.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:51:17
2025-09-29T09:51:44.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:51:44.433 [DEBUG] [Thread-152711] [transport.py] [_log()] starting thread (client mode): 0x2e3c18d0
2025-09-29T09:51:44.433 [DEBUG] [Thread-152711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:44.459 [DEBUG] [Thread-152711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:51:44.459 [INFO] [Thread-152711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:51:44.463 [DEBUG] [Thread-152711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:44.463 [DEBUG] [Thread-152711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:51:44.463 [DEBUG] [Thread-152711] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:44.463 [DEBUG] [Thread-152711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:44.463 [DEBUG] [Thread-152711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:44.463 [DEBUG] [Thread-152711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] Compression: none
2025-09-29T09:51:44.464 [DEBUG] [Thread-152711] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:44.483 [DEBUG] [Thread-152711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:44.483 [DEBUG] [Thread-152711] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:44.484 [DEBUG] [Thread-152711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:51:44.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:51:44.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:44.486 [DEBUG] [Thread-152711] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:44.486 [DEBUG] [Thread-152711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:44.487 [DEBUG] [Thread-152711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:44.487 [DEBUG] [Thread-152711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:51:44.487 [DEBUG] [Thread-152711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:44.510 [INFO] [Thread-152711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:44.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:45.159 [DEBUG] [Thread-152711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:45.159 [DEBUG] [Thread-152711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:45.159 [DEBUG] [Thread-152711] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:51:45.200 [DEBUG] [Thread-152711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:45.200 [DEBUG] [Thread-152711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:45.203 [DEBUG] [Thread-152711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:45.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:45.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:51:45.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:51:45.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:51:45.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:45.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:51:45.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:45.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:45.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:51:45.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.327157 -999.00  +10.00  29.78     70   +4.80 1 1 1 1 1   888    0 5.45 42.75 ----- 22.6 29.8 156.2 35.9 16.0 -21.7 14.4 -24.7 13.3 -23.5 14.6 -23.7
2025-09-29T09:51:45.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:51:45.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:51:45.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.327157
2025-09-29T09:51:45.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:51:45.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:51:45.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:51:45.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:51:45.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:51:45.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:51:17', tmtdew=6.13, humidity=65.46, cloud=0.0, wind=31.78, temperature=10.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:51:06.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:51:45.226 [DEBUG] [Thread-152711] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:45.312 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:51:45.323 [DEBUG] [Thread-152714] [transport.py] [_log()] starting thread (client mode): 0x2e3c1540
2025-09-29T09:51:45.323 [DEBUG] [Thread-152714] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:45.339 [DEBUG] [Thread-152714] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:51:45.339 [INFO] [Thread-152714] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:45.347 [DEBUG] [Thread-152714] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:45.348 [DEBUG] [Thread-152714] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:45.348 [DEBUG] [Thread-152714] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:45.348 [DEBUG] [Thread-152714] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:45.348 [DEBUG] [Thread-152714] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:45.348 [DEBUG] [Thread-152714] [transport.py] [_log()] Compression: none
2025-09-29T09:51:45.348 [DEBUG] [Thread-152714] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:45.404 [DEBUG] [Thread-152714] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:45.404 [DEBUG] [Thread-152714] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:45.405 [DEBUG] [Thread-152714] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:51:45.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:51:45.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:45.460 [DEBUG] [Thread-152714] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:45.460 [DEBUG] [Thread-152714] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:45.461 [DEBUG] [Thread-152714] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:45.461 [DEBUG] [Thread-152714] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:51:45.461 [DEBUG] [Thread-152714] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:45.478 [INFO] [Thread-152714] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:45.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:51:45.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:46.467 [DEBUG] [Thread-152714] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:46.467 [DEBUG] [Thread-152714] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:46.515 [DEBUG] [Thread-152714] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:46.515 [DEBUG] [Thread-152714] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:46.524 [DEBUG] [Thread-152714] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:46.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:46.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:51:46.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:51:46.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:46.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:46.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:46.565 [DEBUG] [Thread-152714] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:52.749 [DEBUG] [Thread-152716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:51:56.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:51:56.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:51:56.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:51:57.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 51, 49), 6.21, 65.29, 0.0, 31.62, 10.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:51:57.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:51:49
2025-09-29T09:51:57.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:51:57.407 [DEBUG] [Thread-152717] [transport.py] [_log()] starting thread (client mode): 0x2b9c15d0
2025-09-29T09:51:57.408 [DEBUG] [Thread-152717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:57.429 [DEBUG] [Thread-152717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:51:57.429 [INFO] [Thread-152717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:51:57.430 [DEBUG] [Thread-152717] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:57.430 [DEBUG] [Thread-152717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] Compression: none
2025-09-29T09:51:57.431 [DEBUG] [Thread-152717] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:57.438 [DEBUG] [Thread-152717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:57.439 [DEBUG] [Thread-152717] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:57.439 [DEBUG] [Thread-152717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:51:57.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:51:57.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:57.440 [DEBUG] [Thread-152717] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:57.440 [DEBUG] [Thread-152717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:57.440 [DEBUG] [Thread-152717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:57.440 [DEBUG] [Thread-152717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:51:57.440 [DEBUG] [Thread-152717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:57.458 [INFO] [Thread-152717] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:57.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:58.077 [DEBUG] [Thread-152717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:58.077 [DEBUG] [Thread-152717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:58.078 [DEBUG] [Thread-152717] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:51:58.118 [DEBUG] [Thread-152717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:58.118 [DEBUG] [Thread-152717] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:58.122 [DEBUG] [Thread-152717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:58.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:58.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:51:58.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:51:58.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:51:58.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:58.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:51:58.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:58.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:58.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:51:58.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.327157 -999.00  +10.00  29.78     70   +4.80 1 1 1 1 1   888    0 5.45 42.75 ----- 22.6 29.8 156.2 35.9 16.0 -21.7 14.4 -24.7 13.3 -23.5 14.6 -23.7
2025-09-29T09:51:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:51:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:51:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.327157
2025-09-29T09:51:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:51:58.156 [DEBUG] [Thread-152717] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:51:58.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:51:58.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:51:58.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:51:58.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:51:58.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:51:49', tmtdew=6.21, humidity=65.29, cloud=0.0, wind=31.62, temperature=10.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:51:06.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:51:58.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:51:58.254 [DEBUG] [Thread-152720] [transport.py] [_log()] starting thread (client mode): 0x2b9c1e40
2025-09-29T09:51:58.254 [DEBUG] [Thread-152720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:51:58.272 [DEBUG] [Thread-152720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:51:58.272 [INFO] [Thread-152720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] client lang: <none>
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] server lang: <none>
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] kex follows: False
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:51:58.280 [DEBUG] [Thread-152720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:51:58.281 [DEBUG] [Thread-152720] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:51:58.281 [DEBUG] [Thread-152720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:51:58.281 [DEBUG] [Thread-152720] [transport.py] [_log()] Compression: none
2025-09-29T09:51:58.281 [DEBUG] [Thread-152720] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:51:58.341 [DEBUG] [Thread-152720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:51:58.342 [DEBUG] [Thread-152720] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:51:58.342 [DEBUG] [Thread-152720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:51:58.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:51:58.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:51:58.397 [DEBUG] [Thread-152720] [transport.py] [_log()] userauth is OK
2025-09-29T09:51:58.397 [DEBUG] [Thread-152720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:51:58.397 [DEBUG] [Thread-152720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:51:58.397 [DEBUG] [Thread-152720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:51:58.397 [DEBUG] [Thread-152720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:51:58.419 [INFO] [Thread-152720] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:51:58.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:51:58.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:51:59.426 [DEBUG] [Thread-152720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:51:59.427 [DEBUG] [Thread-152720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:51:59.474 [DEBUG] [Thread-152720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:51:59.474 [DEBUG] [Thread-152720] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:51:59.483 [DEBUG] [Thread-152720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:51:59.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:51:59.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:51:59.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:51:59.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:51:59.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:51:59.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:51:59.518 [DEBUG] [Thread-152720] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:52:07.783 [DEBUG] [Thread-152722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:52:09.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:52:09.520 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:52:09.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:52:10.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 51, 49), 6.21, 65.29, 0.0, 31.62, 10.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:52:10.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:51:49
2025-09-29T09:52:10.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:52:10.377 [DEBUG] [Thread-152723] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bf0
2025-09-29T09:52:10.378 [DEBUG] [Thread-152723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:52:10.393 [DEBUG] [Thread-152723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:52:10.393 [INFO] [Thread-152723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:52:10.397 [DEBUG] [Thread-152723] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:52:10.397 [DEBUG] [Thread-152723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:52:10.397 [DEBUG] [Thread-152723] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:52:10.397 [DEBUG] [Thread-152723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:10.397 [DEBUG] [Thread-152723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:10.397 [DEBUG] [Thread-152723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:10.397 [DEBUG] [Thread-152723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] client lang: <none>
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] server lang: <none>
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] kex follows: False
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] Compression: none
2025-09-29T09:52:10.398 [DEBUG] [Thread-152723] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:52:10.415 [DEBUG] [Thread-152723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:52:10.416 [DEBUG] [Thread-152723] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:52:10.416 [DEBUG] [Thread-152723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:52:10.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:52:10.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:52:10.418 [DEBUG] [Thread-152723] [transport.py] [_log()] userauth is OK
2025-09-29T09:52:10.418 [DEBUG] [Thread-152723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:52:10.418 [DEBUG] [Thread-152723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:52:10.419 [DEBUG] [Thread-152723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:52:10.419 [DEBUG] [Thread-152723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:52:10.437 [INFO] [Thread-152723] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:52:10.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:52:11.025 [DEBUG] [Thread-152723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:52:11.025 [DEBUG] [Thread-152723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:52:11.025 [DEBUG] [Thread-152723] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:52:11.067 [DEBUG] [Thread-152723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:52:11.067 [DEBUG] [Thread-152723] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:52:11.070 [DEBUG] [Thread-152723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:52:11.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:52:11.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:52:11.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:52:11.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:52:11.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:52:11.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:52:11.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:52:11.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:52:11.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:52:11.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.327505 -999.00  +10.00  22.14     70   +5.00 1 2 1 1 1   888    0 5.62 46.40 ----- 19.1 22.1 135.4 31.5 15.9 -20.7 14.7 -20.4 13.7 -20.6 14.7 -20.9
2025-09-29T09:52:11.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:52:11.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:52:11.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.327505
2025-09-29T09:52:11.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:52:11.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:52:11.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:52:11.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:52:11.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:52:11.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:51:49', tmtdew=6.21, humidity=65.29, cloud=0.0, wind=31.62, temperature=10.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:51:36.432', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:52:11.097 [DEBUG] [Thread-152723] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:52:11.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:52:11.193 [DEBUG] [Thread-152726] [transport.py] [_log()] starting thread (client mode): 0x2e3c1ed0
2025-09-29T09:52:11.193 [DEBUG] [Thread-152726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:52:11.208 [DEBUG] [Thread-152726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:52:11.208 [INFO] [Thread-152726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:52:11.215 [DEBUG] [Thread-152726] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:52:11.215 [DEBUG] [Thread-152726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:52:11.215 [DEBUG] [Thread-152726] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:52:11.215 [DEBUG] [Thread-152726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:11.215 [DEBUG] [Thread-152726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:11.215 [DEBUG] [Thread-152726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:11.215 [DEBUG] [Thread-152726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] client lang: <none>
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] server lang: <none>
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] kex follows: False
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] Compression: none
2025-09-29T09:52:11.216 [DEBUG] [Thread-152726] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:52:11.273 [DEBUG] [Thread-152726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:52:11.273 [DEBUG] [Thread-152726] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:52:11.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:52:11.274 [DEBUG] [Thread-152726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:52:11.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:52:11.330 [DEBUG] [Thread-152726] [transport.py] [_log()] userauth is OK
2025-09-29T09:52:11.330 [DEBUG] [Thread-152726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:52:11.330 [DEBUG] [Thread-152726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:52:11.330 [DEBUG] [Thread-152726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:52:11.330 [DEBUG] [Thread-152726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:52:11.350 [INFO] [Thread-152726] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:52:11.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:52:11.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:52:12.354 [DEBUG] [Thread-152726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:52:12.355 [DEBUG] [Thread-152726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:52:12.402 [DEBUG] [Thread-152726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:52:12.402 [DEBUG] [Thread-152726] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:52:12.411 [DEBUG] [Thread-152726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:52:12.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:52:12.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:52:12.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:52:12.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:52:12.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:52:12.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:52:12.447 [DEBUG] [Thread-152726] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:52:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:52:22.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:52:22.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:52:22.831 [DEBUG] [Thread-152728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:52:23.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 51, 49), 6.21, 65.29, 0.0, 31.62, 10.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:52:23.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:51:49
2025-09-29T09:52:23.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:52:23.321 [DEBUG] [Thread-152729] [transport.py] [_log()] starting thread (client mode): 0x2e3c07c0
2025-09-29T09:52:23.321 [DEBUG] [Thread-152729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:52:23.341 [DEBUG] [Thread-152729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:52:23.341 [INFO] [Thread-152729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:52:23.345 [DEBUG] [Thread-152729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] client lang: <none>
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] server lang: <none>
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] kex follows: False
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] Compression: none
2025-09-29T09:52:23.346 [DEBUG] [Thread-152729] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:52:23.364 [DEBUG] [Thread-152729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:52:23.365 [DEBUG] [Thread-152729] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:52:23.365 [DEBUG] [Thread-152729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:52:23.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:52:23.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:52:23.368 [DEBUG] [Thread-152729] [transport.py] [_log()] userauth is OK
2025-09-29T09:52:23.368 [DEBUG] [Thread-152729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:52:23.368 [DEBUG] [Thread-152729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:52:23.368 [DEBUG] [Thread-152729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:52:23.368 [DEBUG] [Thread-152729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:52:23.403 [INFO] [Thread-152729] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:52:23.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:52:24.055 [DEBUG] [Thread-152729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:52:24.056 [DEBUG] [Thread-152729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:52:24.056 [DEBUG] [Thread-152729] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:52:24.096 [DEBUG] [Thread-152729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:52:24.096 [DEBUG] [Thread-152729] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:52:24.099 [DEBUG] [Thread-152729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:52:24.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:52:24.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:52:24.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:52:24.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:52:24.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:52:24.123 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:52:24.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:52:24.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:52:24.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:52:24.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.327505 -999.00  +10.00  22.14     70   +5.00 1 2 1 1 1   888    0 5.62 46.40 ----- 19.1 22.1 135.4 31.5 15.9 -20.7 14.7 -20.4 13.7 -20.6 14.7 -20.9
2025-09-29T09:52:24.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:52:24.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:52:24.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.327505
2025-09-29T09:52:24.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:52:24.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:52:24.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:52:24.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:52:24.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:52:24.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:51:49', tmtdew=6.21, humidity=65.29, cloud=0.0, wind=31.62, temperature=10.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:51:36.432', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:52:24.125 [DEBUG] [Thread-152729] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:52:24.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:52:24.220 [DEBUG] [Thread-152732] [transport.py] [_log()] starting thread (client mode): 0x2e3dd810
2025-09-29T09:52:24.220 [DEBUG] [Thread-152732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:52:24.236 [DEBUG] [Thread-152732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:52:24.236 [INFO] [Thread-152732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:52:24.243 [DEBUG] [Thread-152732] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:52:24.243 [DEBUG] [Thread-152732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:52:24.243 [DEBUG] [Thread-152732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:52:24.243 [DEBUG] [Thread-152732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:24.243 [DEBUG] [Thread-152732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] client lang: <none>
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] server lang: <none>
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] kex follows: False
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] Compression: none
2025-09-29T09:52:24.244 [DEBUG] [Thread-152732] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:52:24.307 [DEBUG] [Thread-152732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:52:24.308 [DEBUG] [Thread-152732] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:52:24.308 [DEBUG] [Thread-152732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:52:24.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:52:24.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:52:24.366 [DEBUG] [Thread-152732] [transport.py] [_log()] userauth is OK
2025-09-29T09:52:24.366 [DEBUG] [Thread-152732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:52:24.366 [DEBUG] [Thread-152732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:52:24.367 [DEBUG] [Thread-152732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:52:24.367 [DEBUG] [Thread-152732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:52:24.387 [INFO] [Thread-152732] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:52:24.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:52:24.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:52:24.999 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:52:25.000 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:52:25.409 [DEBUG] [Thread-152732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:52:25.410 [DEBUG] [Thread-152732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:52:25.457 [DEBUG] [Thread-152732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:52:25.457 [DEBUG] [Thread-152732] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:52:25.466 [DEBUG] [Thread-152732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:52:25.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:52:25.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:52:25.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:52:25.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:52:25.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:52:25.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:52:25.501 [DEBUG] [Thread-152732] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:52:31.030 [DEBUG] [Thread-152734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:52:35.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:52:35.504 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:52:35.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:52:36.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 52, 20), 6.3, 64.93, 0.0, 33.05, 10.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:52:36.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:52:20
2025-09-29T09:52:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:52:36.346 [DEBUG] [Thread-152735] [transport.py] [_log()] starting thread (client mode): 0x2e3c0340
2025-09-29T09:52:36.347 [DEBUG] [Thread-152735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:52:36.361 [DEBUG] [Thread-152735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:52:36.361 [INFO] [Thread-152735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:52:36.364 [DEBUG] [Thread-152735] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] client lang: <none>
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] server lang: <none>
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] kex follows: False
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] Compression: none
2025-09-29T09:52:36.365 [DEBUG] [Thread-152735] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:52:36.375 [DEBUG] [Thread-152735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:52:36.375 [DEBUG] [Thread-152735] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:52:36.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:52:36.376 [DEBUG] [Thread-152735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:52:36.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:52:36.378 [DEBUG] [Thread-152735] [transport.py] [_log()] userauth is OK
2025-09-29T09:52:36.378 [DEBUG] [Thread-152735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:52:36.378 [DEBUG] [Thread-152735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:52:36.378 [DEBUG] [Thread-152735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:52:36.379 [DEBUG] [Thread-152735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:52:36.399 [INFO] [Thread-152735] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:52:36.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:52:37.045 [DEBUG] [Thread-152735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:52:37.046 [DEBUG] [Thread-152735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:52:37.046 [DEBUG] [Thread-152735] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:52:37.086 [DEBUG] [Thread-152735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:52:37.087 [DEBUG] [Thread-152735] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:52:37.089 [DEBUG] [Thread-152735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:52:37.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:52:37.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:52:37.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:52:37.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:52:37.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:52:37.108 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:52:37.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:52:37.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:52:37.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:52:37.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.327852 -999.00  +10.10  19.63     69   +4.80 1 2 1 1 1   888    0 5.64 46.97 ----- 16.4 19.6 151.7 26.4 16.0 -26.7 14.7 -22.9 13.6 -22.3 14.6 -24.4
2025-09-29T09:52:37.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:52:37.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:52:37.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.327852
2025-09-29T09:52:37.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:52:37.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:52:37.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:52:37.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:52:37.110 [DEBUG] [Thread-152735] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:52:37.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:52:37.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:52:20', tmtdew=6.3, humidity=64.93, cloud=0.0, wind=33.05, temperature=10.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:52:06.413', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:52:37.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:52:37.210 [DEBUG] [Thread-152738] [transport.py] [_log()] starting thread (client mode): 0x2e34a260
2025-09-29T09:52:37.210 [DEBUG] [Thread-152738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:52:37.225 [DEBUG] [Thread-152738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:52:37.226 [INFO] [Thread-152738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:52:37.233 [DEBUG] [Thread-152738] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:52:37.233 [DEBUG] [Thread-152738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:52:37.233 [DEBUG] [Thread-152738] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:52:37.233 [DEBUG] [Thread-152738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:37.233 [DEBUG] [Thread-152738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:37.233 [DEBUG] [Thread-152738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:37.233 [DEBUG] [Thread-152738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] client lang: <none>
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] server lang: <none>
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] kex follows: False
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] Compression: none
2025-09-29T09:52:37.234 [DEBUG] [Thread-152738] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:52:37.290 [DEBUG] [Thread-152738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:52:37.290 [DEBUG] [Thread-152738] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:52:37.291 [DEBUG] [Thread-152738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:52:37.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:52:37.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:52:37.346 [DEBUG] [Thread-152738] [transport.py] [_log()] userauth is OK
2025-09-29T09:52:37.347 [DEBUG] [Thread-152738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:52:37.347 [DEBUG] [Thread-152738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:52:37.347 [DEBUG] [Thread-152738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:52:37.347 [DEBUG] [Thread-152738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:52:37.366 [INFO] [Thread-152738] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:52:37.366 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:52:37.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:52:37.865 [DEBUG] [Thread-152740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:52:38.353 [DEBUG] [Thread-152738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:52:38.353 [DEBUG] [Thread-152738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:52:38.401 [DEBUG] [Thread-152738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:52:38.401 [DEBUG] [Thread-152738] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:52:38.409 [DEBUG] [Thread-152738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:52:38.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:52:38.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:52:38.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:52:38.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:52:38.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:52:38.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:52:38.441 [DEBUG] [Thread-152738] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:52:48.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:52:48.444 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:52:48.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:52:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 52, 20), 6.3, 64.93, 0.0, 33.05, 10.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:52:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:52:20
2025-09-29T09:52:49.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:52:49.289 [DEBUG] [Thread-152741] [transport.py] [_log()] starting thread (client mode): 0x2e3632e0
2025-09-29T09:52:49.290 [DEBUG] [Thread-152741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:52:49.310 [DEBUG] [Thread-152741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:52:49.310 [INFO] [Thread-152741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:52:49.313 [DEBUG] [Thread-152741] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] client lang: <none>
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] server lang: <none>
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] kex follows: False
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:52:49.319 [DEBUG] [Thread-152741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:52:49.320 [DEBUG] [Thread-152741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:52:49.320 [DEBUG] [Thread-152741] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:52:49.320 [DEBUG] [Thread-152741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:52:49.320 [DEBUG] [Thread-152741] [transport.py] [_log()] Compression: none
2025-09-29T09:52:49.320 [DEBUG] [Thread-152741] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:52:49.339 [DEBUG] [Thread-152741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:52:49.339 [DEBUG] [Thread-152741] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:52:49.340 [DEBUG] [Thread-152741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:52:49.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:52:49.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:52:49.342 [DEBUG] [Thread-152741] [transport.py] [_log()] userauth is OK
2025-09-29T09:52:49.342 [DEBUG] [Thread-152741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:52:49.342 [DEBUG] [Thread-152741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:52:49.342 [DEBUG] [Thread-152741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:52:49.342 [DEBUG] [Thread-152741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:52:49.361 [INFO] [Thread-152741] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:52:49.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:52:50.007 [DEBUG] [Thread-152741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:52:50.007 [DEBUG] [Thread-152741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:52:50.007 [DEBUG] [Thread-152741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:52:50.048 [DEBUG] [Thread-152741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:52:50.048 [DEBUG] [Thread-152741] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:52:50.051 [DEBUG] [Thread-152741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:52:50.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:52:50.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:52:50.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:52:50.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:52:50.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:52:50.074 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:52:50.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:52:50.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:52:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:52:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.327852 -999.00  +10.10  19.63     69   +4.80 1 2 1 1 1   888    0 5.64 46.97 ----- 16.4 19.6 151.7 26.4 16.0 -26.7 14.7 -22.9 13.6 -22.3 14.6 -24.4
2025-09-29T09:52:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:52:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:52:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.327852
2025-09-29T09:52:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:52:50.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:52:50.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:52:50.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:52:50.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:52:50.076 [DEBUG] [Thread-152741] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:52:50.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:52:20', tmtdew=6.3, humidity=64.93, cloud=0.0, wind=33.05, temperature=10.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:52:06.413', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:52:50.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:52:52.916 [DEBUG] [Thread-152744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:53:07.946 [DEBUG] [Thread-152745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:53:22.973 [DEBUG] [Thread-152746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:53:25.141 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:53:25.142 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:53:31.085 [DEBUG] [Thread-152747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:53:38.007 [DEBUG] [Thread-152748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:53:53.039 [DEBUG] [Thread-152749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:54:08.071 [DEBUG] [Thread-152750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:54:23.100 [DEBUG] [Thread-152751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:54:25.285 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:54:25.286 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:54:31.136 [DEBUG] [Thread-152752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:54:38.130 [DEBUG] [Thread-152753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:54:53.162 [DEBUG] [Thread-152754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:55:03.227 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T09:55:08.194 [DEBUG] [Thread-152755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:55:13.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:55:13.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:55:13.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:55:13.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 55), 6.36, 64.62, 0.0, 25.27, 10.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:55:13.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:55:00
2025-09-29T09:55:13.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:55:14.096 [DEBUG] [Thread-152756] [transport.py] [_log()] starting thread (client mode): 0x2e349570
2025-09-29T09:55:14.096 [DEBUG] [Thread-152756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:55:14.114 [DEBUG] [Thread-152756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:55:14.114 [INFO] [Thread-152756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] client lang: <none>
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] server lang: <none>
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] kex follows: False
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:55:14.118 [DEBUG] [Thread-152756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:55:14.119 [DEBUG] [Thread-152756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:55:14.119 [DEBUG] [Thread-152756] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:55:14.119 [DEBUG] [Thread-152756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:55:14.119 [DEBUG] [Thread-152756] [transport.py] [_log()] Compression: none
2025-09-29T09:55:14.119 [DEBUG] [Thread-152756] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:55:14.136 [DEBUG] [Thread-152756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:55:14.137 [DEBUG] [Thread-152756] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:55:14.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:55:14.139 [DEBUG] [Thread-152756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:55:14.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:55:14.140 [DEBUG] [Thread-152756] [transport.py] [_log()] userauth is OK
2025-09-29T09:55:14.141 [DEBUG] [Thread-152756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:55:14.141 [DEBUG] [Thread-152756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:55:14.141 [DEBUG] [Thread-152756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:55:14.141 [DEBUG] [Thread-152756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:55:14.155 [INFO] [Thread-152756] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:55:14.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:55:15.733 [DEBUG] [Thread-152756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:55:15.733 [DEBUG] [Thread-152756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:55:15.733 [DEBUG] [Thread-152756] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:55:15.773 [DEBUG] [Thread-152756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:55:15.773 [DEBUG] [Thread-152756] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:55:15.775 [DEBUG] [Thread-152756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:55:15.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:55:15.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:55:15.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:55:15.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:55:15.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:55:15.793 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:55:15.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.329588 -999.00   +9.90  20.58     70   +4.80 1 1 1 1 1   888    0 6.17 59.97 ----- 19.1 20.6 170.4 30.8 16.1 -25.6 14.8 -22.6 13.7 -24.2 14.9 -25.2
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.329588
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:55:15.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:55:00', tmtdew=6.36, humidity=64.62, cloud=0.0, wind=25.27, temperature=10.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:54:36.403', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:55:15.794 [DEBUG] [Thread-152756] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:55:15.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:55:15.878 [DEBUG] [Thread-152759] [transport.py] [_log()] starting thread (client mode): 0x2e3c2170
2025-09-29T09:55:15.879 [DEBUG] [Thread-152759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:55:15.894 [DEBUG] [Thread-152759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:55:15.894 [INFO] [Thread-152759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:55:15.901 [DEBUG] [Thread-152759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] client lang: <none>
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] server lang: <none>
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] kex follows: False
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] Compression: none
2025-09-29T09:55:15.902 [DEBUG] [Thread-152759] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:55:15.961 [DEBUG] [Thread-152759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:55:15.961 [DEBUG] [Thread-152759] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:55:15.962 [DEBUG] [Thread-152759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:55:15.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:55:15.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:55:16.017 [DEBUG] [Thread-152759] [transport.py] [_log()] userauth is OK
2025-09-29T09:55:16.017 [DEBUG] [Thread-152759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:55:16.017 [DEBUG] [Thread-152759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:55:16.017 [DEBUG] [Thread-152759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:55:16.017 [DEBUG] [Thread-152759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:55:16.036 [INFO] [Thread-152759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:55:16.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:55:16.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:55:17.034 [DEBUG] [Thread-152759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:55:17.034 [DEBUG] [Thread-152759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:55:17.086 [DEBUG] [Thread-152759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:55:17.086 [DEBUG] [Thread-152759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:55:17.095 [DEBUG] [Thread-152759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:55:17.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:55:17.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:55:17.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:55:17.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:55:17.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:55:17.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:55:17.129 [DEBUG] [Thread-152759] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:55:23.224 [DEBUG] [Thread-152761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:55:25.427 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:55:25.428 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:55:27.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:55:27.132 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:55:27.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:55:27.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 55), 6.36, 64.62, 0.0, 25.27, 10.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:55:27.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:55:00
2025-09-29T09:55:27.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:55:28.008 [DEBUG] [Thread-152762] [transport.py] [_log()] starting thread (client mode): 0x2e3c3b80
2025-09-29T09:55:28.008 [DEBUG] [Thread-152762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:55:28.023 [DEBUG] [Thread-152762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:55:28.023 [INFO] [Thread-152762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:55:28.026 [DEBUG] [Thread-152762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:55:28.026 [DEBUG] [Thread-152762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] client lang: <none>
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] server lang: <none>
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] kex follows: False
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] Compression: none
2025-09-29T09:55:28.027 [DEBUG] [Thread-152762] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:55:28.043 [DEBUG] [Thread-152762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:55:28.043 [DEBUG] [Thread-152762] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:55:28.043 [DEBUG] [Thread-152762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:55:28.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:55:28.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:55:28.044 [DEBUG] [Thread-152762] [transport.py] [_log()] userauth is OK
2025-09-29T09:55:28.044 [DEBUG] [Thread-152762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:55:28.044 [DEBUG] [Thread-152762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:55:28.044 [DEBUG] [Thread-152762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:55:28.044 [DEBUG] [Thread-152762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:55:28.057 [INFO] [Thread-152762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:55:28.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:55:28.657 [DEBUG] [Thread-152762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:55:28.657 [DEBUG] [Thread-152762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:55:28.658 [DEBUG] [Thread-152762] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:55:28.699 [DEBUG] [Thread-152762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:55:28.699 [DEBUG] [Thread-152762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:55:28.701 [DEBUG] [Thread-152762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:55:28.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:55:28.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:55:28.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:55:28.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:55:28.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:55:28.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:55:28.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.329935 -999.00   +9.90  21.21     70   +4.80 1 1 1 1 1   888    0 6.16 60.37 ----- 19.8 21.2 164.6 29.6 16.1 -25.0 14.7 -26.1 13.6 -27.1 14.8 -26.9
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.329935
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:55:28.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:55:00', tmtdew=6.36, humidity=64.62, cloud=0.0, wind=25.27, temperature=10.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:55:06.384', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:55:28.721 [DEBUG] [Thread-152762] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:55:28.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:55:28.803 [DEBUG] [Thread-152765] [transport.py] [_log()] starting thread (client mode): 0x2e3dfa60
2025-09-29T09:55:28.803 [DEBUG] [Thread-152765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:55:28.818 [DEBUG] [Thread-152765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:55:28.818 [INFO] [Thread-152765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:55:28.825 [DEBUG] [Thread-152765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:55:28.825 [DEBUG] [Thread-152765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:55:28.825 [DEBUG] [Thread-152765] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:55:28.825 [DEBUG] [Thread-152765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:28.825 [DEBUG] [Thread-152765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:28.825 [DEBUG] [Thread-152765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:28.825 [DEBUG] [Thread-152765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] client lang: <none>
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] server lang: <none>
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] kex follows: False
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] Compression: none
2025-09-29T09:55:28.826 [DEBUG] [Thread-152765] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:55:28.888 [DEBUG] [Thread-152765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:55:28.888 [DEBUG] [Thread-152765] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:55:28.888 [DEBUG] [Thread-152765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:55:28.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:55:28.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:55:28.945 [DEBUG] [Thread-152765] [transport.py] [_log()] userauth is OK
2025-09-29T09:55:28.945 [DEBUG] [Thread-152765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:55:28.945 [DEBUG] [Thread-152765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:55:28.945 [DEBUG] [Thread-152765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:55:28.945 [DEBUG] [Thread-152765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:55:28.960 [INFO] [Thread-152765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:55:28.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:55:28.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:55:29.957 [DEBUG] [Thread-152765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:55:29.958 [DEBUG] [Thread-152765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:55:30.008 [DEBUG] [Thread-152765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:55:30.008 [DEBUG] [Thread-152765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:55:30.017 [DEBUG] [Thread-152765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:55:30.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:55:30.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:55:30.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:55:30.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:55:30.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:55:30.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:55:30.051 [DEBUG] [Thread-152765] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:55:31.169 [DEBUG] [Thread-152767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:55:38.265 [DEBUG] [Thread-152768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:55:40.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:55:40.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:55:40.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:55:40.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 55, 32), 6.56, 63.73, 0.0, 26.47, 10.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:55:40.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:55:32
2025-09-29T09:55:40.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:55:40.933 [DEBUG] [Thread-152769] [transport.py] [_log()] starting thread (client mode): 0x2e3de740
2025-09-29T09:55:40.933 [DEBUG] [Thread-152769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:55:40.945 [DEBUG] [Thread-152769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:55:40.946 [INFO] [Thread-152769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] client lang: <none>
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] server lang: <none>
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] kex follows: False
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:55:40.947 [DEBUG] [Thread-152769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:55:40.948 [DEBUG] [Thread-152769] [transport.py] [_log()] Compression: none
2025-09-29T09:55:40.948 [DEBUG] [Thread-152769] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:55:40.954 [DEBUG] [Thread-152769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:55:40.955 [DEBUG] [Thread-152769] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:55:40.955 [DEBUG] [Thread-152769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:55:40.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:55:40.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:55:40.956 [DEBUG] [Thread-152769] [transport.py] [_log()] userauth is OK
2025-09-29T09:55:40.956 [DEBUG] [Thread-152769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:55:40.956 [DEBUG] [Thread-152769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:55:40.956 [DEBUG] [Thread-152769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:55:40.956 [DEBUG] [Thread-152769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:55:40.983 [INFO] [Thread-152769] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:55:40.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:55:42.301 [DEBUG] [Thread-152769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:55:42.301 [DEBUG] [Thread-152769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:55:42.301 [DEBUG] [Thread-152769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:55:42.342 [DEBUG] [Thread-152769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:55:42.342 [DEBUG] [Thread-152769] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:55:42.346 [DEBUG] [Thread-152769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:55:42.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:55:42.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:55:42.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:55:42.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:55:42.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:55:42.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:55:42.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:55:42.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:55:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:55:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.329935 -999.00   +9.90  21.21     70   +4.80 1 1 1 1 1   888    0 6.16 60.37 ----- 19.8 21.2 164.6 29.6 16.1 -25.0 14.7 -26.1 13.6 -27.1 14.8 -26.9
2025-09-29T09:55:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:55:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:55:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.329935
2025-09-29T09:55:42.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:55:42.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:55:42.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:55:42.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:55:42.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:55:42.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:55:32', tmtdew=6.56, humidity=63.73, cloud=0.0, wind=26.47, temperature=10.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:55:06.384', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:55:42.376 [DEBUG] [Thread-152769] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:55:42.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:55:42.474 [DEBUG] [Thread-152772] [transport.py] [_log()] starting thread (client mode): 0x2e3de1d0
2025-09-29T09:55:42.475 [DEBUG] [Thread-152772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:55:42.493 [DEBUG] [Thread-152772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:55:42.493 [INFO] [Thread-152772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:55:42.500 [DEBUG] [Thread-152772] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:55:42.501 [DEBUG] [Thread-152772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:55:42.501 [DEBUG] [Thread-152772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:55:42.501 [DEBUG] [Thread-152772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:42.501 [DEBUG] [Thread-152772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:42.501 [DEBUG] [Thread-152772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:42.501 [DEBUG] [Thread-152772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:42.502 [DEBUG] [Thread-152772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:55:42.502 [DEBUG] [Thread-152772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:55:42.502 [DEBUG] [Thread-152772] [transport.py] [_log()] client lang: <none>
2025-09-29T09:55:42.502 [DEBUG] [Thread-152772] [transport.py] [_log()] server lang: <none>
2025-09-29T09:55:42.502 [DEBUG] [Thread-152772] [transport.py] [_log()] kex follows: False
2025-09-29T09:55:42.502 [DEBUG] [Thread-152772] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:55:42.502 [DEBUG] [Thread-152772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:55:42.503 [DEBUG] [Thread-152772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:55:42.503 [DEBUG] [Thread-152772] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:55:42.503 [DEBUG] [Thread-152772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:55:42.503 [DEBUG] [Thread-152772] [transport.py] [_log()] Compression: none
2025-09-29T09:55:42.503 [DEBUG] [Thread-152772] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:55:42.557 [DEBUG] [Thread-152772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:55:42.557 [DEBUG] [Thread-152772] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:55:42.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:55:42.558 [DEBUG] [Thread-152772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:55:42.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:55:42.613 [DEBUG] [Thread-152772] [transport.py] [_log()] userauth is OK
2025-09-29T09:55:42.614 [DEBUG] [Thread-152772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:55:42.614 [DEBUG] [Thread-152772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:55:42.614 [DEBUG] [Thread-152772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:55:42.614 [DEBUG] [Thread-152772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:55:42.633 [INFO] [Thread-152772] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:55:42.633 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:55:42.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:55:43.619 [DEBUG] [Thread-152772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:55:43.619 [DEBUG] [Thread-152772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:55:43.667 [DEBUG] [Thread-152772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:55:43.668 [DEBUG] [Thread-152772] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:55:43.677 [DEBUG] [Thread-152772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:55:43.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:55:43.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:55:43.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:55:43.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:55:43.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:55:43.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:55:43.713 [DEBUG] [Thread-152772] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:55:53.310 [DEBUG] [Thread-152774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:55:53.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:55:53.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:55:53.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:55:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 55, 32), 6.56, 63.73, 0.0, 26.47, 10.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:55:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:55:32
2025-09-29T09:55:54.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:55:54.580 [DEBUG] [Thread-152775] [transport.py] [_log()] starting thread (client mode): 0x2b91f190
2025-09-29T09:55:54.580 [DEBUG] [Thread-152775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:55:54.594 [DEBUG] [Thread-152775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:55:54.594 [INFO] [Thread-152775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:55:54.595 [DEBUG] [Thread-152775] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] client lang: <none>
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] server lang: <none>
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] kex follows: False
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] Compression: none
2025-09-29T09:55:54.596 [DEBUG] [Thread-152775] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:55:54.606 [DEBUG] [Thread-152775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:55:54.606 [DEBUG] [Thread-152775] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:55:54.606 [DEBUG] [Thread-152775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:55:54.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:55:54.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:55:54.608 [DEBUG] [Thread-152775] [transport.py] [_log()] userauth is OK
2025-09-29T09:55:54.608 [DEBUG] [Thread-152775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:55:54.608 [DEBUG] [Thread-152775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:55:54.608 [DEBUG] [Thread-152775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:55:54.608 [DEBUG] [Thread-152775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:55:54.640 [INFO] [Thread-152775] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:55:54.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:55:55.238 [DEBUG] [Thread-152775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:55:55.238 [DEBUG] [Thread-152775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:55:55.239 [DEBUG] [Thread-152775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:55:55.280 [DEBUG] [Thread-152775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:55:55.280 [DEBUG] [Thread-152775] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:55:55.284 [DEBUG] [Thread-152775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:55:55.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:55:55.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:55:55.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:55:55.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:55:55.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:55:55.309 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:55:55.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:55:55.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:55:55.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:55:55.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.329935 -999.00   +9.90  21.21     70   +4.80 1 1 1 1 1   888    0 6.16 60.37 ----- 19.8 21.2 164.6 29.6 16.1 -25.0 14.7 -26.1 13.6 -27.1 14.8 -26.9
2025-09-29T09:55:55.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:55:55.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:55:55.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.329935
2025-09-29T09:55:55.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:55:55.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:55:55.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:55:55.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:55:55.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:55:55.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:55:32', tmtdew=6.56, humidity=63.73, cloud=0.0, wind=26.47, temperature=10.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:55:06.384', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:55:55.313 [DEBUG] [Thread-152775] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:55:55.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:55:55.406 [DEBUG] [Thread-152778] [transport.py] [_log()] starting thread (client mode): 0x2e3c37c0
2025-09-29T09:55:55.406 [DEBUG] [Thread-152778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:55:55.421 [DEBUG] [Thread-152778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:55:55.421 [INFO] [Thread-152778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] client lang: <none>
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] server lang: <none>
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] kex follows: False
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:55:55.430 [DEBUG] [Thread-152778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:55:55.431 [DEBUG] [Thread-152778] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:55:55.431 [DEBUG] [Thread-152778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:55:55.431 [DEBUG] [Thread-152778] [transport.py] [_log()] Compression: none
2025-09-29T09:55:55.431 [DEBUG] [Thread-152778] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:55:55.485 [DEBUG] [Thread-152778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:55:55.486 [DEBUG] [Thread-152778] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:55:55.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:55:55.487 [DEBUG] [Thread-152778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:55:55.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:55:55.542 [DEBUG] [Thread-152778] [transport.py] [_log()] userauth is OK
2025-09-29T09:55:55.542 [DEBUG] [Thread-152778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:55:55.542 [DEBUG] [Thread-152778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:55:55.542 [DEBUG] [Thread-152778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:55:55.542 [DEBUG] [Thread-152778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:55:55.561 [INFO] [Thread-152778] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:55:55.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:55:55.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:55:56.510 [DEBUG] [Thread-152778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:55:56.510 [DEBUG] [Thread-152778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:55:56.558 [DEBUG] [Thread-152778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:55:56.558 [DEBUG] [Thread-152778] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:55:56.568 [DEBUG] [Thread-152778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:55:56.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:55:56.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:55:56.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:55:56.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:55:56.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:55:56.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:55:56.602 [DEBUG] [Thread-152778] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:56:06.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:56:06.605 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:56:06.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:56:07.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 56, 4), 6.52, 63.88, 0.0, 24.56, 10.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:56:07.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:56:04
2025-09-29T09:56:07.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:56:07.527 [DEBUG] [Thread-152780] [transport.py] [_log()] starting thread (client mode): 0x2e3de2f0
2025-09-29T09:56:07.527 [DEBUG] [Thread-152780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:56:07.547 [DEBUG] [Thread-152780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:56:07.547 [INFO] [Thread-152780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] client lang: <none>
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] server lang: <none>
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] kex follows: False
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] Compression: none
2025-09-29T09:56:07.551 [DEBUG] [Thread-152780] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:56:07.565 [DEBUG] [Thread-152780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:56:07.566 [DEBUG] [Thread-152780] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:56:07.566 [DEBUG] [Thread-152780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:56:07.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:56:07.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:56:07.568 [DEBUG] [Thread-152780] [transport.py] [_log()] userauth is OK
2025-09-29T09:56:07.568 [DEBUG] [Thread-152780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:56:07.568 [DEBUG] [Thread-152780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:56:07.568 [DEBUG] [Thread-152780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:56:07.568 [DEBUG] [Thread-152780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:56:07.578 [INFO] [Thread-152780] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:56:07.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:56:08.194 [DEBUG] [Thread-152780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:56:08.194 [DEBUG] [Thread-152780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:56:08.195 [DEBUG] [Thread-152780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:56:08.236 [DEBUG] [Thread-152780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:56:08.236 [DEBUG] [Thread-152780] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:56:08.237 [DEBUG] [Thread-152780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:56:08.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:56:08.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:56:08.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:56:08.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:56:08.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:56:08.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:56:08.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.330282 -999.00   +9.70  21.46     70   +4.60 1 1 1 1 1   888    0 6.30 63.38 ----- 14.6 21.5 160.0 27.7 15.7 -27.1 14.4 -30.0 13.3 -26.3 14.5 -26.6
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.330282
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:56:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:56:04', tmtdew=6.52, humidity=63.88, cloud=0.0, wind=24.56, temperature=10.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:55:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:56:08.254 [DEBUG] [Thread-152780] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:56:08.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:56:08.342 [DEBUG] [Thread-152783] [transport.py] [_log()] starting thread (client mode): 0x2e3c3b80
2025-09-29T09:56:08.342 [DEBUG] [Thread-152783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:56:08.353 [DEBUG] [Thread-152784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:56:08.357 [DEBUG] [Thread-152783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:56:08.357 [INFO] [Thread-152783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] client lang: <none>
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] server lang: <none>
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] kex follows: False
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] Compression: none
2025-09-29T09:56:08.368 [DEBUG] [Thread-152783] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:56:08.429 [DEBUG] [Thread-152783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:56:08.430 [DEBUG] [Thread-152783] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:56:08.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:56:08.430 [DEBUG] [Thread-152783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:56:08.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:56:08.490 [DEBUG] [Thread-152783] [transport.py] [_log()] userauth is OK
2025-09-29T09:56:08.490 [DEBUG] [Thread-152783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:56:08.490 [DEBUG] [Thread-152783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:56:08.490 [DEBUG] [Thread-152783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:56:08.490 [DEBUG] [Thread-152783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:56:08.505 [INFO] [Thread-152783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:56:08.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:56:08.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:56:09.499 [DEBUG] [Thread-152783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:56:09.499 [DEBUG] [Thread-152783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:56:09.547 [DEBUG] [Thread-152783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:56:09.547 [DEBUG] [Thread-152783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:56:09.557 [DEBUG] [Thread-152783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:56:09.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:56:09.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:56:09.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:56:09.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:56:09.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:56:09.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:56:09.592 [DEBUG] [Thread-152783] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:56:19.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:56:19.595 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:56:19.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:56:20.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 56, 4), 6.52, 63.88, 0.0, 24.56, 10.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:56:20.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:56:04
2025-09-29T09:56:20.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:56:20.448 [DEBUG] [Thread-152786] [transport.py] [_log()] starting thread (client mode): 0x2e3483d0
2025-09-29T09:56:20.448 [DEBUG] [Thread-152786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:56:20.470 [DEBUG] [Thread-152786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:56:20.470 [INFO] [Thread-152786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] client lang: <none>
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] server lang: <none>
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] kex follows: False
2025-09-29T09:56:20.473 [DEBUG] [Thread-152786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:56:20.474 [DEBUG] [Thread-152786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:56:20.474 [DEBUG] [Thread-152786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:56:20.474 [DEBUG] [Thread-152786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:56:20.474 [DEBUG] [Thread-152786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:56:20.474 [DEBUG] [Thread-152786] [transport.py] [_log()] Compression: none
2025-09-29T09:56:20.474 [DEBUG] [Thread-152786] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:56:20.489 [DEBUG] [Thread-152786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:56:20.490 [DEBUG] [Thread-152786] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:56:20.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:56:20.491 [DEBUG] [Thread-152786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:56:20.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:56:20.492 [DEBUG] [Thread-152786] [transport.py] [_log()] userauth is OK
2025-09-29T09:56:20.493 [DEBUG] [Thread-152786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:56:20.493 [DEBUG] [Thread-152786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:56:20.493 [DEBUG] [Thread-152786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:56:20.493 [DEBUG] [Thread-152786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:56:20.511 [INFO] [Thread-152786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:56:20.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:56:21.245 [DEBUG] [Thread-152786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:56:21.245 [DEBUG] [Thread-152786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:56:21.246 [DEBUG] [Thread-152786] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:56:21.286 [DEBUG] [Thread-152786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:56:21.286 [DEBUG] [Thread-152786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:56:21.289 [DEBUG] [Thread-152786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:56:21.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:56:21.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:56:21.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:56:21.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:56:21.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:56:21.306 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:56:21.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:56:21.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:56:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:56:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.330282 -999.00   +9.70  21.46     70   +4.60 1 1 1 1 1   888    0 6.30 63.38 ----- 14.6 21.5 160.0 27.7 15.7 -27.1 14.4 -30.0 13.3 -26.3 14.5 -26.6
2025-09-29T09:56:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:56:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:56:21.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.330282
2025-09-29T09:56:21.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:56:21.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:56:21.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:56:21.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:56:21.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:56:21.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:56:04', tmtdew=6.52, humidity=63.88, cloud=0.0, wind=24.56, temperature=10.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:55:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:56:21.309 [DEBUG] [Thread-152786] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:56:21.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:56:21.402 [DEBUG] [Thread-152789] [transport.py] [_log()] starting thread (client mode): 0x2b91d060
2025-09-29T09:56:21.402 [DEBUG] [Thread-152789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:56:21.417 [DEBUG] [Thread-152789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:56:21.417 [INFO] [Thread-152789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:56:21.425 [DEBUG] [Thread-152789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:56:21.425 [DEBUG] [Thread-152789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:56:21.425 [DEBUG] [Thread-152789] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:56:21.425 [DEBUG] [Thread-152789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:21.425 [DEBUG] [Thread-152789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:21.425 [DEBUG] [Thread-152789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:21.425 [DEBUG] [Thread-152789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:21.425 [DEBUG] [Thread-152789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] client lang: <none>
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] server lang: <none>
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] kex follows: False
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:56:21.426 [DEBUG] [Thread-152789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:56:21.427 [DEBUG] [Thread-152789] [transport.py] [_log()] Compression: none
2025-09-29T09:56:21.427 [DEBUG] [Thread-152789] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:56:21.483 [DEBUG] [Thread-152789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:56:21.483 [DEBUG] [Thread-152789] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:56:21.484 [DEBUG] [Thread-152789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:56:21.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:56:21.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:56:21.539 [DEBUG] [Thread-152789] [transport.py] [_log()] userauth is OK
2025-09-29T09:56:21.539 [DEBUG] [Thread-152789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:56:21.539 [DEBUG] [Thread-152789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:56:21.539 [DEBUG] [Thread-152789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:56:21.539 [DEBUG] [Thread-152789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:56:21.558 [INFO] [Thread-152789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:56:21.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:56:21.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:56:22.545 [DEBUG] [Thread-152789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:56:22.545 [DEBUG] [Thread-152789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:56:22.593 [DEBUG] [Thread-152789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:56:22.593 [DEBUG] [Thread-152789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:56:22.603 [DEBUG] [Thread-152789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:56:22.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:56:22.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:56:22.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:56:22.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:56:22.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:56:22.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:56:22.638 [DEBUG] [Thread-152789] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:56:23.390 [DEBUG] [Thread-152791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:56:25.572 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:56:25.573 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:56:31.217 [DEBUG] [Thread-152792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:56:32.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:56:32.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:56:32.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:56:33.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 56, 4), 6.52, 63.88, 0.0, 24.56, 10.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:56:33.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:56:04
2025-09-29T09:56:33.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:56:33.485 [DEBUG] [Thread-152793] [transport.py] [_log()] starting thread (client mode): 0x28705240
2025-09-29T09:56:33.486 [DEBUG] [Thread-152793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:56:33.506 [DEBUG] [Thread-152793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:56:33.507 [INFO] [Thread-152793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:56:33.510 [DEBUG] [Thread-152793] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:56:33.510 [DEBUG] [Thread-152793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:56:33.510 [DEBUG] [Thread-152793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:56:33.510 [DEBUG] [Thread-152793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] client lang: <none>
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] server lang: <none>
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] kex follows: False
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] Compression: none
2025-09-29T09:56:33.511 [DEBUG] [Thread-152793] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:56:33.528 [DEBUG] [Thread-152793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:56:33.529 [DEBUG] [Thread-152793] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:56:33.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:56:33.529 [DEBUG] [Thread-152793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:56:33.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:56:33.532 [DEBUG] [Thread-152793] [transport.py] [_log()] userauth is OK
2025-09-29T09:56:33.532 [DEBUG] [Thread-152793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:56:33.532 [DEBUG] [Thread-152793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:56:33.532 [DEBUG] [Thread-152793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:56:33.532 [DEBUG] [Thread-152793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:56:33.554 [INFO] [Thread-152793] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:56:33.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:56:34.307 [DEBUG] [Thread-152793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:56:34.308 [DEBUG] [Thread-152793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:56:34.308 [DEBUG] [Thread-152793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:56:34.348 [DEBUG] [Thread-152793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:56:34.348 [DEBUG] [Thread-152793] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:56:34.350 [DEBUG] [Thread-152793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:56:34.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:56:34.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:56:34.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:56:34.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:56:34.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:56:34.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:56:34.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:56:34.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:56:34.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:56:34.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.330282 -999.00   +9.70  21.46     70   +4.60 1 1 1 1 1   888    0 6.30 63.38 ----- 14.6 21.5 160.0 27.7 15.7 -27.1 14.4 -30.0 13.3 -26.3 14.5 -26.6
2025-09-29T09:56:34.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:56:34.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:56:34.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.330282
2025-09-29T09:56:34.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:56:34.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:56:34.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:56:34.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:56:34.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T09:56:34.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:56:04', tmtdew=6.52, humidity=63.88, cloud=0.0, wind=24.56, temperature=10.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:55:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:56:34.368 [DEBUG] [Thread-152793] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:56:34.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:56:38.417 [DEBUG] [Thread-152796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:56:53.442 [DEBUG] [Thread-152797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:57:08.471 [DEBUG] [Thread-152798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:57:23.500 [DEBUG] [Thread-152799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:57:25.714 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:57:25.715 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:57:31.284 [DEBUG] [Thread-152800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:57:38.530 [DEBUG] [Thread-152801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:57:53.558 [DEBUG] [Thread-152802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:58:08.585 [DEBUG] [Thread-152803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:58:23.617 [DEBUG] [Thread-152804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:58:25.856 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:58:25.857 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:58:31.344 [DEBUG] [Thread-152805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:58:38.647 [DEBUG] [Thread-152806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:58:48.507 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T09:58:53.674 [DEBUG] [Thread-152807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:58:58.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:58:58.517 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:58:58.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:58:59.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 58, 43), 7.04, 61.93, 0.0, 24.7, 10.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:58:59.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:58:43
2025-09-29T09:58:59.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:58:59.391 [DEBUG] [Thread-152808] [transport.py] [_log()] starting thread (client mode): 0x28706680
2025-09-29T09:58:59.391 [DEBUG] [Thread-152808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:58:59.411 [DEBUG] [Thread-152808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:58:59.411 [INFO] [Thread-152808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:58:59.414 [DEBUG] [Thread-152808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] client lang: <none>
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] server lang: <none>
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] kex follows: False
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] Compression: none
2025-09-29T09:58:59.415 [DEBUG] [Thread-152808] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:58:59.431 [DEBUG] [Thread-152808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:58:59.432 [DEBUG] [Thread-152808] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:58:59.432 [DEBUG] [Thread-152808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:58:59.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:58:59.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:58:59.434 [DEBUG] [Thread-152808] [transport.py] [_log()] userauth is OK
2025-09-29T09:58:59.434 [DEBUG] [Thread-152808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:58:59.434 [DEBUG] [Thread-152808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:58:59.434 [DEBUG] [Thread-152808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:58:59.434 [DEBUG] [Thread-152808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:58:59.454 [INFO] [Thread-152808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:58:59.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:59:00.147 [DEBUG] [Thread-152808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:59:00.148 [DEBUG] [Thread-152808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:59:00.148 [DEBUG] [Thread-152808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:59:00.188 [DEBUG] [Thread-152808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:59:00.188 [DEBUG] [Thread-152808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:59:00.191 [DEBUG] [Thread-152808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:59:00.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:59:00.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:59:00.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:59:00.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:59:00.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:59:00.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:59:00.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:59:00.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:59:00.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:59:00.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.332365 -999.00  +10.20  21.63     68   +4.50 1 2 1 1 1   888    0 6.79 77.32 ----- 21.5 21.6 132.4 25.4 16.0 -22.2 15.0 -21.4 13.9 -21.6 14.9 -22.8
2025-09-29T09:59:00.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:59:00.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:59:00.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.332365
2025-09-29T09:59:00.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:59:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:59:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:59:00.215 [DEBUG] [Thread-152808] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:59:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:59:00.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:59:00.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:58:43', tmtdew=7.04, humidity=61.93, cloud=0.0, wind=24.7, temperature=10.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:58:36.336', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:59:00.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:59:00.310 [DEBUG] [Thread-152811] [transport.py] [_log()] starting thread (client mode): 0x2b9bbe20
2025-09-29T09:59:00.310 [DEBUG] [Thread-152811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:59:00.325 [DEBUG] [Thread-152811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:59:00.325 [INFO] [Thread-152811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:59:00.334 [DEBUG] [Thread-152811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:59:00.334 [DEBUG] [Thread-152811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:59:00.334 [DEBUG] [Thread-152811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:59:00.334 [DEBUG] [Thread-152811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] client lang: <none>
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] server lang: <none>
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] kex follows: False
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] Compression: none
2025-09-29T09:59:00.335 [DEBUG] [Thread-152811] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:59:00.392 [DEBUG] [Thread-152811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:59:00.392 [DEBUG] [Thread-152811] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:59:00.393 [DEBUG] [Thread-152811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:59:00.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:59:00.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:59:00.451 [DEBUG] [Thread-152811] [transport.py] [_log()] userauth is OK
2025-09-29T09:59:00.452 [DEBUG] [Thread-152811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:59:00.452 [DEBUG] [Thread-152811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:59:00.452 [DEBUG] [Thread-152811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:59:00.452 [DEBUG] [Thread-152811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:59:00.471 [INFO] [Thread-152811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:59:00.471 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:59:00.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:59:01.430 [DEBUG] [Thread-152811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:59:01.431 [DEBUG] [Thread-152811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:59:01.478 [DEBUG] [Thread-152811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:59:01.478 [DEBUG] [Thread-152811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:59:01.487 [DEBUG] [Thread-152811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:59:01.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:59:01.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:59:01.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:59:01.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:59:01.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:59:01.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:59:01.521 [DEBUG] [Thread-152811] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:59:08.701 [DEBUG] [Thread-152813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:59:11.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:59:11.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:59:11.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:59:12.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 58, 43), 7.04, 61.93, 0.0, 24.7, 10.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:59:12.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:58:43
2025-09-29T09:59:12.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:59:12.401 [DEBUG] [Thread-152814] [transport.py] [_log()] starting thread (client mode): 0x28704490
2025-09-29T09:59:12.401 [DEBUG] [Thread-152814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:59:12.422 [DEBUG] [Thread-152814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:59:12.422 [INFO] [Thread-152814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:59:12.425 [DEBUG] [Thread-152814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:59:12.425 [DEBUG] [Thread-152814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:59:12.425 [DEBUG] [Thread-152814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:59:12.425 [DEBUG] [Thread-152814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:12.425 [DEBUG] [Thread-152814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:12.425 [DEBUG] [Thread-152814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] client lang: <none>
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] server lang: <none>
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] kex follows: False
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] Compression: none
2025-09-29T09:59:12.426 [DEBUG] [Thread-152814] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:59:12.443 [DEBUG] [Thread-152814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:59:12.444 [DEBUG] [Thread-152814] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:59:12.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:59:12.445 [DEBUG] [Thread-152814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:59:12.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:59:12.447 [DEBUG] [Thread-152814] [transport.py] [_log()] userauth is OK
2025-09-29T09:59:12.447 [DEBUG] [Thread-152814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:59:12.447 [DEBUG] [Thread-152814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:59:12.447 [DEBUG] [Thread-152814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:59:12.447 [DEBUG] [Thread-152814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:59:12.479 [INFO] [Thread-152814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:59:12.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:59:13.113 [DEBUG] [Thread-152814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:59:13.113 [DEBUG] [Thread-152814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:59:13.113 [DEBUG] [Thread-152814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:59:13.154 [DEBUG] [Thread-152814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:59:13.154 [DEBUG] [Thread-152814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:59:13.157 [DEBUG] [Thread-152814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:59:13.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:59:13.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:59:13.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:59:13.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:59:13.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:59:13.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:59:13.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:59:13.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:59:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:59:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.332365 -999.00  +10.20  21.63     68   +4.50 1 2 1 1 1   888    0 6.79 77.32 ----- 21.5 21.6 132.4 25.4 16.0 -22.2 15.0 -21.4 13.9 -21.6 14.9 -22.8
2025-09-29T09:59:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:59:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:59:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.332365
2025-09-29T09:59:13.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:59:13.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:59:13.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:59:13.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:59:13.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:59:13.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:58:43', tmtdew=7.04, humidity=61.93, cloud=0.0, wind=24.7, temperature=10.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:58:36.336', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:59:13.187 [DEBUG] [Thread-152814] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:59:13.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:59:13.282 [DEBUG] [Thread-152817] [transport.py] [_log()] starting thread (client mode): 0x287079a0
2025-09-29T09:59:13.282 [DEBUG] [Thread-152817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:59:13.300 [DEBUG] [Thread-152817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:59:13.300 [INFO] [Thread-152817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:59:13.307 [DEBUG] [Thread-152817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:59:13.308 [DEBUG] [Thread-152817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:59:13.308 [DEBUG] [Thread-152817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:59:13.308 [DEBUG] [Thread-152817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:13.308 [DEBUG] [Thread-152817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:13.308 [DEBUG] [Thread-152817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:13.308 [DEBUG] [Thread-152817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:13.308 [DEBUG] [Thread-152817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:59:13.308 [DEBUG] [Thread-152817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] client lang: <none>
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] server lang: <none>
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] kex follows: False
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:59:13.309 [DEBUG] [Thread-152817] [transport.py] [_log()] Compression: none
2025-09-29T09:59:13.310 [DEBUG] [Thread-152817] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:59:13.367 [DEBUG] [Thread-152817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:59:13.367 [DEBUG] [Thread-152817] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:59:13.368 [DEBUG] [Thread-152817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:59:13.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:59:13.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:59:13.426 [DEBUG] [Thread-152817] [transport.py] [_log()] userauth is OK
2025-09-29T09:59:13.426 [DEBUG] [Thread-152817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:59:13.426 [DEBUG] [Thread-152817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:59:13.426 [DEBUG] [Thread-152817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:59:13.427 [DEBUG] [Thread-152817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:59:13.445 [INFO] [Thread-152817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:59:13.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:59:13.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:59:14.380 [DEBUG] [Thread-152817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:59:14.380 [DEBUG] [Thread-152817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:59:14.429 [DEBUG] [Thread-152817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:59:14.429 [DEBUG] [Thread-152817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:59:14.437 [DEBUG] [Thread-152817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:59:14.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:59:14.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:59:14.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:59:14.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:59:14.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:59:14.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:59:14.468 [DEBUG] [Thread-152817] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:59:23.735 [DEBUG] [Thread-152819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:59:24.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:59:24.470 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:59:24.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:59:25.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 59, 16), 6.94, 62.36, 0.0, 26.84, 10.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:59:25.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:59:16
2025-09-29T09:59:25.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:59:25.325 [DEBUG] [Thread-152820] [transport.py] [_log()] starting thread (client mode): 0x28704640
2025-09-29T09:59:25.325 [DEBUG] [Thread-152820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:59:25.339 [DEBUG] [Thread-152820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:59:25.339 [INFO] [Thread-152820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] client lang: <none>
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] server lang: <none>
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] kex follows: False
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:59:25.341 [DEBUG] [Thread-152820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:59:25.342 [DEBUG] [Thread-152820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:59:25.342 [DEBUG] [Thread-152820] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:59:25.342 [DEBUG] [Thread-152820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:59:25.342 [DEBUG] [Thread-152820] [transport.py] [_log()] Compression: none
2025-09-29T09:59:25.342 [DEBUG] [Thread-152820] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:59:25.363 [DEBUG] [Thread-152820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:59:25.363 [DEBUG] [Thread-152820] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:59:25.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:59:25.364 [DEBUG] [Thread-152820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:59:25.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:59:25.366 [DEBUG] [Thread-152820] [transport.py] [_log()] userauth is OK
2025-09-29T09:59:25.366 [DEBUG] [Thread-152820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:59:25.366 [DEBUG] [Thread-152820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:59:25.366 [DEBUG] [Thread-152820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:59:25.366 [DEBUG] [Thread-152820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:59:25.391 [INFO] [Thread-152820] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:59:25.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:59:25.998 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:59:25.999 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:59:26.010 [DEBUG] [Thread-152820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:59:26.011 [DEBUG] [Thread-152820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:59:26.011 [DEBUG] [Thread-152820] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:59:26.051 [DEBUG] [Thread-152820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:59:26.051 [DEBUG] [Thread-152820] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:59:26.053 [DEBUG] [Thread-152820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:59:26.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:59:26.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:59:26.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:59:26.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:59:26.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:59:26.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:59:26.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:59:26.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:59:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:59:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.332713 -999.00  +10.30  25.44     68   +4.70 1 2 1 1 1   888    0 6.97 79.43 ----- 27.3 25.4 139.0 29.4 16.2 -22.1 15.2 -22.0 14.0 -22.5 15.1 -23.7
2025-09-29T09:59:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:59:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:59:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.332713
2025-09-29T09:59:26.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:59:26.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:59:26.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:59:26.070 [DEBUG] [Thread-152820] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:59:26.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:59:26.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:59:26.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:59:16', tmtdew=6.94, humidity=62.36, cloud=0.0, wind=26.84, temperature=10.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:59:06.403', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:59:26.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:59:26.165 [DEBUG] [Thread-152823] [transport.py] [_log()] starting thread (client mode): 0x287069e0
2025-09-29T09:59:26.165 [DEBUG] [Thread-152823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:59:26.181 [DEBUG] [Thread-152823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T09:59:26.181 [INFO] [Thread-152823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T09:59:26.189 [DEBUG] [Thread-152823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:59:26.189 [DEBUG] [Thread-152823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T09:59:26.189 [DEBUG] [Thread-152823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:59:26.189 [DEBUG] [Thread-152823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] client lang: <none>
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] server lang: <none>
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] kex follows: False
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] Compression: none
2025-09-29T09:59:26.190 [DEBUG] [Thread-152823] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:59:26.247 [DEBUG] [Thread-152823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:59:26.248 [DEBUG] [Thread-152823] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:59:26.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T09:59:26.249 [DEBUG] [Thread-152823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T09:59:26.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:59:26.303 [DEBUG] [Thread-152823] [transport.py] [_log()] userauth is OK
2025-09-29T09:59:26.304 [DEBUG] [Thread-152823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:59:26.304 [DEBUG] [Thread-152823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:59:26.304 [DEBUG] [Thread-152823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T09:59:26.304 [DEBUG] [Thread-152823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:59:26.323 [INFO] [Thread-152823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:59:26.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T09:59:26.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:59:27.333 [DEBUG] [Thread-152823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:59:27.334 [DEBUG] [Thread-152823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:59:27.381 [DEBUG] [Thread-152823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:59:27.381 [DEBUG] [Thread-152823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:59:27.390 [DEBUG] [Thread-152823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:59:27.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:59:27.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T09:59:27.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T09:59:27.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:59:27.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:59:27.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:59:27.425 [DEBUG] [Thread-152823] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:59:31.387 [DEBUG] [Thread-152825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:59:37.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T09:59:37.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T09:59:37.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T09:59:38.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 9, 59, 16), 6.94, 62.36, 0.0, 26.84, 10.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T09:59:38.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 09:59:16
2025-09-29T09:59:38.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T09:59:38.292 [DEBUG] [Thread-152826] [transport.py] [_log()] starting thread (client mode): 0x28704e80
2025-09-29T09:59:38.292 [DEBUG] [Thread-152826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T09:59:38.312 [DEBUG] [Thread-152826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T09:59:38.312 [INFO] [Thread-152826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T09:59:38.315 [DEBUG] [Thread-152826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T09:59:38.315 [DEBUG] [Thread-152826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T09:59:38.315 [DEBUG] [Thread-152826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T09:59:38.315 [DEBUG] [Thread-152826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] client lang: <none>
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] server lang: <none>
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] kex follows: False
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] Compression: none
2025-09-29T09:59:38.316 [DEBUG] [Thread-152826] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T09:59:38.331 [DEBUG] [Thread-152826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T09:59:38.332 [DEBUG] [Thread-152826] [transport.py] [_log()] Switch to new keys ...
2025-09-29T09:59:38.332 [DEBUG] [Thread-152826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T09:59:38.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T09:59:38.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T09:59:38.334 [DEBUG] [Thread-152826] [transport.py] [_log()] userauth is OK
2025-09-29T09:59:38.335 [DEBUG] [Thread-152826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T09:59:38.335 [DEBUG] [Thread-152826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T09:59:38.335 [DEBUG] [Thread-152826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T09:59:38.335 [DEBUG] [Thread-152826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T09:59:38.352 [INFO] [Thread-152826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T09:59:38.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T09:59:38.766 [DEBUG] [Thread-152828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T09:59:38.955 [DEBUG] [Thread-152826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T09:59:38.955 [DEBUG] [Thread-152826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T09:59:38.955 [DEBUG] [Thread-152826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T09:59:38.996 [DEBUG] [Thread-152826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T09:59:38.997 [DEBUG] [Thread-152826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T09:59:38.999 [DEBUG] [Thread-152826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T09:59:39.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T09:59:39.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T09:59:39.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T09:59:39.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T09:59:39.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T09:59:39.021 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T09:59:39.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T09:59:39.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T09:59:39.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T09:59:39.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.332713 -999.00  +10.30  25.44     68   +4.70 1 2 1 1 1   888    0 6.97 79.43 ----- 27.3 25.4 139.0 29.4 16.2 -22.1 15.2 -22.0 14.0 -22.5 15.1 -23.7
2025-09-29T09:59:39.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T09:59:39.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T09:59:39.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.332713
2025-09-29T09:59:39.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T09:59:39.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T09:59:39.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T09:59:39.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T09:59:39.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T09:59:39.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T09:59:16', tmtdew=6.94, humidity=62.36, cloud=0.0, wind=26.84, temperature=10.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T07:59:06.403', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T09:59:39.024 [DEBUG] [Thread-152826] [transport.py] [_log()] EOF in transport thread
2025-09-29T09:59:39.108 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T09:59:53.810 [DEBUG] [Thread-152830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:00:08.836 [DEBUG] [Thread-152831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:00:23.861 [DEBUG] [Thread-152832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:00:26.149 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:00:26.151 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:00:31.432 [DEBUG] [Thread-152833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:00:38.885 [DEBUG] [Thread-152834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:00:53.907 [DEBUG] [Thread-152835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:01:08.932 [DEBUG] [Thread-152836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:01:23.961 [DEBUG] [Thread-152837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:01:26.291 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:01:26.292 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:01:31.487 [DEBUG] [Thread-152838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:01:38.985 [DEBUG] [Thread-152839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:01:52.826 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T10:01:54.014 [DEBUG] [Thread-152840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:02:02.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:02:02.828 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:02:02.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:02:03.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 1, 56), 7.04, 61.78, 0.0, 31.5, 10.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:02:03.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:01:56
2025-09-29T10:02:03.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:02:03.696 [DEBUG] [Thread-152841] [transport.py] [_log()] starting thread (client mode): 0x28707400
2025-09-29T10:02:03.696 [DEBUG] [Thread-152841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:03.716 [DEBUG] [Thread-152841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:02:03.716 [INFO] [Thread-152841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:02:03.719 [DEBUG] [Thread-152841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] Compression: none
2025-09-29T10:02:03.720 [DEBUG] [Thread-152841] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:03.736 [DEBUG] [Thread-152841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:03.736 [DEBUG] [Thread-152841] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:03.736 [DEBUG] [Thread-152841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:02:03.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:02:03.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:03.737 [DEBUG] [Thread-152841] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:03.737 [DEBUG] [Thread-152841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:03.737 [DEBUG] [Thread-152841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:03.737 [DEBUG] [Thread-152841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:02:03.737 [DEBUG] [Thread-152841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:03.746 [INFO] [Thread-152841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:03.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:04.346 [DEBUG] [Thread-152841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:04.346 [DEBUG] [Thread-152841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:04.346 [DEBUG] [Thread-152841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:02:04.387 [DEBUG] [Thread-152841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:04.387 [DEBUG] [Thread-152841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:04.390 [DEBUG] [Thread-152841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:04.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:04.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:02:04.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:02:04.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:02:04.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:04.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:02:04.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:04.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:02:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.334449 -999.00  +10.30  30.94     67   +4.50 1 1 2 1 1   888    0 7.21 84.19 ----- 27.1 30.9 139.4 35.7 16.5 -24.8 15.4 -23.8 14.2 -24.2 15.2 -25.9
2025-09-29T10:02:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:02:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:02:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.334449
2025-09-29T10:02:04.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:02:04.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:02:04.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:02:04.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:02:04.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:02:04.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:01:56', tmtdew=7.04, humidity=61.78, cloud=0.0, wind=31.5, temperature=10.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:01:36.394', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:02:04.415 [DEBUG] [Thread-152841] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:04.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:02:04.511 [DEBUG] [Thread-152844] [transport.py] [_log()] starting thread (client mode): 0x287059f0
2025-09-29T10:02:04.511 [DEBUG] [Thread-152844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:04.526 [DEBUG] [Thread-152844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:02:04.526 [INFO] [Thread-152844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:02:04.533 [DEBUG] [Thread-152844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] Compression: none
2025-09-29T10:02:04.534 [DEBUG] [Thread-152844] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:04.591 [DEBUG] [Thread-152844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:04.591 [DEBUG] [Thread-152844] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:04.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:02:04.592 [DEBUG] [Thread-152844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:02:04.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:04.647 [DEBUG] [Thread-152844] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:04.647 [DEBUG] [Thread-152844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:04.647 [DEBUG] [Thread-152844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:04.647 [DEBUG] [Thread-152844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:02:04.647 [DEBUG] [Thread-152844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:04.666 [INFO] [Thread-152844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:04.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:02:04.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:05.657 [DEBUG] [Thread-152844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:05.657 [DEBUG] [Thread-152844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:05.705 [DEBUG] [Thread-152844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:05.706 [DEBUG] [Thread-152844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:05.715 [DEBUG] [Thread-152844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:05.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:05.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:02:05.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:02:05.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:05.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:05.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:05.752 [DEBUG] [Thread-152844] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:09.046 [DEBUG] [Thread-152846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:02:15.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:02:15.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:02:15.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:02:16.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 1, 56), 7.04, 61.78, 0.0, 31.5, 10.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:02:16.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:01:56
2025-09-29T10:02:16.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:02:16.617 [DEBUG] [Thread-152847] [transport.py] [_log()] starting thread (client mode): 0x2b9b8190
2025-09-29T10:02:16.617 [DEBUG] [Thread-152847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:16.637 [DEBUG] [Thread-152847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:02:16.637 [INFO] [Thread-152847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:16.639 [DEBUG] [Thread-152847] [transport.py] [_log()] Compression: none
2025-09-29T10:02:16.640 [DEBUG] [Thread-152847] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:16.651 [DEBUG] [Thread-152847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:16.651 [DEBUG] [Thread-152847] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:16.652 [DEBUG] [Thread-152847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:02:16.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:02:16.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:16.653 [DEBUG] [Thread-152847] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:16.654 [DEBUG] [Thread-152847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:16.654 [DEBUG] [Thread-152847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:16.654 [DEBUG] [Thread-152847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:02:16.654 [DEBUG] [Thread-152847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:16.671 [INFO] [Thread-152847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:16.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:17.319 [DEBUG] [Thread-152847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:17.319 [DEBUG] [Thread-152847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:17.319 [DEBUG] [Thread-152847] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:02:17.360 [DEBUG] [Thread-152847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:17.360 [DEBUG] [Thread-152847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:17.362 [DEBUG] [Thread-152847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:17.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:17.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:02:17.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:02:17.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:02:17.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:17.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:02:17.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:17.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:02:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.334796 -999.00  +10.10  25.09     67   +4.30 1 1 1 1 1   888    0 7.35 87.12 ----- 24.7 25.1 135.8 39.8 16.5 -24.2 15.4 -23.5 14.3 -23.9 15.2 -25.0
2025-09-29T10:02:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:02:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:02:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.334796
2025-09-29T10:02:17.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:02:17.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:02:17.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:02:17.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:02:17.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:02:17.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:01:56', tmtdew=7.04, humidity=61.78, cloud=0.0, wind=31.5, temperature=10.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:02:06.374', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:02:17.380 [DEBUG] [Thread-152847] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:17.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:02:17.462 [DEBUG] [Thread-152850] [transport.py] [_log()] starting thread (client mode): 0x28707c10
2025-09-29T10:02:17.463 [DEBUG] [Thread-152850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:17.480 [DEBUG] [Thread-152850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:02:17.480 [INFO] [Thread-152850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] Compression: none
2025-09-29T10:02:17.488 [DEBUG] [Thread-152850] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:17.551 [DEBUG] [Thread-152850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:17.551 [DEBUG] [Thread-152850] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:17.552 [DEBUG] [Thread-152850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:02:17.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:02:17.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:17.607 [DEBUG] [Thread-152850] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:17.607 [DEBUG] [Thread-152850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:17.607 [DEBUG] [Thread-152850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:17.608 [DEBUG] [Thread-152850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:02:17.608 [DEBUG] [Thread-152850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:17.626 [INFO] [Thread-152850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:17.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:02:17.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:18.604 [DEBUG] [Thread-152850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:18.604 [DEBUG] [Thread-152850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:18.652 [DEBUG] [Thread-152850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:18.652 [DEBUG] [Thread-152850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:18.661 [DEBUG] [Thread-152850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:18.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:18.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:02:18.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:02:18.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:18.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:18.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:18.695 [DEBUG] [Thread-152850] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:24.100 [DEBUG] [Thread-152852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:02:26.440 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:02:26.441 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:02:28.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:02:28.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:02:28.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:02:29.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 1, 56), 7.04, 61.78, 0.0, 31.5, 10.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:02:29.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:01:56
2025-09-29T10:02:29.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:02:29.601 [DEBUG] [Thread-152853] [transport.py] [_log()] starting thread (client mode): 0x287077f0
2025-09-29T10:02:29.601 [DEBUG] [Thread-152853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:29.621 [DEBUG] [Thread-152853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:02:29.621 [INFO] [Thread-152853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:02:29.622 [DEBUG] [Thread-152853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:29.622 [DEBUG] [Thread-152853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] Compression: none
2025-09-29T10:02:29.623 [DEBUG] [Thread-152853] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:29.631 [DEBUG] [Thread-152853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:29.631 [DEBUG] [Thread-152853] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:29.632 [DEBUG] [Thread-152853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:02:29.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:02:29.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:29.632 [DEBUG] [Thread-152853] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:29.632 [DEBUG] [Thread-152853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:29.632 [DEBUG] [Thread-152853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:29.632 [DEBUG] [Thread-152853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:02:29.632 [DEBUG] [Thread-152853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:29.641 [INFO] [Thread-152853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:29.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:30.291 [DEBUG] [Thread-152853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:30.291 [DEBUG] [Thread-152853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:30.291 [DEBUG] [Thread-152853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:02:30.332 [DEBUG] [Thread-152853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:30.332 [DEBUG] [Thread-152853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:30.334 [DEBUG] [Thread-152853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:30.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:30.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:02:30.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:02:30.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:02:30.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:30.353 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:02:30.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.334796 -999.00  +10.10  25.09     67   +4.30 1 1 1 1 1   888    0 7.35 87.12 ----- 24.7 25.1 135.8 39.8 16.5 -24.2 15.4 -23.5 14.3 -23.9 15.2 -25.0
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.334796
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:02:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:01:56', tmtdew=7.04, humidity=61.78, cloud=0.0, wind=31.5, temperature=10.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:02:06.374', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:02:30.354 [DEBUG] [Thread-152853] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:30.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:02:30.438 [DEBUG] [Thread-152856] [transport.py] [_log()] starting thread (client mode): 0x28706e00
2025-09-29T10:02:30.439 [DEBUG] [Thread-152856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:30.454 [DEBUG] [Thread-152856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:02:30.454 [INFO] [Thread-152856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:02:30.461 [DEBUG] [Thread-152856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] Compression: none
2025-09-29T10:02:30.462 [DEBUG] [Thread-152856] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:30.518 [DEBUG] [Thread-152856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:30.519 [DEBUG] [Thread-152856] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:30.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:02:30.519 [DEBUG] [Thread-152856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:02:30.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:30.575 [DEBUG] [Thread-152856] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:30.575 [DEBUG] [Thread-152856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:30.575 [DEBUG] [Thread-152856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:30.575 [DEBUG] [Thread-152856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:02:30.575 [DEBUG] [Thread-152856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:30.591 [INFO] [Thread-152856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:30.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:02:30.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:31.546 [DEBUG] [Thread-152858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:02:31.565 [DEBUG] [Thread-152856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:31.565 [DEBUG] [Thread-152856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:31.613 [DEBUG] [Thread-152856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:31.614 [DEBUG] [Thread-152856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:31.623 [DEBUG] [Thread-152856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:31.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:31.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:02:31.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:02:31.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:31.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:31.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:31.658 [DEBUG] [Thread-152856] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:39.143 [DEBUG] [Thread-152859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:02:41.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:02:41.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:02:41.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:02:42.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 2, 28), 7.03, 61.77, 0.0, 30.21, 10.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:02:42.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:02:28
2025-09-29T10:02:42.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:02:42.520 [DEBUG] [Thread-152860] [transport.py] [_log()] starting thread (client mode): 0x28706c20
2025-09-29T10:02:42.520 [DEBUG] [Thread-152860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:42.539 [DEBUG] [Thread-152860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:02:42.539 [INFO] [Thread-152860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:42.543 [DEBUG] [Thread-152860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:42.544 [DEBUG] [Thread-152860] [transport.py] [_log()] Compression: none
2025-09-29T10:02:42.544 [DEBUG] [Thread-152860] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:42.558 [DEBUG] [Thread-152860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:42.558 [DEBUG] [Thread-152860] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:42.558 [DEBUG] [Thread-152860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:02:42.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:02:42.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:42.559 [DEBUG] [Thread-152860] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:42.559 [DEBUG] [Thread-152860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:42.559 [DEBUG] [Thread-152860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:42.559 [DEBUG] [Thread-152860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:02:42.559 [DEBUG] [Thread-152860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:42.586 [INFO] [Thread-152860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:42.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:43.296 [DEBUG] [Thread-152860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:43.297 [DEBUG] [Thread-152860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:43.297 [DEBUG] [Thread-152860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:02:43.337 [DEBUG] [Thread-152860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:43.338 [DEBUG] [Thread-152860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:43.341 [DEBUG] [Thread-152860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:43.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:43.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:02:43.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:02:43.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:02:43.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:43.365 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:02:43.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:43.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:02:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.334796 -999.00  +10.10  25.09     67   +4.30 1 1 1 1 1   888    0 7.35 87.12 ----- 24.7 25.1 135.8 39.8 16.5 -24.2 15.4 -23.5 14.3 -23.9 15.2 -25.0
2025-09-29T10:02:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:02:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:02:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.334796
2025-09-29T10:02:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:02:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:02:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:02:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:02:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:02:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:02:28', tmtdew=7.03, humidity=61.77, cloud=0.0, wind=30.21, temperature=10.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:02:06.374', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:02:43.368 [DEBUG] [Thread-152860] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:43.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:02:43.475 [DEBUG] [Thread-152863] [transport.py] [_log()] starting thread (client mode): 0x28705330
2025-09-29T10:02:43.475 [DEBUG] [Thread-152863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:43.490 [DEBUG] [Thread-152863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:02:43.490 [INFO] [Thread-152863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:02:43.497 [DEBUG] [Thread-152863] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] Compression: none
2025-09-29T10:02:43.498 [DEBUG] [Thread-152863] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:43.555 [DEBUG] [Thread-152863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:43.556 [DEBUG] [Thread-152863] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:43.556 [DEBUG] [Thread-152863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:02:43.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:02:43.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:43.612 [DEBUG] [Thread-152863] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:43.612 [DEBUG] [Thread-152863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:43.612 [DEBUG] [Thread-152863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:43.612 [DEBUG] [Thread-152863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:02:43.612 [DEBUG] [Thread-152863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:43.631 [INFO] [Thread-152863] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:43.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:02:43.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:44.568 [DEBUG] [Thread-152863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:44.568 [DEBUG] [Thread-152863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:44.616 [DEBUG] [Thread-152863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:44.616 [DEBUG] [Thread-152863] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:44.625 [DEBUG] [Thread-152863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:44.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:44.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:02:44.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:02:44.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:44.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:44.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:44.662 [DEBUG] [Thread-152863] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:54.173 [DEBUG] [Thread-152865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:02:54.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:02:54.664 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:02:54.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:02:55.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 2, 28), 7.03, 61.77, 0.0, 30.21, 10.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:02:55.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:02:28
2025-09-29T10:02:55.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:02:55.517 [DEBUG] [Thread-152866] [transport.py] [_log()] starting thread (client mode): 0x2b9b9390
2025-09-29T10:02:55.517 [DEBUG] [Thread-152866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:55.540 [DEBUG] [Thread-152866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:02:55.540 [INFO] [Thread-152866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:55.544 [DEBUG] [Thread-152866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:55.545 [DEBUG] [Thread-152866] [transport.py] [_log()] Compression: none
2025-09-29T10:02:55.545 [DEBUG] [Thread-152866] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:55.562 [DEBUG] [Thread-152866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:55.562 [DEBUG] [Thread-152866] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:55.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:02:55.563 [DEBUG] [Thread-152866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:02:55.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:55.565 [DEBUG] [Thread-152866] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:55.565 [DEBUG] [Thread-152866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:55.565 [DEBUG] [Thread-152866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:55.566 [DEBUG] [Thread-152866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:02:55.566 [DEBUG] [Thread-152866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:55.588 [INFO] [Thread-152866] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:55.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:56.236 [DEBUG] [Thread-152866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:56.236 [DEBUG] [Thread-152866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:56.237 [DEBUG] [Thread-152866] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:02:56.277 [DEBUG] [Thread-152866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:56.278 [DEBUG] [Thread-152866] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:56.281 [DEBUG] [Thread-152866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:56.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:56.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:02:56.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:02:56.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:02:56.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:56.304 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:02:56.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:56.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:56.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:02:56.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.335143 -999.00  +10.20  23.72     67   +4.40 1 1 1 1 1   888    0 7.45 89.77 ----- 26.7 23.7 136.0 32.8 16.6 -23.5 15.6 -23.6 14.3 -23.8 15.3 -25.1
2025-09-29T10:02:56.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:02:56.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:02:56.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.335143
2025-09-29T10:02:56.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:02:56.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:02:56.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:02:56.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:02:56.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:02:56.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:02:28', tmtdew=7.03, humidity=61.77, cloud=0.0, wind=30.21, temperature=10.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:02:36.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:02:56.306 [DEBUG] [Thread-152866] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:02:56.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:02:56.403 [DEBUG] [Thread-152869] [transport.py] [_log()] starting thread (client mode): 0x2e34ab90
2025-09-29T10:02:56.403 [DEBUG] [Thread-152869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:02:56.417 [DEBUG] [Thread-152869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:02:56.417 [INFO] [Thread-152869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:02:56.424 [DEBUG] [Thread-152869] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:02:56.424 [DEBUG] [Thread-152869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] client lang: <none>
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] server lang: <none>
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] kex follows: False
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] Compression: none
2025-09-29T10:02:56.425 [DEBUG] [Thread-152869] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:02:56.485 [DEBUG] [Thread-152869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:02:56.485 [DEBUG] [Thread-152869] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:02:56.486 [DEBUG] [Thread-152869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:02:56.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:02:56.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:02:56.545 [DEBUG] [Thread-152869] [transport.py] [_log()] userauth is OK
2025-09-29T10:02:56.546 [DEBUG] [Thread-152869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:02:56.546 [DEBUG] [Thread-152869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:02:56.546 [DEBUG] [Thread-152869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:02:56.546 [DEBUG] [Thread-152869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:02:56.564 [INFO] [Thread-152869] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:02:56.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:02:56.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:02:57.525 [DEBUG] [Thread-152869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:02:57.525 [DEBUG] [Thread-152869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:02:57.573 [DEBUG] [Thread-152869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:02:57.574 [DEBUG] [Thread-152869] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:02:57.584 [DEBUG] [Thread-152869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:02:57.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:02:57.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:02:57.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:02:57.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:02:57.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:02:57.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:02:57.621 [DEBUG] [Thread-152869] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:07.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:03:07.615 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:03:07.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:03:08.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 3), 7.12, 61.13, 0.0, 30.23, 10.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:03:08.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:03:00
2025-09-29T10:03:08.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:03:08.509 [DEBUG] [Thread-152871] [transport.py] [_log()] starting thread (client mode): 0x28707520
2025-09-29T10:03:08.509 [DEBUG] [Thread-152871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:03:08.531 [DEBUG] [Thread-152871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:03:08.531 [INFO] [Thread-152871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] client lang: <none>
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] server lang: <none>
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] kex follows: False
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] Compression: none
2025-09-29T10:03:08.535 [DEBUG] [Thread-152871] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:03:08.550 [DEBUG] [Thread-152871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:03:08.551 [DEBUG] [Thread-152871] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:03:08.551 [DEBUG] [Thread-152871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:03:08.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:03:08.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:03:08.552 [DEBUG] [Thread-152871] [transport.py] [_log()] userauth is OK
2025-09-29T10:03:08.552 [DEBUG] [Thread-152871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:03:08.552 [DEBUG] [Thread-152871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:03:08.552 [DEBUG] [Thread-152871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:03:08.552 [DEBUG] [Thread-152871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:03:08.569 [INFO] [Thread-152871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:03:08.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:03:09.212 [DEBUG] [Thread-152873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:03:09.233 [DEBUG] [Thread-152871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:03:09.233 [DEBUG] [Thread-152871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:03:09.233 [DEBUG] [Thread-152871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:03:09.274 [DEBUG] [Thread-152871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:03:09.274 [DEBUG] [Thread-152871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:03:09.277 [DEBUG] [Thread-152871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:03:09.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:03:09.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:03:09.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:03:09.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:03:09.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:03:09.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:03:09.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:03:09.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.335143 -999.00  +10.20  23.72     67   +4.40 1 1 1 1 1   888    0 7.45 89.77 ----- 26.7 23.7 136.0 32.8 16.6 -23.5 15.6 -23.6 14.3 -23.8 15.3 -25.1
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.335143
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:03:09.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:03:00', tmtdew=7.12, humidity=61.13, cloud=0.0, wind=30.23, temperature=10.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:02:36.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:03:09.296 [DEBUG] [Thread-152871] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:09.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:03:09.381 [DEBUG] [Thread-152875] [transport.py] [_log()] starting thread (client mode): 0x2b9b9000
2025-09-29T10:03:09.381 [DEBUG] [Thread-152875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:03:09.397 [DEBUG] [Thread-152875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:03:09.398 [INFO] [Thread-152875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] client lang: <none>
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] server lang: <none>
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] kex follows: False
2025-09-29T10:03:09.407 [DEBUG] [Thread-152875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:03:09.408 [DEBUG] [Thread-152875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:03:09.408 [DEBUG] [Thread-152875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:03:09.408 [DEBUG] [Thread-152875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:03:09.408 [DEBUG] [Thread-152875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:03:09.408 [DEBUG] [Thread-152875] [transport.py] [_log()] Compression: none
2025-09-29T10:03:09.408 [DEBUG] [Thread-152875] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:03:09.465 [DEBUG] [Thread-152875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:03:09.466 [DEBUG] [Thread-152875] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:03:09.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:03:09.466 [DEBUG] [Thread-152875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:03:09.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:03:09.525 [DEBUG] [Thread-152875] [transport.py] [_log()] userauth is OK
2025-09-29T10:03:09.525 [DEBUG] [Thread-152875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:03:09.525 [DEBUG] [Thread-152875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:03:09.525 [DEBUG] [Thread-152875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:03:09.525 [DEBUG] [Thread-152875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:03:09.547 [INFO] [Thread-152875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:03:09.548 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:03:09.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:03:10.517 [DEBUG] [Thread-152875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:03:10.517 [DEBUG] [Thread-152875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:03:10.566 [DEBUG] [Thread-152875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:03:10.567 [DEBUG] [Thread-152875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:03:10.582 [DEBUG] [Thread-152875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:03:10.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:03:10.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:03:10.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:03:10.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:03:10.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:03:10.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:03:10.619 [DEBUG] [Thread-152875] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:20.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:03:20.618 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:03:20.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:03:21.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 3), 7.12, 61.13, 0.0, 30.23, 10.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:03:21.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:03:00
2025-09-29T10:03:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:03:21.488 [DEBUG] [Thread-152877] [transport.py] [_log()] starting thread (client mode): 0x2b9a5000
2025-09-29T10:03:21.488 [DEBUG] [Thread-152877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:03:21.509 [DEBUG] [Thread-152877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:03:21.509 [INFO] [Thread-152877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:03:21.512 [DEBUG] [Thread-152877] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:03:21.512 [DEBUG] [Thread-152877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:03:21.512 [DEBUG] [Thread-152877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:03:21.512 [DEBUG] [Thread-152877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] client lang: <none>
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] server lang: <none>
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] kex follows: False
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] Compression: none
2025-09-29T10:03:21.513 [DEBUG] [Thread-152877] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:03:21.531 [DEBUG] [Thread-152877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:03:21.531 [DEBUG] [Thread-152877] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:03:21.532 [DEBUG] [Thread-152877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:03:21.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:03:21.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:03:21.534 [DEBUG] [Thread-152877] [transport.py] [_log()] userauth is OK
2025-09-29T10:03:21.534 [DEBUG] [Thread-152877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:03:21.534 [DEBUG] [Thread-152877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:03:21.534 [DEBUG] [Thread-152877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:03:21.534 [DEBUG] [Thread-152877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:03:21.555 [INFO] [Thread-152877] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:03:21.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:03:22.194 [DEBUG] [Thread-152877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:03:22.195 [DEBUG] [Thread-152877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:03:22.195 [DEBUG] [Thread-152877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:03:22.235 [DEBUG] [Thread-152877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:03:22.235 [DEBUG] [Thread-152877] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:03:22.238 [DEBUG] [Thread-152877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:03:22.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:03:22.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:03:22.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:03:22.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:03:22.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:03:22.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:03:22.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:03:22.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:03:22.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:03:22.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.335143 -999.00  +10.20  23.72     67   +4.40 1 1 1 1 1   888    0 7.45 89.77 ----- 26.7 23.7 136.0 32.8 16.6 -23.5 15.6 -23.6 14.3 -23.8 15.3 -25.1
2025-09-29T10:03:22.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:03:22.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:03:22.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.335143
2025-09-29T10:03:22.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:03:22.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:03:22.263 [DEBUG] [Thread-152877] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:22.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:03:22.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:03:22.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:03:22.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:03:00', tmtdew=7.12, humidity=61.13, cloud=0.0, wind=30.23, temperature=10.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:02:36.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:03:22.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:03:22.360 [DEBUG] [Thread-152880] [transport.py] [_log()] starting thread (client mode): 0x28707250
2025-09-29T10:03:22.360 [DEBUG] [Thread-152880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:03:22.375 [DEBUG] [Thread-152880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:03:22.375 [INFO] [Thread-152880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] client lang: <none>
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] server lang: <none>
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] kex follows: False
2025-09-29T10:03:22.383 [DEBUG] [Thread-152880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:03:22.384 [DEBUG] [Thread-152880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:03:22.384 [DEBUG] [Thread-152880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:03:22.384 [DEBUG] [Thread-152880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:03:22.384 [DEBUG] [Thread-152880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:03:22.384 [DEBUG] [Thread-152880] [transport.py] [_log()] Compression: none
2025-09-29T10:03:22.384 [DEBUG] [Thread-152880] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:03:22.441 [DEBUG] [Thread-152880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:03:22.442 [DEBUG] [Thread-152880] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:03:22.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:03:22.443 [DEBUG] [Thread-152880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:03:22.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:03:22.503 [DEBUG] [Thread-152880] [transport.py] [_log()] userauth is OK
2025-09-29T10:03:22.503 [DEBUG] [Thread-152880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:03:22.503 [DEBUG] [Thread-152880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:03:22.503 [DEBUG] [Thread-152880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:03:22.503 [DEBUG] [Thread-152880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:03:22.522 [INFO] [Thread-152880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:03:22.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:03:22.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:03:23.467 [DEBUG] [Thread-152880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:03:23.467 [DEBUG] [Thread-152880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:03:23.515 [DEBUG] [Thread-152880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:03:23.515 [DEBUG] [Thread-152880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:03:23.523 [DEBUG] [Thread-152880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:03:23.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:03:23.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:03:23.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:03:23.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:03:23.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:03:23.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:03:23.560 [DEBUG] [Thread-152880] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:24.248 [DEBUG] [Thread-152882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:03:26.582 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:03:26.582 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:03:31.596 [DEBUG] [Thread-152883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:03:33.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:03:33.559 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:03:33.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:03:34.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 3), 7.12, 61.13, 0.0, 30.23, 10.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:03:34.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:03:00
2025-09-29T10:03:34.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:03:34.461 [DEBUG] [Thread-152884] [transport.py] [_log()] starting thread (client mode): 0x2b9c2560
2025-09-29T10:03:34.461 [DEBUG] [Thread-152884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:03:34.480 [DEBUG] [Thread-152884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:03:34.480 [INFO] [Thread-152884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] client lang: <none>
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] server lang: <none>
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] kex follows: False
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] Compression: none
2025-09-29T10:03:34.483 [DEBUG] [Thread-152884] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:03:34.499 [DEBUG] [Thread-152884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:03:34.499 [DEBUG] [Thread-152884] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:03:34.499 [DEBUG] [Thread-152884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:03:34.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:03:34.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:03:34.500 [DEBUG] [Thread-152884] [transport.py] [_log()] userauth is OK
2025-09-29T10:03:34.500 [DEBUG] [Thread-152884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:03:34.500 [DEBUG] [Thread-152884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:03:34.500 [DEBUG] [Thread-152884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:03:34.500 [DEBUG] [Thread-152884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:03:34.509 [INFO] [Thread-152884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:03:34.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:03:35.132 [DEBUG] [Thread-152884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:03:35.132 [DEBUG] [Thread-152884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:03:35.132 [DEBUG] [Thread-152884] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:03:35.173 [DEBUG] [Thread-152884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:03:35.173 [DEBUG] [Thread-152884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:03:35.176 [DEBUG] [Thread-152884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:03:35.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:03:35.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:03:35.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:03:35.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:03:35.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:03:35.199 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:03:35.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:03:35.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:03:35.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:03:35.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.335490 -999.00  +10.20  26.24     67   +4.40 1 1 1 1 1   888    0 7.41 87.18 ----- 28.3 26.2 125.0 31.4 16.6 -23.9 15.6 -24.2 14.4 -24.0 15.3 -23.9
2025-09-29T10:03:35.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:03:35.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:03:35.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.335490
2025-09-29T10:03:35.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:03:35.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:03:35.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:03:35.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:03:35.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:03:35.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:03:00', tmtdew=7.12, humidity=61.13, cloud=0.0, wind=30.23, temperature=10.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:03:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:03:35.201 [DEBUG] [Thread-152884] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:35.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:03:35.298 [DEBUG] [Thread-152887] [transport.py] [_log()] starting thread (client mode): 0x2e34b8e0
2025-09-29T10:03:35.298 [DEBUG] [Thread-152887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:03:35.313 [DEBUG] [Thread-152887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:03:35.313 [INFO] [Thread-152887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:03:35.320 [DEBUG] [Thread-152887] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:03:35.320 [DEBUG] [Thread-152887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] client lang: <none>
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] server lang: <none>
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] kex follows: False
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] Compression: none
2025-09-29T10:03:35.321 [DEBUG] [Thread-152887] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:03:35.387 [DEBUG] [Thread-152887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:03:35.388 [DEBUG] [Thread-152887] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:03:35.388 [DEBUG] [Thread-152887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:03:35.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:03:35.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:03:35.444 [DEBUG] [Thread-152887] [transport.py] [_log()] userauth is OK
2025-09-29T10:03:35.445 [DEBUG] [Thread-152887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:03:35.445 [DEBUG] [Thread-152887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:03:35.445 [DEBUG] [Thread-152887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:03:35.445 [DEBUG] [Thread-152887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:03:35.464 [INFO] [Thread-152887] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:03:35.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:03:35.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:03:36.430 [DEBUG] [Thread-152887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:03:36.430 [DEBUG] [Thread-152887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:03:36.479 [DEBUG] [Thread-152887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:03:36.479 [DEBUG] [Thread-152887] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:03:36.487 [DEBUG] [Thread-152887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:03:36.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:03:36.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:03:36.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:03:36.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:03:36.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:03:36.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:03:36.523 [DEBUG] [Thread-152887] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:39.288 [DEBUG] [Thread-152889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:03:46.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:03:46.524 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:03:46.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:03:47.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 3, 32), 7.05, 61.38, 0.0, 32.2, 10.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:03:47.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:03:32
2025-09-29T10:03:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:03:47.395 [DEBUG] [Thread-152890] [transport.py] [_log()] starting thread (client mode): 0x28704ac0
2025-09-29T10:03:47.395 [DEBUG] [Thread-152890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:03:47.415 [DEBUG] [Thread-152890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:03:47.415 [INFO] [Thread-152890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] client lang: <none>
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] server lang: <none>
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] kex follows: False
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] Compression: none
2025-09-29T10:03:47.418 [DEBUG] [Thread-152890] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:03:47.433 [DEBUG] [Thread-152890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:03:47.433 [DEBUG] [Thread-152890] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:03:47.433 [DEBUG] [Thread-152890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:03:47.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:03:47.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:03:47.434 [DEBUG] [Thread-152890] [transport.py] [_log()] userauth is OK
2025-09-29T10:03:47.434 [DEBUG] [Thread-152890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:03:47.434 [DEBUG] [Thread-152890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:03:47.434 [DEBUG] [Thread-152890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:03:47.434 [DEBUG] [Thread-152890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:03:47.444 [INFO] [Thread-152890] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:03:47.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:03:48.085 [DEBUG] [Thread-152890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:03:48.085 [DEBUG] [Thread-152890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:03:48.085 [DEBUG] [Thread-152890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:03:48.125 [DEBUG] [Thread-152890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:03:48.125 [DEBUG] [Thread-152890] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:03:48.128 [DEBUG] [Thread-152890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:03:48.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:03:48.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:03:48.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:03:48.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:03:48.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:03:48.148 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:03:48.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:03:48.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:03:48.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:03:48.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.335490 -999.00  +10.20  26.24     67   +4.40 1 1 1 1 1   888    0 7.41 87.18 ----- 28.3 26.2 125.0 31.4 16.6 -23.9 15.6 -24.2 14.4 -24.0 15.3 -23.9
2025-09-29T10:03:48.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:03:48.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:03:48.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.335490
2025-09-29T10:03:48.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:03:48.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:03:48.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:03:48.150 [DEBUG] [Thread-152890] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:48.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:03:48.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:03:48.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:03:32', tmtdew=7.05, humidity=61.38, cloud=0.0, wind=32.2, temperature=10.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:03:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:03:48.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:03:48.245 [DEBUG] [Thread-152893] [transport.py] [_log()] starting thread (client mode): 0x2b9c0a60
2025-09-29T10:03:48.245 [DEBUG] [Thread-152893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:03:48.260 [DEBUG] [Thread-152893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:03:48.260 [INFO] [Thread-152893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:03:48.268 [DEBUG] [Thread-152893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:03:48.268 [DEBUG] [Thread-152893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:03:48.268 [DEBUG] [Thread-152893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:03:48.268 [DEBUG] [Thread-152893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:48.268 [DEBUG] [Thread-152893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] client lang: <none>
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] server lang: <none>
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] kex follows: False
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] Compression: none
2025-09-29T10:03:48.269 [DEBUG] [Thread-152893] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:03:48.328 [DEBUG] [Thread-152893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:03:48.329 [DEBUG] [Thread-152893] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:03:48.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:03:48.330 [DEBUG] [Thread-152893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:03:48.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:03:48.384 [DEBUG] [Thread-152893] [transport.py] [_log()] userauth is OK
2025-09-29T10:03:48.385 [DEBUG] [Thread-152893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:03:48.385 [DEBUG] [Thread-152893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:03:48.385 [DEBUG] [Thread-152893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:03:48.385 [DEBUG] [Thread-152893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:03:48.404 [INFO] [Thread-152893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:03:48.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:03:48.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:03:49.437 [DEBUG] [Thread-152893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:03:49.437 [DEBUG] [Thread-152893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:03:49.484 [DEBUG] [Thread-152893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:03:49.484 [DEBUG] [Thread-152893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:03:49.493 [DEBUG] [Thread-152893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:03:49.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:03:49.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:03:49.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:03:49.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:03:49.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:03:49.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:03:49.526 [DEBUG] [Thread-152893] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:03:54.319 [DEBUG] [Thread-152895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:03:59.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:03:59.530 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:03:59.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:04:00.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 3, 32), 7.05, 61.38, 0.0, 32.2, 10.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:04:00.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:03:32
2025-09-29T10:04:00.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:04:00.387 [DEBUG] [Thread-152896] [transport.py] [_log()] starting thread (client mode): 0x2b9c25f0
2025-09-29T10:04:00.387 [DEBUG] [Thread-152896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:00.407 [DEBUG] [Thread-152896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:04:00.407 [INFO] [Thread-152896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:04:00.410 [DEBUG] [Thread-152896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:00.410 [DEBUG] [Thread-152896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:04:00.410 [DEBUG] [Thread-152896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:00.410 [DEBUG] [Thread-152896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:00.410 [DEBUG] [Thread-152896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] Compression: none
2025-09-29T10:04:00.411 [DEBUG] [Thread-152896] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:00.426 [DEBUG] [Thread-152896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:00.426 [DEBUG] [Thread-152896] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:00.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:04:00.427 [DEBUG] [Thread-152896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:04:00.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:00.468 [DEBUG] [Thread-152896] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:00.469 [DEBUG] [Thread-152896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:00.469 [DEBUG] [Thread-152896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:00.469 [DEBUG] [Thread-152896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:04:00.469 [DEBUG] [Thread-152896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:00.489 [INFO] [Thread-152896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:00.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:01.152 [DEBUG] [Thread-152896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:01.152 [DEBUG] [Thread-152896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:01.153 [DEBUG] [Thread-152896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:04:01.194 [DEBUG] [Thread-152896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:01.194 [DEBUG] [Thread-152896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:01.198 [DEBUG] [Thread-152896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:01.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:01.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:04:01.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:04:01.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:04:01.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:01.215 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:04:01.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:01.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:04:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.335838 -999.00  +10.20  19.62     67   +4.40 1 1 1 1 1   888    0 7.59 90.30 ----- 22.5 19.6 138.3 33.9 16.6 -24.0 15.6 -24.4 14.5 -24.9 15.4 -25.0
2025-09-29T10:04:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:04:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:04:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.335838
2025-09-29T10:04:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:04:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:04:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:04:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:04:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:04:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:03:32', tmtdew=7.05, humidity=61.38, cloud=0.0, wind=32.2, temperature=10.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:03:36.403', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:04:01.216 [DEBUG] [Thread-152896] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:01.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:04:01.299 [DEBUG] [Thread-152899] [transport.py] [_log()] starting thread (client mode): 0x287044c0
2025-09-29T10:04:01.299 [DEBUG] [Thread-152899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:01.313 [DEBUG] [Thread-152899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:04:01.313 [INFO] [Thread-152899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] Compression: none
2025-09-29T10:04:01.321 [DEBUG] [Thread-152899] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:01.380 [DEBUG] [Thread-152899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:01.381 [DEBUG] [Thread-152899] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:01.381 [DEBUG] [Thread-152899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:04:01.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:04:01.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:01.440 [DEBUG] [Thread-152899] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:01.440 [DEBUG] [Thread-152899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:01.440 [DEBUG] [Thread-152899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:01.440 [DEBUG] [Thread-152899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:04:01.440 [DEBUG] [Thread-152899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:01.454 [INFO] [Thread-152899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:01.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:04:01.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:02.440 [DEBUG] [Thread-152899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:02.441 [DEBUG] [Thread-152899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:02.488 [DEBUG] [Thread-152899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:02.489 [DEBUG] [Thread-152899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:02.498 [DEBUG] [Thread-152899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:02.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:02.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:04:02.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:04:02.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:02.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:02.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:02.532 [DEBUG] [Thread-152899] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:09.365 [DEBUG] [Thread-152901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:04:12.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:04:12.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:04:12.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:04:13.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 4, 4), 7.18, 60.88, 0.0, 32.31, 10.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:04:13.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:04:04
2025-09-29T10:04:13.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:04:13.403 [DEBUG] [Thread-152902] [transport.py] [_log()] starting thread (client mode): 0x28706a70
2025-09-29T10:04:13.403 [DEBUG] [Thread-152902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:13.424 [DEBUG] [Thread-152902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:04:13.424 [INFO] [Thread-152902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] Compression: none
2025-09-29T10:04:13.428 [DEBUG] [Thread-152902] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:13.445 [DEBUG] [Thread-152902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:13.445 [DEBUG] [Thread-152902] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:13.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:04:13.446 [DEBUG] [Thread-152902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:04:13.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:13.449 [DEBUG] [Thread-152902] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:13.449 [DEBUG] [Thread-152902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:13.449 [DEBUG] [Thread-152902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:13.449 [DEBUG] [Thread-152902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:04:13.449 [DEBUG] [Thread-152902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:13.485 [INFO] [Thread-152902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:13.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:14.136 [DEBUG] [Thread-152902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:14.136 [DEBUG] [Thread-152902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:14.137 [DEBUG] [Thread-152902] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:04:14.177 [DEBUG] [Thread-152902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:14.178 [DEBUG] [Thread-152902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:14.181 [DEBUG] [Thread-152902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:14.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:14.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:04:14.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:04:14.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:04:14.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:14.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:04:14.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:14.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:14.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:04:14.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.335838 -999.00  +10.20  19.62     67   +4.40 1 1 1 1 1   888    0 7.59 90.30 ----- 22.5 19.6 138.3 33.9 16.6 -24.0 15.6 -24.4 14.5 -24.9 15.4 -25.0
2025-09-29T10:04:14.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:04:14.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:04:14.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.335838
2025-09-29T10:04:14.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:04:14.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:04:14.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:04:14.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:04:14.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:04:14.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:04:04', tmtdew=7.18, humidity=60.88, cloud=0.0, wind=32.31, temperature=10.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:03:36.403', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:04:14.205 [DEBUG] [Thread-152902] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:14.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:04:14.300 [DEBUG] [Thread-152905] [transport.py] [_log()] starting thread (client mode): 0x2e363ee0
2025-09-29T10:04:14.300 [DEBUG] [Thread-152905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:14.314 [DEBUG] [Thread-152905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:04:14.315 [INFO] [Thread-152905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:04:14.322 [DEBUG] [Thread-152905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:14.322 [DEBUG] [Thread-152905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] Compression: none
2025-09-29T10:04:14.323 [DEBUG] [Thread-152905] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:14.383 [DEBUG] [Thread-152905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:14.384 [DEBUG] [Thread-152905] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:14.384 [DEBUG] [Thread-152905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:04:14.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:04:14.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:14.441 [DEBUG] [Thread-152905] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:14.441 [DEBUG] [Thread-152905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:14.441 [DEBUG] [Thread-152905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:14.441 [DEBUG] [Thread-152905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:04:14.442 [DEBUG] [Thread-152905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:14.461 [INFO] [Thread-152905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:14.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:04:14.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:15.415 [DEBUG] [Thread-152905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:15.415 [DEBUG] [Thread-152905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:15.463 [DEBUG] [Thread-152905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:15.463 [DEBUG] [Thread-152905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:15.472 [DEBUG] [Thread-152905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:15.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:15.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:04:15.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:04:15.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:15.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:15.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:15.508 [DEBUG] [Thread-152905] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:24.408 [DEBUG] [Thread-152907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:04:25.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:04:25.511 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:04:25.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:04:26.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 4, 4), 7.18, 60.88, 0.0, 32.31, 10.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:04:26.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:04:04
2025-09-29T10:04:26.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:04:26.378 [DEBUG] [Thread-152908] [transport.py] [_log()] starting thread (client mode): 0x2b91de40
2025-09-29T10:04:26.378 [DEBUG] [Thread-152908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:26.397 [DEBUG] [Thread-152908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:04:26.397 [INFO] [Thread-152908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:04:26.400 [DEBUG] [Thread-152908] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] Compression: none
2025-09-29T10:04:26.401 [DEBUG] [Thread-152908] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:26.408 [DEBUG] [Thread-152908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:26.408 [DEBUG] [Thread-152908] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:26.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:04:26.409 [DEBUG] [Thread-152908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:04:26.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:26.409 [DEBUG] [Thread-152908] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:26.409 [DEBUG] [Thread-152908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:26.409 [DEBUG] [Thread-152908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:26.409 [DEBUG] [Thread-152908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:04:26.409 [DEBUG] [Thread-152908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:26.419 [INFO] [Thread-152908] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:26.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:26.724 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:04:26.725 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:04:27.070 [DEBUG] [Thread-152908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:27.070 [DEBUG] [Thread-152908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:27.070 [DEBUG] [Thread-152908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:04:27.111 [DEBUG] [Thread-152908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:27.112 [DEBUG] [Thread-152908] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:27.114 [DEBUG] [Thread-152908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:27.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:27.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:04:27.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:04:27.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:04:27.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:27.139 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:04:27.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:27.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:27.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:04:27.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.335838 -999.00  +10.20  19.62     67   +4.40 1 1 1 1 1   888    0 7.59 90.30 ----- 22.5 19.6 138.3 33.9 16.6 -24.0 15.6 -24.4 14.5 -24.9 15.4 -25.0
2025-09-29T10:04:27.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:04:27.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:04:27.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.335838
2025-09-29T10:04:27.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:04:27.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:04:27.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:04:27.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:04:27.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:04:27.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:04:04', tmtdew=7.18, humidity=60.88, cloud=0.0, wind=32.31, temperature=10.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:03:36.403', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:04:27.142 [DEBUG] [Thread-152908] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:27.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:04:27.238 [DEBUG] [Thread-152911] [transport.py] [_log()] starting thread (client mode): 0x2b91ea40
2025-09-29T10:04:27.238 [DEBUG] [Thread-152911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:27.253 [DEBUG] [Thread-152911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:04:27.253 [INFO] [Thread-152911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:04:27.261 [DEBUG] [Thread-152911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:27.261 [DEBUG] [Thread-152911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:04:27.261 [DEBUG] [Thread-152911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:27.261 [DEBUG] [Thread-152911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:27.261 [DEBUG] [Thread-152911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:27.262 [DEBUG] [Thread-152911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:27.263 [DEBUG] [Thread-152911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:27.263 [DEBUG] [Thread-152911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:27.263 [DEBUG] [Thread-152911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:27.263 [DEBUG] [Thread-152911] [transport.py] [_log()] Compression: none
2025-09-29T10:04:27.263 [DEBUG] [Thread-152911] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:27.329 [DEBUG] [Thread-152911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:27.329 [DEBUG] [Thread-152911] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:27.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:04:27.330 [DEBUG] [Thread-152911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:04:27.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:27.391 [DEBUG] [Thread-152911] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:27.391 [DEBUG] [Thread-152911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:27.392 [DEBUG] [Thread-152911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:27.392 [DEBUG] [Thread-152911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:04:27.392 [DEBUG] [Thread-152911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:27.411 [INFO] [Thread-152911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:27.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:04:27.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:28.367 [DEBUG] [Thread-152911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:28.367 [DEBUG] [Thread-152911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:28.415 [DEBUG] [Thread-152911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:28.415 [DEBUG] [Thread-152911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:28.424 [DEBUG] [Thread-152911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:28.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:28.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:04:28.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:04:28.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:28.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:28.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:28.459 [DEBUG] [Thread-152911] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:31.647 [DEBUG] [Thread-152913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:04:38.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:04:38.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:04:38.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:04:39.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 4, 36), 7.31, 60.77, 0.0, 27.93, 10.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:04:39.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:04:36
2025-09-29T10:04:39.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:04:39.334 [DEBUG] [Thread-152914] [transport.py] [_log()] starting thread (client mode): 0x2e360b50
2025-09-29T10:04:39.334 [DEBUG] [Thread-152914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:39.354 [DEBUG] [Thread-152914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:04:39.355 [INFO] [Thread-152914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:04:39.358 [DEBUG] [Thread-152914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:39.358 [DEBUG] [Thread-152914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:04:39.358 [DEBUG] [Thread-152914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] Compression: none
2025-09-29T10:04:39.359 [DEBUG] [Thread-152914] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:39.376 [DEBUG] [Thread-152914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:39.377 [DEBUG] [Thread-152914] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:39.377 [DEBUG] [Thread-152914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:04:39.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:04:39.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:39.379 [DEBUG] [Thread-152914] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:39.379 [DEBUG] [Thread-152914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:39.380 [DEBUG] [Thread-152914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:39.380 [DEBUG] [Thread-152914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:04:39.380 [DEBUG] [Thread-152914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:39.397 [INFO] [Thread-152914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:39.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:39.440 [DEBUG] [Thread-152916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:04:40.002 [DEBUG] [Thread-152914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:40.002 [DEBUG] [Thread-152914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:40.003 [DEBUG] [Thread-152914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:04:40.043 [DEBUG] [Thread-152914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:40.043 [DEBUG] [Thread-152914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:40.047 [DEBUG] [Thread-152914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:40.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:40.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:04:40.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:04:40.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:04:40.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:40.069 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:04:40.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:40.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:40.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:04:40.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.336185 -999.00  +10.30  20.58     67   +4.40 1 1 1 1 1   888    0 7.70 91.32 ----- 25.8 20.6 137.4 34.2 16.6 -24.6 15.7 -24.1 14.6 -24.9 15.5 -24.7
2025-09-29T10:04:40.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:04:40.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:04:40.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.336185
2025-09-29T10:04:40.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:04:40.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:04:40.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:04:40.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:04:40.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:04:40.071 [DEBUG] [Thread-152914] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:40.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:04:36', tmtdew=7.31, humidity=60.77, cloud=0.0, wind=27.93, temperature=10.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:04:06.384', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:04:40.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:04:40.165 [DEBUG] [Thread-152918] [transport.py] [_log()] starting thread (client mode): 0x2b9c3460
2025-09-29T10:04:40.165 [DEBUG] [Thread-152918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:40.182 [DEBUG] [Thread-152918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:04:40.182 [INFO] [Thread-152918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:04:40.191 [DEBUG] [Thread-152918] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:40.192 [DEBUG] [Thread-152918] [transport.py] [_log()] Compression: none
2025-09-29T10:04:40.193 [DEBUG] [Thread-152918] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:40.251 [DEBUG] [Thread-152918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:40.251 [DEBUG] [Thread-152918] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:40.252 [DEBUG] [Thread-152918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:04:40.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:04:40.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:40.315 [DEBUG] [Thread-152918] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:40.315 [DEBUG] [Thread-152918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:40.315 [DEBUG] [Thread-152918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:40.315 [DEBUG] [Thread-152918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:04:40.315 [DEBUG] [Thread-152918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:40.335 [INFO] [Thread-152918] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:40.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:04:40.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:41.310 [DEBUG] [Thread-152918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:41.310 [DEBUG] [Thread-152918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:41.358 [DEBUG] [Thread-152918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:41.358 [DEBUG] [Thread-152918] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:41.367 [DEBUG] [Thread-152918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:41.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:41.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:04:41.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:04:41.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:41.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:41.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:41.406 [DEBUG] [Thread-152918] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:51.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:04:51.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:04:51.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:04:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 4, 36), 7.31, 60.77, 0.0, 27.93, 10.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:04:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:04:36
2025-09-29T10:04:52.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:04:52.263 [DEBUG] [Thread-152920] [transport.py] [_log()] starting thread (client mode): 0x2b91c8b0
2025-09-29T10:04:52.263 [DEBUG] [Thread-152920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:52.284 [DEBUG] [Thread-152920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:04:52.284 [INFO] [Thread-152920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:04:52.287 [DEBUG] [Thread-152920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:52.287 [DEBUG] [Thread-152920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:04:52.287 [DEBUG] [Thread-152920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:52.287 [DEBUG] [Thread-152920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:52.287 [DEBUG] [Thread-152920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] Compression: none
2025-09-29T10:04:52.288 [DEBUG] [Thread-152920] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:52.305 [DEBUG] [Thread-152920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:52.305 [DEBUG] [Thread-152920] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:52.306 [DEBUG] [Thread-152920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:04:52.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:04:52.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:52.307 [DEBUG] [Thread-152920] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:52.308 [DEBUG] [Thread-152920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:52.308 [DEBUG] [Thread-152920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:52.308 [DEBUG] [Thread-152920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:04:52.308 [DEBUG] [Thread-152920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:52.329 [INFO] [Thread-152920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:52.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:52.940 [DEBUG] [Thread-152920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:52.940 [DEBUG] [Thread-152920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:52.941 [DEBUG] [Thread-152920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:04:52.981 [DEBUG] [Thread-152920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:52.981 [DEBUG] [Thread-152920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:52.984 [DEBUG] [Thread-152920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:52.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:52.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:04:53.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:04:53.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:04:53.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:53.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:04:53.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:53.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:53.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:04:53.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.336185 -999.00  +10.30  20.58     67   +4.40 1 1 1 1 1   888    0 7.70 91.32 ----- 25.8 20.6 137.4 34.2 16.6 -24.6 15.7 -24.1 14.6 -24.9 15.5 -24.7
2025-09-29T10:04:53.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:04:53.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:04:53.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.336185
2025-09-29T10:04:53.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:04:53.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:04:53.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:04:53.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:04:53.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:04:53.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:04:36', tmtdew=7.31, humidity=60.77, cloud=0.0, wind=27.93, temperature=10.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:04:06.384', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:04:53.012 [DEBUG] [Thread-152920] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:53.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:04:53.117 [DEBUG] [Thread-152923] [transport.py] [_log()] starting thread (client mode): 0x2e3494e0
2025-09-29T10:04:53.117 [DEBUG] [Thread-152923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:04:53.131 [DEBUG] [Thread-152923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:04:53.132 [INFO] [Thread-152923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:04:53.139 [DEBUG] [Thread-152923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:04:53.139 [DEBUG] [Thread-152923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:04:53.139 [DEBUG] [Thread-152923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] client lang: <none>
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] server lang: <none>
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] kex follows: False
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] Compression: none
2025-09-29T10:04:53.140 [DEBUG] [Thread-152923] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:04:53.199 [DEBUG] [Thread-152923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:04:53.200 [DEBUG] [Thread-152923] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:04:53.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:04:53.201 [DEBUG] [Thread-152923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:04:53.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:04:53.257 [DEBUG] [Thread-152923] [transport.py] [_log()] userauth is OK
2025-09-29T10:04:53.258 [DEBUG] [Thread-152923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:04:53.258 [DEBUG] [Thread-152923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:04:53.258 [DEBUG] [Thread-152923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:04:53.258 [DEBUG] [Thread-152923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:04:53.277 [INFO] [Thread-152923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:04:53.277 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:04:53.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:04:54.190 [DEBUG] [Thread-152923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:04:54.190 [DEBUG] [Thread-152923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:04:54.239 [DEBUG] [Thread-152923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:04:54.239 [DEBUG] [Thread-152923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:04:54.248 [DEBUG] [Thread-152923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:04:54.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:04:54.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:04:54.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:04:54.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:04:54.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:04:54.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:04:54.285 [DEBUG] [Thread-152923] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:04:54.471 [DEBUG] [Thread-152925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:05:04.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:05:04.286 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:05:04.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:05:04.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 4, 36), 7.31, 60.77, 0.0, 27.93, 10.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:05:04.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:04:36
2025-09-29T10:05:04.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:05:05.131 [DEBUG] [Thread-152926] [transport.py] [_log()] starting thread (client mode): 0x2e349240
2025-09-29T10:05:05.132 [DEBUG] [Thread-152926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:05.153 [DEBUG] [Thread-152926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:05:05.153 [INFO] [Thread-152926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:05.157 [DEBUG] [Thread-152926] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:05.158 [DEBUG] [Thread-152926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:05.158 [DEBUG] [Thread-152926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:05.158 [DEBUG] [Thread-152926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:05.158 [DEBUG] [Thread-152926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:05.158 [DEBUG] [Thread-152926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:05.158 [DEBUG] [Thread-152926] [transport.py] [_log()] Compression: none
2025-09-29T10:05:05.158 [DEBUG] [Thread-152926] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:05.177 [DEBUG] [Thread-152926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:05.178 [DEBUG] [Thread-152926] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:05.179 [DEBUG] [Thread-152926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:05:05.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:05:05.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:05.180 [DEBUG] [Thread-152926] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:05.181 [DEBUG] [Thread-152926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:05.181 [DEBUG] [Thread-152926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:05.181 [DEBUG] [Thread-152926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:05:05.181 [DEBUG] [Thread-152926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:05.202 [INFO] [Thread-152926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:05.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:07.695 [DEBUG] [Thread-152926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:07.695 [DEBUG] [Thread-152926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:07.696 [DEBUG] [Thread-152926] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:05:07.736 [DEBUG] [Thread-152926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:07.736 [DEBUG] [Thread-152926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:07.739 [DEBUG] [Thread-152926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:07.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:07.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:05:07.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:05:07.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:05:07.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:07.762 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:05:07.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:07.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:07.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:05:07.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.336185 -999.00  +10.30  20.58     67   +4.40 1 1 1 1 1   888    0 7.70 91.32 ----- 25.8 20.6 137.4 34.2 16.6 -24.6 15.7 -24.1 14.6 -24.9 15.5 -24.7
2025-09-29T10:05:07.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:05:07.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:05:07.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.336185
2025-09-29T10:05:07.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:05:07.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:05:07.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:05:07.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:05:07.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:05:07.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:04:36', tmtdew=7.31, humidity=60.77, cloud=0.0, wind=27.93, temperature=10.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:04:06.384', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:05:07.765 [DEBUG] [Thread-152926] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:07.853 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:05:07.863 [DEBUG] [Thread-152929] [transport.py] [_log()] starting thread (client mode): 0x2b9c2650
2025-09-29T10:05:07.863 [DEBUG] [Thread-152929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:07.882 [DEBUG] [Thread-152929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:05:07.882 [INFO] [Thread-152929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:05:07.890 [DEBUG] [Thread-152929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:07.890 [DEBUG] [Thread-152929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:05:07.890 [DEBUG] [Thread-152929] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:07.890 [DEBUG] [Thread-152929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] Compression: none
2025-09-29T10:05:07.891 [DEBUG] [Thread-152929] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:07.954 [DEBUG] [Thread-152929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:07.954 [DEBUG] [Thread-152929] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:07.955 [DEBUG] [Thread-152929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:05:07.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:05:07.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:08.010 [DEBUG] [Thread-152929] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:08.010 [DEBUG] [Thread-152929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:08.010 [DEBUG] [Thread-152929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:08.010 [DEBUG] [Thread-152929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:05:08.010 [DEBUG] [Thread-152929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:08.029 [INFO] [Thread-152929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:08.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:05:08.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:09.026 [DEBUG] [Thread-152929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:09.026 [DEBUG] [Thread-152929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:09.074 [DEBUG] [Thread-152929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:09.074 [DEBUG] [Thread-152929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:09.082 [DEBUG] [Thread-152929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:09.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:09.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:05:09.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:05:09.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:09.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:09.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:09.114 [DEBUG] [Thread-152929] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:09.514 [DEBUG] [Thread-152931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:05:19.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:05:19.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:05:19.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:05:19.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 5, 8), 7.46, 60.15, 0.0, 27.01, 10.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:05:19.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:05:08
2025-09-29T10:05:19.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:05:19.979 [DEBUG] [Thread-152932] [transport.py] [_log()] starting thread (client mode): 0x2e362950
2025-09-29T10:05:19.979 [DEBUG] [Thread-152932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:19.998 [DEBUG] [Thread-152932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:05:19.998 [INFO] [Thread-152932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:05:20.000 [DEBUG] [Thread-152932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:20.000 [DEBUG] [Thread-152932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:05:20.000 [DEBUG] [Thread-152932] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:20.000 [DEBUG] [Thread-152932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:20.000 [DEBUG] [Thread-152932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:20.000 [DEBUG] [Thread-152932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] Compression: none
2025-09-29T10:05:20.001 [DEBUG] [Thread-152932] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:20.016 [DEBUG] [Thread-152932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:20.016 [DEBUG] [Thread-152932] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:20.017 [DEBUG] [Thread-152932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:05:20.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:05:20.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:20.017 [DEBUG] [Thread-152932] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:20.017 [DEBUG] [Thread-152932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:20.017 [DEBUG] [Thread-152932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:20.017 [DEBUG] [Thread-152932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:05:20.017 [DEBUG] [Thread-152932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:20.027 [INFO] [Thread-152932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:20.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:20.700 [DEBUG] [Thread-152932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:20.701 [DEBUG] [Thread-152932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:20.701 [DEBUG] [Thread-152932] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:05:20.741 [DEBUG] [Thread-152932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:20.741 [DEBUG] [Thread-152932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:20.744 [DEBUG] [Thread-152932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:20.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:20.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:05:20.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:05:20.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:05:20.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:20.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:05:20.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:20.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:20.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:05:20.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.336532 -999.00  +10.50  17.08     66   +4.50 1 1 1 1 1   888    0 7.96 99.46 ----- 24.4 17.1 146.0 26.5 16.8 -24.8 15.8 -24.9 14.6 -24.1 15.5 -26.0
2025-09-29T10:05:20.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:05:20.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:05:20.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.336532
2025-09-29T10:05:20.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:05:20.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:05:20.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:05:20.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:05:20.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:05:20.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:05:08', tmtdew=7.46, humidity=60.15, cloud=0.0, wind=27.01, temperature=10.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:04:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:05:20.771 [DEBUG] [Thread-152932] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:20.862 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:05:20.873 [DEBUG] [Thread-152935] [transport.py] [_log()] starting thread (client mode): 0x2e3de620
2025-09-29T10:05:20.873 [DEBUG] [Thread-152935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:20.887 [DEBUG] [Thread-152935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:05:20.887 [INFO] [Thread-152935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:05:20.895 [DEBUG] [Thread-152935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:20.895 [DEBUG] [Thread-152935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] Compression: none
2025-09-29T10:05:20.896 [DEBUG] [Thread-152935] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:20.954 [DEBUG] [Thread-152935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:20.954 [DEBUG] [Thread-152935] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:20.954 [DEBUG] [Thread-152935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:05:20.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:05:20.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:21.010 [DEBUG] [Thread-152935] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:21.010 [DEBUG] [Thread-152935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:21.010 [DEBUG] [Thread-152935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:21.011 [DEBUG] [Thread-152935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:05:21.011 [DEBUG] [Thread-152935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:21.030 [INFO] [Thread-152935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:21.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:05:21.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:21.970 [DEBUG] [Thread-152935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:21.970 [DEBUG] [Thread-152935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:22.018 [DEBUG] [Thread-152935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:22.018 [DEBUG] [Thread-152935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:22.027 [DEBUG] [Thread-152935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:22.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:22.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:05:22.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:05:22.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:22.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:22.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:22.061 [DEBUG] [Thread-152935] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:24.544 [DEBUG] [Thread-152937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:05:26.868 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:05:26.869 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:05:31.698 [DEBUG] [Thread-152938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:05:32.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:05:32.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:05:32.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:05:32.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 5, 8), 7.46, 60.15, 0.0, 27.01, 10.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:05:32.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:05:08
2025-09-29T10:05:32.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:05:32.922 [DEBUG] [Thread-152939] [transport.py] [_log()] starting thread (client mode): 0x2e34b820
2025-09-29T10:05:32.922 [DEBUG] [Thread-152939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:32.943 [DEBUG] [Thread-152939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:05:32.943 [INFO] [Thread-152939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:05:32.946 [DEBUG] [Thread-152939] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:32.946 [DEBUG] [Thread-152939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:05:32.946 [DEBUG] [Thread-152939] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:32.946 [DEBUG] [Thread-152939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:32.947 [DEBUG] [Thread-152939] [transport.py] [_log()] Compression: none
2025-09-29T10:05:32.948 [DEBUG] [Thread-152939] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:32.966 [DEBUG] [Thread-152939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:32.966 [DEBUG] [Thread-152939] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:32.967 [DEBUG] [Thread-152939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:05:32.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:05:32.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:32.969 [DEBUG] [Thread-152939] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:32.969 [DEBUG] [Thread-152939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:32.969 [DEBUG] [Thread-152939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:32.969 [DEBUG] [Thread-152939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:05:32.969 [DEBUG] [Thread-152939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:32.986 [INFO] [Thread-152939] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:32.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:33.634 [DEBUG] [Thread-152939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:33.635 [DEBUG] [Thread-152939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:33.635 [DEBUG] [Thread-152939] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:05:33.676 [DEBUG] [Thread-152939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:33.676 [DEBUG] [Thread-152939] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:33.679 [DEBUG] [Thread-152939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:33.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:33.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:05:33.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:05:33.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:05:33.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:33.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:05:33.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:33.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:33.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:05:33.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.336532 -999.00  +10.50  17.08     66   +4.50 1 1 1 1 1   888    0 7.96 99.46 ----- 24.4 17.1 146.0 26.5 16.8 -24.8 15.8 -24.9 14.6 -24.1 15.5 -26.0
2025-09-29T10:05:33.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:05:33.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:05:33.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.336532
2025-09-29T10:05:33.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:05:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:05:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:05:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:05:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:05:33.702 [DEBUG] [Thread-152939] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:05:08', tmtdew=7.46, humidity=60.15, cloud=0.0, wind=27.01, temperature=10.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:04:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:05:33.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:05:33.796 [DEBUG] [Thread-152942] [transport.py] [_log()] starting thread (client mode): 0x2e3c2260
2025-09-29T10:05:33.796 [DEBUG] [Thread-152942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:33.810 [DEBUG] [Thread-152942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:05:33.810 [INFO] [Thread-152942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:05:33.817 [DEBUG] [Thread-152942] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:33.818 [DEBUG] [Thread-152942] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:33.819 [DEBUG] [Thread-152942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:33.819 [DEBUG] [Thread-152942] [transport.py] [_log()] Compression: none
2025-09-29T10:05:33.819 [DEBUG] [Thread-152942] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:33.878 [DEBUG] [Thread-152942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:33.878 [DEBUG] [Thread-152942] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:33.879 [DEBUG] [Thread-152942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:05:33.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:05:33.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:33.934 [DEBUG] [Thread-152942] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:33.934 [DEBUG] [Thread-152942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:33.934 [DEBUG] [Thread-152942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:33.934 [DEBUG] [Thread-152942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:05:33.934 [DEBUG] [Thread-152942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:33.957 [INFO] [Thread-152942] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:33.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:05:33.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:34.910 [DEBUG] [Thread-152942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:34.910 [DEBUG] [Thread-152942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:34.958 [DEBUG] [Thread-152942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:34.958 [DEBUG] [Thread-152942] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:34.967 [DEBUG] [Thread-152942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:34.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:34.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:05:34.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:05:34.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:34.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:34.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:35.000 [DEBUG] [Thread-152942] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:39.595 [DEBUG] [Thread-152944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:05:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:05:45.001 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:05:45.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:05:45.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 5, 40), 7.18, 61.45, 0.0, 25.18, 10.18, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:05:45.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:05:40
2025-09-29T10:05:45.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:05:45.850 [DEBUG] [Thread-152945] [transport.py] [_log()] starting thread (client mode): 0x2b91e2c0
2025-09-29T10:05:45.850 [DEBUG] [Thread-152945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:45.860 [DEBUG] [Thread-152945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:05:45.860 [INFO] [Thread-152945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] Compression: none
2025-09-29T10:05:45.863 [DEBUG] [Thread-152945] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:45.880 [DEBUG] [Thread-152945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:45.880 [DEBUG] [Thread-152945] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:45.881 [DEBUG] [Thread-152945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:05:45.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:05:45.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:45.882 [DEBUG] [Thread-152945] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:45.882 [DEBUG] [Thread-152945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:45.882 [DEBUG] [Thread-152945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:45.882 [DEBUG] [Thread-152945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:05:45.883 [DEBUG] [Thread-152945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:45.896 [INFO] [Thread-152945] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:45.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:46.567 [DEBUG] [Thread-152945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:46.568 [DEBUG] [Thread-152945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:46.568 [DEBUG] [Thread-152945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:05:46.608 [DEBUG] [Thread-152945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:46.609 [DEBUG] [Thread-152945] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:46.612 [DEBUG] [Thread-152945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:46.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:46.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:05:46.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:05:46.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:05:46.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:46.636 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:05:46.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:46.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:05:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.337226 -999.00  +10.40  18.35     67   +4.50 1 1 1 1 1   888    0 7.88 95.92 ----- 19.6 18.4 144.6 24.4 16.8 -24.2 15.9 -24.4 14.6 -24.6 15.7 -24.8
2025-09-29T10:05:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:05:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:05:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.337226
2025-09-29T10:05:46.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:05:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:05:46.639 [DEBUG] [Thread-152945] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:05:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:05:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:05:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:05:40', tmtdew=7.18, humidity=61.45, cloud=0.0, wind=25.18, temperature=10.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:05:36.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:05:46.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:05:46.728 [DEBUG] [Thread-152948] [transport.py] [_log()] starting thread (client mode): 0x2e3c3220
2025-09-29T10:05:46.728 [DEBUG] [Thread-152948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:46.744 [DEBUG] [Thread-152948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:05:46.744 [INFO] [Thread-152948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:05:46.752 [DEBUG] [Thread-152948] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:46.752 [DEBUG] [Thread-152948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:05:46.752 [DEBUG] [Thread-152948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:46.752 [DEBUG] [Thread-152948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:46.752 [DEBUG] [Thread-152948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:46.752 [DEBUG] [Thread-152948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] Compression: none
2025-09-29T10:05:46.753 [DEBUG] [Thread-152948] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:46.812 [DEBUG] [Thread-152948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:46.812 [DEBUG] [Thread-152948] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:46.813 [DEBUG] [Thread-152948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:05:46.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:05:46.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:46.873 [DEBUG] [Thread-152948] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:46.873 [DEBUG] [Thread-152948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:46.874 [DEBUG] [Thread-152948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:46.874 [DEBUG] [Thread-152948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:05:46.874 [DEBUG] [Thread-152948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:46.893 [INFO] [Thread-152948] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:46.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:05:46.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:47.879 [DEBUG] [Thread-152948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:47.879 [DEBUG] [Thread-152948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:47.927 [DEBUG] [Thread-152948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:47.927 [DEBUG] [Thread-152948] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:47.936 [DEBUG] [Thread-152948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:47.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:47.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:05:47.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:05:47.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:47.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:47.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:47.973 [DEBUG] [Thread-152948] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:54.620 [DEBUG] [Thread-152950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:05:57.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:05:57.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:05:57.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:05:58.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 5, 40), 7.18, 61.45, 0.0, 25.18, 10.18, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:05:58.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:05:40
2025-09-29T10:05:58.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:05:58.822 [DEBUG] [Thread-152951] [transport.py] [_log()] starting thread (client mode): 0x2e3c27d0
2025-09-29T10:05:58.822 [DEBUG] [Thread-152951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:58.843 [DEBUG] [Thread-152951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:05:58.843 [INFO] [Thread-152951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:58.847 [DEBUG] [Thread-152951] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:58.848 [DEBUG] [Thread-152951] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:58.848 [DEBUG] [Thread-152951] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:58.848 [DEBUG] [Thread-152951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:58.848 [DEBUG] [Thread-152951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:58.848 [DEBUG] [Thread-152951] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:58.848 [DEBUG] [Thread-152951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:58.848 [DEBUG] [Thread-152951] [transport.py] [_log()] Compression: none
2025-09-29T10:05:58.848 [DEBUG] [Thread-152951] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:58.866 [DEBUG] [Thread-152951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:58.867 [DEBUG] [Thread-152951] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:58.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:05:58.869 [DEBUG] [Thread-152951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:05:58.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:58.871 [DEBUG] [Thread-152951] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:58.871 [DEBUG] [Thread-152951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:58.871 [DEBUG] [Thread-152951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:58.871 [DEBUG] [Thread-152951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:05:58.871 [DEBUG] [Thread-152951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:58.894 [INFO] [Thread-152951] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:58.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:05:59.547 [DEBUG] [Thread-152951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:05:59.547 [DEBUG] [Thread-152951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:05:59.547 [DEBUG] [Thread-152951] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:05:59.587 [DEBUG] [Thread-152951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:05:59.587 [DEBUG] [Thread-152951] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:05:59.591 [DEBUG] [Thread-152951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:05:59.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:05:59.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:05:59.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:05:59.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:05:59.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:05:59.615 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:05:59.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:05:59.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:05:59.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:05:59.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.337226 -999.00  +10.40  18.35     67   +4.50 1 1 1 1 1   888    0 7.88 95.92 ----- 19.6 18.4 144.6 24.4 16.8 -24.2 15.9 -24.4 14.6 -24.6 15.7 -24.8
2025-09-29T10:05:59.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:05:59.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:05:59.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.337226
2025-09-29T10:05:59.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:05:59.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:05:59.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:05:59.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:05:59.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:05:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:05:40', tmtdew=7.18, humidity=61.45, cloud=0.0, wind=25.18, temperature=10.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:05:36.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:05:59.618 [DEBUG] [Thread-152951] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:05:59.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:05:59.713 [DEBUG] [Thread-152954] [transport.py] [_log()] starting thread (client mode): 0x2e3dea10
2025-09-29T10:05:59.713 [DEBUG] [Thread-152954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:05:59.728 [DEBUG] [Thread-152954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:05:59.728 [INFO] [Thread-152954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:05:59.735 [DEBUG] [Thread-152954] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:05:59.736 [DEBUG] [Thread-152954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:05:59.736 [DEBUG] [Thread-152954] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:05:59.736 [DEBUG] [Thread-152954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:59.736 [DEBUG] [Thread-152954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:05:59.736 [DEBUG] [Thread-152954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:59.736 [DEBUG] [Thread-152954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] client lang: <none>
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] server lang: <none>
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] kex follows: False
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] Compression: none
2025-09-29T10:05:59.737 [DEBUG] [Thread-152954] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:05:59.799 [DEBUG] [Thread-152954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:05:59.799 [DEBUG] [Thread-152954] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:05:59.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:05:59.800 [DEBUG] [Thread-152954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:05:59.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:05:59.854 [DEBUG] [Thread-152954] [transport.py] [_log()] userauth is OK
2025-09-29T10:05:59.855 [DEBUG] [Thread-152954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:05:59.855 [DEBUG] [Thread-152954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:05:59.855 [DEBUG] [Thread-152954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:05:59.855 [DEBUG] [Thread-152954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:05:59.875 [INFO] [Thread-152954] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:05:59.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:05:59.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:00.910 [DEBUG] [Thread-152954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:00.911 [DEBUG] [Thread-152954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:00.959 [DEBUG] [Thread-152954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:00.960 [DEBUG] [Thread-152954] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:00.968 [DEBUG] [Thread-152954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:00.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:00.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:06:00.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:06:00.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:00.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:00.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:01.003 [DEBUG] [Thread-152954] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:09.659 [DEBUG] [Thread-152956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:06:11.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:06:11.006 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:06:11.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:06:11.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 5, 40), 7.18, 61.45, 0.0, 25.18, 10.18, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:06:11.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:05:40
2025-09-29T10:06:11.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:06:11.857 [DEBUG] [Thread-152957] [transport.py] [_log()] starting thread (client mode): 0x2e3df400
2025-09-29T10:06:11.857 [DEBUG] [Thread-152957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:06:11.878 [DEBUG] [Thread-152957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:06:11.878 [INFO] [Thread-152957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:06:11.881 [DEBUG] [Thread-152957] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:06:11.881 [DEBUG] [Thread-152957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:06:11.881 [DEBUG] [Thread-152957] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:06:11.881 [DEBUG] [Thread-152957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] client lang: <none>
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] server lang: <none>
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] kex follows: False
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:06:11.882 [DEBUG] [Thread-152957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:06:11.883 [DEBUG] [Thread-152957] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:06:11.883 [DEBUG] [Thread-152957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:06:11.883 [DEBUG] [Thread-152957] [transport.py] [_log()] Compression: none
2025-09-29T10:06:11.883 [DEBUG] [Thread-152957] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:06:11.900 [DEBUG] [Thread-152957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:06:11.900 [DEBUG] [Thread-152957] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:06:11.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:06:11.901 [DEBUG] [Thread-152957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:06:11.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:06:11.902 [DEBUG] [Thread-152957] [transport.py] [_log()] userauth is OK
2025-09-29T10:06:11.902 [DEBUG] [Thread-152957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:06:11.903 [DEBUG] [Thread-152957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:06:11.903 [DEBUG] [Thread-152957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:06:11.903 [DEBUG] [Thread-152957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:06:11.920 [INFO] [Thread-152957] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:06:11.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:12.625 [DEBUG] [Thread-152957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:12.626 [DEBUG] [Thread-152957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:12.626 [DEBUG] [Thread-152957] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:06:12.666 [DEBUG] [Thread-152957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:12.666 [DEBUG] [Thread-152957] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:12.670 [DEBUG] [Thread-152957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:12.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:12.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:06:12.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:06:12.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:06:12.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:12.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:06:12.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:12.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:12.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:06:12.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.337226 -999.00  +10.40  18.35     67   +4.50 1 1 1 1 1   888    0 7.88 95.92 ----- 19.6 18.4 144.6 24.4 16.8 -24.2 15.9 -24.4 14.6 -24.6 15.7 -24.8
2025-09-29T10:06:12.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:06:12.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:06:12.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.337226
2025-09-29T10:06:12.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:06:12.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:06:12.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:06:12.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:06:12.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:06:12.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:05:40', tmtdew=7.18, humidity=61.45, cloud=0.0, wind=25.18, temperature=10.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:05:36.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:06:12.693 [DEBUG] [Thread-152957] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:12.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:06:12.787 [DEBUG] [Thread-152960] [transport.py] [_log()] starting thread (client mode): 0x2e3dc130
2025-09-29T10:06:12.787 [DEBUG] [Thread-152960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:06:12.802 [DEBUG] [Thread-152960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:06:12.802 [INFO] [Thread-152960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] client lang: <none>
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] server lang: <none>
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] kex follows: False
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] Compression: none
2025-09-29T10:06:12.810 [DEBUG] [Thread-152960] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:06:12.865 [DEBUG] [Thread-152960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:06:12.866 [DEBUG] [Thread-152960] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:06:12.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:06:12.866 [DEBUG] [Thread-152960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:06:12.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:06:12.922 [DEBUG] [Thread-152960] [transport.py] [_log()] userauth is OK
2025-09-29T10:06:12.923 [DEBUG] [Thread-152960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:06:12.923 [DEBUG] [Thread-152960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:06:12.923 [DEBUG] [Thread-152960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:06:12.923 [DEBUG] [Thread-152960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:06:12.937 [INFO] [Thread-152960] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:06:12.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:06:12.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:13.956 [DEBUG] [Thread-152960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:13.956 [DEBUG] [Thread-152960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:14.004 [DEBUG] [Thread-152960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:14.004 [DEBUG] [Thread-152960] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:14.012 [DEBUG] [Thread-152960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:14.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:14.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:06:14.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:06:14.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:14.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:14.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:14.042 [DEBUG] [Thread-152960] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:24.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:06:24.044 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:06:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:06:24.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 6, 12), 7.1, 61.8, 0.0, 22.25, 10.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:06:24.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:06:12
2025-09-29T10:06:24.685 [DEBUG] [Thread-152962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:06:24.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:06:24.907 [DEBUG] [Thread-152963] [transport.py] [_log()] starting thread (client mode): 0x2e3de770
2025-09-29T10:06:24.907 [DEBUG] [Thread-152963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:06:24.927 [DEBUG] [Thread-152963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:06:24.928 [INFO] [Thread-152963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:06:24.931 [DEBUG] [Thread-152963] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:06:24.931 [DEBUG] [Thread-152963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:06:24.931 [DEBUG] [Thread-152963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] client lang: <none>
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] server lang: <none>
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] kex follows: False
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] Compression: none
2025-09-29T10:06:24.932 [DEBUG] [Thread-152963] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:06:24.949 [DEBUG] [Thread-152963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:06:24.949 [DEBUG] [Thread-152963] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:06:24.950 [DEBUG] [Thread-152963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:06:24.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:06:24.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:06:24.951 [DEBUG] [Thread-152963] [transport.py] [_log()] userauth is OK
2025-09-29T10:06:24.952 [DEBUG] [Thread-152963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:06:24.952 [DEBUG] [Thread-152963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:06:24.952 [DEBUG] [Thread-152963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:06:24.952 [DEBUG] [Thread-152963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:06:24.987 [INFO] [Thread-152963] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:06:24.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:25.654 [DEBUG] [Thread-152963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:25.654 [DEBUG] [Thread-152963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:25.654 [DEBUG] [Thread-152963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:06:25.695 [DEBUG] [Thread-152963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:25.696 [DEBUG] [Thread-152963] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:25.699 [DEBUG] [Thread-152963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:25.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:25.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:06:25.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:06:25.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:06:25.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:25.724 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:06:25.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:25.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:25.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:06:25.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.337574 -999.00  +10.30  20.86     66   +4.40 1 1 1 1 1   888    0 8.00 97.24 ----- 18.4 20.9 138.2 33.4 16.8 -24.4 15.9 -24.4 14.7 -24.6 15.7 -25.1
2025-09-29T10:06:25.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:06:25.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:06:25.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.337574
2025-09-29T10:06:25.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:06:25.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:06:25.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:06:25.726 [DEBUG] [Thread-152963] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:25.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:06:25.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:06:25.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:06:12', tmtdew=7.1, humidity=61.8, cloud=0.0, wind=22.25, temperature=10.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:06:06.394', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:06:25.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:06:25.823 [DEBUG] [Thread-152966] [transport.py] [_log()] starting thread (client mode): 0x2b91feb0
2025-09-29T10:06:25.823 [DEBUG] [Thread-152966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:06:25.836 [DEBUG] [Thread-152966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:06:25.836 [INFO] [Thread-152966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:06:25.844 [DEBUG] [Thread-152966] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:06:25.844 [DEBUG] [Thread-152966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:06:25.844 [DEBUG] [Thread-152966] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:06:25.844 [DEBUG] [Thread-152966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:25.844 [DEBUG] [Thread-152966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] client lang: <none>
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] server lang: <none>
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] kex follows: False
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:06:25.845 [DEBUG] [Thread-152966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:06:25.846 [DEBUG] [Thread-152966] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:06:25.846 [DEBUG] [Thread-152966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:06:25.846 [DEBUG] [Thread-152966] [transport.py] [_log()] Compression: none
2025-09-29T10:06:25.846 [DEBUG] [Thread-152966] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:06:25.903 [DEBUG] [Thread-152966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:06:25.903 [DEBUG] [Thread-152966] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:06:25.904 [DEBUG] [Thread-152966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:06:25.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:06:25.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:06:25.961 [DEBUG] [Thread-152966] [transport.py] [_log()] userauth is OK
2025-09-29T10:06:25.961 [DEBUG] [Thread-152966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:06:25.961 [DEBUG] [Thread-152966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:06:25.961 [DEBUG] [Thread-152966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:06:25.961 [DEBUG] [Thread-152966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:06:25.975 [INFO] [Thread-152966] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:06:25.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:06:25.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:26.945 [DEBUG] [Thread-152966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:26.945 [DEBUG] [Thread-152966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:26.993 [DEBUG] [Thread-152966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:26.993 [DEBUG] [Thread-152966] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:27.002 [DEBUG] [Thread-152966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:27.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:27.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:06:27.012 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:06:27.013 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:06:27.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:06:27.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:27.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:27.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:27.037 [DEBUG] [Thread-152966] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:31.749 [DEBUG] [Thread-152968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:06:37.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:06:37.040 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:06:37.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:06:37.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 6, 12), 7.1, 61.8, 0.0, 22.25, 10.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:06:37.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:06:12
2025-09-29T10:06:37.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:06:37.892 [DEBUG] [Thread-152969] [transport.py] [_log()] starting thread (client mode): 0x2e3dde70
2025-09-29T10:06:37.892 [DEBUG] [Thread-152969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:06:37.911 [DEBUG] [Thread-152969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:06:37.911 [INFO] [Thread-152969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:06:37.915 [DEBUG] [Thread-152969] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:06:37.915 [DEBUG] [Thread-152969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:06:37.915 [DEBUG] [Thread-152969] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:06:37.915 [DEBUG] [Thread-152969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:37.915 [DEBUG] [Thread-152969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:37.915 [DEBUG] [Thread-152969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] client lang: <none>
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] server lang: <none>
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] kex follows: False
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] Compression: none
2025-09-29T10:06:37.916 [DEBUG] [Thread-152969] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:06:37.932 [DEBUG] [Thread-152969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:06:37.932 [DEBUG] [Thread-152969] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:06:37.933 [DEBUG] [Thread-152969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:06:37.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:06:37.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:06:37.935 [DEBUG] [Thread-152969] [transport.py] [_log()] userauth is OK
2025-09-29T10:06:37.935 [DEBUG] [Thread-152969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:06:37.935 [DEBUG] [Thread-152969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:06:37.935 [DEBUG] [Thread-152969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:06:37.935 [DEBUG] [Thread-152969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:06:37.959 [INFO] [Thread-152969] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:06:37.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:38.601 [DEBUG] [Thread-152969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:38.609 [DEBUG] [Thread-152969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:38.609 [DEBUG] [Thread-152969] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:06:38.642 [DEBUG] [Thread-152969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:38.642 [DEBUG] [Thread-152969] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:38.644 [DEBUG] [Thread-152969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:38.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:38.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:06:38.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:06:38.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:06:38.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:38.665 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:06:38.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.337574 -999.00  +10.30  20.86     66   +4.40 1 1 1 1 1   888    0 8.00 97.24 ----- 18.4 20.9 138.2 33.4 16.8 -24.4 15.9 -24.4 14.7 -24.6 15.7 -25.1
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.337574
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:06:38.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:06:12', tmtdew=7.1, humidity=61.8, cloud=0.0, wind=22.25, temperature=10.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:06:06.394', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:06:38.666 [DEBUG] [Thread-152969] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:38.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:06:38.752 [DEBUG] [Thread-152972] [transport.py] [_log()] starting thread (client mode): 0x2e3dc0a0
2025-09-29T10:06:38.753 [DEBUG] [Thread-152972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:06:38.767 [DEBUG] [Thread-152972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:06:38.767 [INFO] [Thread-152972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:06:38.774 [DEBUG] [Thread-152972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] client lang: <none>
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] server lang: <none>
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] kex follows: False
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:06:38.775 [DEBUG] [Thread-152972] [transport.py] [_log()] Compression: none
2025-09-29T10:06:38.776 [DEBUG] [Thread-152972] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:06:38.836 [DEBUG] [Thread-152972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:06:38.837 [DEBUG] [Thread-152972] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:06:38.837 [DEBUG] [Thread-152972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:06:38.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:06:38.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:06:38.895 [DEBUG] [Thread-152972] [transport.py] [_log()] userauth is OK
2025-09-29T10:06:38.895 [DEBUG] [Thread-152972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:06:38.895 [DEBUG] [Thread-152972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:06:38.895 [DEBUG] [Thread-152972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:06:38.895 [DEBUG] [Thread-152972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:06:38.915 [INFO] [Thread-152972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:06:38.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:06:38.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:39.714 [DEBUG] [Thread-152974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:06:39.880 [DEBUG] [Thread-152972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:39.880 [DEBUG] [Thread-152972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:39.928 [DEBUG] [Thread-152972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:39.928 [DEBUG] [Thread-152972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:39.937 [DEBUG] [Thread-152972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:39.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:39.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:06:39.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:06:39.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:39.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:39.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:39.971 [DEBUG] [Thread-152972] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:49.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:06:49.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:06:49.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:06:50.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 6, 44), 7.34, 60.52, 0.0, 26.77, 10.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:06:50.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:06:44
2025-09-29T10:06:50.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:06:50.833 [DEBUG] [Thread-152975] [transport.py] [_log()] starting thread (client mode): 0x2b91da50
2025-09-29T10:06:50.833 [DEBUG] [Thread-152975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:06:50.850 [DEBUG] [Thread-152975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:06:50.850 [INFO] [Thread-152975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:06:50.853 [DEBUG] [Thread-152975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:06:50.853 [DEBUG] [Thread-152975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:06:50.853 [DEBUG] [Thread-152975] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:06:50.853 [DEBUG] [Thread-152975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:50.853 [DEBUG] [Thread-152975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:50.853 [DEBUG] [Thread-152975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:50.853 [DEBUG] [Thread-152975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] client lang: <none>
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] server lang: <none>
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] kex follows: False
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] Compression: none
2025-09-29T10:06:50.854 [DEBUG] [Thread-152975] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:06:50.870 [DEBUG] [Thread-152975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:06:50.871 [DEBUG] [Thread-152975] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:06:50.871 [DEBUG] [Thread-152975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:06:50.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:06:50.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:06:50.873 [DEBUG] [Thread-152975] [transport.py] [_log()] userauth is OK
2025-09-29T10:06:50.873 [DEBUG] [Thread-152975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:06:50.874 [DEBUG] [Thread-152975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:06:50.874 [DEBUG] [Thread-152975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:06:50.874 [DEBUG] [Thread-152975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:06:50.892 [INFO] [Thread-152975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:06:50.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:51.507 [DEBUG] [Thread-152975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:51.508 [DEBUG] [Thread-152975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:51.508 [DEBUG] [Thread-152975] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:06:51.549 [DEBUG] [Thread-152975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:51.549 [DEBUG] [Thread-152975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:51.553 [DEBUG] [Thread-152975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:51.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:51.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:06:51.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:06:51.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:06:51.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:51.575 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:06:51.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:51.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:51.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:06:51.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.337921 -999.00  +10.60  17.52     66   +4.50 1 1 1 1 1   888    0 8.22 103.85 ----- 19.1 17.5 159.4 22.7 17.0 -24.5 15.9 -23.9 14.8 -24.4 15.8 -25.8
2025-09-29T10:06:51.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:06:51.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:06:51.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.337921
2025-09-29T10:06:51.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:06:51.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:06:51.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:06:51.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:06:51.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:06:51.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:06:44', tmtdew=7.34, humidity=60.52, cloud=0.0, wind=26.77, temperature=10.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:06:36.374', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:06:51.577 [DEBUG] [Thread-152975] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:51.655 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:06:51.664 [DEBUG] [Thread-152978] [transport.py] [_log()] starting thread (client mode): 0x2e360bb0
2025-09-29T10:06:51.664 [DEBUG] [Thread-152978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:06:51.679 [DEBUG] [Thread-152978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:06:51.679 [INFO] [Thread-152978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:06:51.687 [DEBUG] [Thread-152978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:06:51.687 [DEBUG] [Thread-152978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:06:51.687 [DEBUG] [Thread-152978] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:06:51.687 [DEBUG] [Thread-152978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:51.687 [DEBUG] [Thread-152978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] client lang: <none>
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] server lang: <none>
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] kex follows: False
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] Compression: none
2025-09-29T10:06:51.688 [DEBUG] [Thread-152978] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:06:51.747 [DEBUG] [Thread-152978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:06:51.747 [DEBUG] [Thread-152978] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:06:51.748 [DEBUG] [Thread-152978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:06:51.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:06:51.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:06:51.804 [DEBUG] [Thread-152978] [transport.py] [_log()] userauth is OK
2025-09-29T10:06:51.804 [DEBUG] [Thread-152978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:06:51.804 [DEBUG] [Thread-152978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:06:51.804 [DEBUG] [Thread-152978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:06:51.804 [DEBUG] [Thread-152978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:06:51.823 [INFO] [Thread-152978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:06:51.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:06:51.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:06:52.808 [DEBUG] [Thread-152978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:06:52.809 [DEBUG] [Thread-152978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:06:52.856 [DEBUG] [Thread-152978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:06:52.857 [DEBUG] [Thread-152978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:06:52.865 [DEBUG] [Thread-152978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:06:52.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:06:52.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:06:52.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:06:52.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:06:52.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:06:52.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:06:52.900 [DEBUG] [Thread-152978] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:06:54.761 [DEBUG] [Thread-152980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:07:02.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:07:02.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:07:02.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:07:03.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 6, 44), 7.34, 60.52, 0.0, 26.77, 10.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:07:03.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:06:44
2025-09-29T10:07:03.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:07:03.769 [DEBUG] [Thread-152981] [transport.py] [_log()] starting thread (client mode): 0x2e3c29e0
2025-09-29T10:07:03.769 [DEBUG] [Thread-152981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:03.790 [DEBUG] [Thread-152981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:07:03.790 [INFO] [Thread-152981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:03.793 [DEBUG] [Thread-152981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:03.794 [DEBUG] [Thread-152981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:03.794 [DEBUG] [Thread-152981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:03.794 [DEBUG] [Thread-152981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:03.794 [DEBUG] [Thread-152981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:03.794 [DEBUG] [Thread-152981] [transport.py] [_log()] Compression: none
2025-09-29T10:07:03.794 [DEBUG] [Thread-152981] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:03.811 [DEBUG] [Thread-152981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:03.811 [DEBUG] [Thread-152981] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:03.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:07:03.812 [DEBUG] [Thread-152981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:07:03.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:03.813 [DEBUG] [Thread-152981] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:03.813 [DEBUG] [Thread-152981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:03.813 [DEBUG] [Thread-152981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:03.813 [DEBUG] [Thread-152981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:07:03.814 [DEBUG] [Thread-152981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:03.827 [INFO] [Thread-152981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:03.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:04.465 [DEBUG] [Thread-152981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:04.466 [DEBUG] [Thread-152981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:04.466 [DEBUG] [Thread-152981] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:07:04.507 [DEBUG] [Thread-152981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:04.507 [DEBUG] [Thread-152981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:04.510 [DEBUG] [Thread-152981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:04.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:04.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:07:04.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:07:04.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:07:04.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:04.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:07:04.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:04.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:04.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:07:04.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.337921 -999.00  +10.60  17.52     66   +4.50 1 1 1 1 1   888    0 8.22 103.85 ----- 19.1 17.5 159.4 22.7 17.0 -24.5 15.9 -23.9 14.8 -24.4 15.8 -25.8
2025-09-29T10:07:04.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:07:04.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:07:04.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.337921
2025-09-29T10:07:04.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:07:04.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:07:04.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:07:04.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:07:04.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:07:04.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:06:44', tmtdew=7.34, humidity=60.52, cloud=0.0, wind=26.77, temperature=10.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:06:36.374', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:07:04.537 [DEBUG] [Thread-152981] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:04.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:07:04.637 [DEBUG] [Thread-152984] [transport.py] [_log()] starting thread (client mode): 0x2e3c3cd0
2025-09-29T10:07:04.637 [DEBUG] [Thread-152984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:04.652 [DEBUG] [Thread-152984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:07:04.652 [INFO] [Thread-152984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:07:04.659 [DEBUG] [Thread-152984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:04.659 [DEBUG] [Thread-152984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] Compression: none
2025-09-29T10:07:04.660 [DEBUG] [Thread-152984] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:04.723 [DEBUG] [Thread-152984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:04.724 [DEBUG] [Thread-152984] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:04.724 [DEBUG] [Thread-152984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:07:04.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:07:04.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:04.779 [DEBUG] [Thread-152984] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:04.780 [DEBUG] [Thread-152984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:04.780 [DEBUG] [Thread-152984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:04.780 [DEBUG] [Thread-152984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:07:04.780 [DEBUG] [Thread-152984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:04.799 [INFO] [Thread-152984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:04.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:07:04.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:05.750 [DEBUG] [Thread-152984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:05.750 [DEBUG] [Thread-152984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:05.798 [DEBUG] [Thread-152984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:05.798 [DEBUG] [Thread-152984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:05.807 [DEBUG] [Thread-152984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:05.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:05.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:07:05.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:07:05.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:05.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:05.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:05.842 [DEBUG] [Thread-152984] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:09.798 [DEBUG] [Thread-152986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:07:15.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:07:15.844 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:07:15.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:07:16.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 6, 44), 7.34, 60.52, 0.0, 26.77, 10.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:07:16.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:06:44
2025-09-29T10:07:16.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:07:16.706 [DEBUG] [Thread-152987] [transport.py] [_log()] starting thread (client mode): 0x2e3de830
2025-09-29T10:07:16.706 [DEBUG] [Thread-152987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:16.726 [DEBUG] [Thread-152987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:07:16.726 [INFO] [Thread-152987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:07:16.729 [DEBUG] [Thread-152987] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:16.729 [DEBUG] [Thread-152987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:07:16.729 [DEBUG] [Thread-152987] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:16.729 [DEBUG] [Thread-152987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:16.729 [DEBUG] [Thread-152987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:16.729 [DEBUG] [Thread-152987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:16.729 [DEBUG] [Thread-152987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] Compression: none
2025-09-29T10:07:16.730 [DEBUG] [Thread-152987] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:16.745 [DEBUG] [Thread-152987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:16.745 [DEBUG] [Thread-152987] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:16.746 [DEBUG] [Thread-152987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:07:16.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:07:16.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:16.747 [DEBUG] [Thread-152987] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:16.748 [DEBUG] [Thread-152987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:16.748 [DEBUG] [Thread-152987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:16.748 [DEBUG] [Thread-152987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:07:16.748 [DEBUG] [Thread-152987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:16.771 [INFO] [Thread-152987] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:16.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:17.420 [DEBUG] [Thread-152987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:17.421 [DEBUG] [Thread-152987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:17.421 [DEBUG] [Thread-152987] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:07:17.462 [DEBUG] [Thread-152987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:17.462 [DEBUG] [Thread-152987] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:17.464 [DEBUG] [Thread-152987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:17.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:17.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:07:17.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:07:17.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:07:17.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:17.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:07:17.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.337921 -999.00  +10.60  17.52     66   +4.50 1 1 1 1 1   888    0 8.22 103.85 ----- 19.1 17.5 159.4 22.7 17.0 -24.5 15.9 -23.9 14.8 -24.4 15.8 -25.8
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.337921
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:07:17.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:06:44', tmtdew=7.34, humidity=60.52, cloud=0.0, wind=26.77, temperature=10.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:06:36.374', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:07:17.483 [DEBUG] [Thread-152987] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:17.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:07:17.566 [DEBUG] [Thread-152990] [transport.py] [_log()] starting thread (client mode): 0x2b91d390
2025-09-29T10:07:17.566 [DEBUG] [Thread-152990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:17.581 [DEBUG] [Thread-152990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:07:17.581 [INFO] [Thread-152990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] Compression: none
2025-09-29T10:07:17.589 [DEBUG] [Thread-152990] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:17.646 [DEBUG] [Thread-152990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:17.646 [DEBUG] [Thread-152990] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:17.646 [DEBUG] [Thread-152990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:07:17.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:07:17.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:17.703 [DEBUG] [Thread-152990] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:17.703 [DEBUG] [Thread-152990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:17.703 [DEBUG] [Thread-152990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:17.703 [DEBUG] [Thread-152990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:07:17.703 [DEBUG] [Thread-152990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:17.717 [INFO] [Thread-152990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:17.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:07:17.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:18.663 [DEBUG] [Thread-152990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:18.663 [DEBUG] [Thread-152990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:18.714 [DEBUG] [Thread-152990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:18.714 [DEBUG] [Thread-152990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:18.722 [DEBUG] [Thread-152990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:18.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:18.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:07:18.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:07:18.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:18.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:18.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:18.756 [DEBUG] [Thread-152990] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:24.827 [DEBUG] [Thread-152992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:07:27.155 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:07:27.156 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:07:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:07:28.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:07:28.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:07:29.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 7, 16), 7.47, 59.99, 0.0, 28.94, 10.64, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:07:29.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:07:16
2025-09-29T10:07:29.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:07:29.597 [DEBUG] [Thread-152993] [transport.py] [_log()] starting thread (client mode): 0x2b91dc90
2025-09-29T10:07:29.597 [DEBUG] [Thread-152993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:29.617 [DEBUG] [Thread-152993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:07:29.617 [INFO] [Thread-152993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:07:29.618 [DEBUG] [Thread-152993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:29.618 [DEBUG] [Thread-152993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:29.619 [DEBUG] [Thread-152993] [transport.py] [_log()] Compression: none
2025-09-29T10:07:29.620 [DEBUG] [Thread-152993] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:29.633 [DEBUG] [Thread-152993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:29.634 [DEBUG] [Thread-152993] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:29.634 [DEBUG] [Thread-152993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:07:29.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:07:29.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:29.637 [DEBUG] [Thread-152993] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:29.637 [DEBUG] [Thread-152993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:29.637 [DEBUG] [Thread-152993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:29.637 [DEBUG] [Thread-152993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:07:29.637 [DEBUG] [Thread-152993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:29.655 [INFO] [Thread-152993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:29.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:30.305 [DEBUG] [Thread-152993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:30.306 [DEBUG] [Thread-152993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:30.306 [DEBUG] [Thread-152993] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:07:30.346 [DEBUG] [Thread-152993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:30.346 [DEBUG] [Thread-152993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:30.350 [DEBUG] [Thread-152993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:30.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:30.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:07:30.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:07:30.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:07:30.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:30.372 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:07:30.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:30.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:30.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:07:30.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.338268 -999.00  +10.70  19.79     64   +4.30 1 1 1 1 1   888    0 8.34 107.43 ----- 24.5 19.8 162.4 29.2 17.1 -24.9 15.9 -24.3 14.7 -24.4 15.8 -26.0
2025-09-29T10:07:30.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:07:30.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:07:30.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.338268
2025-09-29T10:07:30.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:07:30.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:07:30.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:07:30.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:07:30.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:07:30.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:07:16', tmtdew=7.47, humidity=59.99, cloud=0.0, wind=28.94, temperature=10.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:07:06.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:07:30.375 [DEBUG] [Thread-152993] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:30.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:07:30.469 [DEBUG] [Thread-152996] [transport.py] [_log()] starting thread (client mode): 0x2b9b9000
2025-09-29T10:07:30.469 [DEBUG] [Thread-152996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:30.484 [DEBUG] [Thread-152996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:07:30.484 [INFO] [Thread-152996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:07:30.491 [DEBUG] [Thread-152996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:30.491 [DEBUG] [Thread-152996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:07:30.491 [DEBUG] [Thread-152996] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:30.491 [DEBUG] [Thread-152996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:30.491 [DEBUG] [Thread-152996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:30.491 [DEBUG] [Thread-152996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] Compression: none
2025-09-29T10:07:30.492 [DEBUG] [Thread-152996] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:30.551 [DEBUG] [Thread-152996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:30.552 [DEBUG] [Thread-152996] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:30.552 [DEBUG] [Thread-152996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:07:30.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:07:30.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:30.619 [DEBUG] [Thread-152996] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:30.619 [DEBUG] [Thread-152996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:30.620 [DEBUG] [Thread-152996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:30.620 [DEBUG] [Thread-152996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:07:30.620 [DEBUG] [Thread-152996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:30.639 [INFO] [Thread-152996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:30.639 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:07:30.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:31.594 [DEBUG] [Thread-152996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:31.594 [DEBUG] [Thread-152996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:31.642 [DEBUG] [Thread-152996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:31.642 [DEBUG] [Thread-152996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:31.651 [DEBUG] [Thread-152996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:31.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:31.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:07:31.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:07:31.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:31.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:31.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:31.688 [DEBUG] [Thread-152996] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:31.800 [DEBUG] [Thread-152998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:07:39.856 [DEBUG] [Thread-152999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:07:41.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:07:41.689 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:07:41.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:07:42.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 7, 16), 7.47, 59.99, 0.0, 28.94, 10.64, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:07:42.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:07:16
2025-09-29T10:07:42.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:07:42.546 [DEBUG] [Thread-153000] [transport.py] [_log()] starting thread (client mode): 0x2b91c250
2025-09-29T10:07:42.546 [DEBUG] [Thread-153000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:42.555 [DEBUG] [Thread-153000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:07:42.555 [INFO] [Thread-153000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:07:42.556 [DEBUG] [Thread-153000] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:42.556 [DEBUG] [Thread-153000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:07:42.556 [DEBUG] [Thread-153000] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:42.556 [DEBUG] [Thread-153000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:42.556 [DEBUG] [Thread-153000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] Compression: none
2025-09-29T10:07:42.557 [DEBUG] [Thread-153000] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:42.564 [DEBUG] [Thread-153000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:42.565 [DEBUG] [Thread-153000] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:42.565 [DEBUG] [Thread-153000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:07:42.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:07:42.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:42.566 [DEBUG] [Thread-153000] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:42.566 [DEBUG] [Thread-153000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:42.566 [DEBUG] [Thread-153000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:42.566 [DEBUG] [Thread-153000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:07:42.566 [DEBUG] [Thread-153000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:42.578 [INFO] [Thread-153000] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:42.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:43.239 [DEBUG] [Thread-153000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:43.239 [DEBUG] [Thread-153000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:43.240 [DEBUG] [Thread-153000] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:07:43.280 [DEBUG] [Thread-153000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:43.281 [DEBUG] [Thread-153000] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:43.283 [DEBUG] [Thread-153000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:43.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:43.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:07:43.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:07:43.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:07:43.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:43.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:07:43.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:43.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:43.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:07:43.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.338268 -999.00  +10.70  19.79     64   +4.30 1 1 1 1 1   888    0 8.34 107.43 ----- 24.5 19.8 162.4 29.2 17.1 -24.9 15.9 -24.3 14.7 -24.4 15.8 -26.0
2025-09-29T10:07:43.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:07:43.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:07:43.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.338268
2025-09-29T10:07:43.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:07:43.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:07:43.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:07:43.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:07:43.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:07:43.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:07:16', tmtdew=7.47, humidity=59.99, cloud=0.0, wind=28.94, temperature=10.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:07:06.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:07:43.311 [DEBUG] [Thread-153000] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:43.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:07:43.405 [DEBUG] [Thread-153003] [transport.py] [_log()] starting thread (client mode): 0x2b91d8d0
2025-09-29T10:07:43.405 [DEBUG] [Thread-153003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:43.420 [DEBUG] [Thread-153003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:07:43.420 [INFO] [Thread-153003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:07:43.427 [DEBUG] [Thread-153003] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:43.427 [DEBUG] [Thread-153003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:07:43.427 [DEBUG] [Thread-153003] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:43.427 [DEBUG] [Thread-153003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:43.427 [DEBUG] [Thread-153003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] Compression: none
2025-09-29T10:07:43.428 [DEBUG] [Thread-153003] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:43.483 [DEBUG] [Thread-153003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:43.483 [DEBUG] [Thread-153003] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:43.484 [DEBUG] [Thread-153003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:07:43.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:07:43.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:43.539 [DEBUG] [Thread-153003] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:43.540 [DEBUG] [Thread-153003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:43.540 [DEBUG] [Thread-153003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:43.540 [DEBUG] [Thread-153003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:07:43.540 [DEBUG] [Thread-153003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:43.564 [INFO] [Thread-153003] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:43.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:07:43.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:44.502 [DEBUG] [Thread-153003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:44.502 [DEBUG] [Thread-153003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:44.552 [DEBUG] [Thread-153003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:44.552 [DEBUG] [Thread-153003] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:44.561 [DEBUG] [Thread-153003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:44.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:44.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:07:44.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:07:44.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:44.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:44.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:44.597 [DEBUG] [Thread-153003] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:54.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:07:54.600 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:07:54.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:07:54.896 [DEBUG] [Thread-153005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:07:55.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 7, 48), 7.7, 58.96, 0.0, 30.67, 10.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:07:55.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:07:48
2025-09-29T10:07:55.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:07:55.443 [DEBUG] [Thread-153006] [transport.py] [_log()] starting thread (client mode): 0x2e3de530
2025-09-29T10:07:55.444 [DEBUG] [Thread-153006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:55.462 [DEBUG] [Thread-153006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:07:55.462 [INFO] [Thread-153006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:55.465 [DEBUG] [Thread-153006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] Compression: none
2025-09-29T10:07:55.466 [DEBUG] [Thread-153006] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:55.474 [DEBUG] [Thread-153006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:55.474 [DEBUG] [Thread-153006] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:55.475 [DEBUG] [Thread-153006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:07:55.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:07:55.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:55.476 [DEBUG] [Thread-153006] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:55.476 [DEBUG] [Thread-153006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:55.476 [DEBUG] [Thread-153006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:55.476 [DEBUG] [Thread-153006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:07:55.477 [DEBUG] [Thread-153006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:55.500 [INFO] [Thread-153006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:55.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:56.268 [DEBUG] [Thread-153006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:56.268 [DEBUG] [Thread-153006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:56.269 [DEBUG] [Thread-153006] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:07:56.309 [DEBUG] [Thread-153006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:56.309 [DEBUG] [Thread-153006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:56.312 [DEBUG] [Thread-153006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:56.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:56.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:07:56.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:07:56.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:07:56.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:56.335 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:07:56.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:56.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:07:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.338268 -999.00  +10.70  19.79     64   +4.30 1 1 1 1 1   888    0 8.34 107.43 ----- 24.5 19.8 162.4 29.2 17.1 -24.9 15.9 -24.3 14.7 -24.4 15.8 -26.0
2025-09-29T10:07:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:07:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:07:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.338268
2025-09-29T10:07:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:07:56.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:07:56.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:07:56.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:07:56.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:07:56.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:07:48', tmtdew=7.7, humidity=58.96, cloud=0.0, wind=30.67, temperature=10.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:07:06.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:07:56.339 [DEBUG] [Thread-153006] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:07:56.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:07:56.431 [DEBUG] [Thread-153009] [transport.py] [_log()] starting thread (client mode): 0x2b91eb30
2025-09-29T10:07:56.431 [DEBUG] [Thread-153009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:07:56.446 [DEBUG] [Thread-153009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:07:56.446 [INFO] [Thread-153009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:07:56.454 [DEBUG] [Thread-153009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:07:56.454 [DEBUG] [Thread-153009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] client lang: <none>
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] server lang: <none>
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] kex follows: False
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] Compression: none
2025-09-29T10:07:56.455 [DEBUG] [Thread-153009] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:07:56.512 [DEBUG] [Thread-153009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:07:56.512 [DEBUG] [Thread-153009] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:07:56.513 [DEBUG] [Thread-153009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:07:56.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:07:56.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:07:56.569 [DEBUG] [Thread-153009] [transport.py] [_log()] userauth is OK
2025-09-29T10:07:56.569 [DEBUG] [Thread-153009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:07:56.569 [DEBUG] [Thread-153009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:07:56.569 [DEBUG] [Thread-153009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:07:56.569 [DEBUG] [Thread-153009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:07:56.592 [INFO] [Thread-153009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:07:56.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:07:56.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:07:57.559 [DEBUG] [Thread-153009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:07:57.560 [DEBUG] [Thread-153009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:07:57.607 [DEBUG] [Thread-153009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:07:57.607 [DEBUG] [Thread-153009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:07:57.616 [DEBUG] [Thread-153009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:07:57.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:07:57.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:07:57.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:07:57.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:07:57.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:07:57.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:07:57.652 [DEBUG] [Thread-153009] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:08:07.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:08:07.649 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:08:07.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:08:08.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 7, 48), 7.7, 58.96, 0.0, 30.67, 10.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:08:08.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:07:48
2025-09-29T10:08:08.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:08:08.494 [DEBUG] [Thread-153011] [transport.py] [_log()] starting thread (client mode): 0x2e3de7d0
2025-09-29T10:08:08.494 [DEBUG] [Thread-153011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:08:08.516 [DEBUG] [Thread-153011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:08:08.517 [INFO] [Thread-153011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] client lang: <none>
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] server lang: <none>
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] kex follows: False
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] Compression: none
2025-09-29T10:08:08.521 [DEBUG] [Thread-153011] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:08:08.535 [DEBUG] [Thread-153011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:08:08.536 [DEBUG] [Thread-153011] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:08:08.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:08:08.536 [DEBUG] [Thread-153011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:08:08.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:08:08.538 [DEBUG] [Thread-153011] [transport.py] [_log()] userauth is OK
2025-09-29T10:08:08.538 [DEBUG] [Thread-153011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:08:08.538 [DEBUG] [Thread-153011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:08:08.539 [DEBUG] [Thread-153011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:08:08.539 [DEBUG] [Thread-153011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:08:08.563 [INFO] [Thread-153011] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:08:08.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:08:09.184 [DEBUG] [Thread-153011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:08:09.184 [DEBUG] [Thread-153011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:08:09.184 [DEBUG] [Thread-153011] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:08:09.225 [DEBUG] [Thread-153011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:08:09.225 [DEBUG] [Thread-153011] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:08:09.228 [DEBUG] [Thread-153011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:08:09.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:08:09.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:08:09.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:08:09.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:08:09.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:08:09.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:08:09.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:08:09.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:08:09.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:08:09.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.338615 -999.00  +10.90  23.03     64   +4.50 1 1 1 1 1   888    0 8.21 102.95 ----- 26.5 23.0 138.0 30.2 17.2 -25.4 16.0 -24.3 14.8 -24.7 16.0 -25.5
2025-09-29T10:08:09.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:08:09.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:08:09.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.338615
2025-09-29T10:08:09.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:08:09.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:08:09.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:08:09.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:08:09.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:08:09.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:07:48', tmtdew=7.7, humidity=58.96, cloud=0.0, wind=30.67, temperature=10.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:07:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:08:09.256 [DEBUG] [Thread-153011] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:08:09.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:08:09.354 [DEBUG] [Thread-153014] [transport.py] [_log()] starting thread (client mode): 0x2b9c2620
2025-09-29T10:08:09.354 [DEBUG] [Thread-153014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:08:09.369 [DEBUG] [Thread-153014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:08:09.369 [INFO] [Thread-153014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:08:09.376 [DEBUG] [Thread-153014] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:08:09.377 [DEBUG] [Thread-153014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:08:09.377 [DEBUG] [Thread-153014] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:08:09.377 [DEBUG] [Thread-153014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:08:09.377 [DEBUG] [Thread-153014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:08:09.377 [DEBUG] [Thread-153014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:08:09.377 [DEBUG] [Thread-153014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:08:09.378 [DEBUG] [Thread-153014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:08:09.378 [DEBUG] [Thread-153014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:08:09.378 [DEBUG] [Thread-153014] [transport.py] [_log()] client lang: <none>
2025-09-29T10:08:09.378 [DEBUG] [Thread-153014] [transport.py] [_log()] server lang: <none>
2025-09-29T10:08:09.378 [DEBUG] [Thread-153014] [transport.py] [_log()] kex follows: False
2025-09-29T10:08:09.378 [DEBUG] [Thread-153014] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:08:09.378 [DEBUG] [Thread-153014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:08:09.379 [DEBUG] [Thread-153014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:08:09.379 [DEBUG] [Thread-153014] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:08:09.379 [DEBUG] [Thread-153014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:08:09.379 [DEBUG] [Thread-153014] [transport.py] [_log()] Compression: none
2025-09-29T10:08:09.379 [DEBUG] [Thread-153014] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:08:09.437 [DEBUG] [Thread-153014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:08:09.438 [DEBUG] [Thread-153014] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:08:09.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:08:09.439 [DEBUG] [Thread-153014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:08:09.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:08:09.496 [DEBUG] [Thread-153014] [transport.py] [_log()] userauth is OK
2025-09-29T10:08:09.497 [DEBUG] [Thread-153014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:08:09.497 [DEBUG] [Thread-153014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:08:09.497 [DEBUG] [Thread-153014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:08:09.497 [DEBUG] [Thread-153014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:08:09.517 [INFO] [Thread-153014] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:08:09.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:08:09.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:08:09.921 [DEBUG] [Thread-153016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:08:10.479 [DEBUG] [Thread-153014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:08:10.479 [DEBUG] [Thread-153014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:08:10.527 [DEBUG] [Thread-153014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:08:10.527 [DEBUG] [Thread-153014] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:08:10.535 [DEBUG] [Thread-153014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:08:10.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:08:10.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:08:10.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:08:10.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:08:10.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:08:10.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:08:10.573 [DEBUG] [Thread-153014] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:08:20.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:08:20.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:08:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:08:21.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 7, 48), 7.7, 58.96, 0.0, 30.67, 10.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:08:21.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:07:48
2025-09-29T10:08:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:08:21.434 [DEBUG] [Thread-153017] [transport.py] [_log()] starting thread (client mode): 0x2b9bb760
2025-09-29T10:08:21.434 [DEBUG] [Thread-153017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:08:21.453 [DEBUG] [Thread-153017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:08:21.454 [INFO] [Thread-153017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] client lang: <none>
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] server lang: <none>
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] kex follows: False
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] Compression: none
2025-09-29T10:08:21.457 [DEBUG] [Thread-153017] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:08:21.474 [DEBUG] [Thread-153017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:08:21.474 [DEBUG] [Thread-153017] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:08:21.474 [DEBUG] [Thread-153017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:08:21.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:08:21.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:08:21.475 [DEBUG] [Thread-153017] [transport.py] [_log()] userauth is OK
2025-09-29T10:08:21.475 [DEBUG] [Thread-153017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:08:21.475 [DEBUG] [Thread-153017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:08:21.475 [DEBUG] [Thread-153017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:08:21.475 [DEBUG] [Thread-153017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:08:21.486 [INFO] [Thread-153017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:08:21.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:08:22.275 [DEBUG] [Thread-153017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:08:22.275 [DEBUG] [Thread-153017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:08:22.275 [DEBUG] [Thread-153017] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:08:22.316 [DEBUG] [Thread-153017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:08:22.316 [DEBUG] [Thread-153017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:08:22.319 [DEBUG] [Thread-153017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:08:22.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:08:22.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:08:22.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:08:22.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:08:22.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:08:22.328 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:08:22.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:08:22.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:08:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:08:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.338615 -999.00  +10.90  23.03     64   +4.50 1 1 1 1 1   888    0 8.21 102.95 ----- 26.5 23.0 138.0 30.2 17.2 -25.4 16.0 -24.3 14.8 -24.7 16.0 -25.5
2025-09-29T10:08:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:08:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:08:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.338615
2025-09-29T10:08:22.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:08:22.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:08:22.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:08:22.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:08:22.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:08:22.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:07:48', tmtdew=7.7, humidity=58.96, cloud=0.0, wind=30.67, temperature=10.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:07:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:08:22.329 [DEBUG] [Thread-153017] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:08:22.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:08:24.954 [DEBUG] [Thread-153020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:08:27.297 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:08:27.298 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:08:31.849 [DEBUG] [Thread-153021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:08:39.985 [DEBUG] [Thread-153022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:08:55.012 [DEBUG] [Thread-153023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:09:10.046 [DEBUG] [Thread-153024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:09:25.074 [DEBUG] [Thread-153025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:09:27.440 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:09:27.441 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:09:31.903 [DEBUG] [Thread-153026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:09:40.100 [DEBUG] [Thread-153027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:09:55.130 [DEBUG] [Thread-153028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:10:10.157 [DEBUG] [Thread-153029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:10:25.186 [DEBUG] [Thread-153030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:10:27.588 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:10:27.588 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:10:31.955 [DEBUG] [Thread-153031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:10:37.114 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T10:10:40.217 [DEBUG] [Thread-153032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:10:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:10:47.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:10:47.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:10:47.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 10, 28), 7.77, 58.65, 0.0, 28.83, 10.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:10:47.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:10:28
2025-09-29T10:10:47.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:10:48.033 [DEBUG] [Thread-153033] [transport.py] [_log()] starting thread (client mode): 0x2b9c1e40
2025-09-29T10:10:48.033 [DEBUG] [Thread-153033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:10:48.051 [DEBUG] [Thread-153033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:10:48.051 [INFO] [Thread-153033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:10:48.054 [DEBUG] [Thread-153033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] client lang: <none>
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] server lang: <none>
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] kex follows: False
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] Compression: none
2025-09-29T10:10:48.055 [DEBUG] [Thread-153033] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:10:48.069 [DEBUG] [Thread-153033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:10:48.069 [DEBUG] [Thread-153033] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:10:48.069 [DEBUG] [Thread-153033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:10:48.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:10:48.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:10:48.070 [DEBUG] [Thread-153033] [transport.py] [_log()] userauth is OK
2025-09-29T10:10:48.070 [DEBUG] [Thread-153033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:10:48.070 [DEBUG] [Thread-153033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:10:48.070 [DEBUG] [Thread-153033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:10:48.070 [DEBUG] [Thread-153033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:10:48.082 [INFO] [Thread-153033] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:10:48.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:10:48.670 [DEBUG] [Thread-153033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:10:48.671 [DEBUG] [Thread-153033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:10:48.671 [DEBUG] [Thread-153033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:10:48.711 [DEBUG] [Thread-153033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:10:48.712 [DEBUG] [Thread-153033] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:10:48.715 [DEBUG] [Thread-153033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:10:48.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:10:48.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:10:48.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:10:48.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:10:48.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:10:48.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:10:48.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:10:48.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:10:48.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:10:48.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.340351 -999.00  +10.20  24.69     65   +4.00 1 1 1 1 1   888    0 8.49 102.85 ----- 23.5 24.7 167.2 33.7 17.1 -25.4 15.8 -23.7 14.7 -25.3 15.9 -25.0
2025-09-29T10:10:48.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:10:48.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:10:48.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.340351
2025-09-29T10:10:48.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:10:48.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:10:48.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:10:48.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:10:48.741 [DEBUG] [Thread-153033] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:10:48.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:10:48.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:10:28', tmtdew=7.77, humidity=58.65, cloud=0.0, wind=28.83, temperature=10.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:10:06.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:10:48.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:10:55.247 [DEBUG] [Thread-153036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:11:10.293 [DEBUG] [Thread-153037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:11:25.322 [DEBUG] [Thread-153038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:11:27.728 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:11:27.729 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:11:32.006 [DEBUG] [Thread-153039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:11:40.352 [DEBUG] [Thread-153040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:11:55.383 [DEBUG] [Thread-153041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:12:10.412 [DEBUG] [Thread-153042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:12:25.444 [DEBUG] [Thread-153043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:12:27.872 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:12:27.873 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:12:32.062 [DEBUG] [Thread-153044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:12:40.475 [DEBUG] [Thread-153045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:12:55.502 [DEBUG] [Thread-153046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:13:00.475 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T10:13:10.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:13:10.486 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:13:10.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:13:10.530 [DEBUG] [Thread-153047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:13:11.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 13, 7), 7.06, 61.42, 0.0, 26.13, 10.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:13:11.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:13:07
2025-09-29T10:13:11.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:13:11.356 [DEBUG] [Thread-153048] [transport.py] [_log()] starting thread (client mode): 0x2b9c32b0
2025-09-29T10:13:11.356 [DEBUG] [Thread-153048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:13:11.377 [DEBUG] [Thread-153048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:13:11.377 [INFO] [Thread-153048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:13:11.380 [DEBUG] [Thread-153048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] client lang: <none>
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] server lang: <none>
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] kex follows: False
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] Compression: none
2025-09-29T10:13:11.381 [DEBUG] [Thread-153048] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:13:11.399 [DEBUG] [Thread-153048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:13:11.400 [DEBUG] [Thread-153048] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:13:11.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:13:11.401 [DEBUG] [Thread-153048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:13:11.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:13:11.402 [DEBUG] [Thread-153048] [transport.py] [_log()] userauth is OK
2025-09-29T10:13:11.402 [DEBUG] [Thread-153048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:13:11.403 [DEBUG] [Thread-153048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:13:11.403 [DEBUG] [Thread-153048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:13:11.403 [DEBUG] [Thread-153048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:13:11.424 [INFO] [Thread-153048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:13:11.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:13:11.999 [DEBUG] [Thread-153048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:13:11.999 [DEBUG] [Thread-153048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:13:12.000 [DEBUG] [Thread-153048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:13:12.040 [DEBUG] [Thread-153048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:13:12.040 [DEBUG] [Thread-153048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:13:12.043 [DEBUG] [Thread-153048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:13:12.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:13:12.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:13:12.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:13:12.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:13:12.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:13:12.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:13:12.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:13:12.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:13:12.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:13:12.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.342087 -999.00  +10.30  24.40     66   +4.30 1 1 1 1 1   888    0 8.32 98.66 ----- 24.4 24.4 169.6 31.0 16.8 -24.4 15.6 -22.7 14.6 -24.8 15.8 -23.9
2025-09-29T10:13:12.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:13:12.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:13:12.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.342087
2025-09-29T10:13:12.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:13:12.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:13:12.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:13:12.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:13:12.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:13:12.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:13:07', tmtdew=7.06, humidity=61.42, cloud=0.0, wind=26.13, temperature=10.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:12:36.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:13:12.068 [DEBUG] [Thread-153048] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:13:12.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:13:12.165 [DEBUG] [Thread-153051] [transport.py] [_log()] starting thread (client mode): 0x2e361360
2025-09-29T10:13:12.165 [DEBUG] [Thread-153051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:13:12.180 [DEBUG] [Thread-153051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:13:12.180 [INFO] [Thread-153051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] client lang: <none>
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] server lang: <none>
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] kex follows: False
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] Compression: none
2025-09-29T10:13:12.188 [DEBUG] [Thread-153051] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:13:12.246 [DEBUG] [Thread-153051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:13:12.246 [DEBUG] [Thread-153051] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:13:12.246 [DEBUG] [Thread-153051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:13:12.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:13:12.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:13:12.303 [DEBUG] [Thread-153051] [transport.py] [_log()] userauth is OK
2025-09-29T10:13:12.304 [DEBUG] [Thread-153051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:13:12.304 [DEBUG] [Thread-153051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:13:12.304 [DEBUG] [Thread-153051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:13:12.304 [DEBUG] [Thread-153051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:13:12.325 [INFO] [Thread-153051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:13:12.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:13:12.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:13:13.290 [DEBUG] [Thread-153051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:13:13.290 [DEBUG] [Thread-153051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:13:13.338 [DEBUG] [Thread-153051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:13:13.338 [DEBUG] [Thread-153051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:13:13.347 [DEBUG] [Thread-153051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:13:13.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:13:13.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:13:13.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:13:13.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:13:13.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:13:13.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:13:13.382 [DEBUG] [Thread-153051] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:13:23.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:13:23.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:13:23.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:13:23.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 13, 7), 7.06, 61.42, 0.0, 26.13, 10.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:13:23.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:13:07
2025-09-29T10:13:24.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:13:24.243 [DEBUG] [Thread-153053] [transport.py] [_log()] starting thread (client mode): 0x2e363c10
2025-09-29T10:13:24.243 [DEBUG] [Thread-153053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:13:24.262 [DEBUG] [Thread-153053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:13:24.263 [INFO] [Thread-153053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:13:24.266 [DEBUG] [Thread-153053] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:13:24.266 [DEBUG] [Thread-153053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:13:24.266 [DEBUG] [Thread-153053] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:13:24.266 [DEBUG] [Thread-153053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:24.266 [DEBUG] [Thread-153053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:24.266 [DEBUG] [Thread-153053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] client lang: <none>
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] server lang: <none>
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] kex follows: False
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] Compression: none
2025-09-29T10:13:24.267 [DEBUG] [Thread-153053] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:13:24.282 [DEBUG] [Thread-153053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:13:24.282 [DEBUG] [Thread-153053] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:13:24.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:13:24.283 [DEBUG] [Thread-153053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:13:24.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:13:24.286 [DEBUG] [Thread-153053] [transport.py] [_log()] userauth is OK
2025-09-29T10:13:24.286 [DEBUG] [Thread-153053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:13:24.286 [DEBUG] [Thread-153053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:13:24.286 [DEBUG] [Thread-153053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:13:24.286 [DEBUG] [Thread-153053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:13:24.322 [INFO] [Thread-153053] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:13:24.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:13:24.981 [DEBUG] [Thread-153053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:13:24.981 [DEBUG] [Thread-153053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:13:24.981 [DEBUG] [Thread-153053] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:13:25.029 [DEBUG] [Thread-153053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:13:25.029 [DEBUG] [Thread-153053] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:13:25.033 [DEBUG] [Thread-153053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:13:25.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:13:25.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:13:25.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:13:25.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:13:25.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:13:25.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:13:25.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:13:25.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:13:25.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:13:25.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.342087 -999.00  +10.30  24.40     66   +4.30 1 1 1 1 1   888    0 8.32 98.66 ----- 24.4 24.4 169.6 31.0 16.8 -24.4 15.6 -22.7 14.6 -24.8 15.8 -23.9
2025-09-29T10:13:25.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:13:25.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:13:25.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.342087
2025-09-29T10:13:25.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:13:25.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:13:25.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:13:25.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:13:25.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:13:25.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:13:07', tmtdew=7.06, humidity=61.42, cloud=0.0, wind=26.13, temperature=10.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:12:36.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:13:25.055 [DEBUG] [Thread-153053] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:13:25.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:13:25.148 [DEBUG] [Thread-153056] [transport.py] [_log()] starting thread (client mode): 0x2b9b9de0
2025-09-29T10:13:25.148 [DEBUG] [Thread-153056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:13:25.162 [DEBUG] [Thread-153056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:13:25.163 [INFO] [Thread-153056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:13:25.170 [DEBUG] [Thread-153056] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:13:25.170 [DEBUG] [Thread-153056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:13:25.170 [DEBUG] [Thread-153056] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:13:25.170 [DEBUG] [Thread-153056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:25.170 [DEBUG] [Thread-153056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] client lang: <none>
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] server lang: <none>
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] kex follows: False
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:13:25.171 [DEBUG] [Thread-153056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:13:25.172 [DEBUG] [Thread-153056] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:13:25.172 [DEBUG] [Thread-153056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:13:25.172 [DEBUG] [Thread-153056] [transport.py] [_log()] Compression: none
2025-09-29T10:13:25.172 [DEBUG] [Thread-153056] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:13:25.227 [DEBUG] [Thread-153056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:13:25.228 [DEBUG] [Thread-153056] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:13:25.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:13:25.229 [DEBUG] [Thread-153056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:13:25.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:13:25.283 [DEBUG] [Thread-153056] [transport.py] [_log()] userauth is OK
2025-09-29T10:13:25.283 [DEBUG] [Thread-153056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:13:25.284 [DEBUG] [Thread-153056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:13:25.284 [DEBUG] [Thread-153056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:13:25.284 [DEBUG] [Thread-153056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:13:25.305 [INFO] [Thread-153056] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:13:25.305 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:13:25.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:13:25.556 [DEBUG] [Thread-153058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:13:26.253 [DEBUG] [Thread-153056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:13:26.253 [DEBUG] [Thread-153056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:13:26.301 [DEBUG] [Thread-153056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:13:26.301 [DEBUG] [Thread-153056] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:13:26.310 [DEBUG] [Thread-153056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:13:26.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:13:26.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:13:26.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:13:26.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:13:26.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:13:26.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:13:26.345 [DEBUG] [Thread-153056] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:13:28.014 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:13:28.015 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:13:32.115 [DEBUG] [Thread-153059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:13:36.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:13:36.347 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:13:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:13:36.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 13, 7), 7.06, 61.42, 0.0, 26.13, 10.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:13:36.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:13:07
2025-09-29T10:13:37.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:13:37.217 [DEBUG] [Thread-153060] [transport.py] [_log()] starting thread (client mode): 0x2e3c2860
2025-09-29T10:13:37.217 [DEBUG] [Thread-153060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:13:37.237 [DEBUG] [Thread-153060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:13:37.237 [INFO] [Thread-153060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:13:37.240 [DEBUG] [Thread-153060] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:13:37.240 [DEBUG] [Thread-153060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] client lang: <none>
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] server lang: <none>
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] kex follows: False
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:13:37.241 [DEBUG] [Thread-153060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:13:37.242 [DEBUG] [Thread-153060] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:13:37.242 [DEBUG] [Thread-153060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:13:37.242 [DEBUG] [Thread-153060] [transport.py] [_log()] Compression: none
2025-09-29T10:13:37.242 [DEBUG] [Thread-153060] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:13:37.257 [DEBUG] [Thread-153060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:13:37.258 [DEBUG] [Thread-153060] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:13:37.258 [DEBUG] [Thread-153060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:13:37.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:13:37.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:13:37.259 [DEBUG] [Thread-153060] [transport.py] [_log()] userauth is OK
2025-09-29T10:13:37.259 [DEBUG] [Thread-153060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:13:37.259 [DEBUG] [Thread-153060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:13:37.259 [DEBUG] [Thread-153060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:13:37.259 [DEBUG] [Thread-153060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:13:37.279 [INFO] [Thread-153060] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:13:37.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:13:37.942 [DEBUG] [Thread-153060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:13:37.943 [DEBUG] [Thread-153060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:13:37.943 [DEBUG] [Thread-153060] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:13:37.983 [DEBUG] [Thread-153060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:13:37.983 [DEBUG] [Thread-153060] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:13:37.986 [DEBUG] [Thread-153060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:13:37.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:13:38.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:13:38.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:13:38.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:13:38.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:13:38.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:13:38.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:13:38.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:13:38.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:13:38.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.342087 -999.00  +10.30  24.40     66   +4.30 1 1 1 1 1   888    0 8.32 98.66 ----- 24.4 24.4 169.6 31.0 16.8 -24.4 15.6 -22.7 14.6 -24.8 15.8 -23.9
2025-09-29T10:13:38.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:13:38.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:13:38.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.342087
2025-09-29T10:13:38.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:13:38.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:13:38.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:13:38.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:13:38.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:13:38.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:13:07', tmtdew=7.06, humidity=61.42, cloud=0.0, wind=26.13, temperature=10.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:12:36.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:13:38.011 [DEBUG] [Thread-153060] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:13:38.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:13:38.108 [DEBUG] [Thread-153063] [transport.py] [_log()] starting thread (client mode): 0x2e3c2710
2025-09-29T10:13:38.108 [DEBUG] [Thread-153063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:13:38.124 [DEBUG] [Thread-153063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:13:38.124 [INFO] [Thread-153063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:13:38.131 [DEBUG] [Thread-153063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] client lang: <none>
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] server lang: <none>
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] kex follows: False
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] Compression: none
2025-09-29T10:13:38.132 [DEBUG] [Thread-153063] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:13:38.192 [DEBUG] [Thread-153063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:13:38.192 [DEBUG] [Thread-153063] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:13:38.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:13:38.193 [DEBUG] [Thread-153063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:13:38.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:13:38.248 [DEBUG] [Thread-153063] [transport.py] [_log()] userauth is OK
2025-09-29T10:13:38.248 [DEBUG] [Thread-153063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:13:38.248 [DEBUG] [Thread-153063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:13:38.248 [DEBUG] [Thread-153063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:13:38.248 [DEBUG] [Thread-153063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:13:38.267 [INFO] [Thread-153063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:13:38.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:13:38.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:13:39.290 [DEBUG] [Thread-153063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:13:39.291 [DEBUG] [Thread-153063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:13:39.338 [DEBUG] [Thread-153063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:13:39.338 [DEBUG] [Thread-153063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:13:39.347 [DEBUG] [Thread-153063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:13:39.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:13:39.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:13:39.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:13:39.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:13:39.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:13:39.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:13:39.382 [DEBUG] [Thread-153063] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:13:40.608 [DEBUG] [Thread-153065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:13:49.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:13:49.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:13:49.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:13:50.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 13, 39), 7.18, 60.87, 0.0, 27.56, 9.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:13:50.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:13:39
2025-09-29T10:13:50.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:13:50.253 [DEBUG] [Thread-153066] [transport.py] [_log()] starting thread (client mode): 0x28706410
2025-09-29T10:13:50.253 [DEBUG] [Thread-153066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:13:50.274 [DEBUG] [Thread-153066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:13:50.274 [INFO] [Thread-153066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] client lang: <none>
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] server lang: <none>
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] kex follows: False
2025-09-29T10:13:50.277 [DEBUG] [Thread-153066] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:13:50.278 [DEBUG] [Thread-153066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:13:50.278 [DEBUG] [Thread-153066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:13:50.278 [DEBUG] [Thread-153066] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:13:50.278 [DEBUG] [Thread-153066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:13:50.278 [DEBUG] [Thread-153066] [transport.py] [_log()] Compression: none
2025-09-29T10:13:50.278 [DEBUG] [Thread-153066] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:13:50.295 [DEBUG] [Thread-153066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:13:50.296 [DEBUG] [Thread-153066] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:13:50.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:13:50.297 [DEBUG] [Thread-153066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:13:50.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:13:50.298 [DEBUG] [Thread-153066] [transport.py] [_log()] userauth is OK
2025-09-29T10:13:50.298 [DEBUG] [Thread-153066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:13:50.298 [DEBUG] [Thread-153066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:13:50.298 [DEBUG] [Thread-153066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:13:50.299 [DEBUG] [Thread-153066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:13:50.312 [INFO] [Thread-153066] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:13:50.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:13:50.923 [DEBUG] [Thread-153066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:13:50.923 [DEBUG] [Thread-153066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:13:50.924 [DEBUG] [Thread-153066] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:13:50.964 [DEBUG] [Thread-153066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:13:50.964 [DEBUG] [Thread-153066] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:13:50.967 [DEBUG] [Thread-153066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:13:50.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:13:50.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:13:50.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:13:50.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:13:50.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:13:50.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:13:50.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:13:50.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:13:50.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:13:50.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.342782 -999.00  +10.10  26.22     66   +4.10 1 1 1 1 1   888    0 8.46 98.82 ----- 15.4 26.2 146.0 28.6 16.2 -29.9 14.9 -27.2 14.3 -29.0 15.1 -29.4
2025-09-29T10:13:50.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:13:50.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:13:50.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.342782
2025-09-29T10:13:50.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:13:50.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:13:50.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:13:50.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:13:50.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:13:50.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:13:39', tmtdew=7.18, humidity=60.87, cloud=0.0, wind=27.56, temperature=9.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:13:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:13:50.991 [DEBUG] [Thread-153066] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:13:51.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:13:51.083 [DEBUG] [Thread-153069] [transport.py] [_log()] starting thread (client mode): 0x2b91de40
2025-09-29T10:13:51.084 [DEBUG] [Thread-153069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:13:51.101 [DEBUG] [Thread-153069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:13:51.101 [INFO] [Thread-153069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:13:51.108 [DEBUG] [Thread-153069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:13:51.108 [DEBUG] [Thread-153069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:13:51.108 [DEBUG] [Thread-153069] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:13:51.108 [DEBUG] [Thread-153069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:51.108 [DEBUG] [Thread-153069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:13:51.108 [DEBUG] [Thread-153069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:51.108 [DEBUG] [Thread-153069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] client lang: <none>
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] server lang: <none>
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] kex follows: False
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] Compression: none
2025-09-29T10:13:51.109 [DEBUG] [Thread-153069] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:13:51.170 [DEBUG] [Thread-153069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:13:51.170 [DEBUG] [Thread-153069] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:13:51.170 [DEBUG] [Thread-153069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:13:51.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:13:51.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:13:51.227 [DEBUG] [Thread-153069] [transport.py] [_log()] userauth is OK
2025-09-29T10:13:51.227 [DEBUG] [Thread-153069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:13:51.228 [DEBUG] [Thread-153069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:13:51.228 [DEBUG] [Thread-153069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:13:51.228 [DEBUG] [Thread-153069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:13:51.246 [INFO] [Thread-153069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:13:51.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:13:51.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:13:52.204 [DEBUG] [Thread-153069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:13:52.204 [DEBUG] [Thread-153069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:13:52.252 [DEBUG] [Thread-153069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:13:52.252 [DEBUG] [Thread-153069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:13:52.261 [DEBUG] [Thread-153069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:13:52.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:13:52.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:13:52.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:13:52.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:13:52.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:13:52.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:13:52.294 [DEBUG] [Thread-153069] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:13:55.634 [DEBUG] [Thread-153071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:14:02.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:14:02.297 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:14:02.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:14:02.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 13, 39), 7.18, 60.87, 0.0, 27.56, 9.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:14:02.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:13:39
2025-09-29T10:14:03.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:14:03.163 [DEBUG] [Thread-153072] [transport.py] [_log()] starting thread (client mode): 0x2e361360
2025-09-29T10:14:03.163 [DEBUG] [Thread-153072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:03.184 [DEBUG] [Thread-153072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:14:03.185 [INFO] [Thread-153072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:03.188 [DEBUG] [Thread-153072] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:03.189 [DEBUG] [Thread-153072] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:03.189 [DEBUG] [Thread-153072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:03.189 [DEBUG] [Thread-153072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:03.189 [DEBUG] [Thread-153072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:03.189 [DEBUG] [Thread-153072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:03.189 [DEBUG] [Thread-153072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:03.189 [DEBUG] [Thread-153072] [transport.py] [_log()] Compression: none
2025-09-29T10:14:03.189 [DEBUG] [Thread-153072] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:03.207 [DEBUG] [Thread-153072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:03.207 [DEBUG] [Thread-153072] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:03.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:14:03.208 [DEBUG] [Thread-153072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:14:03.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:03.210 [DEBUG] [Thread-153072] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:03.210 [DEBUG] [Thread-153072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:03.210 [DEBUG] [Thread-153072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:03.210 [DEBUG] [Thread-153072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:14:03.210 [DEBUG] [Thread-153072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:03.225 [INFO] [Thread-153072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:03.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:03.900 [DEBUG] [Thread-153072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:03.900 [DEBUG] [Thread-153072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:03.900 [DEBUG] [Thread-153072] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:14:03.941 [DEBUG] [Thread-153072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:03.941 [DEBUG] [Thread-153072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:03.943 [DEBUG] [Thread-153072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:03.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:03.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:14:03.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:14:03.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:14:03.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:03.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:14:03.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:03.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:14:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.342782 -999.00  +10.10  26.22     66   +4.10 1 1 1 1 1   888    0 8.46 98.82 ----- 15.4 26.2 146.0 28.6 16.2 -29.9 14.9 -27.2 14.3 -29.0 15.1 -29.4
2025-09-29T10:14:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:14:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:14:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.342782
2025-09-29T10:14:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:14:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:14:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:14:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:14:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:14:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:13:39', tmtdew=7.18, humidity=60.87, cloud=0.0, wind=27.56, temperature=9.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:13:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:14:03.967 [DEBUG] [Thread-153072] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:04.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:14:04.061 [DEBUG] [Thread-153075] [transport.py] [_log()] starting thread (client mode): 0x287071c0
2025-09-29T10:14:04.061 [DEBUG] [Thread-153075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:04.076 [DEBUG] [Thread-153075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:14:04.076 [INFO] [Thread-153075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:14:04.084 [DEBUG] [Thread-153075] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:04.084 [DEBUG] [Thread-153075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:14:04.084 [DEBUG] [Thread-153075] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:04.084 [DEBUG] [Thread-153075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] Compression: none
2025-09-29T10:14:04.085 [DEBUG] [Thread-153075] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:04.144 [DEBUG] [Thread-153075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:04.144 [DEBUG] [Thread-153075] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:04.144 [DEBUG] [Thread-153075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:14:04.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:14:04.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:04.199 [DEBUG] [Thread-153075] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:04.200 [DEBUG] [Thread-153075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:04.200 [DEBUG] [Thread-153075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:04.200 [DEBUG] [Thread-153075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:14:04.200 [DEBUG] [Thread-153075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:04.216 [INFO] [Thread-153075] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:04.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:14:04.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:05.199 [DEBUG] [Thread-153075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:05.199 [DEBUG] [Thread-153075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:05.247 [DEBUG] [Thread-153075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:05.247 [DEBUG] [Thread-153075] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:05.256 [DEBUG] [Thread-153075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:05.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:05.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:14:05.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:14:05.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:05.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:05.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:05.290 [DEBUG] [Thread-153075] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:10.669 [DEBUG] [Thread-153077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:14:15.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:14:15.293 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:14:15.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:14:15.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 14, 11), 7.04, 61.4, 0.0, 27.44, 9.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:14:15.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:14:11
2025-09-29T10:14:15.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:14:16.138 [DEBUG] [Thread-153078] [transport.py] [_log()] starting thread (client mode): 0x28706b30
2025-09-29T10:14:16.138 [DEBUG] [Thread-153078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:16.155 [DEBUG] [Thread-153078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:14:16.155 [INFO] [Thread-153078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:16.157 [DEBUG] [Thread-153078] [transport.py] [_log()] Compression: none
2025-09-29T10:14:16.158 [DEBUG] [Thread-153078] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:16.169 [DEBUG] [Thread-153078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:16.169 [DEBUG] [Thread-153078] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:16.170 [DEBUG] [Thread-153078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:14:16.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:14:16.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:16.171 [DEBUG] [Thread-153078] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:16.171 [DEBUG] [Thread-153078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:16.171 [DEBUG] [Thread-153078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:16.171 [DEBUG] [Thread-153078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:14:16.172 [DEBUG] [Thread-153078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:16.194 [INFO] [Thread-153078] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:16.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:16.812 [DEBUG] [Thread-153078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:16.812 [DEBUG] [Thread-153078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:16.812 [DEBUG] [Thread-153078] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:14:16.853 [DEBUG] [Thread-153078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:16.853 [DEBUG] [Thread-153078] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:16.856 [DEBUG] [Thread-153078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:16.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:16.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:14:16.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:14:16.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:14:16.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:16.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:14:16.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:16.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:14:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.343129 -999.00  +10.00  21.11     67   +4.20 1 1 1 1 1   888    0 8.47 99.78 ----- 20.3 21.1 164.0 24.5 15.8 -29.2 14.7 -26.0 14.1 -27.7 14.9 -28.4
2025-09-29T10:14:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:14:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:14:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.343129
2025-09-29T10:14:16.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:14:16.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:14:16.879 [DEBUG] [Thread-153078] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:14:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:14:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:14:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:14:11', tmtdew=7.04, humidity=61.4, cloud=0.0, wind=27.44, temperature=9.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:14:06.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:14:16.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:14:16.973 [DEBUG] [Thread-153081] [transport.py] [_log()] starting thread (client mode): 0x2b91dfc0
2025-09-29T10:14:16.973 [DEBUG] [Thread-153081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:16.988 [DEBUG] [Thread-153081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:14:16.988 [INFO] [Thread-153081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:14:16.995 [DEBUG] [Thread-153081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:16.995 [DEBUG] [Thread-153081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:14:16.995 [DEBUG] [Thread-153081] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:16.995 [DEBUG] [Thread-153081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:16.995 [DEBUG] [Thread-153081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:16.995 [DEBUG] [Thread-153081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] Compression: none
2025-09-29T10:14:16.996 [DEBUG] [Thread-153081] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:17.052 [DEBUG] [Thread-153081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:17.052 [DEBUG] [Thread-153081] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:17.053 [DEBUG] [Thread-153081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:14:17.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:14:17.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:17.110 [DEBUG] [Thread-153081] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:17.110 [DEBUG] [Thread-153081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:17.111 [DEBUG] [Thread-153081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:17.111 [DEBUG] [Thread-153081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:14:17.111 [DEBUG] [Thread-153081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:17.129 [INFO] [Thread-153081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:17.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:14:17.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:18.088 [DEBUG] [Thread-153081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:18.089 [DEBUG] [Thread-153081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:18.136 [DEBUG] [Thread-153081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:18.137 [DEBUG] [Thread-153081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:18.146 [DEBUG] [Thread-153081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:18.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:18.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:14:18.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:14:18.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:18.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:18.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:18.191 [DEBUG] [Thread-153081] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:25.696 [DEBUG] [Thread-153083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:14:28.169 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:14:28.171 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:14:28.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:14:28.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:14:28.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:14:28.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 14, 11), 7.04, 61.4, 0.0, 27.44, 9.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:14:28.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:14:11
2025-09-29T10:14:28.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:14:29.042 [DEBUG] [Thread-153084] [transport.py] [_log()] starting thread (client mode): 0x2e34af80
2025-09-29T10:14:29.042 [DEBUG] [Thread-153084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:29.062 [DEBUG] [Thread-153084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:14:29.062 [INFO] [Thread-153084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:14:29.065 [DEBUG] [Thread-153084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:29.065 [DEBUG] [Thread-153084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] Compression: none
2025-09-29T10:14:29.066 [DEBUG] [Thread-153084] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:29.082 [DEBUG] [Thread-153084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:29.082 [DEBUG] [Thread-153084] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:29.083 [DEBUG] [Thread-153084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:14:29.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:14:29.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:29.085 [DEBUG] [Thread-153084] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:29.085 [DEBUG] [Thread-153084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:29.085 [DEBUG] [Thread-153084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:29.085 [DEBUG] [Thread-153084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:14:29.085 [DEBUG] [Thread-153084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:29.104 [INFO] [Thread-153084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:29.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:29.782 [DEBUG] [Thread-153084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:29.791 [DEBUG] [Thread-153084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:29.792 [DEBUG] [Thread-153084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:14:29.823 [DEBUG] [Thread-153084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:29.824 [DEBUG] [Thread-153084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:29.827 [DEBUG] [Thread-153084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:29.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:29.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:14:29.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:14:29.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:14:29.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:29.849 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:14:29.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:29.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:29.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:14:29.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.343129 -999.00  +10.00  21.11     67   +4.20 1 1 1 1 1   888    0 8.47 99.78 ----- 20.3 21.1 164.0 24.5 15.8 -29.2 14.7 -26.0 14.1 -27.7 14.9 -28.4
2025-09-29T10:14:29.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:14:29.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:14:29.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.343129
2025-09-29T10:14:29.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:14:29.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:14:29.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:14:29.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:14:29.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:14:29.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:14:11', tmtdew=7.04, humidity=61.4, cloud=0.0, wind=27.44, temperature=9.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:14:06.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:14:29.851 [DEBUG] [Thread-153084] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:29.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:14:29.947 [DEBUG] [Thread-153087] [transport.py] [_log()] starting thread (client mode): 0x2e349e40
2025-09-29T10:14:29.947 [DEBUG] [Thread-153087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:29.962 [DEBUG] [Thread-153087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:14:29.962 [INFO] [Thread-153087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:14:29.970 [DEBUG] [Thread-153087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:29.970 [DEBUG] [Thread-153087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:14:29.970 [DEBUG] [Thread-153087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:29.970 [DEBUG] [Thread-153087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:29.971 [DEBUG] [Thread-153087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:29.972 [DEBUG] [Thread-153087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:29.972 [DEBUG] [Thread-153087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:29.972 [DEBUG] [Thread-153087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:29.972 [DEBUG] [Thread-153087] [transport.py] [_log()] Compression: none
2025-09-29T10:14:29.972 [DEBUG] [Thread-153087] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:30.030 [DEBUG] [Thread-153087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:30.031 [DEBUG] [Thread-153087] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:30.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:14:30.032 [DEBUG] [Thread-153087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:14:30.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:30.088 [DEBUG] [Thread-153087] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:30.088 [DEBUG] [Thread-153087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:30.088 [DEBUG] [Thread-153087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:30.088 [DEBUG] [Thread-153087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:14:30.088 [DEBUG] [Thread-153087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:30.103 [INFO] [Thread-153087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:30.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:14:30.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:31.108 [DEBUG] [Thread-153087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:31.108 [DEBUG] [Thread-153087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:31.156 [DEBUG] [Thread-153087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:31.156 [DEBUG] [Thread-153087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:31.165 [DEBUG] [Thread-153087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:31.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:31.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:14:31.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:14:31.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:31.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:31.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:31.199 [DEBUG] [Thread-153087] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:32.166 [DEBUG] [Thread-153089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:14:40.747 [DEBUG] [Thread-153090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:14:41.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:14:41.202 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:14:41.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:14:41.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 14, 11), 7.04, 61.4, 0.0, 27.44, 9.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:14:41.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:14:11
2025-09-29T10:14:41.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:14:42.047 [DEBUG] [Thread-153091] [transport.py] [_log()] starting thread (client mode): 0x2e349ae0
2025-09-29T10:14:42.047 [DEBUG] [Thread-153091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:42.067 [DEBUG] [Thread-153091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:14:42.067 [INFO] [Thread-153091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:14:42.070 [DEBUG] [Thread-153091] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:42.070 [DEBUG] [Thread-153091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:14:42.070 [DEBUG] [Thread-153091] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:42.070 [DEBUG] [Thread-153091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:42.070 [DEBUG] [Thread-153091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:42.070 [DEBUG] [Thread-153091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] Compression: none
2025-09-29T10:14:42.071 [DEBUG] [Thread-153091] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:42.090 [DEBUG] [Thread-153091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:42.091 [DEBUG] [Thread-153091] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:42.092 [DEBUG] [Thread-153091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:14:42.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:14:42.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:42.133 [DEBUG] [Thread-153091] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:42.133 [DEBUG] [Thread-153091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:42.133 [DEBUG] [Thread-153091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:42.133 [DEBUG] [Thread-153091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:14:42.133 [DEBUG] [Thread-153091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:42.165 [INFO] [Thread-153091] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:42.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:42.804 [DEBUG] [Thread-153091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:42.804 [DEBUG] [Thread-153091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:42.804 [DEBUG] [Thread-153091] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:14:42.845 [DEBUG] [Thread-153091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:42.845 [DEBUG] [Thread-153091] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:42.848 [DEBUG] [Thread-153091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:42.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:42.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:14:42.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:14:42.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:14:42.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:42.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:14:42.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:42.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:42.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:14:42.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.343129 -999.00  +10.00  21.11     67   +4.20 1 1 1 1 1   888    0 8.47 99.78 ----- 20.3 21.1 164.0 24.5 15.8 -29.2 14.7 -26.0 14.1 -27.7 14.9 -28.4
2025-09-29T10:14:42.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:14:42.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:14:42.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.343129
2025-09-29T10:14:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:14:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:14:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:14:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:14:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:14:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:14:11', tmtdew=7.04, humidity=61.4, cloud=0.0, wind=27.44, temperature=9.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:14:06.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:14:42.867 [DEBUG] [Thread-153091] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:42.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:14:42.963 [DEBUG] [Thread-153094] [transport.py] [_log()] starting thread (client mode): 0x2e3609a0
2025-09-29T10:14:42.964 [DEBUG] [Thread-153094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:42.983 [DEBUG] [Thread-153094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:14:42.983 [INFO] [Thread-153094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:14:42.990 [DEBUG] [Thread-153094] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:42.991 [DEBUG] [Thread-153094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:42.992 [DEBUG] [Thread-153094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:42.992 [DEBUG] [Thread-153094] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:42.992 [DEBUG] [Thread-153094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:42.992 [DEBUG] [Thread-153094] [transport.py] [_log()] Compression: none
2025-09-29T10:14:42.992 [DEBUG] [Thread-153094] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:43.049 [DEBUG] [Thread-153094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:43.049 [DEBUG] [Thread-153094] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:43.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:14:43.050 [DEBUG] [Thread-153094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:14:43.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:43.104 [DEBUG] [Thread-153094] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:43.104 [DEBUG] [Thread-153094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:43.104 [DEBUG] [Thread-153094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:43.104 [DEBUG] [Thread-153094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:14:43.104 [DEBUG] [Thread-153094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:43.126 [INFO] [Thread-153094] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:43.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:14:43.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:44.078 [DEBUG] [Thread-153094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:44.078 [DEBUG] [Thread-153094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:44.126 [DEBUG] [Thread-153094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:44.126 [DEBUG] [Thread-153094] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:44.135 [DEBUG] [Thread-153094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:44.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:44.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:14:44.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:14:44.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:44.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:44.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:44.171 [DEBUG] [Thread-153094] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:54.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:14:54.174 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:14:54.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:14:54.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 14, 43), 6.77, 62.93, 0.0, 25.62, 9.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:14:54.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:14:43
2025-09-29T10:14:54.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:14:55.025 [DEBUG] [Thread-153096] [transport.py] [_log()] starting thread (client mode): 0x2e34bd90
2025-09-29T10:14:55.025 [DEBUG] [Thread-153096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:55.045 [DEBUG] [Thread-153096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:14:55.045 [INFO] [Thread-153096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:14:55.048 [DEBUG] [Thread-153096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:55.048 [DEBUG] [Thread-153096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:14:55.048 [DEBUG] [Thread-153096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:55.048 [DEBUG] [Thread-153096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:55.048 [DEBUG] [Thread-153096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:55.048 [DEBUG] [Thread-153096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] Compression: none
2025-09-29T10:14:55.049 [DEBUG] [Thread-153096] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:55.065 [DEBUG] [Thread-153096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:55.065 [DEBUG] [Thread-153096] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:55.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:14:55.066 [DEBUG] [Thread-153096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:14:55.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:55.068 [DEBUG] [Thread-153096] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:55.069 [DEBUG] [Thread-153096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:55.069 [DEBUG] [Thread-153096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:55.069 [DEBUG] [Thread-153096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:14:55.069 [DEBUG] [Thread-153096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:55.088 [INFO] [Thread-153096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:55.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:55.752 [DEBUG] [Thread-153096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:55.753 [DEBUG] [Thread-153096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:55.753 [DEBUG] [Thread-153096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:14:55.777 [DEBUG] [Thread-153098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:14:55.793 [DEBUG] [Thread-153096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:55.793 [DEBUG] [Thread-153096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:55.797 [DEBUG] [Thread-153096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:55.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:55.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:14:55.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:14:55.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:14:55.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:55.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:14:55.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:55.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:55.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:14:55.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.343476 -999.00  +10.20  19.38     67   +4.50 1 1 1 1 1   888    0 8.34 93.80 ----- 18.8 19.4 157.8 23.7 16.1 -21.7 15.1 -21.2 14.0 -25.7 15.4 -22.4
2025-09-29T10:14:55.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:14:55.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:14:55.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.343476
2025-09-29T10:14:55.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:14:55.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:14:55.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:14:55.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:14:55.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:14:55.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:14:43', tmtdew=6.77, humidity=62.93, cloud=0.0, wind=25.62, temperature=9.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:14:36.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:14:55.824 [DEBUG] [Thread-153096] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:14:55.909 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:14:55.919 [DEBUG] [Thread-153100] [transport.py] [_log()] starting thread (client mode): 0x2e34a530
2025-09-29T10:14:55.919 [DEBUG] [Thread-153100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:14:55.933 [DEBUG] [Thread-153100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:14:55.933 [INFO] [Thread-153100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:14:55.941 [DEBUG] [Thread-153100] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:14:55.941 [DEBUG] [Thread-153100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:14:55.941 [DEBUG] [Thread-153100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:14:55.941 [DEBUG] [Thread-153100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:55.941 [DEBUG] [Thread-153100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] client lang: <none>
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] server lang: <none>
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] kex follows: False
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:14:55.942 [DEBUG] [Thread-153100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:14:55.943 [DEBUG] [Thread-153100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:14:55.943 [DEBUG] [Thread-153100] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:14:55.943 [DEBUG] [Thread-153100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:14:55.943 [DEBUG] [Thread-153100] [transport.py] [_log()] Compression: none
2025-09-29T10:14:55.943 [DEBUG] [Thread-153100] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:14:56.003 [DEBUG] [Thread-153100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:14:56.003 [DEBUG] [Thread-153100] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:14:56.003 [DEBUG] [Thread-153100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:14:56.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:14:56.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:14:56.060 [DEBUG] [Thread-153100] [transport.py] [_log()] userauth is OK
2025-09-29T10:14:56.060 [DEBUG] [Thread-153100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:14:56.060 [DEBUG] [Thread-153100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:14:56.060 [DEBUG] [Thread-153100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:14:56.061 [DEBUG] [Thread-153100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:14:56.075 [INFO] [Thread-153100] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:14:56.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:14:56.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:14:57.016 [DEBUG] [Thread-153100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:14:57.016 [DEBUG] [Thread-153100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:14:57.064 [DEBUG] [Thread-153100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:14:57.064 [DEBUG] [Thread-153100] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:14:57.074 [DEBUG] [Thread-153100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:14:57.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:14:57.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:14:57.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:14:57.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:14:57.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:14:57.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:14:57.110 [DEBUG] [Thread-153100] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:15:07.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:15:07.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:15:07.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:15:07.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 14, 43), 6.77, 62.93, 0.0, 25.62, 9.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:15:07.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:14:43
2025-09-29T10:15:07.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:15:07.949 [DEBUG] [Thread-153102] [transport.py] [_log()] starting thread (client mode): 0x2e3635b0
2025-09-29T10:15:07.949 [DEBUG] [Thread-153102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:15:07.969 [DEBUG] [Thread-153102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:15:07.969 [INFO] [Thread-153102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:15:07.972 [DEBUG] [Thread-153102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:15:07.972 [DEBUG] [Thread-153102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:15:07.972 [DEBUG] [Thread-153102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:15:07.972 [DEBUG] [Thread-153102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:07.972 [DEBUG] [Thread-153102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:07.972 [DEBUG] [Thread-153102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:07.972 [DEBUG] [Thread-153102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] client lang: <none>
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] server lang: <none>
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] kex follows: False
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] Compression: none
2025-09-29T10:15:07.973 [DEBUG] [Thread-153102] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:15:07.991 [DEBUG] [Thread-153102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:15:07.992 [DEBUG] [Thread-153102] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:15:07.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:15:07.993 [DEBUG] [Thread-153102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:15:07.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:15:07.995 [DEBUG] [Thread-153102] [transport.py] [_log()] userauth is OK
2025-09-29T10:15:07.995 [DEBUG] [Thread-153102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:15:07.995 [DEBUG] [Thread-153102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:15:07.995 [DEBUG] [Thread-153102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:15:07.995 [DEBUG] [Thread-153102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:15:08.018 [INFO] [Thread-153102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:15:08.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:15:10.807 [DEBUG] [Thread-153104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:15:15.303 [DEBUG] [Thread-153102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:15:15.303 [DEBUG] [Thread-153102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:15:15.303 [DEBUG] [Thread-153102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:15:15.344 [DEBUG] [Thread-153102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:15:15.344 [DEBUG] [Thread-153102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:15:15.346 [DEBUG] [Thread-153102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:15:15.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:15:15.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:15:15.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:15:15.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:15:15.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:15:15.474 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:15:15.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:15:15.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:15:15.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:15:15.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.343476 -999.00  +10.20  19.38     67   +4.50 1 1 1 1 1   888    0 8.34 93.80 ----- 18.8 19.4 157.8 23.7 16.1 -21.7 15.1 -21.2 14.0 -25.7 15.4 -22.4
2025-09-29T10:15:15.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:15:15.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:15:15.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.343476
2025-09-29T10:15:15.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:15:15.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:15:15.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:15:15.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:15:15.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:15:15.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:14:43', tmtdew=6.77, humidity=62.93, cloud=0.0, wind=25.62, temperature=9.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:14:36.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:15:15.476 [DEBUG] [Thread-153102] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:15:15.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:15:15.565 [DEBUG] [Thread-153106] [transport.py] [_log()] starting thread (client mode): 0x2e3496c0
2025-09-29T10:15:15.565 [DEBUG] [Thread-153106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:15:15.579 [DEBUG] [Thread-153106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:15:15.579 [INFO] [Thread-153106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] client lang: <none>
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] server lang: <none>
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] kex follows: False
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] Compression: none
2025-09-29T10:15:15.591 [DEBUG] [Thread-153106] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:15:15.650 [DEBUG] [Thread-153106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:15:15.650 [DEBUG] [Thread-153106] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:15:15.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:15:15.651 [DEBUG] [Thread-153106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:15:15.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:15:15.708 [DEBUG] [Thread-153106] [transport.py] [_log()] userauth is OK
2025-09-29T10:15:15.708 [DEBUG] [Thread-153106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:15:15.708 [DEBUG] [Thread-153106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:15:15.708 [DEBUG] [Thread-153106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:15:15.708 [DEBUG] [Thread-153106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:15:15.726 [INFO] [Thread-153106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:15:15.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:15:15.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:15:16.658 [DEBUG] [Thread-153106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:15:16.658 [DEBUG] [Thread-153106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:15:16.711 [DEBUG] [Thread-153106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:15:16.711 [DEBUG] [Thread-153106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:15:16.720 [DEBUG] [Thread-153106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:15:16.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:15:16.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:15:16.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:15:16.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:15:16.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:15:16.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:15:16.756 [DEBUG] [Thread-153106] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:15:25.851 [DEBUG] [Thread-153108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:15:26.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:15:26.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:15:26.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:15:27.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 15, 15), 6.82, 62.71, 0.0, 25.85, 9.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:15:27.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:15:15
2025-09-29T10:15:27.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:15:27.612 [DEBUG] [Thread-153109] [transport.py] [_log()] starting thread (client mode): 0x287056c0
2025-09-29T10:15:27.612 [DEBUG] [Thread-153109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:15:27.638 [DEBUG] [Thread-153109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:15:27.639 [INFO] [Thread-153109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:15:27.642 [DEBUG] [Thread-153109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:15:27.642 [DEBUG] [Thread-153109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:15:27.642 [DEBUG] [Thread-153109] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:15:27.642 [DEBUG] [Thread-153109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] client lang: <none>
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] server lang: <none>
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] kex follows: False
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:15:27.643 [DEBUG] [Thread-153109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:15:27.644 [DEBUG] [Thread-153109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:15:27.644 [DEBUG] [Thread-153109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:15:27.644 [DEBUG] [Thread-153109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:15:27.644 [DEBUG] [Thread-153109] [transport.py] [_log()] Compression: none
2025-09-29T10:15:27.644 [DEBUG] [Thread-153109] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:15:27.663 [DEBUG] [Thread-153109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:15:27.664 [DEBUG] [Thread-153109] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:15:27.664 [DEBUG] [Thread-153109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:15:27.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:15:27.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:15:27.666 [DEBUG] [Thread-153109] [transport.py] [_log()] userauth is OK
2025-09-29T10:15:27.666 [DEBUG] [Thread-153109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:15:27.667 [DEBUG] [Thread-153109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:15:27.667 [DEBUG] [Thread-153109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:15:27.667 [DEBUG] [Thread-153109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:15:27.681 [INFO] [Thread-153109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:15:27.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:15:28.306 [DEBUG] [Thread-153109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:15:28.306 [DEBUG] [Thread-153109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:15:28.307 [DEBUG] [Thread-153109] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:15:28.311 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:15:28.312 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:15:28.347 [DEBUG] [Thread-153109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:15:28.347 [DEBUG] [Thread-153109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:15:28.350 [DEBUG] [Thread-153109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:15:28.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:15:28.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:15:28.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:15:28.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:15:28.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:15:28.370 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:15:28.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:15:28.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:15:28.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:15:28.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.343823 -999.00  +10.40  26.87     67   +4.60 1 2 1 1 1   888    0 8.34 93.01 ----- 28.6 26.9 166.4 37.6 16.3 -22.7 15.1 -22.4 14.4 -22.5 15.5 -23.3
2025-09-29T10:15:28.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:15:28.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:15:28.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.343823
2025-09-29T10:15:28.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:15:28.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:15:28.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:15:28.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:15:28.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:15:28.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:15:15', tmtdew=6.82, humidity=62.71, cloud=0.0, wind=25.85, temperature=9.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:15:06.307', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:15:28.373 [DEBUG] [Thread-153109] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:15:28.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:15:28.467 [DEBUG] [Thread-153112] [transport.py] [_log()] starting thread (client mode): 0x2e34a8f0
2025-09-29T10:15:28.467 [DEBUG] [Thread-153112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:15:28.482 [DEBUG] [Thread-153112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:15:28.482 [INFO] [Thread-153112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] client lang: <none>
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] server lang: <none>
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] kex follows: False
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] Compression: none
2025-09-29T10:15:28.490 [DEBUG] [Thread-153112] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:15:28.548 [DEBUG] [Thread-153112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:15:28.548 [DEBUG] [Thread-153112] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:15:28.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:15:28.549 [DEBUG] [Thread-153112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:15:28.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:15:28.604 [DEBUG] [Thread-153112] [transport.py] [_log()] userauth is OK
2025-09-29T10:15:28.605 [DEBUG] [Thread-153112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:15:28.605 [DEBUG] [Thread-153112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:15:28.605 [DEBUG] [Thread-153112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:15:28.605 [DEBUG] [Thread-153112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:15:28.624 [INFO] [Thread-153112] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:15:28.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:15:28.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:15:29.619 [DEBUG] [Thread-153112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:15:29.619 [DEBUG] [Thread-153112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:15:29.667 [DEBUG] [Thread-153112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:15:29.667 [DEBUG] [Thread-153112] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:15:29.676 [DEBUG] [Thread-153112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:15:29.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:15:29.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:15:29.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:15:29.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:15:29.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:15:29.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:15:29.711 [DEBUG] [Thread-153112] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:15:32.221 [DEBUG] [Thread-153114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:15:39.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:15:39.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:15:39.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:15:40.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 15, 15), 6.82, 62.71, 0.0, 25.85, 9.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:15:40.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:15:15
2025-09-29T10:15:40.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:15:40.567 [DEBUG] [Thread-153115] [transport.py] [_log()] starting thread (client mode): 0x2e348250
2025-09-29T10:15:40.568 [DEBUG] [Thread-153115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:15:40.588 [DEBUG] [Thread-153115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:15:40.588 [INFO] [Thread-153115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] client lang: <none>
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] server lang: <none>
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] kex follows: False
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:15:40.591 [DEBUG] [Thread-153115] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:15:40.592 [DEBUG] [Thread-153115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:15:40.592 [DEBUG] [Thread-153115] [transport.py] [_log()] Compression: none
2025-09-29T10:15:40.592 [DEBUG] [Thread-153115] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:15:40.609 [DEBUG] [Thread-153115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:15:40.609 [DEBUG] [Thread-153115] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:15:40.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:15:40.610 [DEBUG] [Thread-153115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:15:40.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:15:40.612 [DEBUG] [Thread-153115] [transport.py] [_log()] userauth is OK
2025-09-29T10:15:40.613 [DEBUG] [Thread-153115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:15:40.613 [DEBUG] [Thread-153115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:15:40.613 [DEBUG] [Thread-153115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:15:40.613 [DEBUG] [Thread-153115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:15:40.636 [INFO] [Thread-153115] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:15:40.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:15:40.887 [DEBUG] [Thread-153117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:15:42.099 [DEBUG] [Thread-153115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:15:42.100 [DEBUG] [Thread-153115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:15:42.100 [DEBUG] [Thread-153115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:15:42.140 [DEBUG] [Thread-153115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:15:42.140 [DEBUG] [Thread-153115] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:15:42.144 [DEBUG] [Thread-153115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:15:42.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:15:42.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:15:42.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:15:42.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:15:42.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:15:42.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:15:42.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:15:42.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:15:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:15:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.343823 -999.00  +10.40  26.87     67   +4.60 1 2 1 1 1   888    0 8.34 93.01 ----- 28.6 26.9 166.4 37.6 16.3 -22.7 15.1 -22.4 14.4 -22.5 15.5 -23.3
2025-09-29T10:15:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:15:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:15:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.343823
2025-09-29T10:15:42.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:15:42.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:15:42.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:15:42.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:15:42.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:15:42.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:15:15', tmtdew=6.82, humidity=62.71, cloud=0.0, wind=25.85, temperature=9.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:15:06.307', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:15:42.169 [DEBUG] [Thread-153115] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:15:42.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:15:42.265 [DEBUG] [Thread-153119] [transport.py] [_log()] starting thread (client mode): 0x2e348c40
2025-09-29T10:15:42.265 [DEBUG] [Thread-153119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:15:42.280 [DEBUG] [Thread-153119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:15:42.280 [INFO] [Thread-153119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:15:42.287 [DEBUG] [Thread-153119] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:15:42.287 [DEBUG] [Thread-153119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] client lang: <none>
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] server lang: <none>
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] kex follows: False
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] Compression: none
2025-09-29T10:15:42.288 [DEBUG] [Thread-153119] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:15:42.345 [DEBUG] [Thread-153119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:15:42.346 [DEBUG] [Thread-153119] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:15:42.346 [DEBUG] [Thread-153119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:15:42.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:15:42.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:15:42.400 [DEBUG] [Thread-153119] [transport.py] [_log()] userauth is OK
2025-09-29T10:15:42.401 [DEBUG] [Thread-153119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:15:42.401 [DEBUG] [Thread-153119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:15:42.401 [DEBUG] [Thread-153119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:15:42.401 [DEBUG] [Thread-153119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:15:42.420 [INFO] [Thread-153119] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:15:42.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:15:42.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:15:43.421 [DEBUG] [Thread-153119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:15:43.421 [DEBUG] [Thread-153119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:15:43.469 [DEBUG] [Thread-153119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:15:43.469 [DEBUG] [Thread-153119] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:15:43.477 [DEBUG] [Thread-153119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:15:43.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:15:43.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:15:43.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:15:43.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:15:43.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:15:43.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:15:43.509 [DEBUG] [Thread-153119] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:15:53.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:15:53.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:15:53.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:15:54.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 15, 47), 7.05, 61.64, 0.0, 29.06, 10.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:15:54.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:15:47
2025-09-29T10:15:54.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:15:54.388 [DEBUG] [Thread-153121] [transport.py] [_log()] starting thread (client mode): 0x28706fb0
2025-09-29T10:15:54.389 [DEBUG] [Thread-153121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:15:54.404 [DEBUG] [Thread-153121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:15:54.404 [INFO] [Thread-153121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:15:54.407 [DEBUG] [Thread-153121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] client lang: <none>
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] server lang: <none>
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] kex follows: False
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] Compression: none
2025-09-29T10:15:54.408 [DEBUG] [Thread-153121] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:15:54.424 [DEBUG] [Thread-153121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:15:54.424 [DEBUG] [Thread-153121] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:15:54.425 [DEBUG] [Thread-153121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:15:54.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:15:54.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:15:54.426 [DEBUG] [Thread-153121] [transport.py] [_log()] userauth is OK
2025-09-29T10:15:54.427 [DEBUG] [Thread-153121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:15:54.427 [DEBUG] [Thread-153121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:15:54.427 [DEBUG] [Thread-153121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:15:54.427 [DEBUG] [Thread-153121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:15:54.450 [INFO] [Thread-153121] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:15:54.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:15:55.217 [DEBUG] [Thread-153121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:15:55.217 [DEBUG] [Thread-153121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:15:55.218 [DEBUG] [Thread-153121] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:15:55.258 [DEBUG] [Thread-153121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:15:55.258 [DEBUG] [Thread-153121] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:15:55.261 [DEBUG] [Thread-153121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:15:55.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:15:55.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:15:55.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:15:55.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:15:55.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:15:55.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:15:55.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:15:55.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:15:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:15:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.343823 -999.00  +10.40  26.87     67   +4.60 1 2 1 1 1   888    0 8.34 93.01 ----- 28.6 26.9 166.4 37.6 16.3 -22.7 15.1 -22.4 14.4 -22.5 15.5 -23.3
2025-09-29T10:15:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:15:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:15:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.343823
2025-09-29T10:15:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:15:55.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:15:55.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:15:55.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:15:55.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:15:55.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:15:47', tmtdew=7.05, humidity=61.64, cloud=0.0, wind=29.06, temperature=10.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:15:06.307', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:15:55.287 [DEBUG] [Thread-153121] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:15:55.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:15:55.381 [DEBUG] [Thread-153124] [transport.py] [_log()] starting thread (client mode): 0x2b9bb880
2025-09-29T10:15:55.381 [DEBUG] [Thread-153124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:15:55.395 [DEBUG] [Thread-153124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:15:55.395 [INFO] [Thread-153124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:15:55.405 [DEBUG] [Thread-153124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:15:55.405 [DEBUG] [Thread-153124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] client lang: <none>
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] server lang: <none>
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] kex follows: False
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] Compression: none
2025-09-29T10:15:55.406 [DEBUG] [Thread-153124] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:15:55.470 [DEBUG] [Thread-153124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:15:55.470 [DEBUG] [Thread-153124] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:15:55.480 [DEBUG] [Thread-153124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:15:55.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:15:55.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:15:55.529 [DEBUG] [Thread-153124] [transport.py] [_log()] userauth is OK
2025-09-29T10:15:55.529 [DEBUG] [Thread-153124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:15:55.529 [DEBUG] [Thread-153124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:15:55.529 [DEBUG] [Thread-153124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:15:55.529 [DEBUG] [Thread-153124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:15:55.548 [INFO] [Thread-153124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:15:55.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:15:55.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:15:55.937 [DEBUG] [Thread-153126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:15:56.514 [DEBUG] [Thread-153124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:15:56.514 [DEBUG] [Thread-153124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:15:56.564 [DEBUG] [Thread-153124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:15:56.564 [DEBUG] [Thread-153124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:15:56.574 [DEBUG] [Thread-153124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:15:56.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:15:56.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:15:56.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:15:56.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:15:56.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:15:56.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:15:56.608 [DEBUG] [Thread-153124] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:06.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:16:06.611 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:16:06.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:16:07.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 15, 47), 7.05, 61.64, 0.0, 29.06, 10.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:16:07.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:15:47
2025-09-29T10:16:07.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:16:07.471 [DEBUG] [Thread-153127] [transport.py] [_log()] starting thread (client mode): 0x2b9b8a60
2025-09-29T10:16:07.471 [DEBUG] [Thread-153127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:07.486 [DEBUG] [Thread-153127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:16:07.487 [INFO] [Thread-153127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:07.490 [DEBUG] [Thread-153127] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:07.491 [DEBUG] [Thread-153127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:07.491 [DEBUG] [Thread-153127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:07.491 [DEBUG] [Thread-153127] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:07.491 [DEBUG] [Thread-153127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:07.491 [DEBUG] [Thread-153127] [transport.py] [_log()] Compression: none
2025-09-29T10:16:07.491 [DEBUG] [Thread-153127] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:07.509 [DEBUG] [Thread-153127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:07.510 [DEBUG] [Thread-153127] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:07.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:16:07.511 [DEBUG] [Thread-153127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:16:07.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:07.553 [DEBUG] [Thread-153127] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:07.553 [DEBUG] [Thread-153127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:07.553 [DEBUG] [Thread-153127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:07.553 [DEBUG] [Thread-153127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:16:07.553 [DEBUG] [Thread-153127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:07.577 [INFO] [Thread-153127] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:07.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:16:08.253 [DEBUG] [Thread-153127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:16:08.254 [DEBUG] [Thread-153127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:16:08.254 [DEBUG] [Thread-153127] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:16:08.294 [DEBUG] [Thread-153127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:16:08.294 [DEBUG] [Thread-153127] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:16:08.297 [DEBUG] [Thread-153127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:16:08.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:16:08.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:16:08.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:16:08.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:16:08.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:16:08.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:16:08.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:16:08.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:16:08.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:16:08.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.344171 -999.00  +10.30  32.21     66   +4.40 1 2 2 1 1   888    0 8.15 83.51 ----- 26.9 32.2 167.4 42.2 16.4 -24.2 15.2 -22.1 14.5 -23.0 15.4 -24.2
2025-09-29T10:16:08.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:16:08.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:16:08.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.344171
2025-09-29T10:16:08.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:16:08.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:16:08.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:16:08.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:16:08.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:16:08.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:15:47', tmtdew=7.05, humidity=61.64, cloud=0.0, wind=29.06, temperature=10.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:15:36.374', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:16:08.317 [DEBUG] [Thread-153127] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:08.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:16:08.406 [DEBUG] [Thread-153130] [transport.py] [_log()] starting thread (client mode): 0x28706470
2025-09-29T10:16:08.406 [DEBUG] [Thread-153130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:08.421 [DEBUG] [Thread-153130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:16:08.421 [INFO] [Thread-153130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:08.428 [DEBUG] [Thread-153130] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:08.429 [DEBUG] [Thread-153130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:08.429 [DEBUG] [Thread-153130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:08.429 [DEBUG] [Thread-153130] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:08.429 [DEBUG] [Thread-153130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:08.429 [DEBUG] [Thread-153130] [transport.py] [_log()] Compression: none
2025-09-29T10:16:08.429 [DEBUG] [Thread-153130] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:08.484 [DEBUG] [Thread-153130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:08.484 [DEBUG] [Thread-153130] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:08.484 [DEBUG] [Thread-153130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:16:08.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:16:08.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:08.541 [DEBUG] [Thread-153130] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:08.541 [DEBUG] [Thread-153130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:08.541 [DEBUG] [Thread-153130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:08.541 [DEBUG] [Thread-153130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:16:08.541 [DEBUG] [Thread-153130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:08.564 [INFO] [Thread-153130] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:08.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:16:08.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:16:09.509 [DEBUG] [Thread-153130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:16:09.510 [DEBUG] [Thread-153130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:16:09.557 [DEBUG] [Thread-153130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:16:09.557 [DEBUG] [Thread-153130] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:16:09.565 [DEBUG] [Thread-153130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:16:09.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:16:09.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:16:09.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:16:09.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:16:09.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:16:09.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:16:09.599 [DEBUG] [Thread-153130] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:10.982 [DEBUG] [Thread-153132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:16:19.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:16:19.600 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:16:19.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:16:20.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 15, 47), 7.05, 61.64, 0.0, 29.06, 10.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:16:20.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:15:47
2025-09-29T10:16:20.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:16:20.515 [DEBUG] [Thread-153133] [transport.py] [_log()] starting thread (client mode): 0x2e348100
2025-09-29T10:16:20.515 [DEBUG] [Thread-153133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:20.534 [DEBUG] [Thread-153133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:16:20.534 [INFO] [Thread-153133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] Compression: none
2025-09-29T10:16:20.538 [DEBUG] [Thread-153133] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:20.554 [DEBUG] [Thread-153133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:20.554 [DEBUG] [Thread-153133] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:20.554 [DEBUG] [Thread-153133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:16:20.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:16:20.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:20.555 [DEBUG] [Thread-153133] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:20.555 [DEBUG] [Thread-153133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:20.555 [DEBUG] [Thread-153133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:20.555 [DEBUG] [Thread-153133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:16:20.555 [DEBUG] [Thread-153133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:20.582 [INFO] [Thread-153133] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:20.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:16:21.400 [DEBUG] [Thread-153133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:16:21.400 [DEBUG] [Thread-153133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:16:21.401 [DEBUG] [Thread-153133] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:16:21.441 [DEBUG] [Thread-153133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:16:21.442 [DEBUG] [Thread-153133] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:16:21.445 [DEBUG] [Thread-153133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:16:21.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:16:21.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:16:21.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:16:21.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:16:21.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:16:21.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:16:21.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:16:21.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:16:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:16:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.344171 -999.00  +10.30  32.21     66   +4.40 1 2 2 1 1   888    0 8.15 83.51 ----- 26.9 32.2 167.4 42.2 16.4 -24.2 15.2 -22.1 14.5 -23.0 15.4 -24.2
2025-09-29T10:16:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:16:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:16:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.344171
2025-09-29T10:16:21.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:16:21.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:16:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:16:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:16:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:16:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:15:47', tmtdew=7.05, humidity=61.64, cloud=0.0, wind=29.06, temperature=10.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:15:36.374', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:16:21.464 [DEBUG] [Thread-153133] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:21.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:16:21.557 [DEBUG] [Thread-153136] [transport.py] [_log()] starting thread (client mode): 0x2e3484c0
2025-09-29T10:16:21.557 [DEBUG] [Thread-153136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:21.572 [DEBUG] [Thread-153136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:16:21.572 [INFO] [Thread-153136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:21.580 [DEBUG] [Thread-153136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:21.581 [DEBUG] [Thread-153136] [transport.py] [_log()] Compression: none
2025-09-29T10:16:21.581 [DEBUG] [Thread-153136] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:21.636 [DEBUG] [Thread-153136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:21.637 [DEBUG] [Thread-153136] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:21.638 [DEBUG] [Thread-153136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:16:21.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:16:21.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:21.697 [DEBUG] [Thread-153136] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:21.697 [DEBUG] [Thread-153136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:21.697 [DEBUG] [Thread-153136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:21.697 [DEBUG] [Thread-153136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:16:21.698 [DEBUG] [Thread-153136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:21.720 [INFO] [Thread-153136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:21.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:16:21.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:16:22.667 [DEBUG] [Thread-153136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:16:22.668 [DEBUG] [Thread-153136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:16:22.715 [DEBUG] [Thread-153136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:16:22.715 [DEBUG] [Thread-153136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:16:22.724 [DEBUG] [Thread-153136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:16:22.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:16:22.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:16:22.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:16:22.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:16:22.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:16:22.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:16:22.757 [DEBUG] [Thread-153136] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:26.025 [DEBUG] [Thread-153138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:16:28.456 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:16:28.457 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:16:32.268 [DEBUG] [Thread-153139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:16:32.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:16:32.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:16:32.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:16:33.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 16, 19), 7.2, 61.05, 0.0, 26.71, 10.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:16:33.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:16:19
2025-09-29T10:16:33.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:16:33.730 [DEBUG] [Thread-153140] [transport.py] [_log()] starting thread (client mode): 0x2b9b94b0
2025-09-29T10:16:33.731 [DEBUG] [Thread-153140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:33.750 [DEBUG] [Thread-153140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:16:33.751 [INFO] [Thread-153140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:16:33.752 [DEBUG] [Thread-153140] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:33.753 [DEBUG] [Thread-153140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:16:33.753 [DEBUG] [Thread-153140] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:33.753 [DEBUG] [Thread-153140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:33.753 [DEBUG] [Thread-153140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:33.753 [DEBUG] [Thread-153140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:33.753 [DEBUG] [Thread-153140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:33.753 [DEBUG] [Thread-153140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:33.754 [DEBUG] [Thread-153140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:33.754 [DEBUG] [Thread-153140] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:33.754 [DEBUG] [Thread-153140] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:33.754 [DEBUG] [Thread-153140] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:33.754 [DEBUG] [Thread-153140] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:33.754 [DEBUG] [Thread-153140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:33.754 [DEBUG] [Thread-153140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:33.754 [DEBUG] [Thread-153140] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:33.755 [DEBUG] [Thread-153140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:33.755 [DEBUG] [Thread-153140] [transport.py] [_log()] Compression: none
2025-09-29T10:16:33.755 [DEBUG] [Thread-153140] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:33.769 [DEBUG] [Thread-153140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:33.769 [DEBUG] [Thread-153140] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:33.770 [DEBUG] [Thread-153140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:16:33.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:16:33.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:33.772 [DEBUG] [Thread-153140] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:33.772 [DEBUG] [Thread-153140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:33.772 [DEBUG] [Thread-153140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:33.772 [DEBUG] [Thread-153140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:16:33.772 [DEBUG] [Thread-153140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:33.796 [INFO] [Thread-153140] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:33.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:16:34.402 [DEBUG] [Thread-153140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:16:34.402 [DEBUG] [Thread-153140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:16:34.403 [DEBUG] [Thread-153140] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:16:34.443 [DEBUG] [Thread-153140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:16:34.443 [DEBUG] [Thread-153140] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:16:34.445 [DEBUG] [Thread-153140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:16:34.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:16:34.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:16:34.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:16:34.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:16:34.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:16:34.465 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:16:34.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:16:34.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:16:34.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:16:34.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.344518 -999.00  +10.10  18.44     67   +4.40 1 1 1 1 1   888    0 7.97 76.71 ----- 21.8 18.4 143.2 37.0 16.4 -24.4 15.2 -22.2 14.4 -24.1 15.5 -24.4
2025-09-29T10:16:34.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:16:34.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:16:34.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.344518
2025-09-29T10:16:34.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:16:34.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:16:34.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:16:34.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:16:34.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:16:34.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:16:19', tmtdew=7.2, humidity=61.05, cloud=0.0, wind=26.71, temperature=10.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:16:06.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:16:34.467 [DEBUG] [Thread-153140] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:34.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:16:34.563 [DEBUG] [Thread-153143] [transport.py] [_log()] starting thread (client mode): 0x2b9c07f0
2025-09-29T10:16:34.563 [DEBUG] [Thread-153143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:34.578 [DEBUG] [Thread-153143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:16:34.578 [INFO] [Thread-153143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:16:34.586 [DEBUG] [Thread-153143] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:34.586 [DEBUG] [Thread-153143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:16:34.586 [DEBUG] [Thread-153143] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:34.586 [DEBUG] [Thread-153143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:34.586 [DEBUG] [Thread-153143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:34.586 [DEBUG] [Thread-153143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:34.586 [DEBUG] [Thread-153143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:34.586 [DEBUG] [Thread-153143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:34.587 [DEBUG] [Thread-153143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:34.587 [DEBUG] [Thread-153143] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:34.587 [DEBUG] [Thread-153143] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:34.587 [DEBUG] [Thread-153143] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:34.587 [DEBUG] [Thread-153143] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:34.587 [DEBUG] [Thread-153143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:34.588 [DEBUG] [Thread-153143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:34.588 [DEBUG] [Thread-153143] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:34.588 [DEBUG] [Thread-153143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:34.588 [DEBUG] [Thread-153143] [transport.py] [_log()] Compression: none
2025-09-29T10:16:34.588 [DEBUG] [Thread-153143] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:34.645 [DEBUG] [Thread-153143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:34.645 [DEBUG] [Thread-153143] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:34.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:16:34.646 [DEBUG] [Thread-153143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:16:34.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:34.701 [DEBUG] [Thread-153143] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:34.701 [DEBUG] [Thread-153143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:34.701 [DEBUG] [Thread-153143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:34.702 [DEBUG] [Thread-153143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:16:34.702 [DEBUG] [Thread-153143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:34.720 [INFO] [Thread-153143] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:34.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:16:34.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:16:35.701 [DEBUG] [Thread-153143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:16:35.702 [DEBUG] [Thread-153143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:16:35.749 [DEBUG] [Thread-153143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:16:35.749 [DEBUG] [Thread-153143] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:16:35.758 [DEBUG] [Thread-153143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:16:35.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:16:35.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:16:35.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:16:35.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:16:35.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:16:35.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:16:35.792 [DEBUG] [Thread-153143] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:41.055 [DEBUG] [Thread-153145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:16:45.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:16:45.795 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:16:45.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:16:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 16, 19), 7.2, 61.05, 0.0, 26.71, 10.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:16:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:16:19
2025-09-29T10:16:46.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:16:46.650 [DEBUG] [Thread-153146] [transport.py] [_log()] starting thread (client mode): 0x2e360610
2025-09-29T10:16:46.650 [DEBUG] [Thread-153146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:46.671 [DEBUG] [Thread-153146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:16:46.671 [INFO] [Thread-153146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] Compression: none
2025-09-29T10:16:46.674 [DEBUG] [Thread-153146] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:46.691 [DEBUG] [Thread-153146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:46.692 [DEBUG] [Thread-153146] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:46.692 [DEBUG] [Thread-153146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:16:46.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:16:46.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:46.694 [DEBUG] [Thread-153146] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:46.694 [DEBUG] [Thread-153146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:46.694 [DEBUG] [Thread-153146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:46.694 [DEBUG] [Thread-153146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:16:46.694 [DEBUG] [Thread-153146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:46.711 [INFO] [Thread-153146] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:46.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:16:47.501 [DEBUG] [Thread-153146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:16:47.502 [DEBUG] [Thread-153146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:16:47.502 [DEBUG] [Thread-153146] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:16:47.542 [DEBUG] [Thread-153146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:16:47.543 [DEBUG] [Thread-153146] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:16:47.545 [DEBUG] [Thread-153146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:16:47.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:16:47.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:16:47.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:16:47.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:16:47.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:16:47.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:16:47.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:16:47.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:16:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:16:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.344518 -999.00  +10.10  18.44     67   +4.40 1 1 1 1 1   888    0 7.97 76.71 ----- 21.8 18.4 143.2 37.0 16.4 -24.4 15.2 -22.2 14.4 -24.1 15.5 -24.4
2025-09-29T10:16:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:16:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:16:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.344518
2025-09-29T10:16:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:16:47.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:16:47.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:16:47.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:16:47.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:16:47.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:16:19', tmtdew=7.2, humidity=61.05, cloud=0.0, wind=26.71, temperature=10.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:16:06.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:16:47.569 [DEBUG] [Thread-153146] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:47.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:16:47.666 [DEBUG] [Thread-153149] [transport.py] [_log()] starting thread (client mode): 0x2e34a7d0
2025-09-29T10:16:47.666 [DEBUG] [Thread-153149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:47.680 [DEBUG] [Thread-153149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:16:47.680 [INFO] [Thread-153149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:16:47.688 [DEBUG] [Thread-153149] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:47.688 [DEBUG] [Thread-153149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:16:47.688 [DEBUG] [Thread-153149] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:47.688 [DEBUG] [Thread-153149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:47.688 [DEBUG] [Thread-153149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:47.688 [DEBUG] [Thread-153149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:47.688 [DEBUG] [Thread-153149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:47.688 [DEBUG] [Thread-153149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:47.689 [DEBUG] [Thread-153149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:47.690 [DEBUG] [Thread-153149] [transport.py] [_log()] Compression: none
2025-09-29T10:16:47.690 [DEBUG] [Thread-153149] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:47.750 [DEBUG] [Thread-153149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:47.750 [DEBUG] [Thread-153149] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:47.751 [DEBUG] [Thread-153149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:16:47.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:16:47.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:47.805 [DEBUG] [Thread-153149] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:47.805 [DEBUG] [Thread-153149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:47.806 [DEBUG] [Thread-153149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:47.806 [DEBUG] [Thread-153149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:16:47.806 [DEBUG] [Thread-153149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:47.825 [INFO] [Thread-153149] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:47.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:16:47.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:16:48.784 [DEBUG] [Thread-153149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:16:48.785 [DEBUG] [Thread-153149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:16:48.834 [DEBUG] [Thread-153149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:16:48.835 [DEBUG] [Thread-153149] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:16:48.844 [DEBUG] [Thread-153149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:16:48.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:16:48.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:16:48.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:16:48.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:16:48.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:16:48.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:16:48.878 [DEBUG] [Thread-153149] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:16:56.102 [DEBUG] [Thread-153151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:16:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:16:58.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:16:58.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:16:59.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 16, 51), 7.2, 60.95, 0.0, 32.52, 10.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:16:59.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:16:51
2025-09-29T10:16:59.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:16:59.731 [DEBUG] [Thread-153152] [transport.py] [_log()] starting thread (client mode): 0x2e349840
2025-09-29T10:16:59.731 [DEBUG] [Thread-153152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:16:59.751 [DEBUG] [Thread-153152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:16:59.751 [INFO] [Thread-153152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:16:59.754 [DEBUG] [Thread-153152] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:16:59.754 [DEBUG] [Thread-153152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] client lang: <none>
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] server lang: <none>
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] kex follows: False
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] Compression: none
2025-09-29T10:16:59.755 [DEBUG] [Thread-153152] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:16:59.771 [DEBUG] [Thread-153152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:16:59.771 [DEBUG] [Thread-153152] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:16:59.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:16:59.773 [DEBUG] [Thread-153152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:16:59.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:16:59.816 [DEBUG] [Thread-153152] [transport.py] [_log()] userauth is OK
2025-09-29T10:16:59.817 [DEBUG] [Thread-153152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:16:59.817 [DEBUG] [Thread-153152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:16:59.817 [DEBUG] [Thread-153152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:16:59.817 [DEBUG] [Thread-153152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:16:59.837 [INFO] [Thread-153152] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:16:59.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:00.588 [DEBUG] [Thread-153152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:00.589 [DEBUG] [Thread-153152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:00.589 [DEBUG] [Thread-153152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:17:00.629 [DEBUG] [Thread-153152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:00.630 [DEBUG] [Thread-153152] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:00.633 [DEBUG] [Thread-153152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:00.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:00.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:17:00.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:17:00.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:17:00.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:00.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:17:00.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:00.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:00.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:17:00.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.344518 -999.00  +10.10  18.44     67   +4.40 1 1 1 1 1   888    0 7.97 76.71 ----- 21.8 18.4 143.2 37.0 16.4 -24.4 15.2 -22.2 14.4 -24.1 15.5 -24.4
2025-09-29T10:17:00.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:17:00.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:17:00.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.344518
2025-09-29T10:17:00.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:17:00.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:17:00.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:17:00.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:17:00.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:17:00.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:16:51', tmtdew=7.2, humidity=60.95, cloud=0.0, wind=32.52, temperature=10.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:16:06.355', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:17:00.659 [DEBUG] [Thread-153152] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:00.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:17:00.755 [DEBUG] [Thread-153155] [transport.py] [_log()] starting thread (client mode): 0x28707610
2025-09-29T10:17:00.755 [DEBUG] [Thread-153155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:00.770 [DEBUG] [Thread-153155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:17:00.770 [INFO] [Thread-153155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:17:00.777 [DEBUG] [Thread-153155] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:00.777 [DEBUG] [Thread-153155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] Compression: none
2025-09-29T10:17:00.778 [DEBUG] [Thread-153155] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:00.837 [DEBUG] [Thread-153155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:00.838 [DEBUG] [Thread-153155] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:00.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:17:00.839 [DEBUG] [Thread-153155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:17:00.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:00.893 [DEBUG] [Thread-153155] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:00.894 [DEBUG] [Thread-153155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:00.894 [DEBUG] [Thread-153155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:00.894 [DEBUG] [Thread-153155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:17:00.894 [DEBUG] [Thread-153155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:00.912 [INFO] [Thread-153155] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:00.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:17:00.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:01.856 [DEBUG] [Thread-153155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:01.856 [DEBUG] [Thread-153155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:01.904 [DEBUG] [Thread-153155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:01.904 [DEBUG] [Thread-153155] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:01.912 [DEBUG] [Thread-153155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:01.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:01.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:17:01.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:17:01.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:01.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:01.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:01.944 [DEBUG] [Thread-153155] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:11.136 [DEBUG] [Thread-153157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:17:11.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:17:11.946 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:17:11.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:17:12.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 16, 51), 7.2, 60.95, 0.0, 32.52, 10.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:17:12.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:16:51
2025-09-29T10:17:12.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:17:12.804 [DEBUG] [Thread-153158] [transport.py] [_log()] starting thread (client mode): 0x2e34ab00
2025-09-29T10:17:12.804 [DEBUG] [Thread-153158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:12.824 [DEBUG] [Thread-153158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:17:12.825 [INFO] [Thread-153158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:17:12.827 [DEBUG] [Thread-153158] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:12.827 [DEBUG] [Thread-153158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:12.828 [DEBUG] [Thread-153158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:12.829 [DEBUG] [Thread-153158] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:12.829 [DEBUG] [Thread-153158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:12.829 [DEBUG] [Thread-153158] [transport.py] [_log()] Compression: none
2025-09-29T10:17:12.829 [DEBUG] [Thread-153158] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:12.844 [DEBUG] [Thread-153158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:12.844 [DEBUG] [Thread-153158] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:12.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:17:12.845 [DEBUG] [Thread-153158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:17:12.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:12.847 [DEBUG] [Thread-153158] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:12.848 [DEBUG] [Thread-153158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:12.848 [DEBUG] [Thread-153158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:12.848 [DEBUG] [Thread-153158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:17:12.848 [DEBUG] [Thread-153158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:12.864 [INFO] [Thread-153158] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:12.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:13.507 [DEBUG] [Thread-153158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:13.507 [DEBUG] [Thread-153158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:13.508 [DEBUG] [Thread-153158] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:17:13.548 [DEBUG] [Thread-153158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:13.548 [DEBUG] [Thread-153158] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:13.553 [DEBUG] [Thread-153158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:13.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:13.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:17:13.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:17:13.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:17:13.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:13.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:17:13.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:13.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:13.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:17:13.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.344865 -999.00  +10.20  21.85     67   +4.50 1 1 1 1 1   888    0 7.84 71.04 ----- 26.3 21.9 146.7 29.0 16.5 -24.6 15.1 -26.1 14.4 -24.1 15.4 -26.3
2025-09-29T10:17:13.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:17:13.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:17:13.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.344865
2025-09-29T10:17:13.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:17:13.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:17:13.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:17:13.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:17:13.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:17:13.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:16:51', tmtdew=7.2, humidity=60.95, cloud=0.0, wind=32.52, temperature=10.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:16:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:17:13.576 [DEBUG] [Thread-153158] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:13.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:17:13.675 [DEBUG] [Thread-153161] [transport.py] [_log()] starting thread (client mode): 0x2b9c1120
2025-09-29T10:17:13.675 [DEBUG] [Thread-153161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:13.689 [DEBUG] [Thread-153161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:17:13.690 [INFO] [Thread-153161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:17:13.697 [DEBUG] [Thread-153161] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:13.697 [DEBUG] [Thread-153161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:17:13.697 [DEBUG] [Thread-153161] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:13.697 [DEBUG] [Thread-153161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:13.697 [DEBUG] [Thread-153161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:13.698 [DEBUG] [Thread-153161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:13.698 [DEBUG] [Thread-153161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:13.698 [DEBUG] [Thread-153161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:13.698 [DEBUG] [Thread-153161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:13.698 [DEBUG] [Thread-153161] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:13.698 [DEBUG] [Thread-153161] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:13.698 [DEBUG] [Thread-153161] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:13.699 [DEBUG] [Thread-153161] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:13.699 [DEBUG] [Thread-153161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:13.699 [DEBUG] [Thread-153161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:13.699 [DEBUG] [Thread-153161] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:13.699 [DEBUG] [Thread-153161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:13.699 [DEBUG] [Thread-153161] [transport.py] [_log()] Compression: none
2025-09-29T10:17:13.699 [DEBUG] [Thread-153161] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:13.756 [DEBUG] [Thread-153161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:13.756 [DEBUG] [Thread-153161] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:13.756 [DEBUG] [Thread-153161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:17:13.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:17:13.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:13.817 [DEBUG] [Thread-153161] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:13.817 [DEBUG] [Thread-153161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:13.818 [DEBUG] [Thread-153161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:13.818 [DEBUG] [Thread-153161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:17:13.818 [DEBUG] [Thread-153161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:13.840 [INFO] [Thread-153161] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:13.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:17:13.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:14.779 [DEBUG] [Thread-153161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:14.779 [DEBUG] [Thread-153161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:14.827 [DEBUG] [Thread-153161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:14.827 [DEBUG] [Thread-153161] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:14.836 [DEBUG] [Thread-153161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:14.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:14.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:17:14.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:17:14.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:14.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:14.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:14.878 [DEBUG] [Thread-153161] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:24.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:17:24.879 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:17:24.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:17:25.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 16, 51), 7.2, 60.95, 0.0, 32.52, 10.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:17:25.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:16:51
2025-09-29T10:17:25.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:17:25.738 [DEBUG] [Thread-153163] [transport.py] [_log()] starting thread (client mode): 0x287058d0
2025-09-29T10:17:25.738 [DEBUG] [Thread-153163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:25.758 [DEBUG] [Thread-153163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:17:25.758 [INFO] [Thread-153163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:17:25.761 [DEBUG] [Thread-153163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:25.761 [DEBUG] [Thread-153163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:17:25.761 [DEBUG] [Thread-153163] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:25.761 [DEBUG] [Thread-153163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:25.761 [DEBUG] [Thread-153163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] Compression: none
2025-09-29T10:17:25.762 [DEBUG] [Thread-153163] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:25.781 [DEBUG] [Thread-153163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:25.782 [DEBUG] [Thread-153163] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:25.783 [DEBUG] [Thread-153163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:17:25.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:17:25.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:25.786 [DEBUG] [Thread-153163] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:25.786 [DEBUG] [Thread-153163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:25.786 [DEBUG] [Thread-153163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:25.786 [DEBUG] [Thread-153163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:17:25.786 [DEBUG] [Thread-153163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:25.812 [INFO] [Thread-153163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:25.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:26.177 [DEBUG] [Thread-153165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:17:26.636 [DEBUG] [Thread-153163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:26.636 [DEBUG] [Thread-153163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:26.637 [DEBUG] [Thread-153163] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:17:26.677 [DEBUG] [Thread-153163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:26.677 [DEBUG] [Thread-153163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:26.679 [DEBUG] [Thread-153163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:26.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:26.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:17:26.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:17:26.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:17:26.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:26.695 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:17:26.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:26.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:26.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:17:26.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.344865 -999.00  +10.20  21.85     67   +4.50 1 1 1 1 1   888    0 7.84 71.04 ----- 26.3 21.9 146.7 29.0 16.5 -24.6 15.1 -26.1 14.4 -24.1 15.4 -26.3
2025-09-29T10:17:26.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:17:26.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:17:26.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.344865
2025-09-29T10:17:26.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:17:26.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:17:26.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:17:26.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:17:26.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:17:26.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:16:51', tmtdew=7.2, humidity=60.95, cloud=0.0, wind=32.52, temperature=10.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:16:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:17:26.698 [DEBUG] [Thread-153163] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:26.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:17:26.792 [DEBUG] [Thread-153167] [transport.py] [_log()] starting thread (client mode): 0x2b9b9570
2025-09-29T10:17:26.792 [DEBUG] [Thread-153167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:26.807 [DEBUG] [Thread-153167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:17:26.808 [INFO] [Thread-153167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:17:26.815 [DEBUG] [Thread-153167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:26.815 [DEBUG] [Thread-153167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:17:26.815 [DEBUG] [Thread-153167] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:26.816 [DEBUG] [Thread-153167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:26.817 [DEBUG] [Thread-153167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:26.817 [DEBUG] [Thread-153167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:26.817 [DEBUG] [Thread-153167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:26.817 [DEBUG] [Thread-153167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:26.817 [DEBUG] [Thread-153167] [transport.py] [_log()] Compression: none
2025-09-29T10:17:26.817 [DEBUG] [Thread-153167] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:26.877 [DEBUG] [Thread-153167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:26.878 [DEBUG] [Thread-153167] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:26.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:17:26.879 [DEBUG] [Thread-153167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:17:26.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:26.934 [DEBUG] [Thread-153167] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:26.934 [DEBUG] [Thread-153167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:26.934 [DEBUG] [Thread-153167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:26.934 [DEBUG] [Thread-153167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:17:26.934 [DEBUG] [Thread-153167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:26.953 [INFO] [Thread-153167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:26.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:17:26.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:27.931 [DEBUG] [Thread-153167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:27.931 [DEBUG] [Thread-153167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:27.979 [DEBUG] [Thread-153167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:27.979 [DEBUG] [Thread-153167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:27.988 [DEBUG] [Thread-153167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:27.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:27.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:17:28.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:17:28.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:28.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:28.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:28.022 [DEBUG] [Thread-153167] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:28.599 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:17:28.600 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:17:32.320 [DEBUG] [Thread-153169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:17:38.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:17:38.025 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:17:38.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:17:38.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 17, 23), 7.22, 60.87, 0.0, 27.23, 10.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:17:38.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:17:23
2025-09-29T10:17:38.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:17:38.880 [DEBUG] [Thread-153170] [transport.py] [_log()] starting thread (client mode): 0x2e348040
2025-09-29T10:17:38.881 [DEBUG] [Thread-153170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:38.905 [DEBUG] [Thread-153170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:17:38.906 [INFO] [Thread-153170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] Compression: none
2025-09-29T10:17:38.907 [DEBUG] [Thread-153170] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:38.916 [DEBUG] [Thread-153170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:38.916 [DEBUG] [Thread-153170] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:38.917 [DEBUG] [Thread-153170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:17:38.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:17:38.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:38.919 [DEBUG] [Thread-153170] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:38.919 [DEBUG] [Thread-153170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:38.919 [DEBUG] [Thread-153170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:38.919 [DEBUG] [Thread-153170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:17:38.919 [DEBUG] [Thread-153170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:38.937 [INFO] [Thread-153170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:38.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:39.523 [DEBUG] [Thread-153170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:39.524 [DEBUG] [Thread-153170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:39.524 [DEBUG] [Thread-153170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:17:39.564 [DEBUG] [Thread-153170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:39.564 [DEBUG] [Thread-153170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:39.566 [DEBUG] [Thread-153170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:39.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:39.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:17:39.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:17:39.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:17:39.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:39.583 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:17:39.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.345559 -999.00  +10.50  15.98     66   +4.60 1 1 1 1 1   888    0 7.65 64.54 ----- 16.6 16.0 143.0 25.3 16.4 -26.5 15.3 -24.7 14.6 -22.7 15.4 -25.4
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.345559
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:17:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:17:39.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:17:23', tmtdew=7.22, humidity=60.87, cloud=0.0, wind=27.23, temperature=10.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:17:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:17:39.584 [DEBUG] [Thread-153170] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:39.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:17:39.668 [DEBUG] [Thread-153173] [transport.py] [_log()] starting thread (client mode): 0x2b9c2da0
2025-09-29T10:17:39.668 [DEBUG] [Thread-153173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:39.683 [DEBUG] [Thread-153173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:17:39.683 [INFO] [Thread-153173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:17:39.690 [DEBUG] [Thread-153173] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:39.690 [DEBUG] [Thread-153173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] Compression: none
2025-09-29T10:17:39.691 [DEBUG] [Thread-153173] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:39.749 [DEBUG] [Thread-153173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:39.750 [DEBUG] [Thread-153173] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:39.750 [DEBUG] [Thread-153173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:17:39.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:17:39.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:39.806 [DEBUG] [Thread-153173] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:39.806 [DEBUG] [Thread-153173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:39.806 [DEBUG] [Thread-153173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:39.807 [DEBUG] [Thread-153173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:17:39.807 [DEBUG] [Thread-153173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:39.825 [INFO] [Thread-153173] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:39.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:17:39.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:40.775 [DEBUG] [Thread-153173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:40.776 [DEBUG] [Thread-153173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:40.823 [DEBUG] [Thread-153173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:40.823 [DEBUG] [Thread-153173] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:40.832 [DEBUG] [Thread-153173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:40.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:40.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:17:40.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:17:40.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:40.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:40.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:40.866 [DEBUG] [Thread-153173] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:41.221 [DEBUG] [Thread-153175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:17:50.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:17:50.869 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:17:50.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:17:51.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 17, 23), 7.22, 60.87, 0.0, 27.23, 10.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:17:51.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:17:23
2025-09-29T10:17:51.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:17:51.712 [DEBUG] [Thread-153176] [transport.py] [_log()] starting thread (client mode): 0x2e3484c0
2025-09-29T10:17:51.712 [DEBUG] [Thread-153176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:51.732 [DEBUG] [Thread-153176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:17:51.732 [INFO] [Thread-153176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:17:51.735 [DEBUG] [Thread-153176] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:51.735 [DEBUG] [Thread-153176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:17:51.735 [DEBUG] [Thread-153176] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:51.735 [DEBUG] [Thread-153176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:51.735 [DEBUG] [Thread-153176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] Compression: none
2025-09-29T10:17:51.736 [DEBUG] [Thread-153176] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:51.755 [DEBUG] [Thread-153176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:51.756 [DEBUG] [Thread-153176] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:51.756 [DEBUG] [Thread-153176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:17:51.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:17:51.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:51.758 [DEBUG] [Thread-153176] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:51.758 [DEBUG] [Thread-153176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:51.759 [DEBUG] [Thread-153176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:51.759 [DEBUG] [Thread-153176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:17:51.759 [DEBUG] [Thread-153176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:51.781 [INFO] [Thread-153176] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:51.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:52.424 [DEBUG] [Thread-153176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:52.424 [DEBUG] [Thread-153176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:52.424 [DEBUG] [Thread-153176] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:17:52.465 [DEBUG] [Thread-153176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:52.465 [DEBUG] [Thread-153176] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:52.468 [DEBUG] [Thread-153176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:52.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:52.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:17:52.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:17:52.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:17:52.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:52.490 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:17:52.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:52.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:17:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.345559 -999.00  +10.50  15.98     66   +4.60 1 1 1 1 1   888    0 7.65 64.54 ----- 16.6 16.0 143.0 25.3 16.4 -26.5 15.3 -24.7 14.6 -22.7 15.4 -25.4
2025-09-29T10:17:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:17:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:17:52.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.345559
2025-09-29T10:17:52.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:17:52.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:17:52.493 [DEBUG] [Thread-153176] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:52.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:17:52.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:17:52.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:17:52.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:17:23', tmtdew=7.22, humidity=60.87, cloud=0.0, wind=27.23, temperature=10.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:17:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:17:52.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:17:52.585 [DEBUG] [Thread-153179] [transport.py] [_log()] starting thread (client mode): 0x2b91f160
2025-09-29T10:17:52.586 [DEBUG] [Thread-153179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:17:52.600 [DEBUG] [Thread-153179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:17:52.600 [INFO] [Thread-153179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:17:52.610 [DEBUG] [Thread-153179] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:17:52.611 [DEBUG] [Thread-153179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:17:52.611 [DEBUG] [Thread-153179] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:17:52.611 [DEBUG] [Thread-153179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:52.611 [DEBUG] [Thread-153179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:17:52.611 [DEBUG] [Thread-153179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:52.611 [DEBUG] [Thread-153179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] client lang: <none>
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] server lang: <none>
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] kex follows: False
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] Compression: none
2025-09-29T10:17:52.612 [DEBUG] [Thread-153179] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:17:52.670 [DEBUG] [Thread-153179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:17:52.671 [DEBUG] [Thread-153179] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:17:52.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:17:52.672 [DEBUG] [Thread-153179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:17:52.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:17:52.734 [DEBUG] [Thread-153179] [transport.py] [_log()] userauth is OK
2025-09-29T10:17:52.734 [DEBUG] [Thread-153179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:17:52.734 [DEBUG] [Thread-153179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:17:52.734 [DEBUG] [Thread-153179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:17:52.734 [DEBUG] [Thread-153179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:17:52.754 [INFO] [Thread-153179] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:17:52.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:17:52.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:17:53.750 [DEBUG] [Thread-153179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:17:53.751 [DEBUG] [Thread-153179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:17:53.798 [DEBUG] [Thread-153179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:17:53.798 [DEBUG] [Thread-153179] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:17:53.807 [DEBUG] [Thread-153179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:17:53.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:17:53.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:17:53.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:17:53.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:17:53.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:17:53.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:17:53.843 [DEBUG] [Thread-153179] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:17:56.262 [DEBUG] [Thread-153181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:18:03.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:18:03.846 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:18:03.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:18:04.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 17, 54), 7.29, 61.09, 0.0, 19.66, 10.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:18:04.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:17:54
2025-09-29T10:18:04.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:18:04.710 [DEBUG] [Thread-153182] [transport.py] [_log()] starting thread (client mode): 0x2e3c06d0
2025-09-29T10:18:04.710 [DEBUG] [Thread-153182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:18:04.730 [DEBUG] [Thread-153182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:18:04.730 [INFO] [Thread-153182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:18:04.733 [DEBUG] [Thread-153182] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:18:04.733 [DEBUG] [Thread-153182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:18:04.733 [DEBUG] [Thread-153182] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:18:04.733 [DEBUG] [Thread-153182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:04.733 [DEBUG] [Thread-153182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:04.733 [DEBUG] [Thread-153182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:04.733 [DEBUG] [Thread-153182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:04.733 [DEBUG] [Thread-153182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] client lang: <none>
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] server lang: <none>
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] kex follows: False
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] Compression: none
2025-09-29T10:18:04.734 [DEBUG] [Thread-153182] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:18:04.749 [DEBUG] [Thread-153182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:18:04.749 [DEBUG] [Thread-153182] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:18:04.750 [DEBUG] [Thread-153182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:18:04.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:18:04.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:18:04.750 [DEBUG] [Thread-153182] [transport.py] [_log()] userauth is OK
2025-09-29T10:18:04.750 [DEBUG] [Thread-153182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:18:04.750 [DEBUG] [Thread-153182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:18:04.751 [DEBUG] [Thread-153182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:18:04.751 [DEBUG] [Thread-153182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:18:04.770 [INFO] [Thread-153182] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:18:04.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:18:05.597 [DEBUG] [Thread-153182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:18:05.598 [DEBUG] [Thread-153182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:18:05.598 [DEBUG] [Thread-153182] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:18:05.638 [DEBUG] [Thread-153182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:18:05.639 [DEBUG] [Thread-153182] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:18:05.642 [DEBUG] [Thread-153182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:18:05.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:18:05.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:18:05.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:18:05.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:18:05.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:18:05.662 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:18:05.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:18:05.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:18:05.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:18:05.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.345559 -999.00  +10.50  15.98     66   +4.60 1 1 1 1 1   888    0 7.65 64.54 ----- 16.6 16.0 143.0 25.3 16.4 -26.5 15.3 -24.7 14.6 -22.7 15.4 -25.4
2025-09-29T10:18:05.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:18:05.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:18:05.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.345559
2025-09-29T10:18:05.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:18:05.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:18:05.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:18:05.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:18:05.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:18:05.664 [DEBUG] [Thread-153182] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:18:05.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:17:54', tmtdew=7.29, humidity=61.09, cloud=0.0, wind=19.66, temperature=10.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:17:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:18:05.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:18:05.761 [DEBUG] [Thread-153185] [transport.py] [_log()] starting thread (client mode): 0x2e3df3a0
2025-09-29T10:18:05.761 [DEBUG] [Thread-153185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:18:05.776 [DEBUG] [Thread-153185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:18:05.776 [INFO] [Thread-153185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:18:05.787 [DEBUG] [Thread-153185] [transport.py] [_log()] client lang: <none>
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] server lang: <none>
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] kex follows: False
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] Compression: none
2025-09-29T10:18:05.788 [DEBUG] [Thread-153185] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:18:05.846 [DEBUG] [Thread-153185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:18:05.847 [DEBUG] [Thread-153185] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:18:05.848 [DEBUG] [Thread-153185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:18:05.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:18:05.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:18:05.902 [DEBUG] [Thread-153185] [transport.py] [_log()] userauth is OK
2025-09-29T10:18:05.902 [DEBUG] [Thread-153185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:18:05.902 [DEBUG] [Thread-153185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:18:05.902 [DEBUG] [Thread-153185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:18:05.902 [DEBUG] [Thread-153185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:18:05.923 [INFO] [Thread-153185] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:18:05.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:18:05.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:18:06.920 [DEBUG] [Thread-153185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:18:06.921 [DEBUG] [Thread-153185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:18:06.968 [DEBUG] [Thread-153185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:18:06.968 [DEBUG] [Thread-153185] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:18:06.977 [DEBUG] [Thread-153185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:18:06.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:18:06.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:18:06.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:18:07.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:18:07.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:18:07.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:18:07.011 [DEBUG] [Thread-153185] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:18:11.289 [DEBUG] [Thread-153187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:18:17.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:18:17.014 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:18:17.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:18:17.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 17, 54), 7.29, 61.09, 0.0, 19.66, 10.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:18:17.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:17:54
2025-09-29T10:18:17.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:18:17.856 [DEBUG] [Thread-153188] [transport.py] [_log()] starting thread (client mode): 0x2b91eb60
2025-09-29T10:18:17.856 [DEBUG] [Thread-153188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:18:17.872 [DEBUG] [Thread-153188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:18:17.872 [INFO] [Thread-153188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] client lang: <none>
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] server lang: <none>
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] kex follows: False
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:18:17.876 [DEBUG] [Thread-153188] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:18:17.877 [DEBUG] [Thread-153188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:18:17.877 [DEBUG] [Thread-153188] [transport.py] [_log()] Compression: none
2025-09-29T10:18:17.877 [DEBUG] [Thread-153188] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:18:17.894 [DEBUG] [Thread-153188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:18:17.894 [DEBUG] [Thread-153188] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:18:17.895 [DEBUG] [Thread-153188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:18:17.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:18:17.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:18:17.896 [DEBUG] [Thread-153188] [transport.py] [_log()] userauth is OK
2025-09-29T10:18:17.896 [DEBUG] [Thread-153188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:18:17.897 [DEBUG] [Thread-153188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:18:17.897 [DEBUG] [Thread-153188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:18:17.897 [DEBUG] [Thread-153188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:18:17.920 [INFO] [Thread-153188] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:18:17.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:18:18.563 [DEBUG] [Thread-153188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:18:18.564 [DEBUG] [Thread-153188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:18:18.564 [DEBUG] [Thread-153188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:18:18.604 [DEBUG] [Thread-153188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:18:18.604 [DEBUG] [Thread-153188] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:18:18.607 [DEBUG] [Thread-153188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:18:18.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:18:18.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:18:18.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:18:18.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:18:18.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:18:18.630 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:18:18.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:18:18.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:18:18.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:18:18.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.345907 -999.00  +10.50  15.48     66   +4.40 1 1 1 1 1   888    0 7.44 56.77 ----- 12.3 15.5 149.6 25.3 16.4 -26.6 15.2 -22.5 14.4 -25.2 15.4 -24.6
2025-09-29T10:18:18.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:18:18.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:18:18.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.345907
2025-09-29T10:18:18.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:18:18.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:18:18.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:18:18.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:18:18.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:18:18.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:17:54', tmtdew=7.29, humidity=61.09, cloud=0.0, wind=19.66, temperature=10.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:18:06.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:18:18.633 [DEBUG] [Thread-153188] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:18:18.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:18:18.726 [DEBUG] [Thread-153191] [transport.py] [_log()] starting thread (client mode): 0x2b91cdf0
2025-09-29T10:18:18.726 [DEBUG] [Thread-153191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:18:18.741 [DEBUG] [Thread-153191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:18:18.741 [INFO] [Thread-153191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:18:18.752 [DEBUG] [Thread-153191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:18:18.752 [DEBUG] [Thread-153191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] client lang: <none>
2025-09-29T10:18:18.753 [DEBUG] [Thread-153191] [transport.py] [_log()] server lang: <none>
2025-09-29T10:18:18.754 [DEBUG] [Thread-153191] [transport.py] [_log()] kex follows: False
2025-09-29T10:18:18.754 [DEBUG] [Thread-153191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:18:18.754 [DEBUG] [Thread-153191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:18:18.754 [DEBUG] [Thread-153191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:18:18.754 [DEBUG] [Thread-153191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:18:18.754 [DEBUG] [Thread-153191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:18:18.754 [DEBUG] [Thread-153191] [transport.py] [_log()] Compression: none
2025-09-29T10:18:18.754 [DEBUG] [Thread-153191] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:18:18.808 [DEBUG] [Thread-153191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:18:18.809 [DEBUG] [Thread-153191] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:18:18.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:18:18.809 [DEBUG] [Thread-153191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:18:18.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:18:18.868 [DEBUG] [Thread-153191] [transport.py] [_log()] userauth is OK
2025-09-29T10:18:18.868 [DEBUG] [Thread-153191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:18:18.868 [DEBUG] [Thread-153191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:18:18.868 [DEBUG] [Thread-153191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:18:18.868 [DEBUG] [Thread-153191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:18:18.891 [INFO] [Thread-153191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:18:18.891 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:18:18.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:18:19.863 [DEBUG] [Thread-153191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:18:19.863 [DEBUG] [Thread-153191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:18:19.911 [DEBUG] [Thread-153191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:18:19.911 [DEBUG] [Thread-153191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:18:19.920 [DEBUG] [Thread-153191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:18:19.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:18:19.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:18:19.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:18:19.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:18:19.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:18:19.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:18:19.953 [DEBUG] [Thread-153191] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:18:26.332 [DEBUG] [Thread-153193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:18:28.742 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:18:28.743 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:18:29.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:18:29.955 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:18:29.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:18:30.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 18, 26), 7.11, 61.8, 0.0, 22.96, 10.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:18:30.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:18:26
2025-09-29T10:18:30.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:18:30.782 [DEBUG] [Thread-153194] [transport.py] [_log()] starting thread (client mode): 0x2b91e8f0
2025-09-29T10:18:30.783 [DEBUG] [Thread-153194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:18:30.800 [DEBUG] [Thread-153194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:18:30.800 [INFO] [Thread-153194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:18:30.804 [DEBUG] [Thread-153194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] client lang: <none>
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] server lang: <none>
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] kex follows: False
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] Compression: none
2025-09-29T10:18:30.805 [DEBUG] [Thread-153194] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:18:30.823 [DEBUG] [Thread-153194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:18:30.824 [DEBUG] [Thread-153194] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:18:30.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:18:30.825 [DEBUG] [Thread-153194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:18:30.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:18:30.827 [DEBUG] [Thread-153194] [transport.py] [_log()] userauth is OK
2025-09-29T10:18:30.827 [DEBUG] [Thread-153194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:18:30.827 [DEBUG] [Thread-153194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:18:30.828 [DEBUG] [Thread-153194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:18:30.828 [DEBUG] [Thread-153194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:18:30.842 [INFO] [Thread-153194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:18:30.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:18:31.659 [DEBUG] [Thread-153194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:18:31.660 [DEBUG] [Thread-153194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:18:31.660 [DEBUG] [Thread-153194] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:18:31.700 [DEBUG] [Thread-153194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:18:31.700 [DEBUG] [Thread-153194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:18:31.703 [DEBUG] [Thread-153194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:18:31.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:18:31.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:18:31.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:18:31.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:18:31.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:18:31.723 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:18:31.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:18:31.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:18:31.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:18:31.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.345907 -999.00  +10.50  15.48     66   +4.40 1 1 1 1 1   888    0 7.44 56.77 ----- 12.3 15.5 149.6 25.3 16.4 -26.6 15.2 -22.5 14.4 -25.2 15.4 -24.6
2025-09-29T10:18:31.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:18:31.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:18:31.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.345907
2025-09-29T10:18:31.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:18:31.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:18:31.725 [DEBUG] [Thread-153194] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:18:31.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:18:31.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:18:31.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:18:31.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:18:26', tmtdew=7.11, humidity=61.8, cloud=0.0, wind=22.96, temperature=10.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:18:06.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:18:31.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:18:32.372 [DEBUG] [Thread-153197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:18:41.373 [DEBUG] [Thread-153198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:18:50.182 [DEBUG] [Thread-153199] [transport.py] [_log()] starting thread (client mode): 0x2e363f70
2025-09-29T10:18:50.183 [DEBUG] [Thread-153199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:18:50.197 [DEBUG] [Thread-153199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:18:50.197 [INFO] [Thread-153199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:18:50.204 [DEBUG] [Thread-153199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:18:50.204 [DEBUG] [Thread-153199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] client lang: <none>
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] server lang: <none>
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] kex follows: False
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:18:50.205 [DEBUG] [Thread-153199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:18:50.206 [DEBUG] [Thread-153199] [transport.py] [_log()] Compression: none
2025-09-29T10:18:50.206 [DEBUG] [Thread-153199] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:18:50.262 [DEBUG] [Thread-153199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:18:50.262 [DEBUG] [Thread-153199] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:18:50.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:18:50.263 [DEBUG] [Thread-153199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:18:50.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:18:50.318 [DEBUG] [Thread-153199] [transport.py] [_log()] userauth is OK
2025-09-29T10:18:50.318 [DEBUG] [Thread-153199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:18:50.319 [DEBUG] [Thread-153199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:18:50.319 [DEBUG] [Thread-153199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:18:50.319 [DEBUG] [Thread-153199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:18:50.337 [INFO] [Thread-153199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:18:50.337 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:18:50.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:18:51.321 [DEBUG] [Thread-153199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:18:51.321 [DEBUG] [Thread-153199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:18:51.369 [DEBUG] [Thread-153199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:18:51.369 [DEBUG] [Thread-153199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:18:51.379 [DEBUG] [Thread-153199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:18:51.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:18:51.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:18:51.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:18:51.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:18:51.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:18:51.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:18:51.420 [DEBUG] [Thread-153199] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:18:56.422 [DEBUG] [Thread-153201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:19:01.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:19:01.411 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:19:01.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:19:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 18, 58), 7.52, 59.27, 0.0, 27.67, 10.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:19:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:18:58
2025-09-29T10:19:02.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:19:02.271 [DEBUG] [Thread-153202] [transport.py] [_log()] starting thread (client mode): 0x2e3dc3d0
2025-09-29T10:19:02.272 [DEBUG] [Thread-153202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:02.292 [DEBUG] [Thread-153202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:19:02.292 [INFO] [Thread-153202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:19:02.295 [DEBUG] [Thread-153202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:02.295 [DEBUG] [Thread-153202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:19:02.295 [DEBUG] [Thread-153202] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:02.295 [DEBUG] [Thread-153202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:02.295 [DEBUG] [Thread-153202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] Compression: none
2025-09-29T10:19:02.296 [DEBUG] [Thread-153202] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:02.313 [DEBUG] [Thread-153202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:02.313 [DEBUG] [Thread-153202] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:02.313 [DEBUG] [Thread-153202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:19:02.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:19:02.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:02.314 [DEBUG] [Thread-153202] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:02.314 [DEBUG] [Thread-153202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:02.314 [DEBUG] [Thread-153202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:02.314 [DEBUG] [Thread-153202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:19:02.314 [DEBUG] [Thread-153202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:02.341 [INFO] [Thread-153202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:02.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:03.014 [DEBUG] [Thread-153202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:03.014 [DEBUG] [Thread-153202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:03.014 [DEBUG] [Thread-153202] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:19:03.055 [DEBUG] [Thread-153202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:03.055 [DEBUG] [Thread-153202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:03.057 [DEBUG] [Thread-153202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:03.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:03.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:19:03.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:19:03.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:19:03.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:03.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:19:03.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:03.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:03.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:19:03.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.346254 -999.00  +10.50  19.45     66   +4.40 1 1 1 1 1   888    0 7.33 56.02 ----- 16.5 19.4 176.4 22.9 16.6 -22.8 15.2 -25.2 14.5 -22.9 15.6 -23.1
2025-09-29T10:19:03.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:19:03.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:19:03.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.346254
2025-09-29T10:19:03.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:19:03.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:19:03.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:19:03.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:19:03.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:19:03.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:18:58', tmtdew=7.52, humidity=59.27, cloud=0.0, wind=27.67, temperature=10.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:18:36.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:19:03.077 [DEBUG] [Thread-153202] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:03.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:19:03.163 [DEBUG] [Thread-153205] [transport.py] [_log()] starting thread (client mode): 0x2e3c3340
2025-09-29T10:19:03.163 [DEBUG] [Thread-153205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:03.181 [DEBUG] [Thread-153205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:19:03.181 [INFO] [Thread-153205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:19:03.188 [DEBUG] [Thread-153205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:03.188 [DEBUG] [Thread-153205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:19:03.188 [DEBUG] [Thread-153205] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:03.188 [DEBUG] [Thread-153205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] Compression: none
2025-09-29T10:19:03.189 [DEBUG] [Thread-153205] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:03.245 [DEBUG] [Thread-153205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:03.245 [DEBUG] [Thread-153205] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:03.246 [DEBUG] [Thread-153205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:19:03.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:19:03.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:03.303 [DEBUG] [Thread-153205] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:03.303 [DEBUG] [Thread-153205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:03.303 [DEBUG] [Thread-153205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:03.303 [DEBUG] [Thread-153205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:19:03.303 [DEBUG] [Thread-153205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:03.319 [INFO] [Thread-153205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:03.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:19:03.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:04.286 [DEBUG] [Thread-153205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:04.287 [DEBUG] [Thread-153205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:04.334 [DEBUG] [Thread-153205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:04.334 [DEBUG] [Thread-153205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:04.343 [DEBUG] [Thread-153205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:04.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:04.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:19:04.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:19:04.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:04.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:04.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:04.378 [DEBUG] [Thread-153205] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:11.450 [DEBUG] [Thread-153207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:19:14.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:19:14.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:19:14.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:19:14.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 18, 58), 7.52, 59.27, 0.0, 27.67, 10.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:19:14.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:18:58
2025-09-29T10:19:15.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:19:15.208 [DEBUG] [Thread-153208] [transport.py] [_log()] starting thread (client mode): 0x2b91e290
2025-09-29T10:19:15.208 [DEBUG] [Thread-153208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:15.229 [DEBUG] [Thread-153208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:19:15.230 [INFO] [Thread-153208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:15.233 [DEBUG] [Thread-153208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] Compression: none
2025-09-29T10:19:15.234 [DEBUG] [Thread-153208] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:15.251 [DEBUG] [Thread-153208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:15.252 [DEBUG] [Thread-153208] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:15.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:19:15.253 [DEBUG] [Thread-153208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:19:15.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:15.255 [DEBUG] [Thread-153208] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:15.255 [DEBUG] [Thread-153208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:15.256 [DEBUG] [Thread-153208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:15.256 [DEBUG] [Thread-153208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:19:15.256 [DEBUG] [Thread-153208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:15.279 [INFO] [Thread-153208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:15.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:15.912 [DEBUG] [Thread-153208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:15.913 [DEBUG] [Thread-153208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:15.913 [DEBUG] [Thread-153208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:19:15.953 [DEBUG] [Thread-153208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:15.954 [DEBUG] [Thread-153208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:15.957 [DEBUG] [Thread-153208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:15.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:15.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:19:15.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:19:15.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:19:15.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:15.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:19:15.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:15.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:15.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:19:15.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.346254 -999.00  +10.50  19.45     66   +4.40 1 1 1 1 1   888    0 7.33 56.02 ----- 16.5 19.4 176.4 22.9 16.6 -22.8 15.2 -25.2 14.5 -22.9 15.6 -23.1
2025-09-29T10:19:15.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:19:15.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:19:15.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.346254
2025-09-29T10:19:15.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:19:15.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:19:15.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:19:15.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:19:15.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:19:15.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:18:58', tmtdew=7.52, humidity=59.27, cloud=0.0, wind=27.67, temperature=10.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:18:36.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:19:15.985 [DEBUG] [Thread-153208] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:16.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:19:16.080 [DEBUG] [Thread-153211] [transport.py] [_log()] starting thread (client mode): 0x2e3dca30
2025-09-29T10:19:16.080 [DEBUG] [Thread-153211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:16.097 [DEBUG] [Thread-153211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:19:16.098 [INFO] [Thread-153211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:19:16.105 [DEBUG] [Thread-153211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:16.105 [DEBUG] [Thread-153211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:19:16.105 [DEBUG] [Thread-153211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] Compression: none
2025-09-29T10:19:16.106 [DEBUG] [Thread-153211] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:16.161 [DEBUG] [Thread-153211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:16.162 [DEBUG] [Thread-153211] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:16.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:19:16.163 [DEBUG] [Thread-153211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:19:16.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:16.219 [DEBUG] [Thread-153211] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:16.219 [DEBUG] [Thread-153211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:16.219 [DEBUG] [Thread-153211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:16.220 [DEBUG] [Thread-153211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:19:16.220 [DEBUG] [Thread-153211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:16.239 [INFO] [Thread-153211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:16.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:19:16.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:17.216 [DEBUG] [Thread-153211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:17.217 [DEBUG] [Thread-153211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:17.268 [DEBUG] [Thread-153211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:17.268 [DEBUG] [Thread-153211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:17.276 [DEBUG] [Thread-153211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:17.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:17.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:19:17.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:19:17.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:17.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:17.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:17.308 [DEBUG] [Thread-153211] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:26.504 [DEBUG] [Thread-153213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:19:27.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:19:27.311 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:19:27.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:19:27.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 18, 58), 7.52, 59.27, 0.0, 27.67, 10.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:19:27.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:18:58
2025-09-29T10:19:27.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:19:28.132 [DEBUG] [Thread-153214] [transport.py] [_log()] starting thread (client mode): 0x2e3609a0
2025-09-29T10:19:28.132 [DEBUG] [Thread-153214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:28.152 [DEBUG] [Thread-153214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:19:28.152 [INFO] [Thread-153214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:19:28.155 [DEBUG] [Thread-153214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:28.155 [DEBUG] [Thread-153214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:19:28.155 [DEBUG] [Thread-153214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:28.155 [DEBUG] [Thread-153214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:28.155 [DEBUG] [Thread-153214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] Compression: none
2025-09-29T10:19:28.156 [DEBUG] [Thread-153214] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:28.173 [DEBUG] [Thread-153214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:28.173 [DEBUG] [Thread-153214] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:28.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:19:28.174 [DEBUG] [Thread-153214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:19:28.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:28.176 [DEBUG] [Thread-153214] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:28.176 [DEBUG] [Thread-153214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:28.177 [DEBUG] [Thread-153214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:28.177 [DEBUG] [Thread-153214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:19:28.177 [DEBUG] [Thread-153214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:28.200 [INFO] [Thread-153214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:28.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:28.847 [DEBUG] [Thread-153214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:28.847 [DEBUG] [Thread-153214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:28.848 [DEBUG] [Thread-153214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:19:28.887 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:19:28.888 [DEBUG] [Thread-153214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:28.888 [DEBUG] [Thread-153214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:28.888 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:19:28.891 [DEBUG] [Thread-153214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:28.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:28.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:19:28.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:19:28.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:19:28.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:28.916 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:19:28.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:28.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:28.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:19:28.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.346601 -999.00  +10.60  21.44     66   +4.60 1 2 1 1 1   888    0 7.37 52.91 ----- 15.5 21.4 159.9 29.4 16.7 -24.4 15.4 -22.3 14.6 -21.2 15.7 -23.7
2025-09-29T10:19:28.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:19:28.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:19:28.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.346601
2025-09-29T10:19:28.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:19:28.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:19:28.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:19:28.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:19:28.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:19:28.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:18:58', tmtdew=7.52, humidity=59.27, cloud=0.0, wind=27.67, temperature=10.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:19:06.326', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:19:28.918 [DEBUG] [Thread-153214] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:29.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:19:29.026 [DEBUG] [Thread-153217] [transport.py] [_log()] starting thread (client mode): 0x2e38e170
2025-09-29T10:19:29.026 [DEBUG] [Thread-153217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:29.042 [DEBUG] [Thread-153217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:19:29.042 [INFO] [Thread-153217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:29.050 [DEBUG] [Thread-153217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:29.051 [DEBUG] [Thread-153217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:29.051 [DEBUG] [Thread-153217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:29.051 [DEBUG] [Thread-153217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:29.051 [DEBUG] [Thread-153217] [transport.py] [_log()] Compression: none
2025-09-29T10:19:29.051 [DEBUG] [Thread-153217] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:29.107 [DEBUG] [Thread-153217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:29.107 [DEBUG] [Thread-153217] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:29.108 [DEBUG] [Thread-153217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:19:29.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:19:29.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:29.162 [DEBUG] [Thread-153217] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:29.163 [DEBUG] [Thread-153217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:29.163 [DEBUG] [Thread-153217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:29.163 [DEBUG] [Thread-153217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:19:29.163 [DEBUG] [Thread-153217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:29.182 [INFO] [Thread-153217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:29.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:19:29.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:30.239 [DEBUG] [Thread-153217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:30.240 [DEBUG] [Thread-153217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:30.287 [DEBUG] [Thread-153217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:30.287 [DEBUG] [Thread-153217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:30.296 [DEBUG] [Thread-153217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:30.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:30.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:19:30.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:19:30.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:30.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:30.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:30.330 [DEBUG] [Thread-153217] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:32.421 [DEBUG] [Thread-153219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:19:40.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:19:40.333 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:19:40.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:19:40.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 19, 30), 7.7, 58.52, 0.0, 25.81, 10.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:19:40.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:19:30
2025-09-29T10:19:41.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:19:41.169 [DEBUG] [Thread-153220] [transport.py] [_log()] starting thread (client mode): 0x2e38f310
2025-09-29T10:19:41.169 [DEBUG] [Thread-153220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:41.190 [DEBUG] [Thread-153220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:19:41.190 [INFO] [Thread-153220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] Compression: none
2025-09-29T10:19:41.194 [DEBUG] [Thread-153220] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:41.202 [DEBUG] [Thread-153220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:41.202 [DEBUG] [Thread-153220] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:41.202 [DEBUG] [Thread-153220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:19:41.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:19:41.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:41.203 [DEBUG] [Thread-153220] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:41.203 [DEBUG] [Thread-153220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:41.203 [DEBUG] [Thread-153220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:41.203 [DEBUG] [Thread-153220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:19:41.203 [DEBUG] [Thread-153220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:41.216 [INFO] [Thread-153220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:41.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:41.532 [DEBUG] [Thread-153222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:19:41.792 [DEBUG] [Thread-153220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:41.792 [DEBUG] [Thread-153220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:41.792 [DEBUG] [Thread-153220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:19:41.833 [DEBUG] [Thread-153220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:41.833 [DEBUG] [Thread-153220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:41.835 [DEBUG] [Thread-153220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:41.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:41.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:19:41.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:19:41.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:19:41.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:41.856 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:19:41.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.346601 -999.00  +10.60  21.44     66   +4.60 1 2 1 1 1   888    0 7.37 52.91 ----- 15.5 21.4 159.9 29.4 16.7 -24.4 15.4 -22.3 14.6 -21.2 15.7 -23.7
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.346601
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:19:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:19:30', tmtdew=7.7, humidity=58.52, cloud=0.0, wind=25.81, temperature=10.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:19:06.326', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:19:41.857 [DEBUG] [Thread-153220] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:41.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:19:41.943 [DEBUG] [Thread-153224] [transport.py] [_log()] starting thread (client mode): 0x2e3dd240
2025-09-29T10:19:41.943 [DEBUG] [Thread-153224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:41.962 [DEBUG] [Thread-153224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:19:41.962 [INFO] [Thread-153224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] Compression: none
2025-09-29T10:19:41.970 [DEBUG] [Thread-153224] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:42.027 [DEBUG] [Thread-153224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:42.028 [DEBUG] [Thread-153224] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:42.028 [DEBUG] [Thread-153224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:19:42.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:19:42.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:42.083 [DEBUG] [Thread-153224] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:42.083 [DEBUG] [Thread-153224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:42.083 [DEBUG] [Thread-153224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:42.083 [DEBUG] [Thread-153224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:19:42.083 [DEBUG] [Thread-153224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:42.103 [INFO] [Thread-153224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:42.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:19:42.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:43.075 [DEBUG] [Thread-153224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:43.076 [DEBUG] [Thread-153224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:43.125 [DEBUG] [Thread-153224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:43.125 [DEBUG] [Thread-153224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:43.135 [DEBUG] [Thread-153224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:43.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:43.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:19:43.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:19:43.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:43.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:43.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:43.170 [DEBUG] [Thread-153224] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:53.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:19:53.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:19:53.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:19:53.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 19, 30), 7.7, 58.52, 0.0, 25.81, 10.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:19:53.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:19:30
2025-09-29T10:19:53.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:19:54.015 [DEBUG] [Thread-153226] [transport.py] [_log()] starting thread (client mode): 0x2e3dc070
2025-09-29T10:19:54.015 [DEBUG] [Thread-153226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:54.034 [DEBUG] [Thread-153226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:19:54.034 [INFO] [Thread-153226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:54.037 [DEBUG] [Thread-153226] [transport.py] [_log()] Compression: none
2025-09-29T10:19:54.038 [DEBUG] [Thread-153226] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:54.054 [DEBUG] [Thread-153226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:54.054 [DEBUG] [Thread-153226] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:54.055 [DEBUG] [Thread-153226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:19:54.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:19:54.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:54.057 [DEBUG] [Thread-153226] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:54.057 [DEBUG] [Thread-153226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:54.058 [DEBUG] [Thread-153226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:54.058 [DEBUG] [Thread-153226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:19:54.058 [DEBUG] [Thread-153226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:54.081 [INFO] [Thread-153226] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:54.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:54.711 [DEBUG] [Thread-153226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:54.711 [DEBUG] [Thread-153226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:54.712 [DEBUG] [Thread-153226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:19:54.752 [DEBUG] [Thread-153226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:54.752 [DEBUG] [Thread-153226] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:54.755 [DEBUG] [Thread-153226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:54.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:54.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:19:54.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:19:54.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:19:54.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:54.776 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:19:54.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:54.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:54.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:19:54.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.346601 -999.00  +10.60  21.44     66   +4.60 1 2 1 1 1   888    0 7.37 52.91 ----- 15.5 21.4 159.9 29.4 16.7 -24.4 15.4 -22.3 14.6 -21.2 15.7 -23.7
2025-09-29T10:19:54.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:19:54.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:19:54.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.346601
2025-09-29T10:19:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:19:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:19:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:19:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:19:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:19:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:19:30', tmtdew=7.7, humidity=58.52, cloud=0.0, wind=25.81, temperature=10.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:19:06.326', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:19:54.779 [DEBUG] [Thread-153226] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:54.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:19:54.874 [DEBUG] [Thread-153229] [transport.py] [_log()] starting thread (client mode): 0x2e3dd090
2025-09-29T10:19:54.874 [DEBUG] [Thread-153229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:19:54.890 [DEBUG] [Thread-153229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:19:54.890 [INFO] [Thread-153229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:19:54.897 [DEBUG] [Thread-153229] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] client lang: <none>
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] server lang: <none>
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] kex follows: False
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] Compression: none
2025-09-29T10:19:54.898 [DEBUG] [Thread-153229] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:19:54.957 [DEBUG] [Thread-153229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:19:54.957 [DEBUG] [Thread-153229] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:19:54.957 [DEBUG] [Thread-153229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:19:54.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:19:54.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:19:55.015 [DEBUG] [Thread-153229] [transport.py] [_log()] userauth is OK
2025-09-29T10:19:55.015 [DEBUG] [Thread-153229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:19:55.015 [DEBUG] [Thread-153229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:19:55.015 [DEBUG] [Thread-153229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:19:55.015 [DEBUG] [Thread-153229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:19:55.033 [INFO] [Thread-153229] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:19:55.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:19:55.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:19:56.001 [DEBUG] [Thread-153229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:19:56.001 [DEBUG] [Thread-153229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:19:56.050 [DEBUG] [Thread-153229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:19:56.050 [DEBUG] [Thread-153229] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:19:56.059 [DEBUG] [Thread-153229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:19:56.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:19:56.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:19:56.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:19:56.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:19:56.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:19:56.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:19:56.100 [DEBUG] [Thread-153229] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:19:56.568 [DEBUG] [Thread-153231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:20:06.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:20:06.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:20:06.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:20:06.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 20, 2), 7.78, 58.17, 0.0, 20.36, 10.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:20:06.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:20:02
2025-09-29T10:20:06.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:20:06.936 [DEBUG] [Thread-153232] [transport.py] [_log()] starting thread (client mode): 0x2e38d300
2025-09-29T10:20:06.936 [DEBUG] [Thread-153232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:20:06.956 [DEBUG] [Thread-153232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:20:06.956 [INFO] [Thread-153232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:20:06.959 [DEBUG] [Thread-153232] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:20:06.959 [DEBUG] [Thread-153232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:20:06.959 [DEBUG] [Thread-153232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] client lang: <none>
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] server lang: <none>
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] kex follows: False
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:20:06.960 [DEBUG] [Thread-153232] [transport.py] [_log()] Compression: none
2025-09-29T10:20:06.961 [DEBUG] [Thread-153232] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:20:06.970 [DEBUG] [Thread-153232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:20:06.971 [DEBUG] [Thread-153232] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:20:06.971 [DEBUG] [Thread-153232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:20:06.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:20:06.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:20:06.974 [DEBUG] [Thread-153232] [transport.py] [_log()] userauth is OK
2025-09-29T10:20:06.974 [DEBUG] [Thread-153232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:20:06.974 [DEBUG] [Thread-153232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:20:06.974 [DEBUG] [Thread-153232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:20:06.974 [DEBUG] [Thread-153232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:20:06.994 [INFO] [Thread-153232] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:20:06.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:20:11.164 [DEBUG] [Thread-153232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:20:11.164 [DEBUG] [Thread-153232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:20:11.165 [DEBUG] [Thread-153232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:20:11.205 [DEBUG] [Thread-153232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:20:11.205 [DEBUG] [Thread-153232] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:20:11.208 [DEBUG] [Thread-153232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:20:11.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:20:11.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:20:11.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:20:11.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:20:11.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:20:11.365 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:20:11.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:20:11.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:20:11.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:20:11.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.346948 -999.00  +10.80  25.97     65   +4.70 1 2 1 1 1   888    0 7.08 44.45 ----- 20.3 26.0 117.2 30.3 16.9 -22.2 15.7 -23.1 14.7 -22.8 15.9 -23.4
2025-09-29T10:20:11.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:20:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:20:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.346948
2025-09-29T10:20:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:20:11.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:20:11.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:20:11.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:20:11.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:20:11.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:20:02', tmtdew=7.78, humidity=58.17, cloud=0.0, wind=20.36, temperature=10.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:19:36.307', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:20:11.368 [DEBUG] [Thread-153232] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:20:11.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:20:11.467 [DEBUG] [Thread-153235] [transport.py] [_log()] starting thread (client mode): 0x2e38c640
2025-09-29T10:20:11.467 [DEBUG] [Thread-153235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:20:11.485 [DEBUG] [Thread-153235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:20:11.486 [INFO] [Thread-153235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:20:11.493 [DEBUG] [Thread-153235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:20:11.493 [DEBUG] [Thread-153235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:20:11.493 [DEBUG] [Thread-153235] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:20:11.493 [DEBUG] [Thread-153235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:11.493 [DEBUG] [Thread-153235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] client lang: <none>
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] server lang: <none>
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] kex follows: False
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] Compression: none
2025-09-29T10:20:11.494 [DEBUG] [Thread-153235] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:20:11.551 [DEBUG] [Thread-153235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:20:11.551 [DEBUG] [Thread-153235] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:20:11.552 [DEBUG] [Thread-153235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:20:11.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:20:11.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:20:11.610 [DEBUG] [Thread-153235] [transport.py] [_log()] userauth is OK
2025-09-29T10:20:11.610 [DEBUG] [Thread-153235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:20:11.610 [DEBUG] [Thread-153235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:20:11.610 [DEBUG] [Thread-153235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:20:11.610 [DEBUG] [Thread-153235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:20:11.613 [DEBUG] [Thread-153237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:20:11.629 [INFO] [Thread-153235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:20:11.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:20:11.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:20:12.593 [DEBUG] [Thread-153235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:20:12.594 [DEBUG] [Thread-153235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:20:12.641 [DEBUG] [Thread-153235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:20:12.641 [DEBUG] [Thread-153235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:20:12.650 [DEBUG] [Thread-153235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:20:12.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:20:12.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:20:12.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:20:12.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:20:12.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:20:12.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:20:12.687 [DEBUG] [Thread-153235] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:20:22.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:20:22.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:20:22.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:20:23.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 20, 2), 7.78, 58.17, 0.0, 20.36, 10.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:20:23.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:20:02
2025-09-29T10:20:23.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:20:23.518 [DEBUG] [Thread-153238] [transport.py] [_log()] starting thread (client mode): 0x2e3ddfc0
2025-09-29T10:20:23.518 [DEBUG] [Thread-153238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:20:23.537 [DEBUG] [Thread-153238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:20:23.537 [INFO] [Thread-153238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:20:23.541 [DEBUG] [Thread-153238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] client lang: <none>
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] server lang: <none>
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] kex follows: False
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] Compression: none
2025-09-29T10:20:23.542 [DEBUG] [Thread-153238] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:20:23.556 [DEBUG] [Thread-153238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:20:23.557 [DEBUG] [Thread-153238] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:20:23.558 [DEBUG] [Thread-153238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:20:23.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:20:23.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:20:23.560 [DEBUG] [Thread-153238] [transport.py] [_log()] userauth is OK
2025-09-29T10:20:23.560 [DEBUG] [Thread-153238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:20:23.560 [DEBUG] [Thread-153238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:20:23.560 [DEBUG] [Thread-153238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:20:23.560 [DEBUG] [Thread-153238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:20:23.584 [INFO] [Thread-153238] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:20:23.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:20:26.513 [DEBUG] [Thread-153238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:20:26.513 [DEBUG] [Thread-153238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:20:26.513 [DEBUG] [Thread-153238] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:20:26.554 [DEBUG] [Thread-153238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:20:26.554 [DEBUG] [Thread-153238] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:20:26.557 [DEBUG] [Thread-153238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:20:26.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:20:26.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:20:26.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:20:26.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:20:26.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:20:26.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:20:26.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:20:26.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:20:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:20:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.346948 -999.00  +10.80  25.97     65   +4.70 1 2 1 1 1   888    0 7.08 44.45 ----- 20.3 26.0 117.2 30.3 16.9 -22.2 15.7 -23.1 14.7 -22.8 15.9 -23.4
2025-09-29T10:20:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:20:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:20:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.346948
2025-09-29T10:20:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:20:26.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:20:26.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:20:26.579 [DEBUG] [Thread-153238] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:20:26.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:20:26.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:20:26.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:20:02', tmtdew=7.78, humidity=58.17, cloud=0.0, wind=20.36, temperature=10.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:19:36.307', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:20:26.656 [DEBUG] [Thread-153241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:20:26.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:20:26.675 [DEBUG] [Thread-153242] [transport.py] [_log()] starting thread (client mode): 0x2e38c970
2025-09-29T10:20:26.675 [DEBUG] [Thread-153242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:20:26.690 [DEBUG] [Thread-153242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:20:26.690 [INFO] [Thread-153242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] client lang: <none>
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] server lang: <none>
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] kex follows: False
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:20:26.698 [DEBUG] [Thread-153242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:20:26.699 [DEBUG] [Thread-153242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:20:26.699 [DEBUG] [Thread-153242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:20:26.699 [DEBUG] [Thread-153242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:20:26.699 [DEBUG] [Thread-153242] [transport.py] [_log()] Compression: none
2025-09-29T10:20:26.699 [DEBUG] [Thread-153242] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:20:26.754 [DEBUG] [Thread-153242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:20:26.754 [DEBUG] [Thread-153242] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:20:26.755 [DEBUG] [Thread-153242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:20:26.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:20:26.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:20:26.811 [DEBUG] [Thread-153242] [transport.py] [_log()] userauth is OK
2025-09-29T10:20:26.811 [DEBUG] [Thread-153242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:20:26.811 [DEBUG] [Thread-153242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:20:26.811 [DEBUG] [Thread-153242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:20:26.811 [DEBUG] [Thread-153242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:20:26.826 [INFO] [Thread-153242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:20:26.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:20:26.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:20:27.834 [DEBUG] [Thread-153242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:20:27.834 [DEBUG] [Thread-153242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:20:27.882 [DEBUG] [Thread-153242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:20:27.882 [DEBUG] [Thread-153242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:20:27.890 [DEBUG] [Thread-153242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:20:27.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:20:27.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:20:27.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:20:27.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:20:27.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:20:27.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:20:27.922 [DEBUG] [Thread-153242] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:20:29.028 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:20:29.029 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:20:32.486 [DEBUG] [Thread-153244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:20:37.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:20:37.923 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:20:37.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:20:38.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 20, 34), 7.68, 58.73, 0.0, 28.67, 10.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:20:38.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:20:34
2025-09-29T10:20:38.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:20:38.749 [DEBUG] [Thread-153245] [transport.py] [_log()] starting thread (client mode): 0x2e38c310
2025-09-29T10:20:38.749 [DEBUG] [Thread-153245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:20:38.772 [DEBUG] [Thread-153245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:20:38.772 [INFO] [Thread-153245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:20:38.776 [DEBUG] [Thread-153245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:20:38.776 [DEBUG] [Thread-153245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] client lang: <none>
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] server lang: <none>
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] kex follows: False
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] Compression: none
2025-09-29T10:20:38.777 [DEBUG] [Thread-153245] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:20:38.795 [DEBUG] [Thread-153245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:20:38.796 [DEBUG] [Thread-153245] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:20:38.796 [DEBUG] [Thread-153245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:20:38.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:20:38.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:20:38.798 [DEBUG] [Thread-153245] [transport.py] [_log()] userauth is OK
2025-09-29T10:20:38.798 [DEBUG] [Thread-153245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:20:38.799 [DEBUG] [Thread-153245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:20:38.799 [DEBUG] [Thread-153245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:20:38.799 [DEBUG] [Thread-153245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:20:38.833 [INFO] [Thread-153245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:20:38.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:20:39.450 [DEBUG] [Thread-153245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:20:39.451 [DEBUG] [Thread-153245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:20:39.451 [DEBUG] [Thread-153245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:20:39.491 [DEBUG] [Thread-153245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:20:39.491 [DEBUG] [Thread-153245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:20:39.494 [DEBUG] [Thread-153245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:20:39.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:20:39.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:20:39.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:20:39.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:20:39.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:20:39.517 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:20:39.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:20:39.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:20:39.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:20:39.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.347295 -999.00  +10.40  16.08     65   +4.20 1 1 1 1 1   888    0 7.21 47.93 ----- 17.5 16.1 124.6 28.5 16.9 -23.1 15.8 -22.8 14.8 -23.6 15.9 -23.6
2025-09-29T10:20:39.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:20:39.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:20:39.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.347295
2025-09-29T10:20:39.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:20:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:20:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:20:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:20:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:20:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:20:34', tmtdew=7.68, humidity=58.73, cloud=0.0, wind=28.67, temperature=10.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:20:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:20:39.520 [DEBUG] [Thread-153245] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:20:39.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:20:39.617 [DEBUG] [Thread-153248] [transport.py] [_log()] starting thread (client mode): 0x2b9bbb50
2025-09-29T10:20:39.617 [DEBUG] [Thread-153248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:20:39.632 [DEBUG] [Thread-153248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:20:39.632 [INFO] [Thread-153248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:20:39.640 [DEBUG] [Thread-153248] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:20:39.640 [DEBUG] [Thread-153248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:20:39.640 [DEBUG] [Thread-153248] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:20:39.640 [DEBUG] [Thread-153248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] client lang: <none>
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] server lang: <none>
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] kex follows: False
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] Compression: none
2025-09-29T10:20:39.641 [DEBUG] [Thread-153248] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:20:39.698 [DEBUG] [Thread-153248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:20:39.699 [DEBUG] [Thread-153248] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:20:39.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:20:39.700 [DEBUG] [Thread-153248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:20:39.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:20:39.755 [DEBUG] [Thread-153248] [transport.py] [_log()] userauth is OK
2025-09-29T10:20:39.755 [DEBUG] [Thread-153248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:20:39.755 [DEBUG] [Thread-153248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:20:39.755 [DEBUG] [Thread-153248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:20:39.755 [DEBUG] [Thread-153248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:20:39.774 [INFO] [Thread-153248] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:20:39.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:20:39.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:20:40.751 [DEBUG] [Thread-153248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:20:40.751 [DEBUG] [Thread-153248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:20:40.799 [DEBUG] [Thread-153248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:20:40.799 [DEBUG] [Thread-153248] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:20:40.808 [DEBUG] [Thread-153248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:20:40.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:20:40.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:20:40.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:20:40.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:20:40.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:20:40.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:20:40.843 [DEBUG] [Thread-153248] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:20:41.683 [DEBUG] [Thread-153250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:20:50.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:20:50.846 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:20:50.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:20:51.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 20, 34), 7.68, 58.73, 0.0, 28.67, 10.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:20:51.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:20:34
2025-09-29T10:20:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:20:51.669 [DEBUG] [Thread-153251] [transport.py] [_log()] starting thread (client mode): 0x2e38f0d0
2025-09-29T10:20:51.669 [DEBUG] [Thread-153251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:20:51.689 [DEBUG] [Thread-153251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:20:51.689 [INFO] [Thread-153251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] client lang: <none>
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] server lang: <none>
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] kex follows: False
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:20:51.692 [DEBUG] [Thread-153251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:20:51.693 [DEBUG] [Thread-153251] [transport.py] [_log()] Compression: none
2025-09-29T10:20:51.693 [DEBUG] [Thread-153251] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:20:51.707 [DEBUG] [Thread-153251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:20:51.707 [DEBUG] [Thread-153251] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:20:51.707 [DEBUG] [Thread-153251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:20:51.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:20:51.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:20:51.708 [DEBUG] [Thread-153251] [transport.py] [_log()] userauth is OK
2025-09-29T10:20:51.708 [DEBUG] [Thread-153251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:20:51.708 [DEBUG] [Thread-153251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:20:51.708 [DEBUG] [Thread-153251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:20:51.708 [DEBUG] [Thread-153251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:20:51.723 [INFO] [Thread-153251] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:20:51.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:20:52.492 [DEBUG] [Thread-153251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:20:52.493 [DEBUG] [Thread-153251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:20:52.493 [DEBUG] [Thread-153251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:20:52.534 [DEBUG] [Thread-153251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:20:52.534 [DEBUG] [Thread-153251] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:20:52.537 [DEBUG] [Thread-153251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:20:52.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:20:52.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:20:52.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:20:52.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:20:52.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:20:52.558 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:20:52.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:20:52.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:20:52.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:20:52.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.347295 -999.00  +10.40  16.08     65   +4.20 1 1 1 1 1   888    0 7.21 47.93 ----- 17.5 16.1 124.6 28.5 16.9 -23.1 15.8 -22.8 14.8 -23.6 15.9 -23.6
2025-09-29T10:20:52.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:20:52.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:20:52.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.347295
2025-09-29T10:20:52.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:20:52.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:20:52.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:20:52.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:20:52.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:20:52.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:20:34', tmtdew=7.68, humidity=58.73, cloud=0.0, wind=28.67, temperature=10.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:20:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:20:52.560 [DEBUG] [Thread-153251] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:20:52.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:20:52.653 [DEBUG] [Thread-153254] [transport.py] [_log()] starting thread (client mode): 0x2e38c850
2025-09-29T10:20:52.653 [DEBUG] [Thread-153254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:20:52.668 [DEBUG] [Thread-153254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:20:52.668 [INFO] [Thread-153254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] client lang: <none>
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] server lang: <none>
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] kex follows: False
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] Compression: none
2025-09-29T10:20:52.676 [DEBUG] [Thread-153254] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:20:52.734 [DEBUG] [Thread-153254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:20:52.734 [DEBUG] [Thread-153254] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:20:52.734 [DEBUG] [Thread-153254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:20:52.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:20:52.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:20:52.791 [DEBUG] [Thread-153254] [transport.py] [_log()] userauth is OK
2025-09-29T10:20:52.791 [DEBUG] [Thread-153254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:20:52.791 [DEBUG] [Thread-153254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:20:52.791 [DEBUG] [Thread-153254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:20:52.791 [DEBUG] [Thread-153254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:20:52.808 [INFO] [Thread-153254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:20:52.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:20:52.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:20:53.804 [DEBUG] [Thread-153254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:20:53.804 [DEBUG] [Thread-153254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:20:53.856 [DEBUG] [Thread-153254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:20:53.857 [DEBUG] [Thread-153254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:20:53.865 [DEBUG] [Thread-153254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:20:53.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:20:53.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:20:53.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:20:53.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:20:53.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:20:53.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:20:53.897 [DEBUG] [Thread-153254] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:20:56.724 [DEBUG] [Thread-153256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:21:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:21:03.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:21:03.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:21:04.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 20, 34), 7.68, 58.73, 0.0, 28.67, 10.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:21:04.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:20:34
2025-09-29T10:21:04.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:21:04.728 [DEBUG] [Thread-153257] [transport.py] [_log()] starting thread (client mode): 0x2e3c2980
2025-09-29T10:21:04.728 [DEBUG] [Thread-153257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:04.743 [DEBUG] [Thread-153257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:21:04.743 [INFO] [Thread-153257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:04.745 [DEBUG] [Thread-153257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:04.746 [DEBUG] [Thread-153257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:04.746 [DEBUG] [Thread-153257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:04.746 [DEBUG] [Thread-153257] [transport.py] [_log()] Compression: none
2025-09-29T10:21:04.746 [DEBUG] [Thread-153257] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:04.756 [DEBUG] [Thread-153257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:04.756 [DEBUG] [Thread-153257] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:04.756 [DEBUG] [Thread-153257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:21:04.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:21:04.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:04.758 [DEBUG] [Thread-153257] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:04.758 [DEBUG] [Thread-153257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:04.758 [DEBUG] [Thread-153257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:04.758 [DEBUG] [Thread-153257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:21:04.758 [DEBUG] [Thread-153257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:04.774 [INFO] [Thread-153257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:04.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:05.382 [DEBUG] [Thread-153257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:05.382 [DEBUG] [Thread-153257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:05.382 [DEBUG] [Thread-153257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:21:05.423 [DEBUG] [Thread-153257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:05.424 [DEBUG] [Thread-153257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:05.426 [DEBUG] [Thread-153257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:05.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:05.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:21:05.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:21:05.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:21:05.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:05.450 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:21:05.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:05.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:05.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:21:05.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.347643 -999.00  +10.80  25.01     65   +4.50 1 2 1 1 1   888    0 7.07 45.07 ----- 24.3 25.0 139.4 31.6 17.1 -23.8 16.0 -23.0 14.9 -22.7 16.0 -24.0
2025-09-29T10:21:05.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:21:05.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:21:05.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.347643
2025-09-29T10:21:05.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:21:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:21:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:21:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:21:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:21:05.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:20:34', tmtdew=7.68, humidity=58.73, cloud=0.0, wind=28.67, temperature=10.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:20:36.355', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:21:05.453 [DEBUG] [Thread-153257] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:05.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:21:05.555 [DEBUG] [Thread-153260] [transport.py] [_log()] starting thread (client mode): 0x2e3c1030
2025-09-29T10:21:05.555 [DEBUG] [Thread-153260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:05.569 [DEBUG] [Thread-153260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:21:05.570 [INFO] [Thread-153260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:21:05.577 [DEBUG] [Thread-153260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:05.577 [DEBUG] [Thread-153260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:21:05.577 [DEBUG] [Thread-153260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:05.577 [DEBUG] [Thread-153260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:05.578 [DEBUG] [Thread-153260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:05.579 [DEBUG] [Thread-153260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:05.579 [DEBUG] [Thread-153260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:05.579 [DEBUG] [Thread-153260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:05.579 [DEBUG] [Thread-153260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:05.579 [DEBUG] [Thread-153260] [transport.py] [_log()] Compression: none
2025-09-29T10:21:05.579 [DEBUG] [Thread-153260] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:05.635 [DEBUG] [Thread-153260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:05.636 [DEBUG] [Thread-153260] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:05.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:21:05.637 [DEBUG] [Thread-153260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:21:05.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:05.696 [DEBUG] [Thread-153260] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:05.696 [DEBUG] [Thread-153260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:05.696 [DEBUG] [Thread-153260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:05.696 [DEBUG] [Thread-153260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:21:05.696 [DEBUG] [Thread-153260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:05.715 [INFO] [Thread-153260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:05.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:21:05.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:06.671 [DEBUG] [Thread-153260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:06.671 [DEBUG] [Thread-153260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:06.719 [DEBUG] [Thread-153260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:06.719 [DEBUG] [Thread-153260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:06.728 [DEBUG] [Thread-153260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:06.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:06.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:21:06.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:21:06.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:06.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:06.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:06.763 [DEBUG] [Thread-153260] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:11.755 [DEBUG] [Thread-153262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:21:16.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:21:16.766 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:21:16.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:21:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 21, 6), 7.7, 58.7, 0.0, 27.63, 10.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:21:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:21:06
2025-09-29T10:21:17.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:21:17.589 [DEBUG] [Thread-153263] [transport.py] [_log()] starting thread (client mode): 0x2e3c2f20
2025-09-29T10:21:17.589 [DEBUG] [Thread-153263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:17.610 [DEBUG] [Thread-153263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:21:17.610 [INFO] [Thread-153263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:17.614 [DEBUG] [Thread-153263] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:17.615 [DEBUG] [Thread-153263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:17.615 [DEBUG] [Thread-153263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:17.615 [DEBUG] [Thread-153263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:17.615 [DEBUG] [Thread-153263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:17.615 [DEBUG] [Thread-153263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:17.615 [DEBUG] [Thread-153263] [transport.py] [_log()] Compression: none
2025-09-29T10:21:17.615 [DEBUG] [Thread-153263] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:17.629 [DEBUG] [Thread-153263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:17.630 [DEBUG] [Thread-153263] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:17.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:21:17.631 [DEBUG] [Thread-153263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:21:17.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:17.633 [DEBUG] [Thread-153263] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:17.634 [DEBUG] [Thread-153263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:17.634 [DEBUG] [Thread-153263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:17.634 [DEBUG] [Thread-153263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:21:17.634 [DEBUG] [Thread-153263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:17.651 [INFO] [Thread-153263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:17.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:18.412 [DEBUG] [Thread-153263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:18.413 [DEBUG] [Thread-153263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:18.413 [DEBUG] [Thread-153263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:21:18.453 [DEBUG] [Thread-153263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:18.453 [DEBUG] [Thread-153263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:18.456 [DEBUG] [Thread-153263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:18.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:18.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:21:18.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:21:18.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:21:18.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:18.478 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:21:18.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:18.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:18.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:21:18.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.347643 -999.00  +10.80  25.01     65   +4.50 1 2 1 1 1   888    0 7.07 45.07 ----- 24.3 25.0 139.4 31.6 17.1 -23.8 16.0 -23.0 14.9 -22.7 16.0 -24.0
2025-09-29T10:21:18.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:21:18.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:21:18.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.347643
2025-09-29T10:21:18.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:21:18.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:21:18.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:21:18.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:21:18.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:21:18.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:21:06', tmtdew=7.7, humidity=58.7, cloud=0.0, wind=27.63, temperature=10.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:20:36.355', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:21:18.480 [DEBUG] [Thread-153263] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:18.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:21:18.574 [DEBUG] [Thread-153266] [transport.py] [_log()] starting thread (client mode): 0x2b91e9b0
2025-09-29T10:21:18.574 [DEBUG] [Thread-153266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:18.589 [DEBUG] [Thread-153266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:21:18.589 [INFO] [Thread-153266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:18.597 [DEBUG] [Thread-153266] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:18.598 [DEBUG] [Thread-153266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:18.598 [DEBUG] [Thread-153266] [transport.py] [_log()] Compression: none
2025-09-29T10:21:18.598 [DEBUG] [Thread-153266] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:18.656 [DEBUG] [Thread-153266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:18.656 [DEBUG] [Thread-153266] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:18.657 [DEBUG] [Thread-153266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:21:18.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:21:18.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:18.711 [DEBUG] [Thread-153266] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:18.711 [DEBUG] [Thread-153266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:18.712 [DEBUG] [Thread-153266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:18.712 [DEBUG] [Thread-153266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:21:18.712 [DEBUG] [Thread-153266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:18.731 [INFO] [Thread-153266] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:18.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:21:18.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:19.684 [DEBUG] [Thread-153266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:19.684 [DEBUG] [Thread-153266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:19.732 [DEBUG] [Thread-153266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:19.732 [DEBUG] [Thread-153266] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:19.741 [DEBUG] [Thread-153266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:19.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:19.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:21:19.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:21:19.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:19.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:19.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:19.776 [DEBUG] [Thread-153266] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:26.799 [DEBUG] [Thread-153268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:21:29.177 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:21:29.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:21:29.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:21:29.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:21:29.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:21:30.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 21, 6), 7.7, 58.7, 0.0, 27.63, 10.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:21:30.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:21:06
2025-09-29T10:21:30.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:21:30.614 [DEBUG] [Thread-153269] [transport.py] [_log()] starting thread (client mode): 0x2e3c0310
2025-09-29T10:21:30.614 [DEBUG] [Thread-153269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:30.635 [DEBUG] [Thread-153269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:21:30.635 [INFO] [Thread-153269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:30.638 [DEBUG] [Thread-153269] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] Compression: none
2025-09-29T10:21:30.639 [DEBUG] [Thread-153269] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:30.655 [DEBUG] [Thread-153269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:30.656 [DEBUG] [Thread-153269] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:30.656 [DEBUG] [Thread-153269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:21:30.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:21:30.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:30.657 [DEBUG] [Thread-153269] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:30.657 [DEBUG] [Thread-153269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:30.657 [DEBUG] [Thread-153269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:30.657 [DEBUG] [Thread-153269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:21:30.657 [DEBUG] [Thread-153269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:30.669 [INFO] [Thread-153269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:30.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:31.423 [DEBUG] [Thread-153269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:31.423 [DEBUG] [Thread-153269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:31.423 [DEBUG] [Thread-153269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:21:31.464 [DEBUG] [Thread-153269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:31.464 [DEBUG] [Thread-153269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:31.466 [DEBUG] [Thread-153269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:31.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:31.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:21:31.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:21:31.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:21:31.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:31.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:21:31.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:31.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:31.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:21:31.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.347643 -999.00  +10.80  25.01     65   +4.50 1 2 1 1 1   888    0 7.07 45.07 ----- 24.3 25.0 139.4 31.6 17.1 -23.8 16.0 -23.0 14.9 -22.7 16.0 -24.0
2025-09-29T10:21:31.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:21:31.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:21:31.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.347643
2025-09-29T10:21:31.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:21:31.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:21:31.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:21:31.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:21:31.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T10:21:31.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:21:06', tmtdew=7.7, humidity=58.7, cloud=0.0, wind=27.63, temperature=10.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:20:36.355', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:21:31.477 [DEBUG] [Thread-153269] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:31.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:21:31.562 [DEBUG] [Thread-153272] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-29T10:21:31.562 [DEBUG] [Thread-153272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:31.577 [DEBUG] [Thread-153272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:21:31.577 [INFO] [Thread-153272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:21:31.584 [DEBUG] [Thread-153272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:31.584 [DEBUG] [Thread-153272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] Compression: none
2025-09-29T10:21:31.585 [DEBUG] [Thread-153272] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:31.642 [DEBUG] [Thread-153272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:31.642 [DEBUG] [Thread-153272] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:31.642 [DEBUG] [Thread-153272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:21:31.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:21:31.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:31.699 [DEBUG] [Thread-153272] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:31.699 [DEBUG] [Thread-153272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:31.699 [DEBUG] [Thread-153272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:31.699 [DEBUG] [Thread-153272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:21:31.699 [DEBUG] [Thread-153272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:31.714 [INFO] [Thread-153272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:31.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:21:31.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:32.530 [DEBUG] [Thread-153274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:21:32.760 [DEBUG] [Thread-153272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:32.760 [DEBUG] [Thread-153272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:32.809 [DEBUG] [Thread-153272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:32.809 [DEBUG] [Thread-153272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:32.817 [DEBUG] [Thread-153272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:32.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:32.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:21:32.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:21:32.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:32.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:32.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:32.848 [DEBUG] [Thread-153272] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:41.843 [DEBUG] [Thread-153275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:21:42.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:21:42.852 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:21:42.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:21:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 21, 38), 7.53, 59.3, 0.0, 29.43, 10.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:21:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:21:38
2025-09-29T10:21:43.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:21:43.694 [DEBUG] [Thread-153276] [transport.py] [_log()] starting thread (client mode): 0x2b91c490
2025-09-29T10:21:43.694 [DEBUG] [Thread-153276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:43.716 [DEBUG] [Thread-153276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:21:43.716 [INFO] [Thread-153276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:43.719 [DEBUG] [Thread-153276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:43.720 [DEBUG] [Thread-153276] [transport.py] [_log()] Compression: none
2025-09-29T10:21:43.720 [DEBUG] [Thread-153276] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:43.738 [DEBUG] [Thread-153276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:43.738 [DEBUG] [Thread-153276] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:43.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:21:43.740 [DEBUG] [Thread-153276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:21:43.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:43.741 [DEBUG] [Thread-153276] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:43.741 [DEBUG] [Thread-153276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:43.741 [DEBUG] [Thread-153276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:43.741 [DEBUG] [Thread-153276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:21:43.742 [DEBUG] [Thread-153276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:43.757 [INFO] [Thread-153276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:43.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:44.403 [DEBUG] [Thread-153276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:44.403 [DEBUG] [Thread-153276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:44.403 [DEBUG] [Thread-153276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:21:44.444 [DEBUG] [Thread-153276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:44.444 [DEBUG] [Thread-153276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:44.447 [DEBUG] [Thread-153276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:44.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:44.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:21:44.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:21:44.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:21:44.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:44.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:21:44.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:44.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:44.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:21:44.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.347990 -999.00  +10.60  25.53     64   +4.30 1 1 1 1 1   888    0 7.05 44.26 ----- 22.2 25.5 144.8 32.1 17.1 -25.2 16.0 -23.9 15.0 -24.3 16.0 -24.8
2025-09-29T10:21:44.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:21:44.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:21:44.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.347990
2025-09-29T10:21:44.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:21:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:21:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:21:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:21:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:21:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:21:38', tmtdew=7.53, humidity=59.3, cloud=0.0, wind=29.43, temperature=10.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:21:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:21:44.468 [DEBUG] [Thread-153276] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:44.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:21:44.565 [DEBUG] [Thread-153279] [transport.py] [_log()] starting thread (client mode): 0x2b9c1c60
2025-09-29T10:21:44.565 [DEBUG] [Thread-153279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:44.579 [DEBUG] [Thread-153279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:21:44.580 [INFO] [Thread-153279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:21:44.587 [DEBUG] [Thread-153279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] Compression: none
2025-09-29T10:21:44.588 [DEBUG] [Thread-153279] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:44.646 [DEBUG] [Thread-153279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:44.647 [DEBUG] [Thread-153279] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:44.647 [DEBUG] [Thread-153279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:21:44.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:21:44.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:44.703 [DEBUG] [Thread-153279] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:44.704 [DEBUG] [Thread-153279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:44.704 [DEBUG] [Thread-153279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:44.704 [DEBUG] [Thread-153279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:21:44.704 [DEBUG] [Thread-153279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:44.721 [INFO] [Thread-153279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:44.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:21:44.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:45.666 [DEBUG] [Thread-153279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:45.666 [DEBUG] [Thread-153279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:45.714 [DEBUG] [Thread-153279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:45.715 [DEBUG] [Thread-153279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:45.728 [DEBUG] [Thread-153279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:45.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:45.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:21:45.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:21:45.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:45.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:45.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:45.766 [DEBUG] [Thread-153279] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:55.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:21:55.766 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:21:55.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:21:56.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 21, 38), 7.53, 59.3, 0.0, 29.43, 10.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:21:56.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:21:38
2025-09-29T10:21:56.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:21:56.603 [DEBUG] [Thread-153281] [transport.py] [_log()] starting thread (client mode): 0x2b9c15d0
2025-09-29T10:21:56.603 [DEBUG] [Thread-153281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:56.622 [DEBUG] [Thread-153281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:21:56.622 [INFO] [Thread-153281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] Compression: none
2025-09-29T10:21:56.626 [DEBUG] [Thread-153281] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:56.642 [DEBUG] [Thread-153281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:56.642 [DEBUG] [Thread-153281] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:56.643 [DEBUG] [Thread-153281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:21:56.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:21:56.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:56.644 [DEBUG] [Thread-153281] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:56.645 [DEBUG] [Thread-153281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:56.645 [DEBUG] [Thread-153281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:56.645 [DEBUG] [Thread-153281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:21:56.645 [DEBUG] [Thread-153281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:56.663 [INFO] [Thread-153281] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:56.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:56.877 [DEBUG] [Thread-153283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:21:57.500 [DEBUG] [Thread-153281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:57.501 [DEBUG] [Thread-153281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:57.501 [DEBUG] [Thread-153281] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:21:57.541 [DEBUG] [Thread-153281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:57.542 [DEBUG] [Thread-153281] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:57.544 [DEBUG] [Thread-153281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:57.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:57.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:21:57.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:21:57.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:21:57.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:57.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:21:57.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:57.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:57.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:21:57.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.347990 -999.00  +10.60  25.53     64   +4.30 1 1 1 1 1   888    0 7.05 44.26 ----- 22.2 25.5 144.8 32.1 17.1 -25.2 16.0 -23.9 15.0 -24.3 16.0 -24.8
2025-09-29T10:21:57.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:21:57.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:21:57.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.347990
2025-09-29T10:21:57.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:21:57.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:21:57.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:21:57.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:21:57.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:21:57.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:21:38', tmtdew=7.53, humidity=59.3, cloud=0.0, wind=29.43, temperature=10.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:21:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:21:57.570 [DEBUG] [Thread-153281] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:21:57.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:21:57.663 [DEBUG] [Thread-153285] [transport.py] [_log()] starting thread (client mode): 0x2e38f1f0
2025-09-29T10:21:57.663 [DEBUG] [Thread-153285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:21:57.681 [DEBUG] [Thread-153285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:21:57.681 [INFO] [Thread-153285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] client lang: <none>
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] server lang: <none>
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] kex follows: False
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] Compression: none
2025-09-29T10:21:57.689 [DEBUG] [Thread-153285] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:21:57.746 [DEBUG] [Thread-153285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:21:57.746 [DEBUG] [Thread-153285] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:21:57.746 [DEBUG] [Thread-153285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:21:57.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:21:57.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:21:57.806 [DEBUG] [Thread-153285] [transport.py] [_log()] userauth is OK
2025-09-29T10:21:57.806 [DEBUG] [Thread-153285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:21:57.806 [DEBUG] [Thread-153285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:21:57.806 [DEBUG] [Thread-153285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:21:57.806 [DEBUG] [Thread-153285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:21:57.825 [INFO] [Thread-153285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:21:57.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:21:57.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:21:58.770 [DEBUG] [Thread-153285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:21:58.770 [DEBUG] [Thread-153285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:21:58.819 [DEBUG] [Thread-153285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:21:58.819 [DEBUG] [Thread-153285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:21:58.832 [DEBUG] [Thread-153285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:21:58.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:21:58.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:21:58.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:21:58.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:21:58.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:21:58.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:21:58.876 [DEBUG] [Thread-153285] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:08.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:22:08.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:22:08.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:22:09.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 21, 38), 7.53, 59.3, 0.0, 29.43, 10.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:22:09.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:21:38
2025-09-29T10:22:09.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:22:09.737 [DEBUG] [Thread-153287] [transport.py] [_log()] starting thread (client mode): 0x2b91f9d0
2025-09-29T10:22:09.737 [DEBUG] [Thread-153287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:22:09.757 [DEBUG] [Thread-153287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:22:09.757 [INFO] [Thread-153287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:22:09.760 [DEBUG] [Thread-153287] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] client lang: <none>
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] server lang: <none>
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] kex follows: False
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] Compression: none
2025-09-29T10:22:09.761 [DEBUG] [Thread-153287] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:22:09.778 [DEBUG] [Thread-153287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:22:09.778 [DEBUG] [Thread-153287] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:22:09.779 [DEBUG] [Thread-153287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:22:09.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:22:09.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:22:09.779 [DEBUG] [Thread-153287] [transport.py] [_log()] userauth is OK
2025-09-29T10:22:09.779 [DEBUG] [Thread-153287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:22:09.779 [DEBUG] [Thread-153287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:22:09.779 [DEBUG] [Thread-153287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:22:09.779 [DEBUG] [Thread-153287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:22:09.789 [INFO] [Thread-153287] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:22:09.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:22:10.615 [DEBUG] [Thread-153287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:22:10.615 [DEBUG] [Thread-153287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:22:10.616 [DEBUG] [Thread-153287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:22:10.657 [DEBUG] [Thread-153287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:22:10.657 [DEBUG] [Thread-153287] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:22:10.659 [DEBUG] [Thread-153287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:22:10.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:22:10.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:22:10.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:22:10.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:22:10.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:22:10.679 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:22:10.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:22:10.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:22:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:22:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.347990 -999.00  +10.60  25.53     64   +4.30 1 1 1 1 1   888    0 7.05 44.26 ----- 22.2 25.5 144.8 32.1 17.1 -25.2 16.0 -23.9 15.0 -24.3 16.0 -24.8
2025-09-29T10:22:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:22:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:22:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.347990
2025-09-29T10:22:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:22:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:22:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:22:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:22:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:22:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:21:38', tmtdew=7.53, humidity=59.3, cloud=0.0, wind=29.43, temperature=10.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:21:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:22:10.680 [DEBUG] [Thread-153287] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:10.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:22:10.770 [DEBUG] [Thread-153290] [transport.py] [_log()] starting thread (client mode): 0x2b91ce20
2025-09-29T10:22:10.770 [DEBUG] [Thread-153290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:22:10.784 [DEBUG] [Thread-153290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:22:10.784 [INFO] [Thread-153290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] client lang: <none>
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] server lang: <none>
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] kex follows: False
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] Compression: none
2025-09-29T10:22:10.792 [DEBUG] [Thread-153290] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:22:10.849 [DEBUG] [Thread-153290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:22:10.849 [DEBUG] [Thread-153290] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:22:10.849 [DEBUG] [Thread-153290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:22:10.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:22:10.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:22:10.909 [DEBUG] [Thread-153290] [transport.py] [_log()] userauth is OK
2025-09-29T10:22:10.909 [DEBUG] [Thread-153290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:22:10.910 [DEBUG] [Thread-153290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:22:10.910 [DEBUG] [Thread-153290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:22:10.910 [DEBUG] [Thread-153290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:22:10.923 [INFO] [Thread-153290] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:22:10.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:22:10.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:22:11.860 [DEBUG] [Thread-153290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:22:11.860 [DEBUG] [Thread-153290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:22:11.908 [DEBUG] [Thread-153290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:22:11.908 [DEBUG] [Thread-153290] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:22:11.917 [DEBUG] [Thread-153290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:22:11.921 [DEBUG] [Thread-153292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:22:11.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:22:11.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:22:11.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:22:11.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:22:11.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:22:11.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:22:11.949 [DEBUG] [Thread-153290] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:21.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:22:21.943 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:22:21.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:22:22.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 22, 10), 7.73, 58.52, 0.0, 32.78, 10.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:22:22.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:22:10
2025-09-29T10:22:22.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:22:22.769 [DEBUG] [Thread-153293] [transport.py] [_log()] starting thread (client mode): 0x2b91d510
2025-09-29T10:22:22.769 [DEBUG] [Thread-153293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:22:22.789 [DEBUG] [Thread-153293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:22:22.789 [INFO] [Thread-153293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] client lang: <none>
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] server lang: <none>
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] kex follows: False
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] Compression: none
2025-09-29T10:22:22.791 [DEBUG] [Thread-153293] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:22:22.800 [DEBUG] [Thread-153293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:22:22.800 [DEBUG] [Thread-153293] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:22:22.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:22:22.801 [DEBUG] [Thread-153293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:22:22.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:22:22.802 [DEBUG] [Thread-153293] [transport.py] [_log()] userauth is OK
2025-09-29T10:22:22.802 [DEBUG] [Thread-153293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:22:22.802 [DEBUG] [Thread-153293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:22:22.802 [DEBUG] [Thread-153293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:22:22.802 [DEBUG] [Thread-153293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:22:22.815 [INFO] [Thread-153293] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:22:22.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:22:23.493 [DEBUG] [Thread-153293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:22:23.493 [DEBUG] [Thread-153293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:22:23.494 [DEBUG] [Thread-153293] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:22:23.534 [DEBUG] [Thread-153293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:22:23.535 [DEBUG] [Thread-153293] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:22:23.537 [DEBUG] [Thread-153293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:22:23.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:22:23.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:22:23.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:22:23.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:22:23.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:22:23.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:22:23.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:22:23.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:22:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:22:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.348684 -999.00  +10.60  20.94     65   +4.40 1 1 1 1 1   888    0 7.33 45.90 ----- 21.8 20.9 144.6 25.4 17.3 -23.7 16.1 -24.8 15.0 -24.4 16.2 -24.2
2025-09-29T10:22:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:22:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:22:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.348684
2025-09-29T10:22:23.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:22:23.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:22:23.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:22:23.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:22:23.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:22:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:22:10', tmtdew=7.73, humidity=58.52, cloud=0.0, wind=32.78, temperature=10.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:22:06.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:22:23.562 [DEBUG] [Thread-153293] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:23.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:22:23.655 [DEBUG] [Thread-153296] [transport.py] [_log()] starting thread (client mode): 0x2e38c160
2025-09-29T10:22:23.655 [DEBUG] [Thread-153296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:22:23.671 [DEBUG] [Thread-153296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:22:23.671 [INFO] [Thread-153296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:22:23.680 [DEBUG] [Thread-153296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] client lang: <none>
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] server lang: <none>
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] kex follows: False
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] Compression: none
2025-09-29T10:22:23.681 [DEBUG] [Thread-153296] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:22:23.739 [DEBUG] [Thread-153296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:22:23.739 [DEBUG] [Thread-153296] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:22:23.740 [DEBUG] [Thread-153296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:22:23.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:22:23.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:22:23.798 [DEBUG] [Thread-153296] [transport.py] [_log()] userauth is OK
2025-09-29T10:22:23.798 [DEBUG] [Thread-153296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:22:23.798 [DEBUG] [Thread-153296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:22:23.798 [DEBUG] [Thread-153296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:22:23.799 [DEBUG] [Thread-153296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:22:23.821 [INFO] [Thread-153296] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:22:23.821 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:22:23.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:22:24.842 [DEBUG] [Thread-153296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:22:24.842 [DEBUG] [Thread-153296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:22:24.889 [DEBUG] [Thread-153296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:22:24.889 [DEBUG] [Thread-153296] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:22:24.898 [DEBUG] [Thread-153296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:22:24.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:22:24.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:22:24.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:22:24.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:22:24.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:22:24.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:22:24.933 [DEBUG] [Thread-153296] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:26.951 [DEBUG] [Thread-153298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:22:29.320 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:22:29.321 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:22:32.587 [DEBUG] [Thread-153299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:22:34.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:22:34.935 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:22:34.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:22:35.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 22, 10), 7.73, 58.52, 0.0, 32.78, 10.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:22:35.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:22:10
2025-09-29T10:22:35.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:22:35.765 [DEBUG] [Thread-153300] [transport.py] [_log()] starting thread (client mode): 0x2b91cf10
2025-09-29T10:22:35.765 [DEBUG] [Thread-153300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:22:35.787 [DEBUG] [Thread-153300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:22:35.787 [INFO] [Thread-153300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:22:35.790 [DEBUG] [Thread-153300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] client lang: <none>
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] server lang: <none>
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] kex follows: False
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] Compression: none
2025-09-29T10:22:35.791 [DEBUG] [Thread-153300] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:22:35.808 [DEBUG] [Thread-153300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:22:35.809 [DEBUG] [Thread-153300] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:22:35.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:22:35.810 [DEBUG] [Thread-153300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:22:35.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:22:35.819 [DEBUG] [Thread-153300] [transport.py] [_log()] userauth is OK
2025-09-29T10:22:35.820 [DEBUG] [Thread-153300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:22:35.820 [DEBUG] [Thread-153300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:22:35.820 [DEBUG] [Thread-153300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:22:35.820 [DEBUG] [Thread-153300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:22:35.844 [INFO] [Thread-153300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:22:35.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:22:36.670 [DEBUG] [Thread-153300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:22:36.670 [DEBUG] [Thread-153300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:22:36.670 [DEBUG] [Thread-153300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:22:36.711 [DEBUG] [Thread-153300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:22:36.711 [DEBUG] [Thread-153300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:22:36.713 [DEBUG] [Thread-153300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:22:36.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:22:36.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:22:36.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:22:36.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:22:36.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:22:36.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:22:36.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:22:36.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:22:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:22:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.348684 -999.00  +10.60  20.94     65   +4.40 1 1 1 1 1   888    0 7.33 45.90 ----- 21.8 20.9 144.6 25.4 17.3 -23.7 16.1 -24.8 15.0 -24.4 16.2 -24.2
2025-09-29T10:22:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:22:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:22:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.348684
2025-09-29T10:22:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:22:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:22:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:22:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:22:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:22:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:22:10', tmtdew=7.73, humidity=58.52, cloud=0.0, wind=32.78, temperature=10.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:22:06.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:22:36.731 [DEBUG] [Thread-153300] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:36.804 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:22:36.817 [DEBUG] [Thread-153303] [transport.py] [_log()] starting thread (client mode): 0x2b9c0040
2025-09-29T10:22:36.817 [DEBUG] [Thread-153303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:22:36.834 [DEBUG] [Thread-153303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:22:36.834 [INFO] [Thread-153303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:22:36.841 [DEBUG] [Thread-153303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:22:36.841 [DEBUG] [Thread-153303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:22:36.841 [DEBUG] [Thread-153303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:22:36.841 [DEBUG] [Thread-153303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] client lang: <none>
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] server lang: <none>
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] kex follows: False
2025-09-29T10:22:36.842 [DEBUG] [Thread-153303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:22:36.843 [DEBUG] [Thread-153303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:22:36.843 [DEBUG] [Thread-153303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:22:36.843 [DEBUG] [Thread-153303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:22:36.843 [DEBUG] [Thread-153303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:22:36.843 [DEBUG] [Thread-153303] [transport.py] [_log()] Compression: none
2025-09-29T10:22:36.843 [DEBUG] [Thread-153303] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:22:36.900 [DEBUG] [Thread-153303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:22:36.901 [DEBUG] [Thread-153303] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:22:36.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:22:36.902 [DEBUG] [Thread-153303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:22:36.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:22:36.957 [DEBUG] [Thread-153303] [transport.py] [_log()] userauth is OK
2025-09-29T10:22:36.958 [DEBUG] [Thread-153303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:22:36.958 [DEBUG] [Thread-153303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:22:36.958 [DEBUG] [Thread-153303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:22:36.958 [DEBUG] [Thread-153303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:22:36.981 [INFO] [Thread-153303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:22:36.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:22:36.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:22:37.936 [DEBUG] [Thread-153303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:22:37.936 [DEBUG] [Thread-153303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:22:37.985 [DEBUG] [Thread-153303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:22:37.985 [DEBUG] [Thread-153303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:22:37.993 [DEBUG] [Thread-153303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:22:38.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:22:38.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:22:38.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:22:38.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:22:38.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:22:38.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:22:38.026 [DEBUG] [Thread-153303] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:41.995 [DEBUG] [Thread-153305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:22:48.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:22:48.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:22:48.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:22:48.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 22, 42), 7.78, 58.59, 0.0, 23.54, 10.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:22:48.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:22:42
2025-09-29T10:22:48.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:22:48.893 [DEBUG] [Thread-153306] [transport.py] [_log()] starting thread (client mode): 0x2b9bb0d0
2025-09-29T10:22:48.893 [DEBUG] [Thread-153306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:22:48.910 [DEBUG] [Thread-153306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:22:48.910 [INFO] [Thread-153306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] client lang: <none>
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] server lang: <none>
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] kex follows: False
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] Compression: none
2025-09-29T10:22:48.913 [DEBUG] [Thread-153306] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:22:48.926 [DEBUG] [Thread-153306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:22:48.927 [DEBUG] [Thread-153306] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:22:48.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:22:48.927 [DEBUG] [Thread-153306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:22:48.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:22:48.928 [DEBUG] [Thread-153306] [transport.py] [_log()] userauth is OK
2025-09-29T10:22:48.928 [DEBUG] [Thread-153306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:22:48.928 [DEBUG] [Thread-153306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:22:48.928 [DEBUG] [Thread-153306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:22:48.928 [DEBUG] [Thread-153306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:22:48.940 [INFO] [Thread-153306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:22:48.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:22:49.603 [DEBUG] [Thread-153306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:22:49.603 [DEBUG] [Thread-153306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:22:49.603 [DEBUG] [Thread-153306] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:22:49.644 [DEBUG] [Thread-153306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:22:49.644 [DEBUG] [Thread-153306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:22:49.647 [DEBUG] [Thread-153306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:22:49.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:22:49.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:22:49.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:22:49.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:22:49.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:22:49.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:22:49.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.349032 -999.00  +10.70  20.46     65   +4.40 1 1 1 1 1   888    0 7.23 44.47 ----- 19.2 20.5 159.8 31.2 17.4 -25.9 16.0 -25.6 15.1 -23.8 16.2 -25.1
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.349032
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:22:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:22:42', tmtdew=7.78, humidity=58.59, cloud=0.0, wind=23.54, temperature=10.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:22:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:22:49.668 [DEBUG] [Thread-153306] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:49.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:22:49.750 [DEBUG] [Thread-153309] [transport.py] [_log()] starting thread (client mode): 0x2b91e3b0
2025-09-29T10:22:49.750 [DEBUG] [Thread-153309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:22:49.767 [DEBUG] [Thread-153309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:22:49.767 [INFO] [Thread-153309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] client lang: <none>
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] server lang: <none>
2025-09-29T10:22:49.774 [DEBUG] [Thread-153309] [transport.py] [_log()] kex follows: False
2025-09-29T10:22:49.775 [DEBUG] [Thread-153309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:22:49.775 [DEBUG] [Thread-153309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:22:49.775 [DEBUG] [Thread-153309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:22:49.775 [DEBUG] [Thread-153309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:22:49.775 [DEBUG] [Thread-153309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:22:49.775 [DEBUG] [Thread-153309] [transport.py] [_log()] Compression: none
2025-09-29T10:22:49.775 [DEBUG] [Thread-153309] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:22:49.831 [DEBUG] [Thread-153309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:22:49.831 [DEBUG] [Thread-153309] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:22:49.831 [DEBUG] [Thread-153309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:22:49.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:22:49.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:22:49.887 [DEBUG] [Thread-153309] [transport.py] [_log()] userauth is OK
2025-09-29T10:22:49.887 [DEBUG] [Thread-153309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:22:49.887 [DEBUG] [Thread-153309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:22:49.887 [DEBUG] [Thread-153309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:22:49.887 [DEBUG] [Thread-153309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:22:49.901 [INFO] [Thread-153309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:22:49.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:22:49.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:22:50.897 [DEBUG] [Thread-153309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:22:50.897 [DEBUG] [Thread-153309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:22:50.945 [DEBUG] [Thread-153309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:22:50.945 [DEBUG] [Thread-153309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:22:50.954 [DEBUG] [Thread-153309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:22:50.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:22:50.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:22:50.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:22:50.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:22:50.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:22:50.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:22:50.985 [DEBUG] [Thread-153309] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:22:57.031 [DEBUG] [Thread-153311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:23:00.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:23:00.988 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:23:00.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:23:01.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 22, 42), 7.78, 58.59, 0.0, 23.54, 10.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:23:01.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:22:42
2025-09-29T10:23:01.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:23:01.825 [DEBUG] [Thread-153312] [transport.py] [_log()] starting thread (client mode): 0x2e38c640
2025-09-29T10:23:01.825 [DEBUG] [Thread-153312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:01.846 [DEBUG] [Thread-153312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:23:01.846 [INFO] [Thread-153312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:23:01.849 [DEBUG] [Thread-153312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:01.850 [DEBUG] [Thread-153312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:01.851 [DEBUG] [Thread-153312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:01.851 [DEBUG] [Thread-153312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:01.851 [DEBUG] [Thread-153312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:01.851 [DEBUG] [Thread-153312] [transport.py] [_log()] Compression: none
2025-09-29T10:23:01.851 [DEBUG] [Thread-153312] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:01.869 [DEBUG] [Thread-153312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:01.870 [DEBUG] [Thread-153312] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:01.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:23:01.871 [DEBUG] [Thread-153312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:23:01.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:01.874 [DEBUG] [Thread-153312] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:01.874 [DEBUG] [Thread-153312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:01.874 [DEBUG] [Thread-153312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:01.874 [DEBUG] [Thread-153312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:23:01.874 [DEBUG] [Thread-153312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:01.897 [INFO] [Thread-153312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:01.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:02.656 [DEBUG] [Thread-153312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:02.656 [DEBUG] [Thread-153312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:02.657 [DEBUG] [Thread-153312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:23:02.697 [DEBUG] [Thread-153312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:02.697 [DEBUG] [Thread-153312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:02.699 [DEBUG] [Thread-153312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:02.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:02.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:23:02.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:23:02.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:23:02.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:02.721 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:23:02.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:02.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:02.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:23:02.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.349032 -999.00  +10.70  20.46     65   +4.40 1 1 1 1 1   888    0 7.23 44.47 ----- 19.2 20.5 159.8 31.2 17.4 -25.9 16.0 -25.6 15.1 -23.8 16.2 -25.1
2025-09-29T10:23:02.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:23:02.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:23:02.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.349032
2025-09-29T10:23:02.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:23:02.723 [DEBUG] [Thread-153312] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:02.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:23:02.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:23:02.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:23:02.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:23:02.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:22:42', tmtdew=7.78, humidity=58.59, cloud=0.0, wind=23.54, temperature=10.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:22:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:23:02.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:23:02.823 [DEBUG] [Thread-153315] [transport.py] [_log()] starting thread (client mode): 0x2b9c3d90
2025-09-29T10:23:02.823 [DEBUG] [Thread-153315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:02.838 [DEBUG] [Thread-153315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:23:02.838 [INFO] [Thread-153315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:23:02.845 [DEBUG] [Thread-153315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] Compression: none
2025-09-29T10:23:02.846 [DEBUG] [Thread-153315] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:02.902 [DEBUG] [Thread-153315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:02.903 [DEBUG] [Thread-153315] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:02.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:23:02.904 [DEBUG] [Thread-153315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:23:02.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:02.962 [DEBUG] [Thread-153315] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:02.963 [DEBUG] [Thread-153315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:02.963 [DEBUG] [Thread-153315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:02.963 [DEBUG] [Thread-153315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:23:02.963 [DEBUG] [Thread-153315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:02.985 [INFO] [Thread-153315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:02.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:23:02.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:04.017 [DEBUG] [Thread-153315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:04.017 [DEBUG] [Thread-153315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:04.065 [DEBUG] [Thread-153315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:04.065 [DEBUG] [Thread-153315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:04.074 [DEBUG] [Thread-153315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:04.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:04.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:23:04.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:23:04.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:04.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:04.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:04.109 [DEBUG] [Thread-153315] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:12.076 [DEBUG] [Thread-153317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:23:14.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:23:14.112 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:23:14.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:23:14.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 22, 42), 7.78, 58.59, 0.0, 23.54, 10.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:23:14.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:22:42
2025-09-29T10:23:14.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:23:14.957 [DEBUG] [Thread-153318] [transport.py] [_log()] starting thread (client mode): 0x2e38c640
2025-09-29T10:23:14.958 [DEBUG] [Thread-153318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:14.977 [DEBUG] [Thread-153318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:23:14.977 [INFO] [Thread-153318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:14.980 [DEBUG] [Thread-153318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:14.981 [DEBUG] [Thread-153318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:14.981 [DEBUG] [Thread-153318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:14.981 [DEBUG] [Thread-153318] [transport.py] [_log()] Compression: none
2025-09-29T10:23:14.981 [DEBUG] [Thread-153318] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:14.994 [DEBUG] [Thread-153318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:14.994 [DEBUG] [Thread-153318] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:14.994 [DEBUG] [Thread-153318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:23:14.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:23:14.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:14.995 [DEBUG] [Thread-153318] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:14.995 [DEBUG] [Thread-153318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:14.995 [DEBUG] [Thread-153318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:14.995 [DEBUG] [Thread-153318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:23:14.995 [DEBUG] [Thread-153318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:15.005 [INFO] [Thread-153318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:15.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:15.839 [DEBUG] [Thread-153318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:15.839 [DEBUG] [Thread-153318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:15.839 [DEBUG] [Thread-153318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:23:15.880 [DEBUG] [Thread-153318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:15.880 [DEBUG] [Thread-153318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:15.882 [DEBUG] [Thread-153318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:15.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:15.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:23:15.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:23:15.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:23:15.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:15.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:23:15.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:15.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:23:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.349032 -999.00  +10.70  20.46     65   +4.40 1 1 1 1 1   888    0 7.23 44.47 ----- 19.2 20.5 159.8 31.2 17.4 -25.9 16.0 -25.6 15.1 -23.8 16.2 -25.1
2025-09-29T10:23:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:23:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:23:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.349032
2025-09-29T10:23:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:23:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:23:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:23:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:23:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:23:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:22:42', tmtdew=7.78, humidity=58.59, cloud=0.0, wind=23.54, temperature=10.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:22:36.365', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:23:15.900 [DEBUG] [Thread-153318] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:15.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:23:15.984 [DEBUG] [Thread-153321] [transport.py] [_log()] starting thread (client mode): 0x2b91c910
2025-09-29T10:23:15.984 [DEBUG] [Thread-153321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:15.998 [DEBUG] [Thread-153321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:23:15.998 [INFO] [Thread-153321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] Compression: none
2025-09-29T10:23:16.006 [DEBUG] [Thread-153321] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:16.064 [DEBUG] [Thread-153321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:16.064 [DEBUG] [Thread-153321] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:16.065 [DEBUG] [Thread-153321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:23:16.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:23:16.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:16.121 [DEBUG] [Thread-153321] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:16.121 [DEBUG] [Thread-153321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:16.121 [DEBUG] [Thread-153321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:16.121 [DEBUG] [Thread-153321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:23:16.121 [DEBUG] [Thread-153321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:16.136 [INFO] [Thread-153321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:16.136 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:23:16.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:17.087 [DEBUG] [Thread-153321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:17.087 [DEBUG] [Thread-153321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:17.136 [DEBUG] [Thread-153321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:17.136 [DEBUG] [Thread-153321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:17.145 [DEBUG] [Thread-153321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:17.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:17.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:23:17.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:23:17.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:17.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:17.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:17.184 [DEBUG] [Thread-153321] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:27.104 [DEBUG] [Thread-153323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:23:27.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:23:27.183 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:23:27.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:23:27.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 23, 14), 7.83, 58.36, 0.0, 23.47, 10.64, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:23:27.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:23:14
2025-09-29T10:23:27.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:23:28.053 [DEBUG] [Thread-153324] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-29T10:23:28.053 [DEBUG] [Thread-153324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:28.073 [DEBUG] [Thread-153324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:23:28.073 [INFO] [Thread-153324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:23:28.074 [DEBUG] [Thread-153324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] Compression: none
2025-09-29T10:23:28.075 [DEBUG] [Thread-153324] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:28.083 [DEBUG] [Thread-153324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:28.083 [DEBUG] [Thread-153324] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:28.083 [DEBUG] [Thread-153324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:23:28.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:23:28.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:28.084 [DEBUG] [Thread-153324] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:28.084 [DEBUG] [Thread-153324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:28.084 [DEBUG] [Thread-153324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:28.084 [DEBUG] [Thread-153324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:23:28.084 [DEBUG] [Thread-153324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:28.103 [INFO] [Thread-153324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:28.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:28.712 [DEBUG] [Thread-153324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:28.712 [DEBUG] [Thread-153324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:28.712 [DEBUG] [Thread-153324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:23:28.753 [DEBUG] [Thread-153324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:28.753 [DEBUG] [Thread-153324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:28.756 [DEBUG] [Thread-153324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:28.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:28.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:23:28.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:23:28.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:23:28.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:28.772 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:23:28.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:28.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:28.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:23:28.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.349379 -999.00  +10.60  22.76     65   +4.30 1 1 1 1 1   888    0 7.15 43.46 ----- 26.5 22.8 164.4 28.3 17.4 -25.3 16.0 -24.6 15.1 -24.7 16.2 -26.2
2025-09-29T10:23:28.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:23:28.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:23:28.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.349379
2025-09-29T10:23:28.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:23:28.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:23:28.772 [DEBUG] [Thread-153324] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:28.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:23:28.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:23:28.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:23:28.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:23:14', tmtdew=7.83, humidity=58.36, cloud=0.0, wind=23.47, temperature=10.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:23:06.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:23:28.848 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:23:28.858 [DEBUG] [Thread-153327] [transport.py] [_log()] starting thread (client mode): 0x2b9c3070
2025-09-29T10:23:28.858 [DEBUG] [Thread-153327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:28.873 [DEBUG] [Thread-153327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:23:28.873 [INFO] [Thread-153327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] Compression: none
2025-09-29T10:23:28.881 [DEBUG] [Thread-153327] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:28.939 [DEBUG] [Thread-153327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:28.939 [DEBUG] [Thread-153327] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:28.939 [DEBUG] [Thread-153327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:23:28.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:23:28.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:28.996 [DEBUG] [Thread-153327] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:28.997 [DEBUG] [Thread-153327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:28.997 [DEBUG] [Thread-153327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:28.997 [DEBUG] [Thread-153327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:23:28.997 [DEBUG] [Thread-153327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:29.013 [INFO] [Thread-153327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:29.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:23:29.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:29.462 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:23:29.463 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:23:29.971 [DEBUG] [Thread-153327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:29.971 [DEBUG] [Thread-153327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:30.019 [DEBUG] [Thread-153327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:30.019 [DEBUG] [Thread-153327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:30.027 [DEBUG] [Thread-153327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:30.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:30.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:23:30.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:23:30.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:30.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:30.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:30.060 [DEBUG] [Thread-153327] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:32.637 [DEBUG] [Thread-153329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:23:40.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:23:40.064 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:23:40.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:23:40.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 23, 14), 7.83, 58.36, 0.0, 23.47, 10.64, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:23:40.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:23:14
2025-09-29T10:23:40.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:23:40.914 [DEBUG] [Thread-153330] [transport.py] [_log()] starting thread (client mode): 0x28706cb0
2025-09-29T10:23:40.914 [DEBUG] [Thread-153330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:40.934 [DEBUG] [Thread-153330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:23:40.934 [INFO] [Thread-153330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:40.937 [DEBUG] [Thread-153330] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:40.938 [DEBUG] [Thread-153330] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:40.938 [DEBUG] [Thread-153330] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:40.938 [DEBUG] [Thread-153330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:40.938 [DEBUG] [Thread-153330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:40.938 [DEBUG] [Thread-153330] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:40.938 [DEBUG] [Thread-153330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:40.938 [DEBUG] [Thread-153330] [transport.py] [_log()] Compression: none
2025-09-29T10:23:40.938 [DEBUG] [Thread-153330] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:40.952 [DEBUG] [Thread-153330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:40.953 [DEBUG] [Thread-153330] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:40.953 [DEBUG] [Thread-153330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:23:40.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:23:40.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:40.955 [DEBUG] [Thread-153330] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:40.955 [DEBUG] [Thread-153330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:40.956 [DEBUG] [Thread-153330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:40.956 [DEBUG] [Thread-153330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:23:40.956 [DEBUG] [Thread-153330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:40.979 [INFO] [Thread-153330] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:40.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:41.765 [DEBUG] [Thread-153330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:41.765 [DEBUG] [Thread-153330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:41.766 [DEBUG] [Thread-153330] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:23:41.806 [DEBUG] [Thread-153330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:41.806 [DEBUG] [Thread-153330] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:41.808 [DEBUG] [Thread-153330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:41.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:41.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:23:41.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:23:41.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:23:41.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:41.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:23:41.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:41.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:41.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:23:41.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.349379 -999.00  +10.60  22.76     65   +4.30 1 1 1 1 1   888    0 7.15 43.46 ----- 26.5 22.8 164.4 28.3 17.4 -25.3 16.0 -24.6 15.1 -24.7 16.2 -26.2
2025-09-29T10:23:41.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:23:41.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:23:41.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.349379
2025-09-29T10:23:41.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:23:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:23:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:23:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:23:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:23:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:23:14', tmtdew=7.83, humidity=58.36, cloud=0.0, wind=23.47, temperature=10.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:23:06.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:23:41.834 [DEBUG] [Thread-153330] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:41.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:23:41.931 [DEBUG] [Thread-153333] [transport.py] [_log()] starting thread (client mode): 0x28704760
2025-09-29T10:23:41.931 [DEBUG] [Thread-153333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:41.946 [DEBUG] [Thread-153333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:23:41.946 [INFO] [Thread-153333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:23:41.954 [DEBUG] [Thread-153333] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:41.954 [DEBUG] [Thread-153333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:23:41.954 [DEBUG] [Thread-153333] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] Compression: none
2025-09-29T10:23:41.955 [DEBUG] [Thread-153333] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:42.011 [DEBUG] [Thread-153333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:42.012 [DEBUG] [Thread-153333] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:42.012 [DEBUG] [Thread-153333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:23:42.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:23:42.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:42.068 [DEBUG] [Thread-153333] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:42.068 [DEBUG] [Thread-153333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:42.068 [DEBUG] [Thread-153333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:42.068 [DEBUG] [Thread-153333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:23:42.068 [DEBUG] [Thread-153333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:42.088 [INFO] [Thread-153333] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:42.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:23:42.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:42.132 [DEBUG] [Thread-153335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:23:43.101 [DEBUG] [Thread-153333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:43.101 [DEBUG] [Thread-153333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:43.149 [DEBUG] [Thread-153333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:43.149 [DEBUG] [Thread-153333] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:43.159 [DEBUG] [Thread-153333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:43.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:43.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:23:43.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:23:43.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:43.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:43.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:43.193 [DEBUG] [Thread-153333] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:53.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:23:53.187 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:23:53.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:23:53.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 23, 46), 7.85, 58.49, 0.0, 22.29, 10.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:23:53.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:23:46
2025-09-29T10:23:53.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:23:54.042 [DEBUG] [Thread-153336] [transport.py] [_log()] starting thread (client mode): 0x287070d0
2025-09-29T10:23:54.042 [DEBUG] [Thread-153336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:54.062 [DEBUG] [Thread-153336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:23:54.062 [INFO] [Thread-153336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:54.063 [DEBUG] [Thread-153336] [transport.py] [_log()] Compression: none
2025-09-29T10:23:54.064 [DEBUG] [Thread-153336] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:54.071 [DEBUG] [Thread-153336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:54.072 [DEBUG] [Thread-153336] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:54.072 [DEBUG] [Thread-153336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:23:54.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:23:54.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:54.073 [DEBUG] [Thread-153336] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:54.073 [DEBUG] [Thread-153336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:54.074 [DEBUG] [Thread-153336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:54.074 [DEBUG] [Thread-153336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:23:54.074 [DEBUG] [Thread-153336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:54.091 [INFO] [Thread-153336] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:54.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:54.779 [DEBUG] [Thread-153336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:54.780 [DEBUG] [Thread-153336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:54.780 [DEBUG] [Thread-153336] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:23:54.820 [DEBUG] [Thread-153336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:54.820 [DEBUG] [Thread-153336] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:54.822 [DEBUG] [Thread-153336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:54.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:54.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:23:54.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:23:54.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:23:54.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:54.840 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:23:54.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:54.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:54.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:23:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.349726 -999.00  +10.40  14.19     65   +4.30 1 1 1 1 1   888    0 7.02 39.55 ----- 13.3 14.2 152.8 30.6 17.4 -23.9 15.9 -24.3 15.0 -24.7 16.2 -24.2
2025-09-29T10:23:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:23:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:23:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.349726
2025-09-29T10:23:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:23:54.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:23:54.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:23:54.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:23:54.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:23:54.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:23:46', tmtdew=7.85, humidity=58.49, cloud=0.0, wind=22.29, temperature=10.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:23:36.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:23:54.842 [DEBUG] [Thread-153336] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:54.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:23:54.935 [DEBUG] [Thread-153339] [transport.py] [_log()] starting thread (client mode): 0x2e34a5f0
2025-09-29T10:23:54.935 [DEBUG] [Thread-153339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:23:54.950 [DEBUG] [Thread-153339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:23:54.950 [INFO] [Thread-153339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:23:54.957 [DEBUG] [Thread-153339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] client lang: <none>
2025-09-29T10:23:54.958 [DEBUG] [Thread-153339] [transport.py] [_log()] server lang: <none>
2025-09-29T10:23:54.959 [DEBUG] [Thread-153339] [transport.py] [_log()] kex follows: False
2025-09-29T10:23:54.959 [DEBUG] [Thread-153339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:23:54.959 [DEBUG] [Thread-153339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:23:54.959 [DEBUG] [Thread-153339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:23:54.959 [DEBUG] [Thread-153339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:23:54.959 [DEBUG] [Thread-153339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:23:54.959 [DEBUG] [Thread-153339] [transport.py] [_log()] Compression: none
2025-09-29T10:23:54.959 [DEBUG] [Thread-153339] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:23:55.015 [DEBUG] [Thread-153339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:23:55.016 [DEBUG] [Thread-153339] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:23:55.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:23:55.017 [DEBUG] [Thread-153339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:23:55.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:23:55.071 [DEBUG] [Thread-153339] [transport.py] [_log()] userauth is OK
2025-09-29T10:23:55.071 [DEBUG] [Thread-153339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:23:55.072 [DEBUG] [Thread-153339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:23:55.072 [DEBUG] [Thread-153339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:23:55.072 [DEBUG] [Thread-153339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:23:55.095 [INFO] [Thread-153339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:23:55.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:23:55.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:23:56.049 [DEBUG] [Thread-153339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:23:56.049 [DEBUG] [Thread-153339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:23:56.097 [DEBUG] [Thread-153339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:23:56.097 [DEBUG] [Thread-153339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:23:56.106 [DEBUG] [Thread-153339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:23:56.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:23:56.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:23:56.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:23:56.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:23:56.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:23:56.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:23:56.140 [DEBUG] [Thread-153339] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:23:57.181 [DEBUG] [Thread-153341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:24:06.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:24:06.142 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:24:06.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:24:06.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 23, 46), 7.85, 58.49, 0.0, 22.29, 10.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:24:06.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:23:46
2025-09-29T10:24:06.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:24:07.007 [DEBUG] [Thread-153342] [transport.py] [_log()] starting thread (client mode): 0x2b9c3430
2025-09-29T10:24:07.007 [DEBUG] [Thread-153342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:07.031 [DEBUG] [Thread-153342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:24:07.031 [INFO] [Thread-153342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] Compression: none
2025-09-29T10:24:07.035 [DEBUG] [Thread-153342] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:07.047 [DEBUG] [Thread-153342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:07.048 [DEBUG] [Thread-153342] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:07.048 [DEBUG] [Thread-153342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:24:07.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:24:07.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:07.049 [DEBUG] [Thread-153342] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:07.049 [DEBUG] [Thread-153342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:07.049 [DEBUG] [Thread-153342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:07.049 [DEBUG] [Thread-153342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:24:07.049 [DEBUG] [Thread-153342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:07.068 [INFO] [Thread-153342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:07.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:07.767 [DEBUG] [Thread-153342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:07.767 [DEBUG] [Thread-153342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:07.767 [DEBUG] [Thread-153342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:24:07.808 [DEBUG] [Thread-153342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:07.808 [DEBUG] [Thread-153342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:07.810 [DEBUG] [Thread-153342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:07.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:07.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:24:07.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:24:07.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:24:07.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:07.828 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:24:07.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:07.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:07.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:24:07.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.349726 -999.00  +10.40  14.19     65   +4.30 1 1 1 1 1   888    0 7.02 39.55 ----- 13.3 14.2 152.8 30.6 17.4 -23.9 15.9 -24.3 15.0 -24.7 16.2 -24.2
2025-09-29T10:24:07.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:24:07.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:24:07.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.349726
2025-09-29T10:24:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:24:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:24:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:24:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:24:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:24:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:23:46', tmtdew=7.85, humidity=58.49, cloud=0.0, wind=22.29, temperature=10.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:23:36.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:24:07.829 [DEBUG] [Thread-153342] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:24:07.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:24:07.914 [DEBUG] [Thread-153345] [transport.py] [_log()] starting thread (client mode): 0x2b9c2710
2025-09-29T10:24:07.914 [DEBUG] [Thread-153345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:07.929 [DEBUG] [Thread-153345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:24:07.930 [INFO] [Thread-153345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:07.937 [DEBUG] [Thread-153345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:07.938 [DEBUG] [Thread-153345] [transport.py] [_log()] Compression: none
2025-09-29T10:24:07.938 [DEBUG] [Thread-153345] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:07.993 [DEBUG] [Thread-153345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:07.993 [DEBUG] [Thread-153345] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:07.993 [DEBUG] [Thread-153345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:24:07.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:24:07.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:08.050 [DEBUG] [Thread-153345] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:08.050 [DEBUG] [Thread-153345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:08.050 [DEBUG] [Thread-153345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:08.050 [DEBUG] [Thread-153345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:24:08.050 [DEBUG] [Thread-153345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:08.064 [INFO] [Thread-153345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:08.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:24:08.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:09.042 [DEBUG] [Thread-153345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:09.042 [DEBUG] [Thread-153345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:09.090 [DEBUG] [Thread-153345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:09.090 [DEBUG] [Thread-153345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:09.099 [DEBUG] [Thread-153345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:09.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:09.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:24:09.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:24:09.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:09.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:09.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:09.133 [DEBUG] [Thread-153345] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:24:12.225 [DEBUG] [Thread-153347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:24:19.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:24:19.136 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:24:19.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:24:19.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 23, 46), 7.85, 58.49, 0.0, 22.29, 10.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:24:19.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:23:46
2025-09-29T10:24:19.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:24:20.025 [DEBUG] [Thread-153348] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d70
2025-09-29T10:24:20.025 [DEBUG] [Thread-153348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:20.046 [DEBUG] [Thread-153348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:24:20.047 [INFO] [Thread-153348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:20.050 [DEBUG] [Thread-153348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:20.051 [DEBUG] [Thread-153348] [transport.py] [_log()] Compression: none
2025-09-29T10:24:20.051 [DEBUG] [Thread-153348] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:20.068 [DEBUG] [Thread-153348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:20.068 [DEBUG] [Thread-153348] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:20.068 [DEBUG] [Thread-153348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:24:20.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:24:20.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:20.069 [DEBUG] [Thread-153348] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:20.069 [DEBUG] [Thread-153348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:20.069 [DEBUG] [Thread-153348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:20.069 [DEBUG] [Thread-153348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:24:20.069 [DEBUG] [Thread-153348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:20.080 [INFO] [Thread-153348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:20.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:20.721 [DEBUG] [Thread-153348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:20.721 [DEBUG] [Thread-153348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:20.722 [DEBUG] [Thread-153348] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:24:20.762 [DEBUG] [Thread-153348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:20.762 [DEBUG] [Thread-153348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:20.765 [DEBUG] [Thread-153348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:20.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:20.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:24:20.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:24:20.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:24:20.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:20.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:24:20.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:20.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:20.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:24:20.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.349726 -999.00  +10.40  14.19     65   +4.30 1 1 1 1 1   888    0 7.02 39.55 ----- 13.3 14.2 152.8 30.6 17.4 -23.9 15.9 -24.3 15.0 -24.7 16.2 -24.2
2025-09-29T10:24:20.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:24:20.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:24:20.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.349726
2025-09-29T10:24:20.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:24:20.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:24:20.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:24:20.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:24:20.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:24:20.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:23:46', tmtdew=7.85, humidity=58.49, cloud=0.0, wind=22.29, temperature=10.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:23:36.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:24:20.791 [DEBUG] [Thread-153348] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:24:20.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:24:20.890 [DEBUG] [Thread-153351] [transport.py] [_log()] starting thread (client mode): 0x2b9b8670
2025-09-29T10:24:20.890 [DEBUG] [Thread-153351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:20.905 [DEBUG] [Thread-153351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:24:20.905 [INFO] [Thread-153351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:24:20.912 [DEBUG] [Thread-153351] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:20.913 [DEBUG] [Thread-153351] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:20.914 [DEBUG] [Thread-153351] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:20.914 [DEBUG] [Thread-153351] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:20.914 [DEBUG] [Thread-153351] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:20.914 [DEBUG] [Thread-153351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:20.914 [DEBUG] [Thread-153351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:20.914 [DEBUG] [Thread-153351] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:20.914 [DEBUG] [Thread-153351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:20.914 [DEBUG] [Thread-153351] [transport.py] [_log()] Compression: none
2025-09-29T10:24:20.915 [DEBUG] [Thread-153351] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:20.975 [DEBUG] [Thread-153351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:20.975 [DEBUG] [Thread-153351] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:20.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:24:20.977 [DEBUG] [Thread-153351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:24:20.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:21.034 [DEBUG] [Thread-153351] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:21.034 [DEBUG] [Thread-153351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:21.034 [DEBUG] [Thread-153351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:21.034 [DEBUG] [Thread-153351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:24:21.035 [DEBUG] [Thread-153351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:21.056 [INFO] [Thread-153351] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:21.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:24:21.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:21.988 [DEBUG] [Thread-153351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:21.988 [DEBUG] [Thread-153351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:22.036 [DEBUG] [Thread-153351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:22.036 [DEBUG] [Thread-153351] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:22.045 [DEBUG] [Thread-153351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:22.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:22.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:24:22.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:24:22.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:22.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:22.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:22.080 [DEBUG] [Thread-153351] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:24:27.254 [DEBUG] [Thread-153353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:24:29.601 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:24:29.603 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:24:32.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:24:32.076 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:24:32.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:24:32.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 24, 18), 7.76, 58.86, 0.0, 20.5, 10.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:24:32.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:24:18
2025-09-29T10:24:32.691 [DEBUG] [Thread-153354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:24:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:24:32.914 [DEBUG] [Thread-153355] [transport.py] [_log()] starting thread (client mode): 0x2b9bbcd0
2025-09-29T10:24:32.914 [DEBUG] [Thread-153355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:32.935 [DEBUG] [Thread-153355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:24:32.935 [INFO] [Thread-153355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:24:32.938 [DEBUG] [Thread-153355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:32.938 [DEBUG] [Thread-153355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:24:32.938 [DEBUG] [Thread-153355] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:32.938 [DEBUG] [Thread-153355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:32.938 [DEBUG] [Thread-153355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] Compression: none
2025-09-29T10:24:32.939 [DEBUG] [Thread-153355] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:32.955 [DEBUG] [Thread-153355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:32.956 [DEBUG] [Thread-153355] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:32.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:24:32.957 [DEBUG] [Thread-153355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:24:32.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:32.958 [DEBUG] [Thread-153355] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:32.959 [DEBUG] [Thread-153355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:32.959 [DEBUG] [Thread-153355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:32.959 [DEBUG] [Thread-153355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:24:32.959 [DEBUG] [Thread-153355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:32.994 [INFO] [Thread-153355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:32.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:33.647 [DEBUG] [Thread-153355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:33.648 [DEBUG] [Thread-153355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:33.648 [DEBUG] [Thread-153355] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:24:33.688 [DEBUG] [Thread-153355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:33.688 [DEBUG] [Thread-153355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:33.692 [DEBUG] [Thread-153355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:33.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:33.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:24:33.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:24:33.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:24:33.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:33.713 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:24:33.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:33.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:24:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.350073 -999.00  +10.80  19.68     65   +4.50 1 1 1 1 1   888    0 7.05 40.08 ----- 20.7 19.7 159.8 27.4 17.6 -24.3 16.2 -24.1 15.1 -24.5 16.4 -23.6
2025-09-29T10:24:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:24:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:24:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.350073
2025-09-29T10:24:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:24:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:24:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:24:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:24:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:24:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:24:18', tmtdew=7.76, humidity=58.86, cloud=0.0, wind=20.5, temperature=10.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:24:06.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:24:33.716 [DEBUG] [Thread-153355] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:24:33.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:24:33.944 [DEBUG] [Thread-153358] [transport.py] [_log()] starting thread (client mode): 0x2e361450
2025-09-29T10:24:33.945 [DEBUG] [Thread-153358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:33.959 [DEBUG] [Thread-153358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:24:33.959 [INFO] [Thread-153358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:24:33.967 [DEBUG] [Thread-153358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:33.967 [DEBUG] [Thread-153358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:24:33.967 [DEBUG] [Thread-153358] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:33.967 [DEBUG] [Thread-153358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:33.967 [DEBUG] [Thread-153358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:33.968 [DEBUG] [Thread-153358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:33.969 [DEBUG] [Thread-153358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:33.969 [DEBUG] [Thread-153358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:33.969 [DEBUG] [Thread-153358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:33.969 [DEBUG] [Thread-153358] [transport.py] [_log()] Compression: none
2025-09-29T10:24:33.969 [DEBUG] [Thread-153358] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:34.025 [DEBUG] [Thread-153358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:34.025 [DEBUG] [Thread-153358] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:34.026 [DEBUG] [Thread-153358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:24:34.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:24:34.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:34.080 [DEBUG] [Thread-153358] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:34.081 [DEBUG] [Thread-153358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:34.081 [DEBUG] [Thread-153358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:34.081 [DEBUG] [Thread-153358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:24:34.081 [DEBUG] [Thread-153358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:34.100 [INFO] [Thread-153358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:34.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:24:34.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:35.110 [DEBUG] [Thread-153358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:35.110 [DEBUG] [Thread-153358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:35.158 [DEBUG] [Thread-153358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:35.158 [DEBUG] [Thread-153358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:35.167 [DEBUG] [Thread-153358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:35.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:35.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:24:35.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:24:35.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:35.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:35.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:35.202 [DEBUG] [Thread-153358] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:24:42.285 [DEBUG] [Thread-153360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:24:45.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:24:45.205 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:24:45.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:24:45.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 24, 18), 7.76, 58.86, 0.0, 20.5, 10.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:24:45.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:24:18
2025-09-29T10:24:45.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:24:46.068 [DEBUG] [Thread-153361] [transport.py] [_log()] starting thread (client mode): 0x2e34bfd0
2025-09-29T10:24:46.068 [DEBUG] [Thread-153361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:46.088 [DEBUG] [Thread-153361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:24:46.088 [INFO] [Thread-153361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] Compression: none
2025-09-29T10:24:46.090 [DEBUG] [Thread-153361] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:46.098 [DEBUG] [Thread-153361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:46.098 [DEBUG] [Thread-153361] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:46.098 [DEBUG] [Thread-153361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:24:46.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:24:46.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:46.098 [DEBUG] [Thread-153361] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:46.099 [DEBUG] [Thread-153361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:46.099 [DEBUG] [Thread-153361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:46.099 [DEBUG] [Thread-153361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:24:46.099 [DEBUG] [Thread-153361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:46.108 [INFO] [Thread-153361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:46.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:46.771 [DEBUG] [Thread-153361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:46.771 [DEBUG] [Thread-153361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:46.771 [DEBUG] [Thread-153361] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:24:46.812 [DEBUG] [Thread-153361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:46.813 [DEBUG] [Thread-153361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:46.815 [DEBUG] [Thread-153361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:46.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:46.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:24:46.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:24:46.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:24:46.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:46.838 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:24:46.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:46.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:46.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:24:46.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.350073 -999.00  +10.80  19.68     65   +4.50 1 1 1 1 1   888    0 7.05 40.08 ----- 20.7 19.7 159.8 27.4 17.6 -24.3 16.2 -24.1 15.1 -24.5 16.4 -23.6
2025-09-29T10:24:46.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:24:46.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:24:46.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.350073
2025-09-29T10:24:46.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:24:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:24:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:24:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:24:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:24:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:24:18', tmtdew=7.76, humidity=58.86, cloud=0.0, wind=20.5, temperature=10.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:24:06.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:24:46.840 [DEBUG] [Thread-153361] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:24:46.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:24:46.944 [DEBUG] [Thread-153364] [transport.py] [_log()] starting thread (client mode): 0x2e34b6d0
2025-09-29T10:24:46.944 [DEBUG] [Thread-153364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:46.965 [DEBUG] [Thread-153364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:24:46.965 [INFO] [Thread-153364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:24:46.972 [DEBUG] [Thread-153364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:46.972 [DEBUG] [Thread-153364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:46.973 [DEBUG] [Thread-153364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:46.974 [DEBUG] [Thread-153364] [transport.py] [_log()] Compression: none
2025-09-29T10:24:46.974 [DEBUG] [Thread-153364] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:47.032 [DEBUG] [Thread-153364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:47.032 [DEBUG] [Thread-153364] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:47.033 [DEBUG] [Thread-153364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:24:47.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:24:47.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:47.092 [DEBUG] [Thread-153364] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:47.092 [DEBUG] [Thread-153364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:47.092 [DEBUG] [Thread-153364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:47.092 [DEBUG] [Thread-153364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:24:47.092 [DEBUG] [Thread-153364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:47.112 [INFO] [Thread-153364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:47.112 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:24:47.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:48.197 [DEBUG] [Thread-153364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:48.197 [DEBUG] [Thread-153364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:48.245 [DEBUG] [Thread-153364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:48.245 [DEBUG] [Thread-153364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:48.254 [DEBUG] [Thread-153364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:48.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:48.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:24:48.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:24:48.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:48.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:48.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:48.289 [DEBUG] [Thread-153364] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:24:57.321 [DEBUG] [Thread-153366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:24:58.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:24:58.292 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:24:58.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:24:58.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 24, 50), 7.77, 58.44, 0.0, 24.81, 10.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:24:58.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:24:50
2025-09-29T10:24:58.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:24:59.127 [DEBUG] [Thread-153367] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d10
2025-09-29T10:24:59.127 [DEBUG] [Thread-153367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:24:59.147 [DEBUG] [Thread-153367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:24:59.147 [INFO] [Thread-153367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:24:59.149 [DEBUG] [Thread-153367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] client lang: <none>
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] server lang: <none>
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] kex follows: False
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] Compression: none
2025-09-29T10:24:59.150 [DEBUG] [Thread-153367] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:24:59.168 [DEBUG] [Thread-153367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:24:59.168 [DEBUG] [Thread-153367] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:24:59.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:24:59.169 [DEBUG] [Thread-153367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:24:59.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:24:59.170 [DEBUG] [Thread-153367] [transport.py] [_log()] userauth is OK
2025-09-29T10:24:59.171 [DEBUG] [Thread-153367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:24:59.171 [DEBUG] [Thread-153367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:24:59.171 [DEBUG] [Thread-153367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:24:59.171 [DEBUG] [Thread-153367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:24:59.195 [INFO] [Thread-153367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:24:59.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:24:59.849 [DEBUG] [Thread-153367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:24:59.849 [DEBUG] [Thread-153367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:24:59.849 [DEBUG] [Thread-153367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:24:59.889 [DEBUG] [Thread-153367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:24:59.889 [DEBUG] [Thread-153367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:24:59.892 [DEBUG] [Thread-153367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:24:59.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:24:59.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:24:59.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:24:59.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:24:59.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:24:59.916 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:24:59.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:24:59.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:24:59.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:24:59.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.350073 -999.00  +10.80  19.68     65   +4.50 1 1 1 1 1   888    0 7.05 40.08 ----- 20.7 19.7 159.8 27.4 17.6 -24.3 16.2 -24.1 15.1 -24.5 16.4 -23.6
2025-09-29T10:24:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:24:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:24:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.350073
2025-09-29T10:24:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:24:59.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:24:59.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:24:59.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:24:59.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:24:59.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:24:50', tmtdew=7.77, humidity=58.44, cloud=0.0, wind=24.81, temperature=10.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:24:06.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:24:59.919 [DEBUG] [Thread-153367] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:00.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:25:00.014 [DEBUG] [Thread-153370] [transport.py] [_log()] starting thread (client mode): 0x28704940
2025-09-29T10:25:00.014 [DEBUG] [Thread-153370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:00.030 [DEBUG] [Thread-153370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:25:00.030 [INFO] [Thread-153370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:25:00.037 [DEBUG] [Thread-153370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:00.037 [DEBUG] [Thread-153370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:25:00.037 [DEBUG] [Thread-153370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] Compression: none
2025-09-29T10:25:00.038 [DEBUG] [Thread-153370] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:00.094 [DEBUG] [Thread-153370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:00.095 [DEBUG] [Thread-153370] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:00.095 [DEBUG] [Thread-153370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:25:00.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:25:00.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:00.155 [DEBUG] [Thread-153370] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:00.155 [DEBUG] [Thread-153370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:00.155 [DEBUG] [Thread-153370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:00.155 [DEBUG] [Thread-153370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:25:00.155 [DEBUG] [Thread-153370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:00.174 [INFO] [Thread-153370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:00.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:25:00.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:01.161 [DEBUG] [Thread-153370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:01.162 [DEBUG] [Thread-153370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:01.209 [DEBUG] [Thread-153370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:01.209 [DEBUG] [Thread-153370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:01.218 [DEBUG] [Thread-153370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:01.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:01.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:25:01.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:25:01.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:01.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:01.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:01.252 [DEBUG] [Thread-153370] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:11.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:25:11.255 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:25:11.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:25:11.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 24, 50), 7.77, 58.44, 0.0, 24.81, 10.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:25:11.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:24:50
2025-09-29T10:25:11.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:25:12.086 [DEBUG] [Thread-153372] [transport.py] [_log()] starting thread (client mode): 0x287068c0
2025-09-29T10:25:12.086 [DEBUG] [Thread-153372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:12.106 [DEBUG] [Thread-153372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:25:12.107 [INFO] [Thread-153372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:25:12.110 [DEBUG] [Thread-153372] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:12.110 [DEBUG] [Thread-153372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] Compression: none
2025-09-29T10:25:12.111 [DEBUG] [Thread-153372] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:12.127 [DEBUG] [Thread-153372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:12.128 [DEBUG] [Thread-153372] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:12.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:25:12.129 [DEBUG] [Thread-153372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:25:12.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:12.131 [DEBUG] [Thread-153372] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:12.131 [DEBUG] [Thread-153372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:12.131 [DEBUG] [Thread-153372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:12.131 [DEBUG] [Thread-153372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:25:12.131 [DEBUG] [Thread-153372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:12.155 [INFO] [Thread-153372] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:12.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:12.353 [DEBUG] [Thread-153374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:25:13.566 [DEBUG] [Thread-153372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:13.567 [DEBUG] [Thread-153372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:13.567 [DEBUG] [Thread-153372] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:25:13.607 [DEBUG] [Thread-153372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:13.607 [DEBUG] [Thread-153372] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:13.610 [DEBUG] [Thread-153372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:13.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:13.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:25:13.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:25:13.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:25:13.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:13.766 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:25:13.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:13.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:13.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:25:13.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.350420 -999.00  +10.90  19.10     63   +4.30 1 1 1 1 1   888    0 7.09 36.63 ----- 22.8 19.1 159.8 26.1 17.7 -23.3 16.3 -23.5 15.3 -23.0 16.5 -25.5
2025-09-29T10:25:13.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:25:13.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:25:13.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.350420
2025-09-29T10:25:13.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:25:13.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:25:13.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:25:13.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:25:13.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:25:13.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:24:50', tmtdew=7.77, humidity=58.44, cloud=0.0, wind=24.81, temperature=10.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:24:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:25:13.769 [DEBUG] [Thread-153372] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:13.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:25:13.856 [DEBUG] [Thread-153376] [transport.py] [_log()] starting thread (client mode): 0x287060e0
2025-09-29T10:25:13.856 [DEBUG] [Thread-153376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:13.871 [DEBUG] [Thread-153376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:25:13.871 [INFO] [Thread-153376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:25:13.878 [DEBUG] [Thread-153376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:13.878 [DEBUG] [Thread-153376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] Compression: none
2025-09-29T10:25:13.879 [DEBUG] [Thread-153376] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:13.938 [DEBUG] [Thread-153376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:13.939 [DEBUG] [Thread-153376] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:13.939 [DEBUG] [Thread-153376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:25:13.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:25:13.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:13.994 [DEBUG] [Thread-153376] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:13.995 [DEBUG] [Thread-153376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:13.995 [DEBUG] [Thread-153376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:13.995 [DEBUG] [Thread-153376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:25:13.995 [DEBUG] [Thread-153376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:14.014 [INFO] [Thread-153376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:14.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:25:14.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:15.026 [DEBUG] [Thread-153376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:15.027 [DEBUG] [Thread-153376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:15.074 [DEBUG] [Thread-153376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:15.074 [DEBUG] [Thread-153376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:15.083 [DEBUG] [Thread-153376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:15.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:15.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:25:15.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:25:15.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:15.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:15.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:15.118 [DEBUG] [Thread-153376] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:25.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:25:25.121 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:25:25.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:25:25.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 25, 22), 7.9, 57.97, 0.0, 23.82, 10.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:25:25.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:25:22
2025-09-29T10:25:25.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:25:25.946 [DEBUG] [Thread-153378] [transport.py] [_log()] starting thread (client mode): 0x2b9c2620
2025-09-29T10:25:25.946 [DEBUG] [Thread-153378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:25.958 [DEBUG] [Thread-153378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:25:25.958 [INFO] [Thread-153378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:25:25.960 [DEBUG] [Thread-153378] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:25.960 [DEBUG] [Thread-153378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:25:25.960 [DEBUG] [Thread-153378] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:25.960 [DEBUG] [Thread-153378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:25.960 [DEBUG] [Thread-153378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] Compression: none
2025-09-29T10:25:25.961 [DEBUG] [Thread-153378] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:25.974 [DEBUG] [Thread-153378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:25.974 [DEBUG] [Thread-153378] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:25.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:25:25.975 [DEBUG] [Thread-153378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:25:25.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:25.976 [DEBUG] [Thread-153378] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:25.976 [DEBUG] [Thread-153378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:25.976 [DEBUG] [Thread-153378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:25.977 [DEBUG] [Thread-153378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:25:25.977 [DEBUG] [Thread-153378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:26.008 [INFO] [Thread-153378] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:26.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:26.666 [DEBUG] [Thread-153378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:26.666 [DEBUG] [Thread-153378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:26.666 [DEBUG] [Thread-153378] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:25:26.707 [DEBUG] [Thread-153378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:26.707 [DEBUG] [Thread-153378] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:26.710 [DEBUG] [Thread-153378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:26.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:26.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:25:26.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:25:26.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:25:26.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:26.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:25:26.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:26.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:25:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.350420 -999.00  +10.90  19.10     63   +4.30 1 1 1 1 1   888    0 7.09 36.63 ----- 22.8 19.1 159.8 26.1 17.7 -23.3 16.3 -23.5 15.3 -23.0 16.5 -25.5
2025-09-29T10:25:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:25:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:25:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.350420
2025-09-29T10:25:26.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:25:26.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:25:26.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:25:26.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:25:26.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:25:26.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:25:22', tmtdew=7.9, humidity=57.97, cloud=0.0, wind=23.82, temperature=10.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:24:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:25:26.735 [DEBUG] [Thread-153378] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:26.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:25:26.822 [DEBUG] [Thread-153381] [transport.py] [_log()] starting thread (client mode): 0x2b9b8a60
2025-09-29T10:25:26.822 [DEBUG] [Thread-153381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:26.838 [DEBUG] [Thread-153381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:25:26.838 [INFO] [Thread-153381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:25:26.845 [DEBUG] [Thread-153381] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:26.845 [DEBUG] [Thread-153381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:25:26.845 [DEBUG] [Thread-153381] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:26.845 [DEBUG] [Thread-153381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:26.845 [DEBUG] [Thread-153381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:26.845 [DEBUG] [Thread-153381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:26.845 [DEBUG] [Thread-153381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] Compression: none
2025-09-29T10:25:26.846 [DEBUG] [Thread-153381] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:26.905 [DEBUG] [Thread-153381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:26.905 [DEBUG] [Thread-153381] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:26.906 [DEBUG] [Thread-153381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:25:26.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:25:26.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:26.962 [DEBUG] [Thread-153381] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:26.962 [DEBUG] [Thread-153381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:26.962 [DEBUG] [Thread-153381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:26.962 [DEBUG] [Thread-153381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:25:26.962 [DEBUG] [Thread-153381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:26.981 [INFO] [Thread-153381] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:26.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:25:26.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:27.396 [DEBUG] [Thread-153383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:25:27.963 [DEBUG] [Thread-153381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:27.963 [DEBUG] [Thread-153381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:28.012 [DEBUG] [Thread-153381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:28.012 [DEBUG] [Thread-153381] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:28.021 [DEBUG] [Thread-153381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:28.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:28.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:25:28.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:25:28.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:28.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:28.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:28.057 [DEBUG] [Thread-153381] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:29.744 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:25:29.745 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:25:32.746 [DEBUG] [Thread-153384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:25:38.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:25:38.058 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:25:38.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:25:38.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 25, 22), 7.9, 57.97, 0.0, 23.82, 10.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:25:38.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:25:22
2025-09-29T10:25:38.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:25:38.877 [DEBUG] [Thread-153385] [transport.py] [_log()] starting thread (client mode): 0x2b9c16f0
2025-09-29T10:25:38.878 [DEBUG] [Thread-153385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:38.898 [DEBUG] [Thread-153385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:25:38.898 [INFO] [Thread-153385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:38.901 [DEBUG] [Thread-153385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:38.902 [DEBUG] [Thread-153385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:38.902 [DEBUG] [Thread-153385] [transport.py] [_log()] Compression: none
2025-09-29T10:25:38.902 [DEBUG] [Thread-153385] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:38.921 [DEBUG] [Thread-153385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:38.922 [DEBUG] [Thread-153385] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:38.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:25:38.923 [DEBUG] [Thread-153385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:25:38.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:38.925 [DEBUG] [Thread-153385] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:38.925 [DEBUG] [Thread-153385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:38.925 [DEBUG] [Thread-153385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:38.925 [DEBUG] [Thread-153385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:25:38.925 [DEBUG] [Thread-153385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:38.948 [INFO] [Thread-153385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:38.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:39.576 [DEBUG] [Thread-153385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:39.576 [DEBUG] [Thread-153385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:39.577 [DEBUG] [Thread-153385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:25:39.617 [DEBUG] [Thread-153385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:39.618 [DEBUG] [Thread-153385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:39.621 [DEBUG] [Thread-153385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:39.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:39.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:25:39.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:25:39.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:25:39.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:39.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:25:39.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:39.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:39.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:25:39.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.350420 -999.00  +10.90  19.10     63   +4.30 1 1 1 1 1   888    0 7.09 36.63 ----- 22.8 19.1 159.8 26.1 17.7 -23.3 16.3 -23.5 15.3 -23.0 16.5 -25.5
2025-09-29T10:25:39.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:25:39.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:25:39.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.350420
2025-09-29T10:25:39.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:25:39.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:25:39.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:25:39.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:25:39.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:25:39.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:25:22', tmtdew=7.9, humidity=57.97, cloud=0.0, wind=23.82, temperature=10.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:24:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:25:39.644 [DEBUG] [Thread-153385] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:39.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:25:39.740 [DEBUG] [Thread-153388] [transport.py] [_log()] starting thread (client mode): 0x2b9c2ec0
2025-09-29T10:25:39.740 [DEBUG] [Thread-153388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:39.755 [DEBUG] [Thread-153388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:25:39.755 [INFO] [Thread-153388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:25:39.763 [DEBUG] [Thread-153388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:39.763 [DEBUG] [Thread-153388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:25:39.763 [DEBUG] [Thread-153388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:39.763 [DEBUG] [Thread-153388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:39.763 [DEBUG] [Thread-153388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:39.763 [DEBUG] [Thread-153388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:39.763 [DEBUG] [Thread-153388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:39.764 [DEBUG] [Thread-153388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:39.765 [DEBUG] [Thread-153388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:39.765 [DEBUG] [Thread-153388] [transport.py] [_log()] Compression: none
2025-09-29T10:25:39.765 [DEBUG] [Thread-153388] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:39.821 [DEBUG] [Thread-153388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:39.821 [DEBUG] [Thread-153388] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:39.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:25:39.822 [DEBUG] [Thread-153388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:25:39.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:39.877 [DEBUG] [Thread-153388] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:39.877 [DEBUG] [Thread-153388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:39.877 [DEBUG] [Thread-153388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:39.878 [DEBUG] [Thread-153388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:25:39.878 [DEBUG] [Thread-153388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:39.899 [INFO] [Thread-153388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:39.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:25:39.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:40.829 [DEBUG] [Thread-153388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:40.830 [DEBUG] [Thread-153388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:40.877 [DEBUG] [Thread-153388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:40.877 [DEBUG] [Thread-153388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:40.886 [DEBUG] [Thread-153388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:40.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:40.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:25:40.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:25:40.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:40.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:40.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:40.920 [DEBUG] [Thread-153388] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:42.448 [DEBUG] [Thread-153390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:25:50.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:25:50.923 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:25:50.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:25:51.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 25, 22), 7.9, 57.97, 0.0, 23.82, 10.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:25:51.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:25:22
2025-09-29T10:25:51.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:25:51.743 [DEBUG] [Thread-153391] [transport.py] [_log()] starting thread (client mode): 0x287050c0
2025-09-29T10:25:51.744 [DEBUG] [Thread-153391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:51.764 [DEBUG] [Thread-153391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:25:51.764 [INFO] [Thread-153391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:25:51.767 [DEBUG] [Thread-153391] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] Compression: none
2025-09-29T10:25:51.768 [DEBUG] [Thread-153391] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:51.784 [DEBUG] [Thread-153391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:51.784 [DEBUG] [Thread-153391] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:51.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:25:51.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:51.786 [DEBUG] [Thread-153391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:25:51.787 [DEBUG] [Thread-153391] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:51.787 [DEBUG] [Thread-153391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:51.787 [DEBUG] [Thread-153391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:51.787 [DEBUG] [Thread-153391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:25:51.787 [DEBUG] [Thread-153391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:51.811 [INFO] [Thread-153391] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:51.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:52.518 [DEBUG] [Thread-153391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:52.518 [DEBUG] [Thread-153391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:52.519 [DEBUG] [Thread-153391] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:25:52.559 [DEBUG] [Thread-153391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:52.559 [DEBUG] [Thread-153391] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:52.562 [DEBUG] [Thread-153391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:52.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:52.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:25:52.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:25:52.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:25:52.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:52.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:25:52.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:52.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:52.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:25:52.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.351115 -999.00  +10.80  20.41     63   +4.10 1 1 1 1 1   888    0 7.22 40.72 ----- 16.9 20.4 135.2 35.1 17.7 -24.1 16.4 -24.7 15.4 -24.6 16.6 -25.2
2025-09-29T10:25:52.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:25:52.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:25:52.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.351115
2025-09-29T10:25:52.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:25:52.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:25:52.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:25:52.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:25:52.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:25:52.594 [DEBUG] [Thread-153391] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:52.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:25:22', tmtdew=7.9, humidity=57.97, cloud=0.0, wind=23.82, temperature=10.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:25:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:25:52.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:25:52.689 [DEBUG] [Thread-153394] [transport.py] [_log()] starting thread (client mode): 0x2e3495a0
2025-09-29T10:25:52.689 [DEBUG] [Thread-153394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:25:52.704 [DEBUG] [Thread-153394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:25:52.704 [INFO] [Thread-153394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:25:52.711 [DEBUG] [Thread-153394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:25:52.711 [DEBUG] [Thread-153394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] client lang: <none>
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] server lang: <none>
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] kex follows: False
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] Compression: none
2025-09-29T10:25:52.712 [DEBUG] [Thread-153394] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:25:52.768 [DEBUG] [Thread-153394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:25:52.769 [DEBUG] [Thread-153394] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:25:52.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:25:52.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:25:52.770 [DEBUG] [Thread-153394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:25:52.824 [DEBUG] [Thread-153394] [transport.py] [_log()] userauth is OK
2025-09-29T10:25:52.825 [DEBUG] [Thread-153394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:25:52.825 [DEBUG] [Thread-153394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:25:52.825 [DEBUG] [Thread-153394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:25:52.825 [DEBUG] [Thread-153394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:25:52.843 [INFO] [Thread-153394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:25:52.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:25:52.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:25:53.804 [DEBUG] [Thread-153394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:25:53.804 [DEBUG] [Thread-153394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:25:53.852 [DEBUG] [Thread-153394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:25:53.852 [DEBUG] [Thread-153394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:25:53.861 [DEBUG] [Thread-153394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:25:53.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:25:53.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:25:53.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:25:53.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:25:53.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:25:53.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:25:53.896 [DEBUG] [Thread-153394] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:25:57.476 [DEBUG] [Thread-153396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:26:03.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:26:03.897 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:26:03.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:26:04.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 25, 54), 8.14, 57.51, 0.0, 30.3, 11.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:26:04.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:25:54
2025-09-29T10:26:04.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:26:04.717 [DEBUG] [Thread-153397] [transport.py] [_log()] starting thread (client mode): 0x2b91fd00
2025-09-29T10:26:04.718 [DEBUG] [Thread-153397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:04.738 [DEBUG] [Thread-153397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:26:04.738 [INFO] [Thread-153397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] Compression: none
2025-09-29T10:26:04.742 [DEBUG] [Thread-153397] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:04.759 [DEBUG] [Thread-153397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:04.760 [DEBUG] [Thread-153397] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:04.760 [DEBUG] [Thread-153397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:26:04.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:26:04.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:04.762 [DEBUG] [Thread-153397] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:04.762 [DEBUG] [Thread-153397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:04.762 [DEBUG] [Thread-153397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:04.762 [DEBUG] [Thread-153397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:26:04.763 [DEBUG] [Thread-153397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:04.780 [INFO] [Thread-153397] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:04.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:05.458 [DEBUG] [Thread-153397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:05.458 [DEBUG] [Thread-153397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:05.458 [DEBUG] [Thread-153397] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:26:05.499 [DEBUG] [Thread-153397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:05.499 [DEBUG] [Thread-153397] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:05.503 [DEBUG] [Thread-153397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:05.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:05.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:26:05.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:26:05.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:26:05.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:05.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:26:05.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:05.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:05.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:26:05.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.351115 -999.00  +10.80  20.41     63   +4.10 1 1 1 1 1   888    0 7.22 40.72 ----- 16.9 20.4 135.2 35.1 17.7 -24.1 16.4 -24.7 15.4 -24.6 16.6 -25.2
2025-09-29T10:26:05.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:26:05.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:26:05.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.351115
2025-09-29T10:26:05.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:26:05.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:26:05.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:26:05.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:26:05.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:26:05.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:25:54', tmtdew=8.14, humidity=57.51, cloud=0.0, wind=30.3, temperature=11.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:25:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:26:05.527 [DEBUG] [Thread-153397] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:05.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:26:05.622 [DEBUG] [Thread-153400] [transport.py] [_log()] starting thread (client mode): 0x2b91d9f0
2025-09-29T10:26:05.622 [DEBUG] [Thread-153400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:05.638 [DEBUG] [Thread-153400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:26:05.639 [INFO] [Thread-153400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:26:05.646 [DEBUG] [Thread-153400] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:05.646 [DEBUG] [Thread-153400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:26:05.646 [DEBUG] [Thread-153400] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:05.647 [DEBUG] [Thread-153400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:05.647 [DEBUG] [Thread-153400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:05.647 [DEBUG] [Thread-153400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:05.647 [DEBUG] [Thread-153400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:05.647 [DEBUG] [Thread-153400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:05.647 [DEBUG] [Thread-153400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:05.647 [DEBUG] [Thread-153400] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] Compression: none
2025-09-29T10:26:05.648 [DEBUG] [Thread-153400] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:05.703 [DEBUG] [Thread-153400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:05.704 [DEBUG] [Thread-153400] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:05.704 [DEBUG] [Thread-153400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:26:05.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:26:05.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:05.760 [DEBUG] [Thread-153400] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:05.760 [DEBUG] [Thread-153400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:05.760 [DEBUG] [Thread-153400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:05.760 [DEBUG] [Thread-153400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:26:05.760 [DEBUG] [Thread-153400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:05.779 [INFO] [Thread-153400] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:05.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:26:05.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:06.735 [DEBUG] [Thread-153400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:06.735 [DEBUG] [Thread-153400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:06.782 [DEBUG] [Thread-153400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:06.782 [DEBUG] [Thread-153400] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:06.791 [DEBUG] [Thread-153400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:06.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:06.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:26:06.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:26:06.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:06.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:06.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:06.833 [DEBUG] [Thread-153400] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:12.509 [DEBUG] [Thread-153402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:26:16.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:26:16.835 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:26:16.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:26:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 25, 54), 8.14, 57.51, 0.0, 30.3, 11.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:26:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:25:54
2025-09-29T10:26:17.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:26:17.664 [DEBUG] [Thread-153403] [transport.py] [_log()] starting thread (client mode): 0x2e349030
2025-09-29T10:26:17.664 [DEBUG] [Thread-153403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:17.685 [DEBUG] [Thread-153403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:26:17.685 [INFO] [Thread-153403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:17.688 [DEBUG] [Thread-153403] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:17.689 [DEBUG] [Thread-153403] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:17.689 [DEBUG] [Thread-153403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:17.689 [DEBUG] [Thread-153403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:17.689 [DEBUG] [Thread-153403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:17.689 [DEBUG] [Thread-153403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:17.689 [DEBUG] [Thread-153403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:17.689 [DEBUG] [Thread-153403] [transport.py] [_log()] Compression: none
2025-09-29T10:26:17.689 [DEBUG] [Thread-153403] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:17.705 [DEBUG] [Thread-153403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:17.706 [DEBUG] [Thread-153403] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:17.706 [DEBUG] [Thread-153403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:26:17.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:26:17.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:17.708 [DEBUG] [Thread-153403] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:17.708 [DEBUG] [Thread-153403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:17.708 [DEBUG] [Thread-153403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:17.708 [DEBUG] [Thread-153403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:26:17.708 [DEBUG] [Thread-153403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:17.733 [INFO] [Thread-153403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:17.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:18.375 [DEBUG] [Thread-153403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:18.375 [DEBUG] [Thread-153403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:18.376 [DEBUG] [Thread-153403] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:26:18.416 [DEBUG] [Thread-153403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:18.417 [DEBUG] [Thread-153403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:18.421 [DEBUG] [Thread-153403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:18.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:18.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:26:18.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:26:18.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:26:18.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:18.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:26:18.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:18.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:26:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.351115 -999.00  +10.80  20.41     63   +4.10 1 1 1 1 1   888    0 7.22 40.72 ----- 16.9 20.4 135.2 35.1 17.7 -24.1 16.4 -24.7 15.4 -24.6 16.6 -25.2
2025-09-29T10:26:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:26:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:26:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.351115
2025-09-29T10:26:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:26:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:26:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:26:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:26:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:26:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:25:54', tmtdew=8.14, humidity=57.51, cloud=0.0, wind=30.3, temperature=11.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:25:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:26:18.445 [DEBUG] [Thread-153403] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:18.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:26:18.542 [DEBUG] [Thread-153406] [transport.py] [_log()] starting thread (client mode): 0x28706470
2025-09-29T10:26:18.542 [DEBUG] [Thread-153406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:18.557 [DEBUG] [Thread-153406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:26:18.558 [INFO] [Thread-153406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:26:18.565 [DEBUG] [Thread-153406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:18.565 [DEBUG] [Thread-153406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:26:18.565 [DEBUG] [Thread-153406] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:18.566 [DEBUG] [Thread-153406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:18.567 [DEBUG] [Thread-153406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:18.567 [DEBUG] [Thread-153406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:18.567 [DEBUG] [Thread-153406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:18.567 [DEBUG] [Thread-153406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:18.567 [DEBUG] [Thread-153406] [transport.py] [_log()] Compression: none
2025-09-29T10:26:18.567 [DEBUG] [Thread-153406] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:18.623 [DEBUG] [Thread-153406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:18.623 [DEBUG] [Thread-153406] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:18.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:26:18.624 [DEBUG] [Thread-153406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:26:18.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:18.679 [DEBUG] [Thread-153406] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:18.679 [DEBUG] [Thread-153406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:18.680 [DEBUG] [Thread-153406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:18.680 [DEBUG] [Thread-153406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:26:18.680 [DEBUG] [Thread-153406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:18.699 [INFO] [Thread-153406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:18.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:26:18.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:19.663 [DEBUG] [Thread-153406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:19.664 [DEBUG] [Thread-153406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:19.711 [DEBUG] [Thread-153406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:19.711 [DEBUG] [Thread-153406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:19.720 [DEBUG] [Thread-153406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:19.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:19.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:26:19.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:26:19.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:19.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:19.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:19.755 [DEBUG] [Thread-153406] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:27.546 [DEBUG] [Thread-153408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:26:29.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:26:29.758 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:26:29.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:26:29.887 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:26:29.888 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:26:30.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 26, 26), 8.27, 56.98, 0.0, 28.16, 11.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:26:30.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:26:26
2025-09-29T10:26:30.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:26:30.577 [DEBUG] [Thread-153409] [transport.py] [_log()] starting thread (client mode): 0x2b9c11b0
2025-09-29T10:26:30.577 [DEBUG] [Thread-153409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:30.597 [DEBUG] [Thread-153409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:26:30.597 [INFO] [Thread-153409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:30.600 [DEBUG] [Thread-153409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] Compression: none
2025-09-29T10:26:30.601 [DEBUG] [Thread-153409] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:30.613 [DEBUG] [Thread-153409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:30.614 [DEBUG] [Thread-153409] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:30.614 [DEBUG] [Thread-153409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:26:30.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:26:30.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:30.616 [DEBUG] [Thread-153409] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:30.616 [DEBUG] [Thread-153409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:30.616 [DEBUG] [Thread-153409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:30.616 [DEBUG] [Thread-153409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:26:30.616 [DEBUG] [Thread-153409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:30.640 [INFO] [Thread-153409] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:30.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:31.308 [DEBUG] [Thread-153409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:31.308 [DEBUG] [Thread-153409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:31.309 [DEBUG] [Thread-153409] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:26:31.349 [DEBUG] [Thread-153409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:31.349 [DEBUG] [Thread-153409] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:31.353 [DEBUG] [Thread-153409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:31.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:31.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:26:31.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:26:31.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:26:31.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:31.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:26:31.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:31.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.351462 -999.00  +10.60  16.30     62   +3.80 1 1 1 1 1   888    0 7.18 40.96 ----- 18.9 16.3 150.6 26.5 17.8 -25.1 16.4 -24.2 15.4 -25.0 16.6 -25.8
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.351462
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:26:31.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:26:26', tmtdew=8.27, humidity=56.98, cloud=0.0, wind=28.16, temperature=11.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:26:06.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:26:31.372 [DEBUG] [Thread-153409] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:31.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:26:31.457 [DEBUG] [Thread-153412] [transport.py] [_log()] starting thread (client mode): 0x28707f70
2025-09-29T10:26:31.457 [DEBUG] [Thread-153412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:31.472 [DEBUG] [Thread-153412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:26:31.472 [INFO] [Thread-153412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] Compression: none
2025-09-29T10:26:31.480 [DEBUG] [Thread-153412] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:31.538 [DEBUG] [Thread-153412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:31.538 [DEBUG] [Thread-153412] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:31.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:26:31.539 [DEBUG] [Thread-153412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:26:31.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:31.594 [DEBUG] [Thread-153412] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:31.595 [DEBUG] [Thread-153412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:31.595 [DEBUG] [Thread-153412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:31.595 [DEBUG] [Thread-153412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:26:31.595 [DEBUG] [Thread-153412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:31.614 [INFO] [Thread-153412] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:31.614 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:26:31.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:32.680 [DEBUG] [Thread-153412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:32.680 [DEBUG] [Thread-153412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:32.728 [DEBUG] [Thread-153412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:32.728 [DEBUG] [Thread-153412] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:32.736 [DEBUG] [Thread-153412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:32.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:32.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:26:32.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:26:32.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:32.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:32.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:32.767 [DEBUG] [Thread-153412] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:32.814 [DEBUG] [Thread-153414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:26:42.571 [DEBUG] [Thread-153415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:26:42.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:26:42.770 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:26:42.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:26:43.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 26, 26), 8.27, 56.98, 0.0, 28.16, 11.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:26:43.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:26:26
2025-09-29T10:26:43.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:26:43.603 [DEBUG] [Thread-153416] [transport.py] [_log()] starting thread (client mode): 0x28704520
2025-09-29T10:26:43.603 [DEBUG] [Thread-153416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:43.623 [DEBUG] [Thread-153416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:26:43.623 [INFO] [Thread-153416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:26:43.624 [DEBUG] [Thread-153416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:43.625 [DEBUG] [Thread-153416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:43.626 [DEBUG] [Thread-153416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:43.626 [DEBUG] [Thread-153416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:43.626 [DEBUG] [Thread-153416] [transport.py] [_log()] Compression: none
2025-09-29T10:26:43.626 [DEBUG] [Thread-153416] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:43.640 [DEBUG] [Thread-153416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:43.641 [DEBUG] [Thread-153416] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:43.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:26:43.642 [DEBUG] [Thread-153416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:26:43.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:43.644 [DEBUG] [Thread-153416] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:43.644 [DEBUG] [Thread-153416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:43.644 [DEBUG] [Thread-153416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:43.644 [DEBUG] [Thread-153416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:26:43.644 [DEBUG] [Thread-153416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:43.668 [INFO] [Thread-153416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:43.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:44.322 [DEBUG] [Thread-153416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:44.322 [DEBUG] [Thread-153416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:44.323 [DEBUG] [Thread-153416] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:26:44.363 [DEBUG] [Thread-153416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:44.363 [DEBUG] [Thread-153416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:44.366 [DEBUG] [Thread-153416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:44.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:44.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:26:44.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:26:44.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:26:44.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:44.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:26:44.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:44.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:26:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.351462 -999.00  +10.60  16.30     62   +3.80 1 1 1 1 1   888    0 7.18 40.96 ----- 18.9 16.3 150.6 26.5 17.8 -25.1 16.4 -24.2 15.4 -25.0 16.6 -25.8
2025-09-29T10:26:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:26:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:26:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.351462
2025-09-29T10:26:44.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:26:44.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:26:44.388 [DEBUG] [Thread-153416] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:44.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:26:44.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:26:44.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:26:44.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:26:26', tmtdew=8.27, humidity=56.98, cloud=0.0, wind=28.16, temperature=11.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:26:06.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:26:44.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:26:44.487 [DEBUG] [Thread-153419] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c30
2025-09-29T10:26:44.487 [DEBUG] [Thread-153419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:44.503 [DEBUG] [Thread-153419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:26:44.503 [INFO] [Thread-153419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:26:44.510 [DEBUG] [Thread-153419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:44.511 [DEBUG] [Thread-153419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:44.512 [DEBUG] [Thread-153419] [transport.py] [_log()] Compression: none
2025-09-29T10:26:44.512 [DEBUG] [Thread-153419] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:44.570 [DEBUG] [Thread-153419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:44.571 [DEBUG] [Thread-153419] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:44.571 [DEBUG] [Thread-153419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:26:44.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:26:44.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:44.626 [DEBUG] [Thread-153419] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:44.626 [DEBUG] [Thread-153419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:44.626 [DEBUG] [Thread-153419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:44.626 [DEBUG] [Thread-153419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:26:44.626 [DEBUG] [Thread-153419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:44.646 [INFO] [Thread-153419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:44.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:26:44.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:45.599 [DEBUG] [Thread-153419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:45.599 [DEBUG] [Thread-153419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:45.647 [DEBUG] [Thread-153419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:45.647 [DEBUG] [Thread-153419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:45.656 [DEBUG] [Thread-153419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:45.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:45.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:26:45.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:26:45.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:45.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:45.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:45.693 [DEBUG] [Thread-153419] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:55.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:26:55.687 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:26:55.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:26:56.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 26, 26), 8.27, 56.98, 0.0, 28.16, 11.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:26:56.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:26:26
2025-09-29T10:26:56.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:26:56.503 [DEBUG] [Thread-153421] [transport.py] [_log()] starting thread (client mode): 0x2b9c2ec0
2025-09-29T10:26:56.504 [DEBUG] [Thread-153421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:56.523 [DEBUG] [Thread-153421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:26:56.523 [INFO] [Thread-153421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:56.526 [DEBUG] [Thread-153421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:56.527 [DEBUG] [Thread-153421] [transport.py] [_log()] Compression: none
2025-09-29T10:26:56.527 [DEBUG] [Thread-153421] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:56.546 [DEBUG] [Thread-153421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:56.547 [DEBUG] [Thread-153421] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:56.548 [DEBUG] [Thread-153421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:26:56.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:26:56.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:56.550 [DEBUG] [Thread-153421] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:56.550 [DEBUG] [Thread-153421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:56.550 [DEBUG] [Thread-153421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:56.550 [DEBUG] [Thread-153421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:26:56.550 [DEBUG] [Thread-153421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:56.565 [INFO] [Thread-153421] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:56.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:57.183 [DEBUG] [Thread-153421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:57.183 [DEBUG] [Thread-153421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:57.183 [DEBUG] [Thread-153421] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:26:57.224 [DEBUG] [Thread-153421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:57.224 [DEBUG] [Thread-153421] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:57.228 [DEBUG] [Thread-153421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:57.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:57.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:26:57.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:26:57.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:26:57.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:57.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:26:57.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:57.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.351809 -999.00  +10.70  14.18     64   +4.30 1 1 1 1 1   888    0 7.29 40.31 ----- 21.5 14.2 141.8 26.6 17.8 -23.6 16.5 -23.9 15.4 -24.1 16.6 -25.2
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.351809
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:26:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:26:26', tmtdew=8.27, humidity=56.98, cloud=0.0, wind=28.16, temperature=11.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:26:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:26:57.251 [DEBUG] [Thread-153421] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:26:57.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:26:57.334 [DEBUG] [Thread-153424] [transport.py] [_log()] starting thread (client mode): 0x28707e50
2025-09-29T10:26:57.334 [DEBUG] [Thread-153424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:26:57.348 [DEBUG] [Thread-153424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:26:57.348 [INFO] [Thread-153424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] client lang: <none>
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] server lang: <none>
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] kex follows: False
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] Compression: none
2025-09-29T10:26:57.356 [DEBUG] [Thread-153424] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:26:57.413 [DEBUG] [Thread-153424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:26:57.413 [DEBUG] [Thread-153424] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:26:57.413 [DEBUG] [Thread-153424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:26:57.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:26:57.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:26:57.469 [DEBUG] [Thread-153424] [transport.py] [_log()] userauth is OK
2025-09-29T10:26:57.470 [DEBUG] [Thread-153424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:26:57.470 [DEBUG] [Thread-153424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:26:57.470 [DEBUG] [Thread-153424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:26:57.470 [DEBUG] [Thread-153424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:26:57.489 [INFO] [Thread-153424] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:26:57.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:26:57.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:26:57.616 [DEBUG] [Thread-153426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:26:58.448 [DEBUG] [Thread-153424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:26:58.448 [DEBUG] [Thread-153424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:26:58.496 [DEBUG] [Thread-153424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:26:58.496 [DEBUG] [Thread-153424] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:26:58.504 [DEBUG] [Thread-153424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:26:58.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:26:58.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:26:58.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:26:58.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:26:58.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:26:58.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:26:58.535 [DEBUG] [Thread-153424] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:08.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:27:08.533 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:27:08.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:27:09.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 26, 57), 8.23, 57.14, 0.0, 27.86, 11.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:27:09.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:26:57
2025-09-29T10:27:09.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:27:09.364 [DEBUG] [Thread-153427] [transport.py] [_log()] starting thread (client mode): 0x2e348340
2025-09-29T10:27:09.364 [DEBUG] [Thread-153427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:27:09.379 [DEBUG] [Thread-153427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:27:09.379 [INFO] [Thread-153427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:27:09.382 [DEBUG] [Thread-153427] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] client lang: <none>
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] server lang: <none>
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] kex follows: False
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:27:09.383 [DEBUG] [Thread-153427] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:27:09.384 [DEBUG] [Thread-153427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:27:09.384 [DEBUG] [Thread-153427] [transport.py] [_log()] Compression: none
2025-09-29T10:27:09.384 [DEBUG] [Thread-153427] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:27:09.402 [DEBUG] [Thread-153427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:27:09.403 [DEBUG] [Thread-153427] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:27:09.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:27:09.404 [DEBUG] [Thread-153427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:27:09.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:27:09.406 [DEBUG] [Thread-153427] [transport.py] [_log()] userauth is OK
2025-09-29T10:27:09.406 [DEBUG] [Thread-153427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:27:09.406 [DEBUG] [Thread-153427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:27:09.406 [DEBUG] [Thread-153427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:27:09.406 [DEBUG] [Thread-153427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:27:09.429 [INFO] [Thread-153427] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:27:09.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:27:10.063 [DEBUG] [Thread-153427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:27:10.063 [DEBUG] [Thread-153427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:27:10.063 [DEBUG] [Thread-153427] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:27:10.104 [DEBUG] [Thread-153427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:27:10.104 [DEBUG] [Thread-153427] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:27:10.107 [DEBUG] [Thread-153427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:27:10.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:27:10.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:27:10.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:27:10.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:27:10.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:27:10.129 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:27:10.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:27:10.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:27:10.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:27:10.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.351809 -999.00  +10.70  14.18     64   +4.30 1 1 1 1 1   888    0 7.29 40.31 ----- 21.5 14.2 141.8 26.6 17.8 -23.6 16.5 -23.9 15.4 -24.1 16.6 -25.2
2025-09-29T10:27:10.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:27:10.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:27:10.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.351809
2025-09-29T10:27:10.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:27:10.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:27:10.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:27:10.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:27:10.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:27:10.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:26:57', tmtdew=8.23, humidity=57.14, cloud=0.0, wind=27.86, temperature=11.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:26:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:27:10.132 [DEBUG] [Thread-153427] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:10.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:27:10.227 [DEBUG] [Thread-153430] [transport.py] [_log()] starting thread (client mode): 0x2e360460
2025-09-29T10:27:10.227 [DEBUG] [Thread-153430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:27:10.241 [DEBUG] [Thread-153430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:27:10.242 [INFO] [Thread-153430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:27:10.249 [DEBUG] [Thread-153430] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:27:10.249 [DEBUG] [Thread-153430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] client lang: <none>
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] server lang: <none>
2025-09-29T10:27:10.250 [DEBUG] [Thread-153430] [transport.py] [_log()] kex follows: False
2025-09-29T10:27:10.251 [DEBUG] [Thread-153430] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:27:10.251 [DEBUG] [Thread-153430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:27:10.251 [DEBUG] [Thread-153430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:27:10.251 [DEBUG] [Thread-153430] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:27:10.251 [DEBUG] [Thread-153430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:27:10.251 [DEBUG] [Thread-153430] [transport.py] [_log()] Compression: none
2025-09-29T10:27:10.251 [DEBUG] [Thread-153430] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:27:10.309 [DEBUG] [Thread-153430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:27:10.310 [DEBUG] [Thread-153430] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:27:10.310 [DEBUG] [Thread-153430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:27:10.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:27:10.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:27:10.365 [DEBUG] [Thread-153430] [transport.py] [_log()] userauth is OK
2025-09-29T10:27:10.365 [DEBUG] [Thread-153430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:27:10.365 [DEBUG] [Thread-153430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:27:10.365 [DEBUG] [Thread-153430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:27:10.366 [DEBUG] [Thread-153430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:27:10.385 [INFO] [Thread-153430] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:27:10.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:27:10.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:27:11.367 [DEBUG] [Thread-153430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:27:11.367 [DEBUG] [Thread-153430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:27:11.415 [DEBUG] [Thread-153430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:27:11.415 [DEBUG] [Thread-153430] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:27:11.424 [DEBUG] [Thread-153430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:27:11.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:27:11.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:27:11.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:27:11.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:27:11.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:27:11.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:27:11.458 [DEBUG] [Thread-153430] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:12.671 [DEBUG] [Thread-153432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:27:21.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:27:21.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:27:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:27:22.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 26, 57), 8.23, 57.14, 0.0, 27.86, 11.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:27:22.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:26:57
2025-09-29T10:27:22.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:27:22.287 [DEBUG] [Thread-153433] [transport.py] [_log()] starting thread (client mode): 0x2e3c2410
2025-09-29T10:27:22.287 [DEBUG] [Thread-153433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:27:22.309 [DEBUG] [Thread-153433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:27:22.309 [INFO] [Thread-153433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] client lang: <none>
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] server lang: <none>
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] kex follows: False
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:27:22.312 [DEBUG] [Thread-153433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:27:22.313 [DEBUG] [Thread-153433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:27:22.313 [DEBUG] [Thread-153433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:27:22.313 [DEBUG] [Thread-153433] [transport.py] [_log()] Compression: none
2025-09-29T10:27:22.313 [DEBUG] [Thread-153433] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:27:22.329 [DEBUG] [Thread-153433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:27:22.329 [DEBUG] [Thread-153433] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:27:22.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:27:22.330 [DEBUG] [Thread-153433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:27:22.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:27:22.332 [DEBUG] [Thread-153433] [transport.py] [_log()] userauth is OK
2025-09-29T10:27:22.332 [DEBUG] [Thread-153433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:27:22.333 [DEBUG] [Thread-153433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:27:22.333 [DEBUG] [Thread-153433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:27:22.333 [DEBUG] [Thread-153433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:27:22.351 [INFO] [Thread-153433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:27:22.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:27:22.995 [DEBUG] [Thread-153433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:27:22.996 [DEBUG] [Thread-153433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:27:22.996 [DEBUG] [Thread-153433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:27:23.036 [DEBUG] [Thread-153433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:27:23.037 [DEBUG] [Thread-153433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:27:23.039 [DEBUG] [Thread-153433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:27:23.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:27:23.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:27:23.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:27:23.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:27:23.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:27:23.062 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:27:23.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:27:23.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:27:23.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:27:23.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.351809 -999.00  +10.70  14.18     64   +4.30 1 1 1 1 1   888    0 7.29 40.31 ----- 21.5 14.2 141.8 26.6 17.8 -23.6 16.5 -23.9 15.4 -24.1 16.6 -25.2
2025-09-29T10:27:23.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:27:23.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:27:23.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.351809
2025-09-29T10:27:23.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:27:23.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:27:23.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:27:23.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:27:23.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:27:23.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:26:57', tmtdew=8.23, humidity=57.14, cloud=0.0, wind=27.86, temperature=11.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:26:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:27:23.065 [DEBUG] [Thread-153433] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:23.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:27:23.161 [DEBUG] [Thread-153436] [transport.py] [_log()] starting thread (client mode): 0x2e3c0d00
2025-09-29T10:27:23.161 [DEBUG] [Thread-153436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:27:23.177 [DEBUG] [Thread-153436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:27:23.177 [INFO] [Thread-153436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] client lang: <none>
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] server lang: <none>
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] kex follows: False
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:27:23.185 [DEBUG] [Thread-153436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:27:23.186 [DEBUG] [Thread-153436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:27:23.186 [DEBUG] [Thread-153436] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:27:23.186 [DEBUG] [Thread-153436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:27:23.186 [DEBUG] [Thread-153436] [transport.py] [_log()] Compression: none
2025-09-29T10:27:23.186 [DEBUG] [Thread-153436] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:27:23.243 [DEBUG] [Thread-153436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:27:23.244 [DEBUG] [Thread-153436] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:27:23.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:27:23.245 [DEBUG] [Thread-153436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:27:23.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:27:23.301 [DEBUG] [Thread-153436] [transport.py] [_log()] userauth is OK
2025-09-29T10:27:23.301 [DEBUG] [Thread-153436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:27:23.301 [DEBUG] [Thread-153436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:27:23.301 [DEBUG] [Thread-153436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:27:23.301 [DEBUG] [Thread-153436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:27:23.321 [INFO] [Thread-153436] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:27:23.321 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:27:23.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:27:24.302 [DEBUG] [Thread-153436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:27:24.302 [DEBUG] [Thread-153436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:27:24.350 [DEBUG] [Thread-153436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:27:24.350 [DEBUG] [Thread-153436] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:27:24.359 [DEBUG] [Thread-153436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:27:24.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:27:24.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:27:24.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:27:24.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:27:24.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:27:24.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:27:24.396 [DEBUG] [Thread-153436] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:27.719 [DEBUG] [Thread-153438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:27:30.028 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:27:30.029 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:27:32.867 [DEBUG] [Thread-153439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:27:34.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:27:34.395 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:27:34.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:27:34.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 27, 29), 8.07, 57.72, 0.0, 27.7, 11.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:27:34.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:27:29
2025-09-29T10:27:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:27:35.215 [DEBUG] [Thread-153440] [transport.py] [_log()] starting thread (client mode): 0x2e361090
2025-09-29T10:27:35.215 [DEBUG] [Thread-153440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:27:35.236 [DEBUG] [Thread-153440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:27:35.236 [INFO] [Thread-153440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:27:35.239 [DEBUG] [Thread-153440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] client lang: <none>
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] server lang: <none>
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] kex follows: False
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] Compression: none
2025-09-29T10:27:35.240 [DEBUG] [Thread-153440] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:27:35.256 [DEBUG] [Thread-153440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:27:35.257 [DEBUG] [Thread-153440] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:27:35.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:27:35.258 [DEBUG] [Thread-153440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:27:35.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:27:35.260 [DEBUG] [Thread-153440] [transport.py] [_log()] userauth is OK
2025-09-29T10:27:35.260 [DEBUG] [Thread-153440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:27:35.260 [DEBUG] [Thread-153440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:27:35.260 [DEBUG] [Thread-153440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:27:35.260 [DEBUG] [Thread-153440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:27:35.278 [INFO] [Thread-153440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:27:35.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:27:35.916 [DEBUG] [Thread-153440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:27:35.916 [DEBUG] [Thread-153440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:27:35.916 [DEBUG] [Thread-153440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:27:35.956 [DEBUG] [Thread-153440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:27:35.957 [DEBUG] [Thread-153440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:27:35.960 [DEBUG] [Thread-153440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:27:35.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:27:35.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:27:35.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:27:35.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:27:35.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:27:35.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:27:35.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:27:35.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:27:35.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:27:35.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.352156 -999.00  +11.00  22.18     64   +4.60 1 1 1 1 1   888    0 7.14 37.46 ----- 20.1 22.2 139.8 28.8 17.9 -24.0 16.6 -23.6 15.5 -23.7 16.7 -25.2
2025-09-29T10:27:35.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:27:35.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:27:35.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.352156
2025-09-29T10:27:35.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:27:35.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:27:35.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:27:35.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:27:35.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:27:35.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:27:29', tmtdew=8.07, humidity=57.72, cloud=0.0, wind=27.7, temperature=11.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:27:06.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:27:35.984 [DEBUG] [Thread-153440] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:36.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:27:36.080 [DEBUG] [Thread-153443] [transport.py] [_log()] starting thread (client mode): 0x2b9c2890
2025-09-29T10:27:36.080 [DEBUG] [Thread-153443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:27:36.095 [DEBUG] [Thread-153443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:27:36.095 [INFO] [Thread-153443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] client lang: <none>
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] server lang: <none>
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] kex follows: False
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:27:36.103 [DEBUG] [Thread-153443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:27:36.104 [DEBUG] [Thread-153443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:27:36.104 [DEBUG] [Thread-153443] [transport.py] [_log()] Compression: none
2025-09-29T10:27:36.104 [DEBUG] [Thread-153443] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:27:36.159 [DEBUG] [Thread-153443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:27:36.159 [DEBUG] [Thread-153443] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:27:36.160 [DEBUG] [Thread-153443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:27:36.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:27:36.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:27:36.215 [DEBUG] [Thread-153443] [transport.py] [_log()] userauth is OK
2025-09-29T10:27:36.216 [DEBUG] [Thread-153443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:27:36.216 [DEBUG] [Thread-153443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:27:36.216 [DEBUG] [Thread-153443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:27:36.216 [DEBUG] [Thread-153443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:27:36.234 [INFO] [Thread-153443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:27:36.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:27:36.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:27:37.209 [DEBUG] [Thread-153443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:27:37.209 [DEBUG] [Thread-153443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:27:37.256 [DEBUG] [Thread-153443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:27:37.256 [DEBUG] [Thread-153443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:27:37.265 [DEBUG] [Thread-153443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:27:37.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:27:37.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:27:37.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:27:37.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:27:37.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:27:37.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:27:37.301 [DEBUG] [Thread-153443] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:42.747 [DEBUG] [Thread-153445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:27:47.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:27:47.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:27:47.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:27:47.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 27, 29), 8.07, 57.72, 0.0, 27.7, 11.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:27:47.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:27:29
2025-09-29T10:27:47.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:27:48.124 [DEBUG] [Thread-153446] [transport.py] [_log()] starting thread (client mode): 0x2b9c0fd0
2025-09-29T10:27:48.124 [DEBUG] [Thread-153446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:27:48.145 [DEBUG] [Thread-153446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:27:48.145 [INFO] [Thread-153446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:27:48.146 [DEBUG] [Thread-153446] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] client lang: <none>
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] server lang: <none>
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] kex follows: False
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] Compression: none
2025-09-29T10:27:48.147 [DEBUG] [Thread-153446] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:27:48.164 [DEBUG] [Thread-153446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:27:48.164 [DEBUG] [Thread-153446] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:27:48.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:27:48.165 [DEBUG] [Thread-153446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:27:48.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:27:48.167 [DEBUG] [Thread-153446] [transport.py] [_log()] userauth is OK
2025-09-29T10:27:48.168 [DEBUG] [Thread-153446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:27:48.168 [DEBUG] [Thread-153446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:27:48.168 [DEBUG] [Thread-153446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:27:48.168 [DEBUG] [Thread-153446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:27:48.184 [INFO] [Thread-153446] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:27:48.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:27:48.780 [DEBUG] [Thread-153446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:27:48.780 [DEBUG] [Thread-153446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:27:48.781 [DEBUG] [Thread-153446] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:27:48.821 [DEBUG] [Thread-153446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:27:48.822 [DEBUG] [Thread-153446] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:27:48.825 [DEBUG] [Thread-153446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:27:48.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:27:48.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:27:48.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:27:48.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:27:48.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:27:48.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:27:48.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:27:48.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:27:48.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:27:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.352156 -999.00  +11.00  22.18     64   +4.60 1 1 1 1 1   888    0 7.14 37.46 ----- 20.1 22.2 139.8 28.8 17.9 -24.0 16.6 -23.6 15.5 -23.7 16.7 -25.2
2025-09-29T10:27:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:27:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:27:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.352156
2025-09-29T10:27:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:27:48.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:27:48.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:27:48.849 [DEBUG] [Thread-153446] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:48.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:27:48.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:27:48.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:27:29', tmtdew=8.07, humidity=57.72, cloud=0.0, wind=27.7, temperature=11.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:27:06.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:27:48.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:27:48.943 [DEBUG] [Thread-153449] [transport.py] [_log()] starting thread (client mode): 0x2e3dd240
2025-09-29T10:27:48.943 [DEBUG] [Thread-153449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:27:48.958 [DEBUG] [Thread-153449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:27:48.958 [INFO] [Thread-153449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:27:48.966 [DEBUG] [Thread-153449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:27:48.966 [DEBUG] [Thread-153449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:27:48.966 [DEBUG] [Thread-153449] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:27:48.966 [DEBUG] [Thread-153449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] client lang: <none>
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] server lang: <none>
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] kex follows: False
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:27:48.967 [DEBUG] [Thread-153449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:27:48.968 [DEBUG] [Thread-153449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:27:48.968 [DEBUG] [Thread-153449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:27:48.968 [DEBUG] [Thread-153449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:27:48.968 [DEBUG] [Thread-153449] [transport.py] [_log()] Compression: none
2025-09-29T10:27:48.968 [DEBUG] [Thread-153449] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:27:49.026 [DEBUG] [Thread-153449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:27:49.026 [DEBUG] [Thread-153449] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:27:49.026 [DEBUG] [Thread-153449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:27:49.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:27:49.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:27:49.087 [DEBUG] [Thread-153449] [transport.py] [_log()] userauth is OK
2025-09-29T10:27:49.087 [DEBUG] [Thread-153449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:27:49.087 [DEBUG] [Thread-153449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:27:49.088 [DEBUG] [Thread-153449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:27:49.088 [DEBUG] [Thread-153449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:27:49.110 [INFO] [Thread-153449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:27:49.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:27:49.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:27:50.127 [DEBUG] [Thread-153449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:27:50.127 [DEBUG] [Thread-153449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:27:50.177 [DEBUG] [Thread-153449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:27:50.177 [DEBUG] [Thread-153449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:27:50.185 [DEBUG] [Thread-153449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:27:50.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:27:50.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:27:50.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:27:50.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:27:50.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:27:50.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:27:50.217 [DEBUG] [Thread-153449] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:27:57.795 [DEBUG] [Thread-153451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:28:00.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:28:00.220 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:28:00.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:28:00.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 27, 29), 8.07, 57.72, 0.0, 27.7, 11.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:28:00.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:27:29
2025-09-29T10:28:00.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:28:01.050 [DEBUG] [Thread-153452] [transport.py] [_log()] starting thread (client mode): 0x28707400
2025-09-29T10:28:01.050 [DEBUG] [Thread-153452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:01.066 [DEBUG] [Thread-153452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:28:01.066 [INFO] [Thread-153452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:01.070 [DEBUG] [Thread-153452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:01.071 [DEBUG] [Thread-153452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:01.071 [DEBUG] [Thread-153452] [transport.py] [_log()] Compression: none
2025-09-29T10:28:01.071 [DEBUG] [Thread-153452] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:01.083 [DEBUG] [Thread-153452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:01.083 [DEBUG] [Thread-153452] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:01.083 [DEBUG] [Thread-153452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:28:01.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:28:01.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:01.085 [DEBUG] [Thread-153452] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:01.085 [DEBUG] [Thread-153452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:01.085 [DEBUG] [Thread-153452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:01.085 [DEBUG] [Thread-153452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:28:01.085 [DEBUG] [Thread-153452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:01.109 [INFO] [Thread-153452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:01.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:01.718 [DEBUG] [Thread-153452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:01.718 [DEBUG] [Thread-153452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:01.718 [DEBUG] [Thread-153452] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:28:01.759 [DEBUG] [Thread-153452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:01.760 [DEBUG] [Thread-153452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:01.763 [DEBUG] [Thread-153452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:01.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:01.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:28:01.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:28:01.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:28:01.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:01.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:28:01.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:01.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:01.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:28:01.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.352504 -999.00  +11.60  14.19     63   +4.90 1 1 1 1 1   888    0 7.25 37.73 ----- 20.1 14.2 136.0 27.8 18.0 -24.0 16.6 -23.6 15.6 -22.9 16.7 -24.2
2025-09-29T10:28:01.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:28:01.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:28:01.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.352504
2025-09-29T10:28:01.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:28:01.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:28:01.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:28:01.791 [DEBUG] [Thread-153452] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:01.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:28:01.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:28:01.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:27:29', tmtdew=8.07, humidity=57.72, cloud=0.0, wind=27.7, temperature=11.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:27:36.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:28:01.876 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:28:01.887 [DEBUG] [Thread-153455] [transport.py] [_log()] starting thread (client mode): 0x28706ad0
2025-09-29T10:28:01.887 [DEBUG] [Thread-153455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:01.901 [DEBUG] [Thread-153455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:28:01.901 [INFO] [Thread-153455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:01.909 [DEBUG] [Thread-153455] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:01.910 [DEBUG] [Thread-153455] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:01.910 [DEBUG] [Thread-153455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:01.910 [DEBUG] [Thread-153455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:01.910 [DEBUG] [Thread-153455] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:01.910 [DEBUG] [Thread-153455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:01.910 [DEBUG] [Thread-153455] [transport.py] [_log()] Compression: none
2025-09-29T10:28:01.910 [DEBUG] [Thread-153455] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:01.966 [DEBUG] [Thread-153455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:01.967 [DEBUG] [Thread-153455] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:01.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:28:01.968 [DEBUG] [Thread-153455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:28:01.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:02.022 [DEBUG] [Thread-153455] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:02.023 [DEBUG] [Thread-153455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:02.023 [DEBUG] [Thread-153455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:02.023 [DEBUG] [Thread-153455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:28:02.023 [DEBUG] [Thread-153455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:02.045 [INFO] [Thread-153455] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:02.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:28:02.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:03.000 [DEBUG] [Thread-153455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:03.000 [DEBUG] [Thread-153455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:03.048 [DEBUG] [Thread-153455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:03.048 [DEBUG] [Thread-153455] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:03.056 [DEBUG] [Thread-153455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:03.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:03.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:28:03.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:28:03.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:03.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:03.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:03.088 [DEBUG] [Thread-153455] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:12.826 [DEBUG] [Thread-153457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:28:13.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:28:13.091 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:28:13.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:28:13.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 28, 1), 8.04, 57.84, 0.0, 26.03, 11.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:28:13.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:28:01
2025-09-29T10:28:13.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:28:13.918 [DEBUG] [Thread-153458] [transport.py] [_log()] starting thread (client mode): 0x2b91ce50
2025-09-29T10:28:13.918 [DEBUG] [Thread-153458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:13.937 [DEBUG] [Thread-153458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:28:13.937 [INFO] [Thread-153458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:13.941 [DEBUG] [Thread-153458] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:13.942 [DEBUG] [Thread-153458] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:13.942 [DEBUG] [Thread-153458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:13.942 [DEBUG] [Thread-153458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:13.942 [DEBUG] [Thread-153458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:13.942 [DEBUG] [Thread-153458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:13.942 [DEBUG] [Thread-153458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:13.942 [DEBUG] [Thread-153458] [transport.py] [_log()] Compression: none
2025-09-29T10:28:13.942 [DEBUG] [Thread-153458] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:13.960 [DEBUG] [Thread-153458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:13.960 [DEBUG] [Thread-153458] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:13.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:28:13.961 [DEBUG] [Thread-153458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:28:13.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:13.963 [DEBUG] [Thread-153458] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:13.963 [DEBUG] [Thread-153458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:13.963 [DEBUG] [Thread-153458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:13.964 [DEBUG] [Thread-153458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:28:13.964 [DEBUG] [Thread-153458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:13.981 [INFO] [Thread-153458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:13.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:14.636 [DEBUG] [Thread-153458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:14.636 [DEBUG] [Thread-153458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:14.637 [DEBUG] [Thread-153458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:28:14.677 [DEBUG] [Thread-153458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:14.678 [DEBUG] [Thread-153458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:14.681 [DEBUG] [Thread-153458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:14.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:14.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:28:14.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:28:14.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:28:14.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:14.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:28:14.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:14.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:14.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:28:14.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.352504 -999.00  +11.60  14.19     63   +4.90 1 1 1 1 1   888    0 7.25 37.73 ----- 20.1 14.2 136.0 27.8 18.0 -24.0 16.6 -23.6 15.6 -22.9 16.7 -24.2
2025-09-29T10:28:14.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:28:14.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:28:14.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.352504
2025-09-29T10:28:14.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:28:14.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:28:14.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:28:14.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:28:14.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:28:14.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:28:01', tmtdew=8.04, humidity=57.84, cloud=0.0, wind=26.03, temperature=11.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:27:36.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:28:14.706 [DEBUG] [Thread-153458] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:14.790 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:28:14.800 [DEBUG] [Thread-153461] [transport.py] [_log()] starting thread (client mode): 0x2e3dda80
2025-09-29T10:28:14.800 [DEBUG] [Thread-153461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:14.815 [DEBUG] [Thread-153461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:28:14.815 [INFO] [Thread-153461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:28:14.822 [DEBUG] [Thread-153461] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:14.823 [DEBUG] [Thread-153461] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:14.824 [DEBUG] [Thread-153461] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:14.824 [DEBUG] [Thread-153461] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:14.824 [DEBUG] [Thread-153461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:14.824 [DEBUG] [Thread-153461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:14.824 [DEBUG] [Thread-153461] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:14.824 [DEBUG] [Thread-153461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:14.824 [DEBUG] [Thread-153461] [transport.py] [_log()] Compression: none
2025-09-29T10:28:14.824 [DEBUG] [Thread-153461] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:14.882 [DEBUG] [Thread-153461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:14.883 [DEBUG] [Thread-153461] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:14.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:28:14.884 [DEBUG] [Thread-153461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:28:14.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:14.938 [DEBUG] [Thread-153461] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:14.938 [DEBUG] [Thread-153461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:14.938 [DEBUG] [Thread-153461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:14.938 [DEBUG] [Thread-153461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:28:14.938 [DEBUG] [Thread-153461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:14.958 [INFO] [Thread-153461] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:14.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:28:14.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:15.948 [DEBUG] [Thread-153461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:15.949 [DEBUG] [Thread-153461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:15.999 [DEBUG] [Thread-153461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:15.999 [DEBUG] [Thread-153461] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:16.011 [DEBUG] [Thread-153461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:16.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:16.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:28:16.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:28:16.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:16.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:16.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:16.048 [DEBUG] [Thread-153461] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:26.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:28:26.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:28:26.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:28:26.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 28, 1), 8.04, 57.84, 0.0, 26.03, 11.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:28:26.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:28:01
2025-09-29T10:28:26.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:28:26.875 [DEBUG] [Thread-153463] [transport.py] [_log()] starting thread (client mode): 0x2e38f130
2025-09-29T10:28:26.875 [DEBUG] [Thread-153463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:26.895 [DEBUG] [Thread-153463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:28:26.895 [INFO] [Thread-153463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:28:26.898 [DEBUG] [Thread-153463] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:26.898 [DEBUG] [Thread-153463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] Compression: none
2025-09-29T10:28:26.899 [DEBUG] [Thread-153463] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:26.915 [DEBUG] [Thread-153463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:26.915 [DEBUG] [Thread-153463] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:26.916 [DEBUG] [Thread-153463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:28:26.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:28:26.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:26.956 [DEBUG] [Thread-153463] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:26.957 [DEBUG] [Thread-153463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:26.957 [DEBUG] [Thread-153463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:26.957 [DEBUG] [Thread-153463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:28:26.957 [DEBUG] [Thread-153463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:26.981 [INFO] [Thread-153463] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:26.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:27.633 [DEBUG] [Thread-153463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:27.633 [DEBUG] [Thread-153463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:27.633 [DEBUG] [Thread-153463] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:28:27.674 [DEBUG] [Thread-153463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:27.674 [DEBUG] [Thread-153463] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:27.677 [DEBUG] [Thread-153463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:27.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:27.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:28:27.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:28:27.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:28:27.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:27.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:28:27.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:27.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:27.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:28:27.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.352504 -999.00  +11.60  14.19     63   +4.90 1 1 1 1 1   888    0 7.25 37.73 ----- 20.1 14.2 136.0 27.8 18.0 -24.0 16.6 -23.6 15.6 -22.9 16.7 -24.2
2025-09-29T10:28:27.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:28:27.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:28:27.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.352504
2025-09-29T10:28:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:28:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:28:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:28:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:28:27.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:28:27.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:28:01', tmtdew=8.04, humidity=57.84, cloud=0.0, wind=26.03, temperature=11.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:27:36.346', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:28:27.703 [DEBUG] [Thread-153463] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:27.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:28:27.802 [DEBUG] [Thread-153466] [transport.py] [_log()] starting thread (client mode): 0x2e38fac0
2025-09-29T10:28:27.802 [DEBUG] [Thread-153466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:27.818 [DEBUG] [Thread-153466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:28:27.818 [INFO] [Thread-153466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:27.825 [DEBUG] [Thread-153466] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:27.826 [DEBUG] [Thread-153466] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:27.826 [DEBUG] [Thread-153466] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:27.826 [DEBUG] [Thread-153466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:27.826 [DEBUG] [Thread-153466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:27.826 [DEBUG] [Thread-153466] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:27.826 [DEBUG] [Thread-153466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:27.826 [DEBUG] [Thread-153466] [transport.py] [_log()] Compression: none
2025-09-29T10:28:27.826 [DEBUG] [Thread-153466] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:27.876 [DEBUG] [Thread-153468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:28:27.882 [DEBUG] [Thread-153466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:27.882 [DEBUG] [Thread-153466] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:27.882 [DEBUG] [Thread-153466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:28:27.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:28:27.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:27.937 [DEBUG] [Thread-153466] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:27.938 [DEBUG] [Thread-153466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:27.938 [DEBUG] [Thread-153466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:27.938 [DEBUG] [Thread-153466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:28:27.938 [DEBUG] [Thread-153466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:27.958 [INFO] [Thread-153466] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:27.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:28:27.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:28.956 [DEBUG] [Thread-153466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:28.956 [DEBUG] [Thread-153466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:29.004 [DEBUG] [Thread-153466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:29.005 [DEBUG] [Thread-153466] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:29.014 [DEBUG] [Thread-153466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:29.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:29.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:28:29.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:28:29.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:29.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:29.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:29.048 [DEBUG] [Thread-153466] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:30.170 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:28:30.170 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:28:32.912 [DEBUG] [Thread-153469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:28:39.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:28:39.046 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:28:39.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:28:39.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 28, 33), 7.98, 57.89, 0.0, 29.43, 11.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:28:39.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:28:33
2025-09-29T10:28:39.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:28:39.872 [DEBUG] [Thread-153470] [transport.py] [_log()] starting thread (client mode): 0x2e38e140
2025-09-29T10:28:39.872 [DEBUG] [Thread-153470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:39.892 [DEBUG] [Thread-153470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:28:39.892 [INFO] [Thread-153470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:39.895 [DEBUG] [Thread-153470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:39.896 [DEBUG] [Thread-153470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:39.896 [DEBUG] [Thread-153470] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:39.896 [DEBUG] [Thread-153470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:39.896 [DEBUG] [Thread-153470] [transport.py] [_log()] Compression: none
2025-09-29T10:28:39.896 [DEBUG] [Thread-153470] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:39.912 [DEBUG] [Thread-153470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:39.912 [DEBUG] [Thread-153470] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:39.913 [DEBUG] [Thread-153470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:28:39.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:28:39.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:39.914 [DEBUG] [Thread-153470] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:39.914 [DEBUG] [Thread-153470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:39.915 [DEBUG] [Thread-153470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:39.915 [DEBUG] [Thread-153470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:28:39.915 [DEBUG] [Thread-153470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:39.929 [INFO] [Thread-153470] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:39.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:40.592 [DEBUG] [Thread-153470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:40.593 [DEBUG] [Thread-153470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:40.593 [DEBUG] [Thread-153470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:28:40.633 [DEBUG] [Thread-153470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:40.633 [DEBUG] [Thread-153470] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:40.636 [DEBUG] [Thread-153470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:40.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:40.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:28:40.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:28:40.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:28:40.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:40.661 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:28:40.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:40.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:40.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:28:40.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.352851 -999.00  +11.60  28.32     61   +4.50 1 1 1 1 1   888    0 7.27 38.40 ----- 26.1 28.3 122.8 33.6 18.1 -28.3 16.8 -23.1 15.8 -24.4 16.9 -24.0
2025-09-29T10:28:40.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:28:40.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:28:40.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.352851
2025-09-29T10:28:40.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:28:40.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:28:40.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:28:40.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:28:40.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:28:40.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:28:33', tmtdew=7.98, humidity=57.89, cloud=0.0, wind=29.43, temperature=11.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:28:06.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:28:40.664 [DEBUG] [Thread-153470] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:40.749 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:28:40.762 [DEBUG] [Thread-153473] [transport.py] [_log()] starting thread (client mode): 0x2e38fd30
2025-09-29T10:28:40.762 [DEBUG] [Thread-153473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:40.777 [DEBUG] [Thread-153473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:28:40.778 [INFO] [Thread-153473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:28:40.785 [DEBUG] [Thread-153473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:40.785 [DEBUG] [Thread-153473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:28:40.786 [DEBUG] [Thread-153473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:40.786 [DEBUG] [Thread-153473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:40.786 [DEBUG] [Thread-153473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:40.786 [DEBUG] [Thread-153473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:40.786 [DEBUG] [Thread-153473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:40.786 [DEBUG] [Thread-153473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:40.786 [DEBUG] [Thread-153473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] Compression: none
2025-09-29T10:28:40.787 [DEBUG] [Thread-153473] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:40.845 [DEBUG] [Thread-153473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:40.846 [DEBUG] [Thread-153473] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:40.846 [DEBUG] [Thread-153473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:28:40.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:28:40.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:40.901 [DEBUG] [Thread-153473] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:40.902 [DEBUG] [Thread-153473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:40.902 [DEBUG] [Thread-153473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:40.902 [DEBUG] [Thread-153473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:28:40.902 [DEBUG] [Thread-153473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:40.921 [INFO] [Thread-153473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:40.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:28:40.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:41.903 [DEBUG] [Thread-153473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:41.903 [DEBUG] [Thread-153473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:41.951 [DEBUG] [Thread-153473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:41.951 [DEBUG] [Thread-153473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:41.960 [DEBUG] [Thread-153473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:41.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:41.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:28:41.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:28:41.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:41.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:41.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:41.995 [DEBUG] [Thread-153473] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:42.911 [DEBUG] [Thread-153475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:28:51.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:28:51.998 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:28:52.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:28:52.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 28, 33), 7.98, 57.89, 0.0, 29.43, 11.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:28:52.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:28:33
2025-09-29T10:28:52.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:28:52.818 [DEBUG] [Thread-153476] [transport.py] [_log()] starting thread (client mode): 0x2e38c490
2025-09-29T10:28:52.819 [DEBUG] [Thread-153476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:52.843 [DEBUG] [Thread-153476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:28:52.843 [INFO] [Thread-153476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:28:52.845 [DEBUG] [Thread-153476] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:52.845 [DEBUG] [Thread-153476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:28:52.845 [DEBUG] [Thread-153476] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:52.845 [DEBUG] [Thread-153476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:52.845 [DEBUG] [Thread-153476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:52.845 [DEBUG] [Thread-153476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:52.845 [DEBUG] [Thread-153476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:52.845 [DEBUG] [Thread-153476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] Compression: none
2025-09-29T10:28:52.846 [DEBUG] [Thread-153476] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:52.856 [DEBUG] [Thread-153476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:52.857 [DEBUG] [Thread-153476] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:52.858 [DEBUG] [Thread-153476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:28:52.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:28:52.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:52.860 [DEBUG] [Thread-153476] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:52.860 [DEBUG] [Thread-153476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:52.861 [DEBUG] [Thread-153476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:52.861 [DEBUG] [Thread-153476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:28:52.861 [DEBUG] [Thread-153476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:52.885 [INFO] [Thread-153476] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:52.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:53.553 [DEBUG] [Thread-153476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:53.553 [DEBUG] [Thread-153476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:53.553 [DEBUG] [Thread-153476] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:28:53.594 [DEBUG] [Thread-153476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:53.594 [DEBUG] [Thread-153476] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:53.598 [DEBUG] [Thread-153476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:53.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:53.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:28:53.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:28:53.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:28:53.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:53.621 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:28:53.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:53.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:53.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:28:53.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.352851 -999.00  +11.60  28.32     61   +4.50 1 1 1 1 1   888    0 7.27 38.40 ----- 26.1 28.3 122.8 33.6 18.1 -28.3 16.8 -23.1 15.8 -24.4 16.9 -24.0
2025-09-29T10:28:53.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:28:53.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:28:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.352851
2025-09-29T10:28:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:28:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:28:53.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:28:53.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:28:53.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:28:53.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:28:33', tmtdew=7.98, humidity=57.89, cloud=0.0, wind=29.43, temperature=11.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:28:06.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:28:53.624 [DEBUG] [Thread-153476] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:53.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:28:53.727 [DEBUG] [Thread-153479] [transport.py] [_log()] starting thread (client mode): 0x2e3dda80
2025-09-29T10:28:53.727 [DEBUG] [Thread-153479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:28:53.742 [DEBUG] [Thread-153479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:28:53.742 [INFO] [Thread-153479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:28:53.749 [DEBUG] [Thread-153479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:28:53.749 [DEBUG] [Thread-153479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] client lang: <none>
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] server lang: <none>
2025-09-29T10:28:53.750 [DEBUG] [Thread-153479] [transport.py] [_log()] kex follows: False
2025-09-29T10:28:53.751 [DEBUG] [Thread-153479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:28:53.751 [DEBUG] [Thread-153479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:28:53.751 [DEBUG] [Thread-153479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:28:53.751 [DEBUG] [Thread-153479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:28:53.751 [DEBUG] [Thread-153479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:28:53.751 [DEBUG] [Thread-153479] [transport.py] [_log()] Compression: none
2025-09-29T10:28:53.751 [DEBUG] [Thread-153479] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:28:53.808 [DEBUG] [Thread-153479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:28:53.808 [DEBUG] [Thread-153479] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:28:53.809 [DEBUG] [Thread-153479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:28:53.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:28:53.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:28:53.864 [DEBUG] [Thread-153479] [transport.py] [_log()] userauth is OK
2025-09-29T10:28:53.864 [DEBUG] [Thread-153479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:28:53.864 [DEBUG] [Thread-153479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:28:53.865 [DEBUG] [Thread-153479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:28:53.865 [DEBUG] [Thread-153479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:28:53.883 [INFO] [Thread-153479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:28:53.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:28:53.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:28:54.902 [DEBUG] [Thread-153479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:28:54.902 [DEBUG] [Thread-153479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:28:54.949 [DEBUG] [Thread-153479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:28:54.949 [DEBUG] [Thread-153479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:28:54.958 [DEBUG] [Thread-153479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:28:54.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:28:54.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:28:54.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:28:54.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:28:54.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:28:54.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:28:54.991 [DEBUG] [Thread-153479] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:28:57.962 [DEBUG] [Thread-153481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:29:04.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:29:04.994 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:29:04.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:29:05.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 28, 33), 7.98, 57.89, 0.0, 29.43, 11.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:29:05.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:28:33
2025-09-29T10:29:05.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:29:05.815 [DEBUG] [Thread-153482] [transport.py] [_log()] starting thread (client mode): 0x2e3c32e0
2025-09-29T10:29:05.815 [DEBUG] [Thread-153482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:05.837 [DEBUG] [Thread-153482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:29:05.837 [INFO] [Thread-153482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:05.841 [DEBUG] [Thread-153482] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:05.842 [DEBUG] [Thread-153482] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:05.842 [DEBUG] [Thread-153482] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:05.842 [DEBUG] [Thread-153482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:05.842 [DEBUG] [Thread-153482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:05.842 [DEBUG] [Thread-153482] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:05.842 [DEBUG] [Thread-153482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:05.842 [DEBUG] [Thread-153482] [transport.py] [_log()] Compression: none
2025-09-29T10:29:05.842 [DEBUG] [Thread-153482] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:05.860 [DEBUG] [Thread-153482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:05.860 [DEBUG] [Thread-153482] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:05.861 [DEBUG] [Thread-153482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:29:05.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:29:05.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:05.863 [DEBUG] [Thread-153482] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:05.863 [DEBUG] [Thread-153482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:05.863 [DEBUG] [Thread-153482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:05.863 [DEBUG] [Thread-153482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:29:05.863 [DEBUG] [Thread-153482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:05.883 [INFO] [Thread-153482] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:05.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:06.518 [DEBUG] [Thread-153482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:06.519 [DEBUG] [Thread-153482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:06.519 [DEBUG] [Thread-153482] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:29:06.560 [DEBUG] [Thread-153482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:06.560 [DEBUG] [Thread-153482] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:06.562 [DEBUG] [Thread-153482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:06.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:06.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:29:06.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:29:06.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:29:06.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:06.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:29:06.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.352851 -999.00  +11.60  28.32     61   +4.50 1 1 1 1 1   888    0 7.27 38.40 ----- 26.1 28.3 122.8 33.6 18.1 -28.3 16.8 -23.1 15.8 -24.4 16.9 -24.0
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.352851
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:29:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:28:33', tmtdew=7.98, humidity=57.89, cloud=0.0, wind=29.43, temperature=11.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:28:06.326', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:29:06.582 [DEBUG] [Thread-153482] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:06.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:29:06.666 [DEBUG] [Thread-153485] [transport.py] [_log()] starting thread (client mode): 0x2e3c0490
2025-09-29T10:29:06.667 [DEBUG] [Thread-153485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:06.681 [DEBUG] [Thread-153485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:29:06.681 [INFO] [Thread-153485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] Compression: none
2025-09-29T10:29:06.689 [DEBUG] [Thread-153485] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:06.747 [DEBUG] [Thread-153485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:06.747 [DEBUG] [Thread-153485] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:06.747 [DEBUG] [Thread-153485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:29:06.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:29:06.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:06.804 [DEBUG] [Thread-153485] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:06.804 [DEBUG] [Thread-153485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:06.804 [DEBUG] [Thread-153485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:06.804 [DEBUG] [Thread-153485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:29:06.804 [DEBUG] [Thread-153485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:06.820 [INFO] [Thread-153485] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:06.821 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:29:06.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:07.809 [DEBUG] [Thread-153485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:07.809 [DEBUG] [Thread-153485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:07.857 [DEBUG] [Thread-153485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:07.857 [DEBUG] [Thread-153485] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:07.865 [DEBUG] [Thread-153485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:07.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:07.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:29:07.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:29:07.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:07.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:07.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:07.896 [DEBUG] [Thread-153485] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:12.990 [DEBUG] [Thread-153487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:29:17.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:29:17.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:29:17.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:29:18.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 29, 5), 7.95, 57.94, 0.0, 26.68, 10.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:29:18.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:29:05
2025-09-29T10:29:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:29:18.719 [DEBUG] [Thread-153488] [transport.py] [_log()] starting thread (client mode): 0x2b9b9390
2025-09-29T10:29:18.719 [DEBUG] [Thread-153488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:18.739 [DEBUG] [Thread-153488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:29:18.739 [INFO] [Thread-153488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:29:18.742 [DEBUG] [Thread-153488] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:18.742 [DEBUG] [Thread-153488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:29:18.742 [DEBUG] [Thread-153488] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:18.743 [DEBUG] [Thread-153488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:18.744 [DEBUG] [Thread-153488] [transport.py] [_log()] Compression: none
2025-09-29T10:29:18.744 [DEBUG] [Thread-153488] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:18.753 [DEBUG] [Thread-153488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:18.754 [DEBUG] [Thread-153488] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:18.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:29:18.755 [DEBUG] [Thread-153488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:29:18.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:18.796 [DEBUG] [Thread-153488] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:18.797 [DEBUG] [Thread-153488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:18.797 [DEBUG] [Thread-153488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:18.797 [DEBUG] [Thread-153488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:29:18.798 [DEBUG] [Thread-153488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:18.819 [INFO] [Thread-153488] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:18.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:19.491 [DEBUG] [Thread-153488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:19.491 [DEBUG] [Thread-153488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:19.492 [DEBUG] [Thread-153488] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:29:19.532 [DEBUG] [Thread-153488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:19.532 [DEBUG] [Thread-153488] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:19.535 [DEBUG] [Thread-153488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:19.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:19.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:29:19.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:29:19.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:29:19.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:19.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:29:19.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:19.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:19.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:29:19.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.353198 -999.00  +11.20  24.15     62   +4.30 1 1 1 1 1   888    0 7.38 39.38 ----- 24.6 24.1 141.4 32.2 17.8 -25.3 16.8 -26.3 15.7 -26.3 16.7 -27.6
2025-09-29T10:29:19.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:29:19.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:29:19.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.353198
2025-09-29T10:29:19.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:29:19.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:29:19.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:29:19.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:29:19.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:29:19.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:29:05', tmtdew=7.95, humidity=57.94, cloud=0.0, wind=26.68, temperature=10.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:28:36.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:29:19.561 [DEBUG] [Thread-153488] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:19.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:29:19.657 [DEBUG] [Thread-153491] [transport.py] [_log()] starting thread (client mode): 0x2e38d7e0
2025-09-29T10:29:19.657 [DEBUG] [Thread-153491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:19.675 [DEBUG] [Thread-153491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:29:19.675 [INFO] [Thread-153491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:29:19.689 [DEBUG] [Thread-153491] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:19.690 [DEBUG] [Thread-153491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:19.691 [DEBUG] [Thread-153491] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:19.691 [DEBUG] [Thread-153491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:19.691 [DEBUG] [Thread-153491] [transport.py] [_log()] Compression: none
2025-09-29T10:29:19.691 [DEBUG] [Thread-153491] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:19.746 [DEBUG] [Thread-153491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:19.746 [DEBUG] [Thread-153491] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:19.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:29:19.747 [DEBUG] [Thread-153491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:29:19.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:19.805 [DEBUG] [Thread-153491] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:19.805 [DEBUG] [Thread-153491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:19.805 [DEBUG] [Thread-153491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:19.805 [DEBUG] [Thread-153491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:29:19.806 [DEBUG] [Thread-153491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:19.825 [INFO] [Thread-153491] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:19.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:29:19.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:20.791 [DEBUG] [Thread-153491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:20.791 [DEBUG] [Thread-153491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:20.839 [DEBUG] [Thread-153491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:20.839 [DEBUG] [Thread-153491] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:20.848 [DEBUG] [Thread-153491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:20.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:20.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:29:20.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:29:20.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:20.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:20.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:20.882 [DEBUG] [Thread-153491] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:28.021 [DEBUG] [Thread-153493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:29:30.309 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:29:30.311 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:29:30.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:29:30.885 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:29:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:29:31.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 29, 5), 7.95, 57.94, 0.0, 26.68, 10.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:29:31.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:29:05
2025-09-29T10:29:31.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:29:31.707 [DEBUG] [Thread-153494] [transport.py] [_log()] starting thread (client mode): 0x2e3c1480
2025-09-29T10:29:31.707 [DEBUG] [Thread-153494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:31.728 [DEBUG] [Thread-153494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:29:31.728 [INFO] [Thread-153494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] Compression: none
2025-09-29T10:29:31.732 [DEBUG] [Thread-153494] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:31.749 [DEBUG] [Thread-153494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:31.749 [DEBUG] [Thread-153494] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:31.750 [DEBUG] [Thread-153494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:29:31.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:29:31.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:31.751 [DEBUG] [Thread-153494] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:31.751 [DEBUG] [Thread-153494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:31.752 [DEBUG] [Thread-153494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:31.752 [DEBUG] [Thread-153494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:29:31.752 [DEBUG] [Thread-153494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:31.774 [INFO] [Thread-153494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:31.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:32.429 [DEBUG] [Thread-153494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:32.430 [DEBUG] [Thread-153494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:32.430 [DEBUG] [Thread-153494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:29:32.470 [DEBUG] [Thread-153494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:32.470 [DEBUG] [Thread-153494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:32.473 [DEBUG] [Thread-153494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:32.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:32.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:29:32.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:29:32.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:29:32.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:32.494 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:29:32.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:32.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:32.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:29:32.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.353198 -999.00  +11.20  24.15     62   +4.30 1 1 1 1 1   888    0 7.38 39.38 ----- 24.6 24.1 141.4 32.2 17.8 -25.3 16.8 -26.3 15.7 -26.3 16.7 -27.6
2025-09-29T10:29:32.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:29:32.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:29:32.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.353198
2025-09-29T10:29:32.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:29:32.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:29:32.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:29:32.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:29:32.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:29:32.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:29:05', tmtdew=7.95, humidity=57.94, cloud=0.0, wind=26.68, temperature=10.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:28:36.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:29:32.497 [DEBUG] [Thread-153494] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:32.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:29:32.592 [DEBUG] [Thread-153497] [transport.py] [_log()] starting thread (client mode): 0x2e3c1030
2025-09-29T10:29:32.592 [DEBUG] [Thread-153497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:32.608 [DEBUG] [Thread-153497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:29:32.608 [INFO] [Thread-153497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:29:32.615 [DEBUG] [Thread-153497] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:32.616 [DEBUG] [Thread-153497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:29:32.616 [DEBUG] [Thread-153497] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:32.616 [DEBUG] [Thread-153497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:32.616 [DEBUG] [Thread-153497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:32.616 [DEBUG] [Thread-153497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] Compression: none
2025-09-29T10:29:32.617 [DEBUG] [Thread-153497] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:32.674 [DEBUG] [Thread-153497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:32.675 [DEBUG] [Thread-153497] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:32.675 [DEBUG] [Thread-153497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:29:32.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:29:32.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:32.731 [DEBUG] [Thread-153497] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:32.731 [DEBUG] [Thread-153497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:32.732 [DEBUG] [Thread-153497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:32.732 [DEBUG] [Thread-153497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:29:32.732 [DEBUG] [Thread-153497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:32.751 [INFO] [Thread-153497] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:32.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:29:32.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:32.968 [DEBUG] [Thread-153499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:29:33.743 [DEBUG] [Thread-153497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:33.743 [DEBUG] [Thread-153497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:33.791 [DEBUG] [Thread-153497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:33.791 [DEBUG] [Thread-153497] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:33.799 [DEBUG] [Thread-153497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:33.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:33.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:29:33.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:29:33.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:33.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:33.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:33.831 [DEBUG] [Thread-153497] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:43.071 [DEBUG] [Thread-153500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:29:43.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:29:43.828 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:29:43.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:29:44.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 29, 37), 7.76, 58.62, 0.0, 29.86, 10.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:29:44.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:29:37
2025-09-29T10:29:44.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:29:44.667 [DEBUG] [Thread-153501] [transport.py] [_log()] starting thread (client mode): 0x2e3dd5a0
2025-09-29T10:29:44.667 [DEBUG] [Thread-153501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:44.681 [DEBUG] [Thread-153501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:29:44.681 [INFO] [Thread-153501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] Compression: none
2025-09-29T10:29:44.684 [DEBUG] [Thread-153501] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:44.698 [DEBUG] [Thread-153501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:44.699 [DEBUG] [Thread-153501] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:44.699 [DEBUG] [Thread-153501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:29:44.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:29:44.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:44.701 [DEBUG] [Thread-153501] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:44.701 [DEBUG] [Thread-153501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:44.701 [DEBUG] [Thread-153501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:44.701 [DEBUG] [Thread-153501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:29:44.701 [DEBUG] [Thread-153501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:44.725 [INFO] [Thread-153501] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:44.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:45.341 [DEBUG] [Thread-153501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:45.341 [DEBUG] [Thread-153501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:45.341 [DEBUG] [Thread-153501] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:29:45.382 [DEBUG] [Thread-153501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:45.382 [DEBUG] [Thread-153501] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:45.394 [DEBUG] [Thread-153501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:45.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:45.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:29:45.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:29:45.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:29:45.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:45.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:29:45.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.353892 -999.00  +11.00  25.68     63   +4.20 1 1 1 1 1   888    0 7.25 37.54 ----- 18.6 25.7 141.6 30.4 17.9 -24.8 16.8 -24.7 15.7 -24.3 16.8 -26.0
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.353892
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:29:45.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:29:45.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:29:45.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:29:45.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:29:37', tmtdew=7.76, humidity=58.62, cloud=0.0, wind=29.86, temperature=10.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:29:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:29:45.406 [DEBUG] [Thread-153501] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:45.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:29:45.498 [DEBUG] [Thread-153504] [transport.py] [_log()] starting thread (client mode): 0x2e3c2290
2025-09-29T10:29:45.498 [DEBUG] [Thread-153504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:45.513 [DEBUG] [Thread-153504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:29:45.513 [INFO] [Thread-153504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:45.520 [DEBUG] [Thread-153504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:45.521 [DEBUG] [Thread-153504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:45.521 [DEBUG] [Thread-153504] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:45.521 [DEBUG] [Thread-153504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:45.521 [DEBUG] [Thread-153504] [transport.py] [_log()] Compression: none
2025-09-29T10:29:45.521 [DEBUG] [Thread-153504] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:45.577 [DEBUG] [Thread-153504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:45.578 [DEBUG] [Thread-153504] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:45.578 [DEBUG] [Thread-153504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:29:45.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:29:45.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:45.634 [DEBUG] [Thread-153504] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:45.634 [DEBUG] [Thread-153504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:45.634 [DEBUG] [Thread-153504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:45.634 [DEBUG] [Thread-153504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:29:45.634 [DEBUG] [Thread-153504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:45.648 [INFO] [Thread-153504] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:45.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:29:45.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:46.647 [DEBUG] [Thread-153504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:46.648 [DEBUG] [Thread-153504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:46.696 [DEBUG] [Thread-153504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:46.696 [DEBUG] [Thread-153504] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:46.704 [DEBUG] [Thread-153504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:46.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:46.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:29:46.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:29:46.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:46.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:46.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:46.735 [DEBUG] [Thread-153504] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:56.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:29:56.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:29:56.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:29:57.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 29, 37), 7.76, 58.62, 0.0, 29.86, 10.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:29:57.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:29:37
2025-09-29T10:29:57.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:29:57.559 [DEBUG] [Thread-153506] [transport.py] [_log()] starting thread (client mode): 0x2e3c09a0
2025-09-29T10:29:57.559 [DEBUG] [Thread-153506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:57.581 [DEBUG] [Thread-153506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:29:57.581 [INFO] [Thread-153506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:29:57.584 [DEBUG] [Thread-153506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:57.584 [DEBUG] [Thread-153506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:29:57.584 [DEBUG] [Thread-153506] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] Compression: none
2025-09-29T10:29:57.585 [DEBUG] [Thread-153506] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:57.601 [DEBUG] [Thread-153506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:57.602 [DEBUG] [Thread-153506] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:57.602 [DEBUG] [Thread-153506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:29:57.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:29:57.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:57.605 [DEBUG] [Thread-153506] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:57.605 [DEBUG] [Thread-153506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:57.605 [DEBUG] [Thread-153506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:57.605 [DEBUG] [Thread-153506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:29:57.605 [DEBUG] [Thread-153506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:57.630 [INFO] [Thread-153506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:57.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:58.100 [DEBUG] [Thread-153508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:29:58.288 [DEBUG] [Thread-153506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:58.288 [DEBUG] [Thread-153506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:58.289 [DEBUG] [Thread-153506] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:29:58.329 [DEBUG] [Thread-153506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:58.329 [DEBUG] [Thread-153506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:58.332 [DEBUG] [Thread-153506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:58.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:58.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:29:58.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:29:58.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:29:58.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:58.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:29:58.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:58.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:29:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.353892 -999.00  +11.00  25.68     63   +4.20 1 1 1 1 1   888    0 7.25 37.54 ----- 18.6 25.7 141.6 30.4 17.9 -24.8 16.8 -24.7 15.7 -24.3 16.8 -26.0
2025-09-29T10:29:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:29:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:29:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.353892
2025-09-29T10:29:58.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:29:58.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:29:58.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:29:58.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:29:58.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:29:58.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:29:37', tmtdew=7.76, humidity=58.62, cloud=0.0, wind=29.86, temperature=10.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:29:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:29:58.358 [DEBUG] [Thread-153506] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:29:58.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:29:58.452 [DEBUG] [Thread-153510] [transport.py] [_log()] starting thread (client mode): 0x2e3dee90
2025-09-29T10:29:58.452 [DEBUG] [Thread-153510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:29:58.467 [DEBUG] [Thread-153510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:29:58.467 [INFO] [Thread-153510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:29:58.474 [DEBUG] [Thread-153510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] client lang: <none>
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] server lang: <none>
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] kex follows: False
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] Compression: none
2025-09-29T10:29:58.475 [DEBUG] [Thread-153510] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:29:58.534 [DEBUG] [Thread-153510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:29:58.535 [DEBUG] [Thread-153510] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:29:58.535 [DEBUG] [Thread-153510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:29:58.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:29:58.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:29:58.590 [DEBUG] [Thread-153510] [transport.py] [_log()] userauth is OK
2025-09-29T10:29:58.591 [DEBUG] [Thread-153510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:29:58.591 [DEBUG] [Thread-153510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:29:58.591 [DEBUG] [Thread-153510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:29:58.591 [DEBUG] [Thread-153510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:29:58.611 [INFO] [Thread-153510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:29:58.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:29:58.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:29:59.593 [DEBUG] [Thread-153510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:29:59.593 [DEBUG] [Thread-153510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:29:59.643 [DEBUG] [Thread-153510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:29:59.643 [DEBUG] [Thread-153510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:29:59.654 [DEBUG] [Thread-153510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:29:59.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:29:59.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:29:59.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:29:59.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:29:59.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:29:59.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:29:59.707 [DEBUG] [Thread-153510] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:09.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:30:09.706 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:30:09.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:30:10.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 29, 37), 7.76, 58.62, 0.0, 29.86, 10.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:30:10.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:29:37
2025-09-29T10:30:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:30:10.595 [DEBUG] [Thread-153512] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd90
2025-09-29T10:30:10.596 [DEBUG] [Thread-153512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:30:10.616 [DEBUG] [Thread-153512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:30:10.616 [INFO] [Thread-153512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:30:10.619 [DEBUG] [Thread-153512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] client lang: <none>
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] server lang: <none>
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] kex follows: False
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] Compression: none
2025-09-29T10:30:10.620 [DEBUG] [Thread-153512] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:30:10.636 [DEBUG] [Thread-153512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:30:10.636 [DEBUG] [Thread-153512] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:30:10.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:30:10.637 [DEBUG] [Thread-153512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:30:10.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:30:10.637 [DEBUG] [Thread-153512] [transport.py] [_log()] userauth is OK
2025-09-29T10:30:10.637 [DEBUG] [Thread-153512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:30:10.637 [DEBUG] [Thread-153512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:30:10.637 [DEBUG] [Thread-153512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:30:10.637 [DEBUG] [Thread-153512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:30:10.646 [INFO] [Thread-153512] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:30:10.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:30:13.144 [DEBUG] [Thread-153514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:30:13.696 [DEBUG] [Thread-153512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:30:13.697 [DEBUG] [Thread-153512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:30:13.697 [DEBUG] [Thread-153512] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:30:13.737 [DEBUG] [Thread-153512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:30:13.737 [DEBUG] [Thread-153512] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:30:13.741 [DEBUG] [Thread-153512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:30:13.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:30:13.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:30:13.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:30:13.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:30:13.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:30:13.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:30:13.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:30:13.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:30:13.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:30:13.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.353892 -999.00  +11.00  25.68     63   +4.20 1 1 1 1 1   888    0 7.25 37.54 ----- 18.6 25.7 141.6 30.4 17.9 -24.8 16.8 -24.7 15.7 -24.3 16.8 -26.0
2025-09-29T10:30:13.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:30:13.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:30:13.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.353892
2025-09-29T10:30:13.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:30:13.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:30:13.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:30:13.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:30:13.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:30:13.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:29:37', tmtdew=7.76, humidity=58.62, cloud=0.0, wind=29.86, temperature=10.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:29:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:30:13.782 [DEBUG] [Thread-153512] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:13.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:30:13.880 [DEBUG] [Thread-153516] [transport.py] [_log()] starting thread (client mode): 0x2b91dab0
2025-09-29T10:30:13.880 [DEBUG] [Thread-153516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:30:13.894 [DEBUG] [Thread-153516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:30:13.895 [INFO] [Thread-153516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:30:13.902 [DEBUG] [Thread-153516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:30:13.902 [DEBUG] [Thread-153516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] client lang: <none>
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] server lang: <none>
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] kex follows: False
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] Compression: none
2025-09-29T10:30:13.903 [DEBUG] [Thread-153516] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:30:13.961 [DEBUG] [Thread-153516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:30:13.961 [DEBUG] [Thread-153516] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:30:13.962 [DEBUG] [Thread-153516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:30:13.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:30:13.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:30:14.017 [DEBUG] [Thread-153516] [transport.py] [_log()] userauth is OK
2025-09-29T10:30:14.018 [DEBUG] [Thread-153516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:30:14.018 [DEBUG] [Thread-153516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:30:14.018 [DEBUG] [Thread-153516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:30:14.018 [DEBUG] [Thread-153516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:30:14.038 [INFO] [Thread-153516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:30:14.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:30:14.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:30:14.997 [DEBUG] [Thread-153516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:30:14.997 [DEBUG] [Thread-153516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:30:15.045 [DEBUG] [Thread-153516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:30:15.046 [DEBUG] [Thread-153516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:30:15.055 [DEBUG] [Thread-153516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:30:15.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:30:15.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:30:15.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:30:15.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:30:15.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:30:15.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:30:15.090 [DEBUG] [Thread-153516] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:25.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:30:25.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:30:25.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:30:25.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 30, 9), 7.73, 58.72, 0.0, 32.48, 10.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:30:25.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:30:09
2025-09-29T10:30:25.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:30:25.966 [DEBUG] [Thread-153518] [transport.py] [_log()] starting thread (client mode): 0x2b91ce80
2025-09-29T10:30:25.966 [DEBUG] [Thread-153518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:30:25.987 [DEBUG] [Thread-153518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:30:25.987 [INFO] [Thread-153518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:30:25.991 [DEBUG] [Thread-153518] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:30:25.991 [DEBUG] [Thread-153518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:30:25.991 [DEBUG] [Thread-153518] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:30:25.991 [DEBUG] [Thread-153518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:25.991 [DEBUG] [Thread-153518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:25.991 [DEBUG] [Thread-153518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] client lang: <none>
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] server lang: <none>
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] kex follows: False
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] Compression: none
2025-09-29T10:30:25.992 [DEBUG] [Thread-153518] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:30:26.007 [DEBUG] [Thread-153518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:30:26.007 [DEBUG] [Thread-153518] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:30:26.007 [DEBUG] [Thread-153518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:30:26.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:30:26.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:30:26.008 [DEBUG] [Thread-153518] [transport.py] [_log()] userauth is OK
2025-09-29T10:30:26.008 [DEBUG] [Thread-153518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:30:26.008 [DEBUG] [Thread-153518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:30:26.008 [DEBUG] [Thread-153518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:30:26.008 [DEBUG] [Thread-153518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:30:26.023 [INFO] [Thread-153518] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:30:26.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:30:26.612 [DEBUG] [Thread-153518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:30:26.612 [DEBUG] [Thread-153518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:30:26.612 [DEBUG] [Thread-153518] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:30:26.653 [DEBUG] [Thread-153518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:30:26.653 [DEBUG] [Thread-153518] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:30:26.655 [DEBUG] [Thread-153518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:30:26.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:30:26.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:30:26.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:30:26.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:30:26.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:30:26.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:30:26.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.354239 -999.00  +10.90  21.82     63   +4.20 1 1 1 1 1   888    0 7.39 41.42 ----- 21.4 21.8 168.0 25.7 17.9 -26.2 16.8 -23.7 15.8 -24.6 16.7 -24.0
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.354239
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:30:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:30:26.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:30:26.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:30:26.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:30:09', tmtdew=7.73, humidity=58.72, cloud=0.0, wind=32.48, temperature=10.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:30:06.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:30:26.673 [DEBUG] [Thread-153518] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:26.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:30:26.757 [DEBUG] [Thread-153521] [transport.py] [_log()] starting thread (client mode): 0x2b91d420
2025-09-29T10:30:26.757 [DEBUG] [Thread-153521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:30:26.772 [DEBUG] [Thread-153521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:30:26.772 [INFO] [Thread-153521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] client lang: <none>
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] server lang: <none>
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] kex follows: False
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:30:26.782 [DEBUG] [Thread-153521] [transport.py] [_log()] Compression: none
2025-09-29T10:30:26.783 [DEBUG] [Thread-153521] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:30:26.836 [DEBUG] [Thread-153521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:30:26.837 [DEBUG] [Thread-153521] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:30:26.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:30:26.837 [DEBUG] [Thread-153521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:30:26.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:30:26.893 [DEBUG] [Thread-153521] [transport.py] [_log()] userauth is OK
2025-09-29T10:30:26.893 [DEBUG] [Thread-153521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:30:26.893 [DEBUG] [Thread-153521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:30:26.893 [DEBUG] [Thread-153521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:30:26.893 [DEBUG] [Thread-153521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:30:26.907 [INFO] [Thread-153521] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:30:26.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:30:26.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:30:27.898 [DEBUG] [Thread-153521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:30:27.898 [DEBUG] [Thread-153521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:30:27.946 [DEBUG] [Thread-153521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:30:27.946 [DEBUG] [Thread-153521] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:30:27.954 [DEBUG] [Thread-153521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:30:27.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:30:27.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:30:27.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:30:27.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:30:27.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:30:27.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:30:27.985 [DEBUG] [Thread-153521] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:28.177 [DEBUG] [Thread-153523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:30:30.453 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:30:30.454 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:30:33.025 [DEBUG] [Thread-153524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:30:37.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:30:37.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:30:37.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:30:38.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 30, 9), 7.73, 58.72, 0.0, 32.48, 10.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:30:38.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:30:09
2025-09-29T10:30:38.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:30:38.812 [DEBUG] [Thread-153525] [transport.py] [_log()] starting thread (client mode): 0x2e3c0070
2025-09-29T10:30:38.812 [DEBUG] [Thread-153525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:30:38.834 [DEBUG] [Thread-153525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:30:38.834 [INFO] [Thread-153525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:30:38.837 [DEBUG] [Thread-153525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:30:38.837 [DEBUG] [Thread-153525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:30:38.837 [DEBUG] [Thread-153525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] client lang: <none>
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] server lang: <none>
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] kex follows: False
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] Compression: none
2025-09-29T10:30:38.838 [DEBUG] [Thread-153525] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:30:38.854 [DEBUG] [Thread-153525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:30:38.854 [DEBUG] [Thread-153525] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:30:38.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:30:38.855 [DEBUG] [Thread-153525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:30:38.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:30:38.857 [DEBUG] [Thread-153525] [transport.py] [_log()] userauth is OK
2025-09-29T10:30:38.857 [DEBUG] [Thread-153525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:30:38.857 [DEBUG] [Thread-153525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:30:38.857 [DEBUG] [Thread-153525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:30:38.857 [DEBUG] [Thread-153525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:30:38.882 [INFO] [Thread-153525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:30:38.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:30:41.996 [DEBUG] [Thread-153525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:30:41.996 [DEBUG] [Thread-153525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:30:41.996 [DEBUG] [Thread-153525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:30:42.037 [DEBUG] [Thread-153525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:30:42.037 [DEBUG] [Thread-153525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:30:42.039 [DEBUG] [Thread-153525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:30:42.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:30:42.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:30:42.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:30:42.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:30:42.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:30:42.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:30:42.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.354239 -999.00  +10.90  21.82     63   +4.20 1 1 1 1 1   888    0 7.39 41.42 ----- 21.4 21.8 168.0 25.7 17.9 -26.2 16.8 -23.7 15.8 -24.6 16.7 -24.0
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.354239
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:30:42.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:30:09', tmtdew=7.73, humidity=58.72, cloud=0.0, wind=32.48, temperature=10.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:30:06.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:30:42.057 [DEBUG] [Thread-153525] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:42.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:30:42.143 [DEBUG] [Thread-153528] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-29T10:30:42.143 [DEBUG] [Thread-153528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:30:42.158 [DEBUG] [Thread-153528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:30:42.158 [INFO] [Thread-153528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] client lang: <none>
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] server lang: <none>
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] kex follows: False
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] Compression: none
2025-09-29T10:30:42.166 [DEBUG] [Thread-153528] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:30:42.224 [DEBUG] [Thread-153528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:30:42.224 [DEBUG] [Thread-153528] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:30:42.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:30:42.224 [DEBUG] [Thread-153528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:30:42.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:30:42.280 [DEBUG] [Thread-153528] [transport.py] [_log()] userauth is OK
2025-09-29T10:30:42.281 [DEBUG] [Thread-153528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:30:42.281 [DEBUG] [Thread-153528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:30:42.281 [DEBUG] [Thread-153528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:30:42.281 [DEBUG] [Thread-153528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:30:42.298 [INFO] [Thread-153528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:30:42.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:30:42.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:30:43.210 [DEBUG] [Thread-153530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:30:43.280 [DEBUG] [Thread-153528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:30:43.280 [DEBUG] [Thread-153528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:30:43.328 [DEBUG] [Thread-153528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:30:43.328 [DEBUG] [Thread-153528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:30:43.336 [DEBUG] [Thread-153528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:30:43.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:30:43.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:30:43.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:30:43.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:30:43.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:30:43.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:30:43.368 [DEBUG] [Thread-153528] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:53.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:30:53.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:30:53.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:30:53.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 30, 41), 7.72, 58.57, 0.0, 30.51, 10.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:30:53.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:30:41
2025-09-29T10:30:54.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:30:54.225 [DEBUG] [Thread-153531] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd90
2025-09-29T10:30:54.225 [DEBUG] [Thread-153531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:30:54.244 [DEBUG] [Thread-153531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:30:54.244 [INFO] [Thread-153531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] client lang: <none>
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] server lang: <none>
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] kex follows: False
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:30:54.246 [DEBUG] [Thread-153531] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:30:54.247 [DEBUG] [Thread-153531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:30:54.247 [DEBUG] [Thread-153531] [transport.py] [_log()] Compression: none
2025-09-29T10:30:54.247 [DEBUG] [Thread-153531] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:30:54.256 [DEBUG] [Thread-153531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:30:54.257 [DEBUG] [Thread-153531] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:30:54.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:30:54.258 [DEBUG] [Thread-153531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:30:54.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:30:54.260 [DEBUG] [Thread-153531] [transport.py] [_log()] userauth is OK
2025-09-29T10:30:54.260 [DEBUG] [Thread-153531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:30:54.260 [DEBUG] [Thread-153531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:30:54.260 [DEBUG] [Thread-153531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:30:54.260 [DEBUG] [Thread-153531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:30:54.278 [INFO] [Thread-153531] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:30:54.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:30:54.879 [DEBUG] [Thread-153531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:30:54.879 [DEBUG] [Thread-153531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:30:54.879 [DEBUG] [Thread-153531] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:30:54.920 [DEBUG] [Thread-153531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:30:54.920 [DEBUG] [Thread-153531] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:30:54.923 [DEBUG] [Thread-153531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:30:54.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:30:54.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:30:54.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:30:54.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:30:54.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:30:54.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:30:54.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:30:54.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:30:54.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:30:54.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.354587 -999.00  +10.90  23.63     62   +4.10 1 1 1 1 1   888    0 7.54 42.99 ----- 21.9 23.6 129.4 27.6 18.1 -24.5 16.8 -25.3 15.9 -23.9 16.9 -24.4
2025-09-29T10:30:54.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:30:54.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:30:54.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.354587
2025-09-29T10:30:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:30:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:30:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:30:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:30:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:30:54.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:30:41', tmtdew=7.72, humidity=58.57, cloud=0.0, wind=30.51, temperature=10.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:30:36.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:30:54.950 [DEBUG] [Thread-153531] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:55.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:30:55.044 [DEBUG] [Thread-153534] [transport.py] [_log()] starting thread (client mode): 0x2e3c2fb0
2025-09-29T10:30:55.044 [DEBUG] [Thread-153534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:30:55.059 [DEBUG] [Thread-153534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:30:55.059 [INFO] [Thread-153534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:30:55.067 [DEBUG] [Thread-153534] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:30:55.067 [DEBUG] [Thread-153534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:30:55.067 [DEBUG] [Thread-153534] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:30:55.067 [DEBUG] [Thread-153534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] client lang: <none>
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] server lang: <none>
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] kex follows: False
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] Compression: none
2025-09-29T10:30:55.068 [DEBUG] [Thread-153534] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:30:55.126 [DEBUG] [Thread-153534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:30:55.126 [DEBUG] [Thread-153534] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:30:55.126 [DEBUG] [Thread-153534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:30:55.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:30:55.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:30:55.184 [DEBUG] [Thread-153534] [transport.py] [_log()] userauth is OK
2025-09-29T10:30:55.184 [DEBUG] [Thread-153534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:30:55.184 [DEBUG] [Thread-153534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:30:55.184 [DEBUG] [Thread-153534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:30:55.184 [DEBUG] [Thread-153534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:30:55.203 [INFO] [Thread-153534] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:30:55.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:30:55.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:30:56.230 [DEBUG] [Thread-153534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:30:56.230 [DEBUG] [Thread-153534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:30:56.278 [DEBUG] [Thread-153534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:30:56.278 [DEBUG] [Thread-153534] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:30:56.287 [DEBUG] [Thread-153534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:30:56.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:30:56.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:30:56.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:30:56.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:30:56.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:30:56.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:30:56.322 [DEBUG] [Thread-153534] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:30:58.237 [DEBUG] [Thread-153536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:31:06.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:31:06.324 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:31:06.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:31:06.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 30, 41), 7.72, 58.57, 0.0, 30.51, 10.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:31:06.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:30:41
2025-09-29T10:31:07.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:31:07.156 [DEBUG] [Thread-153537] [transport.py] [_log()] starting thread (client mode): 0x2e38cac0
2025-09-29T10:31:07.156 [DEBUG] [Thread-153537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:31:07.177 [DEBUG] [Thread-153537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:31:07.177 [INFO] [Thread-153537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:31:07.180 [DEBUG] [Thread-153537] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:31:07.180 [DEBUG] [Thread-153537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:31:07.180 [DEBUG] [Thread-153537] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] client lang: <none>
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] server lang: <none>
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] kex follows: False
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:31:07.181 [DEBUG] [Thread-153537] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:31:07.182 [DEBUG] [Thread-153537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:31:07.182 [DEBUG] [Thread-153537] [transport.py] [_log()] Compression: none
2025-09-29T10:31:07.182 [DEBUG] [Thread-153537] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:31:07.199 [DEBUG] [Thread-153537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:31:07.200 [DEBUG] [Thread-153537] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:31:07.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:31:07.201 [DEBUG] [Thread-153537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:31:07.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:31:07.203 [DEBUG] [Thread-153537] [transport.py] [_log()] userauth is OK
2025-09-29T10:31:07.203 [DEBUG] [Thread-153537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:31:07.203 [DEBUG] [Thread-153537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:31:07.203 [DEBUG] [Thread-153537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:31:07.203 [DEBUG] [Thread-153537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:31:07.224 [INFO] [Thread-153537] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:31:07.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:31:08.028 [DEBUG] [Thread-153537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:31:08.028 [DEBUG] [Thread-153537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:31:08.028 [DEBUG] [Thread-153537] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:31:08.069 [DEBUG] [Thread-153537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:31:08.069 [DEBUG] [Thread-153537] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:31:08.071 [DEBUG] [Thread-153537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:31:08.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:31:08.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:31:08.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:31:08.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:31:08.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:31:08.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:31:08.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:31:08.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:31:08.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:31:08.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.354587 -999.00  +10.90  23.63     62   +4.10 1 1 1 1 1   888    0 7.54 42.99 ----- 21.9 23.6 129.4 27.6 18.1 -24.5 16.8 -25.3 15.9 -23.9 16.9 -24.4
2025-09-29T10:31:08.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:31:08.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:31:08.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.354587
2025-09-29T10:31:08.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:31:08.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:31:08.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:31:08.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:31:08.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:31:08.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:30:41', tmtdew=7.72, humidity=58.57, cloud=0.0, wind=30.51, temperature=10.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:30:36.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:31:08.096 [DEBUG] [Thread-153537] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:31:08.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:31:08.186 [DEBUG] [Thread-153540] [transport.py] [_log()] starting thread (client mode): 0x2e38ff10
2025-09-29T10:31:08.186 [DEBUG] [Thread-153540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:31:08.202 [DEBUG] [Thread-153540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:31:08.202 [INFO] [Thread-153540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] client lang: <none>
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] server lang: <none>
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] kex follows: False
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] Compression: none
2025-09-29T10:31:08.210 [DEBUG] [Thread-153540] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:31:08.267 [DEBUG] [Thread-153540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:31:08.267 [DEBUG] [Thread-153540] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:31:08.267 [DEBUG] [Thread-153540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:31:08.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:31:08.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:31:08.324 [DEBUG] [Thread-153540] [transport.py] [_log()] userauth is OK
2025-09-29T10:31:08.324 [DEBUG] [Thread-153540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:31:08.324 [DEBUG] [Thread-153540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:31:08.325 [DEBUG] [Thread-153540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:31:08.325 [DEBUG] [Thread-153540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:31:08.347 [INFO] [Thread-153540] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:31:08.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:31:08.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:31:09.358 [DEBUG] [Thread-153540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:31:09.359 [DEBUG] [Thread-153540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:31:09.406 [DEBUG] [Thread-153540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:31:09.406 [DEBUG] [Thread-153540] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:31:09.416 [DEBUG] [Thread-153540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:31:09.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:31:09.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:31:09.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:31:09.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:31:09.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:31:09.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:31:09.450 [DEBUG] [Thread-153540] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:31:13.277 [DEBUG] [Thread-153542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:31:19.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:31:19.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:31:19.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:31:20.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 31, 13), 7.74, 58.49, 0.0, 29.84, 10.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:31:20.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:31:13
2025-09-29T10:31:20.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:31:20.298 [DEBUG] [Thread-153543] [transport.py] [_log()] starting thread (client mode): 0x28707100
2025-09-29T10:31:20.298 [DEBUG] [Thread-153543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:31:20.320 [DEBUG] [Thread-153543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:31:20.320 [INFO] [Thread-153543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:31:20.323 [DEBUG] [Thread-153543] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:31:20.323 [DEBUG] [Thread-153543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:31:20.323 [DEBUG] [Thread-153543] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:31:20.323 [DEBUG] [Thread-153543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:31:20.323 [DEBUG] [Thread-153543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:31:20.323 [DEBUG] [Thread-153543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] client lang: <none>
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] server lang: <none>
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] kex follows: False
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] Compression: none
2025-09-29T10:31:20.324 [DEBUG] [Thread-153543] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:31:20.332 [DEBUG] [Thread-153543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:31:20.332 [DEBUG] [Thread-153543] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:31:20.333 [DEBUG] [Thread-153543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:31:20.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:31:20.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:31:20.334 [DEBUG] [Thread-153543] [transport.py] [_log()] userauth is OK
2025-09-29T10:31:20.334 [DEBUG] [Thread-153543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:31:20.334 [DEBUG] [Thread-153543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:31:20.334 [DEBUG] [Thread-153543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:31:20.334 [DEBUG] [Thread-153543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:31:20.347 [INFO] [Thread-153543] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:31:20.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:31:21.125 [DEBUG] [Thread-153543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:31:21.125 [DEBUG] [Thread-153543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:31:21.125 [DEBUG] [Thread-153543] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:31:21.165 [DEBUG] [Thread-153543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:31:21.165 [DEBUG] [Thread-153543] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:31:21.168 [DEBUG] [Thread-153543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:31:21.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:31:21.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:31:21.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:31:21.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:31:21.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:31:21.191 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:31:21.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:31:21.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:31:21.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:31:21.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.354587 -999.00  +10.90  23.63     62   +4.10 1 1 1 1 1   888    0 7.54 42.99 ----- 21.9 23.6 129.4 27.6 18.1 -24.5 16.8 -25.3 15.9 -23.9 16.9 -24.4
2025-09-29T10:31:21.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:31:21.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:31:21.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.354587
2025-09-29T10:31:21.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:31:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:31:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:31:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:31:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:31:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:31:13', tmtdew=7.74, humidity=58.49, cloud=0.0, wind=29.84, temperature=10.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:30:36.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:31:21.193 [DEBUG] [Thread-153543] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:31:21.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:31:28.307 [DEBUG] [Thread-153546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:31:30.596 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:31:30.597 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:31:33.060 [DEBUG] [Thread-153547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:31:43.349 [DEBUG] [Thread-153548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:31:58.375 [DEBUG] [Thread-153549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:32:13.406 [DEBUG] [Thread-153550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:32:28.434 [DEBUG] [Thread-153551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:32:30.738 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:32:30.740 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:32:33.109 [DEBUG] [Thread-153552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:32:43.464 [DEBUG] [Thread-153553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:32:58.492 [DEBUG] [Thread-153554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:33:13.518 [DEBUG] [Thread-153555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:33:28.549 [DEBUG] [Thread-153556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:33:30.882 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:33:30.883 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:33:33.173 [DEBUG] [Thread-153557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:33:33.371 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T10:33:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:33:43.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:33:43.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:33:43.576 [DEBUG] [Thread-153558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:33:43.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 33, 21), 7.93, 57.99, 0.0, 25.27, 10.64, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:33:43.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:33:21
2025-09-29T10:33:44.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:33:44.244 [DEBUG] [Thread-153559] [transport.py] [_log()] starting thread (client mode): 0x2e38d030
2025-09-29T10:33:44.244 [DEBUG] [Thread-153559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:33:44.265 [DEBUG] [Thread-153559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:33:44.265 [INFO] [Thread-153559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:33:44.267 [DEBUG] [Thread-153559] [transport.py] [_log()] client lang: <none>
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] server lang: <none>
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] kex follows: False
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] Compression: none
2025-09-29T10:33:44.268 [DEBUG] [Thread-153559] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:33:44.282 [DEBUG] [Thread-153559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:33:44.282 [DEBUG] [Thread-153559] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:33:44.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:33:44.283 [DEBUG] [Thread-153559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:33:44.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:33:44.285 [DEBUG] [Thread-153559] [transport.py] [_log()] userauth is OK
2025-09-29T10:33:44.285 [DEBUG] [Thread-153559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:33:44.285 [DEBUG] [Thread-153559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:33:44.285 [DEBUG] [Thread-153559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:33:44.286 [DEBUG] [Thread-153559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:33:44.309 [INFO] [Thread-153559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:33:44.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:33:44.962 [DEBUG] [Thread-153559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:33:44.962 [DEBUG] [Thread-153559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:33:44.962 [DEBUG] [Thread-153559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:33:45.003 [DEBUG] [Thread-153559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:33:45.003 [DEBUG] [Thread-153559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:33:45.006 [DEBUG] [Thread-153559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:33:45.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:33:45.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:33:45.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:33:45.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:33:45.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:33:45.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:33:45.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:33:45.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:33:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:33:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.356670 -999.00  +11.20  25.03     62   +4.20 1 1 1 1 1   888    0 7.76 49.77 ----- 25.9 25.0 154.4 35.3 18.2 -27.4 17.1 -23.7 16.1 -25.0 17.2 -24.1
2025-09-29T10:33:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:33:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:33:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.356670
2025-09-29T10:33:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:33:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:33:45.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:33:45.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:33:45.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:33:45.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:33:21', tmtdew=7.93, humidity=57.99, cloud=0.0, wind=25.27, temperature=10.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:33:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:33:45.032 [DEBUG] [Thread-153559] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:33:45.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:33:45.129 [DEBUG] [Thread-153562] [transport.py] [_log()] starting thread (client mode): 0x2e34be80
2025-09-29T10:33:45.129 [DEBUG] [Thread-153562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:33:45.144 [DEBUG] [Thread-153562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:33:45.144 [INFO] [Thread-153562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:33:45.151 [DEBUG] [Thread-153562] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] client lang: <none>
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] server lang: <none>
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] kex follows: False
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] Compression: none
2025-09-29T10:33:45.152 [DEBUG] [Thread-153562] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:33:45.211 [DEBUG] [Thread-153562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:33:45.212 [DEBUG] [Thread-153562] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:33:45.212 [DEBUG] [Thread-153562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:33:45.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:33:45.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:33:45.268 [DEBUG] [Thread-153562] [transport.py] [_log()] userauth is OK
2025-09-29T10:33:45.268 [DEBUG] [Thread-153562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:33:45.268 [DEBUG] [Thread-153562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:33:45.268 [DEBUG] [Thread-153562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:33:45.268 [DEBUG] [Thread-153562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:33:45.287 [INFO] [Thread-153562] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:33:45.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:33:45.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:33:46.280 [DEBUG] [Thread-153562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:33:46.280 [DEBUG] [Thread-153562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:33:46.328 [DEBUG] [Thread-153562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:33:46.328 [DEBUG] [Thread-153562] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:33:46.337 [DEBUG] [Thread-153562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:33:46.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:33:46.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:33:46.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:33:46.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:33:46.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:33:46.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:33:46.375 [DEBUG] [Thread-153562] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:33:56.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:33:56.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:33:56.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:33:56.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 33, 53), 8.11, 57.64, 0.0, 30.17, 11.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:33:56.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:33:53
2025-09-29T10:33:57.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:33:57.213 [DEBUG] [Thread-153564] [transport.py] [_log()] starting thread (client mode): 0x2b91fdf0
2025-09-29T10:33:57.214 [DEBUG] [Thread-153564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:33:57.233 [DEBUG] [Thread-153564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:33:57.233 [INFO] [Thread-153564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] client lang: <none>
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] server lang: <none>
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] kex follows: False
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] Compression: none
2025-09-29T10:33:57.236 [DEBUG] [Thread-153564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:33:57.253 [DEBUG] [Thread-153564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:33:57.254 [DEBUG] [Thread-153564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:33:57.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:33:57.255 [DEBUG] [Thread-153564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:33:57.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:33:57.256 [DEBUG] [Thread-153564] [transport.py] [_log()] userauth is OK
2025-09-29T10:33:57.256 [DEBUG] [Thread-153564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:33:57.257 [DEBUG] [Thread-153564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:33:57.257 [DEBUG] [Thread-153564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:33:57.257 [DEBUG] [Thread-153564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:33:57.292 [INFO] [Thread-153564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:33:57.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:33:57.959 [DEBUG] [Thread-153564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:33:57.959 [DEBUG] [Thread-153564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:33:57.960 [DEBUG] [Thread-153564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:33:58.000 [DEBUG] [Thread-153564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:33:58.000 [DEBUG] [Thread-153564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:33:58.003 [DEBUG] [Thread-153564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:33:58.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:33:58.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:33:58.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:33:58.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:33:58.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:33:58.020 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:33:58.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.356670 -999.00  +11.20  25.03     62   +4.20 1 1 1 1 1   888    0 7.76 49.77 ----- 25.9 25.0 154.4 35.3 18.2 -27.4 17.1 -23.7 16.1 -25.0 17.2 -24.1
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.356670
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:33:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:33:58.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:33:53', tmtdew=8.11, humidity=57.64, cloud=0.0, wind=30.17, temperature=11.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:33:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:33:58.021 [DEBUG] [Thread-153564] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:33:58.092 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:33:58.102 [DEBUG] [Thread-153567] [transport.py] [_log()] starting thread (client mode): 0x2b91fb20
2025-09-29T10:33:58.102 [DEBUG] [Thread-153567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:33:58.116 [DEBUG] [Thread-153567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:33:58.116 [INFO] [Thread-153567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] client lang: <none>
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] server lang: <none>
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] kex follows: False
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] Compression: none
2025-09-29T10:33:58.124 [DEBUG] [Thread-153567] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:33:58.183 [DEBUG] [Thread-153567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:33:58.184 [DEBUG] [Thread-153567] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:33:58.184 [DEBUG] [Thread-153567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:33:58.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:33:58.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:33:58.240 [DEBUG] [Thread-153567] [transport.py] [_log()] userauth is OK
2025-09-29T10:33:58.240 [DEBUG] [Thread-153567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:33:58.240 [DEBUG] [Thread-153567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:33:58.240 [DEBUG] [Thread-153567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:33:58.240 [DEBUG] [Thread-153567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:33:58.260 [INFO] [Thread-153567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:33:58.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:33:58.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:33:58.606 [DEBUG] [Thread-153569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:33:59.238 [DEBUG] [Thread-153567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:33:59.238 [DEBUG] [Thread-153567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:33:59.286 [DEBUG] [Thread-153567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:33:59.286 [DEBUG] [Thread-153567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:33:59.295 [DEBUG] [Thread-153567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:33:59.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:33:59.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:33:59.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:33:59.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:33:59.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:33:59.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:33:59.339 [DEBUG] [Thread-153567] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:09.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:34:09.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:34:09.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:34:09.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 33, 53), 8.11, 57.64, 0.0, 30.17, 11.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:34:09.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:33:53
2025-09-29T10:34:10.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:34:10.194 [DEBUG] [Thread-153570] [transport.py] [_log()] starting thread (client mode): 0x28705000
2025-09-29T10:34:10.194 [DEBUG] [Thread-153570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:34:10.214 [DEBUG] [Thread-153570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:34:10.214 [INFO] [Thread-153570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:34:10.217 [DEBUG] [Thread-153570] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:34:10.217 [DEBUG] [Thread-153570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:34:10.217 [DEBUG] [Thread-153570] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:34:10.217 [DEBUG] [Thread-153570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:10.217 [DEBUG] [Thread-153570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:10.217 [DEBUG] [Thread-153570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] client lang: <none>
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] server lang: <none>
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] kex follows: False
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] Compression: none
2025-09-29T10:34:10.218 [DEBUG] [Thread-153570] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:34:10.234 [DEBUG] [Thread-153570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:34:10.234 [DEBUG] [Thread-153570] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:34:10.235 [DEBUG] [Thread-153570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:34:10.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:34:10.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:34:10.237 [DEBUG] [Thread-153570] [transport.py] [_log()] userauth is OK
2025-09-29T10:34:10.237 [DEBUG] [Thread-153570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:34:10.237 [DEBUG] [Thread-153570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:34:10.237 [DEBUG] [Thread-153570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:34:10.237 [DEBUG] [Thread-153570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:34:10.255 [INFO] [Thread-153570] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:34:10.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:34:10.879 [DEBUG] [Thread-153570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:34:10.880 [DEBUG] [Thread-153570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:34:10.880 [DEBUG] [Thread-153570] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:34:10.920 [DEBUG] [Thread-153570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:34:10.921 [DEBUG] [Thread-153570] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:34:10.923 [DEBUG] [Thread-153570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:34:10.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:34:10.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:34:10.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:34:10.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:34:10.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:34:10.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:34:10.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:34:10.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:34:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:34:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.356670 -999.00  +11.20  25.03     62   +4.20 1 1 1 1 1   888    0 7.76 49.77 ----- 25.9 25.0 154.4 35.3 18.2 -27.4 17.1 -23.7 16.1 -25.0 17.2 -24.1
2025-09-29T10:34:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:34:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:34:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.356670
2025-09-29T10:34:10.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:34:10.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:34:10.949 [DEBUG] [Thread-153570] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:10.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:34:10.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:34:10.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:34:10.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:33:53', tmtdew=8.11, humidity=57.64, cloud=0.0, wind=30.17, temperature=11.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:33:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:34:11.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:34:11.046 [DEBUG] [Thread-153573] [transport.py] [_log()] starting thread (client mode): 0x2b9c32e0
2025-09-29T10:34:11.046 [DEBUG] [Thread-153573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:34:11.060 [DEBUG] [Thread-153573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:34:11.060 [INFO] [Thread-153573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:34:11.068 [DEBUG] [Thread-153573] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:34:11.068 [DEBUG] [Thread-153573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:34:11.068 [DEBUG] [Thread-153573] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:34:11.068 [DEBUG] [Thread-153573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:11.068 [DEBUG] [Thread-153573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:11.068 [DEBUG] [Thread-153573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] client lang: <none>
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] server lang: <none>
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] kex follows: False
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] Compression: none
2025-09-29T10:34:11.069 [DEBUG] [Thread-153573] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:34:11.127 [DEBUG] [Thread-153573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:34:11.127 [DEBUG] [Thread-153573] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:34:11.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:34:11.128 [DEBUG] [Thread-153573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:34:11.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:34:11.183 [DEBUG] [Thread-153573] [transport.py] [_log()] userauth is OK
2025-09-29T10:34:11.183 [DEBUG] [Thread-153573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:34:11.184 [DEBUG] [Thread-153573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:34:11.184 [DEBUG] [Thread-153573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:34:11.184 [DEBUG] [Thread-153573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:34:11.202 [INFO] [Thread-153573] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:34:11.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:34:11.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:34:12.180 [DEBUG] [Thread-153573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:34:12.180 [DEBUG] [Thread-153573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:34:12.228 [DEBUG] [Thread-153573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:34:12.228 [DEBUG] [Thread-153573] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:34:12.236 [DEBUG] [Thread-153573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:34:12.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:34:12.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:34:12.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:34:12.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:34:12.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:34:12.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:34:12.269 [DEBUG] [Thread-153573] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:13.651 [DEBUG] [Thread-153575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:34:22.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:34:22.271 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:34:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:34:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 33, 53), 8.11, 57.64, 0.0, 30.17, 11.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:34:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:33:53
2025-09-29T10:34:22.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:34:23.111 [DEBUG] [Thread-153576] [transport.py] [_log()] starting thread (client mode): 0x2b9c3f40
2025-09-29T10:34:23.112 [DEBUG] [Thread-153576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:34:23.133 [DEBUG] [Thread-153576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:34:23.133 [INFO] [Thread-153576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:34:23.136 [DEBUG] [Thread-153576] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:34:23.136 [DEBUG] [Thread-153576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:34:23.136 [DEBUG] [Thread-153576] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:34:23.136 [DEBUG] [Thread-153576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:23.136 [DEBUG] [Thread-153576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:23.136 [DEBUG] [Thread-153576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:23.136 [DEBUG] [Thread-153576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:23.136 [DEBUG] [Thread-153576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] client lang: <none>
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] server lang: <none>
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] kex follows: False
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] Compression: none
2025-09-29T10:34:23.137 [DEBUG] [Thread-153576] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:34:23.156 [DEBUG] [Thread-153576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:34:23.156 [DEBUG] [Thread-153576] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:34:23.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:34:23.157 [DEBUG] [Thread-153576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:34:23.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:34:23.159 [DEBUG] [Thread-153576] [transport.py] [_log()] userauth is OK
2025-09-29T10:34:23.160 [DEBUG] [Thread-153576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:34:23.160 [DEBUG] [Thread-153576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:34:23.160 [DEBUG] [Thread-153576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:34:23.160 [DEBUG] [Thread-153576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:34:23.175 [INFO] [Thread-153576] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:34:23.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:34:23.783 [DEBUG] [Thread-153576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:34:23.784 [DEBUG] [Thread-153576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:34:23.784 [DEBUG] [Thread-153576] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:34:23.824 [DEBUG] [Thread-153576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:34:23.824 [DEBUG] [Thread-153576] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:34:23.827 [DEBUG] [Thread-153576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:34:23.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:34:23.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:34:23.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:34:23.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:34:23.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:34:23.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:34:23.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:34:23.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:34:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:34:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.357017 -999.00  +10.90  19.04     63   +4.20 1 1 1 1 1   888    0 7.78 49.46 ----- 21.1 19.0 143.4 34.1 18.2 -25.0 17.1 -26.9 16.0 -26.0 17.1 -27.3
2025-09-29T10:34:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:34:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:34:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.357017
2025-09-29T10:34:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:34:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:34:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:34:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:34:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:34:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:33:53', tmtdew=8.11, humidity=57.64, cloud=0.0, wind=30.17, temperature=11.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:34:06.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:34:23.850 [DEBUG] [Thread-153576] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:23.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:34:23.943 [DEBUG] [Thread-153579] [transport.py] [_log()] starting thread (client mode): 0x28705cf0
2025-09-29T10:34:23.943 [DEBUG] [Thread-153579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:34:23.958 [DEBUG] [Thread-153579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:34:23.958 [INFO] [Thread-153579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:34:23.965 [DEBUG] [Thread-153579] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:34:23.965 [DEBUG] [Thread-153579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:34:23.965 [DEBUG] [Thread-153579] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] client lang: <none>
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] server lang: <none>
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] kex follows: False
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] Compression: none
2025-09-29T10:34:23.966 [DEBUG] [Thread-153579] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:34:24.027 [DEBUG] [Thread-153579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:34:24.027 [DEBUG] [Thread-153579] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:34:24.028 [DEBUG] [Thread-153579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:34:24.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:34:24.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:34:24.084 [DEBUG] [Thread-153579] [transport.py] [_log()] userauth is OK
2025-09-29T10:34:24.084 [DEBUG] [Thread-153579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:34:24.085 [DEBUG] [Thread-153579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:34:24.085 [DEBUG] [Thread-153579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:34:24.085 [DEBUG] [Thread-153579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:34:24.103 [INFO] [Thread-153579] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:34:24.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:34:24.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:34:25.103 [DEBUG] [Thread-153579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:34:25.104 [DEBUG] [Thread-153579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:34:25.151 [DEBUG] [Thread-153579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:34:25.151 [DEBUG] [Thread-153579] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:34:25.160 [DEBUG] [Thread-153579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:34:25.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:34:25.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:34:25.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:34:25.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:34:25.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:34:25.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:34:25.200 [DEBUG] [Thread-153579] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:28.675 [DEBUG] [Thread-153581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:34:31.026 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:34:31.027 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:34:33.224 [DEBUG] [Thread-153582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:34:35.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:34:35.194 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:34:35.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:34:35.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 34, 25), 8.18, 57.37, 0.0, 33.17, 11.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:34:35.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:34:25
2025-09-29T10:34:35.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:34:36.056 [DEBUG] [Thread-153583] [transport.py] [_log()] starting thread (client mode): 0x2e3c3580
2025-09-29T10:34:36.056 [DEBUG] [Thread-153583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:34:36.077 [DEBUG] [Thread-153583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:34:36.077 [INFO] [Thread-153583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:34:36.080 [DEBUG] [Thread-153583] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] client lang: <none>
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] server lang: <none>
2025-09-29T10:34:36.081 [DEBUG] [Thread-153583] [transport.py] [_log()] kex follows: False
2025-09-29T10:34:36.082 [DEBUG] [Thread-153583] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:34:36.082 [DEBUG] [Thread-153583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:34:36.082 [DEBUG] [Thread-153583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:34:36.082 [DEBUG] [Thread-153583] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:34:36.082 [DEBUG] [Thread-153583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:34:36.082 [DEBUG] [Thread-153583] [transport.py] [_log()] Compression: none
2025-09-29T10:34:36.082 [DEBUG] [Thread-153583] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:34:36.097 [DEBUG] [Thread-153583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:34:36.098 [DEBUG] [Thread-153583] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:34:36.098 [DEBUG] [Thread-153583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:34:36.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:34:36.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:34:36.100 [DEBUG] [Thread-153583] [transport.py] [_log()] userauth is OK
2025-09-29T10:34:36.100 [DEBUG] [Thread-153583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:34:36.100 [DEBUG] [Thread-153583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:34:36.101 [DEBUG] [Thread-153583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:34:36.101 [DEBUG] [Thread-153583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:34:36.124 [INFO] [Thread-153583] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:34:36.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:34:36.798 [DEBUG] [Thread-153583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:34:36.799 [DEBUG] [Thread-153583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:34:36.799 [DEBUG] [Thread-153583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:34:36.839 [DEBUG] [Thread-153583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:34:36.839 [DEBUG] [Thread-153583] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:34:36.842 [DEBUG] [Thread-153583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:34:36.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:34:36.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:34:36.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:34:36.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:34:36.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:34:36.865 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:34:36.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:34:36.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:34:36.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:34:36.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.357017 -999.00  +10.90  19.04     63   +4.20 1 1 1 1 1   888    0 7.78 49.46 ----- 21.1 19.0 143.4 34.1 18.2 -25.0 17.1 -26.9 16.0 -26.0 17.1 -27.3
2025-09-29T10:34:36.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:34:36.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:34:36.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.357017
2025-09-29T10:34:36.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:34:36.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:34:36.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:34:36.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:34:36.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:34:36.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:34:25', tmtdew=8.18, humidity=57.37, cloud=0.0, wind=33.17, temperature=11.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:34:06.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:34:36.868 [DEBUG] [Thread-153583] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:36.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:34:36.955 [DEBUG] [Thread-153586] [transport.py] [_log()] starting thread (client mode): 0x2e3c37c0
2025-09-29T10:34:36.955 [DEBUG] [Thread-153586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:34:36.970 [DEBUG] [Thread-153586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:34:36.970 [INFO] [Thread-153586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:34:36.977 [DEBUG] [Thread-153586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:34:36.977 [DEBUG] [Thread-153586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:34:36.977 [DEBUG] [Thread-153586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:34:36.977 [DEBUG] [Thread-153586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:36.977 [DEBUG] [Thread-153586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:36.977 [DEBUG] [Thread-153586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:36.977 [DEBUG] [Thread-153586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] client lang: <none>
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] server lang: <none>
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] kex follows: False
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] Compression: none
2025-09-29T10:34:36.978 [DEBUG] [Thread-153586] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:34:37.035 [DEBUG] [Thread-153586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:34:37.036 [DEBUG] [Thread-153586] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:34:37.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:34:37.037 [DEBUG] [Thread-153586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:34:37.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:34:37.091 [DEBUG] [Thread-153586] [transport.py] [_log()] userauth is OK
2025-09-29T10:34:37.091 [DEBUG] [Thread-153586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:34:37.091 [DEBUG] [Thread-153586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:34:37.091 [DEBUG] [Thread-153586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:34:37.091 [DEBUG] [Thread-153586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:34:37.111 [INFO] [Thread-153586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:34:37.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:34:37.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:34:38.090 [DEBUG] [Thread-153586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:34:38.090 [DEBUG] [Thread-153586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:34:38.138 [DEBUG] [Thread-153586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:34:38.138 [DEBUG] [Thread-153586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:34:38.147 [DEBUG] [Thread-153586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:34:38.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:34:38.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:34:38.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:34:38.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:34:38.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:34:38.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:34:38.182 [DEBUG] [Thread-153586] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:43.720 [DEBUG] [Thread-153588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:34:48.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:34:48.182 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:34:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:34:48.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 34, 25), 8.18, 57.37, 0.0, 33.17, 11.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:34:48.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:34:25
2025-09-29T10:34:48.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:34:49.028 [DEBUG] [Thread-153589] [transport.py] [_log()] starting thread (client mode): 0x2b9c1ff0
2025-09-29T10:34:49.028 [DEBUG] [Thread-153589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:34:49.049 [DEBUG] [Thread-153589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:34:49.049 [INFO] [Thread-153589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:34:49.052 [DEBUG] [Thread-153589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:34:49.052 [DEBUG] [Thread-153589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:34:49.052 [DEBUG] [Thread-153589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:34:49.052 [DEBUG] [Thread-153589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:49.052 [DEBUG] [Thread-153589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] client lang: <none>
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] server lang: <none>
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] kex follows: False
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] Compression: none
2025-09-29T10:34:49.053 [DEBUG] [Thread-153589] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:34:49.068 [DEBUG] [Thread-153589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:34:49.068 [DEBUG] [Thread-153589] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:34:49.069 [DEBUG] [Thread-153589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:34:49.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:34:49.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:34:49.070 [DEBUG] [Thread-153589] [transport.py] [_log()] userauth is OK
2025-09-29T10:34:49.071 [DEBUG] [Thread-153589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:34:49.071 [DEBUG] [Thread-153589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:34:49.071 [DEBUG] [Thread-153589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:34:49.071 [DEBUG] [Thread-153589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:34:49.094 [INFO] [Thread-153589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:34:49.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:34:49.705 [DEBUG] [Thread-153589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:34:49.706 [DEBUG] [Thread-153589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:34:49.706 [DEBUG] [Thread-153589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:34:49.746 [DEBUG] [Thread-153589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:34:49.746 [DEBUG] [Thread-153589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:34:49.749 [DEBUG] [Thread-153589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:34:49.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:34:49.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:34:49.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:34:49.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:34:49.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:34:49.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:34:49.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:34:49.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:34:49.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:34:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.357365 -999.00  +11.10  25.10     62   +4.20 1 1 1 1 1   888    0 7.83 47.59 ----- 24.5 25.1 132.6 29.2 18.3 -25.3 17.1 -24.6 16.1 -24.4 17.2 -24.9
2025-09-29T10:34:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:34:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:34:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.357365
2025-09-29T10:34:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:34:49.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:34:49.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:34:49.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:34:49.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:34:49.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:34:25', tmtdew=8.18, humidity=57.37, cloud=0.0, wind=33.17, temperature=11.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:34:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:34:49.773 [DEBUG] [Thread-153589] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:49.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:34:49.867 [DEBUG] [Thread-153592] [transport.py] [_log()] starting thread (client mode): 0x2b9b8850
2025-09-29T10:34:49.867 [DEBUG] [Thread-153592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:34:49.882 [DEBUG] [Thread-153592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:34:49.882 [INFO] [Thread-153592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:34:49.889 [DEBUG] [Thread-153592] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:34:49.890 [DEBUG] [Thread-153592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:34:49.890 [DEBUG] [Thread-153592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:34:49.890 [DEBUG] [Thread-153592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:49.890 [DEBUG] [Thread-153592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:34:49.890 [DEBUG] [Thread-153592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:49.890 [DEBUG] [Thread-153592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:34:49.890 [DEBUG] [Thread-153592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:34:49.890 [DEBUG] [Thread-153592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:34:49.891 [DEBUG] [Thread-153592] [transport.py] [_log()] client lang: <none>
2025-09-29T10:34:49.891 [DEBUG] [Thread-153592] [transport.py] [_log()] server lang: <none>
2025-09-29T10:34:49.891 [DEBUG] [Thread-153592] [transport.py] [_log()] kex follows: False
2025-09-29T10:34:49.891 [DEBUG] [Thread-153592] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:34:49.891 [DEBUG] [Thread-153592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:34:49.891 [DEBUG] [Thread-153592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:34:49.891 [DEBUG] [Thread-153592] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:34:49.891 [DEBUG] [Thread-153592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:34:49.892 [DEBUG] [Thread-153592] [transport.py] [_log()] Compression: none
2025-09-29T10:34:49.892 [DEBUG] [Thread-153592] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:34:49.947 [DEBUG] [Thread-153592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:34:49.947 [DEBUG] [Thread-153592] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:34:49.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:34:49.948 [DEBUG] [Thread-153592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:34:49.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:34:50.002 [DEBUG] [Thread-153592] [transport.py] [_log()] userauth is OK
2025-09-29T10:34:50.003 [DEBUG] [Thread-153592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:34:50.003 [DEBUG] [Thread-153592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:34:50.003 [DEBUG] [Thread-153592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:34:50.003 [DEBUG] [Thread-153592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:34:50.022 [INFO] [Thread-153592] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:34:50.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:34:50.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:34:51.044 [DEBUG] [Thread-153592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:34:51.044 [DEBUG] [Thread-153592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:34:51.092 [DEBUG] [Thread-153592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:34:51.092 [DEBUG] [Thread-153592] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:34:51.100 [DEBUG] [Thread-153592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:34:51.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:34:51.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:34:51.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:34:51.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:34:51.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:34:51.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:34:51.132 [DEBUG] [Thread-153592] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:34:58.761 [DEBUG] [Thread-153594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:35:01.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:35:01.135 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:35:01.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:35:01.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 34, 56), 8.11, 57.56, 0.0, 28.07, 11.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:35:01.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:34:56
2025-09-29T10:35:01.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:35:01.978 [DEBUG] [Thread-153595] [transport.py] [_log()] starting thread (client mode): 0x2b9c1780
2025-09-29T10:35:01.978 [DEBUG] [Thread-153595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:01.993 [DEBUG] [Thread-153595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:35:01.993 [INFO] [Thread-153595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] Compression: none
2025-09-29T10:35:01.996 [DEBUG] [Thread-153595] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:02.009 [DEBUG] [Thread-153595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:02.010 [DEBUG] [Thread-153595] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:02.010 [DEBUG] [Thread-153595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:35:02.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:35:02.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:02.012 [DEBUG] [Thread-153595] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:02.012 [DEBUG] [Thread-153595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:02.012 [DEBUG] [Thread-153595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:02.012 [DEBUG] [Thread-153595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:35:02.012 [DEBUG] [Thread-153595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:02.048 [INFO] [Thread-153595] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:02.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:02.688 [DEBUG] [Thread-153595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:02.688 [DEBUG] [Thread-153595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:02.688 [DEBUG] [Thread-153595] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:35:02.729 [DEBUG] [Thread-153595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:02.729 [DEBUG] [Thread-153595] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:02.731 [DEBUG] [Thread-153595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:02.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:02.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:35:02.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:35:02.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:35:02.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:02.753 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:35:02.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:02.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:02.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:35:02.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.357365 -999.00  +11.10  25.10     62   +4.20 1 1 1 1 1   888    0 7.83 47.59 ----- 24.5 25.1 132.6 29.2 18.3 -25.3 17.1 -24.6 16.1 -24.4 17.2 -24.9
2025-09-29T10:35:02.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:35:02.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:35:02.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.357365
2025-09-29T10:35:02.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:35:02.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:35:02.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:35:02.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:35:02.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:35:02.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:34:56', tmtdew=8.11, humidity=57.56, cloud=0.0, wind=28.07, temperature=11.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:34:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:35:02.756 [DEBUG] [Thread-153595] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:02.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:35:02.850 [DEBUG] [Thread-153598] [transport.py] [_log()] starting thread (client mode): 0x2b9c1120
2025-09-29T10:35:02.850 [DEBUG] [Thread-153598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:02.864 [DEBUG] [Thread-153598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:35:02.865 [INFO] [Thread-153598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:35:02.872 [DEBUG] [Thread-153598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:02.872 [DEBUG] [Thread-153598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:35:02.872 [DEBUG] [Thread-153598] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] Compression: none
2025-09-29T10:35:02.873 [DEBUG] [Thread-153598] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:02.933 [DEBUG] [Thread-153598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:02.933 [DEBUG] [Thread-153598] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:02.934 [DEBUG] [Thread-153598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:35:02.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:35:02.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:02.990 [DEBUG] [Thread-153598] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:02.990 [DEBUG] [Thread-153598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:02.991 [DEBUG] [Thread-153598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:02.991 [DEBUG] [Thread-153598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:35:02.991 [DEBUG] [Thread-153598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:03.011 [INFO] [Thread-153598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:03.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:35:03.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:04.027 [DEBUG] [Thread-153598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:04.027 [DEBUG] [Thread-153598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:04.075 [DEBUG] [Thread-153598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:04.075 [DEBUG] [Thread-153598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:04.083 [DEBUG] [Thread-153598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:04.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:04.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:35:04.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:35:04.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:04.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:04.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:04.115 [DEBUG] [Thread-153598] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:13.794 [DEBUG] [Thread-153600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:35:14.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:35:14.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:35:14.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:35:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 34, 56), 8.11, 57.56, 0.0, 28.07, 11.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:35:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:34:56
2025-09-29T10:35:14.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:35:14.955 [DEBUG] [Thread-153601] [transport.py] [_log()] starting thread (client mode): 0x2e34b130
2025-09-29T10:35:14.955 [DEBUG] [Thread-153601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:14.975 [DEBUG] [Thread-153601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:35:14.975 [INFO] [Thread-153601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:14.978 [DEBUG] [Thread-153601] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:14.979 [DEBUG] [Thread-153601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:14.979 [DEBUG] [Thread-153601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:14.979 [DEBUG] [Thread-153601] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:14.979 [DEBUG] [Thread-153601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:14.979 [DEBUG] [Thread-153601] [transport.py] [_log()] Compression: none
2025-09-29T10:35:14.979 [DEBUG] [Thread-153601] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:14.997 [DEBUG] [Thread-153601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:14.997 [DEBUG] [Thread-153601] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:14.998 [DEBUG] [Thread-153601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:35:14.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:35:14.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:15.040 [DEBUG] [Thread-153601] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:15.041 [DEBUG] [Thread-153601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:15.041 [DEBUG] [Thread-153601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:15.041 [DEBUG] [Thread-153601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:35:15.041 [DEBUG] [Thread-153601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:15.073 [INFO] [Thread-153601] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:15.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:15.677 [DEBUG] [Thread-153601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:15.678 [DEBUG] [Thread-153601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:15.678 [DEBUG] [Thread-153601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:35:15.718 [DEBUG] [Thread-153601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:15.718 [DEBUG] [Thread-153601] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:15.721 [DEBUG] [Thread-153601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:15.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:15.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:35:15.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:35:15.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:35:15.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:15.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:35:15.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:15.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:15.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:35:15.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.357365 -999.00  +11.10  25.10     62   +4.20 1 1 1 1 1   888    0 7.83 47.59 ----- 24.5 25.1 132.6 29.2 18.3 -25.3 17.1 -24.6 16.1 -24.4 17.2 -24.9
2025-09-29T10:35:15.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:35:15.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:35:15.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.357365
2025-09-29T10:35:15.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:35:15.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:35:15.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:35:15.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:35:15.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:35:15.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:34:56', tmtdew=8.11, humidity=57.56, cloud=0.0, wind=28.07, temperature=11.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:34:36.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:35:15.739 [DEBUG] [Thread-153601] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:15.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:35:15.836 [DEBUG] [Thread-153604] [transport.py] [_log()] starting thread (client mode): 0x2e34b370
2025-09-29T10:35:15.836 [DEBUG] [Thread-153604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:15.852 [DEBUG] [Thread-153604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:35:15.852 [INFO] [Thread-153604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:35:15.860 [DEBUG] [Thread-153604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:15.860 [DEBUG] [Thread-153604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:35:15.860 [DEBUG] [Thread-153604] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:15.860 [DEBUG] [Thread-153604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:15.860 [DEBUG] [Thread-153604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:15.860 [DEBUG] [Thread-153604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:15.860 [DEBUG] [Thread-153604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:15.860 [DEBUG] [Thread-153604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:15.861 [DEBUG] [Thread-153604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:15.861 [DEBUG] [Thread-153604] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:15.861 [DEBUG] [Thread-153604] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:15.861 [DEBUG] [Thread-153604] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:15.861 [DEBUG] [Thread-153604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:15.861 [DEBUG] [Thread-153604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:15.861 [DEBUG] [Thread-153604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:15.861 [DEBUG] [Thread-153604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:15.862 [DEBUG] [Thread-153604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:15.862 [DEBUG] [Thread-153604] [transport.py] [_log()] Compression: none
2025-09-29T10:35:15.862 [DEBUG] [Thread-153604] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:15.918 [DEBUG] [Thread-153604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:15.918 [DEBUG] [Thread-153604] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:15.919 [DEBUG] [Thread-153604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:35:15.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:35:15.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:15.974 [DEBUG] [Thread-153604] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:15.974 [DEBUG] [Thread-153604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:15.974 [DEBUG] [Thread-153604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:15.974 [DEBUG] [Thread-153604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:35:15.975 [DEBUG] [Thread-153604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:15.993 [INFO] [Thread-153604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:15.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:35:15.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:16.990 [DEBUG] [Thread-153604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:16.991 [DEBUG] [Thread-153604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:17.039 [DEBUG] [Thread-153604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:17.039 [DEBUG] [Thread-153604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:17.048 [DEBUG] [Thread-153604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:17.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:17.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:35:17.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:35:17.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:17.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:17.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:17.081 [DEBUG] [Thread-153604] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:27.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:35:27.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:35:27.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:35:27.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 34, 56), 8.11, 57.56, 0.0, 28.07, 11.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:35:27.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:34:56
2025-09-29T10:35:27.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:35:27.919 [DEBUG] [Thread-153606] [transport.py] [_log()] starting thread (client mode): 0x2b9c1750
2025-09-29T10:35:27.919 [DEBUG] [Thread-153606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:27.940 [DEBUG] [Thread-153606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:35:27.940 [INFO] [Thread-153606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] Compression: none
2025-09-29T10:35:27.944 [DEBUG] [Thread-153606] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:27.961 [DEBUG] [Thread-153606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:27.961 [DEBUG] [Thread-153606] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:27.962 [DEBUG] [Thread-153606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:35:27.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:35:27.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:27.964 [DEBUG] [Thread-153606] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:27.964 [DEBUG] [Thread-153606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:27.964 [DEBUG] [Thread-153606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:27.964 [DEBUG] [Thread-153606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:35:27.964 [DEBUG] [Thread-153606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:27.985 [INFO] [Thread-153606] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:27.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:28.650 [DEBUG] [Thread-153606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:28.650 [DEBUG] [Thread-153606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:28.650 [DEBUG] [Thread-153606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:35:28.691 [DEBUG] [Thread-153606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:28.691 [DEBUG] [Thread-153606] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:28.693 [DEBUG] [Thread-153606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:28.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:28.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:35:28.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:35:28.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:35:28.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:28.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:35:28.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.357711 -999.00  +10.80  22.41     63   +4.10 1 1 1 1 1   888    0 7.80 46.82 ----- 22.3 22.4 144.6 28.4 18.2 -25.9 17.1 -24.5 16.2 -25.3 17.2 -25.6
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.357711
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:35:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:34:56', tmtdew=8.11, humidity=57.56, cloud=0.0, wind=28.07, temperature=11.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:35:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:35:28.713 [DEBUG] [Thread-153606] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:28.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:35:28.797 [DEBUG] [Thread-153609] [transport.py] [_log()] starting thread (client mode): 0x2b9bb0d0
2025-09-29T10:35:28.797 [DEBUG] [Thread-153609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:28.811 [DEBUG] [Thread-153609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:35:28.811 [INFO] [Thread-153609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] Compression: none
2025-09-29T10:35:28.819 [DEBUG] [Thread-153609] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:28.839 [DEBUG] [Thread-153611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:35:28.880 [DEBUG] [Thread-153609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:28.881 [DEBUG] [Thread-153609] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:28.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:35:28.881 [DEBUG] [Thread-153609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:35:28.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:28.937 [DEBUG] [Thread-153609] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:28.937 [DEBUG] [Thread-153609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:28.937 [DEBUG] [Thread-153609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:28.937 [DEBUG] [Thread-153609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:35:28.937 [DEBUG] [Thread-153609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:28.953 [INFO] [Thread-153609] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:28.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:35:28.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:29.927 [DEBUG] [Thread-153609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:29.927 [DEBUG] [Thread-153609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:29.975 [DEBUG] [Thread-153609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:29.975 [DEBUG] [Thread-153609] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:29.983 [DEBUG] [Thread-153609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:29.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:29.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:35:29.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:35:30.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:30.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:30.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:30.015 [DEBUG] [Thread-153609] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:31.169 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:35:31.170 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:35:33.277 [DEBUG] [Thread-153612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:35:40.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:35:40.015 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:35:40.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:35:40.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 35, 28), 8.07, 57.72, 0.0, 27.38, 11.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:35:40.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:35:28
2025-09-29T10:35:40.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:35:40.844 [DEBUG] [Thread-153613] [transport.py] [_log()] starting thread (client mode): 0x2b9c2920
2025-09-29T10:35:40.845 [DEBUG] [Thread-153613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:40.865 [DEBUG] [Thread-153613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:35:40.865 [INFO] [Thread-153613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:40.869 [DEBUG] [Thread-153613] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:40.870 [DEBUG] [Thread-153613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:40.870 [DEBUG] [Thread-153613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:40.870 [DEBUG] [Thread-153613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:40.870 [DEBUG] [Thread-153613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:40.870 [DEBUG] [Thread-153613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:40.870 [DEBUG] [Thread-153613] [transport.py] [_log()] Compression: none
2025-09-29T10:35:40.870 [DEBUG] [Thread-153613] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:40.890 [DEBUG] [Thread-153613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:40.891 [DEBUG] [Thread-153613] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:40.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:35:40.893 [DEBUG] [Thread-153613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:35:40.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:40.894 [DEBUG] [Thread-153613] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:40.894 [DEBUG] [Thread-153613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:40.894 [DEBUG] [Thread-153613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:40.895 [DEBUG] [Thread-153613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:35:40.895 [DEBUG] [Thread-153613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:40.917 [INFO] [Thread-153613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:40.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:41.666 [DEBUG] [Thread-153613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:41.666 [DEBUG] [Thread-153613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:41.666 [DEBUG] [Thread-153613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:35:41.707 [DEBUG] [Thread-153613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:41.708 [DEBUG] [Thread-153613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:41.710 [DEBUG] [Thread-153613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:41.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:41.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:35:41.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:35:41.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:35:41.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:41.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:35:41.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:41.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:41.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:35:41.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.357711 -999.00  +10.80  22.41     63   +4.10 1 1 1 1 1   888    0 7.80 46.82 ----- 22.3 22.4 144.6 28.4 18.2 -25.9 17.1 -24.5 16.2 -25.3 17.2 -25.6
2025-09-29T10:35:41.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:35:41.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:35:41.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.357711
2025-09-29T10:35:41.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:35:41.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:35:41.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:35:41.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:35:41.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:35:41.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:35:28', tmtdew=8.07, humidity=57.72, cloud=0.0, wind=27.38, temperature=11.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:35:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:35:41.734 [DEBUG] [Thread-153613] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:41.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:35:41.841 [DEBUG] [Thread-153616] [transport.py] [_log()] starting thread (client mode): 0x2b9c0fd0
2025-09-29T10:35:41.841 [DEBUG] [Thread-153616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:41.855 [DEBUG] [Thread-153616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:35:41.855 [INFO] [Thread-153616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:41.863 [DEBUG] [Thread-153616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:41.864 [DEBUG] [Thread-153616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:41.864 [DEBUG] [Thread-153616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:41.864 [DEBUG] [Thread-153616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:41.864 [DEBUG] [Thread-153616] [transport.py] [_log()] Compression: none
2025-09-29T10:35:41.864 [DEBUG] [Thread-153616] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:41.923 [DEBUG] [Thread-153616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:41.923 [DEBUG] [Thread-153616] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:41.923 [DEBUG] [Thread-153616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:35:41.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:35:41.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:41.982 [DEBUG] [Thread-153616] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:41.982 [DEBUG] [Thread-153616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:41.982 [DEBUG] [Thread-153616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:41.982 [DEBUG] [Thread-153616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:35:41.982 [DEBUG] [Thread-153616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:42.004 [INFO] [Thread-153616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:42.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:35:42.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:42.942 [DEBUG] [Thread-153616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:42.942 [DEBUG] [Thread-153616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:42.998 [DEBUG] [Thread-153616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:42.998 [DEBUG] [Thread-153616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:43.007 [DEBUG] [Thread-153616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:43.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:43.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:35:43.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:35:43.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:43.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:43.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:43.052 [DEBUG] [Thread-153616] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:43.874 [DEBUG] [Thread-153618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:35:53.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:35:53.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:35:53.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:35:53.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 35, 28), 8.07, 57.72, 0.0, 27.38, 11.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:35:53.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:35:28
2025-09-29T10:35:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:35:53.894 [DEBUG] [Thread-153619] [transport.py] [_log()] starting thread (client mode): 0x2e348dc0
2025-09-29T10:35:53.894 [DEBUG] [Thread-153619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:53.915 [DEBUG] [Thread-153619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:35:53.915 [INFO] [Thread-153619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:53.919 [DEBUG] [Thread-153619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:53.920 [DEBUG] [Thread-153619] [transport.py] [_log()] Compression: none
2025-09-29T10:35:53.920 [DEBUG] [Thread-153619] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:53.937 [DEBUG] [Thread-153619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:53.938 [DEBUG] [Thread-153619] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:53.939 [DEBUG] [Thread-153619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:35:53.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:35:53.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:53.940 [DEBUG] [Thread-153619] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:53.941 [DEBUG] [Thread-153619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:53.941 [DEBUG] [Thread-153619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:53.941 [DEBUG] [Thread-153619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:35:53.941 [DEBUG] [Thread-153619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:53.965 [INFO] [Thread-153619] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:53.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:54.719 [DEBUG] [Thread-153619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:54.720 [DEBUG] [Thread-153619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:54.720 [DEBUG] [Thread-153619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:35:54.761 [DEBUG] [Thread-153619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:54.761 [DEBUG] [Thread-153619] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:54.763 [DEBUG] [Thread-153619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:54.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:54.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:35:54.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:35:54.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:35:54.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:54.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:35:54.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:54.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:54.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:35:54.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.357711 -999.00  +10.80  22.41     63   +4.10 1 1 1 1 1   888    0 7.80 46.82 ----- 22.3 22.4 144.6 28.4 18.2 -25.9 17.1 -24.5 16.2 -25.3 17.2 -25.6
2025-09-29T10:35:54.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:35:54.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:35:54.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.357711
2025-09-29T10:35:54.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:35:54.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:35:54.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:35:54.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:35:54.790 [DEBUG] [Thread-153619] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:54.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:35:54.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:35:28', tmtdew=8.07, humidity=57.72, cloud=0.0, wind=27.38, temperature=11.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:35:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:35:54.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:35:54.885 [DEBUG] [Thread-153622] [transport.py] [_log()] starting thread (client mode): 0x2b9bbc40
2025-09-29T10:35:54.885 [DEBUG] [Thread-153622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:35:54.899 [DEBUG] [Thread-153622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:35:54.899 [INFO] [Thread-153622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:35:54.906 [DEBUG] [Thread-153622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:35:54.907 [DEBUG] [Thread-153622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:35:54.907 [DEBUG] [Thread-153622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:35:54.907 [DEBUG] [Thread-153622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:54.907 [DEBUG] [Thread-153622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:35:54.907 [DEBUG] [Thread-153622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:54.907 [DEBUG] [Thread-153622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:35:54.907 [DEBUG] [Thread-153622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] client lang: <none>
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] server lang: <none>
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] kex follows: False
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] Compression: none
2025-09-29T10:35:54.908 [DEBUG] [Thread-153622] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:35:54.969 [DEBUG] [Thread-153622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:35:54.970 [DEBUG] [Thread-153622] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:35:54.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:35:54.970 [DEBUG] [Thread-153622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:35:54.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:35:55.029 [DEBUG] [Thread-153622] [transport.py] [_log()] userauth is OK
2025-09-29T10:35:55.030 [DEBUG] [Thread-153622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:35:55.030 [DEBUG] [Thread-153622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:35:55.030 [DEBUG] [Thread-153622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:35:55.030 [DEBUG] [Thread-153622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:35:55.049 [INFO] [Thread-153622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:35:55.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:35:55.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:35:55.987 [DEBUG] [Thread-153622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:35:55.987 [DEBUG] [Thread-153622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:35:56.035 [DEBUG] [Thread-153622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:35:56.036 [DEBUG] [Thread-153622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:35:56.048 [DEBUG] [Thread-153622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:35:56.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:35:56.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:35:56.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:35:56.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:35:56.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:35:56.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:35:56.083 [DEBUG] [Thread-153622] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:35:58.919 [DEBUG] [Thread-153624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:36:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:36:06.086 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:36:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:36:06.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 36), 8.26, 56.86, 0.0, 25.13, 11.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:36:06.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:36:00
2025-09-29T10:36:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:36:06.973 [DEBUG] [Thread-153625] [transport.py] [_log()] starting thread (client mode): 0x2e349870
2025-09-29T10:36:06.974 [DEBUG] [Thread-153625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:06.993 [DEBUG] [Thread-153625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:36:06.993 [INFO] [Thread-153625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:06.995 [DEBUG] [Thread-153625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] Compression: none
2025-09-29T10:36:06.996 [DEBUG] [Thread-153625] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:07.011 [DEBUG] [Thread-153625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:07.012 [DEBUG] [Thread-153625] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:07.012 [DEBUG] [Thread-153625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:36:07.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:36:07.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:07.013 [DEBUG] [Thread-153625] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:07.013 [DEBUG] [Thread-153625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:07.013 [DEBUG] [Thread-153625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:07.013 [DEBUG] [Thread-153625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:36:07.013 [DEBUG] [Thread-153625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:07.031 [INFO] [Thread-153625] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:07.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:07.608 [DEBUG] [Thread-153625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:07.608 [DEBUG] [Thread-153625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:07.609 [DEBUG] [Thread-153625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:36:07.649 [DEBUG] [Thread-153625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:07.649 [DEBUG] [Thread-153625] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:07.651 [DEBUG] [Thread-153625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:07.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:07.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:36:07.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:36:07.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:36:07.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:07.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:36:07.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:07.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:07.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:36:07.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.358059 -999.00  +10.90  28.32     63   +4.30 1 1 1 1 1   888    0 7.85 49.05 ----- 25.9 28.3 138.4 31.5 18.3 -25.3 17.2 -24.6 16.2 -25.2 17.2 -25.3
2025-09-29T10:36:07.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:36:07.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:36:07.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.358059
2025-09-29T10:36:07.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:36:07.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:36:07.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:36:07.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:36:07.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:36:07.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:36:00', tmtdew=8.26, humidity=56.86, cloud=0.0, wind=25.13, temperature=11.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:35:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:36:07.664 [DEBUG] [Thread-153625] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:07.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:36:07.752 [DEBUG] [Thread-153628] [transport.py] [_log()] starting thread (client mode): 0x2e348550
2025-09-29T10:36:07.752 [DEBUG] [Thread-153628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:07.769 [DEBUG] [Thread-153628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:36:07.769 [INFO] [Thread-153628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:36:07.776 [DEBUG] [Thread-153628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] Compression: none
2025-09-29T10:36:07.777 [DEBUG] [Thread-153628] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:07.832 [DEBUG] [Thread-153628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:07.832 [DEBUG] [Thread-153628] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:07.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:36:07.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:07.833 [DEBUG] [Thread-153628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:36:07.889 [DEBUG] [Thread-153628] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:07.889 [DEBUG] [Thread-153628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:07.889 [DEBUG] [Thread-153628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:07.889 [DEBUG] [Thread-153628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:36:07.889 [DEBUG] [Thread-153628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:07.903 [INFO] [Thread-153628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:07.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:36:07.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:08.885 [DEBUG] [Thread-153628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:08.885 [DEBUG] [Thread-153628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:08.933 [DEBUG] [Thread-153628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:08.933 [DEBUG] [Thread-153628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:08.942 [DEBUG] [Thread-153628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:08.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:08.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:36:08.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:36:08.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:08.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:08.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:08.977 [DEBUG] [Thread-153628] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:13.954 [DEBUG] [Thread-153630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:36:18.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:36:18.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:36:18.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:36:19.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 36), 8.26, 56.86, 0.0, 25.13, 11.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:36:19.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:36:00
2025-09-29T10:36:19.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:36:19.808 [DEBUG] [Thread-153631] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d10
2025-09-29T10:36:19.808 [DEBUG] [Thread-153631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:19.827 [DEBUG] [Thread-153631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:36:19.828 [INFO] [Thread-153631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:19.831 [DEBUG] [Thread-153631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] Compression: none
2025-09-29T10:36:19.832 [DEBUG] [Thread-153631] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:19.849 [DEBUG] [Thread-153631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:19.849 [DEBUG] [Thread-153631] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:19.850 [DEBUG] [Thread-153631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:36:19.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:36:19.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:19.852 [DEBUG] [Thread-153631] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:19.852 [DEBUG] [Thread-153631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:19.852 [DEBUG] [Thread-153631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:19.852 [DEBUG] [Thread-153631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:36:19.852 [DEBUG] [Thread-153631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:19.875 [INFO] [Thread-153631] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:19.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:20.617 [DEBUG] [Thread-153631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:20.618 [DEBUG] [Thread-153631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:20.618 [DEBUG] [Thread-153631] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:36:20.658 [DEBUG] [Thread-153631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:20.658 [DEBUG] [Thread-153631] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:20.661 [DEBUG] [Thread-153631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:20.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:20.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:36:20.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:36:20.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:36:20.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:20.685 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:36:20.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:20.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:20.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:36:20.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.358059 -999.00  +10.90  28.32     63   +4.30 1 1 1 1 1   888    0 7.85 49.05 ----- 25.9 28.3 138.4 31.5 18.3 -25.3 17.2 -24.6 16.2 -25.2 17.2 -25.3
2025-09-29T10:36:20.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:36:20.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:36:20.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.358059
2025-09-29T10:36:20.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:36:20.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:36:20.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:36:20.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:36:20.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:36:20.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:36:00', tmtdew=8.26, humidity=56.86, cloud=0.0, wind=25.13, temperature=11.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:35:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:36:20.688 [DEBUG] [Thread-153631] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:20.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:36:20.783 [DEBUG] [Thread-153634] [transport.py] [_log()] starting thread (client mode): 0x287062f0
2025-09-29T10:36:20.783 [DEBUG] [Thread-153634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:20.798 [DEBUG] [Thread-153634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:36:20.798 [INFO] [Thread-153634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:20.806 [DEBUG] [Thread-153634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:20.807 [DEBUG] [Thread-153634] [transport.py] [_log()] Compression: none
2025-09-29T10:36:20.807 [DEBUG] [Thread-153634] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:20.872 [DEBUG] [Thread-153634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:20.872 [DEBUG] [Thread-153634] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:20.873 [DEBUG] [Thread-153634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:36:20.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:36:20.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:20.929 [DEBUG] [Thread-153634] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:20.929 [DEBUG] [Thread-153634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:20.929 [DEBUG] [Thread-153634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:20.929 [DEBUG] [Thread-153634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:36:20.930 [DEBUG] [Thread-153634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:20.948 [INFO] [Thread-153634] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:20.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:36:20.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:21.921 [DEBUG] [Thread-153634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:21.921 [DEBUG] [Thread-153634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:21.969 [DEBUG] [Thread-153634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:21.969 [DEBUG] [Thread-153634] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:21.982 [DEBUG] [Thread-153634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:21.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:21.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:36:22.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:36:22.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:22.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:22.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:22.017 [DEBUG] [Thread-153634] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:28.998 [DEBUG] [Thread-153636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:36:31.310 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:36:31.311 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:36:32.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:36:32.020 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:36:32.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:36:32.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 36), 8.26, 56.86, 0.0, 25.13, 11.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:36:32.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:36:00
2025-09-29T10:36:32.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:36:32.852 [DEBUG] [Thread-153637] [transport.py] [_log()] starting thread (client mode): 0x2e34b610
2025-09-29T10:36:32.852 [DEBUG] [Thread-153637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:32.876 [DEBUG] [Thread-153637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:36:32.876 [INFO] [Thread-153637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] Compression: none
2025-09-29T10:36:32.878 [DEBUG] [Thread-153637] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:32.887 [DEBUG] [Thread-153637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:32.887 [DEBUG] [Thread-153637] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:32.888 [DEBUG] [Thread-153637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:36:32.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:36:32.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:32.890 [DEBUG] [Thread-153637] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:32.890 [DEBUG] [Thread-153637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:32.890 [DEBUG] [Thread-153637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:32.890 [DEBUG] [Thread-153637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:36:32.890 [DEBUG] [Thread-153637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:32.914 [INFO] [Thread-153637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:32.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:33.323 [DEBUG] [Thread-153639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:36:33.533 [DEBUG] [Thread-153637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:33.533 [DEBUG] [Thread-153637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:33.533 [DEBUG] [Thread-153637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:36:33.574 [DEBUG] [Thread-153637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:33.574 [DEBUG] [Thread-153637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:33.576 [DEBUG] [Thread-153637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:33.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:33.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:36:33.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:36:33.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:36:33.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:33.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:36:33.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:33.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:33.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:36:33.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.358406 -999.00  +10.70  20.67     63   +4.00 1 1 1 1 1   888    0 7.86 48.81 ----- 22.1 20.7 121.4 27.8 18.2 -25.0 17.2 -25.2 16.1 -25.6 17.2 -26.2
2025-09-29T10:36:33.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:36:33.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:36:33.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.358406
2025-09-29T10:36:33.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:36:33.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:36:33.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:36:33.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:36:33.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:36:33.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:36:00', tmtdew=8.26, humidity=56.86, cloud=0.0, wind=25.13, temperature=11.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:36:06.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:36:33.593 [DEBUG] [Thread-153637] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:33.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:36:33.677 [DEBUG] [Thread-153641] [transport.py] [_log()] starting thread (client mode): 0x2b9c32e0
2025-09-29T10:36:33.677 [DEBUG] [Thread-153641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:33.692 [DEBUG] [Thread-153641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:36:33.692 [INFO] [Thread-153641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:33.699 [DEBUG] [Thread-153641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:33.700 [DEBUG] [Thread-153641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:33.700 [DEBUG] [Thread-153641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:33.700 [DEBUG] [Thread-153641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:33.700 [DEBUG] [Thread-153641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:33.700 [DEBUG] [Thread-153641] [transport.py] [_log()] Compression: none
2025-09-29T10:36:33.700 [DEBUG] [Thread-153641] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:33.755 [DEBUG] [Thread-153641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:33.755 [DEBUG] [Thread-153641] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:33.756 [DEBUG] [Thread-153641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:36:33.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:36:33.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:33.812 [DEBUG] [Thread-153641] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:33.812 [DEBUG] [Thread-153641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:33.812 [DEBUG] [Thread-153641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:33.812 [DEBUG] [Thread-153641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:36:33.812 [DEBUG] [Thread-153641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:33.827 [INFO] [Thread-153641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:33.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:36:33.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:34.764 [DEBUG] [Thread-153641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:34.764 [DEBUG] [Thread-153641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:34.812 [DEBUG] [Thread-153641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:34.812 [DEBUG] [Thread-153641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:34.820 [DEBUG] [Thread-153641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:34.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:34.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:36:34.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:36:34.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:34.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:34.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:34.852 [DEBUG] [Thread-153641] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:44.028 [DEBUG] [Thread-153643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:36:44.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:36:44.854 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:36:44.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:36:45.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 36, 32), 8.2, 57.06, 0.0, 22.59, 10.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:36:45.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:36:32
2025-09-29T10:36:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:36:45.714 [DEBUG] [Thread-153644] [transport.py] [_log()] starting thread (client mode): 0x2b9c09a0
2025-09-29T10:36:45.715 [DEBUG] [Thread-153644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:45.733 [DEBUG] [Thread-153644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:36:45.733 [INFO] [Thread-153644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:36:45.736 [DEBUG] [Thread-153644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:45.736 [DEBUG] [Thread-153644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] Compression: none
2025-09-29T10:36:45.737 [DEBUG] [Thread-153644] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:45.752 [DEBUG] [Thread-153644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:45.752 [DEBUG] [Thread-153644] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:45.752 [DEBUG] [Thread-153644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:36:45.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:36:45.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:45.753 [DEBUG] [Thread-153644] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:45.753 [DEBUG] [Thread-153644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:45.753 [DEBUG] [Thread-153644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:45.753 [DEBUG] [Thread-153644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:36:45.753 [DEBUG] [Thread-153644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:45.762 [INFO] [Thread-153644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:45.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:46.562 [DEBUG] [Thread-153644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:46.562 [DEBUG] [Thread-153644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:46.562 [DEBUG] [Thread-153644] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:36:46.603 [DEBUG] [Thread-153644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:46.603 [DEBUG] [Thread-153644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:46.604 [DEBUG] [Thread-153644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:46.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:46.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:36:46.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:36:46.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:36:46.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:46.618 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:36:46.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.358406 -999.00  +10.70  20.67     63   +4.00 1 1 1 1 1   888    0 7.86 48.81 ----- 22.1 20.7 121.4 27.8 18.2 -25.0 17.2 -25.2 16.1 -25.6 17.2 -26.2
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.358406
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:36:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:36:32', tmtdew=8.2, humidity=57.06, cloud=0.0, wind=22.59, temperature=10.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:36:06.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:36:46.618 [DEBUG] [Thread-153644] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:46.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:36:46.704 [DEBUG] [Thread-153647] [transport.py] [_log()] starting thread (client mode): 0x2b9c25f0
2025-09-29T10:36:46.704 [DEBUG] [Thread-153647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:46.719 [DEBUG] [Thread-153647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:36:46.719 [INFO] [Thread-153647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] Compression: none
2025-09-29T10:36:46.729 [DEBUG] [Thread-153647] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:46.787 [DEBUG] [Thread-153647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:46.787 [DEBUG] [Thread-153647] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:46.787 [DEBUG] [Thread-153647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:36:46.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:36:46.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:46.845 [DEBUG] [Thread-153647] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:46.845 [DEBUG] [Thread-153647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:46.845 [DEBUG] [Thread-153647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:46.845 [DEBUG] [Thread-153647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:36:46.845 [DEBUG] [Thread-153647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:46.859 [INFO] [Thread-153647] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:46.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:36:46.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:47.870 [DEBUG] [Thread-153647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:47.870 [DEBUG] [Thread-153647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:47.918 [DEBUG] [Thread-153647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:47.918 [DEBUG] [Thread-153647] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:47.926 [DEBUG] [Thread-153647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:47.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:47.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:36:47.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:36:47.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:47.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:47.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:47.959 [DEBUG] [Thread-153647] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:57.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:36:57.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:36:57.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:36:58.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 36, 32), 8.2, 57.06, 0.0, 22.59, 10.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:36:58.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:36:32
2025-09-29T10:36:58.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:36:58.792 [DEBUG] [Thread-153649] [transport.py] [_log()] starting thread (client mode): 0x28704d60
2025-09-29T10:36:58.792 [DEBUG] [Thread-153649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:58.813 [DEBUG] [Thread-153649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:36:58.813 [INFO] [Thread-153649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:36:58.816 [DEBUG] [Thread-153649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:58.816 [DEBUG] [Thread-153649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:58.817 [DEBUG] [Thread-153649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:58.818 [DEBUG] [Thread-153649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:58.818 [DEBUG] [Thread-153649] [transport.py] [_log()] Compression: none
2025-09-29T10:36:58.818 [DEBUG] [Thread-153649] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:58.836 [DEBUG] [Thread-153649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:58.836 [DEBUG] [Thread-153649] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:58.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:36:58.837 [DEBUG] [Thread-153649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:36:58.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:58.839 [DEBUG] [Thread-153649] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:58.840 [DEBUG] [Thread-153649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:58.840 [DEBUG] [Thread-153649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:58.840 [DEBUG] [Thread-153649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:36:58.840 [DEBUG] [Thread-153649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:58.856 [INFO] [Thread-153649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:58.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:36:59.073 [DEBUG] [Thread-153651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:36:59.669 [DEBUG] [Thread-153649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:36:59.669 [DEBUG] [Thread-153649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:36:59.670 [DEBUG] [Thread-153649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:36:59.710 [DEBUG] [Thread-153649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:36:59.710 [DEBUG] [Thread-153649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:36:59.713 [DEBUG] [Thread-153649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:36:59.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:36:59.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:36:59.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:36:59.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:36:59.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:36:59.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:36:59.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:36:59.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:36:59.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:36:59.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.358406 -999.00  +10.70  20.67     63   +4.00 1 1 1 1 1   888    0 7.86 48.81 ----- 22.1 20.7 121.4 27.8 18.2 -25.0 17.2 -25.2 16.1 -25.6 17.2 -26.2
2025-09-29T10:36:59.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:36:59.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:36:59.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.358406
2025-09-29T10:36:59.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:36:59.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:36:59.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:36:59.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:36:59.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:36:59.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:36:32', tmtdew=8.2, humidity=57.06, cloud=0.0, wind=22.59, temperature=10.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:36:06.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:36:59.741 [DEBUG] [Thread-153649] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:36:59.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:36:59.836 [DEBUG] [Thread-153653] [transport.py] [_log()] starting thread (client mode): 0x2e34b7c0
2025-09-29T10:36:59.836 [DEBUG] [Thread-153653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:36:59.851 [DEBUG] [Thread-153653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:36:59.851 [INFO] [Thread-153653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:36:59.858 [DEBUG] [Thread-153653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] client lang: <none>
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] server lang: <none>
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] kex follows: False
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] Compression: none
2025-09-29T10:36:59.859 [DEBUG] [Thread-153653] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:36:59.916 [DEBUG] [Thread-153653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:36:59.916 [DEBUG] [Thread-153653] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:36:59.917 [DEBUG] [Thread-153653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:36:59.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:36:59.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:36:59.972 [DEBUG] [Thread-153653] [transport.py] [_log()] userauth is OK
2025-09-29T10:36:59.972 [DEBUG] [Thread-153653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:36:59.973 [DEBUG] [Thread-153653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:36:59.973 [DEBUG] [Thread-153653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:36:59.973 [DEBUG] [Thread-153653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:36:59.992 [INFO] [Thread-153653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:36:59.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:36:59.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:00.949 [DEBUG] [Thread-153653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:00.949 [DEBUG] [Thread-153653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:00.996 [DEBUG] [Thread-153653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:00.996 [DEBUG] [Thread-153653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:01.005 [DEBUG] [Thread-153653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:01.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:01.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:37:01.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:37:01.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:01.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:01.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:01.041 [DEBUG] [Thread-153653] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:11.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:37:11.042 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:37:11.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:37:11.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 37, 4), 8.09, 57.52, 0.0, 19.97, 10.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:37:11.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:37:04
2025-09-29T10:37:11.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:37:11.877 [DEBUG] [Thread-153655] [transport.py] [_log()] starting thread (client mode): 0x2b91ca30
2025-09-29T10:37:11.877 [DEBUG] [Thread-153655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:37:11.899 [DEBUG] [Thread-153655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:37:11.899 [INFO] [Thread-153655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:37:11.903 [DEBUG] [Thread-153655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:37:11.903 [DEBUG] [Thread-153655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:37:11.903 [DEBUG] [Thread-153655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] client lang: <none>
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] server lang: <none>
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] kex follows: False
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] Compression: none
2025-09-29T10:37:11.904 [DEBUG] [Thread-153655] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:37:11.913 [DEBUG] [Thread-153655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:37:11.913 [DEBUG] [Thread-153655] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:37:11.914 [DEBUG] [Thread-153655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:37:11.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:37:11.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:37:11.916 [DEBUG] [Thread-153655] [transport.py] [_log()] userauth is OK
2025-09-29T10:37:11.916 [DEBUG] [Thread-153655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:37:11.916 [DEBUG] [Thread-153655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:37:11.916 [DEBUG] [Thread-153655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:37:11.916 [DEBUG] [Thread-153655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:37:11.930 [INFO] [Thread-153655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:37:11.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:12.568 [DEBUG] [Thread-153655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:12.568 [DEBUG] [Thread-153655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:12.568 [DEBUG] [Thread-153655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:37:12.609 [DEBUG] [Thread-153655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:12.609 [DEBUG] [Thread-153655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:12.612 [DEBUG] [Thread-153655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:12.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:12.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:37:12.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:37:12.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:37:12.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:12.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:37:12.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:12.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:12.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:37:12.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.358753 -999.00  +10.70  19.09     63   +4.10 1 1 1 1 1   888    0 7.86 49.08 ----- 25.5 19.1 136.6 28.8 18.2 -25.5 17.2 -25.3 16.2 -25.1 17.2 -26.1
2025-09-29T10:37:12.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:37:12.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:37:12.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.358753
2025-09-29T10:37:12.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:37:12.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:37:12.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:37:12.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:37:12.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:37:12.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:37:04', tmtdew=8.09, humidity=57.52, cloud=0.0, wind=19.97, temperature=10.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:36:36.259', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:37:12.637 [DEBUG] [Thread-153655] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:12.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:37:12.733 [DEBUG] [Thread-153658] [transport.py] [_log()] starting thread (client mode): 0x2b91f130
2025-09-29T10:37:12.733 [DEBUG] [Thread-153658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:37:12.748 [DEBUG] [Thread-153658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:37:12.748 [INFO] [Thread-153658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:37:12.756 [DEBUG] [Thread-153658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:37:12.756 [DEBUG] [Thread-153658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:37:12.756 [DEBUG] [Thread-153658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:37:12.756 [DEBUG] [Thread-153658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:12.756 [DEBUG] [Thread-153658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:12.756 [DEBUG] [Thread-153658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] client lang: <none>
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] server lang: <none>
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] kex follows: False
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] Compression: none
2025-09-29T10:37:12.757 [DEBUG] [Thread-153658] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:37:12.812 [DEBUG] [Thread-153658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:37:12.812 [DEBUG] [Thread-153658] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:37:12.813 [DEBUG] [Thread-153658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:37:12.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:37:12.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:37:12.868 [DEBUG] [Thread-153658] [transport.py] [_log()] userauth is OK
2025-09-29T10:37:12.868 [DEBUG] [Thread-153658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:37:12.868 [DEBUG] [Thread-153658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:37:12.868 [DEBUG] [Thread-153658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:37:12.868 [DEBUG] [Thread-153658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:37:12.888 [INFO] [Thread-153658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:37:12.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:37:12.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:13.865 [DEBUG] [Thread-153658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:13.865 [DEBUG] [Thread-153658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:13.913 [DEBUG] [Thread-153658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:13.913 [DEBUG] [Thread-153658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:13.922 [DEBUG] [Thread-153658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:13.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:13.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:37:13.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:37:13.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:13.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:13.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:13.957 [DEBUG] [Thread-153658] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:14.115 [DEBUG] [Thread-153660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:37:23.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:37:23.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:37:23.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:37:24.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 37, 4), 8.09, 57.52, 0.0, 19.97, 10.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:37:24.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:37:04
2025-09-29T10:37:24.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:37:24.838 [DEBUG] [Thread-153661] [transport.py] [_log()] starting thread (client mode): 0x2b91fd30
2025-09-29T10:37:24.838 [DEBUG] [Thread-153661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:37:24.860 [DEBUG] [Thread-153661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:37:24.860 [INFO] [Thread-153661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:37:24.863 [DEBUG] [Thread-153661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:37:24.863 [DEBUG] [Thread-153661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:37:24.863 [DEBUG] [Thread-153661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] client lang: <none>
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] server lang: <none>
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] kex follows: False
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] Compression: none
2025-09-29T10:37:24.864 [DEBUG] [Thread-153661] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:37:24.880 [DEBUG] [Thread-153661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:37:24.880 [DEBUG] [Thread-153661] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:37:24.880 [DEBUG] [Thread-153661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:37:24.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:37:24.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:37:24.881 [DEBUG] [Thread-153661] [transport.py] [_log()] userauth is OK
2025-09-29T10:37:24.881 [DEBUG] [Thread-153661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:37:24.881 [DEBUG] [Thread-153661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:37:24.881 [DEBUG] [Thread-153661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:37:24.881 [DEBUG] [Thread-153661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:37:24.896 [INFO] [Thread-153661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:37:24.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:25.739 [DEBUG] [Thread-153661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:25.739 [DEBUG] [Thread-153661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:25.739 [DEBUG] [Thread-153661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:37:25.781 [DEBUG] [Thread-153661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:25.781 [DEBUG] [Thread-153661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:25.782 [DEBUG] [Thread-153661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:25.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:25.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:37:25.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:37:25.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:37:25.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:25.800 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:37:25.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:25.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:25.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:37:25.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.358753 -999.00  +10.70  19.09     63   +4.10 1 1 1 1 1   888    0 7.86 49.08 ----- 25.5 19.1 136.6 28.8 18.2 -25.5 17.2 -25.3 16.2 -25.1 17.2 -26.1
2025-09-29T10:37:25.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:37:25.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:37:25.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.358753
2025-09-29T10:37:25.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:37:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:37:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:37:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:37:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:37:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:37:04', tmtdew=8.09, humidity=57.52, cloud=0.0, wind=19.97, temperature=10.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:36:36.259', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:37:25.802 [DEBUG] [Thread-153661] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:25.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:37:25.885 [DEBUG] [Thread-153664] [transport.py] [_log()] starting thread (client mode): 0x287072b0
2025-09-29T10:37:25.885 [DEBUG] [Thread-153664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:37:25.900 [DEBUG] [Thread-153664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:37:25.900 [INFO] [Thread-153664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] client lang: <none>
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] server lang: <none>
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] kex follows: False
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] Compression: none
2025-09-29T10:37:25.908 [DEBUG] [Thread-153664] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:37:25.967 [DEBUG] [Thread-153664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:37:25.967 [DEBUG] [Thread-153664] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:37:25.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:37:25.967 [DEBUG] [Thread-153664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:37:25.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:37:26.023 [DEBUG] [Thread-153664] [transport.py] [_log()] userauth is OK
2025-09-29T10:37:26.023 [DEBUG] [Thread-153664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:37:26.024 [DEBUG] [Thread-153664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:37:26.024 [DEBUG] [Thread-153664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:37:26.024 [DEBUG] [Thread-153664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:37:26.041 [INFO] [Thread-153664] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:37:26.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:37:26.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:27.041 [DEBUG] [Thread-153664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:27.041 [DEBUG] [Thread-153664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:27.089 [DEBUG] [Thread-153664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:27.089 [DEBUG] [Thread-153664] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:27.097 [DEBUG] [Thread-153664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:27.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:27.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:37:27.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:37:27.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:27.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:27.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:27.129 [DEBUG] [Thread-153664] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:29.159 [DEBUG] [Thread-153666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:37:31.452 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:37:31.453 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:37:33.378 [DEBUG] [Thread-153667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:37:37.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:37:37.130 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:37:37.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:37:37.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 37, 4), 8.09, 57.52, 0.0, 19.97, 10.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:37:37.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:37:04
2025-09-29T10:37:37.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:37:38.024 [DEBUG] [Thread-153668] [transport.py] [_log()] starting thread (client mode): 0x2b91e920
2025-09-29T10:37:38.024 [DEBUG] [Thread-153668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:37:38.044 [DEBUG] [Thread-153668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:37:38.044 [INFO] [Thread-153668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] client lang: <none>
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] server lang: <none>
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] kex follows: False
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] Compression: none
2025-09-29T10:37:38.046 [DEBUG] [Thread-153668] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:37:38.058 [DEBUG] [Thread-153668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:37:38.059 [DEBUG] [Thread-153668] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:37:38.059 [DEBUG] [Thread-153668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:37:38.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:37:38.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:37:38.060 [DEBUG] [Thread-153668] [transport.py] [_log()] userauth is OK
2025-09-29T10:37:38.060 [DEBUG] [Thread-153668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:37:38.060 [DEBUG] [Thread-153668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:37:38.060 [DEBUG] [Thread-153668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:37:38.060 [DEBUG] [Thread-153668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:37:38.073 [INFO] [Thread-153668] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:37:38.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:38.892 [DEBUG] [Thread-153668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:38.892 [DEBUG] [Thread-153668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:38.893 [DEBUG] [Thread-153668] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:37:38.933 [DEBUG] [Thread-153668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:38.934 [DEBUG] [Thread-153668] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:38.936 [DEBUG] [Thread-153668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:38.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:38.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:37:38.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:37:38.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:37:38.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:38.956 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:37:38.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:38.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:38.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:37:38.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.358753 -999.00  +10.70  19.09     63   +4.10 1 1 1 1 1   888    0 7.86 49.08 ----- 25.5 19.1 136.6 28.8 18.2 -25.5 17.2 -25.3 16.2 -25.1 17.2 -26.1
2025-09-29T10:37:38.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:37:38.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:37:38.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.358753
2025-09-29T10:37:38.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:37:38.958 [DEBUG] [Thread-153668] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:38.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:37:38.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:37:38.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:37:38.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:37:38.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:37:04', tmtdew=8.09, humidity=57.52, cloud=0.0, wind=19.97, temperature=10.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:36:36.259', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:37:39.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:37:39.057 [DEBUG] [Thread-153671] [transport.py] [_log()] starting thread (client mode): 0x2b9c01f0
2025-09-29T10:37:39.057 [DEBUG] [Thread-153671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:37:39.071 [DEBUG] [Thread-153671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:37:39.072 [INFO] [Thread-153671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:37:39.079 [DEBUG] [Thread-153671] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:37:39.079 [DEBUG] [Thread-153671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:37:39.079 [DEBUG] [Thread-153671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] client lang: <none>
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] server lang: <none>
2025-09-29T10:37:39.080 [DEBUG] [Thread-153671] [transport.py] [_log()] kex follows: False
2025-09-29T10:37:39.081 [DEBUG] [Thread-153671] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:37:39.081 [DEBUG] [Thread-153671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:37:39.081 [DEBUG] [Thread-153671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:37:39.081 [DEBUG] [Thread-153671] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:37:39.081 [DEBUG] [Thread-153671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:37:39.081 [DEBUG] [Thread-153671] [transport.py] [_log()] Compression: none
2025-09-29T10:37:39.081 [DEBUG] [Thread-153671] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:37:39.140 [DEBUG] [Thread-153671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:37:39.141 [DEBUG] [Thread-153671] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:37:39.142 [DEBUG] [Thread-153671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:37:39.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:37:39.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:37:39.196 [DEBUG] [Thread-153671] [transport.py] [_log()] userauth is OK
2025-09-29T10:37:39.196 [DEBUG] [Thread-153671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:37:39.196 [DEBUG] [Thread-153671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:37:39.196 [DEBUG] [Thread-153671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:37:39.196 [DEBUG] [Thread-153671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:37:39.216 [INFO] [Thread-153671] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:37:39.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:37:39.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:40.211 [DEBUG] [Thread-153671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:40.211 [DEBUG] [Thread-153671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:40.258 [DEBUG] [Thread-153671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:40.258 [DEBUG] [Thread-153671] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:40.267 [DEBUG] [Thread-153671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:40.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:40.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:37:40.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:37:40.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:40.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:40.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:40.301 [DEBUG] [Thread-153671] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:44.195 [DEBUG] [Thread-153673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:37:50.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:37:50.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:37:50.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:37:50.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 37, 36), 8.42, 56.2, 0.0, 23.56, 11.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:37:50.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:37:36
2025-09-29T10:37:51.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:37:51.153 [DEBUG] [Thread-153674] [transport.py] [_log()] starting thread (client mode): 0x2b9c3bb0
2025-09-29T10:37:51.153 [DEBUG] [Thread-153674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:37:51.172 [DEBUG] [Thread-153674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:37:51.172 [INFO] [Thread-153674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] client lang: <none>
2025-09-29T10:37:51.176 [DEBUG] [Thread-153674] [transport.py] [_log()] server lang: <none>
2025-09-29T10:37:51.177 [DEBUG] [Thread-153674] [transport.py] [_log()] kex follows: False
2025-09-29T10:37:51.177 [DEBUG] [Thread-153674] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:37:51.177 [DEBUG] [Thread-153674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:37:51.177 [DEBUG] [Thread-153674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:37:51.177 [DEBUG] [Thread-153674] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:37:51.177 [DEBUG] [Thread-153674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:37:51.177 [DEBUG] [Thread-153674] [transport.py] [_log()] Compression: none
2025-09-29T10:37:51.177 [DEBUG] [Thread-153674] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:37:51.185 [DEBUG] [Thread-153674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:37:51.185 [DEBUG] [Thread-153674] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:37:51.186 [DEBUG] [Thread-153674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:37:51.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:37:51.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:37:51.187 [DEBUG] [Thread-153674] [transport.py] [_log()] userauth is OK
2025-09-29T10:37:51.187 [DEBUG] [Thread-153674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:37:51.188 [DEBUG] [Thread-153674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:37:51.188 [DEBUG] [Thread-153674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:37:51.188 [DEBUG] [Thread-153674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:37:51.206 [INFO] [Thread-153674] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:37:51.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:51.809 [DEBUG] [Thread-153674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:51.809 [DEBUG] [Thread-153674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:51.809 [DEBUG] [Thread-153674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:37:51.850 [DEBUG] [Thread-153674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:51.850 [DEBUG] [Thread-153674] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:51.853 [DEBUG] [Thread-153674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:51.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:51.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:37:51.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:37:51.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:37:51.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:51.878 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:37:51.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:51.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:51.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:37:51.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.359448 -999.00  +10.80  11.48     64   +4.30 1 1 1 1 1   888    0 7.97 51.40 ----- 12.3 11.5 170.7 21.7 18.4 -25.0 17.2 -24.2 16.2 -24.8 17.2 -25.1
2025-09-29T10:37:51.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:37:51.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:37:51.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.359448
2025-09-29T10:37:51.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:37:51.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:37:51.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:37:51.881 [DEBUG] [Thread-153674] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:51.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:37:51.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:37:51.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:37:36', tmtdew=8.42, humidity=56.2, cloud=0.0, wind=23.56, temperature=11.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:37:36.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:37:51.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:37:51.975 [DEBUG] [Thread-153677] [transport.py] [_log()] starting thread (client mode): 0x2b91f4f0
2025-09-29T10:37:51.976 [DEBUG] [Thread-153677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:37:51.991 [DEBUG] [Thread-153677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:37:51.991 [INFO] [Thread-153677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:37:52.001 [DEBUG] [Thread-153677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:37:52.001 [DEBUG] [Thread-153677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:37:52.001 [DEBUG] [Thread-153677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] client lang: <none>
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] server lang: <none>
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] kex follows: False
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] Compression: none
2025-09-29T10:37:52.002 [DEBUG] [Thread-153677] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:37:52.059 [DEBUG] [Thread-153677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:37:52.060 [DEBUG] [Thread-153677] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:37:52.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:37:52.061 [DEBUG] [Thread-153677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:37:52.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:37:52.115 [DEBUG] [Thread-153677] [transport.py] [_log()] userauth is OK
2025-09-29T10:37:52.116 [DEBUG] [Thread-153677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:37:52.116 [DEBUG] [Thread-153677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:37:52.116 [DEBUG] [Thread-153677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:37:52.116 [DEBUG] [Thread-153677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:37:52.135 [INFO] [Thread-153677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:37:52.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:37:52.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:37:53.150 [DEBUG] [Thread-153677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:37:53.150 [DEBUG] [Thread-153677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:37:53.198 [DEBUG] [Thread-153677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:37:53.198 [DEBUG] [Thread-153677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:37:53.207 [DEBUG] [Thread-153677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:37:53.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:37:53.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:37:53.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:37:53.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:37:53.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:37:53.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:37:53.242 [DEBUG] [Thread-153677] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:37:59.224 [DEBUG] [Thread-153679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:38:03.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:38:03.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:38:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:38:03.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 37, 36), 8.42, 56.2, 0.0, 23.56, 11.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:38:03.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:37:36
2025-09-29T10:38:03.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:38:04.099 [DEBUG] [Thread-153680] [transport.py] [_log()] starting thread (client mode): 0x2b9bb9a0
2025-09-29T10:38:04.099 [DEBUG] [Thread-153680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:04.119 [DEBUG] [Thread-153680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:38:04.119 [INFO] [Thread-153680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:04.122 [DEBUG] [Thread-153680] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:04.123 [DEBUG] [Thread-153680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:04.123 [DEBUG] [Thread-153680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:04.123 [DEBUG] [Thread-153680] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:04.123 [DEBUG] [Thread-153680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:04.123 [DEBUG] [Thread-153680] [transport.py] [_log()] Compression: none
2025-09-29T10:38:04.123 [DEBUG] [Thread-153680] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:04.137 [DEBUG] [Thread-153680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:04.137 [DEBUG] [Thread-153680] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:04.138 [DEBUG] [Thread-153680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:38:04.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:38:04.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:04.180 [DEBUG] [Thread-153680] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:04.180 [DEBUG] [Thread-153680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:04.180 [DEBUG] [Thread-153680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:04.180 [DEBUG] [Thread-153680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:38:04.180 [DEBUG] [Thread-153680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:04.195 [INFO] [Thread-153680] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:04.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:05.009 [DEBUG] [Thread-153680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:05.009 [DEBUG] [Thread-153680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:05.010 [DEBUG] [Thread-153680] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:38:05.051 [DEBUG] [Thread-153680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:05.051 [DEBUG] [Thread-153680] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:05.053 [DEBUG] [Thread-153680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:05.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:05.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:38:05.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:38:05.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:38:05.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:05.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:38:05.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:05.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:38:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.359448 -999.00  +10.80  11.48     64   +4.30 1 1 1 1 1   888    0 7.97 51.40 ----- 12.3 11.5 170.7 21.7 18.4 -25.0 17.2 -24.2 16.2 -24.8 17.2 -25.1
2025-09-29T10:38:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:38:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:38:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.359448
2025-09-29T10:38:05.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:38:05.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:38:05.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:38:05.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:38:05.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:38:05.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:37:36', tmtdew=8.42, humidity=56.2, cloud=0.0, wind=23.56, temperature=11.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:37:36.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:38:05.071 [DEBUG] [Thread-153680] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:05.147 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:38:05.158 [DEBUG] [Thread-153683] [transport.py] [_log()] starting thread (client mode): 0x2b9c3ac0
2025-09-29T10:38:05.158 [DEBUG] [Thread-153683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:05.172 [DEBUG] [Thread-153683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:38:05.172 [INFO] [Thread-153683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] Compression: none
2025-09-29T10:38:05.180 [DEBUG] [Thread-153683] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:05.237 [DEBUG] [Thread-153683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:05.238 [DEBUG] [Thread-153683] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:05.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:38:05.238 [DEBUG] [Thread-153683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:38:05.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:05.295 [DEBUG] [Thread-153683] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:05.295 [DEBUG] [Thread-153683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:05.295 [DEBUG] [Thread-153683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:05.295 [DEBUG] [Thread-153683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:38:05.295 [DEBUG] [Thread-153683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:05.309 [INFO] [Thread-153683] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:05.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:38:05.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:06.338 [DEBUG] [Thread-153683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:06.338 [DEBUG] [Thread-153683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:06.386 [DEBUG] [Thread-153683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:06.387 [DEBUG] [Thread-153683] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:06.396 [DEBUG] [Thread-153683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:06.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:06.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:38:06.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:38:06.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:06.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:06.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:06.431 [DEBUG] [Thread-153683] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:14.265 [DEBUG] [Thread-153685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:38:16.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:38:16.434 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:38:16.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:38:17.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 38, 8), 8.55, 55.74, 0.0, 24.7, 11.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:38:17.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:38:08
2025-09-29T10:38:17.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:38:17.276 [DEBUG] [Thread-153686] [transport.py] [_log()] starting thread (client mode): 0x2e3c3b20
2025-09-29T10:38:17.276 [DEBUG] [Thread-153686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:17.299 [DEBUG] [Thread-153686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:38:17.299 [INFO] [Thread-153686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:38:17.302 [DEBUG] [Thread-153686] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:17.302 [DEBUG] [Thread-153686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:38:17.302 [DEBUG] [Thread-153686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:17.302 [DEBUG] [Thread-153686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:17.302 [DEBUG] [Thread-153686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:17.302 [DEBUG] [Thread-153686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:17.302 [DEBUG] [Thread-153686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:17.302 [DEBUG] [Thread-153686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] Compression: none
2025-09-29T10:38:17.303 [DEBUG] [Thread-153686] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:17.313 [DEBUG] [Thread-153686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:17.314 [DEBUG] [Thread-153686] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:17.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:38:17.315 [DEBUG] [Thread-153686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:38:17.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:17.318 [DEBUG] [Thread-153686] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:17.318 [DEBUG] [Thread-153686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:17.318 [DEBUG] [Thread-153686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:17.318 [DEBUG] [Thread-153686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:38:17.318 [DEBUG] [Thread-153686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:17.344 [INFO] [Thread-153686] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:17.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:18.009 [DEBUG] [Thread-153686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:18.009 [DEBUG] [Thread-153686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:18.009 [DEBUG] [Thread-153686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:38:18.050 [DEBUG] [Thread-153686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:18.051 [DEBUG] [Thread-153686] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:18.054 [DEBUG] [Thread-153686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:18.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:18.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:38:18.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:38:18.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:38:18.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:18.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:38:18.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:18.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:18.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:38:18.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.359795 -999.00  +11.20  18.01     63   +4.40 1 1 1 1 1   888    0 7.84 49.63 ----- 18.6 18.0 140.2 21.7 18.6 -24.1 17.3 -23.8 16.4 -24.1 17.4 -24.7
2025-09-29T10:38:18.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:38:18.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:38:18.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.359795
2025-09-29T10:38:18.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:38:18.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:38:18.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:38:18.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:38:18.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:38:18.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:38:08', tmtdew=8.55, humidity=55.74, cloud=0.0, wind=24.7, temperature=11.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:38:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:38:18.079 [DEBUG] [Thread-153686] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:18.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:38:18.173 [DEBUG] [Thread-153689] [transport.py] [_log()] starting thread (client mode): 0x28704040
2025-09-29T10:38:18.173 [DEBUG] [Thread-153689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:18.188 [DEBUG] [Thread-153689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:38:18.188 [INFO] [Thread-153689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:38:18.196 [DEBUG] [Thread-153689] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:18.196 [DEBUG] [Thread-153689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:38:18.196 [DEBUG] [Thread-153689] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:18.196 [DEBUG] [Thread-153689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:18.196 [DEBUG] [Thread-153689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:18.196 [DEBUG] [Thread-153689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:18.196 [DEBUG] [Thread-153689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:18.196 [DEBUG] [Thread-153689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:18.197 [DEBUG] [Thread-153689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:18.198 [DEBUG] [Thread-153689] [transport.py] [_log()] Compression: none
2025-09-29T10:38:18.198 [DEBUG] [Thread-153689] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:18.259 [DEBUG] [Thread-153689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:18.259 [DEBUG] [Thread-153689] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:18.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:38:18.260 [DEBUG] [Thread-153689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:38:18.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:18.315 [DEBUG] [Thread-153689] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:18.315 [DEBUG] [Thread-153689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:18.315 [DEBUG] [Thread-153689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:18.316 [DEBUG] [Thread-153689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:38:18.316 [DEBUG] [Thread-153689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:18.335 [INFO] [Thread-153689] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:18.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:38:18.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:19.344 [DEBUG] [Thread-153689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:19.345 [DEBUG] [Thread-153689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:19.392 [DEBUG] [Thread-153689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:19.392 [DEBUG] [Thread-153689] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:19.401 [DEBUG] [Thread-153689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:19.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:19.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:38:19.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:38:19.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:19.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:19.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:19.436 [DEBUG] [Thread-153689] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:29.293 [DEBUG] [Thread-153691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:38:29.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:38:29.439 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:38:29.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:38:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 38, 8), 8.55, 55.74, 0.0, 24.7, 11.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:38:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:38:08
2025-09-29T10:38:30.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:38:30.275 [DEBUG] [Thread-153692] [transport.py] [_log()] starting thread (client mode): 0x2b9c0d90
2025-09-29T10:38:30.275 [DEBUG] [Thread-153692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:30.296 [DEBUG] [Thread-153692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:38:30.296 [INFO] [Thread-153692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:38:30.297 [DEBUG] [Thread-153692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:30.298 [DEBUG] [Thread-153692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:30.299 [DEBUG] [Thread-153692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:30.299 [DEBUG] [Thread-153692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:30.299 [DEBUG] [Thread-153692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:30.299 [DEBUG] [Thread-153692] [transport.py] [_log()] Compression: none
2025-09-29T10:38:30.299 [DEBUG] [Thread-153692] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:30.310 [DEBUG] [Thread-153692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:30.311 [DEBUG] [Thread-153692] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:30.311 [DEBUG] [Thread-153692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:38:30.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:38:30.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:30.313 [DEBUG] [Thread-153692] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:30.313 [DEBUG] [Thread-153692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:30.313 [DEBUG] [Thread-153692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:30.314 [DEBUG] [Thread-153692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:38:30.314 [DEBUG] [Thread-153692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:30.331 [INFO] [Thread-153692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:30.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:31.167 [DEBUG] [Thread-153692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:31.167 [DEBUG] [Thread-153692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:31.168 [DEBUG] [Thread-153692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:38:31.208 [DEBUG] [Thread-153692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:31.208 [DEBUG] [Thread-153692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:31.211 [DEBUG] [Thread-153692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:31.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:31.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:38:31.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:38:31.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:38:31.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:31.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:38:31.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:31.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:38:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.359795 -999.00  +11.20  18.01     63   +4.40 1 1 1 1 1   888    0 7.84 49.63 ----- 18.6 18.0 140.2 21.7 18.6 -24.1 17.3 -23.8 16.4 -24.1 17.4 -24.7
2025-09-29T10:38:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:38:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:38:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.359795
2025-09-29T10:38:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:38:31.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:38:31.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:38:31.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:38:31.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:38:31.235 [DEBUG] [Thread-153692] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:31.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:38:08', tmtdew=8.55, humidity=55.74, cloud=0.0, wind=24.7, temperature=11.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:38:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:38:31.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:38:31.330 [DEBUG] [Thread-153695] [transport.py] [_log()] starting thread (client mode): 0x2e38cd90
2025-09-29T10:38:31.330 [DEBUG] [Thread-153695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:31.345 [DEBUG] [Thread-153695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:38:31.345 [INFO] [Thread-153695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:38:31.353 [DEBUG] [Thread-153695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:31.353 [DEBUG] [Thread-153695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:38:31.353 [DEBUG] [Thread-153695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:31.353 [DEBUG] [Thread-153695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:31.353 [DEBUG] [Thread-153695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] Compression: none
2025-09-29T10:38:31.354 [DEBUG] [Thread-153695] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:31.410 [DEBUG] [Thread-153695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:31.411 [DEBUG] [Thread-153695] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:31.411 [DEBUG] [Thread-153695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:38:31.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:38:31.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:31.467 [DEBUG] [Thread-153695] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:31.467 [DEBUG] [Thread-153695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:31.467 [DEBUG] [Thread-153695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:31.467 [DEBUG] [Thread-153695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:38:31.467 [DEBUG] [Thread-153695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:31.486 [INFO] [Thread-153695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:31.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:38:31.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:31.594 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:38:31.595 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:38:32.582 [DEBUG] [Thread-153695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:32.582 [DEBUG] [Thread-153695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:32.630 [DEBUG] [Thread-153695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:32.630 [DEBUG] [Thread-153695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:32.639 [DEBUG] [Thread-153695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:32.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:32.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:38:32.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:38:32.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:32.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:32.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:32.674 [DEBUG] [Thread-153695] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:33.430 [DEBUG] [Thread-153697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:38:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:38:42.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:38:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:38:43.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 38, 8), 8.55, 55.74, 0.0, 24.7, 11.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:38:43.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:38:08
2025-09-29T10:38:43.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:38:43.556 [DEBUG] [Thread-153698] [transport.py] [_log()] starting thread (client mode): 0x28704ac0
2025-09-29T10:38:43.556 [DEBUG] [Thread-153698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:43.572 [DEBUG] [Thread-153698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:38:43.572 [INFO] [Thread-153698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:43.574 [DEBUG] [Thread-153698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:43.575 [DEBUG] [Thread-153698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:43.575 [DEBUG] [Thread-153698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:43.575 [DEBUG] [Thread-153698] [transport.py] [_log()] Compression: none
2025-09-29T10:38:43.575 [DEBUG] [Thread-153698] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:43.591 [DEBUG] [Thread-153698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:43.591 [DEBUG] [Thread-153698] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:43.591 [DEBUG] [Thread-153698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:38:43.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:38:43.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:43.592 [DEBUG] [Thread-153698] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:43.592 [DEBUG] [Thread-153698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:43.592 [DEBUG] [Thread-153698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:43.592 [DEBUG] [Thread-153698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:38:43.592 [DEBUG] [Thread-153698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:43.605 [INFO] [Thread-153698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:43.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:44.336 [DEBUG] [Thread-153700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:38:44.475 [DEBUG] [Thread-153698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:44.475 [DEBUG] [Thread-153698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:44.475 [DEBUG] [Thread-153698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:38:44.516 [DEBUG] [Thread-153698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:44.516 [DEBUG] [Thread-153698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:44.519 [DEBUG] [Thread-153698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:44.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:44.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:38:44.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:38:44.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:38:44.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:44.540 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:38:44.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:44.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:38:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.359795 -999.00  +11.20  18.01     63   +4.40 1 1 1 1 1   888    0 7.84 49.63 ----- 18.6 18.0 140.2 21.7 18.6 -24.1 17.3 -23.8 16.4 -24.1 17.4 -24.7
2025-09-29T10:38:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:38:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:38:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.359795
2025-09-29T10:38:44.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:38:44.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:38:44.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:38:44.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:38:44.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:38:44.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:38:08', tmtdew=8.55, humidity=55.74, cloud=0.0, wind=24.7, temperature=11.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:38:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:38:44.543 [DEBUG] [Thread-153698] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:44.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:38:44.643 [DEBUG] [Thread-153702] [transport.py] [_log()] starting thread (client mode): 0x2b91c340
2025-09-29T10:38:44.643 [DEBUG] [Thread-153702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:44.658 [DEBUG] [Thread-153702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:38:44.658 [INFO] [Thread-153702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:44.666 [DEBUG] [Thread-153702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:44.667 [DEBUG] [Thread-153702] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:44.667 [DEBUG] [Thread-153702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:44.667 [DEBUG] [Thread-153702] [transport.py] [_log()] Compression: none
2025-09-29T10:38:44.667 [DEBUG] [Thread-153702] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:44.723 [DEBUG] [Thread-153702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:44.724 [DEBUG] [Thread-153702] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:44.724 [DEBUG] [Thread-153702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:38:44.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:38:44.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:44.782 [DEBUG] [Thread-153702] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:44.783 [DEBUG] [Thread-153702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:44.783 [DEBUG] [Thread-153702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:44.783 [DEBUG] [Thread-153702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:38:44.783 [DEBUG] [Thread-153702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:44.802 [INFO] [Thread-153702] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:44.803 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:38:44.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:45.789 [DEBUG] [Thread-153702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:45.789 [DEBUG] [Thread-153702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:45.837 [DEBUG] [Thread-153702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:45.837 [DEBUG] [Thread-153702] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:45.846 [DEBUG] [Thread-153702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:45.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:45.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:38:45.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:38:45.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:45.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:45.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:45.880 [DEBUG] [Thread-153702] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:55.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:38:55.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:38:55.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:38:56.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 38, 40), 8.71, 54.97, 0.0, 23.22, 11.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:38:56.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:38:40
2025-09-29T10:38:56.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:38:56.740 [DEBUG] [Thread-153704] [transport.py] [_log()] starting thread (client mode): 0x28704ac0
2025-09-29T10:38:56.740 [DEBUG] [Thread-153704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:56.760 [DEBUG] [Thread-153704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:38:56.761 [INFO] [Thread-153704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:56.764 [DEBUG] [Thread-153704] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:56.765 [DEBUG] [Thread-153704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:56.765 [DEBUG] [Thread-153704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:56.765 [DEBUG] [Thread-153704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:56.765 [DEBUG] [Thread-153704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:56.765 [DEBUG] [Thread-153704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:56.765 [DEBUG] [Thread-153704] [transport.py] [_log()] Compression: none
2025-09-29T10:38:56.765 [DEBUG] [Thread-153704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:56.783 [DEBUG] [Thread-153704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:56.784 [DEBUG] [Thread-153704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:56.785 [DEBUG] [Thread-153704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:38:56.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:38:56.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:56.787 [DEBUG] [Thread-153704] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:56.787 [DEBUG] [Thread-153704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:56.788 [DEBUG] [Thread-153704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:56.788 [DEBUG] [Thread-153704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:38:56.788 [DEBUG] [Thread-153704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:56.808 [INFO] [Thread-153704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:56.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:57.460 [DEBUG] [Thread-153704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:57.461 [DEBUG] [Thread-153704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:57.461 [DEBUG] [Thread-153704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:38:57.501 [DEBUG] [Thread-153704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:57.502 [DEBUG] [Thread-153704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:57.505 [DEBUG] [Thread-153704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:57.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:57.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:38:57.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:38:57.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:38:57.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:57.531 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:38:57.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:57.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:57.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:38:57.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.360142 -999.00  +11.60  18.32     61   +4.50 1 1 1 1 1   888    0 8.02 47.65 ----- 17.1 18.3 162.4 24.2 18.7 -24.9 17.4 -24.6 16.4 -25.2 17.6 -24.8
2025-09-29T10:38:57.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:38:57.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:38:57.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.360142
2025-09-29T10:38:57.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:38:57.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:38:57.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:38:57.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:38:57.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:38:57.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:38:40', tmtdew=8.71, humidity=54.97, cloud=0.0, wind=23.22, temperature=11.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:38:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:38:57.534 [DEBUG] [Thread-153704] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:57.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:38:57.628 [DEBUG] [Thread-153707] [transport.py] [_log()] starting thread (client mode): 0x287078e0
2025-09-29T10:38:57.628 [DEBUG] [Thread-153707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:38:57.643 [DEBUG] [Thread-153707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:38:57.643 [INFO] [Thread-153707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] client lang: <none>
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] server lang: <none>
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] kex follows: False
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] Compression: none
2025-09-29T10:38:57.651 [DEBUG] [Thread-153707] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:38:57.715 [DEBUG] [Thread-153707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:38:57.716 [DEBUG] [Thread-153707] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:38:57.716 [DEBUG] [Thread-153707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:38:57.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:38:57.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:38:57.779 [DEBUG] [Thread-153707] [transport.py] [_log()] userauth is OK
2025-09-29T10:38:57.779 [DEBUG] [Thread-153707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:38:57.780 [DEBUG] [Thread-153707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:38:57.780 [DEBUG] [Thread-153707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:38:57.780 [DEBUG] [Thread-153707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:38:57.799 [INFO] [Thread-153707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:38:57.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:38:57.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:38:58.757 [DEBUG] [Thread-153707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:38:58.758 [DEBUG] [Thread-153707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:38:58.806 [DEBUG] [Thread-153707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:38:58.806 [DEBUG] [Thread-153707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:38:58.815 [DEBUG] [Thread-153707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:38:58.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:38:58.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:38:58.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:38:58.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:38:58.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:38:58.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:38:58.850 [DEBUG] [Thread-153707] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:38:59.363 [DEBUG] [Thread-153709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:39:08.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:39:08.852 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:39:08.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:39:09.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 38, 40), 8.71, 54.97, 0.0, 23.22, 11.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:39:09.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:38:40
2025-09-29T10:39:09.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:39:09.693 [DEBUG] [Thread-153710] [transport.py] [_log()] starting thread (client mode): 0x2b96c940
2025-09-29T10:39:09.694 [DEBUG] [Thread-153710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:39:09.714 [DEBUG] [Thread-153710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:39:09.715 [INFO] [Thread-153710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:39:09.717 [DEBUG] [Thread-153710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:39:09.717 [DEBUG] [Thread-153710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:39:09.717 [DEBUG] [Thread-153710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:39:09.717 [DEBUG] [Thread-153710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:09.717 [DEBUG] [Thread-153710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:09.717 [DEBUG] [Thread-153710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] client lang: <none>
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] server lang: <none>
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] kex follows: False
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] Compression: none
2025-09-29T10:39:09.718 [DEBUG] [Thread-153710] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:39:09.735 [DEBUG] [Thread-153710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:39:09.736 [DEBUG] [Thread-153710] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:39:09.736 [DEBUG] [Thread-153710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:39:09.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:39:09.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:39:09.738 [DEBUG] [Thread-153710] [transport.py] [_log()] userauth is OK
2025-09-29T10:39:09.738 [DEBUG] [Thread-153710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:39:09.738 [DEBUG] [Thread-153710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:39:09.739 [DEBUG] [Thread-153710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:39:09.739 [DEBUG] [Thread-153710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:39:09.762 [INFO] [Thread-153710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:39:09.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:39:10.608 [DEBUG] [Thread-153710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:39:10.609 [DEBUG] [Thread-153710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:39:10.609 [DEBUG] [Thread-153710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:39:10.649 [DEBUG] [Thread-153710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:39:10.649 [DEBUG] [Thread-153710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:39:10.652 [DEBUG] [Thread-153710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:39:10.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:39:10.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:39:10.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:39:10.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:39:10.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:39:10.676 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:39:10.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:39:10.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:39:10.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:39:10.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.360142 -999.00  +11.60  18.32     61   +4.50 1 1 1 1 1   888    0 8.02 47.65 ----- 17.1 18.3 162.4 24.2 18.7 -24.9 17.4 -24.6 16.4 -25.2 17.6 -24.8
2025-09-29T10:39:10.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:39:10.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:39:10.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.360142
2025-09-29T10:39:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:39:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:39:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:39:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:39:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:39:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:38:40', tmtdew=8.71, humidity=54.97, cloud=0.0, wind=23.22, temperature=11.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:38:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:39:10.679 [DEBUG] [Thread-153710] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:39:10.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:39:10.775 [DEBUG] [Thread-153713] [transport.py] [_log()] starting thread (client mode): 0x2e3ddfc0
2025-09-29T10:39:10.775 [DEBUG] [Thread-153713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:39:10.793 [DEBUG] [Thread-153713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:39:10.793 [INFO] [Thread-153713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:39:10.800 [DEBUG] [Thread-153713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:39:10.800 [DEBUG] [Thread-153713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] client lang: <none>
2025-09-29T10:39:10.801 [DEBUG] [Thread-153713] [transport.py] [_log()] server lang: <none>
2025-09-29T10:39:10.802 [DEBUG] [Thread-153713] [transport.py] [_log()] kex follows: False
2025-09-29T10:39:10.802 [DEBUG] [Thread-153713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:39:10.802 [DEBUG] [Thread-153713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:39:10.802 [DEBUG] [Thread-153713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:39:10.802 [DEBUG] [Thread-153713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:39:10.802 [DEBUG] [Thread-153713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:39:10.803 [DEBUG] [Thread-153713] [transport.py] [_log()] Compression: none
2025-09-29T10:39:10.803 [DEBUG] [Thread-153713] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:39:10.861 [DEBUG] [Thread-153713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:39:10.862 [DEBUG] [Thread-153713] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:39:10.862 [DEBUG] [Thread-153713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:39:10.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:39:10.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:39:10.924 [DEBUG] [Thread-153713] [transport.py] [_log()] userauth is OK
2025-09-29T10:39:10.924 [DEBUG] [Thread-153713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:39:10.924 [DEBUG] [Thread-153713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:39:10.924 [DEBUG] [Thread-153713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:39:10.924 [DEBUG] [Thread-153713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:39:10.945 [INFO] [Thread-153713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:39:10.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:39:10.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:39:11.887 [DEBUG] [Thread-153713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:39:11.887 [DEBUG] [Thread-153713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:39:11.935 [DEBUG] [Thread-153713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:39:11.935 [DEBUG] [Thread-153713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:39:11.943 [DEBUG] [Thread-153713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:39:11.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:39:11.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:39:11.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:39:11.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:39:11.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:39:11.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:39:11.977 [DEBUG] [Thread-153713] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:39:14.407 [DEBUG] [Thread-153715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:39:21.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:39:21.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:39:21.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:39:22.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 39, 12), 8.4, 56.14, 0.0, 27.9, 11.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:39:22.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:39:12
2025-09-29T10:39:22.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:39:22.840 [DEBUG] [Thread-153716] [transport.py] [_log()] starting thread (client mode): 0x2e38e3e0
2025-09-29T10:39:22.840 [DEBUG] [Thread-153716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:39:22.860 [DEBUG] [Thread-153716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:39:22.860 [INFO] [Thread-153716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] client lang: <none>
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] server lang: <none>
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] kex follows: False
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:39:22.863 [DEBUG] [Thread-153716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:39:22.864 [DEBUG] [Thread-153716] [transport.py] [_log()] Compression: none
2025-09-29T10:39:22.864 [DEBUG] [Thread-153716] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:39:22.877 [DEBUG] [Thread-153716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:39:22.878 [DEBUG] [Thread-153716] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:39:22.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:39:22.879 [DEBUG] [Thread-153716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:39:22.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:39:22.881 [DEBUG] [Thread-153716] [transport.py] [_log()] userauth is OK
2025-09-29T10:39:22.881 [DEBUG] [Thread-153716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:39:22.881 [DEBUG] [Thread-153716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:39:22.881 [DEBUG] [Thread-153716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:39:22.881 [DEBUG] [Thread-153716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:39:22.905 [INFO] [Thread-153716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:39:22.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:39:23.516 [DEBUG] [Thread-153716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:39:23.516 [DEBUG] [Thread-153716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:39:23.517 [DEBUG] [Thread-153716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:39:23.557 [DEBUG] [Thread-153716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:39:23.557 [DEBUG] [Thread-153716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:39:23.560 [DEBUG] [Thread-153716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:39:23.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:39:23.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:39:23.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:39:23.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:39:23.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:39:23.582 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:39:23.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:39:23.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:39:23.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:39:23.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.360490 -999.00  +11.80  18.76     60   +4.30 1 1 1 1 1   888    0 7.78 46.11 ----- 21.6 18.8 160.4 26.5 18.4 -29.3 17.4 -25.9 16.5 -25.1 17.6 -26.3
2025-09-29T10:39:23.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:39:23.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:39:23.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.360490
2025-09-29T10:39:23.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:39:23.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:39:23.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:39:23.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:39:23.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:39:23.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:39:12', tmtdew=8.4, humidity=56.14, cloud=0.0, wind=27.9, temperature=11.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:39:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:39:23.585 [DEBUG] [Thread-153716] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:39:23.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:39:23.679 [DEBUG] [Thread-153719] [transport.py] [_log()] starting thread (client mode): 0x2e38eec0
2025-09-29T10:39:23.679 [DEBUG] [Thread-153719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:39:23.699 [DEBUG] [Thread-153719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:39:23.699 [INFO] [Thread-153719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:39:23.706 [DEBUG] [Thread-153719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:39:23.707 [DEBUG] [Thread-153719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:39:23.707 [DEBUG] [Thread-153719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:39:23.707 [DEBUG] [Thread-153719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:23.707 [DEBUG] [Thread-153719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:23.707 [DEBUG] [Thread-153719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:23.707 [DEBUG] [Thread-153719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:23.707 [DEBUG] [Thread-153719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] client lang: <none>
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] server lang: <none>
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] kex follows: False
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:39:23.708 [DEBUG] [Thread-153719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:39:23.709 [DEBUG] [Thread-153719] [transport.py] [_log()] Compression: none
2025-09-29T10:39:23.709 [DEBUG] [Thread-153719] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:39:23.768 [DEBUG] [Thread-153719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:39:23.768 [DEBUG] [Thread-153719] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:39:23.769 [DEBUG] [Thread-153719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:39:23.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:39:23.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:39:23.826 [DEBUG] [Thread-153719] [transport.py] [_log()] userauth is OK
2025-09-29T10:39:23.826 [DEBUG] [Thread-153719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:39:23.826 [DEBUG] [Thread-153719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:39:23.826 [DEBUG] [Thread-153719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:39:23.826 [DEBUG] [Thread-153719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:39:23.845 [INFO] [Thread-153719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:39:23.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:39:23.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:39:24.851 [DEBUG] [Thread-153719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:39:24.851 [DEBUG] [Thread-153719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:39:24.899 [DEBUG] [Thread-153719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:39:24.899 [DEBUG] [Thread-153719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:39:24.907 [DEBUG] [Thread-153719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:39:24.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:39:24.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:39:24.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:39:24.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:39:24.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:39:24.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:39:24.942 [DEBUG] [Thread-153719] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:39:29.437 [DEBUG] [Thread-153721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:39:31.739 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:39:31.740 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:39:33.495 [DEBUG] [Thread-153722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:39:34.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:39:34.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:39:34.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:39:35.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 39, 12), 8.4, 56.14, 0.0, 27.9, 11.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:39:35.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:39:12
2025-09-29T10:39:35.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:39:35.799 [DEBUG] [Thread-153723] [transport.py] [_log()] starting thread (client mode): 0x2e38cb80
2025-09-29T10:39:35.799 [DEBUG] [Thread-153723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:39:35.820 [DEBUG] [Thread-153723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:39:35.820 [INFO] [Thread-153723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] client lang: <none>
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] server lang: <none>
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] kex follows: False
2025-09-29T10:39:35.823 [DEBUG] [Thread-153723] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:39:35.824 [DEBUG] [Thread-153723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:39:35.824 [DEBUG] [Thread-153723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:39:35.824 [DEBUG] [Thread-153723] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:39:35.824 [DEBUG] [Thread-153723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:39:35.824 [DEBUG] [Thread-153723] [transport.py] [_log()] Compression: none
2025-09-29T10:39:35.824 [DEBUG] [Thread-153723] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:39:35.840 [DEBUG] [Thread-153723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:39:35.840 [DEBUG] [Thread-153723] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:39:35.841 [DEBUG] [Thread-153723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:39:35.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:39:35.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:39:35.843 [DEBUG] [Thread-153723] [transport.py] [_log()] userauth is OK
2025-09-29T10:39:35.843 [DEBUG] [Thread-153723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:39:35.843 [DEBUG] [Thread-153723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:39:35.843 [DEBUG] [Thread-153723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:39:35.843 [DEBUG] [Thread-153723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:39:35.858 [INFO] [Thread-153723] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:39:35.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:39:36.690 [DEBUG] [Thread-153723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:39:36.690 [DEBUG] [Thread-153723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:39:36.690 [DEBUG] [Thread-153723] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:39:36.731 [DEBUG] [Thread-153723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:39:36.731 [DEBUG] [Thread-153723] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:39:36.733 [DEBUG] [Thread-153723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:39:36.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:39:36.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:39:36.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:39:36.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:39:36.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:39:36.750 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:39:36.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.360490 -999.00  +11.80  18.76     60   +4.30 1 1 1 1 1   888    0 7.78 46.11 ----- 21.6 18.8 160.4 26.5 18.4 -29.3 17.4 -25.9 16.5 -25.1 17.6 -26.3
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.360490
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:39:36.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:39:12', tmtdew=8.4, humidity=56.14, cloud=0.0, wind=27.9, temperature=11.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:39:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:39:36.751 [DEBUG] [Thread-153723] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:39:36.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:39:36.835 [DEBUG] [Thread-153726] [transport.py] [_log()] starting thread (client mode): 0x2e38d8a0
2025-09-29T10:39:36.835 [DEBUG] [Thread-153726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:39:36.850 [DEBUG] [Thread-153726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:39:36.850 [INFO] [Thread-153726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:39:36.858 [DEBUG] [Thread-153726] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:39:36.858 [DEBUG] [Thread-153726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:39:36.858 [DEBUG] [Thread-153726] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:39:36.858 [DEBUG] [Thread-153726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:36.858 [DEBUG] [Thread-153726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:36.858 [DEBUG] [Thread-153726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] client lang: <none>
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] server lang: <none>
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] kex follows: False
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] Compression: none
2025-09-29T10:39:36.859 [DEBUG] [Thread-153726] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:39:36.918 [DEBUG] [Thread-153726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:39:36.918 [DEBUG] [Thread-153726] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:39:36.919 [DEBUG] [Thread-153726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:39:36.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:39:36.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:39:36.974 [DEBUG] [Thread-153726] [transport.py] [_log()] userauth is OK
2025-09-29T10:39:36.974 [DEBUG] [Thread-153726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:39:36.974 [DEBUG] [Thread-153726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:39:36.974 [DEBUG] [Thread-153726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:39:36.974 [DEBUG] [Thread-153726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:39:36.997 [INFO] [Thread-153726] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:39:36.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:39:36.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:39:37.976 [DEBUG] [Thread-153726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:39:37.976 [DEBUG] [Thread-153726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:39:38.023 [DEBUG] [Thread-153726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:39:38.023 [DEBUG] [Thread-153726] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:39:38.032 [DEBUG] [Thread-153726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:39:38.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:39:38.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:39:38.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:39:38.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:39:38.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:39:38.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:39:38.067 [DEBUG] [Thread-153726] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:39:44.478 [DEBUG] [Thread-153728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:39:48.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:39:48.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:39:48.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:39:48.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 39, 44), 8.49, 55.99, 0.0, 25.23, 11.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:39:48.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:39:44
2025-09-29T10:39:48.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:39:48.913 [DEBUG] [Thread-153729] [transport.py] [_log()] starting thread (client mode): 0x2e3dda80
2025-09-29T10:39:48.913 [DEBUG] [Thread-153729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:39:48.933 [DEBUG] [Thread-153729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:39:48.933 [INFO] [Thread-153729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] client lang: <none>
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] server lang: <none>
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] kex follows: False
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:39:48.936 [DEBUG] [Thread-153729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:39:48.937 [DEBUG] [Thread-153729] [transport.py] [_log()] Compression: none
2025-09-29T10:39:48.937 [DEBUG] [Thread-153729] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:39:48.944 [DEBUG] [Thread-153729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:39:48.945 [DEBUG] [Thread-153729] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:39:48.945 [DEBUG] [Thread-153729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:39:48.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:39:48.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:39:48.947 [DEBUG] [Thread-153729] [transport.py] [_log()] userauth is OK
2025-09-29T10:39:48.947 [DEBUG] [Thread-153729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:39:48.947 [DEBUG] [Thread-153729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:39:48.947 [DEBUG] [Thread-153729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:39:48.947 [DEBUG] [Thread-153729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:39:48.964 [INFO] [Thread-153729] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:39:48.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:39:49.737 [DEBUG] [Thread-153729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:39:49.737 [DEBUG] [Thread-153729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:39:49.737 [DEBUG] [Thread-153729] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:39:49.778 [DEBUG] [Thread-153729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:39:49.779 [DEBUG] [Thread-153729] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:39:49.782 [DEBUG] [Thread-153729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:39:49.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:39:49.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:39:49.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:39:49.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:39:49.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:39:49.804 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:39:49.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:39:49.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:39:49.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:39:49.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.360490 -999.00  +11.80  18.76     60   +4.30 1 1 1 1 1   888    0 7.78 46.11 ----- 21.6 18.8 160.4 26.5 18.4 -29.3 17.4 -25.9 16.5 -25.1 17.6 -26.3
2025-09-29T10:39:49.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:39:49.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:39:49.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.360490
2025-09-29T10:39:49.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:39:49.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:39:49.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:39:49.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:39:49.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:39:49.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:39:44', tmtdew=8.49, humidity=55.99, cloud=0.0, wind=25.23, temperature=11.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:39:06.336', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:39:49.807 [DEBUG] [Thread-153729] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:39:49.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:39:49.902 [DEBUG] [Thread-153732] [transport.py] [_log()] starting thread (client mode): 0x2e38c370
2025-09-29T10:39:49.902 [DEBUG] [Thread-153732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:39:49.917 [DEBUG] [Thread-153732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:39:49.917 [INFO] [Thread-153732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:39:49.925 [DEBUG] [Thread-153732] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:39:49.925 [DEBUG] [Thread-153732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:39:49.925 [DEBUG] [Thread-153732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] client lang: <none>
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] server lang: <none>
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] kex follows: False
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] Compression: none
2025-09-29T10:39:49.926 [DEBUG] [Thread-153732] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:39:49.982 [DEBUG] [Thread-153732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:39:49.982 [DEBUG] [Thread-153732] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:39:49.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:39:49.983 [DEBUG] [Thread-153732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:39:49.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:39:50.038 [DEBUG] [Thread-153732] [transport.py] [_log()] userauth is OK
2025-09-29T10:39:50.038 [DEBUG] [Thread-153732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:39:50.038 [DEBUG] [Thread-153732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:39:50.038 [DEBUG] [Thread-153732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:39:50.038 [DEBUG] [Thread-153732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:39:50.057 [INFO] [Thread-153732] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:39:50.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:39:50.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:39:51.019 [DEBUG] [Thread-153732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:39:51.020 [DEBUG] [Thread-153732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:39:51.067 [DEBUG] [Thread-153732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:39:51.067 [DEBUG] [Thread-153732] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:39:51.076 [DEBUG] [Thread-153732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:39:51.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:39:51.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:39:51.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:39:51.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:39:51.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:39:51.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:39:51.110 [DEBUG] [Thread-153732] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:39:59.505 [DEBUG] [Thread-153734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:40:01.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:40:01.112 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:40:01.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:40:01.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 39, 44), 8.49, 55.99, 0.0, 25.23, 11.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:40:01.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:39:44
2025-09-29T10:40:01.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:40:01.953 [DEBUG] [Thread-153735] [transport.py] [_log()] starting thread (client mode): 0x2e3c21d0
2025-09-29T10:40:01.953 [DEBUG] [Thread-153735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:01.973 [DEBUG] [Thread-153735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:40:01.973 [INFO] [Thread-153735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:01.976 [DEBUG] [Thread-153735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:01.977 [DEBUG] [Thread-153735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:01.977 [DEBUG] [Thread-153735] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:01.977 [DEBUG] [Thread-153735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:01.977 [DEBUG] [Thread-153735] [transport.py] [_log()] Compression: none
2025-09-29T10:40:01.977 [DEBUG] [Thread-153735] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:01.994 [DEBUG] [Thread-153735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:01.995 [DEBUG] [Thread-153735] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:01.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:40:01.996 [DEBUG] [Thread-153735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:40:01.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:01.997 [DEBUG] [Thread-153735] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:01.997 [DEBUG] [Thread-153735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:01.997 [DEBUG] [Thread-153735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:01.997 [DEBUG] [Thread-153735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:40:01.997 [DEBUG] [Thread-153735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:02.021 [INFO] [Thread-153735] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:02.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:02.668 [DEBUG] [Thread-153735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:02.668 [DEBUG] [Thread-153735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:02.669 [DEBUG] [Thread-153735] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:40:02.709 [DEBUG] [Thread-153735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:02.710 [DEBUG] [Thread-153735] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:02.712 [DEBUG] [Thread-153735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:02.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:02.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:40:02.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:40:02.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:40:02.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:02.749 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:40:02.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:02.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:02.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:40:02.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.360837 -999.00  +11.30  20.38     60   +4.00 1 1 1 1 1   888    0 8.10 51.74 ----- 14.7 20.4 158.8 29.1 18.4 -25.7 17.2 -26.6 16.2 -26.5 17.4 -27.2
2025-09-29T10:40:02.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:40:02.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:40:02.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.360837
2025-09-29T10:40:02.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:40:02.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:40:02.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:40:02.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:40:02.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:40:02.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:39:44', tmtdew=8.49, humidity=55.99, cloud=0.0, wind=25.23, temperature=11.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:39:36.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:40:02.752 [DEBUG] [Thread-153735] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:02.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:40:02.846 [DEBUG] [Thread-153738] [transport.py] [_log()] starting thread (client mode): 0x2e3c3580
2025-09-29T10:40:02.847 [DEBUG] [Thread-153738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:02.862 [DEBUG] [Thread-153738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:40:02.862 [INFO] [Thread-153738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:40:02.870 [DEBUG] [Thread-153738] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:02.870 [DEBUG] [Thread-153738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:40:02.870 [DEBUG] [Thread-153738] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:02.870 [DEBUG] [Thread-153738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:02.870 [DEBUG] [Thread-153738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:02.870 [DEBUG] [Thread-153738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:02.871 [DEBUG] [Thread-153738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:02.872 [DEBUG] [Thread-153738] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:02.872 [DEBUG] [Thread-153738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:02.872 [DEBUG] [Thread-153738] [transport.py] [_log()] Compression: none
2025-09-29T10:40:02.872 [DEBUG] [Thread-153738] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:02.930 [DEBUG] [Thread-153738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:02.930 [DEBUG] [Thread-153738] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:02.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:40:02.931 [DEBUG] [Thread-153738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:40:02.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:02.985 [DEBUG] [Thread-153738] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:02.985 [DEBUG] [Thread-153738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:02.985 [DEBUG] [Thread-153738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:02.985 [DEBUG] [Thread-153738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:40:02.985 [DEBUG] [Thread-153738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:03.000 [INFO] [Thread-153738] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:03.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:40:03.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:04.019 [DEBUG] [Thread-153738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:04.019 [DEBUG] [Thread-153738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:04.068 [DEBUG] [Thread-153738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:04.068 [DEBUG] [Thread-153738] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:04.076 [DEBUG] [Thread-153738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:04.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:04.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:40:04.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:40:04.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:04.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:04.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:04.108 [DEBUG] [Thread-153738] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:14.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:40:14.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:40:14.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:40:14.541 [DEBUG] [Thread-153740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:40:14.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 39, 44), 8.49, 55.99, 0.0, 25.23, 11.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:40:14.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:39:44
2025-09-29T10:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:40:14.959 [DEBUG] [Thread-153741] [transport.py] [_log()] starting thread (client mode): 0x2e38e170
2025-09-29T10:40:14.959 [DEBUG] [Thread-153741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:14.979 [DEBUG] [Thread-153741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:40:14.979 [INFO] [Thread-153741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] Compression: none
2025-09-29T10:40:14.983 [DEBUG] [Thread-153741] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:15.000 [DEBUG] [Thread-153741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:15.001 [DEBUG] [Thread-153741] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:15.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:40:15.002 [DEBUG] [Thread-153741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:40:15.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:15.044 [DEBUG] [Thread-153741] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:15.045 [DEBUG] [Thread-153741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:15.045 [DEBUG] [Thread-153741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:15.045 [DEBUG] [Thread-153741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:40:15.045 [DEBUG] [Thread-153741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:15.081 [INFO] [Thread-153741] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:15.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:18.855 [DEBUG] [Thread-153741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:18.855 [DEBUG] [Thread-153741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:18.855 [DEBUG] [Thread-153741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:40:18.896 [DEBUG] [Thread-153741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:18.896 [DEBUG] [Thread-153741] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:18.899 [DEBUG] [Thread-153741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:18.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:18.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:40:18.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:40:18.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:40:18.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:18.922 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:40:18.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:18.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:18.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:40:18.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.360837 -999.00  +11.30  20.38     60   +4.00 1 1 1 1 1   888    0 8.10 51.74 ----- 14.7 20.4 158.8 29.1 18.4 -25.7 17.2 -26.6 16.2 -26.5 17.4 -27.2
2025-09-29T10:40:18.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:40:18.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:40:18.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.360837
2025-09-29T10:40:18.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:40:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:40:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:40:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:40:18.924 [DEBUG] [Thread-153741] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:40:18.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:39:44', tmtdew=8.49, humidity=55.99, cloud=0.0, wind=25.23, temperature=11.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:39:36.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:40:19.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:40:19.018 [DEBUG] [Thread-153744] [transport.py] [_log()] starting thread (client mode): 0x2b9c0580
2025-09-29T10:40:19.019 [DEBUG] [Thread-153744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:19.033 [DEBUG] [Thread-153744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:40:19.033 [INFO] [Thread-153744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:19.043 [DEBUG] [Thread-153744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] Compression: none
2025-09-29T10:40:19.044 [DEBUG] [Thread-153744] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:19.103 [DEBUG] [Thread-153744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:19.103 [DEBUG] [Thread-153744] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:19.104 [DEBUG] [Thread-153744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:40:19.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:40:19.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:19.161 [DEBUG] [Thread-153744] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:19.161 [DEBUG] [Thread-153744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:19.161 [DEBUG] [Thread-153744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:19.161 [DEBUG] [Thread-153744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:40:19.161 [DEBUG] [Thread-153744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:19.180 [INFO] [Thread-153744] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:19.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:40:19.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:20.238 [DEBUG] [Thread-153744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:20.238 [DEBUG] [Thread-153744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:20.286 [DEBUG] [Thread-153744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:20.286 [DEBUG] [Thread-153744] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:20.295 [DEBUG] [Thread-153744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:20.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:20.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:40:20.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:40:20.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:20.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:20.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:20.329 [DEBUG] [Thread-153744] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:29.583 [DEBUG] [Thread-153746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:40:30.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:40:30.332 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:40:30.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:40:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 40, 16), 8.69, 55.28, 0.0, 25.02, 11.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:40:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:40:16
2025-09-29T10:40:31.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:40:31.165 [DEBUG] [Thread-153747] [transport.py] [_log()] starting thread (client mode): 0x2e3c23b0
2025-09-29T10:40:31.166 [DEBUG] [Thread-153747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:31.185 [DEBUG] [Thread-153747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:40:31.185 [INFO] [Thread-153747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:31.189 [DEBUG] [Thread-153747] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:31.190 [DEBUG] [Thread-153747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:31.190 [DEBUG] [Thread-153747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:31.190 [DEBUG] [Thread-153747] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:31.190 [DEBUG] [Thread-153747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:31.190 [DEBUG] [Thread-153747] [transport.py] [_log()] Compression: none
2025-09-29T10:40:31.190 [DEBUG] [Thread-153747] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:31.210 [DEBUG] [Thread-153747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:31.211 [DEBUG] [Thread-153747] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:31.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:40:31.212 [DEBUG] [Thread-153747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:40:31.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:31.213 [DEBUG] [Thread-153747] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:31.213 [DEBUG] [Thread-153747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:31.214 [DEBUG] [Thread-153747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:31.214 [DEBUG] [Thread-153747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:40:31.214 [DEBUG] [Thread-153747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:31.236 [INFO] [Thread-153747] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:31.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:31.856 [DEBUG] [Thread-153747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:31.856 [DEBUG] [Thread-153747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:31.856 [DEBUG] [Thread-153747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:40:31.882 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:40:31.883 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:40:31.897 [DEBUG] [Thread-153747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:31.897 [DEBUG] [Thread-153747] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:31.901 [DEBUG] [Thread-153747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:31.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:31.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:40:31.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:40:31.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:40:31.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:31.920 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:40:31.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:31.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:40:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.361184 -999.00  +11.30  24.44     61   +4.10 1 1 1 1 1   888    0 8.10 52.77 ----- 25.6 24.4 143.8 31.3 18.5 -25.3 17.2 -24.0 16.4 -24.0 17.4 -25.0
2025-09-29T10:40:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:40:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:40:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.361184
2025-09-29T10:40:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:40:31.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:40:31.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:40:31.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:40:31.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:40:31.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:40:16', tmtdew=8.69, humidity=55.28, cloud=0.0, wind=25.02, temperature=11.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:40:06.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:40:31.923 [DEBUG] [Thread-153747] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:32.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:40:32.017 [DEBUG] [Thread-153750] [transport.py] [_log()] starting thread (client mode): 0x2e3c3be0
2025-09-29T10:40:32.017 [DEBUG] [Thread-153750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:32.031 [DEBUG] [Thread-153750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:40:32.032 [INFO] [Thread-153750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:40:32.043 [DEBUG] [Thread-153750] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:32.043 [DEBUG] [Thread-153750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:40:32.043 [DEBUG] [Thread-153750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:32.043 [DEBUG] [Thread-153750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:32.043 [DEBUG] [Thread-153750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:32.044 [DEBUG] [Thread-153750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:32.045 [DEBUG] [Thread-153750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:32.045 [DEBUG] [Thread-153750] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:32.045 [DEBUG] [Thread-153750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:32.045 [DEBUG] [Thread-153750] [transport.py] [_log()] Compression: none
2025-09-29T10:40:32.045 [DEBUG] [Thread-153750] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:32.102 [DEBUG] [Thread-153750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:32.102 [DEBUG] [Thread-153750] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:32.103 [DEBUG] [Thread-153750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:40:32.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:40:32.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:32.158 [DEBUG] [Thread-153750] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:32.158 [DEBUG] [Thread-153750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:32.158 [DEBUG] [Thread-153750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:32.158 [DEBUG] [Thread-153750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:40:32.158 [DEBUG] [Thread-153750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:32.177 [INFO] [Thread-153750] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:32.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:40:32.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:33.177 [DEBUG] [Thread-153750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:33.177 [DEBUG] [Thread-153750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:33.225 [DEBUG] [Thread-153750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:33.225 [DEBUG] [Thread-153750] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:33.234 [DEBUG] [Thread-153750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:33.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:33.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:40:33.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:40:33.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:33.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:33.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:33.269 [DEBUG] [Thread-153750] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:33.551 [DEBUG] [Thread-153752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:40:43.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:40:43.272 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:40:43.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:40:43.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 40, 16), 8.69, 55.28, 0.0, 25.02, 11.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:40:43.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:40:16
2025-09-29T10:40:43.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:40:44.117 [DEBUG] [Thread-153753] [transport.py] [_log()] starting thread (client mode): 0x2e3c0460
2025-09-29T10:40:44.117 [DEBUG] [Thread-153753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:44.138 [DEBUG] [Thread-153753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:40:44.138 [INFO] [Thread-153753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:40:44.141 [DEBUG] [Thread-153753] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:44.142 [DEBUG] [Thread-153753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:44.143 [DEBUG] [Thread-153753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:44.143 [DEBUG] [Thread-153753] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:44.143 [DEBUG] [Thread-153753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:44.143 [DEBUG] [Thread-153753] [transport.py] [_log()] Compression: none
2025-09-29T10:40:44.143 [DEBUG] [Thread-153753] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:44.161 [DEBUG] [Thread-153753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:44.162 [DEBUG] [Thread-153753] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:44.162 [DEBUG] [Thread-153753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:40:44.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:40:44.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:44.164 [DEBUG] [Thread-153753] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:44.164 [DEBUG] [Thread-153753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:44.164 [DEBUG] [Thread-153753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:44.165 [DEBUG] [Thread-153753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:40:44.165 [DEBUG] [Thread-153753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:44.181 [INFO] [Thread-153753] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:44.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:44.616 [DEBUG] [Thread-153755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:40:45.966 [DEBUG] [Thread-153753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:45.966 [DEBUG] [Thread-153753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:45.966 [DEBUG] [Thread-153753] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:40:46.006 [DEBUG] [Thread-153753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:46.006 [DEBUG] [Thread-153753] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:46.010 [DEBUG] [Thread-153753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:46.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:46.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:40:46.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:40:46.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:40:46.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:46.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:40:46.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:46.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:46.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:40:46.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.361184 -999.00  +11.30  24.44     61   +4.10 1 1 1 1 1   888    0 8.10 52.77 ----- 25.6 24.4 143.8 31.3 18.5 -25.3 17.2 -24.0 16.4 -24.0 17.4 -25.0
2025-09-29T10:40:46.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:40:46.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:40:46.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.361184
2025-09-29T10:40:46.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:40:46.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:40:46.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:40:46.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:40:46.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:40:46.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:40:16', tmtdew=8.69, humidity=55.28, cloud=0.0, wind=25.02, temperature=11.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:40:06.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:40:46.034 [DEBUG] [Thread-153753] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:46.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:40:46.136 [DEBUG] [Thread-153757] [transport.py] [_log()] starting thread (client mode): 0x2e38c5e0
2025-09-29T10:40:46.136 [DEBUG] [Thread-153757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:46.150 [DEBUG] [Thread-153757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:40:46.150 [INFO] [Thread-153757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:40:46.157 [DEBUG] [Thread-153757] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] Compression: none
2025-09-29T10:40:46.158 [DEBUG] [Thread-153757] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:46.217 [DEBUG] [Thread-153757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:46.217 [DEBUG] [Thread-153757] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:46.218 [DEBUG] [Thread-153757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:40:46.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:40:46.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:46.273 [DEBUG] [Thread-153757] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:46.273 [DEBUG] [Thread-153757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:46.273 [DEBUG] [Thread-153757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:46.273 [DEBUG] [Thread-153757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:40:46.273 [DEBUG] [Thread-153757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:46.292 [INFO] [Thread-153757] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:46.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:40:46.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:47.278 [DEBUG] [Thread-153757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:47.279 [DEBUG] [Thread-153757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:47.326 [DEBUG] [Thread-153757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:47.326 [DEBUG] [Thread-153757] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:47.335 [DEBUG] [Thread-153757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:47.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:47.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:40:47.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:40:47.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:47.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:47.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:47.369 [DEBUG] [Thread-153757] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:57.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:40:57.369 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:40:57.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:40:57.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 40, 48), 8.69, 55.03, 0.0, 24.53, 11.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:40:57.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:40:48
2025-09-29T10:40:58.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:40:58.211 [DEBUG] [Thread-153759] [transport.py] [_log()] starting thread (client mode): 0x2e3c19f0
2025-09-29T10:40:58.211 [DEBUG] [Thread-153759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:58.232 [DEBUG] [Thread-153759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:40:58.232 [INFO] [Thread-153759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] Compression: none
2025-09-29T10:40:58.235 [DEBUG] [Thread-153759] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:58.251 [DEBUG] [Thread-153759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:58.252 [DEBUG] [Thread-153759] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:58.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:40:58.253 [DEBUG] [Thread-153759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:40:58.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:58.254 [DEBUG] [Thread-153759] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:58.255 [DEBUG] [Thread-153759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:58.255 [DEBUG] [Thread-153759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:58.255 [DEBUG] [Thread-153759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:40:58.255 [DEBUG] [Thread-153759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:58.272 [INFO] [Thread-153759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:58.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:59.057 [DEBUG] [Thread-153759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:40:59.057 [DEBUG] [Thread-153759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:40:59.058 [DEBUG] [Thread-153759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:40:59.098 [DEBUG] [Thread-153759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:40:59.098 [DEBUG] [Thread-153759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:40:59.101 [DEBUG] [Thread-153759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:40:59.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:40:59.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:40:59.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:40:59.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:40:59.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:40:59.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:40:59.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:40:59.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:40:59.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:40:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.361184 -999.00  +11.30  24.44     61   +4.10 1 1 1 1 1   888    0 8.10 52.77 ----- 25.6 24.4 143.8 31.3 18.5 -25.3 17.2 -24.0 16.4 -24.0 17.4 -25.0
2025-09-29T10:40:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:40:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:40:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.361184
2025-09-29T10:40:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:40:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:40:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:40:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:40:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:40:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:40:48', tmtdew=8.69, humidity=55.03, cloud=0.0, wind=24.53, temperature=11.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:40:06.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:40:59.126 [DEBUG] [Thread-153759] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:40:59.212 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:40:59.221 [DEBUG] [Thread-153762] [transport.py] [_log()] starting thread (client mode): 0x2b9c3e50
2025-09-29T10:40:59.221 [DEBUG] [Thread-153762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:40:59.236 [DEBUG] [Thread-153762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:40:59.236 [INFO] [Thread-153762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] client lang: <none>
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] server lang: <none>
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] kex follows: False
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:40:59.244 [DEBUG] [Thread-153762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:40:59.245 [DEBUG] [Thread-153762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:40:59.245 [DEBUG] [Thread-153762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:40:59.245 [DEBUG] [Thread-153762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:40:59.245 [DEBUG] [Thread-153762] [transport.py] [_log()] Compression: none
2025-09-29T10:40:59.245 [DEBUG] [Thread-153762] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:40:59.300 [DEBUG] [Thread-153762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:40:59.301 [DEBUG] [Thread-153762] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:40:59.301 [DEBUG] [Thread-153762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:40:59.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:40:59.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:40:59.362 [DEBUG] [Thread-153762] [transport.py] [_log()] userauth is OK
2025-09-29T10:40:59.362 [DEBUG] [Thread-153762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:40:59.362 [DEBUG] [Thread-153762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:40:59.362 [DEBUG] [Thread-153762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:40:59.362 [DEBUG] [Thread-153762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:40:59.381 [INFO] [Thread-153762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:40:59.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:40:59.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:40:59.655 [DEBUG] [Thread-153764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:41:00.366 [DEBUG] [Thread-153762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:41:00.366 [DEBUG] [Thread-153762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:41:00.414 [DEBUG] [Thread-153762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:41:00.414 [DEBUG] [Thread-153762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:41:00.423 [DEBUG] [Thread-153762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:41:00.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:41:00.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:41:00.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:41:00.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:41:00.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:41:00.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:41:00.458 [DEBUG] [Thread-153762] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:41:10.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:41:10.460 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:41:10.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:41:11.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 40, 48), 8.69, 55.03, 0.0, 24.53, 11.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:41:11.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:40:48
2025-09-29T10:41:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:41:11.297 [DEBUG] [Thread-153765] [transport.py] [_log()] starting thread (client mode): 0x2b9c3f10
2025-09-29T10:41:11.297 [DEBUG] [Thread-153765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:41:11.316 [DEBUG] [Thread-153765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:41:11.317 [INFO] [Thread-153765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:41:11.318 [DEBUG] [Thread-153765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:41:11.318 [DEBUG] [Thread-153765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:41:11.318 [DEBUG] [Thread-153765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:41:11.318 [DEBUG] [Thread-153765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] client lang: <none>
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] server lang: <none>
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] kex follows: False
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] Compression: none
2025-09-29T10:41:11.319 [DEBUG] [Thread-153765] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:41:11.332 [DEBUG] [Thread-153765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:41:11.333 [DEBUG] [Thread-153765] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:41:11.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:41:11.334 [DEBUG] [Thread-153765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:41:11.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:41:11.336 [DEBUG] [Thread-153765] [transport.py] [_log()] userauth is OK
2025-09-29T10:41:11.336 [DEBUG] [Thread-153765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:41:11.336 [DEBUG] [Thread-153765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:41:11.336 [DEBUG] [Thread-153765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:41:11.336 [DEBUG] [Thread-153765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:41:11.354 [INFO] [Thread-153765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:41:11.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:41:11.982 [DEBUG] [Thread-153765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:41:11.982 [DEBUG] [Thread-153765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:41:11.982 [DEBUG] [Thread-153765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:41:12.023 [DEBUG] [Thread-153765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:41:12.023 [DEBUG] [Thread-153765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:41:12.028 [DEBUG] [Thread-153765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:41:12.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:41:12.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:41:12.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:41:12.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:41:12.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:41:12.059 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:41:12.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:41:12.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:41:12.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:41:12.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.361531 -999.00  +11.30  19.82     60   +4.00 1 1 1 1 1   888    0 8.22 54.18 ----- 17.9 19.8 138.8 28.8 18.6 -24.1 17.2 -24.7 16.4 -25.3 17.4 -24.3
2025-09-29T10:41:12.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:41:12.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:41:12.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.361531
2025-09-29T10:41:12.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:41:12.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:41:12.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:41:12.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:41:12.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:41:12.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:40:48', tmtdew=8.69, humidity=55.03, cloud=0.0, wind=24.53, temperature=11.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:40:36.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:41:12.062 [DEBUG] [Thread-153765] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:41:12.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:41:12.158 [DEBUG] [Thread-153768] [transport.py] [_log()] starting thread (client mode): 0x2e3c09a0
2025-09-29T10:41:12.158 [DEBUG] [Thread-153768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:41:12.173 [DEBUG] [Thread-153768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:41:12.173 [INFO] [Thread-153768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:41:12.181 [DEBUG] [Thread-153768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:41:12.181 [DEBUG] [Thread-153768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:41:12.181 [DEBUG] [Thread-153768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] client lang: <none>
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] server lang: <none>
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] kex follows: False
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] Compression: none
2025-09-29T10:41:12.182 [DEBUG] [Thread-153768] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:41:12.239 [DEBUG] [Thread-153768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:41:12.239 [DEBUG] [Thread-153768] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:41:12.239 [DEBUG] [Thread-153768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:41:12.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:41:12.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:41:12.296 [DEBUG] [Thread-153768] [transport.py] [_log()] userauth is OK
2025-09-29T10:41:12.296 [DEBUG] [Thread-153768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:41:12.296 [DEBUG] [Thread-153768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:41:12.296 [DEBUG] [Thread-153768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:41:12.296 [DEBUG] [Thread-153768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:41:12.310 [INFO] [Thread-153768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:41:12.311 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:41:12.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:41:13.267 [DEBUG] [Thread-153768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:41:13.267 [DEBUG] [Thread-153768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:41:13.315 [DEBUG] [Thread-153768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:41:13.315 [DEBUG] [Thread-153768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:41:13.323 [DEBUG] [Thread-153768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:41:13.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:41:13.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:41:13.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:41:13.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:41:13.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:41:13.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:41:13.354 [DEBUG] [Thread-153768] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:41:14.687 [DEBUG] [Thread-153770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:41:23.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:41:23.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:41:23.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:41:23.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 41, 20), 8.59, 55.34, 0.0, 27.12, 11.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:41:23.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:41:20
2025-09-29T10:41:24.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:41:24.193 [DEBUG] [Thread-153771] [transport.py] [_log()] starting thread (client mode): 0x2b9c1d50
2025-09-29T10:41:24.193 [DEBUG] [Thread-153771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:41:24.213 [DEBUG] [Thread-153771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:41:24.213 [INFO] [Thread-153771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] client lang: <none>
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] server lang: <none>
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] kex follows: False
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:41:24.216 [DEBUG] [Thread-153771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:41:24.217 [DEBUG] [Thread-153771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:41:24.217 [DEBUG] [Thread-153771] [transport.py] [_log()] Compression: none
2025-09-29T10:41:24.217 [DEBUG] [Thread-153771] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:41:24.233 [DEBUG] [Thread-153771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:41:24.234 [DEBUG] [Thread-153771] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:41:24.234 [DEBUG] [Thread-153771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:41:24.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:41:24.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:41:24.236 [DEBUG] [Thread-153771] [transport.py] [_log()] userauth is OK
2025-09-29T10:41:24.236 [DEBUG] [Thread-153771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:41:24.237 [DEBUG] [Thread-153771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:41:24.237 [DEBUG] [Thread-153771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:41:24.237 [DEBUG] [Thread-153771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:41:24.252 [INFO] [Thread-153771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:41:24.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:41:25.051 [DEBUG] [Thread-153771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:41:25.051 [DEBUG] [Thread-153771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:41:25.051 [DEBUG] [Thread-153771] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:41:25.092 [DEBUG] [Thread-153771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:41:25.092 [DEBUG] [Thread-153771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:41:25.094 [DEBUG] [Thread-153771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:41:25.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:41:25.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:41:25.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:41:25.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:41:25.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:41:25.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:41:25.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:41:25.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:41:25.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:41:25.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.361531 -999.00  +11.30  19.82     60   +4.00 1 1 1 1 1   888    0 8.22 54.18 ----- 17.9 19.8 138.8 28.8 18.6 -24.1 17.2 -24.7 16.4 -25.3 17.4 -24.3
2025-09-29T10:41:25.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:41:25.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:41:25.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.361531
2025-09-29T10:41:25.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:41:25.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:41:25.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:41:25.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:41:25.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:41:25.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:41:20', tmtdew=8.59, humidity=55.34, cloud=0.0, wind=27.12, temperature=11.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:40:36.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:41:25.113 [DEBUG] [Thread-153771] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:41:25.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:41:25.208 [DEBUG] [Thread-153774] [transport.py] [_log()] starting thread (client mode): 0x2b9bbc40
2025-09-29T10:41:25.208 [DEBUG] [Thread-153774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:41:25.223 [DEBUG] [Thread-153774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:41:25.223 [INFO] [Thread-153774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:41:25.230 [DEBUG] [Thread-153774] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] client lang: <none>
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] server lang: <none>
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] kex follows: False
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] Compression: none
2025-09-29T10:41:25.231 [DEBUG] [Thread-153774] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:41:25.288 [DEBUG] [Thread-153774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:41:25.289 [DEBUG] [Thread-153774] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:41:25.289 [DEBUG] [Thread-153774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:41:25.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:41:25.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:41:25.344 [DEBUG] [Thread-153774] [transport.py] [_log()] userauth is OK
2025-09-29T10:41:25.345 [DEBUG] [Thread-153774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:41:25.345 [DEBUG] [Thread-153774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:41:25.345 [DEBUG] [Thread-153774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:41:25.345 [DEBUG] [Thread-153774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:41:25.364 [INFO] [Thread-153774] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:41:25.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:41:25.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:41:26.336 [DEBUG] [Thread-153774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:41:26.336 [DEBUG] [Thread-153774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:41:26.384 [DEBUG] [Thread-153774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:41:26.384 [DEBUG] [Thread-153774] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:41:26.393 [DEBUG] [Thread-153774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:41:26.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:41:26.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:41:26.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:41:26.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:41:26.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:41:26.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:41:26.426 [DEBUG] [Thread-153774] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:41:29.721 [DEBUG] [Thread-153776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:41:32.024 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:41:32.025 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:41:33.600 [DEBUG] [Thread-153777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:41:36.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:41:36.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:41:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:41:36.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 41, 20), 8.59, 55.34, 0.0, 27.12, 11.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:41:36.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:41:20
2025-09-29T10:41:37.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:41:37.249 [DEBUG] [Thread-153778] [transport.py] [_log()] starting thread (client mode): 0x2e3c14b0
2025-09-29T10:41:37.250 [DEBUG] [Thread-153778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:41:37.270 [DEBUG] [Thread-153778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:41:37.270 [INFO] [Thread-153778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] client lang: <none>
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] server lang: <none>
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] kex follows: False
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] Compression: none
2025-09-29T10:41:37.274 [DEBUG] [Thread-153778] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:41:37.291 [DEBUG] [Thread-153778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:41:37.291 [DEBUG] [Thread-153778] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:41:37.291 [DEBUG] [Thread-153778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:41:37.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:41:37.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:41:37.293 [DEBUG] [Thread-153778] [transport.py] [_log()] userauth is OK
2025-09-29T10:41:37.293 [DEBUG] [Thread-153778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:41:37.293 [DEBUG] [Thread-153778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:41:37.293 [DEBUG] [Thread-153778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:41:37.293 [DEBUG] [Thread-153778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:41:37.302 [INFO] [Thread-153778] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:41:37.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:41:38.150 [DEBUG] [Thread-153778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:41:38.150 [DEBUG] [Thread-153778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:41:38.151 [DEBUG] [Thread-153778] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:41:38.191 [DEBUG] [Thread-153778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:41:38.191 [DEBUG] [Thread-153778] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:41:38.193 [DEBUG] [Thread-153778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:41:38.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:41:38.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:41:38.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:41:38.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:41:38.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:41:38.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:41:38.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:41:38.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:41:38.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:41:38.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.361531 -999.00  +11.30  19.82     60   +4.00 1 1 1 1 1   888    0 8.22 54.18 ----- 17.9 19.8 138.8 28.8 18.6 -24.1 17.2 -24.7 16.4 -25.3 17.4 -24.3
2025-09-29T10:41:38.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:41:38.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:41:38.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.361531
2025-09-29T10:41:38.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:41:38.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:41:38.215 [DEBUG] [Thread-153778] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:41:38.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:41:38.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:41:38.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:41:38.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:41:20', tmtdew=8.59, humidity=55.34, cloud=0.0, wind=27.12, temperature=11.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:40:36.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:41:38.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:41:38.314 [DEBUG] [Thread-153781] [transport.py] [_log()] starting thread (client mode): 0x2e3c1930
2025-09-29T10:41:38.314 [DEBUG] [Thread-153781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:41:38.330 [DEBUG] [Thread-153781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:41:38.330 [INFO] [Thread-153781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:41:38.338 [DEBUG] [Thread-153781] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:41:38.338 [DEBUG] [Thread-153781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:41:38.338 [DEBUG] [Thread-153781] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:41:38.338 [DEBUG] [Thread-153781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:38.338 [DEBUG] [Thread-153781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:38.338 [DEBUG] [Thread-153781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] client lang: <none>
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] server lang: <none>
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] kex follows: False
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:41:38.339 [DEBUG] [Thread-153781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:41:38.340 [DEBUG] [Thread-153781] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:41:38.340 [DEBUG] [Thread-153781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:41:38.340 [DEBUG] [Thread-153781] [transport.py] [_log()] Compression: none
2025-09-29T10:41:38.340 [DEBUG] [Thread-153781] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:41:38.396 [DEBUG] [Thread-153781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:41:38.396 [DEBUG] [Thread-153781] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:41:38.397 [DEBUG] [Thread-153781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:41:38.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:41:38.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:41:38.452 [DEBUG] [Thread-153781] [transport.py] [_log()] userauth is OK
2025-09-29T10:41:38.452 [DEBUG] [Thread-153781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:41:38.453 [DEBUG] [Thread-153781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:41:38.453 [DEBUG] [Thread-153781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:41:38.453 [DEBUG] [Thread-153781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:41:38.471 [INFO] [Thread-153781] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:41:38.471 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:41:38.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:41:39.455 [DEBUG] [Thread-153781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:41:39.455 [DEBUG] [Thread-153781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:41:39.503 [DEBUG] [Thread-153781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:41:39.503 [DEBUG] [Thread-153781] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:41:39.512 [DEBUG] [Thread-153781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:41:39.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:41:39.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:41:39.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:41:39.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:41:39.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:41:39.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:41:39.545 [DEBUG] [Thread-153781] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:41:44.764 [DEBUG] [Thread-153783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:41:49.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:41:49.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:41:49.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:41:50.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 41, 20), 8.59, 55.34, 0.0, 27.12, 11.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:41:50.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:41:20
2025-09-29T10:41:50.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:41:50.385 [DEBUG] [Thread-153784] [transport.py] [_log()] starting thread (client mode): 0x2b9c0040
2025-09-29T10:41:50.385 [DEBUG] [Thread-153784] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:41:50.404 [DEBUG] [Thread-153784] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:41:50.404 [INFO] [Thread-153784] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:41:50.407 [DEBUG] [Thread-153784] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:41:50.407 [DEBUG] [Thread-153784] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:41:50.407 [DEBUG] [Thread-153784] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:41:50.407 [DEBUG] [Thread-153784] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:50.407 [DEBUG] [Thread-153784] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:41:50.407 [DEBUG] [Thread-153784] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:50.407 [DEBUG] [Thread-153784] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] client lang: <none>
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] server lang: <none>
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] kex follows: False
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] Compression: none
2025-09-29T10:41:50.408 [DEBUG] [Thread-153784] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:41:50.425 [DEBUG] [Thread-153784] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:41:50.426 [DEBUG] [Thread-153784] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:41:50.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:41:50.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:41:50.426 [DEBUG] [Thread-153784] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:41:50.426 [DEBUG] [Thread-153784] [transport.py] [_log()] userauth is OK
2025-09-29T10:41:50.426 [DEBUG] [Thread-153784] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:41:50.427 [DEBUG] [Thread-153784] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:41:50.427 [DEBUG] [Thread-153784] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:41:50.427 [DEBUG] [Thread-153784] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:41:50.448 [INFO] [Thread-153784] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:41:50.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:41:51.122 [DEBUG] [Thread-153784] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:41:51.122 [DEBUG] [Thread-153784] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:41:51.122 [DEBUG] [Thread-153784] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:41:51.163 [DEBUG] [Thread-153784] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:41:51.163 [DEBUG] [Thread-153784] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:41:51.165 [DEBUG] [Thread-153784] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:41:51.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:41:51.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:41:51.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:41:51.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:41:51.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:41:51.186 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:41:51.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.361878 -999.00  +11.20  16.86     60   +4.00 1 1 1 1 1   888    0 8.21 57.99 ----- 13.6 16.9 133.6 28.1 18.5 -24.6 17.3 -24.4 16.5 -25.0 17.6 -25.5
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.361878
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:41:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:41:20', tmtdew=8.59, humidity=55.34, cloud=0.0, wind=27.12, temperature=11.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:41:06.259', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:41:51.187 [DEBUG] [Thread-153784] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:41:51.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:41:59.795 [DEBUG] [Thread-153787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:42:14.840 [DEBUG] [Thread-153788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:42:29.869 [DEBUG] [Thread-153789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:42:32.175 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:42:32.176 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:42:33.678 [DEBUG] [Thread-153790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:42:44.895 [DEBUG] [Thread-153791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:42:59.926 [DEBUG] [Thread-153792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:43:14.956 [DEBUG] [Thread-153793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:43:29.982 [DEBUG] [Thread-153794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:43:32.318 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:43:32.319 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:43:33.733 [DEBUG] [Thread-153795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:43:45.008 [DEBUG] [Thread-153796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:44:00.037 [DEBUG] [Thread-153797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:44:04.155 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T10:44:14.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:44:14.157 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:44:14.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:44:14.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 43, 28), 8.79, 54.54, 0.0, 22.28, 11.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:44:14.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:43:28
2025-09-29T10:44:14.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:44:15.024 [DEBUG] [Thread-153798] [transport.py] [_log()] starting thread (client mode): 0x2b91e380
2025-09-29T10:44:15.024 [DEBUG] [Thread-153798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:44:15.045 [DEBUG] [Thread-153798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:44:15.045 [INFO] [Thread-153798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:44:15.048 [DEBUG] [Thread-153798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:44:15.048 [DEBUG] [Thread-153798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:44:15.048 [DEBUG] [Thread-153798] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:44:15.048 [DEBUG] [Thread-153798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:15.048 [DEBUG] [Thread-153798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:15.048 [DEBUG] [Thread-153798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] client lang: <none>
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] server lang: <none>
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] kex follows: False
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] Compression: none
2025-09-29T10:44:15.049 [DEBUG] [Thread-153798] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:44:15.065 [DEBUG] [Thread-153798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:44:15.065 [DEBUG] [Thread-153798] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:44:15.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:44:15.067 [DEBUG] [Thread-153800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:44:15.067 [DEBUG] [Thread-153798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:44:15.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:44:15.070 [DEBUG] [Thread-153798] [transport.py] [_log()] userauth is OK
2025-09-29T10:44:15.070 [DEBUG] [Thread-153798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:44:15.070 [DEBUG] [Thread-153798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:44:15.070 [DEBUG] [Thread-153798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:44:15.071 [DEBUG] [Thread-153798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:44:15.098 [INFO] [Thread-153798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:44:15.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:44:15.955 [DEBUG] [Thread-153798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:44:15.956 [DEBUG] [Thread-153798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:44:15.956 [DEBUG] [Thread-153798] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:44:15.996 [DEBUG] [Thread-153798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:44:15.996 [DEBUG] [Thread-153798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:44:15.999 [DEBUG] [Thread-153798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:44:16.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:44:16.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:44:16.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:44:16.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:44:16.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:44:16.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:44:16.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:44:16.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:44:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:44:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.363614 -999.00  +11.60  15.23     60   +4.20 1 1 1 1 1   888    0 8.65 62.76 ----- 17.4 15.2 171.0 18.2 19.0 -24.9 17.9 -24.1 17.0 -24.6 18.0 -23.8
2025-09-29T10:44:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:44:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:44:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.363614
2025-09-29T10:44:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:44:16.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:44:16.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:44:16.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:44:16.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:44:16.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:43:28', tmtdew=8.79, humidity=54.54, cloud=0.0, wind=22.28, temperature=11.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:43:36.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:44:16.028 [DEBUG] [Thread-153798] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:44:16.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:44:16.144 [DEBUG] [Thread-153802] [transport.py] [_log()] starting thread (client mode): 0x2b91cfd0
2025-09-29T10:44:16.145 [DEBUG] [Thread-153802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:44:16.165 [DEBUG] [Thread-153802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:44:16.165 [INFO] [Thread-153802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:44:16.178 [DEBUG] [Thread-153802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:44:16.179 [DEBUG] [Thread-153802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:44:16.179 [DEBUG] [Thread-153802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:44:16.179 [DEBUG] [Thread-153802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:16.179 [DEBUG] [Thread-153802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:16.179 [DEBUG] [Thread-153802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] client lang: <none>
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] server lang: <none>
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] kex follows: False
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:44:16.180 [DEBUG] [Thread-153802] [transport.py] [_log()] Compression: none
2025-09-29T10:44:16.181 [DEBUG] [Thread-153802] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:44:16.241 [DEBUG] [Thread-153802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:44:16.241 [DEBUG] [Thread-153802] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:44:16.242 [DEBUG] [Thread-153802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:44:16.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:44:16.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:44:16.299 [DEBUG] [Thread-153802] [transport.py] [_log()] userauth is OK
2025-09-29T10:44:16.300 [DEBUG] [Thread-153802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:44:16.300 [DEBUG] [Thread-153802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:44:16.300 [DEBUG] [Thread-153802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:44:16.300 [DEBUG] [Thread-153802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:44:16.319 [INFO] [Thread-153802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:44:16.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:44:16.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:44:17.276 [DEBUG] [Thread-153802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:44:17.276 [DEBUG] [Thread-153802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:44:17.324 [DEBUG] [Thread-153802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:44:17.324 [DEBUG] [Thread-153802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:44:17.333 [DEBUG] [Thread-153802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:44:17.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:44:17.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:44:17.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:44:17.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:44:17.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:44:17.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:44:17.367 [DEBUG] [Thread-153802] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:44:27.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:44:27.369 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:44:27.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:44:27.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 43, 28), 8.79, 54.54, 0.0, 22.28, 11.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:44:27.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:43:28
2025-09-29T10:44:28.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:44:28.240 [DEBUG] [Thread-153804] [transport.py] [_log()] starting thread (client mode): 0x2b91e2f0
2025-09-29T10:44:28.240 [DEBUG] [Thread-153804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:44:28.255 [DEBUG] [Thread-153804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:44:28.255 [INFO] [Thread-153804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:44:28.258 [DEBUG] [Thread-153804] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] client lang: <none>
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] server lang: <none>
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] kex follows: False
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:44:28.259 [DEBUG] [Thread-153804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:44:28.260 [DEBUG] [Thread-153804] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:44:28.260 [DEBUG] [Thread-153804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:44:28.260 [DEBUG] [Thread-153804] [transport.py] [_log()] Compression: none
2025-09-29T10:44:28.260 [DEBUG] [Thread-153804] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:44:28.277 [DEBUG] [Thread-153804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:44:28.277 [DEBUG] [Thread-153804] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:44:28.278 [DEBUG] [Thread-153804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:44:28.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:44:28.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:44:28.280 [DEBUG] [Thread-153804] [transport.py] [_log()] userauth is OK
2025-09-29T10:44:28.280 [DEBUG] [Thread-153804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:44:28.281 [DEBUG] [Thread-153804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:44:28.281 [DEBUG] [Thread-153804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:44:28.281 [DEBUG] [Thread-153804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:44:28.305 [INFO] [Thread-153804] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:44:28.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:44:28.964 [DEBUG] [Thread-153804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:44:28.964 [DEBUG] [Thread-153804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:44:28.965 [DEBUG] [Thread-153804] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:44:29.005 [DEBUG] [Thread-153804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:44:29.006 [DEBUG] [Thread-153804] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:44:29.008 [DEBUG] [Thread-153804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:44:29.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:44:29.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:44:29.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:44:29.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:44:29.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:44:29.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:44:29.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:44:29.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:44:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:44:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.363962 -999.00  +11.50  16.17     60   +4.10 1 1 1 1 1   888    0 8.64 62.67 ----- 15.6 16.2 145.3 20.2 19.1 -27.8 18.0 -24.2 16.9 -25.9 18.1 -25.5
2025-09-29T10:44:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:44:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:44:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.363962
2025-09-29T10:44:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:44:29.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:44:29.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:44:29.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:44:29.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:44:29.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:43:28', tmtdew=8.79, humidity=54.54, cloud=0.0, wind=22.28, temperature=11.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:44:06.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:44:29.032 [DEBUG] [Thread-153804] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:44:29.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:44:29.126 [DEBUG] [Thread-153807] [transport.py] [_log()] starting thread (client mode): 0x2b9ba3e0
2025-09-29T10:44:29.126 [DEBUG] [Thread-153807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:44:29.141 [DEBUG] [Thread-153807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:44:29.141 [INFO] [Thread-153807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:44:29.149 [DEBUG] [Thread-153807] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:44:29.149 [DEBUG] [Thread-153807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:44:29.149 [DEBUG] [Thread-153807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:44:29.149 [DEBUG] [Thread-153807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:29.149 [DEBUG] [Thread-153807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] client lang: <none>
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] server lang: <none>
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] kex follows: False
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:44:29.150 [DEBUG] [Thread-153807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:44:29.151 [DEBUG] [Thread-153807] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:44:29.151 [DEBUG] [Thread-153807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:44:29.151 [DEBUG] [Thread-153807] [transport.py] [_log()] Compression: none
2025-09-29T10:44:29.151 [DEBUG] [Thread-153807] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:44:29.207 [DEBUG] [Thread-153807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:44:29.207 [DEBUG] [Thread-153807] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:44:29.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:44:29.209 [DEBUG] [Thread-153807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:44:29.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:44:29.263 [DEBUG] [Thread-153807] [transport.py] [_log()] userauth is OK
2025-09-29T10:44:29.263 [DEBUG] [Thread-153807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:44:29.263 [DEBUG] [Thread-153807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:44:29.263 [DEBUG] [Thread-153807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:44:29.263 [DEBUG] [Thread-153807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:44:29.286 [INFO] [Thread-153807] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:44:29.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:44:29.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:44:30.096 [DEBUG] [Thread-153809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:44:30.338 [DEBUG] [Thread-153807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:44:30.338 [DEBUG] [Thread-153807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:44:30.386 [DEBUG] [Thread-153807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:44:30.386 [DEBUG] [Thread-153807] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:44:30.395 [DEBUG] [Thread-153807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:44:30.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:44:30.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:44:30.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:44:30.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:44:30.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:44:30.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:44:30.430 [DEBUG] [Thread-153807] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:44:32.462 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:44:32.463 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:44:33.764 [DEBUG] [Thread-153810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:44:40.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:44:40.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:44:40.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:44:41.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 44, 31), 8.82, 54.42, 0.0, 18.51, 11.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:44:41.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:44:31
2025-09-29T10:44:41.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:44:41.311 [DEBUG] [Thread-153811] [transport.py] [_log()] starting thread (client mode): 0x2e3c2500
2025-09-29T10:44:41.311 [DEBUG] [Thread-153811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:44:41.333 [DEBUG] [Thread-153811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:44:41.334 [INFO] [Thread-153811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:44:41.337 [DEBUG] [Thread-153811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:44:41.337 [DEBUG] [Thread-153811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] client lang: <none>
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] server lang: <none>
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] kex follows: False
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] Compression: none
2025-09-29T10:44:41.338 [DEBUG] [Thread-153811] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:44:41.354 [DEBUG] [Thread-153811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:44:41.355 [DEBUG] [Thread-153811] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:44:41.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:44:41.355 [DEBUG] [Thread-153811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:44:41.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:44:41.357 [DEBUG] [Thread-153811] [transport.py] [_log()] userauth is OK
2025-09-29T10:44:41.358 [DEBUG] [Thread-153811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:44:41.358 [DEBUG] [Thread-153811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:44:41.358 [DEBUG] [Thread-153811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:44:41.358 [DEBUG] [Thread-153811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:44:41.381 [INFO] [Thread-153811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:44:41.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:44:42.212 [DEBUG] [Thread-153811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:44:42.212 [DEBUG] [Thread-153811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:44:42.213 [DEBUG] [Thread-153811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:44:42.253 [DEBUG] [Thread-153811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:44:42.253 [DEBUG] [Thread-153811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:44:42.255 [DEBUG] [Thread-153811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:44:42.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:44:42.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:44:42.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:44:42.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:44:42.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:44:42.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:44:42.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:44:42.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:44:42.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:44:42.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.363962 -999.00  +11.50  16.17     60   +4.10 1 1 1 1 1   888    0 8.64 62.67 ----- 15.6 16.2 145.3 20.2 19.1 -27.8 18.0 -24.2 16.9 -25.9 18.1 -25.5
2025-09-29T10:44:42.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:44:42.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:44:42.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.363962
2025-09-29T10:44:42.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:44:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:44:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:44:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:44:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:44:42.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:44:31', tmtdew=8.82, humidity=54.42, cloud=0.0, wind=18.51, temperature=11.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:44:06.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:44:42.278 [DEBUG] [Thread-153811] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:44:42.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:44:42.376 [DEBUG] [Thread-153814] [transport.py] [_log()] starting thread (client mode): 0x2e3c0610
2025-09-29T10:44:42.377 [DEBUG] [Thread-153814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:44:42.391 [DEBUG] [Thread-153814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:44:42.391 [INFO] [Thread-153814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:44:42.398 [DEBUG] [Thread-153814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] client lang: <none>
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] server lang: <none>
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] kex follows: False
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] Compression: none
2025-09-29T10:44:42.399 [DEBUG] [Thread-153814] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:44:42.458 [DEBUG] [Thread-153814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:44:42.458 [DEBUG] [Thread-153814] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:44:42.459 [DEBUG] [Thread-153814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:44:42.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:44:42.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:44:42.514 [DEBUG] [Thread-153814] [transport.py] [_log()] userauth is OK
2025-09-29T10:44:42.514 [DEBUG] [Thread-153814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:44:42.515 [DEBUG] [Thread-153814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:44:42.515 [DEBUG] [Thread-153814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:44:42.515 [DEBUG] [Thread-153814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:44:42.533 [INFO] [Thread-153814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:44:42.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:44:42.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:44:43.555 [DEBUG] [Thread-153814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:44:43.555 [DEBUG] [Thread-153814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:44:43.603 [DEBUG] [Thread-153814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:44:43.603 [DEBUG] [Thread-153814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:44:43.612 [DEBUG] [Thread-153814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:44:43.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:44:43.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:44:43.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:44:43.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:44:43.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:44:43.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:44:43.647 [DEBUG] [Thread-153814] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:44:45.143 [DEBUG] [Thread-153816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:44:53.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:44:53.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:44:53.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:44:54.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 44, 31), 8.82, 54.42, 0.0, 18.51, 11.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:44:54.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:44:31
2025-09-29T10:44:54.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:44:54.505 [DEBUG] [Thread-153817] [transport.py] [_log()] starting thread (client mode): 0x2e38f5b0
2025-09-29T10:44:54.505 [DEBUG] [Thread-153817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:44:54.525 [DEBUG] [Thread-153817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:44:54.525 [INFO] [Thread-153817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] client lang: <none>
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] server lang: <none>
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] kex follows: False
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:44:54.530 [DEBUG] [Thread-153817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:44:54.531 [DEBUG] [Thread-153817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:44:54.531 [DEBUG] [Thread-153817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:44:54.531 [DEBUG] [Thread-153817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:44:54.531 [DEBUG] [Thread-153817] [transport.py] [_log()] Compression: none
2025-09-29T10:44:54.531 [DEBUG] [Thread-153817] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:44:54.546 [DEBUG] [Thread-153817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:44:54.546 [DEBUG] [Thread-153817] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:44:54.546 [DEBUG] [Thread-153817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:44:54.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:44:54.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:44:54.548 [DEBUG] [Thread-153817] [transport.py] [_log()] userauth is OK
2025-09-29T10:44:54.548 [DEBUG] [Thread-153817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:44:54.548 [DEBUG] [Thread-153817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:44:54.548 [DEBUG] [Thread-153817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:44:54.548 [DEBUG] [Thread-153817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:44:54.562 [INFO] [Thread-153817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:44:54.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:44:55.365 [DEBUG] [Thread-153817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:44:55.365 [DEBUG] [Thread-153817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:44:55.365 [DEBUG] [Thread-153817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:44:55.405 [DEBUG] [Thread-153817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:44:55.405 [DEBUG] [Thread-153817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:44:55.408 [DEBUG] [Thread-153817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:44:55.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:44:55.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:44:55.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:44:55.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:44:55.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:44:55.432 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:44:55.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:44:55.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:44:55.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:44:55.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.363962 -999.00  +11.50  16.17     60   +4.10 1 1 1 1 1   888    0 8.64 62.67 ----- 15.6 16.2 145.3 20.2 19.1 -27.8 18.0 -24.2 16.9 -25.9 18.1 -25.5
2025-09-29T10:44:55.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:44:55.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:44:55.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.363962
2025-09-29T10:44:55.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:44:55.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:44:55.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:44:55.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:44:55.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:44:55.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:44:31', tmtdew=8.82, humidity=54.42, cloud=0.0, wind=18.51, temperature=11.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:44:06.317', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:44:55.434 [DEBUG] [Thread-153817] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:44:55.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:44:55.539 [DEBUG] [Thread-153820] [transport.py] [_log()] starting thread (client mode): 0x2e3c1390
2025-09-29T10:44:55.539 [DEBUG] [Thread-153820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:44:55.554 [DEBUG] [Thread-153820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:44:55.554 [INFO] [Thread-153820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:44:55.561 [DEBUG] [Thread-153820] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:44:55.561 [DEBUG] [Thread-153820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:44:55.561 [DEBUG] [Thread-153820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] client lang: <none>
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] server lang: <none>
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] kex follows: False
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] Compression: none
2025-09-29T10:44:55.562 [DEBUG] [Thread-153820] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:44:55.618 [DEBUG] [Thread-153820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:44:55.618 [DEBUG] [Thread-153820] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:44:55.619 [DEBUG] [Thread-153820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:44:55.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:44:55.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:44:55.674 [DEBUG] [Thread-153820] [transport.py] [_log()] userauth is OK
2025-09-29T10:44:55.674 [DEBUG] [Thread-153820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:44:55.674 [DEBUG] [Thread-153820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:44:55.674 [DEBUG] [Thread-153820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:44:55.674 [DEBUG] [Thread-153820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:44:55.688 [INFO] [Thread-153820] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:44:55.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:44:55.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:44:56.630 [DEBUG] [Thread-153820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:44:56.630 [DEBUG] [Thread-153820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:44:56.678 [DEBUG] [Thread-153820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:44:56.678 [DEBUG] [Thread-153820] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:44:56.687 [DEBUG] [Thread-153820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:44:56.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:44:56.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:44:56.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:44:56.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:44:56.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:44:56.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:44:56.721 [DEBUG] [Thread-153820] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:45:00.190 [DEBUG] [Thread-153822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:45:06.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:45:06.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:45:06.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:45:07.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 45, 3), 8.81, 54.57, 0.0, 23.98, 11.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:45:07.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:45:03
2025-09-29T10:45:07.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:45:07.573 [DEBUG] [Thread-153823] [transport.py] [_log()] starting thread (client mode): 0x2e3c1450
2025-09-29T10:45:07.573 [DEBUG] [Thread-153823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:45:07.594 [DEBUG] [Thread-153823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:45:07.594 [INFO] [Thread-153823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:45:07.597 [DEBUG] [Thread-153823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] client lang: <none>
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] server lang: <none>
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] kex follows: False
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] Compression: none
2025-09-29T10:45:07.598 [DEBUG] [Thread-153823] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:45:07.624 [DEBUG] [Thread-153823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:45:07.625 [DEBUG] [Thread-153823] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:45:07.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:45:07.625 [DEBUG] [Thread-153823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:45:07.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:45:07.627 [DEBUG] [Thread-153823] [transport.py] [_log()] userauth is OK
2025-09-29T10:45:07.628 [DEBUG] [Thread-153823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:45:07.628 [DEBUG] [Thread-153823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:45:07.628 [DEBUG] [Thread-153823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:45:07.628 [DEBUG] [Thread-153823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:45:07.651 [INFO] [Thread-153823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:45:07.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:45:11.985 [DEBUG] [Thread-153823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:45:11.985 [DEBUG] [Thread-153823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:45:11.986 [DEBUG] [Thread-153823] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:45:12.027 [DEBUG] [Thread-153823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:45:12.027 [DEBUG] [Thread-153823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:45:12.030 [DEBUG] [Thread-153823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:45:12.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:45:12.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:45:12.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:45:12.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:45:12.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:45:12.191 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:45:12.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:45:12.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:45:12.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:45:12.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.364309 -999.00  +11.50  16.23     60   +4.10 1 1 1 1 1   888    0 8.71 62.88 ----- 15.9 16.2 154.8 21.4 19.1 -25.8 17.9 -25.4 16.9 -25.3 18.0 -26.1
2025-09-29T10:45:12.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:45:12.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:45:12.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.364309
2025-09-29T10:45:12.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:45:12.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:45:12.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:45:12.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:45:12.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:45:12.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:45:03', tmtdew=8.81, humidity=54.57, cloud=0.0, wind=23.98, temperature=11.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:44:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:45:12.194 [DEBUG] [Thread-153823] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:45:12.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:45:15.218 [DEBUG] [Thread-153826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:45:30.262 [DEBUG] [Thread-153827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:45:32.604 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:45:32.606 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:45:33.816 [DEBUG] [Thread-153828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:45:45.287 [DEBUG] [Thread-153829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:46:00.319 [DEBUG] [Thread-153830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:46:15.350 [DEBUG] [Thread-153831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:46:30.382 [DEBUG] [Thread-153832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:46:32.747 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:46:32.749 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:46:33.869 [DEBUG] [Thread-153833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:46:45.412 [DEBUG] [Thread-153834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:47:00.438 [DEBUG] [Thread-153835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:47:15.465 [DEBUG] [Thread-153836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:47:24.859 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T10:47:30.495 [DEBUG] [Thread-153837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:47:32.892 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:47:32.894 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:47:33.917 [DEBUG] [Thread-153838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:47:34.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:47:34.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:47:34.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:47:35.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 47, 11), 8.49, 55.9, 0.0, 25.48, 11.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:47:35.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:47:11
2025-09-29T10:47:35.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:47:35.789 [DEBUG] [Thread-153839] [transport.py] [_log()] starting thread (client mode): 0x2b91c0a0
2025-09-29T10:47:35.789 [DEBUG] [Thread-153839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:47:35.809 [DEBUG] [Thread-153839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:47:35.809 [INFO] [Thread-153839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] client lang: <none>
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] server lang: <none>
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] kex follows: False
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] Compression: none
2025-09-29T10:47:35.813 [DEBUG] [Thread-153839] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:47:35.828 [DEBUG] [Thread-153839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:47:35.828 [DEBUG] [Thread-153839] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:47:35.828 [DEBUG] [Thread-153839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:47:35.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:47:35.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:47:35.828 [DEBUG] [Thread-153839] [transport.py] [_log()] userauth is OK
2025-09-29T10:47:35.828 [DEBUG] [Thread-153839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:47:35.828 [DEBUG] [Thread-153839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:47:35.828 [DEBUG] [Thread-153839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:47:35.828 [DEBUG] [Thread-153839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:47:35.837 [INFO] [Thread-153839] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:47:35.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:47:36.478 [DEBUG] [Thread-153839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:47:36.478 [DEBUG] [Thread-153839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:47:36.479 [DEBUG] [Thread-153839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:47:36.520 [DEBUG] [Thread-153839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:47:36.520 [DEBUG] [Thread-153839] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:47:36.522 [DEBUG] [Thread-153839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:47:36.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:47:36.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:47:36.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:47:36.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:47:36.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:47:36.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:47:36.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.366045 -999.00  +11.70  18.73     59   +4.10 1 1 1 1 1   888    0 9.20 74.60 ----- 15.1 18.7 132.4 26.2 19.3 -25.7 18.0 -25.5 17.1 -24.8 18.2 -26.2
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.366045
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:47:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:47:11', tmtdew=8.49, humidity=55.9, cloud=0.0, wind=25.48, temperature=11.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:47:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:47:36.550 [DEBUG] [Thread-153839] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:47:36.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:47:36.636 [DEBUG] [Thread-153842] [transport.py] [_log()] starting thread (client mode): 0x2b91efb0
2025-09-29T10:47:36.637 [DEBUG] [Thread-153842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:47:36.651 [DEBUG] [Thread-153842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:47:36.651 [INFO] [Thread-153842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] client lang: <none>
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] server lang: <none>
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] kex follows: False
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] Compression: none
2025-09-29T10:47:36.659 [DEBUG] [Thread-153842] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:47:36.716 [DEBUG] [Thread-153842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:47:36.717 [DEBUG] [Thread-153842] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:47:36.717 [DEBUG] [Thread-153842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:47:36.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:47:36.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:47:36.773 [DEBUG] [Thread-153842] [transport.py] [_log()] userauth is OK
2025-09-29T10:47:36.773 [DEBUG] [Thread-153842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:47:36.773 [DEBUG] [Thread-153842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:47:36.773 [DEBUG] [Thread-153842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:47:36.773 [DEBUG] [Thread-153842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:47:36.788 [INFO] [Thread-153842] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:47:36.788 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:47:36.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:47:37.717 [DEBUG] [Thread-153842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:47:37.717 [DEBUG] [Thread-153842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:47:37.765 [DEBUG] [Thread-153842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:47:37.765 [DEBUG] [Thread-153842] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:47:37.774 [DEBUG] [Thread-153842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:47:37.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:47:37.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:47:37.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:47:37.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:47:37.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:47:37.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:47:37.806 [DEBUG] [Thread-153842] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:47:45.522 [DEBUG] [Thread-153844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:47:47.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:47:47.809 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:47:47.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:47:48.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 47, 43), 8.61, 55.5, 0.0, 18.92, 11.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:47:48.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:47:43
2025-09-29T10:47:48.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:47:48.678 [DEBUG] [Thread-153845] [transport.py] [_log()] starting thread (client mode): 0x2b9c2e90
2025-09-29T10:47:48.678 [DEBUG] [Thread-153845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:47:48.698 [DEBUG] [Thread-153845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:47:48.698 [INFO] [Thread-153845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] client lang: <none>
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] server lang: <none>
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] kex follows: False
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] Compression: none
2025-09-29T10:47:48.701 [DEBUG] [Thread-153845] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:47:48.719 [DEBUG] [Thread-153845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:47:48.719 [DEBUG] [Thread-153845] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:47:48.719 [DEBUG] [Thread-153845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:47:48.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:47:48.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:47:48.719 [DEBUG] [Thread-153845] [transport.py] [_log()] userauth is OK
2025-09-29T10:47:48.719 [DEBUG] [Thread-153845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:47:48.719 [DEBUG] [Thread-153845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:47:48.720 [DEBUG] [Thread-153845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:47:48.720 [DEBUG] [Thread-153845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:47:48.728 [INFO] [Thread-153845] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:47:48.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:47:49.581 [DEBUG] [Thread-153845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:47:49.582 [DEBUG] [Thread-153845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:47:49.582 [DEBUG] [Thread-153845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:47:49.623 [DEBUG] [Thread-153845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:47:49.623 [DEBUG] [Thread-153845] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:47:49.626 [DEBUG] [Thread-153845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:47:49.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:47:49.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:47:49.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:47:49.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:47:49.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:47:49.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:47:49.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:47:49.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:47:49.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:47:49.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.366045 -999.00  +11.70  18.73     59   +4.10 1 1 1 1 1   888    0 9.20 74.60 ----- 15.1 18.7 132.4 26.2 19.3 -25.7 18.0 -25.5 17.1 -24.8 18.2 -26.2
2025-09-29T10:47:49.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:47:49.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:47:49.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.366045
2025-09-29T10:47:49.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:47:49.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:47:49.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:47:49.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:47:49.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:47:49.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:47:43', tmtdew=8.61, humidity=55.5, cloud=0.0, wind=18.92, temperature=11.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:47:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:47:49.650 [DEBUG] [Thread-153845] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:47:49.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:47:49.742 [DEBUG] [Thread-153848] [transport.py] [_log()] starting thread (client mode): 0x28707460
2025-09-29T10:47:49.743 [DEBUG] [Thread-153848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:47:49.759 [DEBUG] [Thread-153848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:47:49.759 [INFO] [Thread-153848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] client lang: <none>
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] server lang: <none>
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] kex follows: False
2025-09-29T10:47:49.767 [DEBUG] [Thread-153848] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:47:49.768 [DEBUG] [Thread-153848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:47:49.768 [DEBUG] [Thread-153848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:47:49.768 [DEBUG] [Thread-153848] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:47:49.768 [DEBUG] [Thread-153848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:47:49.768 [DEBUG] [Thread-153848] [transport.py] [_log()] Compression: none
2025-09-29T10:47:49.768 [DEBUG] [Thread-153848] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:47:49.829 [DEBUG] [Thread-153848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:47:49.829 [DEBUG] [Thread-153848] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:47:49.830 [DEBUG] [Thread-153848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:47:49.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:47:49.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:47:49.885 [DEBUG] [Thread-153848] [transport.py] [_log()] userauth is OK
2025-09-29T10:47:49.885 [DEBUG] [Thread-153848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:47:49.885 [DEBUG] [Thread-153848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:47:49.886 [DEBUG] [Thread-153848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:47:49.886 [DEBUG] [Thread-153848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:47:49.905 [INFO] [Thread-153848] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:47:49.905 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:47:49.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:47:50.904 [DEBUG] [Thread-153848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:47:50.904 [DEBUG] [Thread-153848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:47:50.952 [DEBUG] [Thread-153848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:47:50.952 [DEBUG] [Thread-153848] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:47:50.961 [DEBUG] [Thread-153848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:47:50.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:47:50.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:47:50.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:47:50.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:47:50.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:47:50.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:47:50.995 [DEBUG] [Thread-153848] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:48:00.556 [DEBUG] [Thread-153850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:48:00.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:48:00.998 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:48:00.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:48:01.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 47, 43), 8.61, 55.5, 0.0, 18.92, 11.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:48:01.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:47:43
2025-09-29T10:48:01.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:48:01.880 [DEBUG] [Thread-153851] [transport.py] [_log()] starting thread (client mode): 0x28705bd0
2025-09-29T10:48:01.880 [DEBUG] [Thread-153851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:48:01.901 [DEBUG] [Thread-153851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:48:01.901 [INFO] [Thread-153851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] client lang: <none>
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] server lang: <none>
2025-09-29T10:48:01.903 [DEBUG] [Thread-153851] [transport.py] [_log()] kex follows: False
2025-09-29T10:48:01.904 [DEBUG] [Thread-153851] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:48:01.904 [DEBUG] [Thread-153851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:48:01.904 [DEBUG] [Thread-153851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:48:01.904 [DEBUG] [Thread-153851] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:48:01.904 [DEBUG] [Thread-153851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:48:01.904 [DEBUG] [Thread-153851] [transport.py] [_log()] Compression: none
2025-09-29T10:48:01.904 [DEBUG] [Thread-153851] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:48:01.914 [DEBUG] [Thread-153851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:48:01.914 [DEBUG] [Thread-153851] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:48:01.914 [DEBUG] [Thread-153851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:48:01.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:48:01.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:48:01.916 [DEBUG] [Thread-153851] [transport.py] [_log()] userauth is OK
2025-09-29T10:48:01.916 [DEBUG] [Thread-153851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:48:01.916 [DEBUG] [Thread-153851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:48:01.917 [DEBUG] [Thread-153851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:48:01.917 [DEBUG] [Thread-153851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:48:01.934 [INFO] [Thread-153851] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:48:01.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:48:02.584 [DEBUG] [Thread-153851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:48:02.584 [DEBUG] [Thread-153851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:48:02.584 [DEBUG] [Thread-153851] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:48:02.625 [DEBUG] [Thread-153851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:48:02.625 [DEBUG] [Thread-153851] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:48:02.627 [DEBUG] [Thread-153851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:48:02.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:48:02.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:48:02.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:48:02.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:48:02.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:48:02.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:48:02.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:48:02.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:48:02.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:48:02.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.366392 -999.00  +11.60  14.23     60   +4.30 1 1 1 1 1   888    0 9.15 73.56 ----- 16.1 14.2 116.6 19.0 19.4 -26.6 18.1 -24.9 17.2 -24.7 18.3 -25.6
2025-09-29T10:48:02.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:48:02.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:48:02.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.366392
2025-09-29T10:48:02.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:48:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:48:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:48:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:48:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:48:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:47:43', tmtdew=8.61, humidity=55.5, cloud=0.0, wind=18.92, temperature=11.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:47:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:48:02.651 [DEBUG] [Thread-153851] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:48:02.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:48:02.749 [DEBUG] [Thread-153854] [transport.py] [_log()] starting thread (client mode): 0x28705210
2025-09-29T10:48:02.749 [DEBUG] [Thread-153854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:48:02.764 [DEBUG] [Thread-153854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:48:02.764 [INFO] [Thread-153854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:48:02.772 [DEBUG] [Thread-153854] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:48:02.772 [DEBUG] [Thread-153854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:48:02.772 [DEBUG] [Thread-153854] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:48:02.772 [DEBUG] [Thread-153854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] client lang: <none>
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] server lang: <none>
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] kex follows: False
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] Compression: none
2025-09-29T10:48:02.773 [DEBUG] [Thread-153854] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:48:02.834 [DEBUG] [Thread-153854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:48:02.834 [DEBUG] [Thread-153854] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:48:02.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:48:02.835 [DEBUG] [Thread-153854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:48:02.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:48:02.891 [DEBUG] [Thread-153854] [transport.py] [_log()] userauth is OK
2025-09-29T10:48:02.891 [DEBUG] [Thread-153854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:48:02.891 [DEBUG] [Thread-153854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:48:02.891 [DEBUG] [Thread-153854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:48:02.891 [DEBUG] [Thread-153854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:48:02.910 [INFO] [Thread-153854] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:48:02.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:48:02.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:48:03.854 [DEBUG] [Thread-153854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:48:03.855 [DEBUG] [Thread-153854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:48:03.905 [DEBUG] [Thread-153854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:48:03.905 [DEBUG] [Thread-153854] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:48:03.913 [DEBUG] [Thread-153854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:48:03.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:48:03.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:48:03.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:48:03.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:48:03.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:48:03.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:48:03.947 [DEBUG] [Thread-153854] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:48:13.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:48:13.949 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:48:13.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:48:14.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 47, 43), 8.61, 55.5, 0.0, 18.92, 11.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:48:14.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:47:43
2025-09-29T10:48:14.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:48:14.820 [DEBUG] [Thread-153856] [transport.py] [_log()] starting thread (client mode): 0x287069e0
2025-09-29T10:48:14.820 [DEBUG] [Thread-153856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:48:14.840 [DEBUG] [Thread-153856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:48:14.840 [INFO] [Thread-153856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:48:14.843 [DEBUG] [Thread-153856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:48:14.843 [DEBUG] [Thread-153856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:48:14.843 [DEBUG] [Thread-153856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] client lang: <none>
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] server lang: <none>
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] kex follows: False
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] Compression: none
2025-09-29T10:48:14.844 [DEBUG] [Thread-153856] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:48:14.851 [DEBUG] [Thread-153856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:48:14.852 [DEBUG] [Thread-153856] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:48:14.852 [DEBUG] [Thread-153856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:48:14.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:48:14.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:48:14.853 [DEBUG] [Thread-153856] [transport.py] [_log()] userauth is OK
2025-09-29T10:48:14.853 [DEBUG] [Thread-153856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:48:14.853 [DEBUG] [Thread-153856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:48:14.853 [DEBUG] [Thread-153856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:48:14.853 [DEBUG] [Thread-153856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:48:14.865 [INFO] [Thread-153856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:48:14.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:48:15.607 [DEBUG] [Thread-153858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:48:15.657 [DEBUG] [Thread-153856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:48:15.657 [DEBUG] [Thread-153856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:48:15.657 [DEBUG] [Thread-153856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:48:15.698 [DEBUG] [Thread-153856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:48:15.698 [DEBUG] [Thread-153856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:48:15.701 [DEBUG] [Thread-153856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:48:15.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:48:15.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:48:15.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:48:15.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:48:15.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:48:15.721 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:48:15.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:48:15.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:48:15.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:48:15.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.366392 -999.00  +11.60  14.23     60   +4.30 1 1 1 1 1   888    0 9.15 73.56 ----- 16.1 14.2 116.6 19.0 19.4 -26.6 18.1 -24.9 17.2 -24.7 18.3 -25.6
2025-09-29T10:48:15.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:48:15.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:48:15.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.366392
2025-09-29T10:48:15.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:48:15.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:48:15.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:48:15.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:48:15.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:48:15.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:47:43', tmtdew=8.61, humidity=55.5, cloud=0.0, wind=18.92, temperature=11.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:47:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:48:15.722 [DEBUG] [Thread-153856] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:48:15.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:48:15.806 [DEBUG] [Thread-153860] [transport.py] [_log()] starting thread (client mode): 0x2b91df30
2025-09-29T10:48:15.806 [DEBUG] [Thread-153860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:48:15.821 [DEBUG] [Thread-153860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:48:15.821 [INFO] [Thread-153860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:48:15.828 [DEBUG] [Thread-153860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:48:15.828 [DEBUG] [Thread-153860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:48:15.828 [DEBUG] [Thread-153860] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:48:15.828 [DEBUG] [Thread-153860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:15.828 [DEBUG] [Thread-153860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] client lang: <none>
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] server lang: <none>
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] kex follows: False
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] Compression: none
2025-09-29T10:48:15.829 [DEBUG] [Thread-153860] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:48:15.884 [DEBUG] [Thread-153860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:48:15.884 [DEBUG] [Thread-153860] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:48:15.884 [DEBUG] [Thread-153860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:48:15.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:48:15.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:48:15.941 [DEBUG] [Thread-153860] [transport.py] [_log()] userauth is OK
2025-09-29T10:48:15.941 [DEBUG] [Thread-153860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:48:15.941 [DEBUG] [Thread-153860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:48:15.941 [DEBUG] [Thread-153860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:48:15.941 [DEBUG] [Thread-153860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:48:15.956 [INFO] [Thread-153860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:48:15.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:48:15.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:48:16.928 [DEBUG] [Thread-153860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:48:16.928 [DEBUG] [Thread-153860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:48:16.977 [DEBUG] [Thread-153860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:48:16.977 [DEBUG] [Thread-153860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:48:16.986 [DEBUG] [Thread-153860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:48:16.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:48:16.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:48:17.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:48:17.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:48:17.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:48:17.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:48:17.019 [DEBUG] [Thread-153860] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:48:27.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:48:27.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:48:27.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:48:27.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 48, 15), 8.54, 55.77, 0.0, 19.52, 11.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:48:27.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:48:15
2025-09-29T10:48:27.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:48:27.878 [DEBUG] [Thread-153862] [transport.py] [_log()] starting thread (client mode): 0x2b9bbc40
2025-09-29T10:48:27.879 [DEBUG] [Thread-153862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:48:27.897 [DEBUG] [Thread-153862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:48:27.897 [INFO] [Thread-153862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:48:27.898 [DEBUG] [Thread-153862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:48:27.898 [DEBUG] [Thread-153862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:48:27.898 [DEBUG] [Thread-153862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] client lang: <none>
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] server lang: <none>
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] kex follows: False
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] Compression: none
2025-09-29T10:48:27.899 [DEBUG] [Thread-153862] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:48:27.913 [DEBUG] [Thread-153862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:48:27.914 [DEBUG] [Thread-153862] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:48:27.914 [DEBUG] [Thread-153862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:48:27.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:48:27.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:48:27.916 [DEBUG] [Thread-153862] [transport.py] [_log()] userauth is OK
2025-09-29T10:48:27.916 [DEBUG] [Thread-153862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:48:27.916 [DEBUG] [Thread-153862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:48:27.916 [DEBUG] [Thread-153862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:48:27.916 [DEBUG] [Thread-153862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:48:27.933 [INFO] [Thread-153862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:48:27.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:48:28.723 [DEBUG] [Thread-153862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:48:28.724 [DEBUG] [Thread-153862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:48:28.724 [DEBUG] [Thread-153862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:48:28.764 [DEBUG] [Thread-153862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:48:28.764 [DEBUG] [Thread-153862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:48:28.767 [DEBUG] [Thread-153862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:48:28.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:48:28.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:48:28.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:48:28.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:48:28.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:48:28.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:48:28.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:48:28.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:48:28.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:48:28.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.366392 -999.00  +11.60  14.23     60   +4.30 1 1 1 1 1   888    0 9.15 73.56 ----- 16.1 14.2 116.6 19.0 19.4 -26.6 18.1 -24.9 17.2 -24.7 18.3 -25.6
2025-09-29T10:48:28.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:48:28.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:48:28.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.366392
2025-09-29T10:48:28.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:48:28.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:48:28.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:48:28.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:48:28.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:48:28.791 [DEBUG] [Thread-153862] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:48:28.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:48:15', tmtdew=8.54, humidity=55.77, cloud=0.0, wind=19.52, temperature=11.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:47:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:48:28.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:48:28.887 [DEBUG] [Thread-153865] [transport.py] [_log()] starting thread (client mode): 0x2b9b9d50
2025-09-29T10:48:28.887 [DEBUG] [Thread-153865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:48:28.902 [DEBUG] [Thread-153865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:48:28.902 [INFO] [Thread-153865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] client lang: <none>
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] server lang: <none>
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] kex follows: False
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] Compression: none
2025-09-29T10:48:28.910 [DEBUG] [Thread-153865] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:48:28.969 [DEBUG] [Thread-153865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:48:28.970 [DEBUG] [Thread-153865] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:48:28.970 [DEBUG] [Thread-153865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:48:28.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:48:28.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:48:29.024 [DEBUG] [Thread-153865] [transport.py] [_log()] userauth is OK
2025-09-29T10:48:29.025 [DEBUG] [Thread-153865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:48:29.025 [DEBUG] [Thread-153865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:48:29.025 [DEBUG] [Thread-153865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:48:29.025 [DEBUG] [Thread-153865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:48:29.043 [INFO] [Thread-153865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:48:29.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:48:29.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:48:29.997 [DEBUG] [Thread-153865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:48:29.998 [DEBUG] [Thread-153865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:48:30.045 [DEBUG] [Thread-153865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:48:30.045 [DEBUG] [Thread-153865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:48:30.054 [DEBUG] [Thread-153865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:48:30.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:48:30.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:48:30.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:48:30.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:48:30.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:48:30.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:48:30.089 [DEBUG] [Thread-153865] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:48:30.642 [DEBUG] [Thread-153867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:48:33.035 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:48:33.037 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:48:33.977 [DEBUG] [Thread-153868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:48:40.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:48:40.092 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:48:40.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:48:40.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 48, 15), 8.54, 55.77, 0.0, 19.52, 11.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:48:40.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:48:15
2025-09-29T10:48:40.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:48:40.953 [DEBUG] [Thread-153869] [transport.py] [_log()] starting thread (client mode): 0x287065c0
2025-09-29T10:48:40.953 [DEBUG] [Thread-153869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:48:40.974 [DEBUG] [Thread-153869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:48:40.974 [INFO] [Thread-153869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:48:40.977 [DEBUG] [Thread-153869] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] client lang: <none>
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] server lang: <none>
2025-09-29T10:48:40.978 [DEBUG] [Thread-153869] [transport.py] [_log()] kex follows: False
2025-09-29T10:48:40.979 [DEBUG] [Thread-153869] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:48:40.979 [DEBUG] [Thread-153869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:48:40.979 [DEBUG] [Thread-153869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:48:40.979 [DEBUG] [Thread-153869] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:48:40.979 [DEBUG] [Thread-153869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:48:40.979 [DEBUG] [Thread-153869] [transport.py] [_log()] Compression: none
2025-09-29T10:48:40.979 [DEBUG] [Thread-153869] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:48:40.997 [DEBUG] [Thread-153869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:48:40.998 [DEBUG] [Thread-153869] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:48:40.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:48:40.999 [DEBUG] [Thread-153869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:48:41.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:48:41.001 [DEBUG] [Thread-153869] [transport.py] [_log()] userauth is OK
2025-09-29T10:48:41.001 [DEBUG] [Thread-153869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:48:41.001 [DEBUG] [Thread-153869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:48:41.001 [DEBUG] [Thread-153869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:48:41.001 [DEBUG] [Thread-153869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:48:41.026 [INFO] [Thread-153869] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:48:41.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:48:41.677 [DEBUG] [Thread-153869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:48:41.677 [DEBUG] [Thread-153869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:48:41.678 [DEBUG] [Thread-153869] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:48:41.718 [DEBUG] [Thread-153869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:48:41.719 [DEBUG] [Thread-153869] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:48:41.722 [DEBUG] [Thread-153869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:48:41.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:48:41.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:48:41.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:48:41.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:48:41.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:48:41.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:48:41.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:48:41.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:48:41.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:48:41.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.366739 -999.00  +11.90  10.96     60   +4.40 1 1 1 1 1   888    0 9.16 71.35 ----- 8.1 11.0 131.0 19.7 19.6 -25.0 18.2 -24.6 17.3 -24.6 18.5 -24.8
2025-09-29T10:48:41.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:48:41.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:48:41.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.366739
2025-09-29T10:48:41.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:48:41.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:48:41.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:48:41.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:48:41.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:48:41.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:48:15', tmtdew=8.54, humidity=55.77, cloud=0.0, wind=19.52, temperature=11.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:48:06.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:48:41.744 [DEBUG] [Thread-153869] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:48:41.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:48:45.688 [DEBUG] [Thread-153872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:49:00.730 [DEBUG] [Thread-153873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:49:15.761 [DEBUG] [Thread-153874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:49:30.788 [DEBUG] [Thread-153875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:49:33.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:49:33.179 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:49:34.040 [DEBUG] [Thread-153876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:49:45.815 [DEBUG] [Thread-153877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:50:00.843 [DEBUG] [Thread-153878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:50:15.867 [DEBUG] [Thread-153879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:50:30.894 [DEBUG] [Thread-153880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:50:33.319 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:50:33.320 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:50:34.092 [DEBUG] [Thread-153881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:50:45.926 [DEBUG] [Thread-153882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:50:53.754 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T10:51:00.955 [DEBUG] [Thread-153883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:51:03.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:51:03.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:51:03.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:51:04.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 50, 54), 8.97, 53.98, 0.0, 23.27, 11.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:51:04.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:50:54
2025-09-29T10:51:04.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:51:04.643 [DEBUG] [Thread-153884] [transport.py] [_log()] starting thread (client mode): 0x2b9bb880
2025-09-29T10:51:04.643 [DEBUG] [Thread-153884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:04.663 [DEBUG] [Thread-153884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:51:04.663 [INFO] [Thread-153884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:51:04.666 [DEBUG] [Thread-153884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] Compression: none
2025-09-29T10:51:04.667 [DEBUG] [Thread-153884] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:04.675 [DEBUG] [Thread-153884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:04.676 [DEBUG] [Thread-153884] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:04.676 [DEBUG] [Thread-153884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:51:04.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:51:04.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:04.720 [DEBUG] [Thread-153884] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:04.720 [DEBUG] [Thread-153884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:04.721 [DEBUG] [Thread-153884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:04.721 [DEBUG] [Thread-153884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:51:04.721 [DEBUG] [Thread-153884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:04.740 [INFO] [Thread-153884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:04.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:05.408 [DEBUG] [Thread-153884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:05.408 [DEBUG] [Thread-153884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:05.409 [DEBUG] [Thread-153884] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:51:05.449 [DEBUG] [Thread-153884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:05.449 [DEBUG] [Thread-153884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:05.452 [DEBUG] [Thread-153884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:05.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:05.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:51:05.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:51:05.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:51:05.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:05.475 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:51:05.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:05.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:05.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:51:05.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.368475 -999.00  +11.50  14.57     59   +3.90 1 1 1 1 1   888    0 9.45 82.38 ----- 18.8 14.6 168.9 25.1 19.6 -26.7 18.4 -25.7 17.4 -25.9 18.5 -27.3
2025-09-29T10:51:05.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:51:05.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:51:05.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.368475
2025-09-29T10:51:05.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:51:05.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:51:05.477 [DEBUG] [Thread-153884] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:05.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:51:05.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:51:05.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:51:05.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:50:54', tmtdew=8.97, humidity=53.98, cloud=0.0, wind=23.27, temperature=11.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:50:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:51:05.563 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:51:05.575 [DEBUG] [Thread-153887] [transport.py] [_log()] starting thread (client mode): 0x2b9bafb0
2025-09-29T10:51:05.575 [DEBUG] [Thread-153887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:05.590 [DEBUG] [Thread-153887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:51:05.590 [INFO] [Thread-153887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:51:05.597 [DEBUG] [Thread-153887] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:05.597 [DEBUG] [Thread-153887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:51:05.597 [DEBUG] [Thread-153887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:05.597 [DEBUG] [Thread-153887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:05.597 [DEBUG] [Thread-153887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] Compression: none
2025-09-29T10:51:05.598 [DEBUG] [Thread-153887] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:05.655 [DEBUG] [Thread-153887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:05.656 [DEBUG] [Thread-153887] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:05.656 [DEBUG] [Thread-153887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:51:05.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:51:05.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:05.712 [DEBUG] [Thread-153887] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:05.712 [DEBUG] [Thread-153887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:05.712 [DEBUG] [Thread-153887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:05.712 [DEBUG] [Thread-153887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:51:05.712 [DEBUG] [Thread-153887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:05.731 [INFO] [Thread-153887] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:05.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:51:05.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:06.729 [DEBUG] [Thread-153887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:06.729 [DEBUG] [Thread-153887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:06.777 [DEBUG] [Thread-153887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:06.777 [DEBUG] [Thread-153887] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:06.786 [DEBUG] [Thread-153887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:06.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:06.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:51:06.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:51:06.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:06.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:06.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:06.820 [DEBUG] [Thread-153887] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:15.986 [DEBUG] [Thread-153889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:51:16.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:51:16.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:51:16.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:51:17.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 50, 54), 8.97, 53.98, 0.0, 23.27, 11.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:51:17.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:50:54
2025-09-29T10:51:17.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:51:17.693 [DEBUG] [Thread-153890] [transport.py] [_log()] starting thread (client mode): 0x28704880
2025-09-29T10:51:17.693 [DEBUG] [Thread-153890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:17.716 [DEBUG] [Thread-153890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:51:17.716 [INFO] [Thread-153890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] Compression: none
2025-09-29T10:51:17.719 [DEBUG] [Thread-153890] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:17.728 [DEBUG] [Thread-153890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:17.728 [DEBUG] [Thread-153890] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:17.729 [DEBUG] [Thread-153890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:51:17.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:51:17.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:17.731 [DEBUG] [Thread-153890] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:17.731 [DEBUG] [Thread-153890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:17.731 [DEBUG] [Thread-153890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:17.731 [DEBUG] [Thread-153890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:51:17.731 [DEBUG] [Thread-153890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:17.749 [INFO] [Thread-153890] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:17.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:18.421 [DEBUG] [Thread-153890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:18.421 [DEBUG] [Thread-153890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:18.421 [DEBUG] [Thread-153890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:51:18.462 [DEBUG] [Thread-153890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:18.463 [DEBUG] [Thread-153890] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:18.466 [DEBUG] [Thread-153890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:18.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:18.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:51:18.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:51:18.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:51:18.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:18.490 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:51:18.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:18.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:18.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:51:18.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.368475 -999.00  +11.50  14.57     59   +3.90 1 1 1 1 1   888    0 9.45 82.38 ----- 18.8 14.6 168.9 25.1 19.6 -26.7 18.4 -25.7 17.4 -25.9 18.5 -27.3
2025-09-29T10:51:18.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:51:18.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:51:18.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.368475
2025-09-29T10:51:18.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:51:18.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:51:18.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:51:18.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:51:18.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:51:18.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:50:54', tmtdew=8.97, humidity=53.98, cloud=0.0, wind=23.27, temperature=11.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:50:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:51:18.492 [DEBUG] [Thread-153890] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:18.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:51:18.587 [DEBUG] [Thread-153893] [transport.py] [_log()] starting thread (client mode): 0x2b9bafb0
2025-09-29T10:51:18.587 [DEBUG] [Thread-153893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:18.607 [DEBUG] [Thread-153893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:51:18.607 [INFO] [Thread-153893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:51:18.614 [DEBUG] [Thread-153893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:18.615 [DEBUG] [Thread-153893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:18.616 [DEBUG] [Thread-153893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:18.616 [DEBUG] [Thread-153893] [transport.py] [_log()] Compression: none
2025-09-29T10:51:18.616 [DEBUG] [Thread-153893] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:18.671 [DEBUG] [Thread-153893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:18.672 [DEBUG] [Thread-153893] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:18.672 [DEBUG] [Thread-153893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:51:18.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:51:18.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:18.727 [DEBUG] [Thread-153893] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:18.728 [DEBUG] [Thread-153893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:18.728 [DEBUG] [Thread-153893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:18.728 [DEBUG] [Thread-153893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:51:18.728 [DEBUG] [Thread-153893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:18.747 [INFO] [Thread-153893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:18.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:51:18.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:19.728 [DEBUG] [Thread-153893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:19.729 [DEBUG] [Thread-153893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:19.776 [DEBUG] [Thread-153893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:19.777 [DEBUG] [Thread-153893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:19.786 [DEBUG] [Thread-153893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:19.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:19.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:51:19.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:51:19.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:19.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:19.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:19.821 [DEBUG] [Thread-153893] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:29.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:51:29.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:51:29.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:51:30.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 51, 26), 9.13, 53.36, 0.0, 22.09, 11.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:51:30.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:51:26
2025-09-29T10:51:30.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:51:30.715 [DEBUG] [Thread-153895] [transport.py] [_log()] starting thread (client mode): 0x28706d70
2025-09-29T10:51:30.715 [DEBUG] [Thread-153895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:30.735 [DEBUG] [Thread-153895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:51:30.735 [INFO] [Thread-153895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] Compression: none
2025-09-29T10:51:30.737 [DEBUG] [Thread-153895] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:30.748 [DEBUG] [Thread-153895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:30.748 [DEBUG] [Thread-153895] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:30.748 [DEBUG] [Thread-153895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:51:30.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:51:30.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:30.749 [DEBUG] [Thread-153895] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:30.749 [DEBUG] [Thread-153895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:30.749 [DEBUG] [Thread-153895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:30.749 [DEBUG] [Thread-153895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:51:30.749 [DEBUG] [Thread-153895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:30.764 [INFO] [Thread-153895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:30.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:31.042 [DEBUG] [Thread-153897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:51:31.347 [DEBUG] [Thread-153895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:31.348 [DEBUG] [Thread-153895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:31.348 [DEBUG] [Thread-153895] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:51:31.389 [DEBUG] [Thread-153895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:31.389 [DEBUG] [Thread-153895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:31.391 [DEBUG] [Thread-153895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:31.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:31.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:51:31.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:51:31.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:51:31.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:31.408 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:51:31.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:31.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.368823 -999.00  +11.50  17.62     59   +3.90 1 1 1 1 1   888    0 9.41 78.01 ----- 19.8 17.6 154.8 24.0 19.6 -25.8 18.2 -24.8 17.4 -25.6 18.5 -26.6
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.368823
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:51:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:51:26', tmtdew=9.13, humidity=53.36, cloud=0.0, wind=22.09, temperature=11.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:51:06.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:51:31.410 [DEBUG] [Thread-153895] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:31.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:51:31.495 [DEBUG] [Thread-153899] [transport.py] [_log()] starting thread (client mode): 0x28706350
2025-09-29T10:51:31.495 [DEBUG] [Thread-153899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:31.510 [DEBUG] [Thread-153899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:51:31.510 [INFO] [Thread-153899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:31.517 [DEBUG] [Thread-153899] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:31.518 [DEBUG] [Thread-153899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:31.518 [DEBUG] [Thread-153899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:31.518 [DEBUG] [Thread-153899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:31.518 [DEBUG] [Thread-153899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:31.518 [DEBUG] [Thread-153899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:31.518 [DEBUG] [Thread-153899] [transport.py] [_log()] Compression: none
2025-09-29T10:51:31.518 [DEBUG] [Thread-153899] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:31.574 [DEBUG] [Thread-153899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:31.574 [DEBUG] [Thread-153899] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:31.574 [DEBUG] [Thread-153899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:51:31.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:51:31.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:31.631 [DEBUG] [Thread-153899] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:31.631 [DEBUG] [Thread-153899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:31.631 [DEBUG] [Thread-153899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:31.631 [DEBUG] [Thread-153899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:51:31.631 [DEBUG] [Thread-153899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:31.645 [INFO] [Thread-153899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:31.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:51:31.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:32.601 [DEBUG] [Thread-153899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:32.601 [DEBUG] [Thread-153899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:32.649 [DEBUG] [Thread-153899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:32.649 [DEBUG] [Thread-153899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:32.657 [DEBUG] [Thread-153899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:32.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:32.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:51:32.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:51:32.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:32.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:32.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:32.689 [DEBUG] [Thread-153899] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:33.462 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:51:33.463 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:51:34.145 [DEBUG] [Thread-153901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:51:42.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:51:42.685 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:51:42.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:51:43.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 51, 26), 9.13, 53.36, 0.0, 22.09, 11.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:51:43.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:51:26
2025-09-29T10:51:43.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:51:43.536 [DEBUG] [Thread-153902] [transport.py] [_log()] starting thread (client mode): 0x2b91e290
2025-09-29T10:51:43.536 [DEBUG] [Thread-153902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:43.556 [DEBUG] [Thread-153902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:51:43.556 [INFO] [Thread-153902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:51:43.559 [DEBUG] [Thread-153902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:43.559 [DEBUG] [Thread-153902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:51:43.559 [DEBUG] [Thread-153902] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:43.559 [DEBUG] [Thread-153902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] Compression: none
2025-09-29T10:51:43.560 [DEBUG] [Thread-153902] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:43.581 [DEBUG] [Thread-153902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:43.581 [DEBUG] [Thread-153902] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:43.582 [DEBUG] [Thread-153902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:51:43.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:51:43.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:43.584 [DEBUG] [Thread-153902] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:43.584 [DEBUG] [Thread-153902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:43.584 [DEBUG] [Thread-153902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:43.584 [DEBUG] [Thread-153902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:51:43.585 [DEBUG] [Thread-153902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:43.608 [INFO] [Thread-153902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:43.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:44.327 [DEBUG] [Thread-153902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:44.327 [DEBUG] [Thread-153902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:44.328 [DEBUG] [Thread-153902] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:51:44.368 [DEBUG] [Thread-153902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:44.368 [DEBUG] [Thread-153902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:44.371 [DEBUG] [Thread-153902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:44.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:44.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:51:44.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:51:44.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:51:44.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:44.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:51:44.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:44.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:51:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.368823 -999.00  +11.50  17.62     59   +3.90 1 1 1 1 1   888    0 9.41 78.01 ----- 19.8 17.6 154.8 24.0 19.6 -25.8 18.2 -24.8 17.4 -25.6 18.5 -26.6
2025-09-29T10:51:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:51:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:51:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.368823
2025-09-29T10:51:44.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:51:44.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:51:44.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:51:44.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:51:44.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:51:44.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:51:26', tmtdew=9.13, humidity=53.36, cloud=0.0, wind=22.09, temperature=11.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:51:06.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:51:44.399 [DEBUG] [Thread-153902] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:44.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:51:44.493 [DEBUG] [Thread-153905] [transport.py] [_log()] starting thread (client mode): 0x28704340
2025-09-29T10:51:44.493 [DEBUG] [Thread-153905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:44.512 [DEBUG] [Thread-153905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:51:44.513 [INFO] [Thread-153905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:51:44.520 [DEBUG] [Thread-153905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:44.520 [DEBUG] [Thread-153905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:51:44.520 [DEBUG] [Thread-153905] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:44.521 [DEBUG] [Thread-153905] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:44.522 [DEBUG] [Thread-153905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:44.522 [DEBUG] [Thread-153905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:44.522 [DEBUG] [Thread-153905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:44.522 [DEBUG] [Thread-153905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:44.522 [DEBUG] [Thread-153905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:44.522 [DEBUG] [Thread-153905] [transport.py] [_log()] Compression: none
2025-09-29T10:51:44.522 [DEBUG] [Thread-153905] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:44.580 [DEBUG] [Thread-153905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:44.581 [DEBUG] [Thread-153905] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:44.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:51:44.582 [DEBUG] [Thread-153905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:51:44.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:44.635 [DEBUG] [Thread-153905] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:44.636 [DEBUG] [Thread-153905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:44.636 [DEBUG] [Thread-153905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:44.636 [DEBUG] [Thread-153905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:51:44.636 [DEBUG] [Thread-153905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:44.656 [INFO] [Thread-153905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:44.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:51:44.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:45.613 [DEBUG] [Thread-153905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:45.613 [DEBUG] [Thread-153905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:45.661 [DEBUG] [Thread-153905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:45.661 [DEBUG] [Thread-153905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:45.670 [DEBUG] [Thread-153905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:45.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:45.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:51:45.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:51:45.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:45.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:45.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:45.704 [DEBUG] [Thread-153905] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:46.070 [DEBUG] [Thread-153907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:51:55.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:51:55.707 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:51:55.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:51:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 51, 26), 9.13, 53.36, 0.0, 22.09, 11.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:51:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:51:26
2025-09-29T10:51:56.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:51:56.568 [DEBUG] [Thread-153908] [transport.py] [_log()] starting thread (client mode): 0x28705c00
2025-09-29T10:51:56.568 [DEBUG] [Thread-153908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:56.589 [DEBUG] [Thread-153908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:51:56.589 [INFO] [Thread-153908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:51:56.592 [DEBUG] [Thread-153908] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:56.592 [DEBUG] [Thread-153908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:51:56.592 [DEBUG] [Thread-153908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:56.592 [DEBUG] [Thread-153908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] Compression: none
2025-09-29T10:51:56.593 [DEBUG] [Thread-153908] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:56.608 [DEBUG] [Thread-153908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:56.609 [DEBUG] [Thread-153908] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:56.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:51:56.610 [DEBUG] [Thread-153908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:51:56.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:56.611 [DEBUG] [Thread-153908] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:56.611 [DEBUG] [Thread-153908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:56.611 [DEBUG] [Thread-153908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:56.612 [DEBUG] [Thread-153908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:51:56.612 [DEBUG] [Thread-153908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:56.626 [INFO] [Thread-153908] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:56.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:57.281 [DEBUG] [Thread-153908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:57.281 [DEBUG] [Thread-153908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:57.281 [DEBUG] [Thread-153908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:51:57.322 [DEBUG] [Thread-153908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:57.322 [DEBUG] [Thread-153908] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:57.324 [DEBUG] [Thread-153908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:57.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:57.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:51:57.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:51:57.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:51:57.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:57.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:51:57.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.368823 -999.00  +11.50  17.62     59   +3.90 1 1 1 1 1   888    0 9.41 78.01 ----- 19.8 17.6 154.8 24.0 19.6 -25.8 18.2 -24.8 17.4 -25.6 18.5 -26.6
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.368823
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:51:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:51:26', tmtdew=9.13, humidity=53.36, cloud=0.0, wind=22.09, temperature=11.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:51:06.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:51:57.342 [DEBUG] [Thread-153908] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:51:57.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:51:57.424 [DEBUG] [Thread-153911] [transport.py] [_log()] starting thread (client mode): 0x2b9bb310
2025-09-29T10:51:57.424 [DEBUG] [Thread-153911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:51:57.439 [DEBUG] [Thread-153911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:51:57.439 [INFO] [Thread-153911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:51:57.447 [DEBUG] [Thread-153911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:51:57.447 [DEBUG] [Thread-153911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:51:57.447 [DEBUG] [Thread-153911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:51:57.447 [DEBUG] [Thread-153911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:57.447 [DEBUG] [Thread-153911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:51:57.447 [DEBUG] [Thread-153911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] client lang: <none>
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] server lang: <none>
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] kex follows: False
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] Compression: none
2025-09-29T10:51:57.448 [DEBUG] [Thread-153911] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:51:57.503 [DEBUG] [Thread-153911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:51:57.503 [DEBUG] [Thread-153911] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:51:57.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:51:57.504 [DEBUG] [Thread-153911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:51:57.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:51:57.559 [DEBUG] [Thread-153911] [transport.py] [_log()] userauth is OK
2025-09-29T10:51:57.560 [DEBUG] [Thread-153911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:51:57.560 [DEBUG] [Thread-153911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:51:57.560 [DEBUG] [Thread-153911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:51:57.560 [DEBUG] [Thread-153911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:51:57.579 [INFO] [Thread-153911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:51:57.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:51:57.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:51:58.536 [DEBUG] [Thread-153911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:51:58.536 [DEBUG] [Thread-153911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:51:58.584 [DEBUG] [Thread-153911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:51:58.584 [DEBUG] [Thread-153911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:51:58.593 [DEBUG] [Thread-153911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:51:58.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:51:58.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:51:58.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:51:58.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:51:58.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:51:58.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:51:58.626 [DEBUG] [Thread-153911] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:52:01.115 [DEBUG] [Thread-153913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:52:08.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:52:08.628 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:52:08.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:52:09.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 51, 58), 8.93, 54.21, 0.0, 15.97, 11.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:52:09.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:51:58
2025-09-29T10:52:09.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:52:09.530 [DEBUG] [Thread-153914] [transport.py] [_log()] starting thread (client mode): 0x2b9b9030
2025-09-29T10:52:09.530 [DEBUG] [Thread-153914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:52:09.550 [DEBUG] [Thread-153914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:52:09.550 [INFO] [Thread-153914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] client lang: <none>
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] server lang: <none>
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] kex follows: False
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] Compression: none
2025-09-29T10:52:09.554 [DEBUG] [Thread-153914] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:52:09.568 [DEBUG] [Thread-153914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:52:09.568 [DEBUG] [Thread-153914] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:52:09.568 [DEBUG] [Thread-153914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:52:09.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:52:09.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:52:09.569 [DEBUG] [Thread-153914] [transport.py] [_log()] userauth is OK
2025-09-29T10:52:09.569 [DEBUG] [Thread-153914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:52:09.569 [DEBUG] [Thread-153914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:52:09.569 [DEBUG] [Thread-153914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:52:09.569 [DEBUG] [Thread-153914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:52:09.578 [INFO] [Thread-153914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:52:09.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:52:10.208 [DEBUG] [Thread-153914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:52:10.208 [DEBUG] [Thread-153914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:52:10.208 [DEBUG] [Thread-153914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:52:10.249 [DEBUG] [Thread-153914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:52:10.249 [DEBUG] [Thread-153914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:52:10.251 [DEBUG] [Thread-153914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:52:10.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:52:10.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:52:10.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:52:10.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:52:10.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:52:10.272 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:52:10.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.369170 -999.00  +11.10  13.58     59   +3.60 1 1 1 1 1   888    0 9.69 81.93 ----- 12.6 13.6 140.6 18.1 19.6 -24.8 18.2 -24.7 17.4 -24.8 18.6 -25.1
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.369170
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:52:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:51:58', tmtdew=8.93, humidity=54.21, cloud=0.0, wind=15.97, temperature=11.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:51:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:52:10.273 [DEBUG] [Thread-153914] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:52:10.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:52:10.358 [DEBUG] [Thread-153917] [transport.py] [_log()] starting thread (client mode): 0x28705bd0
2025-09-29T10:52:10.358 [DEBUG] [Thread-153917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:52:10.373 [DEBUG] [Thread-153917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:52:10.373 [INFO] [Thread-153917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:52:10.380 [DEBUG] [Thread-153917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] client lang: <none>
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] server lang: <none>
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] kex follows: False
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] Compression: none
2025-09-29T10:52:10.381 [DEBUG] [Thread-153917] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:52:10.439 [DEBUG] [Thread-153917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:52:10.439 [DEBUG] [Thread-153917] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:52:10.439 [DEBUG] [Thread-153917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:52:10.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:52:10.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:52:10.495 [DEBUG] [Thread-153917] [transport.py] [_log()] userauth is OK
2025-09-29T10:52:10.495 [DEBUG] [Thread-153917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:52:10.495 [DEBUG] [Thread-153917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:52:10.495 [DEBUG] [Thread-153917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:52:10.495 [DEBUG] [Thread-153917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:52:10.509 [INFO] [Thread-153917] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:52:10.509 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:52:10.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:52:11.460 [DEBUG] [Thread-153917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:52:11.460 [DEBUG] [Thread-153917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:52:11.508 [DEBUG] [Thread-153917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:52:11.508 [DEBUG] [Thread-153917] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:52:11.517 [DEBUG] [Thread-153917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:52:11.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:52:11.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:52:11.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:52:11.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:52:11.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:52:11.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:52:11.551 [DEBUG] [Thread-153917] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:52:16.142 [DEBUG] [Thread-153919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:52:21.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:52:21.554 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:52:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:52:22.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 51, 58), 8.93, 54.21, 0.0, 15.97, 11.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:52:22.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:51:58
2025-09-29T10:52:22.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:52:22.415 [DEBUG] [Thread-153920] [transport.py] [_log()] starting thread (client mode): 0x2b91fcd0
2025-09-29T10:52:22.415 [DEBUG] [Thread-153920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:52:22.435 [DEBUG] [Thread-153920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:52:22.435 [INFO] [Thread-153920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] client lang: <none>
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] server lang: <none>
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] kex follows: False
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] Compression: none
2025-09-29T10:52:22.439 [DEBUG] [Thread-153920] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:52:22.454 [DEBUG] [Thread-153920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:52:22.455 [DEBUG] [Thread-153920] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:52:22.455 [DEBUG] [Thread-153920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:52:22.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:52:22.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:52:22.496 [DEBUG] [Thread-153920] [transport.py] [_log()] userauth is OK
2025-09-29T10:52:22.496 [DEBUG] [Thread-153920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:52:22.496 [DEBUG] [Thread-153920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:52:22.496 [DEBUG] [Thread-153920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:52:22.496 [DEBUG] [Thread-153920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:52:22.526 [INFO] [Thread-153920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:52:22.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:52:23.189 [DEBUG] [Thread-153920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:52:23.189 [DEBUG] [Thread-153920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:52:23.189 [DEBUG] [Thread-153920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:52:23.230 [DEBUG] [Thread-153920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:52:23.230 [DEBUG] [Thread-153920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:52:23.233 [DEBUG] [Thread-153920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:52:23.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:52:23.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:52:23.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:52:23.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:52:23.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:52:23.255 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:52:23.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:52:23.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:52:23.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:52:23.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.369170 -999.00  +11.10  13.58     59   +3.60 1 1 1 1 1   888    0 9.69 81.93 ----- 12.6 13.6 140.6 18.1 19.6 -24.8 18.2 -24.7 17.4 -24.8 18.6 -25.1
2025-09-29T10:52:23.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:52:23.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:52:23.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.369170
2025-09-29T10:52:23.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:52:23.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:52:23.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:52:23.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:52:23.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:52:23.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:51:58', tmtdew=8.93, humidity=54.21, cloud=0.0, wind=15.97, temperature=11.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:51:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:52:23.257 [DEBUG] [Thread-153920] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:52:23.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:52:23.355 [DEBUG] [Thread-153923] [transport.py] [_log()] starting thread (client mode): 0x2e3ddfc0
2025-09-29T10:52:23.356 [DEBUG] [Thread-153923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:52:23.371 [DEBUG] [Thread-153923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:52:23.371 [INFO] [Thread-153923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] client lang: <none>
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] server lang: <none>
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] kex follows: False
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:52:23.379 [DEBUG] [Thread-153923] [transport.py] [_log()] Compression: none
2025-09-29T10:52:23.380 [DEBUG] [Thread-153923] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:52:23.435 [DEBUG] [Thread-153923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:52:23.435 [DEBUG] [Thread-153923] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:52:23.436 [DEBUG] [Thread-153923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:52:23.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:52:23.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:52:23.491 [DEBUG] [Thread-153923] [transport.py] [_log()] userauth is OK
2025-09-29T10:52:23.491 [DEBUG] [Thread-153923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:52:23.492 [DEBUG] [Thread-153923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:52:23.492 [DEBUG] [Thread-153923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:52:23.492 [DEBUG] [Thread-153923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:52:23.510 [INFO] [Thread-153923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:52:23.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:52:23.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:52:24.492 [DEBUG] [Thread-153923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:52:24.492 [DEBUG] [Thread-153923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:52:24.540 [DEBUG] [Thread-153923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:52:24.540 [DEBUG] [Thread-153923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:52:24.549 [DEBUG] [Thread-153923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:52:24.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:52:24.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:52:24.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:52:24.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:52:24.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:52:24.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:52:24.583 [DEBUG] [Thread-153923] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:52:31.176 [DEBUG] [Thread-153925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:52:33.607 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:52:33.608 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:52:34.199 [DEBUG] [Thread-153926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:52:34.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:52:34.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:52:34.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:52:35.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 52, 30), 8.97, 54.09, 0.0, 17.18, 11.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:52:35.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:52:30
2025-09-29T10:52:35.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:52:35.447 [DEBUG] [Thread-153927] [transport.py] [_log()] starting thread (client mode): 0x2b91ee30
2025-09-29T10:52:35.447 [DEBUG] [Thread-153927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:52:35.462 [DEBUG] [Thread-153927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:52:35.462 [INFO] [Thread-153927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] client lang: <none>
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] server lang: <none>
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] kex follows: False
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:52:35.465 [DEBUG] [Thread-153927] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:52:35.466 [DEBUG] [Thread-153927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:52:35.466 [DEBUG] [Thread-153927] [transport.py] [_log()] Compression: none
2025-09-29T10:52:35.466 [DEBUG] [Thread-153927] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:52:35.477 [DEBUG] [Thread-153927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:52:35.478 [DEBUG] [Thread-153927] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:52:35.478 [DEBUG] [Thread-153927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:52:35.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:52:35.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:52:35.480 [DEBUG] [Thread-153927] [transport.py] [_log()] userauth is OK
2025-09-29T10:52:35.480 [DEBUG] [Thread-153927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:52:35.480 [DEBUG] [Thread-153927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:52:35.480 [DEBUG] [Thread-153927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:52:35.480 [DEBUG] [Thread-153927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:52:35.503 [INFO] [Thread-153927] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:52:35.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:52:36.112 [DEBUG] [Thread-153927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:52:36.112 [DEBUG] [Thread-153927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:52:36.113 [DEBUG] [Thread-153927] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:52:36.153 [DEBUG] [Thread-153927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:52:36.153 [DEBUG] [Thread-153927] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:52:36.156 [DEBUG] [Thread-153927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:52:36.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:52:36.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:52:36.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:52:36.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:52:36.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:52:36.175 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:52:36.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:52:36.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:52:36.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:52:36.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.369517 -999.00  +11.70  20.65     60   +4.30 1 1 1 1 1   888    0 9.47 78.04 ----- 17.9 20.6 126.0 26.0 19.7 -24.3 18.4 -24.0 17.5 -24.3 18.6 -24.5
2025-09-29T10:52:36.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:52:36.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:52:36.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.369517
2025-09-29T10:52:36.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:52:36.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:52:36.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:52:36.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:52:36.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:52:36.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:52:30', tmtdew=8.97, humidity=54.09, cloud=0.0, wind=17.18, temperature=11.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:52:06.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:52:36.176 [DEBUG] [Thread-153927] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:52:36.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:52:36.272 [DEBUG] [Thread-153930] [transport.py] [_log()] starting thread (client mode): 0x2b91dab0
2025-09-29T10:52:36.273 [DEBUG] [Thread-153930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:52:36.288 [DEBUG] [Thread-153930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:52:36.288 [INFO] [Thread-153930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:52:36.296 [DEBUG] [Thread-153930] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:52:36.296 [DEBUG] [Thread-153930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:52:36.296 [DEBUG] [Thread-153930] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:52:36.296 [DEBUG] [Thread-153930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:36.296 [DEBUG] [Thread-153930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] client lang: <none>
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] server lang: <none>
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] kex follows: False
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] Compression: none
2025-09-29T10:52:36.297 [DEBUG] [Thread-153930] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:52:36.354 [DEBUG] [Thread-153930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:52:36.355 [DEBUG] [Thread-153930] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:52:36.355 [DEBUG] [Thread-153930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:52:36.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:52:36.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:52:36.412 [DEBUG] [Thread-153930] [transport.py] [_log()] userauth is OK
2025-09-29T10:52:36.412 [DEBUG] [Thread-153930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:52:36.412 [DEBUG] [Thread-153930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:52:36.412 [DEBUG] [Thread-153930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:52:36.412 [DEBUG] [Thread-153930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:52:36.432 [INFO] [Thread-153930] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:52:36.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:52:36.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:52:37.435 [DEBUG] [Thread-153930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:52:37.435 [DEBUG] [Thread-153930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:52:37.483 [DEBUG] [Thread-153930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:52:37.483 [DEBUG] [Thread-153930] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:52:37.492 [DEBUG] [Thread-153930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:52:37.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:52:37.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:52:37.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:52:37.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:52:37.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:52:37.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:52:37.528 [DEBUG] [Thread-153930] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:52:46.202 [DEBUG] [Thread-153932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:52:47.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:52:47.531 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:52:47.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:52:48.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 52, 30), 8.97, 54.09, 0.0, 17.18, 11.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:52:48.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:52:30
2025-09-29T10:52:48.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:52:48.432 [DEBUG] [Thread-153933] [transport.py] [_log()] starting thread (client mode): 0x28707670
2025-09-29T10:52:48.432 [DEBUG] [Thread-153933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:52:48.452 [DEBUG] [Thread-153933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:52:48.453 [INFO] [Thread-153933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] client lang: <none>
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] server lang: <none>
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] kex follows: False
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:52:48.456 [DEBUG] [Thread-153933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:52:48.457 [DEBUG] [Thread-153933] [transport.py] [_log()] Compression: none
2025-09-29T10:52:48.457 [DEBUG] [Thread-153933] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:52:48.470 [DEBUG] [Thread-153933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:52:48.471 [DEBUG] [Thread-153933] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:52:48.471 [DEBUG] [Thread-153933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:52:48.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:52:48.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:52:48.472 [DEBUG] [Thread-153933] [transport.py] [_log()] userauth is OK
2025-09-29T10:52:48.472 [DEBUG] [Thread-153933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:52:48.472 [DEBUG] [Thread-153933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:52:48.472 [DEBUG] [Thread-153933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:52:48.472 [DEBUG] [Thread-153933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:52:48.502 [INFO] [Thread-153933] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:52:48.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:52:49.146 [DEBUG] [Thread-153933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:52:49.146 [DEBUG] [Thread-153933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:52:49.146 [DEBUG] [Thread-153933] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:52:49.187 [DEBUG] [Thread-153933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:52:49.187 [DEBUG] [Thread-153933] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:52:49.190 [DEBUG] [Thread-153933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:52:49.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:52:49.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:52:49.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:52:49.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:52:49.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:52:49.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:52:49.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:52:49.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:52:49.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:52:49.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.369517 -999.00  +11.70  20.65     60   +4.30 1 1 1 1 1   888    0 9.47 78.04 ----- 17.9 20.6 126.0 26.0 19.7 -24.3 18.4 -24.0 17.5 -24.3 18.6 -24.5
2025-09-29T10:52:49.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:52:49.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:52:49.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.369517
2025-09-29T10:52:49.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:52:49.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:52:49.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:52:49.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:52:49.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:52:49.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:52:30', tmtdew=8.97, humidity=54.09, cloud=0.0, wind=17.18, temperature=11.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:52:06.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:52:49.209 [DEBUG] [Thread-153933] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:52:49.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:52:49.293 [DEBUG] [Thread-153936] [transport.py] [_log()] starting thread (client mode): 0x2e38e020
2025-09-29T10:52:49.294 [DEBUG] [Thread-153936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:52:49.309 [DEBUG] [Thread-153936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:52:49.309 [INFO] [Thread-153936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] client lang: <none>
2025-09-29T10:52:49.316 [DEBUG] [Thread-153936] [transport.py] [_log()] server lang: <none>
2025-09-29T10:52:49.317 [DEBUG] [Thread-153936] [transport.py] [_log()] kex follows: False
2025-09-29T10:52:49.317 [DEBUG] [Thread-153936] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:52:49.317 [DEBUG] [Thread-153936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:52:49.317 [DEBUG] [Thread-153936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:52:49.317 [DEBUG] [Thread-153936] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:52:49.317 [DEBUG] [Thread-153936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:52:49.317 [DEBUG] [Thread-153936] [transport.py] [_log()] Compression: none
2025-09-29T10:52:49.317 [DEBUG] [Thread-153936] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:52:49.378 [DEBUG] [Thread-153936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:52:49.379 [DEBUG] [Thread-153936] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:52:49.379 [DEBUG] [Thread-153936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:52:49.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:52:49.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:52:49.439 [DEBUG] [Thread-153936] [transport.py] [_log()] userauth is OK
2025-09-29T10:52:49.439 [DEBUG] [Thread-153936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:52:49.439 [DEBUG] [Thread-153936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:52:49.440 [DEBUG] [Thread-153936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:52:49.440 [DEBUG] [Thread-153936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:52:49.463 [INFO] [Thread-153936] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:52:49.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:52:49.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:52:50.420 [DEBUG] [Thread-153936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:52:50.421 [DEBUG] [Thread-153936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:52:50.468 [DEBUG] [Thread-153936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:52:50.468 [DEBUG] [Thread-153936] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:52:50.477 [DEBUG] [Thread-153936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:52:50.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:52:50.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:52:50.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:52:50.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:52:50.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:52:50.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:52:50.511 [DEBUG] [Thread-153936] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:00.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:53:00.514 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:53:00.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:53:01.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 52, 30), 8.97, 54.09, 0.0, 17.18, 11.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:53:01.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:52:30
2025-09-29T10:53:01.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:53:01.236 [DEBUG] [Thread-153938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:53:01.367 [DEBUG] [Thread-153939] [transport.py] [_log()] starting thread (client mode): 0x2e38e950
2025-09-29T10:53:01.367 [DEBUG] [Thread-153939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:01.388 [DEBUG] [Thread-153939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:53:01.388 [INFO] [Thread-153939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:53:01.391 [DEBUG] [Thread-153939] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:01.391 [DEBUG] [Thread-153939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:53:01.391 [DEBUG] [Thread-153939] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:01.391 [DEBUG] [Thread-153939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:01.391 [DEBUG] [Thread-153939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:01.391 [DEBUG] [Thread-153939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:01.391 [DEBUG] [Thread-153939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:01.391 [DEBUG] [Thread-153939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] Compression: none
2025-09-29T10:53:01.392 [DEBUG] [Thread-153939] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:01.411 [DEBUG] [Thread-153939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:01.411 [DEBUG] [Thread-153939] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:01.412 [DEBUG] [Thread-153939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:53:01.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:53:01.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:01.414 [DEBUG] [Thread-153939] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:01.414 [DEBUG] [Thread-153939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:01.415 [DEBUG] [Thread-153939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:01.415 [DEBUG] [Thread-153939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:53:01.415 [DEBUG] [Thread-153939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:01.450 [INFO] [Thread-153939] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:01.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:02.116 [DEBUG] [Thread-153939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:02.116 [DEBUG] [Thread-153939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:02.116 [DEBUG] [Thread-153939] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:53:02.157 [DEBUG] [Thread-153939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:02.157 [DEBUG] [Thread-153939] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:02.160 [DEBUG] [Thread-153939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:02.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:02.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:53:02.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:53:02.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:53:02.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:02.183 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:53:02.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:02.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:02.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:53:02.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.369517 -999.00  +11.70  20.65     60   +4.30 1 1 1 1 1   888    0 9.47 78.04 ----- 17.9 20.6 126.0 26.0 19.7 -24.3 18.4 -24.0 17.5 -24.3 18.6 -24.5
2025-09-29T10:53:02.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:53:02.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:53:02.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.369517
2025-09-29T10:53:02.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:53:02.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:53:02.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:53:02.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:53:02.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:53:02.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:52:30', tmtdew=8.97, humidity=54.09, cloud=0.0, wind=17.18, temperature=11.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:52:06.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:53:02.186 [DEBUG] [Thread-153939] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:02.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:53:02.282 [DEBUG] [Thread-153942] [transport.py] [_log()] starting thread (client mode): 0x28704d60
2025-09-29T10:53:02.282 [DEBUG] [Thread-153942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:02.297 [DEBUG] [Thread-153942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:53:02.297 [INFO] [Thread-153942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:53:02.305 [DEBUG] [Thread-153942] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:02.305 [DEBUG] [Thread-153942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:53:02.305 [DEBUG] [Thread-153942] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:02.305 [DEBUG] [Thread-153942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:02.305 [DEBUG] [Thread-153942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] Compression: none
2025-09-29T10:53:02.306 [DEBUG] [Thread-153942] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:02.363 [DEBUG] [Thread-153942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:02.363 [DEBUG] [Thread-153942] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:02.364 [DEBUG] [Thread-153942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:53:02.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:53:02.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:02.419 [DEBUG] [Thread-153942] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:02.419 [DEBUG] [Thread-153942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:02.419 [DEBUG] [Thread-153942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:02.419 [DEBUG] [Thread-153942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:53:02.419 [DEBUG] [Thread-153942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:02.437 [INFO] [Thread-153942] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:02.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:53:02.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:03.390 [DEBUG] [Thread-153942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:03.390 [DEBUG] [Thread-153942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:03.438 [DEBUG] [Thread-153942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:03.439 [DEBUG] [Thread-153942] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:03.446 [DEBUG] [Thread-153942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:03.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:03.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:53:03.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:53:03.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:03.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:03.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:03.478 [DEBUG] [Thread-153942] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:13.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:53:13.481 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:53:13.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:53:14.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 53, 2), 9.04, 53.8, 0.0, 16.28, 11.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:53:14.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:53:02
2025-09-29T10:53:14.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:53:14.328 [DEBUG] [Thread-153944] [transport.py] [_log()] starting thread (client mode): 0x2b9baa70
2025-09-29T10:53:14.328 [DEBUG] [Thread-153944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:14.349 [DEBUG] [Thread-153944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:53:14.349 [INFO] [Thread-153944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:14.352 [DEBUG] [Thread-153944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] Compression: none
2025-09-29T10:53:14.353 [DEBUG] [Thread-153944] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:14.371 [DEBUG] [Thread-153944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:14.371 [DEBUG] [Thread-153944] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:14.372 [DEBUG] [Thread-153944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:53:14.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:53:14.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:14.374 [DEBUG] [Thread-153944] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:14.374 [DEBUG] [Thread-153944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:14.374 [DEBUG] [Thread-153944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:14.374 [DEBUG] [Thread-153944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:53:14.375 [DEBUG] [Thread-153944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:14.392 [INFO] [Thread-153944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:14.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:15.021 [DEBUG] [Thread-153944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:15.022 [DEBUG] [Thread-153944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:15.022 [DEBUG] [Thread-153944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:53:15.062 [DEBUG] [Thread-153944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:15.063 [DEBUG] [Thread-153944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:15.065 [DEBUG] [Thread-153944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:15.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:15.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:53:15.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:53:15.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:53:15.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:15.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:53:15.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:15.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:15.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:53:15.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.370211 -999.00  +11.90  20.79     57   +3.90 1 1 1 1 1   888    0 9.63 77.22 ----- 18.1 20.8 141.8 28.0 19.7 -24.7 18.4 -24.7 17.6 -26.0 18.8 -25.9
2025-09-29T10:53:15.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:53:15.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:53:15.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.370211
2025-09-29T10:53:15.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:53:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:53:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:53:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:53:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:53:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:53:02', tmtdew=9.04, humidity=53.8, cloud=0.0, wind=16.28, temperature=11.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:53:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:53:15.092 [DEBUG] [Thread-153944] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:15.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:53:15.198 [DEBUG] [Thread-153947] [transport.py] [_log()] starting thread (client mode): 0x2b91ffd0
2025-09-29T10:53:15.198 [DEBUG] [Thread-153947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:15.213 [DEBUG] [Thread-153947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:53:15.213 [INFO] [Thread-153947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:53:15.220 [DEBUG] [Thread-153947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:15.220 [DEBUG] [Thread-153947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:53:15.220 [DEBUG] [Thread-153947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:15.220 [DEBUG] [Thread-153947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:15.220 [DEBUG] [Thread-153947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:15.220 [DEBUG] [Thread-153947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] Compression: none
2025-09-29T10:53:15.221 [DEBUG] [Thread-153947] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:15.278 [DEBUG] [Thread-153947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:15.279 [DEBUG] [Thread-153947] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:15.279 [DEBUG] [Thread-153947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:53:15.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:53:15.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:15.335 [DEBUG] [Thread-153947] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:15.335 [DEBUG] [Thread-153947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:15.335 [DEBUG] [Thread-153947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:15.335 [DEBUG] [Thread-153947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:53:15.335 [DEBUG] [Thread-153947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:15.354 [INFO] [Thread-153947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:15.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:53:15.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:16.268 [DEBUG] [Thread-153949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:53:16.324 [DEBUG] [Thread-153947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:16.325 [DEBUG] [Thread-153947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:16.372 [DEBUG] [Thread-153947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:16.372 [DEBUG] [Thread-153947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:16.382 [DEBUG] [Thread-153947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:16.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:16.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:53:16.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:53:16.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:16.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:16.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:16.417 [DEBUG] [Thread-153947] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:26.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:53:26.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:53:26.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:53:27.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 53, 2), 9.04, 53.8, 0.0, 16.28, 11.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:53:27.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:53:02
2025-09-29T10:53:27.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:53:27.307 [DEBUG] [Thread-153950] [transport.py] [_log()] starting thread (client mode): 0x2b9c00a0
2025-09-29T10:53:27.308 [DEBUG] [Thread-153950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:27.329 [DEBUG] [Thread-153950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:53:27.329 [INFO] [Thread-153950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:53:27.332 [DEBUG] [Thread-153950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:27.332 [DEBUG] [Thread-153950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:53:27.332 [DEBUG] [Thread-153950] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:27.332 [DEBUG] [Thread-153950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:27.332 [DEBUG] [Thread-153950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:27.332 [DEBUG] [Thread-153950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:27.332 [DEBUG] [Thread-153950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] Compression: none
2025-09-29T10:53:27.333 [DEBUG] [Thread-153950] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:27.349 [DEBUG] [Thread-153950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:27.349 [DEBUG] [Thread-153950] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:27.349 [DEBUG] [Thread-153950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:53:27.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:53:27.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:27.350 [DEBUG] [Thread-153950] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:27.350 [DEBUG] [Thread-153950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:27.350 [DEBUG] [Thread-153950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:27.350 [DEBUG] [Thread-153950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:53:27.350 [DEBUG] [Thread-153950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:27.360 [INFO] [Thread-153950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:27.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:28.003 [DEBUG] [Thread-153950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:28.003 [DEBUG] [Thread-153950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:28.003 [DEBUG] [Thread-153950] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:53:28.043 [DEBUG] [Thread-153950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:28.044 [DEBUG] [Thread-153950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:28.047 [DEBUG] [Thread-153950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:28.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:28.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:53:28.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:53:28.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:53:28.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:28.071 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:53:28.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:28.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:28.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:53:28.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.370211 -999.00  +11.90  20.79     57   +3.90 1 1 1 1 1   888    0 9.63 77.22 ----- 18.1 20.8 141.8 28.0 19.7 -24.7 18.4 -24.7 17.6 -26.0 18.8 -25.9
2025-09-29T10:53:28.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:53:28.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:53:28.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.370211
2025-09-29T10:53:28.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:53:28.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:53:28.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:53:28.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:53:28.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:53:28.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:53:02', tmtdew=9.04, humidity=53.8, cloud=0.0, wind=16.28, temperature=11.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:53:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:53:28.074 [DEBUG] [Thread-153950] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:28.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:53:28.179 [DEBUG] [Thread-153953] [transport.py] [_log()] starting thread (client mode): 0x2b9c16f0
2025-09-29T10:53:28.179 [DEBUG] [Thread-153953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:28.194 [DEBUG] [Thread-153953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:53:28.194 [INFO] [Thread-153953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:28.202 [DEBUG] [Thread-153953] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] Compression: none
2025-09-29T10:53:28.203 [DEBUG] [Thread-153953] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:28.263 [DEBUG] [Thread-153953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:28.263 [DEBUG] [Thread-153953] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:28.264 [DEBUG] [Thread-153953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:53:28.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:53:28.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:28.318 [DEBUG] [Thread-153953] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:28.319 [DEBUG] [Thread-153953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:28.319 [DEBUG] [Thread-153953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:28.319 [DEBUG] [Thread-153953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:53:28.319 [DEBUG] [Thread-153953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:28.337 [INFO] [Thread-153953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:28.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:53:28.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:29.329 [DEBUG] [Thread-153953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:29.329 [DEBUG] [Thread-153953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:29.377 [DEBUG] [Thread-153953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:29.377 [DEBUG] [Thread-153953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:29.386 [DEBUG] [Thread-153953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:29.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:29.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:53:29.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:53:29.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:29.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:29.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:29.421 [DEBUG] [Thread-153953] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:31.314 [DEBUG] [Thread-153955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:53:33.751 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:53:33.752 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:53:34.255 [DEBUG] [Thread-153956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:53:39.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:53:39.423 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:53:39.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:53:40.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 53, 34), 8.94, 53.96, 0.0, 24.28, 11.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:53:40.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:53:34
2025-09-29T10:53:40.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:53:40.278 [DEBUG] [Thread-153957] [transport.py] [_log()] starting thread (client mode): 0x2b91f250
2025-09-29T10:53:40.278 [DEBUG] [Thread-153957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:40.299 [DEBUG] [Thread-153957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:53:40.299 [INFO] [Thread-153957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:53:40.302 [DEBUG] [Thread-153957] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] Compression: none
2025-09-29T10:53:40.303 [DEBUG] [Thread-153957] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:40.320 [DEBUG] [Thread-153957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:40.320 [DEBUG] [Thread-153957] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:40.321 [DEBUG] [Thread-153957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:53:40.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:53:40.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:40.323 [DEBUG] [Thread-153957] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:40.323 [DEBUG] [Thread-153957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:40.323 [DEBUG] [Thread-153957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:40.323 [DEBUG] [Thread-153957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:53:40.323 [DEBUG] [Thread-153957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:40.346 [INFO] [Thread-153957] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:40.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:40.999 [DEBUG] [Thread-153957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:40.999 [DEBUG] [Thread-153957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:40.999 [DEBUG] [Thread-153957] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:53:41.040 [DEBUG] [Thread-153957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:41.040 [DEBUG] [Thread-153957] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:41.043 [DEBUG] [Thread-153957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:41.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:41.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:53:41.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:53:41.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:53:41.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:41.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:53:41.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:41.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:41.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:53:41.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.370211 -999.00  +11.90  20.79     57   +3.90 1 1 1 1 1   888    0 9.63 77.22 ----- 18.1 20.8 141.8 28.0 19.7 -24.7 18.4 -24.7 17.6 -26.0 18.8 -25.9
2025-09-29T10:53:41.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:53:41.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:53:41.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.370211
2025-09-29T10:53:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:53:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:53:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:53:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:53:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:53:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:53:34', tmtdew=8.94, humidity=53.96, cloud=0.0, wind=24.28, temperature=11.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:53:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:53:41.068 [DEBUG] [Thread-153957] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:41.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:53:41.165 [DEBUG] [Thread-153960] [transport.py] [_log()] starting thread (client mode): 0x2b91e4d0
2025-09-29T10:53:41.166 [DEBUG] [Thread-153960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:41.181 [DEBUG] [Thread-153960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:53:41.181 [INFO] [Thread-153960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:53:41.188 [DEBUG] [Thread-153960] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:41.188 [DEBUG] [Thread-153960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:53:41.188 [DEBUG] [Thread-153960] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:41.188 [DEBUG] [Thread-153960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:41.188 [DEBUG] [Thread-153960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:41.188 [DEBUG] [Thread-153960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] Compression: none
2025-09-29T10:53:41.189 [DEBUG] [Thread-153960] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:41.246 [DEBUG] [Thread-153960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:41.246 [DEBUG] [Thread-153960] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:41.247 [DEBUG] [Thread-153960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:53:41.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:53:41.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:41.308 [DEBUG] [Thread-153960] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:41.308 [DEBUG] [Thread-153960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:41.308 [DEBUG] [Thread-153960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:41.308 [DEBUG] [Thread-153960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:53:41.308 [DEBUG] [Thread-153960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:41.328 [INFO] [Thread-153960] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:41.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:53:41.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:42.286 [DEBUG] [Thread-153960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:42.286 [DEBUG] [Thread-153960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:42.339 [DEBUG] [Thread-153960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:42.339 [DEBUG] [Thread-153960] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:42.348 [DEBUG] [Thread-153960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:42.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:42.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:53:42.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:53:42.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:42.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:42.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:42.382 [DEBUG] [Thread-153960] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:46.344 [DEBUG] [Thread-153962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:53:52.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:53:52.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:53:52.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:53:52.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 53, 34), 8.94, 53.96, 0.0, 24.28, 11.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:53:52.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:53:34
2025-09-29T10:53:53.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:53:53.223 [DEBUG] [Thread-153963] [transport.py] [_log()] starting thread (client mode): 0x2e38f220
2025-09-29T10:53:53.223 [DEBUG] [Thread-153963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:53:53.243 [DEBUG] [Thread-153963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:53:53.243 [INFO] [Thread-153963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:53:53.246 [DEBUG] [Thread-153963] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:53:53.246 [DEBUG] [Thread-153963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:53:53.246 [DEBUG] [Thread-153963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:53:53.246 [DEBUG] [Thread-153963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:53.246 [DEBUG] [Thread-153963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] client lang: <none>
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] server lang: <none>
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] kex follows: False
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] Compression: none
2025-09-29T10:53:53.247 [DEBUG] [Thread-153963] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:53:53.266 [DEBUG] [Thread-153963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:53:53.266 [DEBUG] [Thread-153963] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:53:53.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:53:53.267 [DEBUG] [Thread-153963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:53:53.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:53:53.308 [DEBUG] [Thread-153963] [transport.py] [_log()] userauth is OK
2025-09-29T10:53:53.308 [DEBUG] [Thread-153963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:53:53.308 [DEBUG] [Thread-153963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:53:53.308 [DEBUG] [Thread-153963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:53:53.309 [DEBUG] [Thread-153963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:53:53.340 [INFO] [Thread-153963] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:53:53.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:53:54.002 [DEBUG] [Thread-153963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:53:54.002 [DEBUG] [Thread-153963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:53:54.002 [DEBUG] [Thread-153963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:53:54.043 [DEBUG] [Thread-153963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:53:54.043 [DEBUG] [Thread-153963] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:53:54.047 [DEBUG] [Thread-153963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:53:54.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:53:54.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:53:54.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:53:54.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:53:54.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:53:54.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:53:54.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:53:54.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:53:54.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:53:54.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.370559 -999.00  +12.30  15.63     58   +4.40 1 1 1 1 1   888    0 9.29 71.20 ----- 13.5 15.6 123.4 22.4 19.8 -24.8 18.4 -23.3 17.7 -23.8 18.8 -24.7
2025-09-29T10:53:54.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:53:54.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:53:54.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.370559
2025-09-29T10:53:54.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:53:54.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:53:54.072 [DEBUG] [Thread-153963] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:53:54.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:53:54.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:53:54.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:53:54.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:53:34', tmtdew=8.94, humidity=53.96, cloud=0.0, wind=24.28, temperature=11.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:53:36.298', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:53:54.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:54:01.388 [DEBUG] [Thread-153966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:54:16.423 [DEBUG] [Thread-153967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:54:31.453 [DEBUG] [Thread-153968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:54:33.892 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:54:33.894 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:54:34.312 [DEBUG] [Thread-153969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:54:46.483 [DEBUG] [Thread-153970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:55:01.513 [DEBUG] [Thread-153971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:55:16.544 [DEBUG] [Thread-153972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:55:31.573 [DEBUG] [Thread-153973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:55:34.038 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:55:34.039 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:55:34.363 [DEBUG] [Thread-153974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:55:46.603 [DEBUG] [Thread-153975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:56:01.633 [DEBUG] [Thread-153976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:56:09.146 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T10:56:16.665 [DEBUG] [Thread-153977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:56:19.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:56:19.157 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:56:19.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:56:19.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 56, 13), 9.25, 53.28, 0.0, 26.38, 11.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:56:19.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:56:13
2025-09-29T10:56:19.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:56:20.004 [DEBUG] [Thread-153978] [transport.py] [_log()] starting thread (client mode): 0x2e3c15a0
2025-09-29T10:56:20.004 [DEBUG] [Thread-153978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:56:20.025 [DEBUG] [Thread-153978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:56:20.025 [INFO] [Thread-153978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:56:20.028 [DEBUG] [Thread-153978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:56:20.028 [DEBUG] [Thread-153978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:56:20.028 [DEBUG] [Thread-153978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:56:20.028 [DEBUG] [Thread-153978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] client lang: <none>
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] server lang: <none>
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] kex follows: False
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:56:20.029 [DEBUG] [Thread-153978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:56:20.030 [DEBUG] [Thread-153978] [transport.py] [_log()] Compression: none
2025-09-29T10:56:20.030 [DEBUG] [Thread-153978] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:56:20.048 [DEBUG] [Thread-153978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:56:20.048 [DEBUG] [Thread-153978] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:56:20.049 [DEBUG] [Thread-153978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:56:20.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:56:20.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:56:20.050 [DEBUG] [Thread-153978] [transport.py] [_log()] userauth is OK
2025-09-29T10:56:20.051 [DEBUG] [Thread-153978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:56:20.051 [DEBUG] [Thread-153978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:56:20.051 [DEBUG] [Thread-153978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:56:20.051 [DEBUG] [Thread-153978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:56:20.074 [INFO] [Thread-153978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:56:20.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:56:20.742 [DEBUG] [Thread-153978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:56:20.742 [DEBUG] [Thread-153978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:56:20.742 [DEBUG] [Thread-153978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:56:20.784 [DEBUG] [Thread-153978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:56:20.784 [DEBUG] [Thread-153978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:56:20.787 [DEBUG] [Thread-153978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:56:20.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:56:20.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:56:20.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:56:20.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:56:20.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:56:20.809 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:56:20.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:56:20.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:56:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:56:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.371948 -999.00  +11.80  19.42     58   +3.80 1 1 1 1 1   888    0 9.27 63.71 ----- 20.0 19.4 161.4 24.5 19.6 -26.9 18.4 -27.7 17.6 -25.6 18.8 -27.6
2025-09-29T10:56:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:56:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:56:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.371948
2025-09-29T10:56:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:56:20.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:56:20.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:56:20.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:56:20.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:56:20.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:56:13', tmtdew=9.25, humidity=53.28, cloud=0.0, wind=26.38, temperature=11.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:55:36.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:56:20.812 [DEBUG] [Thread-153978] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:56:20.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:56:20.909 [DEBUG] [Thread-153981] [transport.py] [_log()] starting thread (client mode): 0x28707820
2025-09-29T10:56:20.909 [DEBUG] [Thread-153981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:56:20.925 [DEBUG] [Thread-153981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:56:20.925 [INFO] [Thread-153981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:56:20.933 [DEBUG] [Thread-153981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:56:20.933 [DEBUG] [Thread-153981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:56:20.933 [DEBUG] [Thread-153981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:56:20.933 [DEBUG] [Thread-153981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:20.933 [DEBUG] [Thread-153981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:20.933 [DEBUG] [Thread-153981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] client lang: <none>
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] server lang: <none>
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] kex follows: False
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] Compression: none
2025-09-29T10:56:20.934 [DEBUG] [Thread-153981] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:56:20.991 [DEBUG] [Thread-153981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:56:20.991 [DEBUG] [Thread-153981] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:56:20.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:56:20.992 [DEBUG] [Thread-153981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:56:20.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:56:21.047 [DEBUG] [Thread-153981] [transport.py] [_log()] userauth is OK
2025-09-29T10:56:21.047 [DEBUG] [Thread-153981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:56:21.048 [DEBUG] [Thread-153981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:56:21.048 [DEBUG] [Thread-153981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:56:21.048 [DEBUG] [Thread-153981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:56:21.067 [INFO] [Thread-153981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:56:21.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:56:21.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:56:22.020 [DEBUG] [Thread-153981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:56:22.020 [DEBUG] [Thread-153981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:56:22.068 [DEBUG] [Thread-153981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:56:22.068 [DEBUG] [Thread-153981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:56:22.077 [DEBUG] [Thread-153981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:56:22.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:56:22.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:56:22.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:56:22.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:56:22.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:56:22.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:56:22.112 [DEBUG] [Thread-153981] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:56:31.695 [DEBUG] [Thread-153983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:56:32.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:56:32.114 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:56:32.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:56:32.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 56, 13), 9.25, 53.28, 0.0, 26.38, 11.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:56:32.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:56:13
2025-09-29T10:56:32.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:56:32.975 [DEBUG] [Thread-153984] [transport.py] [_log()] starting thread (client mode): 0x2b91fc40
2025-09-29T10:56:32.975 [DEBUG] [Thread-153984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:56:32.996 [DEBUG] [Thread-153984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:56:32.996 [INFO] [Thread-153984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] client lang: <none>
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] server lang: <none>
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] kex follows: False
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] Compression: none
2025-09-29T10:56:33.000 [DEBUG] [Thread-153984] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:56:33.017 [DEBUG] [Thread-153984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:56:33.017 [DEBUG] [Thread-153984] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:56:33.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:56:33.018 [DEBUG] [Thread-153984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:56:33.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:56:33.020 [DEBUG] [Thread-153984] [transport.py] [_log()] userauth is OK
2025-09-29T10:56:33.020 [DEBUG] [Thread-153984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:56:33.020 [DEBUG] [Thread-153984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:56:33.020 [DEBUG] [Thread-153984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:56:33.020 [DEBUG] [Thread-153984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:56:33.056 [INFO] [Thread-153984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:56:33.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:56:33.704 [DEBUG] [Thread-153984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:56:33.704 [DEBUG] [Thread-153984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:56:33.705 [DEBUG] [Thread-153984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:56:33.745 [DEBUG] [Thread-153984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:56:33.745 [DEBUG] [Thread-153984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:56:33.748 [DEBUG] [Thread-153984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:56:33.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:56:33.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:56:33.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:56:33.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:56:33.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:56:33.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:56:33.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:56:33.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:56:33.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:56:33.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.371948 -999.00  +11.80  19.42     58   +3.80 1 1 1 1 1   888    0 9.27 63.71 ----- 20.0 19.4 161.4 24.5 19.6 -26.9 18.4 -27.7 17.6 -25.6 18.8 -27.6
2025-09-29T10:56:33.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:56:33.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:56:33.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.371948
2025-09-29T10:56:33.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:56:33.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:56:33.780 [DEBUG] [Thread-153984] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:56:33.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:56:33.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:56:33.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:56:33.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:56:13', tmtdew=9.25, humidity=53.28, cloud=0.0, wind=26.38, temperature=11.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:55:36.307', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:56:33.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:56:33.873 [DEBUG] [Thread-153987] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d70
2025-09-29T10:56:33.873 [DEBUG] [Thread-153987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:56:33.887 [DEBUG] [Thread-153987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:56:33.887 [INFO] [Thread-153987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:56:33.895 [DEBUG] [Thread-153987] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:56:33.895 [DEBUG] [Thread-153987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:56:33.895 [DEBUG] [Thread-153987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:56:33.895 [DEBUG] [Thread-153987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:33.895 [DEBUG] [Thread-153987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:33.895 [DEBUG] [Thread-153987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:33.895 [DEBUG] [Thread-153987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] client lang: <none>
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] server lang: <none>
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] kex follows: False
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:56:33.896 [DEBUG] [Thread-153987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:56:33.897 [DEBUG] [Thread-153987] [transport.py] [_log()] Compression: none
2025-09-29T10:56:33.897 [DEBUG] [Thread-153987] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:56:33.951 [DEBUG] [Thread-153987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:56:33.952 [DEBUG] [Thread-153987] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:56:33.952 [DEBUG] [Thread-153987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:56:33.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:56:33.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:56:34.008 [DEBUG] [Thread-153987] [transport.py] [_log()] userauth is OK
2025-09-29T10:56:34.008 [DEBUG] [Thread-153987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:56:34.008 [DEBUG] [Thread-153987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:56:34.008 [DEBUG] [Thread-153987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:56:34.008 [DEBUG] [Thread-153987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:56:34.025 [INFO] [Thread-153987] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:56:34.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:56:34.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:56:34.180 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:56:34.181 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:56:34.419 [DEBUG] [Thread-153989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:56:34.966 [DEBUG] [Thread-153987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:56:34.967 [DEBUG] [Thread-153987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:56:35.015 [DEBUG] [Thread-153987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:56:35.015 [DEBUG] [Thread-153987] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:56:35.023 [DEBUG] [Thread-153987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:56:35.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:56:35.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:56:35.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:56:35.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:56:35.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:56:35.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:56:35.054 [DEBUG] [Thread-153987] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:56:45.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:56:45.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:56:45.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:56:45.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 56, 13), 9.25, 53.28, 0.0, 26.38, 11.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:56:45.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:56:13
2025-09-29T10:56:45.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:56:45.923 [DEBUG] [Thread-153990] [transport.py] [_log()] starting thread (client mode): 0x2b9c3160
2025-09-29T10:56:45.924 [DEBUG] [Thread-153990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:56:45.944 [DEBUG] [Thread-153990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:56:45.944 [INFO] [Thread-153990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:56:45.947 [DEBUG] [Thread-153990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:56:45.947 [DEBUG] [Thread-153990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:56:45.947 [DEBUG] [Thread-153990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:56:45.947 [DEBUG] [Thread-153990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:45.947 [DEBUG] [Thread-153990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:45.947 [DEBUG] [Thread-153990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] client lang: <none>
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] server lang: <none>
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] kex follows: False
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] Compression: none
2025-09-29T10:56:45.948 [DEBUG] [Thread-153990] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:56:45.963 [DEBUG] [Thread-153990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:56:45.964 [DEBUG] [Thread-153990] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:56:45.964 [DEBUG] [Thread-153990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:56:45.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:56:45.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:56:45.965 [DEBUG] [Thread-153990] [transport.py] [_log()] userauth is OK
2025-09-29T10:56:45.965 [DEBUG] [Thread-153990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:56:45.965 [DEBUG] [Thread-153990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:56:45.965 [DEBUG] [Thread-153990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:56:45.966 [DEBUG] [Thread-153990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:56:45.984 [INFO] [Thread-153990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:56:45.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:56:46.665 [DEBUG] [Thread-153990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:56:46.665 [DEBUG] [Thread-153990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:56:46.665 [DEBUG] [Thread-153990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:56:46.706 [DEBUG] [Thread-153990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:56:46.706 [DEBUG] [Thread-153990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:56:46.708 [DEBUG] [Thread-153990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:56:46.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:56:46.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:56:46.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:56:46.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:56:46.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:56:46.727 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:56:46.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.372295 -999.00  +11.60  16.85     58   +3.70 1 1 1 1 1   888    0 9.44 69.69 ----- 18.0 16.9 161.0 23.6 19.5 -27.3 18.3 -25.1 17.5 -27.1 18.7 -26.1
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.372295
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:56:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:56:13', tmtdew=9.25, humidity=53.28, cloud=0.0, wind=26.38, temperature=11.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:56:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:56:46.728 [DEBUG] [Thread-153990] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:56:46.734 [DEBUG] [Thread-153993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:56:46.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:56:46.820 [DEBUG] [Thread-153994] [transport.py] [_log()] starting thread (client mode): 0x2b91ec20
2025-09-29T10:56:46.820 [DEBUG] [Thread-153994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:56:46.835 [DEBUG] [Thread-153994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:56:46.835 [INFO] [Thread-153994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] client lang: <none>
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] server lang: <none>
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] kex follows: False
2025-09-29T10:56:46.846 [DEBUG] [Thread-153994] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:56:46.847 [DEBUG] [Thread-153994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:56:46.847 [DEBUG] [Thread-153994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:56:46.847 [DEBUG] [Thread-153994] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:56:46.847 [DEBUG] [Thread-153994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:56:46.847 [DEBUG] [Thread-153994] [transport.py] [_log()] Compression: none
2025-09-29T10:56:46.847 [DEBUG] [Thread-153994] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:56:46.903 [DEBUG] [Thread-153994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:56:46.903 [DEBUG] [Thread-153994] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:56:46.904 [DEBUG] [Thread-153994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:56:46.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:56:46.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:56:46.961 [DEBUG] [Thread-153994] [transport.py] [_log()] userauth is OK
2025-09-29T10:56:46.961 [DEBUG] [Thread-153994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:56:46.961 [DEBUG] [Thread-153994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:56:46.961 [DEBUG] [Thread-153994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:56:46.961 [DEBUG] [Thread-153994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:56:46.975 [INFO] [Thread-153994] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:56:46.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:56:46.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:56:47.981 [DEBUG] [Thread-153994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:56:47.981 [DEBUG] [Thread-153994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:56:48.029 [DEBUG] [Thread-153994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:56:48.029 [DEBUG] [Thread-153994] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:56:48.038 [DEBUG] [Thread-153994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:56:48.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:56:48.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:56:48.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:56:48.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:56:48.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:56:48.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:56:48.073 [DEBUG] [Thread-153994] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:56:58.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:56:58.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:56:58.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:56:58.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 56, 45), 9.18, 53.01, 0.0, 23.82, 11.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:56:58.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:56:45
2025-09-29T10:56:58.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:56:58.925 [DEBUG] [Thread-153996] [transport.py] [_log()] starting thread (client mode): 0x2b91d510
2025-09-29T10:56:58.925 [DEBUG] [Thread-153996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:56:58.944 [DEBUG] [Thread-153996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:56:58.944 [INFO] [Thread-153996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:56:58.947 [DEBUG] [Thread-153996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:56:58.947 [DEBUG] [Thread-153996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:56:58.947 [DEBUG] [Thread-153996] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:56:58.947 [DEBUG] [Thread-153996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:58.947 [DEBUG] [Thread-153996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] client lang: <none>
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] server lang: <none>
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] kex follows: False
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] Compression: none
2025-09-29T10:56:58.948 [DEBUG] [Thread-153996] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:56:58.966 [DEBUG] [Thread-153996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:56:58.966 [DEBUG] [Thread-153996] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:56:58.967 [DEBUG] [Thread-153996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:56:58.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:56:58.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:56:58.969 [DEBUG] [Thread-153996] [transport.py] [_log()] userauth is OK
2025-09-29T10:56:58.969 [DEBUG] [Thread-153996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:56:58.969 [DEBUG] [Thread-153996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:56:58.969 [DEBUG] [Thread-153996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:56:58.969 [DEBUG] [Thread-153996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:56:59.005 [INFO] [Thread-153996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:56:59.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:56:59.650 [DEBUG] [Thread-153996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:56:59.651 [DEBUG] [Thread-153996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:56:59.651 [DEBUG] [Thread-153996] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:56:59.691 [DEBUG] [Thread-153996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:56:59.691 [DEBUG] [Thread-153996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:56:59.694 [DEBUG] [Thread-153996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:56:59.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:56:59.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:56:59.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:56:59.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:56:59.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:56:59.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:56:59.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:56:59.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:56:59.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:56:59.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.372295 -999.00  +11.60  16.85     58   +3.70 1 1 1 1 1   888    0 9.44 69.69 ----- 18.0 16.9 161.0 23.6 19.5 -27.3 18.3 -25.1 17.5 -27.1 18.7 -26.1
2025-09-29T10:56:59.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:56:59.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:56:59.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.372295
2025-09-29T10:56:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:56:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:56:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:56:59.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:56:59.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:56:59.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:56:45', tmtdew=9.18, humidity=53.01, cloud=0.0, wind=23.82, temperature=11.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:56:06.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:56:59.723 [DEBUG] [Thread-153996] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:56:59.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:56:59.816 [DEBUG] [Thread-153999] [transport.py] [_log()] starting thread (client mode): 0x2b91cf10
2025-09-29T10:56:59.817 [DEBUG] [Thread-153999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:56:59.831 [DEBUG] [Thread-153999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:56:59.831 [INFO] [Thread-153999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:56:59.838 [DEBUG] [Thread-153999] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:56:59.838 [DEBUG] [Thread-153999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] client lang: <none>
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] server lang: <none>
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] kex follows: False
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] Compression: none
2025-09-29T10:56:59.839 [DEBUG] [Thread-153999] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:56:59.897 [DEBUG] [Thread-153999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:56:59.898 [DEBUG] [Thread-153999] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:56:59.898 [DEBUG] [Thread-153999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:56:59.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:56:59.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:56:59.955 [DEBUG] [Thread-153999] [transport.py] [_log()] userauth is OK
2025-09-29T10:56:59.955 [DEBUG] [Thread-153999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:56:59.955 [DEBUG] [Thread-153999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:56:59.955 [DEBUG] [Thread-153999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:56:59.955 [DEBUG] [Thread-153999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:56:59.974 [INFO] [Thread-153999] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:56:59.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:56:59.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:57:00.898 [DEBUG] [Thread-153999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:57:00.899 [DEBUG] [Thread-153999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:57:00.946 [DEBUG] [Thread-153999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:57:00.946 [DEBUG] [Thread-153999] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:57:00.955 [DEBUG] [Thread-153999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:57:00.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:57:00.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:57:00.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:57:00.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:57:00.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:57:00.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:57:00.990 [DEBUG] [Thread-153999] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:57:01.767 [DEBUG] [Thread-154001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:57:10.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:57:10.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:57:10.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:57:11.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 56, 45), 9.18, 53.01, 0.0, 23.82, 11.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:57:11.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:56:45
2025-09-29T10:57:11.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:57:11.849 [DEBUG] [Thread-154002] [transport.py] [_log()] starting thread (client mode): 0x2e38d7e0
2025-09-29T10:57:11.849 [DEBUG] [Thread-154002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:57:11.869 [DEBUG] [Thread-154002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:57:11.869 [INFO] [Thread-154002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] client lang: <none>
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] server lang: <none>
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] kex follows: False
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] Compression: none
2025-09-29T10:57:11.873 [DEBUG] [Thread-154002] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:57:11.885 [DEBUG] [Thread-154002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:57:11.885 [DEBUG] [Thread-154002] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:57:11.886 [DEBUG] [Thread-154002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:57:11.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:57:11.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:57:11.888 [DEBUG] [Thread-154002] [transport.py] [_log()] userauth is OK
2025-09-29T10:57:11.888 [DEBUG] [Thread-154002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:57:11.888 [DEBUG] [Thread-154002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:57:11.888 [DEBUG] [Thread-154002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:57:11.888 [DEBUG] [Thread-154002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:57:11.906 [INFO] [Thread-154002] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:57:11.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:57:12.579 [DEBUG] [Thread-154002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:57:12.579 [DEBUG] [Thread-154002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:57:12.579 [DEBUG] [Thread-154002] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:57:12.628 [DEBUG] [Thread-154002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:57:12.628 [DEBUG] [Thread-154002] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:57:12.630 [DEBUG] [Thread-154002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:57:12.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:57:12.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:57:12.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:57:12.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:57:12.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:57:12.646 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:57:12.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:57:12.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:57:12.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:57:12.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.372642 -999.00  +11.40  18.88     59   +3.70 1 1 1 1 1   888    0 9.38 68.25 ----- 15.6 18.9 143.6 24.4 19.5 -27.3 18.2 -25.4 17.3 -26.9 18.6 -26.6
2025-09-29T10:57:12.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:57:12.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:57:12.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.372642
2025-09-29T10:57:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:57:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:57:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:57:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:57:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:57:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:56:45', tmtdew=9.18, humidity=53.01, cloud=0.0, wind=23.82, temperature=11.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:56:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:57:12.647 [DEBUG] [Thread-154002] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:57:12.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:57:12.733 [DEBUG] [Thread-154005] [transport.py] [_log()] starting thread (client mode): 0x2e3c31c0
2025-09-29T10:57:12.734 [DEBUG] [Thread-154005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:57:12.753 [DEBUG] [Thread-154005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:57:12.753 [INFO] [Thread-154005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:57:12.760 [DEBUG] [Thread-154005] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:57:12.760 [DEBUG] [Thread-154005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:57:12.760 [DEBUG] [Thread-154005] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:57:12.760 [DEBUG] [Thread-154005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] client lang: <none>
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] server lang: <none>
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] kex follows: False
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] Compression: none
2025-09-29T10:57:12.761 [DEBUG] [Thread-154005] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:57:12.822 [DEBUG] [Thread-154005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:57:12.822 [DEBUG] [Thread-154005] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:57:12.822 [DEBUG] [Thread-154005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:57:12.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:57:12.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:57:12.878 [DEBUG] [Thread-154005] [transport.py] [_log()] userauth is OK
2025-09-29T10:57:12.878 [DEBUG] [Thread-154005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:57:12.878 [DEBUG] [Thread-154005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:57:12.878 [DEBUG] [Thread-154005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:57:12.878 [DEBUG] [Thread-154005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:57:12.894 [INFO] [Thread-154005] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:57:12.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:57:12.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:57:13.884 [DEBUG] [Thread-154005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:57:13.884 [DEBUG] [Thread-154005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:57:13.932 [DEBUG] [Thread-154005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:57:13.932 [DEBUG] [Thread-154005] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:57:13.940 [DEBUG] [Thread-154005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:57:13.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:57:13.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:57:13.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:57:13.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:57:13.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:57:13.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:57:13.971 [DEBUG] [Thread-154005] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:57:16.820 [DEBUG] [Thread-154007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:57:23.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:57:23.964 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:57:23.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:57:24.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 57, 17), 9.11, 53.28, 0.0, 23.48, 11.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:57:24.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:57:17
2025-09-29T10:57:24.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:57:24.819 [DEBUG] [Thread-154008] [transport.py] [_log()] starting thread (client mode): 0x2b96e470
2025-09-29T10:57:24.819 [DEBUG] [Thread-154008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:57:24.840 [DEBUG] [Thread-154008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:57:24.840 [INFO] [Thread-154008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:57:24.843 [DEBUG] [Thread-154008] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:57:24.843 [DEBUG] [Thread-154008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] client lang: <none>
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] server lang: <none>
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] kex follows: False
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:57:24.844 [DEBUG] [Thread-154008] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:57:24.845 [DEBUG] [Thread-154008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:57:24.845 [DEBUG] [Thread-154008] [transport.py] [_log()] Compression: none
2025-09-29T10:57:24.845 [DEBUG] [Thread-154008] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:57:24.864 [DEBUG] [Thread-154008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:57:24.864 [DEBUG] [Thread-154008] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:57:24.865 [DEBUG] [Thread-154008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:57:24.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:57:24.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:57:24.867 [DEBUG] [Thread-154008] [transport.py] [_log()] userauth is OK
2025-09-29T10:57:24.867 [DEBUG] [Thread-154008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:57:24.867 [DEBUG] [Thread-154008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:57:24.868 [DEBUG] [Thread-154008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:57:24.868 [DEBUG] [Thread-154008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:57:24.885 [INFO] [Thread-154008] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:57:24.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:57:25.467 [DEBUG] [Thread-154008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:57:25.467 [DEBUG] [Thread-154008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:57:25.467 [DEBUG] [Thread-154008] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:57:25.508 [DEBUG] [Thread-154008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:57:25.509 [DEBUG] [Thread-154008] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:57:25.511 [DEBUG] [Thread-154008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:57:25.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:57:25.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:57:25.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:57:25.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:57:25.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:57:25.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:57:25.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:57:25.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:57:25.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:57:25.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.372642 -999.00  +11.40  18.88     59   +3.70 1 1 1 1 1   888    0 9.38 68.25 ----- 15.6 18.9 143.6 24.4 19.5 -27.3 18.2 -25.4 17.3 -26.9 18.6 -26.6
2025-09-29T10:57:25.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:57:25.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:57:25.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.372642
2025-09-29T10:57:25.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:57:25.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:57:25.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:57:25.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:57:25.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:57:25.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:57:17', tmtdew=9.11, humidity=53.28, cloud=0.0, wind=23.48, temperature=11.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:56:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:57:25.537 [DEBUG] [Thread-154008] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:57:25.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:57:25.632 [DEBUG] [Thread-154011] [transport.py] [_log()] starting thread (client mode): 0x2b96fdc0
2025-09-29T10:57:25.632 [DEBUG] [Thread-154011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:57:25.647 [DEBUG] [Thread-154011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T10:57:25.647 [INFO] [Thread-154011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] client lang: <none>
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] server lang: <none>
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] kex follows: False
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:57:25.656 [DEBUG] [Thread-154011] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:57:25.657 [DEBUG] [Thread-154011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:57:25.657 [DEBUG] [Thread-154011] [transport.py] [_log()] Compression: none
2025-09-29T10:57:25.657 [DEBUG] [Thread-154011] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:57:25.717 [DEBUG] [Thread-154011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:57:25.717 [DEBUG] [Thread-154011] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:57:25.718 [DEBUG] [Thread-154011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T10:57:25.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T10:57:25.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:57:25.778 [DEBUG] [Thread-154011] [transport.py] [_log()] userauth is OK
2025-09-29T10:57:25.778 [DEBUG] [Thread-154011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:57:25.778 [DEBUG] [Thread-154011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:57:25.778 [DEBUG] [Thread-154011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T10:57:25.778 [DEBUG] [Thread-154011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:57:25.799 [INFO] [Thread-154011] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:57:25.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T10:57:25.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:57:26.757 [DEBUG] [Thread-154011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:57:26.758 [DEBUG] [Thread-154011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:57:26.806 [DEBUG] [Thread-154011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:57:26.806 [DEBUG] [Thread-154011] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:57:26.818 [DEBUG] [Thread-154011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:57:26.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:57:26.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T10:57:26.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T10:57:26.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:57:26.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:57:26.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:57:26.859 [DEBUG] [Thread-154011] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:57:31.855 [DEBUG] [Thread-154013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:57:34.323 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:57:34.324 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:57:34.472 [DEBUG] [Thread-154014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:57:36.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T10:57:36.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T10:57:36.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T10:57:37.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 57, 17), 9.11, 53.28, 0.0, 23.48, 11.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T10:57:37.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:57:17
2025-09-29T10:57:37.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T10:57:37.714 [DEBUG] [Thread-154015] [transport.py] [_log()] starting thread (client mode): 0x2b96c9d0
2025-09-29T10:57:37.714 [DEBUG] [Thread-154015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T10:57:37.729 [DEBUG] [Thread-154015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T10:57:37.729 [INFO] [Thread-154015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] client lang: <none>
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] server lang: <none>
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] kex follows: False
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] Compression: none
2025-09-29T10:57:37.733 [DEBUG] [Thread-154015] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T10:57:37.750 [DEBUG] [Thread-154015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T10:57:37.750 [DEBUG] [Thread-154015] [transport.py] [_log()] Switch to new keys ...
2025-09-29T10:57:37.751 [DEBUG] [Thread-154015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T10:57:37.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T10:57:37.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T10:57:37.753 [DEBUG] [Thread-154015] [transport.py] [_log()] userauth is OK
2025-09-29T10:57:37.753 [DEBUG] [Thread-154015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T10:57:37.753 [DEBUG] [Thread-154015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T10:57:37.754 [DEBUG] [Thread-154015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T10:57:37.754 [DEBUG] [Thread-154015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T10:57:37.768 [INFO] [Thread-154015] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T10:57:37.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T10:57:38.394 [DEBUG] [Thread-154015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T10:57:38.394 [DEBUG] [Thread-154015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T10:57:38.395 [DEBUG] [Thread-154015] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T10:57:38.435 [DEBUG] [Thread-154015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T10:57:38.436 [DEBUG] [Thread-154015] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T10:57:38.438 [DEBUG] [Thread-154015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T10:57:38.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T10:57:38.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T10:57:38.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T10:57:38.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T10:57:38.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T10:57:38.456 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T10:57:38.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T10:57:38.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T10:57:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T10:57:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.372642 -999.00  +11.40  18.88     59   +3.70 1 1 1 1 1   888    0 9.38 68.25 ----- 15.6 18.9 143.6 24.4 19.5 -27.3 18.2 -25.4 17.3 -26.9 18.6 -26.6
2025-09-29T10:57:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T10:57:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T10:57:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.372642
2025-09-29T10:57:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T10:57:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T10:57:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T10:57:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T10:57:38.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T10:57:38.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:57:17', tmtdew=9.11, humidity=53.28, cloud=0.0, wind=23.48, temperature=11.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:56:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T10:57:38.459 [DEBUG] [Thread-154015] [transport.py] [_log()] EOF in transport thread
2025-09-29T10:57:38.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T10:57:46.903 [DEBUG] [Thread-154018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:58:01.931 [DEBUG] [Thread-154019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:58:16.962 [DEBUG] [Thread-154020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:58:31.990 [DEBUG] [Thread-154021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:58:34.466 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:58:34.467 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:58:34.532 [DEBUG] [Thread-154022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:58:47.017 [DEBUG] [Thread-154023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:59:02.051 [DEBUG] [Thread-154024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:59:17.084 [DEBUG] [Thread-154025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:59:32.120 [DEBUG] [Thread-154026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:59:34.585 [DEBUG] [Thread-154027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:59:34.608 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:59:34.608 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:59:47.154 [DEBUG] [Thread-154028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T10:59:50.330 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:00:00.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:00:00.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:00:00.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:00:00.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 59, 57), 9.27, 52.86, 0.0, 24.24, 11.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:00:00.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:59:57
2025-09-29T11:00:01.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:00:01.204 [DEBUG] [Thread-154029] [transport.py] [_log()] starting thread (client mode): 0x2e3dee00
2025-09-29T11:00:01.204 [DEBUG] [Thread-154029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:01.216 [DEBUG] [Thread-154029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:00:01.216 [INFO] [Thread-154029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:01.217 [DEBUG] [Thread-154029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:01.218 [DEBUG] [Thread-154029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:01.218 [DEBUG] [Thread-154029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:01.218 [DEBUG] [Thread-154029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:01.218 [DEBUG] [Thread-154029] [transport.py] [_log()] Compression: none
2025-09-29T11:00:01.218 [DEBUG] [Thread-154029] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:01.227 [DEBUG] [Thread-154029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:01.227 [DEBUG] [Thread-154029] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:01.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:00:01.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:01.228 [DEBUG] [Thread-154029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:00:01.229 [DEBUG] [Thread-154029] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:01.229 [DEBUG] [Thread-154029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:01.229 [DEBUG] [Thread-154029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:01.229 [DEBUG] [Thread-154029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:00:01.229 [DEBUG] [Thread-154029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:01.252 [INFO] [Thread-154029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:01.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:01.880 [DEBUG] [Thread-154029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:01.880 [DEBUG] [Thread-154029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:01.880 [DEBUG] [Thread-154029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:00:01.921 [DEBUG] [Thread-154029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:01.921 [DEBUG] [Thread-154029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:01.923 [DEBUG] [Thread-154029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:01.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:01.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:00:01.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:00:01.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:00:01.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:01.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:00:01.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.374725 -999.00  +11.50  14.03     58   +3.60 1 1 1 1 1   888    0 9.23 59.12 ----- 15.7 14.0 145.7 24.3 19.7 -26.2 18.6 -25.4 17.7 -25.7 18.8 -26.0
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.374725
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:00:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:59:57', tmtdew=9.27, humidity=52.86, cloud=0.0, wind=24.24, temperature=11.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:59:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:00:01.942 [DEBUG] [Thread-154029] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:02.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:00:02.028 [DEBUG] [Thread-154032] [transport.py] [_log()] starting thread (client mode): 0x2e3dd5a0
2025-09-29T11:00:02.028 [DEBUG] [Thread-154032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:02.043 [DEBUG] [Thread-154032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:00:02.043 [INFO] [Thread-154032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:02.050 [DEBUG] [Thread-154032] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:02.051 [DEBUG] [Thread-154032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:02.051 [DEBUG] [Thread-154032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:02.051 [DEBUG] [Thread-154032] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:02.051 [DEBUG] [Thread-154032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:02.051 [DEBUG] [Thread-154032] [transport.py] [_log()] Compression: none
2025-09-29T11:00:02.051 [DEBUG] [Thread-154032] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:02.108 [DEBUG] [Thread-154032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:02.108 [DEBUG] [Thread-154032] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:02.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:00:02.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:02.110 [DEBUG] [Thread-154032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:00:02.164 [DEBUG] [Thread-154032] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:02.164 [DEBUG] [Thread-154032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:02.164 [DEBUG] [Thread-154032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:02.164 [DEBUG] [Thread-154032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:00:02.165 [DEBUG] [Thread-154032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:02.179 [DEBUG] [Thread-154034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:00:02.184 [INFO] [Thread-154032] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:02.184 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:00:02.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:03.152 [DEBUG] [Thread-154032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:03.153 [DEBUG] [Thread-154032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:03.200 [DEBUG] [Thread-154032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:03.200 [DEBUG] [Thread-154032] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:03.209 [DEBUG] [Thread-154032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:03.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:03.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:00:03.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:00:03.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:03.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:03.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:03.240 [DEBUG] [Thread-154032] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:13.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:00:13.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:00:13.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:00:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 59, 57), 9.27, 52.86, 0.0, 24.24, 11.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:00:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:59:57
2025-09-29T11:00:13.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:00:14.107 [DEBUG] [Thread-154035] [transport.py] [_log()] starting thread (client mode): 0x2b9c2560
2025-09-29T11:00:14.107 [DEBUG] [Thread-154035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:14.128 [DEBUG] [Thread-154035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:00:14.128 [INFO] [Thread-154035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:00:14.132 [DEBUG] [Thread-154035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:14.132 [DEBUG] [Thread-154035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:00:14.132 [DEBUG] [Thread-154035] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:14.132 [DEBUG] [Thread-154035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:14.132 [DEBUG] [Thread-154035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:14.132 [DEBUG] [Thread-154035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:14.132 [DEBUG] [Thread-154035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:14.132 [DEBUG] [Thread-154035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] Compression: none
2025-09-29T11:00:14.133 [DEBUG] [Thread-154035] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:14.151 [DEBUG] [Thread-154035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:14.151 [DEBUG] [Thread-154035] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:14.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:00:14.152 [DEBUG] [Thread-154035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:00:14.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:14.155 [DEBUG] [Thread-154035] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:14.155 [DEBUG] [Thread-154035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:14.155 [DEBUG] [Thread-154035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:14.155 [DEBUG] [Thread-154035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:00:14.155 [DEBUG] [Thread-154035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:14.178 [INFO] [Thread-154035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:14.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:14.821 [DEBUG] [Thread-154035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:14.821 [DEBUG] [Thread-154035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:14.822 [DEBUG] [Thread-154035] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:00:14.862 [DEBUG] [Thread-154035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:14.862 [DEBUG] [Thread-154035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:14.865 [DEBUG] [Thread-154035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:14.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:14.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:00:14.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:00:14.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:00:14.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:14.892 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:00:14.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:14.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:14.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:00:14.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.374725 -999.00  +11.50  14.03     58   +3.60 1 1 1 1 1   888    0 9.23 59.12 ----- 15.7 14.0 145.7 24.3 19.7 -26.2 18.6 -25.4 17.7 -25.7 18.8 -26.0
2025-09-29T11:00:14.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:00:14.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:00:14.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.374725
2025-09-29T11:00:14.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:00:14.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:00:14.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:00:14.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:00:14.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:00:14.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:59:57', tmtdew=9.27, humidity=52.86, cloud=0.0, wind=24.24, temperature=11.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:59:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:00:14.894 [DEBUG] [Thread-154035] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:14.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:00:14.996 [DEBUG] [Thread-154038] [transport.py] [_log()] starting thread (client mode): 0x2b9c3430
2025-09-29T11:00:14.996 [DEBUG] [Thread-154038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:15.011 [DEBUG] [Thread-154038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:00:15.011 [INFO] [Thread-154038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:00:15.018 [DEBUG] [Thread-154038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] Compression: none
2025-09-29T11:00:15.019 [DEBUG] [Thread-154038] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:15.076 [DEBUG] [Thread-154038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:15.077 [DEBUG] [Thread-154038] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:15.077 [DEBUG] [Thread-154038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:00:15.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:00:15.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:15.132 [DEBUG] [Thread-154038] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:15.133 [DEBUG] [Thread-154038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:15.133 [DEBUG] [Thread-154038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:15.133 [DEBUG] [Thread-154038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:00:15.133 [DEBUG] [Thread-154038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:15.151 [INFO] [Thread-154038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:15.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:00:15.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:16.060 [DEBUG] [Thread-154038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:16.061 [DEBUG] [Thread-154038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:16.108 [DEBUG] [Thread-154038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:16.108 [DEBUG] [Thread-154038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:16.117 [DEBUG] [Thread-154038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:16.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:16.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:00:16.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:00:16.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:16.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:16.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:16.156 [DEBUG] [Thread-154038] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:17.232 [DEBUG] [Thread-154040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:00:26.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:00:26.154 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:00:26.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:00:26.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 10, 59, 57), 9.27, 52.86, 0.0, 24.24, 11.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:00:26.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 10:59:57
2025-09-29T11:00:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:00:27.062 [DEBUG] [Thread-154041] [transport.py] [_log()] starting thread (client mode): 0x2e3dffd0
2025-09-29T11:00:27.062 [DEBUG] [Thread-154041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:27.084 [DEBUG] [Thread-154041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:00:27.084 [INFO] [Thread-154041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] Compression: none
2025-09-29T11:00:27.087 [DEBUG] [Thread-154041] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:27.102 [DEBUG] [Thread-154041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:27.102 [DEBUG] [Thread-154041] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:27.102 [DEBUG] [Thread-154041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:00:27.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:00:27.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:27.104 [DEBUG] [Thread-154041] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:27.104 [DEBUG] [Thread-154041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:27.104 [DEBUG] [Thread-154041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:27.104 [DEBUG] [Thread-154041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:00:27.104 [DEBUG] [Thread-154041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:27.113 [INFO] [Thread-154041] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:27.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:28.844 [DEBUG] [Thread-154041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:28.844 [DEBUG] [Thread-154041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:28.844 [DEBUG] [Thread-154041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:00:28.885 [DEBUG] [Thread-154041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:28.885 [DEBUG] [Thread-154041] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:28.887 [DEBUG] [Thread-154041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:28.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:28.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:00:28.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:00:28.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:00:28.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:28.907 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:00:28.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:28.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.374725 -999.00  +11.50  14.03     58   +3.60 1 1 1 1 1   888    0 9.23 59.12 ----- 15.7 14.0 145.7 24.3 19.7 -26.2 18.6 -25.4 17.7 -25.7 18.8 -26.0
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.374725
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:00:28.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T10:59:57', tmtdew=9.27, humidity=52.86, cloud=0.0, wind=24.24, temperature=11.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T08:59:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:00:28.909 [DEBUG] [Thread-154041] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:28.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:00:28.994 [DEBUG] [Thread-154044] [transport.py] [_log()] starting thread (client mode): 0x2b96c5b0
2025-09-29T11:00:28.994 [DEBUG] [Thread-154044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:29.010 [DEBUG] [Thread-154044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:00:29.010 [INFO] [Thread-154044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:00:29.017 [DEBUG] [Thread-154044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] Compression: none
2025-09-29T11:00:29.018 [DEBUG] [Thread-154044] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:29.080 [DEBUG] [Thread-154044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:29.080 [DEBUG] [Thread-154044] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:29.080 [DEBUG] [Thread-154044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:00:29.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:00:29.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:29.141 [DEBUG] [Thread-154044] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:29.141 [DEBUG] [Thread-154044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:29.141 [DEBUG] [Thread-154044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:29.141 [DEBUG] [Thread-154044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:00:29.141 [DEBUG] [Thread-154044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:29.156 [INFO] [Thread-154044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:29.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:00:29.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:30.118 [DEBUG] [Thread-154044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:30.118 [DEBUG] [Thread-154044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:30.166 [DEBUG] [Thread-154044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:30.166 [DEBUG] [Thread-154044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:30.174 [DEBUG] [Thread-154044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:30.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:30.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:00:30.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:00:30.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:30.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:30.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:30.206 [DEBUG] [Thread-154044] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:32.260 [DEBUG] [Thread-154046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:00:34.639 [DEBUG] [Thread-154047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:00:34.749 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:00:34.750 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:00:40.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:00:40.207 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:00:40.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:00:40.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 0, 29), 9.11, 53.38, 0.0, 17.33, 11.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:00:40.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:00:29
2025-09-29T11:00:40.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:00:41.060 [DEBUG] [Thread-154048] [transport.py] [_log()] starting thread (client mode): 0x2e3c12a0
2025-09-29T11:00:41.060 [DEBUG] [Thread-154048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:41.081 [DEBUG] [Thread-154048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:00:41.081 [INFO] [Thread-154048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:41.084 [DEBUG] [Thread-154048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:41.085 [DEBUG] [Thread-154048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:41.085 [DEBUG] [Thread-154048] [transport.py] [_log()] Compression: none
2025-09-29T11:00:41.085 [DEBUG] [Thread-154048] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:41.102 [DEBUG] [Thread-154048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:41.103 [DEBUG] [Thread-154048] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:41.103 [DEBUG] [Thread-154048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:00:41.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:00:41.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:41.105 [DEBUG] [Thread-154048] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:41.106 [DEBUG] [Thread-154048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:41.106 [DEBUG] [Thread-154048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:41.106 [DEBUG] [Thread-154048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:00:41.106 [DEBUG] [Thread-154048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:41.127 [INFO] [Thread-154048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:41.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:41.750 [DEBUG] [Thread-154048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:41.750 [DEBUG] [Thread-154048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:41.751 [DEBUG] [Thread-154048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:00:41.791 [DEBUG] [Thread-154048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:41.791 [DEBUG] [Thread-154048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:41.793 [DEBUG] [Thread-154048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:41.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:41.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:00:41.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:00:41.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:00:41.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:41.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:00:41.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:41.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:00:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.375072 -999.00  +11.80  15.16     58   +3.90 1 1 1 1 1   888    0 9.36 62.81 ----- 11.0 15.2 141.8 20.5 19.8 -24.9 18.6 -24.8 17.9 -25.3 19.0 -24.8
2025-09-29T11:00:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:00:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:00:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.375072
2025-09-29T11:00:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:00:41.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:00:41.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:00:41.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:00:41.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:00:41.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:00:29', tmtdew=9.11, humidity=53.38, cloud=0.0, wind=17.33, temperature=11.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:00:06.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:00:41.815 [DEBUG] [Thread-154048] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:41.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:00:41.911 [DEBUG] [Thread-154051] [transport.py] [_log()] starting thread (client mode): 0x2e38cc40
2025-09-29T11:00:41.911 [DEBUG] [Thread-154051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:41.926 [DEBUG] [Thread-154051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:00:41.926 [INFO] [Thread-154051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:00:41.934 [DEBUG] [Thread-154051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:41.934 [DEBUG] [Thread-154051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:00:41.934 [DEBUG] [Thread-154051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:41.934 [DEBUG] [Thread-154051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] Compression: none
2025-09-29T11:00:41.935 [DEBUG] [Thread-154051] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:41.993 [DEBUG] [Thread-154051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:41.993 [DEBUG] [Thread-154051] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:41.994 [DEBUG] [Thread-154051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:00:41.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:00:41.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:42.056 [DEBUG] [Thread-154051] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:42.056 [DEBUG] [Thread-154051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:42.056 [DEBUG] [Thread-154051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:42.056 [DEBUG] [Thread-154051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:00:42.056 [DEBUG] [Thread-154051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:42.078 [INFO] [Thread-154051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:42.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:00:42.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:43.011 [DEBUG] [Thread-154051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:43.011 [DEBUG] [Thread-154051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:43.059 [DEBUG] [Thread-154051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:43.059 [DEBUG] [Thread-154051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:43.068 [DEBUG] [Thread-154051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:43.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:43.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:00:43.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:00:43.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:43.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:43.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:43.102 [DEBUG] [Thread-154051] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:47.284 [DEBUG] [Thread-154053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:00:53.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:00:53.105 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:00:53.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:00:53.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 0, 29), 9.11, 53.38, 0.0, 17.33, 11.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:00:53.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:00:29
2025-09-29T11:00:53.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:00:53.989 [DEBUG] [Thread-154054] [transport.py] [_log()] starting thread (client mode): 0x2e3c1a20
2025-09-29T11:00:53.989 [DEBUG] [Thread-154054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:54.010 [DEBUG] [Thread-154054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:00:54.010 [INFO] [Thread-154054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] Compression: none
2025-09-29T11:00:54.014 [DEBUG] [Thread-154054] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:54.033 [DEBUG] [Thread-154054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:54.034 [DEBUG] [Thread-154054] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:54.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:00:54.035 [DEBUG] [Thread-154054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:00:54.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:54.037 [DEBUG] [Thread-154054] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:54.037 [DEBUG] [Thread-154054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:54.037 [DEBUG] [Thread-154054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:54.037 [DEBUG] [Thread-154054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:00:54.037 [DEBUG] [Thread-154054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:54.072 [INFO] [Thread-154054] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:54.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:54.834 [DEBUG] [Thread-154054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:54.834 [DEBUG] [Thread-154054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:54.835 [DEBUG] [Thread-154054] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:00:54.875 [DEBUG] [Thread-154054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:54.875 [DEBUG] [Thread-154054] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:54.877 [DEBUG] [Thread-154054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:54.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:54.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:00:54.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:00:54.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:00:54.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:54.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:00:54.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:54.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:54.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:00:54.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.375072 -999.00  +11.80  15.16     58   +3.90 1 1 1 1 1   888    0 9.36 62.81 ----- 11.0 15.2 141.8 20.5 19.8 -24.9 18.6 -24.8 17.9 -25.3 19.0 -24.8
2025-09-29T11:00:54.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:00:54.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:00:54.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.375072
2025-09-29T11:00:54.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:00:54.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:00:54.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:00:54.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:00:54.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:00:54.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:00:29', tmtdew=9.11, humidity=53.38, cloud=0.0, wind=17.33, temperature=11.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:00:06.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:00:54.901 [DEBUG] [Thread-154054] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:00:54.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:00:54.996 [DEBUG] [Thread-154057] [transport.py] [_log()] starting thread (client mode): 0x2e3c37c0
2025-09-29T11:00:54.996 [DEBUG] [Thread-154057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:00:55.011 [DEBUG] [Thread-154057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:00:55.011 [INFO] [Thread-154057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:00:55.018 [DEBUG] [Thread-154057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:00:55.019 [DEBUG] [Thread-154057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:00:55.019 [DEBUG] [Thread-154057] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:00:55.019 [DEBUG] [Thread-154057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:55.019 [DEBUG] [Thread-154057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:00:55.019 [DEBUG] [Thread-154057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:55.019 [DEBUG] [Thread-154057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:00:55.019 [DEBUG] [Thread-154057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:00:55.019 [DEBUG] [Thread-154057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] client lang: <none>
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] server lang: <none>
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] kex follows: False
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:00:55.020 [DEBUG] [Thread-154057] [transport.py] [_log()] Compression: none
2025-09-29T11:00:55.021 [DEBUG] [Thread-154057] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:00:55.078 [DEBUG] [Thread-154057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:00:55.079 [DEBUG] [Thread-154057] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:00:55.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:00:55.081 [DEBUG] [Thread-154057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:00:55.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:00:55.138 [DEBUG] [Thread-154057] [transport.py] [_log()] userauth is OK
2025-09-29T11:00:55.139 [DEBUG] [Thread-154057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:00:55.139 [DEBUG] [Thread-154057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:00:55.139 [DEBUG] [Thread-154057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:00:55.139 [DEBUG] [Thread-154057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:00:55.159 [INFO] [Thread-154057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:00:55.159 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:00:55.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:00:56.116 [DEBUG] [Thread-154057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:00:56.117 [DEBUG] [Thread-154057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:00:56.164 [DEBUG] [Thread-154057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:00:56.165 [DEBUG] [Thread-154057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:00:56.173 [DEBUG] [Thread-154057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:00:56.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:00:56.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:00:56.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:00:56.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:00:56.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:00:56.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:00:56.208 [DEBUG] [Thread-154057] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:02.335 [DEBUG] [Thread-154059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:01:06.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:01:06.210 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:01:06.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:01:06.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 1), 9.08, 53.44, 0.0, 16.8, 11.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:01:06.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:01:00
2025-09-29T11:01:06.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:01:07.069 [DEBUG] [Thread-154060] [transport.py] [_log()] starting thread (client mode): 0x2b9c22c0
2025-09-29T11:01:07.069 [DEBUG] [Thread-154060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:07.089 [DEBUG] [Thread-154060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:01:07.089 [INFO] [Thread-154060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] Compression: none
2025-09-29T11:01:07.092 [DEBUG] [Thread-154060] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:07.104 [DEBUG] [Thread-154060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:07.104 [DEBUG] [Thread-154060] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:07.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:01:07.104 [DEBUG] [Thread-154060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:01:07.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:07.105 [DEBUG] [Thread-154060] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:07.105 [DEBUG] [Thread-154060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:07.105 [DEBUG] [Thread-154060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:07.105 [DEBUG] [Thread-154060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:01:07.105 [DEBUG] [Thread-154060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:07.114 [INFO] [Thread-154060] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:07.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:07.707 [DEBUG] [Thread-154060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:07.707 [DEBUG] [Thread-154060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:07.707 [DEBUG] [Thread-154060] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:01:07.749 [DEBUG] [Thread-154060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:07.749 [DEBUG] [Thread-154060] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:07.752 [DEBUG] [Thread-154060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:07.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:07.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:01:07.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:01:07.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:01:07.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:07.770 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:01:07.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:07.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:01:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.375420 -999.00  +12.10  10.97     57   +4.00 1 1 1 1 1   888    0 9.45 62.62 ----- 13.7 11.0 147.6 17.6 19.9 -24.4 18.7 -24.5 18.0 -25.8 19.1 -24.6
2025-09-29T11:01:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:01:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:01:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.375420
2025-09-29T11:01:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:01:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:01:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:01:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:01:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:01:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:01:00', tmtdew=9.08, humidity=53.44, cloud=0.0, wind=16.8, temperature=11.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:00:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:01:07.771 [DEBUG] [Thread-154060] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:07.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:01:07.855 [DEBUG] [Thread-154063] [transport.py] [_log()] starting thread (client mode): 0x2b96d0c0
2025-09-29T11:01:07.855 [DEBUG] [Thread-154063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:07.869 [DEBUG] [Thread-154063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:01:07.869 [INFO] [Thread-154063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:01:07.877 [DEBUG] [Thread-154063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:07.877 [DEBUG] [Thread-154063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] Compression: none
2025-09-29T11:01:07.878 [DEBUG] [Thread-154063] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:07.940 [DEBUG] [Thread-154063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:07.941 [DEBUG] [Thread-154063] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:07.941 [DEBUG] [Thread-154063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:01:07.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:01:07.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:07.998 [DEBUG] [Thread-154063] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:07.998 [DEBUG] [Thread-154063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:07.998 [DEBUG] [Thread-154063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:07.998 [DEBUG] [Thread-154063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:01:07.998 [DEBUG] [Thread-154063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:08.014 [INFO] [Thread-154063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:08.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:01:08.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:09.011 [DEBUG] [Thread-154063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:09.011 [DEBUG] [Thread-154063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:09.059 [DEBUG] [Thread-154063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:09.059 [DEBUG] [Thread-154063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:09.068 [DEBUG] [Thread-154063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:09.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:09.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:01:09.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:01:09.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:09.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:09.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:09.101 [DEBUG] [Thread-154063] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:17.363 [DEBUG] [Thread-154065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:01:19.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:01:19.104 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:01:19.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:01:19.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 1), 9.08, 53.44, 0.0, 16.8, 11.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:01:19.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:01:00
2025-09-29T11:01:19.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:01:19.967 [DEBUG] [Thread-154066] [transport.py] [_log()] starting thread (client mode): 0x2b9b9e10
2025-09-29T11:01:19.968 [DEBUG] [Thread-154066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:19.987 [DEBUG] [Thread-154066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:01:19.988 [INFO] [Thread-154066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:01:19.990 [DEBUG] [Thread-154066] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:19.991 [DEBUG] [Thread-154066] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:19.992 [DEBUG] [Thread-154066] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:19.992 [DEBUG] [Thread-154066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:19.992 [DEBUG] [Thread-154066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:19.992 [DEBUG] [Thread-154066] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:19.992 [DEBUG] [Thread-154066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:19.992 [DEBUG] [Thread-154066] [transport.py] [_log()] Compression: none
2025-09-29T11:01:19.992 [DEBUG] [Thread-154066] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:20.009 [DEBUG] [Thread-154066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:20.010 [DEBUG] [Thread-154066] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:20.011 [DEBUG] [Thread-154066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:01:20.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:01:20.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:20.012 [DEBUG] [Thread-154066] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:20.013 [DEBUG] [Thread-154066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:20.013 [DEBUG] [Thread-154066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:20.013 [DEBUG] [Thread-154066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:01:20.013 [DEBUG] [Thread-154066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:20.037 [INFO] [Thread-154066] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:20.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:20.688 [DEBUG] [Thread-154066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:20.688 [DEBUG] [Thread-154066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:20.688 [DEBUG] [Thread-154066] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:01:20.729 [DEBUG] [Thread-154066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:20.729 [DEBUG] [Thread-154066] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:20.731 [DEBUG] [Thread-154066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:20.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:20.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:01:20.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:01:20.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:01:20.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:20.749 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:01:20.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:20.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:20.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.375420 -999.00  +12.10  10.97     57   +4.00 1 1 1 1 1   888    0 9.45 62.62 ----- 13.7 11.0 147.6 17.6 19.9 -24.4 18.7 -24.5 18.0 -25.8 19.1 -24.6
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.375420
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:01:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:01:00', tmtdew=9.08, humidity=53.44, cloud=0.0, wind=16.8, temperature=11.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:00:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:01:20.751 [DEBUG] [Thread-154066] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:20.823 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:01:20.832 [DEBUG] [Thread-154069] [transport.py] [_log()] starting thread (client mode): 0x2b9c29b0
2025-09-29T11:01:20.833 [DEBUG] [Thread-154069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:20.852 [DEBUG] [Thread-154069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:01:20.852 [INFO] [Thread-154069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:01:20.859 [DEBUG] [Thread-154069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:20.860 [DEBUG] [Thread-154069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:20.861 [DEBUG] [Thread-154069] [transport.py] [_log()] Compression: none
2025-09-29T11:01:20.861 [DEBUG] [Thread-154069] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:20.919 [DEBUG] [Thread-154069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:20.919 [DEBUG] [Thread-154069] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:20.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:01:20.920 [DEBUG] [Thread-154069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:01:20.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:20.975 [DEBUG] [Thread-154069] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:20.976 [DEBUG] [Thread-154069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:20.976 [DEBUG] [Thread-154069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:20.976 [DEBUG] [Thread-154069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:01:20.976 [DEBUG] [Thread-154069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:20.994 [INFO] [Thread-154069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:20.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:01:20.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:21.984 [DEBUG] [Thread-154069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:21.985 [DEBUG] [Thread-154069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:22.032 [DEBUG] [Thread-154069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:22.032 [DEBUG] [Thread-154069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:22.041 [DEBUG] [Thread-154069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:22.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:22.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:01:22.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:01:22.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:22.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:22.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:22.076 [DEBUG] [Thread-154069] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:32.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:01:32.079 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:01:32.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:01:32.405 [DEBUG] [Thread-154071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:01:32.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 1), 9.08, 53.44, 0.0, 16.8, 11.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:01:32.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:01:00
2025-09-29T11:01:32.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:01:32.942 [DEBUG] [Thread-154072] [transport.py] [_log()] starting thread (client mode): 0x2b96ed10
2025-09-29T11:01:32.942 [DEBUG] [Thread-154072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:32.963 [DEBUG] [Thread-154072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:01:32.963 [INFO] [Thread-154072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] Compression: none
2025-09-29T11:01:32.967 [DEBUG] [Thread-154072] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:32.985 [DEBUG] [Thread-154072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:32.986 [DEBUG] [Thread-154072] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:32.986 [DEBUG] [Thread-154072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:01:32.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:01:32.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:32.989 [DEBUG] [Thread-154072] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:32.989 [DEBUG] [Thread-154072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:32.989 [DEBUG] [Thread-154072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:32.989 [DEBUG] [Thread-154072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:01:32.989 [DEBUG] [Thread-154072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:33.013 [INFO] [Thread-154072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:33.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:33.836 [DEBUG] [Thread-154072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:33.836 [DEBUG] [Thread-154072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:33.836 [DEBUG] [Thread-154072] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:01:33.877 [DEBUG] [Thread-154072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:33.877 [DEBUG] [Thread-154072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:33.879 [DEBUG] [Thread-154072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:33.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:33.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:01:33.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:01:33.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:01:33.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:33.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:01:33.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:33.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.375420 -999.00  +12.10  10.97     57   +4.00 1 1 1 1 1   888    0 9.45 62.62 ----- 13.7 11.0 147.6 17.6 19.9 -24.4 18.7 -24.5 18.0 -25.8 19.1 -24.6
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.375420
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:01:33.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:01:00', tmtdew=9.08, humidity=53.44, cloud=0.0, wind=16.8, temperature=11.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:00:36.288', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:01:33.898 [DEBUG] [Thread-154072] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:33.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:01:33.981 [DEBUG] [Thread-154075] [transport.py] [_log()] starting thread (client mode): 0x2e38dcf0
2025-09-29T11:01:33.981 [DEBUG] [Thread-154075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:33.996 [DEBUG] [Thread-154075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:01:33.996 [INFO] [Thread-154075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:01:34.003 [DEBUG] [Thread-154075] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:34.003 [DEBUG] [Thread-154075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] Compression: none
2025-09-29T11:01:34.004 [DEBUG] [Thread-154075] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:34.062 [DEBUG] [Thread-154075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:34.062 [DEBUG] [Thread-154075] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:34.062 [DEBUG] [Thread-154075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:01:34.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:01:34.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:34.119 [DEBUG] [Thread-154075] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:34.119 [DEBUG] [Thread-154075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:34.120 [DEBUG] [Thread-154075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:34.120 [DEBUG] [Thread-154075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:01:34.120 [DEBUG] [Thread-154075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:34.134 [INFO] [Thread-154075] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:34.134 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:01:34.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:34.688 [DEBUG] [Thread-154077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:01:34.893 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:01:34.894 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:01:35.113 [DEBUG] [Thread-154075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:35.113 [DEBUG] [Thread-154075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:35.161 [DEBUG] [Thread-154075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:35.161 [DEBUG] [Thread-154075] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:35.170 [DEBUG] [Thread-154075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:35.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:35.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:01:35.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:01:35.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:35.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:35.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:35.204 [DEBUG] [Thread-154075] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:45.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:01:45.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:01:45.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:01:45.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 1, 32), 8.77, 54.62, 0.0, 21.46, 11.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:01:45.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:01:32
2025-09-29T11:01:45.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:01:46.062 [DEBUG] [Thread-154078] [transport.py] [_log()] starting thread (client mode): 0x2e38fc70
2025-09-29T11:01:46.062 [DEBUG] [Thread-154078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:46.082 [DEBUG] [Thread-154078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:01:46.082 [INFO] [Thread-154078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] Compression: none
2025-09-29T11:01:46.086 [DEBUG] [Thread-154078] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:46.101 [DEBUG] [Thread-154078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:46.102 [DEBUG] [Thread-154078] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:46.102 [DEBUG] [Thread-154078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:01:46.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:01:46.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:46.103 [DEBUG] [Thread-154078] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:46.103 [DEBUG] [Thread-154078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:46.103 [DEBUG] [Thread-154078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:46.103 [DEBUG] [Thread-154078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:01:46.103 [DEBUG] [Thread-154078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:46.120 [INFO] [Thread-154078] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:46.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:46.766 [DEBUG] [Thread-154078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:46.766 [DEBUG] [Thread-154078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:46.766 [DEBUG] [Thread-154078] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:01:46.807 [DEBUG] [Thread-154078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:46.807 [DEBUG] [Thread-154078] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:46.810 [DEBUG] [Thread-154078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:46.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:46.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:01:46.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:01:46.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:01:46.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:46.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:01:46.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:46.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:46.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:01:46.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.376114 -999.00  +12.00  18.39     56   +3.70 1 1 1 1 1   888    0 9.58 68.62 ----- 23.3 18.4 142.6 25.9 20.0 -25.0 18.7 -25.1 17.9 -26.8 19.1 -25.7
2025-09-29T11:01:46.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:01:46.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:01:46.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.376114
2025-09-29T11:01:46.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:01:46.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:01:46.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:01:46.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:01:46.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:01:46.829 [DEBUG] [Thread-154078] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:46.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:01:32', tmtdew=8.77, humidity=54.62, cloud=0.0, wind=21.46, temperature=11.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:01:36.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:01:46.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:01:46.925 [DEBUG] [Thread-154081] [transport.py] [_log()] starting thread (client mode): 0x2e34a5f0
2025-09-29T11:01:46.926 [DEBUG] [Thread-154081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:46.940 [DEBUG] [Thread-154081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:01:46.941 [INFO] [Thread-154081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:01:46.948 [DEBUG] [Thread-154081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:46.949 [DEBUG] [Thread-154081] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:46.950 [DEBUG] [Thread-154081] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:46.950 [DEBUG] [Thread-154081] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:46.950 [DEBUG] [Thread-154081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:46.950 [DEBUG] [Thread-154081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:46.950 [DEBUG] [Thread-154081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:46.950 [DEBUG] [Thread-154081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:46.950 [DEBUG] [Thread-154081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:46.950 [DEBUG] [Thread-154081] [transport.py] [_log()] Compression: none
2025-09-29T11:01:46.951 [DEBUG] [Thread-154081] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:47.008 [DEBUG] [Thread-154081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:47.009 [DEBUG] [Thread-154081] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:47.010 [DEBUG] [Thread-154081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:01:47.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:01:47.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:47.064 [DEBUG] [Thread-154081] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:47.064 [DEBUG] [Thread-154081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:47.064 [DEBUG] [Thread-154081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:47.064 [DEBUG] [Thread-154081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:01:47.064 [DEBUG] [Thread-154081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:47.083 [INFO] [Thread-154081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:47.084 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:01:47.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:47.429 [DEBUG] [Thread-154083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:01:48.031 [DEBUG] [Thread-154081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:48.031 [DEBUG] [Thread-154081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:48.079 [DEBUG] [Thread-154081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:48.079 [DEBUG] [Thread-154081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:48.088 [DEBUG] [Thread-154081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:48.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:48.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:01:48.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:01:48.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:48.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:48.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:48.122 [DEBUG] [Thread-154081] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:58.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:01:58.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:01:58.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:01:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 1, 32), 8.77, 54.62, 0.0, 21.46, 11.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:01:58.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:01:32
2025-09-29T11:01:58.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:01:58.980 [DEBUG] [Thread-154084] [transport.py] [_log()] starting thread (client mode): 0x2b91cd30
2025-09-29T11:01:58.981 [DEBUG] [Thread-154084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:59.001 [DEBUG] [Thread-154084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:01:59.002 [INFO] [Thread-154084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:01:59.005 [DEBUG] [Thread-154084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:59.005 [DEBUG] [Thread-154084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] Compression: none
2025-09-29T11:01:59.006 [DEBUG] [Thread-154084] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:01:59.021 [DEBUG] [Thread-154084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:01:59.021 [DEBUG] [Thread-154084] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:01:59.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:01:59.022 [DEBUG] [Thread-154084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:01:59.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:01:59.025 [DEBUG] [Thread-154084] [transport.py] [_log()] userauth is OK
2025-09-29T11:01:59.025 [DEBUG] [Thread-154084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:01:59.025 [DEBUG] [Thread-154084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:01:59.025 [DEBUG] [Thread-154084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:01:59.025 [DEBUG] [Thread-154084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:01:59.049 [INFO] [Thread-154084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:01:59.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:01:59.814 [DEBUG] [Thread-154084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:01:59.814 [DEBUG] [Thread-154084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:01:59.814 [DEBUG] [Thread-154084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:01:59.855 [DEBUG] [Thread-154084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:01:59.855 [DEBUG] [Thread-154084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:01:59.858 [DEBUG] [Thread-154084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:01:59.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:01:59.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:01:59.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:01:59.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:01:59.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:01:59.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:01:59.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:01:59.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:01:59.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:01:59.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.376114 -999.00  +12.00  18.39     56   +3.70 1 1 1 1 1   888    0 9.58 68.62 ----- 23.3 18.4 142.6 25.9 20.0 -25.0 18.7 -25.1 17.9 -26.8 19.1 -25.7
2025-09-29T11:01:59.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:01:59.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:01:59.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.376114
2025-09-29T11:01:59.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:01:59.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:01:59.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:01:59.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:01:59.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:01:59.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:01:32', tmtdew=8.77, humidity=54.62, cloud=0.0, wind=21.46, temperature=11.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:01:36.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:01:59.884 [DEBUG] [Thread-154084] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:01:59.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:01:59.970 [DEBUG] [Thread-154087] [transport.py] [_log()] starting thread (client mode): 0x2e3498a0
2025-09-29T11:01:59.970 [DEBUG] [Thread-154087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:01:59.985 [DEBUG] [Thread-154087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:01:59.985 [INFO] [Thread-154087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:01:59.992 [DEBUG] [Thread-154087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:01:59.992 [DEBUG] [Thread-154087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:01:59.992 [DEBUG] [Thread-154087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:01:59.992 [DEBUG] [Thread-154087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:59.992 [DEBUG] [Thread-154087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:01:59.992 [DEBUG] [Thread-154087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:59.992 [DEBUG] [Thread-154087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] client lang: <none>
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] server lang: <none>
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] kex follows: False
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] Compression: none
2025-09-29T11:01:59.993 [DEBUG] [Thread-154087] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:00.048 [DEBUG] [Thread-154087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:00.049 [DEBUG] [Thread-154087] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:00.049 [DEBUG] [Thread-154087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:02:00.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:02:00.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:00.105 [DEBUG] [Thread-154087] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:00.105 [DEBUG] [Thread-154087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:00.105 [DEBUG] [Thread-154087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:00.105 [DEBUG] [Thread-154087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:02:00.105 [DEBUG] [Thread-154087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:00.124 [INFO] [Thread-154087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:00.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:02:00.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:01.099 [DEBUG] [Thread-154087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:01.099 [DEBUG] [Thread-154087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:01.146 [DEBUG] [Thread-154087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:01.146 [DEBUG] [Thread-154087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:01.155 [DEBUG] [Thread-154087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:01.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:01.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:02:01.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:02:01.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:01.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:01.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:01.188 [DEBUG] [Thread-154087] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:02:02.479 [DEBUG] [Thread-154089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:02:11.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:02:11.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:02:11.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:02:11.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 2, 4), 8.93, 54.09, 0.0, 19.07, 11.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:02:11.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:02:04
2025-09-29T11:02:11.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:02:12.047 [DEBUG] [Thread-154090] [transport.py] [_log()] starting thread (client mode): 0x2b96cb20
2025-09-29T11:02:12.048 [DEBUG] [Thread-154090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:02:12.068 [DEBUG] [Thread-154090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:02:12.068 [INFO] [Thread-154090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:02:12.073 [DEBUG] [Thread-154090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:02:12.073 [DEBUG] [Thread-154090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] client lang: <none>
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] server lang: <none>
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] kex follows: False
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] Compression: none
2025-09-29T11:02:12.074 [DEBUG] [Thread-154090] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:12.088 [DEBUG] [Thread-154090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:12.089 [DEBUG] [Thread-154090] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:12.089 [DEBUG] [Thread-154090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:02:12.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:02:12.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:12.091 [DEBUG] [Thread-154090] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:12.091 [DEBUG] [Thread-154090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:12.091 [DEBUG] [Thread-154090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:12.091 [DEBUG] [Thread-154090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:02:12.092 [DEBUG] [Thread-154090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:12.116 [INFO] [Thread-154090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:12.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:13.014 [DEBUG] [Thread-154090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:13.014 [DEBUG] [Thread-154090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:13.015 [DEBUG] [Thread-154090] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:02:13.055 [DEBUG] [Thread-154090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:13.055 [DEBUG] [Thread-154090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:13.058 [DEBUG] [Thread-154090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:13.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:13.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:02:13.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:02:13.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:02:13.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:13.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:02:13.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:13.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:13.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:02:13.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.376114 -999.00  +12.00  18.39     56   +3.70 1 1 1 1 1   888    0 9.58 68.62 ----- 23.3 18.4 142.6 25.9 20.0 -25.0 18.7 -25.1 17.9 -26.8 19.1 -25.7
2025-09-29T11:02:13.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:02:13.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:02:13.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.376114
2025-09-29T11:02:13.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:02:13.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:02:13.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:02:13.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:02:13.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:02:13.085 [DEBUG] [Thread-154090] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:02:13.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:02:04', tmtdew=8.93, humidity=54.09, cloud=0.0, wind=19.07, temperature=11.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:01:36.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:02:13.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:02:13.181 [DEBUG] [Thread-154093] [transport.py] [_log()] starting thread (client mode): 0x2e3c3100
2025-09-29T11:02:13.181 [DEBUG] [Thread-154093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:02:13.196 [DEBUG] [Thread-154093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:02:13.196 [INFO] [Thread-154093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:02:13.204 [DEBUG] [Thread-154093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:02:13.205 [DEBUG] [Thread-154093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:02:13.205 [DEBUG] [Thread-154093] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:02:13.205 [DEBUG] [Thread-154093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:13.205 [DEBUG] [Thread-154093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:13.205 [DEBUG] [Thread-154093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:13.205 [DEBUG] [Thread-154093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:13.205 [DEBUG] [Thread-154093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] client lang: <none>
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] server lang: <none>
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] kex follows: False
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:02:13.206 [DEBUG] [Thread-154093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:02:13.207 [DEBUG] [Thread-154093] [transport.py] [_log()] Compression: none
2025-09-29T11:02:13.207 [DEBUG] [Thread-154093] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:13.266 [DEBUG] [Thread-154093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:13.267 [DEBUG] [Thread-154093] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:13.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:02:13.268 [DEBUG] [Thread-154093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:02:13.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:13.326 [DEBUG] [Thread-154093] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:13.326 [DEBUG] [Thread-154093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:13.326 [DEBUG] [Thread-154093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:13.327 [DEBUG] [Thread-154093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:02:13.327 [DEBUG] [Thread-154093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:13.348 [INFO] [Thread-154093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:13.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:02:13.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:14.263 [DEBUG] [Thread-154093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:14.263 [DEBUG] [Thread-154093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:14.311 [DEBUG] [Thread-154093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:14.312 [DEBUG] [Thread-154093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:14.321 [DEBUG] [Thread-154093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:14.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:14.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:02:14.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:02:14.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:14.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:14.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:14.356 [DEBUG] [Thread-154093] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:02:17.509 [DEBUG] [Thread-154095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:02:24.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:02:24.358 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:02:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:02:24.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 2, 4), 8.93, 54.09, 0.0, 19.07, 11.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:02:24.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:02:04
2025-09-29T11:02:25.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:02:25.205 [DEBUG] [Thread-154096] [transport.py] [_log()] starting thread (client mode): 0x2e34b130
2025-09-29T11:02:25.206 [DEBUG] [Thread-154096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:02:25.226 [DEBUG] [Thread-154096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:02:25.226 [INFO] [Thread-154096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] client lang: <none>
2025-09-29T11:02:25.229 [DEBUG] [Thread-154096] [transport.py] [_log()] server lang: <none>
2025-09-29T11:02:25.230 [DEBUG] [Thread-154096] [transport.py] [_log()] kex follows: False
2025-09-29T11:02:25.230 [DEBUG] [Thread-154096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:02:25.230 [DEBUG] [Thread-154096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:02:25.230 [DEBUG] [Thread-154096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:02:25.230 [DEBUG] [Thread-154096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:02:25.230 [DEBUG] [Thread-154096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:02:25.230 [DEBUG] [Thread-154096] [transport.py] [_log()] Compression: none
2025-09-29T11:02:25.230 [DEBUG] [Thread-154096] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:25.246 [DEBUG] [Thread-154096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:25.247 [DEBUG] [Thread-154096] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:25.247 [DEBUG] [Thread-154096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:02:25.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:02:25.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:25.249 [DEBUG] [Thread-154096] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:25.249 [DEBUG] [Thread-154096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:25.249 [DEBUG] [Thread-154096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:25.249 [DEBUG] [Thread-154096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:02:25.249 [DEBUG] [Thread-154096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:25.264 [INFO] [Thread-154096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:25.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:25.873 [DEBUG] [Thread-154096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:25.873 [DEBUG] [Thread-154096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:25.873 [DEBUG] [Thread-154096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:02:25.914 [DEBUG] [Thread-154096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:25.914 [DEBUG] [Thread-154096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:25.917 [DEBUG] [Thread-154096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:25.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:25.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:02:25.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:02:25.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:02:25.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:25.937 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:02:25.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:25.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:02:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.376461 -999.00  +11.50  16.70     58   +3.70 1 1 1 1 1   888    0 9.69 68.90 ----- 16.8 16.7 140.6 26.9 19.9 -25.9 18.6 -27.4 17.8 -25.7 18.9 -26.6
2025-09-29T11:02:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:02:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:02:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.376461
2025-09-29T11:02:25.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:02:25.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:02:25.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:02:25.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:02:25.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:02:25.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:02:04', tmtdew=8.93, humidity=54.09, cloud=0.0, wind=19.07, temperature=11.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:02:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:02:25.940 [DEBUG] [Thread-154096] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:02:26.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:02:26.035 [DEBUG] [Thread-154099] [transport.py] [_log()] starting thread (client mode): 0x2b91fb20
2025-09-29T11:02:26.035 [DEBUG] [Thread-154099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:02:26.049 [DEBUG] [Thread-154099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:02:26.050 [INFO] [Thread-154099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:02:26.057 [DEBUG] [Thread-154099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:02:26.057 [DEBUG] [Thread-154099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] client lang: <none>
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] server lang: <none>
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] kex follows: False
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] Compression: none
2025-09-29T11:02:26.058 [DEBUG] [Thread-154099] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:26.113 [DEBUG] [Thread-154099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:26.113 [DEBUG] [Thread-154099] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:26.113 [DEBUG] [Thread-154099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:02:26.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:02:26.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:26.169 [DEBUG] [Thread-154099] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:26.170 [DEBUG] [Thread-154099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:26.170 [DEBUG] [Thread-154099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:26.170 [DEBUG] [Thread-154099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:02:26.170 [DEBUG] [Thread-154099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:26.190 [INFO] [Thread-154099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:26.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:02:26.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:27.169 [DEBUG] [Thread-154099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:27.169 [DEBUG] [Thread-154099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:27.216 [DEBUG] [Thread-154099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:27.216 [DEBUG] [Thread-154099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:27.225 [DEBUG] [Thread-154099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:27.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:27.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:02:27.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:02:27.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:27.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:27.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:27.260 [DEBUG] [Thread-154099] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:02:32.554 [DEBUG] [Thread-154101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:02:34.721 [DEBUG] [Thread-154102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:02:35.034 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:02:35.035 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:02:37.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:02:37.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:02:37.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:02:37.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 2, 4), 8.93, 54.09, 0.0, 19.07, 11.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:02:37.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:02:04
2025-09-29T11:02:38.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:02:38.182 [DEBUG] [Thread-154103] [transport.py] [_log()] starting thread (client mode): 0x2b9b9a20
2025-09-29T11:02:38.182 [DEBUG] [Thread-154103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:02:38.203 [DEBUG] [Thread-154103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:02:38.203 [INFO] [Thread-154103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] client lang: <none>
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] server lang: <none>
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] kex follows: False
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] Compression: none
2025-09-29T11:02:38.207 [DEBUG] [Thread-154103] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:38.224 [DEBUG] [Thread-154103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:38.224 [DEBUG] [Thread-154103] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:38.224 [DEBUG] [Thread-154103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:02:38.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:02:38.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:38.225 [DEBUG] [Thread-154103] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:38.225 [DEBUG] [Thread-154103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:38.225 [DEBUG] [Thread-154103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:38.225 [DEBUG] [Thread-154103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:02:38.225 [DEBUG] [Thread-154103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:38.234 [INFO] [Thread-154103] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:38.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:39.068 [DEBUG] [Thread-154103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:39.068 [DEBUG] [Thread-154103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:39.069 [DEBUG] [Thread-154103] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:02:39.109 [DEBUG] [Thread-154103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:39.110 [DEBUG] [Thread-154103] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:39.113 [DEBUG] [Thread-154103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:39.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:39.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:02:39.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:02:39.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:02:39.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:39.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:02:39.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:39.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:39.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:02:39.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.376461 -999.00  +11.50  16.70     58   +3.70 1 1 1 1 1   888    0 9.69 68.90 ----- 16.8 16.7 140.6 26.9 19.9 -25.9 18.6 -27.4 17.8 -25.7 18.9 -26.6
2025-09-29T11:02:39.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:02:39.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:02:39.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.376461
2025-09-29T11:02:39.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:02:39.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:02:39.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:02:39.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:02:39.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:02:39.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:02:04', tmtdew=8.93, humidity=54.09, cloud=0.0, wind=19.07, temperature=11.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:02:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:02:39.141 [DEBUG] [Thread-154103] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:02:39.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:02:39.238 [DEBUG] [Thread-154106] [transport.py] [_log()] starting thread (client mode): 0x2b9bb100
2025-09-29T11:02:39.238 [DEBUG] [Thread-154106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:02:39.255 [DEBUG] [Thread-154106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:02:39.255 [INFO] [Thread-154106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:02:39.262 [DEBUG] [Thread-154106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:02:39.262 [DEBUG] [Thread-154106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] client lang: <none>
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] server lang: <none>
2025-09-29T11:02:39.263 [DEBUG] [Thread-154106] [transport.py] [_log()] kex follows: False
2025-09-29T11:02:39.264 [DEBUG] [Thread-154106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:02:39.264 [DEBUG] [Thread-154106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:02:39.264 [DEBUG] [Thread-154106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:02:39.264 [DEBUG] [Thread-154106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:02:39.264 [DEBUG] [Thread-154106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:02:39.264 [DEBUG] [Thread-154106] [transport.py] [_log()] Compression: none
2025-09-29T11:02:39.264 [DEBUG] [Thread-154106] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:39.321 [DEBUG] [Thread-154106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:39.321 [DEBUG] [Thread-154106] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:39.321 [DEBUG] [Thread-154106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:02:39.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:02:39.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:39.378 [DEBUG] [Thread-154106] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:39.378 [DEBUG] [Thread-154106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:39.378 [DEBUG] [Thread-154106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:39.378 [DEBUG] [Thread-154106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:02:39.378 [DEBUG] [Thread-154106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:39.392 [INFO] [Thread-154106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:39.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:02:39.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:40.339 [DEBUG] [Thread-154106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:40.339 [DEBUG] [Thread-154106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:40.387 [DEBUG] [Thread-154106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:40.387 [DEBUG] [Thread-154106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:40.397 [DEBUG] [Thread-154106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:40.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:40.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:02:40.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:02:40.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:40.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:40.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:40.431 [DEBUG] [Thread-154106] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:02:47.597 [DEBUG] [Thread-154108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:02:50.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:02:50.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:02:50.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:02:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 2, 36), 9.28, 52.88, 0.0, 20.8, 11.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:02:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:02:36
2025-09-29T11:02:51.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:02:51.297 [DEBUG] [Thread-154109] [transport.py] [_log()] starting thread (client mode): 0x2b91f250
2025-09-29T11:02:51.298 [DEBUG] [Thread-154109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:02:51.318 [DEBUG] [Thread-154109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:02:51.318 [INFO] [Thread-154109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:02:51.321 [DEBUG] [Thread-154109] [transport.py] [_log()] client lang: <none>
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] server lang: <none>
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] kex follows: False
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] Compression: none
2025-09-29T11:02:51.322 [DEBUG] [Thread-154109] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:51.332 [DEBUG] [Thread-154109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:51.333 [DEBUG] [Thread-154109] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:51.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:02:51.334 [DEBUG] [Thread-154109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:02:51.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:51.335 [DEBUG] [Thread-154109] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:51.336 [DEBUG] [Thread-154109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:51.336 [DEBUG] [Thread-154109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:51.336 [DEBUG] [Thread-154109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:02:51.336 [DEBUG] [Thread-154109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:51.359 [INFO] [Thread-154109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:51.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:51.982 [DEBUG] [Thread-154109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:51.982 [DEBUG] [Thread-154109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:51.982 [DEBUG] [Thread-154109] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:02:52.023 [DEBUG] [Thread-154109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:52.023 [DEBUG] [Thread-154109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:52.028 [DEBUG] [Thread-154109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:52.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:52.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:02:52.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:02:52.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:02:52.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:52.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:02:52.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:52.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:52.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:02:52.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.376808 -999.00  +11.70  15.02     58   +3.90 1 1 1 1 1   888    0 9.57 67.08 ----- 13.7 15.0 130.4 19.8 19.9 -24.6 18.7 -24.9 18.0 -25.1 19.1 -24.9
2025-09-29T11:02:52.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:02:52.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:02:52.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.376808
2025-09-29T11:02:52.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:02:52.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:02:52.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:02:52.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:02:52.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:02:52.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:02:36', tmtdew=9.28, humidity=52.88, cloud=0.0, wind=20.8, temperature=11.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:02:36.211', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:02:52.047 [DEBUG] [Thread-154109] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:02:52.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:02:52.142 [DEBUG] [Thread-154112] [transport.py] [_log()] starting thread (client mode): 0x2e38ebf0
2025-09-29T11:02:52.142 [DEBUG] [Thread-154112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:02:52.157 [DEBUG] [Thread-154112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:02:52.157 [INFO] [Thread-154112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:02:52.164 [DEBUG] [Thread-154112] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:02:52.164 [DEBUG] [Thread-154112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] client lang: <none>
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] server lang: <none>
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] kex follows: False
2025-09-29T11:02:52.165 [DEBUG] [Thread-154112] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:02:52.166 [DEBUG] [Thread-154112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:02:52.166 [DEBUG] [Thread-154112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:02:52.166 [DEBUG] [Thread-154112] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:02:52.166 [DEBUG] [Thread-154112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:02:52.166 [DEBUG] [Thread-154112] [transport.py] [_log()] Compression: none
2025-09-29T11:02:52.166 [DEBUG] [Thread-154112] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:02:52.225 [DEBUG] [Thread-154112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:02:52.225 [DEBUG] [Thread-154112] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:02:52.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:02:52.226 [DEBUG] [Thread-154112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:02:52.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:02:52.283 [DEBUG] [Thread-154112] [transport.py] [_log()] userauth is OK
2025-09-29T11:02:52.283 [DEBUG] [Thread-154112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:02:52.283 [DEBUG] [Thread-154112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:02:52.283 [DEBUG] [Thread-154112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:02:52.283 [DEBUG] [Thread-154112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:02:52.302 [INFO] [Thread-154112] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:02:52.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:02:52.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:02:53.238 [DEBUG] [Thread-154112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:02:53.238 [DEBUG] [Thread-154112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:02:53.286 [DEBUG] [Thread-154112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:02:53.286 [DEBUG] [Thread-154112] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:02:53.295 [DEBUG] [Thread-154112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:02:53.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:02:53.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:02:53.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:02:53.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:02:53.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:02:53.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:02:53.329 [DEBUG] [Thread-154112] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:02.627 [DEBUG] [Thread-154114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:03:03.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:03:03.325 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:03:03.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:03:03.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 2, 36), 9.28, 52.88, 0.0, 20.8, 11.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:03:03.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:02:36
2025-09-29T11:03:04.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:03:04.217 [DEBUG] [Thread-154115] [transport.py] [_log()] starting thread (client mode): 0x2b96e500
2025-09-29T11:03:04.218 [DEBUG] [Thread-154115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:04.237 [DEBUG] [Thread-154115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:03:04.238 [INFO] [Thread-154115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:03:04.241 [DEBUG] [Thread-154115] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:04.241 [DEBUG] [Thread-154115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:03:04.241 [DEBUG] [Thread-154115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:04.241 [DEBUG] [Thread-154115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:04.241 [DEBUG] [Thread-154115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:04.241 [DEBUG] [Thread-154115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:04.241 [DEBUG] [Thread-154115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] Compression: none
2025-09-29T11:03:04.242 [DEBUG] [Thread-154115] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:04.260 [DEBUG] [Thread-154115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:04.261 [DEBUG] [Thread-154115] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:04.262 [DEBUG] [Thread-154115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:03:04.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:03:04.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:04.264 [DEBUG] [Thread-154115] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:04.264 [DEBUG] [Thread-154115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:04.265 [DEBUG] [Thread-154115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:04.265 [DEBUG] [Thread-154115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:03:04.265 [DEBUG] [Thread-154115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:04.299 [INFO] [Thread-154115] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:04.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:05.135 [DEBUG] [Thread-154115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:05.135 [DEBUG] [Thread-154115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:05.136 [DEBUG] [Thread-154115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:03:05.176 [DEBUG] [Thread-154115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:05.176 [DEBUG] [Thread-154115] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:05.179 [DEBUG] [Thread-154115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:05.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:05.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:03:05.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:03:05.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:03:05.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:05.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:03:05.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:05.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:05.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:03:05.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.376808 -999.00  +11.70  15.02     58   +3.90 1 1 1 1 1   888    0 9.57 67.08 ----- 13.7 15.0 130.4 19.8 19.9 -24.6 18.7 -24.9 18.0 -25.1 19.1 -24.9
2025-09-29T11:03:05.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:03:05.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:03:05.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.376808
2025-09-29T11:03:05.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:03:05.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:03:05.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:03:05.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:03:05.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:03:05.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:02:36', tmtdew=9.28, humidity=52.88, cloud=0.0, wind=20.8, temperature=11.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:02:36.211', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:03:05.204 [DEBUG] [Thread-154115] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:05.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:03:05.295 [DEBUG] [Thread-154118] [transport.py] [_log()] starting thread (client mode): 0x2b91f970
2025-09-29T11:03:05.295 [DEBUG] [Thread-154118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:05.313 [DEBUG] [Thread-154118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:03:05.313 [INFO] [Thread-154118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:03:05.320 [DEBUG] [Thread-154118] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:05.321 [DEBUG] [Thread-154118] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:05.322 [DEBUG] [Thread-154118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:05.322 [DEBUG] [Thread-154118] [transport.py] [_log()] Compression: none
2025-09-29T11:03:05.322 [DEBUG] [Thread-154118] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:05.379 [DEBUG] [Thread-154118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:05.379 [DEBUG] [Thread-154118] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:05.380 [DEBUG] [Thread-154118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:03:05.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:03:05.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:05.435 [DEBUG] [Thread-154118] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:05.435 [DEBUG] [Thread-154118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:05.436 [DEBUG] [Thread-154118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:05.436 [DEBUG] [Thread-154118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:03:05.436 [DEBUG] [Thread-154118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:05.455 [INFO] [Thread-154118] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:05.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:03:05.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:06.429 [DEBUG] [Thread-154118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:06.430 [DEBUG] [Thread-154118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:06.477 [DEBUG] [Thread-154118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:06.477 [DEBUG] [Thread-154118] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:06.486 [DEBUG] [Thread-154118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:06.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:06.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:03:06.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:03:06.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:06.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:06.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:06.521 [DEBUG] [Thread-154118] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:16.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:03:16.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:03:16.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:03:17.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 3, 8), 9.4, 52.48, 0.0, 25.62, 12.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:03:17.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:03:08
2025-09-29T11:03:17.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:03:17.369 [DEBUG] [Thread-154120] [transport.py] [_log()] starting thread (client mode): 0x2b96c2b0
2025-09-29T11:03:17.369 [DEBUG] [Thread-154120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:17.390 [DEBUG] [Thread-154120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:03:17.390 [INFO] [Thread-154120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:03:17.393 [DEBUG] [Thread-154120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:17.393 [DEBUG] [Thread-154120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:03:17.393 [DEBUG] [Thread-154120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:17.393 [DEBUG] [Thread-154120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:17.393 [DEBUG] [Thread-154120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:17.393 [DEBUG] [Thread-154120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:17.393 [DEBUG] [Thread-154120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] Compression: none
2025-09-29T11:03:17.394 [DEBUG] [Thread-154120] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:17.414 [DEBUG] [Thread-154120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:17.414 [DEBUG] [Thread-154120] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:17.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:03:17.415 [DEBUG] [Thread-154120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:03:17.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:17.417 [DEBUG] [Thread-154120] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:17.417 [DEBUG] [Thread-154120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:17.417 [DEBUG] [Thread-154120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:17.418 [DEBUG] [Thread-154120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:03:17.418 [DEBUG] [Thread-154120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:17.436 [INFO] [Thread-154120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:17.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:17.660 [DEBUG] [Thread-154122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:03:18.258 [DEBUG] [Thread-154120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:18.259 [DEBUG] [Thread-154120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:18.259 [DEBUG] [Thread-154120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:03:18.299 [DEBUG] [Thread-154120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:18.299 [DEBUG] [Thread-154120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:18.302 [DEBUG] [Thread-154120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:18.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:18.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:03:18.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:03:18.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:03:18.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:18.326 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:03:18.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:18.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:18.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:03:18.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.376808 -999.00  +11.70  15.02     58   +3.90 1 1 1 1 1   888    0 9.57 67.08 ----- 13.7 15.0 130.4 19.8 19.9 -24.6 18.7 -24.9 18.0 -25.1 19.1 -24.9
2025-09-29T11:03:18.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:03:18.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:03:18.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.376808
2025-09-29T11:03:18.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:03:18.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:03:18.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:03:18.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:03:18.329 [DEBUG] [Thread-154120] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:18.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:03:18.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:03:08', tmtdew=9.4, humidity=52.48, cloud=0.0, wind=25.62, temperature=12.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:02:36.211', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:03:18.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:03:18.426 [DEBUG] [Thread-154124] [transport.py] [_log()] starting thread (client mode): 0x2e38e140
2025-09-29T11:03:18.426 [DEBUG] [Thread-154124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:18.440 [DEBUG] [Thread-154124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:03:18.440 [INFO] [Thread-154124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:03:18.447 [DEBUG] [Thread-154124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] Compression: none
2025-09-29T11:03:18.448 [DEBUG] [Thread-154124] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:18.507 [DEBUG] [Thread-154124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:18.507 [DEBUG] [Thread-154124] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:18.507 [DEBUG] [Thread-154124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:03:18.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:03:18.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:18.563 [DEBUG] [Thread-154124] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:18.564 [DEBUG] [Thread-154124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:18.564 [DEBUG] [Thread-154124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:18.564 [DEBUG] [Thread-154124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:03:18.564 [DEBUG] [Thread-154124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:18.586 [INFO] [Thread-154124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:18.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:03:18.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:19.600 [DEBUG] [Thread-154124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:19.600 [DEBUG] [Thread-154124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:19.648 [DEBUG] [Thread-154124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:19.648 [DEBUG] [Thread-154124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:19.657 [DEBUG] [Thread-154124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:19.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:19.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:03:19.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:03:19.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:19.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:19.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:19.692 [DEBUG] [Thread-154124] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:29.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:03:29.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:03:29.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:03:30.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 3, 8), 9.4, 52.48, 0.0, 25.62, 12.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:03:30.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:03:08
2025-09-29T11:03:30.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:03:30.539 [DEBUG] [Thread-154126] [transport.py] [_log()] starting thread (client mode): 0x2b96c340
2025-09-29T11:03:30.539 [DEBUG] [Thread-154126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:30.559 [DEBUG] [Thread-154126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:03:30.559 [INFO] [Thread-154126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:03:30.560 [DEBUG] [Thread-154126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:30.561 [DEBUG] [Thread-154126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:30.562 [DEBUG] [Thread-154126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:30.562 [DEBUG] [Thread-154126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:30.562 [DEBUG] [Thread-154126] [transport.py] [_log()] Compression: none
2025-09-29T11:03:30.562 [DEBUG] [Thread-154126] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:30.575 [DEBUG] [Thread-154126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:30.576 [DEBUG] [Thread-154126] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:30.576 [DEBUG] [Thread-154126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:03:30.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:03:30.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:30.578 [DEBUG] [Thread-154126] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:30.578 [DEBUG] [Thread-154126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:30.579 [DEBUG] [Thread-154126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:30.579 [DEBUG] [Thread-154126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:03:30.579 [DEBUG] [Thread-154126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:30.600 [INFO] [Thread-154126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:30.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:31.248 [DEBUG] [Thread-154126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:31.248 [DEBUG] [Thread-154126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:31.249 [DEBUG] [Thread-154126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:03:31.289 [DEBUG] [Thread-154126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:31.289 [DEBUG] [Thread-154126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:31.292 [DEBUG] [Thread-154126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:31.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:31.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:03:31.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:03:31.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:03:31.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:31.316 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:03:31.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:31.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:03:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.377156 -999.00  +12.00  13.31     58   +4.00 1 1 1 1 1   888    0 9.51 65.59 ----- 13.1 13.3 150.4 19.3 20.1 -24.5 18.7 -23.6 18.1 -24.6 19.2 -25.3
2025-09-29T11:03:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:03:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:03:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.377156
2025-09-29T11:03:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:03:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:03:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:03:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:03:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:03:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:03:08', tmtdew=9.4, humidity=52.48, cloud=0.0, wind=25.62, temperature=12.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:03:06.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:03:31.320 [DEBUG] [Thread-154126] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:31.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:03:31.414 [DEBUG] [Thread-154129] [transport.py] [_log()] starting thread (client mode): 0x2e3c2da0
2025-09-29T11:03:31.414 [DEBUG] [Thread-154129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:31.429 [DEBUG] [Thread-154129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:03:31.430 [INFO] [Thread-154129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:31.438 [DEBUG] [Thread-154129] [transport.py] [_log()] Compression: none
2025-09-29T11:03:31.439 [DEBUG] [Thread-154129] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:31.495 [DEBUG] [Thread-154129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:31.496 [DEBUG] [Thread-154129] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:31.496 [DEBUG] [Thread-154129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:03:31.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:03:31.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:31.552 [DEBUG] [Thread-154129] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:31.552 [DEBUG] [Thread-154129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:31.552 [DEBUG] [Thread-154129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:31.552 [DEBUG] [Thread-154129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:03:31.552 [DEBUG] [Thread-154129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:31.571 [INFO] [Thread-154129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:31.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:03:31.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:32.512 [DEBUG] [Thread-154129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:32.512 [DEBUG] [Thread-154129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:32.560 [DEBUG] [Thread-154129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:32.560 [DEBUG] [Thread-154129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:32.569 [DEBUG] [Thread-154129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:32.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:32.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:03:32.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:03:32.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:32.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:32.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:32.604 [DEBUG] [Thread-154129] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:32.690 [DEBUG] [Thread-154131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:03:34.774 [DEBUG] [Thread-154132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:03:35.175 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:03:35.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:03:42.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:03:42.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:03:42.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:03:43.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 3, 40), 9.39, 52.61, 0.0, 21.49, 11.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:03:43.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:03:40
2025-09-29T11:03:43.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:03:43.459 [DEBUG] [Thread-154133] [transport.py] [_log()] starting thread (client mode): 0x2b96df60
2025-09-29T11:03:43.460 [DEBUG] [Thread-154133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:43.479 [DEBUG] [Thread-154133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:03:43.480 [INFO] [Thread-154133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:03:43.483 [DEBUG] [Thread-154133] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:43.483 [DEBUG] [Thread-154133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:03:43.483 [DEBUG] [Thread-154133] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:43.483 [DEBUG] [Thread-154133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:43.483 [DEBUG] [Thread-154133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] Compression: none
2025-09-29T11:03:43.484 [DEBUG] [Thread-154133] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:43.501 [DEBUG] [Thread-154133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:43.501 [DEBUG] [Thread-154133] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:43.502 [DEBUG] [Thread-154133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:03:43.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:03:43.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:43.504 [DEBUG] [Thread-154133] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:43.504 [DEBUG] [Thread-154133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:43.504 [DEBUG] [Thread-154133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:43.504 [DEBUG] [Thread-154133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:03:43.504 [DEBUG] [Thread-154133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:43.529 [INFO] [Thread-154133] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:43.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:44.381 [DEBUG] [Thread-154133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:44.382 [DEBUG] [Thread-154133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:44.382 [DEBUG] [Thread-154133] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:03:44.422 [DEBUG] [Thread-154133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:44.422 [DEBUG] [Thread-154133] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:44.425 [DEBUG] [Thread-154133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:44.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:44.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:03:44.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:03:44.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:03:44.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:44.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:03:44.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:44.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:03:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.377156 -999.00  +12.00  13.31     58   +4.00 1 1 1 1 1   888    0 9.51 65.59 ----- 13.1 13.3 150.4 19.3 20.1 -24.5 18.7 -23.6 18.1 -24.6 19.2 -25.3
2025-09-29T11:03:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:03:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:03:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.377156
2025-09-29T11:03:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:03:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:03:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:03:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:03:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:03:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:03:40', tmtdew=9.39, humidity=52.61, cloud=0.0, wind=21.49, temperature=11.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:03:06.278', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:03:44.454 [DEBUG] [Thread-154133] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:44.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:03:44.553 [DEBUG] [Thread-154136] [transport.py] [_log()] starting thread (client mode): 0x2b96f4f0
2025-09-29T11:03:44.553 [DEBUG] [Thread-154136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:44.567 [DEBUG] [Thread-154136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:03:44.567 [INFO] [Thread-154136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:03:44.574 [DEBUG] [Thread-154136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:44.574 [DEBUG] [Thread-154136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:03:44.574 [DEBUG] [Thread-154136] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:44.575 [DEBUG] [Thread-154136] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:44.576 [DEBUG] [Thread-154136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:44.576 [DEBUG] [Thread-154136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:44.576 [DEBUG] [Thread-154136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:44.576 [DEBUG] [Thread-154136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:44.576 [DEBUG] [Thread-154136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:44.576 [DEBUG] [Thread-154136] [transport.py] [_log()] Compression: none
2025-09-29T11:03:44.576 [DEBUG] [Thread-154136] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:44.636 [DEBUG] [Thread-154136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:44.637 [DEBUG] [Thread-154136] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:44.637 [DEBUG] [Thread-154136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:03:44.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:03:44.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:44.692 [DEBUG] [Thread-154136] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:44.692 [DEBUG] [Thread-154136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:44.693 [DEBUG] [Thread-154136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:44.693 [DEBUG] [Thread-154136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:03:44.693 [DEBUG] [Thread-154136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:44.711 [INFO] [Thread-154136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:44.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:03:44.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:45.698 [DEBUG] [Thread-154136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:45.699 [DEBUG] [Thread-154136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:45.746 [DEBUG] [Thread-154136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:45.746 [DEBUG] [Thread-154136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:45.755 [DEBUG] [Thread-154136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:45.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:45.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:03:45.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:03:45.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:45.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:45.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:45.789 [DEBUG] [Thread-154136] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:47.741 [DEBUG] [Thread-154138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:03:55.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:03:55.792 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:03:55.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:03:56.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 3, 40), 9.39, 52.61, 0.0, 21.49, 11.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:03:56.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:03:40
2025-09-29T11:03:56.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:03:56.640 [DEBUG] [Thread-154139] [transport.py] [_log()] starting thread (client mode): 0x28706c20
2025-09-29T11:03:56.640 [DEBUG] [Thread-154139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:56.659 [DEBUG] [Thread-154139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:03:56.659 [INFO] [Thread-154139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:03:56.661 [DEBUG] [Thread-154139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:56.661 [DEBUG] [Thread-154139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:03:56.661 [DEBUG] [Thread-154139] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] Compression: none
2025-09-29T11:03:56.662 [DEBUG] [Thread-154139] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:56.677 [DEBUG] [Thread-154139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:56.678 [DEBUG] [Thread-154139] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:56.678 [DEBUG] [Thread-154139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:03:56.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:03:56.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:56.683 [DEBUG] [Thread-154139] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:56.683 [DEBUG] [Thread-154139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:56.683 [DEBUG] [Thread-154139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:56.683 [DEBUG] [Thread-154139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:03:56.683 [DEBUG] [Thread-154139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:56.702 [INFO] [Thread-154139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:56.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:57.401 [DEBUG] [Thread-154139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:57.402 [DEBUG] [Thread-154139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:57.402 [DEBUG] [Thread-154139] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:03:57.442 [DEBUG] [Thread-154139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:57.443 [DEBUG] [Thread-154139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:57.445 [DEBUG] [Thread-154139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:57.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:57.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:03:57.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:03:57.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:03:57.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:57.465 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:03:57.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:57.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:57.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:03:57.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.377503 -999.00  +12.40  16.73     57   +4.10 1 1 1 1 1   888    0 9.58 64.15 ----- 14.8 16.7 156.3 27.7 20.1 -24.3 18.8 -24.3 18.2 -23.9 19.3 -24.6
2025-09-29T11:03:57.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:03:57.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:03:57.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.377503
2025-09-29T11:03:57.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:03:57.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:03:57.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:03:57.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:03:57.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:03:57.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:03:40', tmtdew=9.39, humidity=52.61, cloud=0.0, wind=21.49, temperature=11.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:03:36.259', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:03:57.468 [DEBUG] [Thread-154139] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:03:57.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:03:57.562 [DEBUG] [Thread-154142] [transport.py] [_log()] starting thread (client mode): 0x28704ac0
2025-09-29T11:03:57.562 [DEBUG] [Thread-154142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:03:57.577 [DEBUG] [Thread-154142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:03:57.577 [INFO] [Thread-154142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:03:57.584 [DEBUG] [Thread-154142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] client lang: <none>
2025-09-29T11:03:57.585 [DEBUG] [Thread-154142] [transport.py] [_log()] server lang: <none>
2025-09-29T11:03:57.586 [DEBUG] [Thread-154142] [transport.py] [_log()] kex follows: False
2025-09-29T11:03:57.586 [DEBUG] [Thread-154142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:03:57.586 [DEBUG] [Thread-154142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:03:57.586 [DEBUG] [Thread-154142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:03:57.586 [DEBUG] [Thread-154142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:03:57.586 [DEBUG] [Thread-154142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:03:57.586 [DEBUG] [Thread-154142] [transport.py] [_log()] Compression: none
2025-09-29T11:03:57.586 [DEBUG] [Thread-154142] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:03:57.645 [DEBUG] [Thread-154142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:03:57.645 [DEBUG] [Thread-154142] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:03:57.646 [DEBUG] [Thread-154142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:03:57.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:03:57.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:03:57.701 [DEBUG] [Thread-154142] [transport.py] [_log()] userauth is OK
2025-09-29T11:03:57.701 [DEBUG] [Thread-154142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:03:57.701 [DEBUG] [Thread-154142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:03:57.701 [DEBUG] [Thread-154142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:03:57.701 [DEBUG] [Thread-154142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:03:57.720 [INFO] [Thread-154142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:03:57.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:03:57.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:03:58.639 [DEBUG] [Thread-154142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:03:58.639 [DEBUG] [Thread-154142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:03:58.687 [DEBUG] [Thread-154142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:03:58.687 [DEBUG] [Thread-154142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:03:58.696 [DEBUG] [Thread-154142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:03:58.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:03:58.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:03:58.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:03:58.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:03:58.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:03:58.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:03:58.733 [DEBUG] [Thread-154142] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:04:02.787 [DEBUG] [Thread-154144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:04:08.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:04:08.736 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:04:08.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:04:09.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 3, 40), 9.39, 52.61, 0.0, 21.49, 11.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:04:09.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:03:40
2025-09-29T11:04:09.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:04:09.579 [DEBUG] [Thread-154145] [transport.py] [_log()] starting thread (client mode): 0x287072b0
2025-09-29T11:04:09.579 [DEBUG] [Thread-154145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:04:09.598 [DEBUG] [Thread-154145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:04:09.598 [INFO] [Thread-154145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:04:09.601 [DEBUG] [Thread-154145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] client lang: <none>
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] server lang: <none>
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] kex follows: False
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] Compression: none
2025-09-29T11:04:09.602 [DEBUG] [Thread-154145] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:04:09.618 [DEBUG] [Thread-154145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:04:09.619 [DEBUG] [Thread-154145] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:04:09.619 [DEBUG] [Thread-154145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:04:09.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:04:09.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:04:09.621 [DEBUG] [Thread-154145] [transport.py] [_log()] userauth is OK
2025-09-29T11:04:09.621 [DEBUG] [Thread-154145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:04:09.621 [DEBUG] [Thread-154145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:04:09.622 [DEBUG] [Thread-154145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:04:09.622 [DEBUG] [Thread-154145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:04:09.639 [INFO] [Thread-154145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:04:09.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:04:10.290 [DEBUG] [Thread-154145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:04:10.290 [DEBUG] [Thread-154145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:04:10.290 [DEBUG] [Thread-154145] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:04:10.331 [DEBUG] [Thread-154145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:04:10.331 [DEBUG] [Thread-154145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:04:10.333 [DEBUG] [Thread-154145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:04:10.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:04:10.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:04:10.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:04:10.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:04:10.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:04:10.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:04:10.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:04:10.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:04:10.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:04:10.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.377503 -999.00  +12.40  16.73     57   +4.10 1 1 1 1 1   888    0 9.58 64.15 ----- 14.8 16.7 156.3 27.7 20.1 -24.3 18.8 -24.3 18.2 -23.9 19.3 -24.6
2025-09-29T11:04:10.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:04:10.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:04:10.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.377503
2025-09-29T11:04:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:04:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:04:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:04:10.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:04:10.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:04:10.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:03:40', tmtdew=9.39, humidity=52.61, cloud=0.0, wind=21.49, temperature=11.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:03:36.259', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:04:10.358 [DEBUG] [Thread-154145] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:04:10.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:04:10.455 [DEBUG] [Thread-154148] [transport.py] [_log()] starting thread (client mode): 0x28707430
2025-09-29T11:04:10.456 [DEBUG] [Thread-154148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:04:10.470 [DEBUG] [Thread-154148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:04:10.471 [INFO] [Thread-154148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:04:10.478 [DEBUG] [Thread-154148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:04:10.478 [DEBUG] [Thread-154148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] client lang: <none>
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] server lang: <none>
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] kex follows: False
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:04:10.479 [DEBUG] [Thread-154148] [transport.py] [_log()] Compression: none
2025-09-29T11:04:10.480 [DEBUG] [Thread-154148] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:04:10.537 [DEBUG] [Thread-154148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:04:10.538 [DEBUG] [Thread-154148] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:04:10.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:04:10.538 [DEBUG] [Thread-154148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:04:10.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:04:10.593 [DEBUG] [Thread-154148] [transport.py] [_log()] userauth is OK
2025-09-29T11:04:10.593 [DEBUG] [Thread-154148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:04:10.593 [DEBUG] [Thread-154148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:04:10.593 [DEBUG] [Thread-154148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:04:10.593 [DEBUG] [Thread-154148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:04:10.611 [INFO] [Thread-154148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:04:10.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:04:10.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:04:11.570 [DEBUG] [Thread-154148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:04:11.570 [DEBUG] [Thread-154148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:04:11.617 [DEBUG] [Thread-154148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:04:11.618 [DEBUG] [Thread-154148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:04:11.627 [DEBUG] [Thread-154148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:04:11.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:04:11.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:04:11.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:04:11.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:04:11.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:04:11.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:04:11.661 [DEBUG] [Thread-154148] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:04:17.827 [DEBUG] [Thread-154150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:04:21.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:04:21.664 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:04:21.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:04:22.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 4, 12), 9.35, 52.8, 0.0, 23.13, 11.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:04:22.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:04:12
2025-09-29T11:04:22.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:04:22.487 [DEBUG] [Thread-154151] [transport.py] [_log()] starting thread (client mode): 0x287055d0
2025-09-29T11:04:22.487 [DEBUG] [Thread-154151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:04:22.508 [DEBUG] [Thread-154151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:04:22.508 [INFO] [Thread-154151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:04:22.511 [DEBUG] [Thread-154151] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:04:22.511 [DEBUG] [Thread-154151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:04:22.511 [DEBUG] [Thread-154151] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:04:22.511 [DEBUG] [Thread-154151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:22.511 [DEBUG] [Thread-154151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] client lang: <none>
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] server lang: <none>
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] kex follows: False
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:04:22.512 [DEBUG] [Thread-154151] [transport.py] [_log()] Compression: none
2025-09-29T11:04:22.513 [DEBUG] [Thread-154151] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:04:22.530 [DEBUG] [Thread-154151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:04:22.530 [DEBUG] [Thread-154151] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:04:22.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:04:22.531 [DEBUG] [Thread-154151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:04:22.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:04:22.533 [DEBUG] [Thread-154151] [transport.py] [_log()] userauth is OK
2025-09-29T11:04:22.534 [DEBUG] [Thread-154151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:04:22.534 [DEBUG] [Thread-154151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:04:22.534 [DEBUG] [Thread-154151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:04:22.534 [DEBUG] [Thread-154151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:04:22.558 [INFO] [Thread-154151] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:04:22.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:04:23.390 [DEBUG] [Thread-154151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:04:23.390 [DEBUG] [Thread-154151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:04:23.390 [DEBUG] [Thread-154151] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:04:23.432 [DEBUG] [Thread-154151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:04:23.432 [DEBUG] [Thread-154151] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:04:23.435 [DEBUG] [Thread-154151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:04:23.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:04:23.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:04:23.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:04:23.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:04:23.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:04:23.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:04:23.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:04:23.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:04:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:04:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.377503 -999.00  +12.40  16.73     57   +4.10 1 1 1 1 1   888    0 9.58 64.15 ----- 14.8 16.7 156.3 27.7 20.1 -24.3 18.8 -24.3 18.2 -23.9 19.3 -24.6
2025-09-29T11:04:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:04:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:04:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.377503
2025-09-29T11:04:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:04:23.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:04:23.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:04:23.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:04:23.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:04:23.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:04:12', tmtdew=9.35, humidity=52.8, cloud=0.0, wind=23.13, temperature=11.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:03:36.259', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:04:23.460 [DEBUG] [Thread-154151] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:04:23.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:04:23.556 [DEBUG] [Thread-154154] [transport.py] [_log()] starting thread (client mode): 0x28706560
2025-09-29T11:04:23.556 [DEBUG] [Thread-154154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:04:23.571 [DEBUG] [Thread-154154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:04:23.571 [INFO] [Thread-154154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:04:23.578 [DEBUG] [Thread-154154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] client lang: <none>
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] server lang: <none>
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] kex follows: False
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] Compression: none
2025-09-29T11:04:23.579 [DEBUG] [Thread-154154] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:04:23.639 [DEBUG] [Thread-154154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:04:23.639 [DEBUG] [Thread-154154] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:04:23.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:04:23.640 [DEBUG] [Thread-154154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:04:23.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:04:23.698 [DEBUG] [Thread-154154] [transport.py] [_log()] userauth is OK
2025-09-29T11:04:23.699 [DEBUG] [Thread-154154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:04:23.699 [DEBUG] [Thread-154154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:04:23.699 [DEBUG] [Thread-154154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:04:23.699 [DEBUG] [Thread-154154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:04:23.718 [INFO] [Thread-154154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:04:23.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:04:23.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:04:24.671 [DEBUG] [Thread-154154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:04:24.672 [DEBUG] [Thread-154154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:04:24.719 [DEBUG] [Thread-154154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:04:24.719 [DEBUG] [Thread-154154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:04:24.728 [DEBUG] [Thread-154154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:04:24.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:04:24.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:04:24.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:04:24.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:04:24.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:04:24.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:04:24.763 [DEBUG] [Thread-154154] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:04:32.858 [DEBUG] [Thread-154156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:04:34.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:04:34.766 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:04:34.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:04:34.825 [DEBUG] [Thread-154157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:04:35.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:04:35.329 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:04:35.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 4, 12), 9.35, 52.8, 0.0, 23.13, 11.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:04:35.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:04:12
2025-09-29T11:04:35.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:04:35.605 [DEBUG] [Thread-154158] [transport.py] [_log()] starting thread (client mode): 0x2e34a830
2025-09-29T11:04:35.605 [DEBUG] [Thread-154158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:04:35.625 [DEBUG] [Thread-154158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:04:35.625 [INFO] [Thread-154158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:04:35.628 [DEBUG] [Thread-154158] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] client lang: <none>
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] server lang: <none>
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] kex follows: False
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] Compression: none
2025-09-29T11:04:35.629 [DEBUG] [Thread-154158] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:04:35.645 [DEBUG] [Thread-154158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:04:35.645 [DEBUG] [Thread-154158] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:04:35.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:04:35.646 [DEBUG] [Thread-154158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:04:35.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:04:35.648 [DEBUG] [Thread-154158] [transport.py] [_log()] userauth is OK
2025-09-29T11:04:35.648 [DEBUG] [Thread-154158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:04:35.648 [DEBUG] [Thread-154158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:04:35.648 [DEBUG] [Thread-154158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:04:35.648 [DEBUG] [Thread-154158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:04:35.672 [INFO] [Thread-154158] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:04:35.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:04:36.309 [DEBUG] [Thread-154158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:04:36.310 [DEBUG] [Thread-154158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:04:36.310 [DEBUG] [Thread-154158] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:04:36.350 [DEBUG] [Thread-154158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:04:36.351 [DEBUG] [Thread-154158] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:04:36.353 [DEBUG] [Thread-154158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:04:36.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:04:36.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:04:36.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:04:36.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:04:36.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:04:36.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:04:36.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:04:36.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:04:36.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:04:36.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.377850 -999.00  +12.60  19.61     56   +4.10 1 1 1 1 1   888    0 9.50 63.08 ----- 23.6 19.6 141.0 25.5 20.2 -25.1 18.9 -26.1 18.2 -24.6 19.4 -25.5
2025-09-29T11:04:36.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:04:36.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:04:36.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.377850
2025-09-29T11:04:36.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:04:36.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:04:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:04:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:04:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:04:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:04:12', tmtdew=9.35, humidity=52.8, cloud=0.0, wind=23.13, temperature=11.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:04:06.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:04:36.379 [DEBUG] [Thread-154158] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:04:36.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:04:36.477 [DEBUG] [Thread-154161] [transport.py] [_log()] starting thread (client mode): 0x2b96df60
2025-09-29T11:04:36.477 [DEBUG] [Thread-154161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:04:36.492 [DEBUG] [Thread-154161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:04:36.492 [INFO] [Thread-154161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:04:36.499 [DEBUG] [Thread-154161] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] client lang: <none>
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] server lang: <none>
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] kex follows: False
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:04:36.500 [DEBUG] [Thread-154161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:04:36.501 [DEBUG] [Thread-154161] [transport.py] [_log()] Compression: none
2025-09-29T11:04:36.501 [DEBUG] [Thread-154161] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:04:36.557 [DEBUG] [Thread-154161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:04:36.557 [DEBUG] [Thread-154161] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:04:36.558 [DEBUG] [Thread-154161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:04:36.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:04:36.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:04:36.614 [DEBUG] [Thread-154161] [transport.py] [_log()] userauth is OK
2025-09-29T11:04:36.614 [DEBUG] [Thread-154161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:04:36.614 [DEBUG] [Thread-154161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:04:36.614 [DEBUG] [Thread-154161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:04:36.614 [DEBUG] [Thread-154161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:04:36.633 [INFO] [Thread-154161] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:04:36.633 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:04:36.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:04:37.603 [DEBUG] [Thread-154161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:04:37.604 [DEBUG] [Thread-154161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:04:37.651 [DEBUG] [Thread-154161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:04:37.651 [DEBUG] [Thread-154161] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:04:37.660 [DEBUG] [Thread-154161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:04:37.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:04:37.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:04:37.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:04:37.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:04:37.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:04:37.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:04:37.695 [DEBUG] [Thread-154161] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:04:47.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:04:47.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:04:47.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:04:47.902 [DEBUG] [Thread-154163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:04:48.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 4, 44), 9.74, 51.28, 0.0, 29.01, 11.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:04:48.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:04:44
2025-09-29T11:04:48.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:04:48.516 [DEBUG] [Thread-154164] [transport.py] [_log()] starting thread (client mode): 0x2b96fc70
2025-09-29T11:04:48.516 [DEBUG] [Thread-154164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:04:48.536 [DEBUG] [Thread-154164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:04:48.536 [INFO] [Thread-154164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] client lang: <none>
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] server lang: <none>
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] kex follows: False
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] Compression: none
2025-09-29T11:04:48.540 [DEBUG] [Thread-154164] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:04:48.560 [DEBUG] [Thread-154164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:04:48.560 [DEBUG] [Thread-154164] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:04:48.561 [DEBUG] [Thread-154164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:04:48.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:04:48.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:04:48.563 [DEBUG] [Thread-154164] [transport.py] [_log()] userauth is OK
2025-09-29T11:04:48.563 [DEBUG] [Thread-154164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:04:48.563 [DEBUG] [Thread-154164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:04:48.563 [DEBUG] [Thread-154164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:04:48.563 [DEBUG] [Thread-154164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:04:48.598 [INFO] [Thread-154164] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:04:48.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:04:49.232 [DEBUG] [Thread-154164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:04:49.233 [DEBUG] [Thread-154164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:04:49.233 [DEBUG] [Thread-154164] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:04:49.273 [DEBUG] [Thread-154164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:04:49.274 [DEBUG] [Thread-154164] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:04:49.276 [DEBUG] [Thread-154164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:04:49.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:04:49.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:04:49.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:04:49.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:04:49.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:04:49.292 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:04:49.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:04:49.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:04:49.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:04:49.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.377850 -999.00  +12.60  19.61     56   +4.10 1 1 1 1 1   888    0 9.50 63.08 ----- 23.6 19.6 141.0 25.5 20.2 -25.1 18.9 -26.1 18.2 -24.6 19.4 -25.5
2025-09-29T11:04:49.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:04:49.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:04:49.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.377850
2025-09-29T11:04:49.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:04:49.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:04:49.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:04:49.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:04:49.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:04:49.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:04:44', tmtdew=9.74, humidity=51.28, cloud=0.0, wind=29.01, temperature=11.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:04:06.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:04:49.294 [DEBUG] [Thread-154164] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:04:49.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:04:49.389 [DEBUG] [Thread-154167] [transport.py] [_log()] starting thread (client mode): 0x2e34b2e0
2025-09-29T11:04:49.390 [DEBUG] [Thread-154167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:04:49.404 [DEBUG] [Thread-154167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:04:49.404 [INFO] [Thread-154167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:04:49.412 [DEBUG] [Thread-154167] [transport.py] [_log()] client lang: <none>
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] server lang: <none>
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] kex follows: False
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] Compression: none
2025-09-29T11:04:49.413 [DEBUG] [Thread-154167] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:04:49.474 [DEBUG] [Thread-154167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:04:49.474 [DEBUG] [Thread-154167] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:04:49.475 [DEBUG] [Thread-154167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:04:49.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:04:49.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:04:49.530 [DEBUG] [Thread-154167] [transport.py] [_log()] userauth is OK
2025-09-29T11:04:49.530 [DEBUG] [Thread-154167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:04:49.531 [DEBUG] [Thread-154167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:04:49.531 [DEBUG] [Thread-154167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:04:49.531 [DEBUG] [Thread-154167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:04:49.549 [INFO] [Thread-154167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:04:49.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:04:49.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:04:50.482 [DEBUG] [Thread-154167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:04:50.483 [DEBUG] [Thread-154167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:04:50.530 [DEBUG] [Thread-154167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:04:50.530 [DEBUG] [Thread-154167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:04:50.539 [DEBUG] [Thread-154167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:04:50.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:04:50.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:04:50.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:04:50.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:04:50.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:04:50.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:04:50.573 [DEBUG] [Thread-154167] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:00.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:05:00.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:05:00.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:05:01.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 4, 44), 9.74, 51.28, 0.0, 29.01, 11.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:05:01.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:04:44
2025-09-29T11:05:01.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:05:01.433 [DEBUG] [Thread-154169] [transport.py] [_log()] starting thread (client mode): 0x287042b0
2025-09-29T11:05:01.433 [DEBUG] [Thread-154169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:01.453 [DEBUG] [Thread-154169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:05:01.453 [INFO] [Thread-154169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:05:01.456 [DEBUG] [Thread-154169] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:01.456 [DEBUG] [Thread-154169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:05:01.456 [DEBUG] [Thread-154169] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:01.456 [DEBUG] [Thread-154169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:01.456 [DEBUG] [Thread-154169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:01.456 [DEBUG] [Thread-154169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:01.456 [DEBUG] [Thread-154169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] Compression: none
2025-09-29T11:05:01.457 [DEBUG] [Thread-154169] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:01.474 [DEBUG] [Thread-154169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:01.475 [DEBUG] [Thread-154169] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:01.475 [DEBUG] [Thread-154169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:05:01.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:05:01.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:01.477 [DEBUG] [Thread-154169] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:01.477 [DEBUG] [Thread-154169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:01.477 [DEBUG] [Thread-154169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:01.477 [DEBUG] [Thread-154169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:05:01.477 [DEBUG] [Thread-154169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:01.497 [INFO] [Thread-154169] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:01.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:02.105 [DEBUG] [Thread-154169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:02.105 [DEBUG] [Thread-154169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:02.106 [DEBUG] [Thread-154169] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:05:02.146 [DEBUG] [Thread-154169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:02.146 [DEBUG] [Thread-154169] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:02.148 [DEBUG] [Thread-154169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:02.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:02.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:05:02.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:05:02.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:05:02.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:02.162 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:05:02.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:02.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:02.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:05:02.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.377850 -999.00  +12.60  19.61     56   +4.10 1 1 1 1 1   888    0 9.50 63.08 ----- 23.6 19.6 141.0 25.5 20.2 -25.1 18.9 -26.1 18.2 -24.6 19.4 -25.5
2025-09-29T11:05:02.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:05:02.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:05:02.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.377850
2025-09-29T11:05:02.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:05:02.165 [DEBUG] [Thread-154169] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:02.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:05:02.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:05:02.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:05:02.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:05:02.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:04:44', tmtdew=9.74, humidity=51.28, cloud=0.0, wind=29.01, temperature=11.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:04:06.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:05:02.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:05:02.267 [DEBUG] [Thread-154172] [transport.py] [_log()] starting thread (client mode): 0x28704e80
2025-09-29T11:05:02.267 [DEBUG] [Thread-154172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:02.281 [DEBUG] [Thread-154172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:05:02.281 [INFO] [Thread-154172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:05:02.288 [DEBUG] [Thread-154172] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] Compression: none
2025-09-29T11:05:02.289 [DEBUG] [Thread-154172] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:02.346 [DEBUG] [Thread-154172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:02.347 [DEBUG] [Thread-154172] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:02.347 [DEBUG] [Thread-154172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:05:02.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:05:02.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:02.402 [DEBUG] [Thread-154172] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:02.402 [DEBUG] [Thread-154172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:02.403 [DEBUG] [Thread-154172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:02.403 [DEBUG] [Thread-154172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:05:02.403 [DEBUG] [Thread-154172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:02.425 [INFO] [Thread-154172] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:02.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:05:02.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:02.945 [DEBUG] [Thread-154174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:05:03.417 [DEBUG] [Thread-154172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:03.418 [DEBUG] [Thread-154172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:03.468 [DEBUG] [Thread-154172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:03.469 [DEBUG] [Thread-154172] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:03.478 [DEBUG] [Thread-154172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:03.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:03.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:05:03.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:05:03.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:03.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:03.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:03.515 [DEBUG] [Thread-154172] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:13.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:05:13.518 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:05:13.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:05:14.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 4, 44), 9.74, 51.28, 0.0, 29.01, 11.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:05:14.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:04:44
2025-09-29T11:05:14.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:05:14.333 [DEBUG] [Thread-154175] [transport.py] [_log()] starting thread (client mode): 0x2e34acb0
2025-09-29T11:05:14.333 [DEBUG] [Thread-154175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:14.355 [DEBUG] [Thread-154175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:05:14.355 [INFO] [Thread-154175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:05:14.358 [DEBUG] [Thread-154175] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:14.358 [DEBUG] [Thread-154175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:05:14.358 [DEBUG] [Thread-154175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:14.359 [DEBUG] [Thread-154175] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:14.360 [DEBUG] [Thread-154175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:14.360 [DEBUG] [Thread-154175] [transport.py] [_log()] Compression: none
2025-09-29T11:05:14.360 [DEBUG] [Thread-154175] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:14.379 [DEBUG] [Thread-154175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:14.380 [DEBUG] [Thread-154175] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:14.380 [DEBUG] [Thread-154175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:05:14.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:05:14.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:14.383 [DEBUG] [Thread-154175] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:14.383 [DEBUG] [Thread-154175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:14.383 [DEBUG] [Thread-154175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:14.383 [DEBUG] [Thread-154175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:05:14.383 [DEBUG] [Thread-154175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:14.400 [INFO] [Thread-154175] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:14.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:15.058 [DEBUG] [Thread-154175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:15.058 [DEBUG] [Thread-154175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:15.058 [DEBUG] [Thread-154175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:05:15.099 [DEBUG] [Thread-154175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:15.100 [DEBUG] [Thread-154175] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:15.103 [DEBUG] [Thread-154175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:15.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:15.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:05:15.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:05:15.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:05:15.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:15.143 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:05:15.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:15.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:15.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:05:15.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.378197 -999.00  +12.30  22.07     56   +3.80 1 1 1 1 1   888    0 9.51 61.50 ----- 19.0 22.1 145.6 28.6 20.1 -26.6 18.9 -26.1 18.1 -26.1 19.2 -25.9
2025-09-29T11:05:15.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:05:15.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:05:15.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.378197
2025-09-29T11:05:15.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:05:15.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:05:15.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:05:15.145 [DEBUG] [Thread-154175] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:15.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:05:15.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:05:15.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:04:44', tmtdew=9.74, humidity=51.28, cloud=0.0, wind=29.01, temperature=11.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:04:36.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:05:15.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:05:15.241 [DEBUG] [Thread-154178] [transport.py] [_log()] starting thread (client mode): 0x28707fa0
2025-09-29T11:05:15.241 [DEBUG] [Thread-154178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:15.256 [DEBUG] [Thread-154178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:05:15.256 [INFO] [Thread-154178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:05:15.263 [DEBUG] [Thread-154178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:15.264 [DEBUG] [Thread-154178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:05:15.264 [DEBUG] [Thread-154178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:15.264 [DEBUG] [Thread-154178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:15.264 [DEBUG] [Thread-154178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:15.264 [DEBUG] [Thread-154178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:15.264 [DEBUG] [Thread-154178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] Compression: none
2025-09-29T11:05:15.265 [DEBUG] [Thread-154178] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:15.323 [DEBUG] [Thread-154178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:15.323 [DEBUG] [Thread-154178] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:15.324 [DEBUG] [Thread-154178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:05:15.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:05:15.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:15.380 [DEBUG] [Thread-154178] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:15.381 [DEBUG] [Thread-154178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:15.381 [DEBUG] [Thread-154178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:15.381 [DEBUG] [Thread-154178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:05:15.381 [DEBUG] [Thread-154178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:15.400 [INFO] [Thread-154178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:15.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:05:15.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:16.344 [DEBUG] [Thread-154178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:16.344 [DEBUG] [Thread-154178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:16.393 [DEBUG] [Thread-154178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:16.393 [DEBUG] [Thread-154178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:16.401 [DEBUG] [Thread-154178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:16.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:16.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:05:16.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:05:16.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:16.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:16.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:16.435 [DEBUG] [Thread-154178] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:17.987 [DEBUG] [Thread-154180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:05:26.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:05:26.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:05:26.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:05:27.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 5, 16), 9.66, 51.56, 0.0, 25.16, 11.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:05:27.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:05:16
2025-09-29T11:05:27.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:05:27.271 [DEBUG] [Thread-154181] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-29T11:05:27.271 [DEBUG] [Thread-154181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:27.294 [DEBUG] [Thread-154181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:05:27.294 [INFO] [Thread-154181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:27.298 [DEBUG] [Thread-154181] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] Compression: none
2025-09-29T11:05:27.299 [DEBUG] [Thread-154181] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:27.320 [DEBUG] [Thread-154181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:27.320 [DEBUG] [Thread-154181] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:27.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:05:27.321 [DEBUG] [Thread-154181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:05:27.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:27.323 [DEBUG] [Thread-154181] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:27.323 [DEBUG] [Thread-154181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:27.324 [DEBUG] [Thread-154181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:27.324 [DEBUG] [Thread-154181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:05:27.324 [DEBUG] [Thread-154181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:27.346 [INFO] [Thread-154181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:27.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:27.994 [DEBUG] [Thread-154181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:27.994 [DEBUG] [Thread-154181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:27.994 [DEBUG] [Thread-154181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:05:28.035 [DEBUG] [Thread-154181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:28.036 [DEBUG] [Thread-154181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:28.038 [DEBUG] [Thread-154181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:28.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:28.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:05:28.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:05:28.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:05:28.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:28.063 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:05:28.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:28.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:28.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:05:28.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.378197 -999.00  +12.30  22.07     56   +3.80 1 1 1 1 1   888    0 9.51 61.50 ----- 19.0 22.1 145.6 28.6 20.1 -26.6 18.9 -26.1 18.1 -26.1 19.2 -25.9
2025-09-29T11:05:28.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:05:28.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:05:28.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.378197
2025-09-29T11:05:28.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:05:28.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:05:28.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:05:28.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:05:28.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:05:28.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:05:16', tmtdew=9.66, humidity=51.56, cloud=0.0, wind=25.16, temperature=11.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:04:36.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:05:28.066 [DEBUG] [Thread-154181] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:28.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:05:28.161 [DEBUG] [Thread-154184] [transport.py] [_log()] starting thread (client mode): 0x2b96e7d0
2025-09-29T11:05:28.161 [DEBUG] [Thread-154184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:28.176 [DEBUG] [Thread-154184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:05:28.176 [INFO] [Thread-154184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:05:28.183 [DEBUG] [Thread-154184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:28.184 [DEBUG] [Thread-154184] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] Compression: none
2025-09-29T11:05:28.185 [DEBUG] [Thread-154184] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:28.245 [DEBUG] [Thread-154184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:28.245 [DEBUG] [Thread-154184] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:28.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:05:28.246 [DEBUG] [Thread-154184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:05:28.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:28.303 [DEBUG] [Thread-154184] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:28.304 [DEBUG] [Thread-154184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:28.304 [DEBUG] [Thread-154184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:28.304 [DEBUG] [Thread-154184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:05:28.304 [DEBUG] [Thread-154184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:28.323 [INFO] [Thread-154184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:28.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:05:28.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:29.329 [DEBUG] [Thread-154184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:29.329 [DEBUG] [Thread-154184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:29.377 [DEBUG] [Thread-154184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:29.377 [DEBUG] [Thread-154184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:29.386 [DEBUG] [Thread-154184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:29.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:29.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:05:29.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:05:29.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:29.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:29.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:29.421 [DEBUG] [Thread-154184] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:33.018 [DEBUG] [Thread-154186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:05:34.876 [DEBUG] [Thread-154187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:05:35.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:05:35.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:05:39.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:05:39.424 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:05:39.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:05:39.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 5, 16), 9.66, 51.56, 0.0, 25.16, 11.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:05:39.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:05:16
2025-09-29T11:05:40.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:05:40.250 [DEBUG] [Thread-154188] [transport.py] [_log()] starting thread (client mode): 0x28704670
2025-09-29T11:05:40.250 [DEBUG] [Thread-154188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:40.270 [DEBUG] [Thread-154188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:05:40.270 [INFO] [Thread-154188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] Compression: none
2025-09-29T11:05:40.273 [DEBUG] [Thread-154188] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:40.285 [DEBUG] [Thread-154188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:40.285 [DEBUG] [Thread-154188] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:40.286 [DEBUG] [Thread-154188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:05:40.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:05:40.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:40.288 [DEBUG] [Thread-154188] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:40.288 [DEBUG] [Thread-154188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:40.288 [DEBUG] [Thread-154188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:40.288 [DEBUG] [Thread-154188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:05:40.288 [DEBUG] [Thread-154188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:40.312 [INFO] [Thread-154188] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:40.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:40.941 [DEBUG] [Thread-154188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:40.941 [DEBUG] [Thread-154188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:40.941 [DEBUG] [Thread-154188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:05:40.982 [DEBUG] [Thread-154188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:40.982 [DEBUG] [Thread-154188] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:40.986 [DEBUG] [Thread-154188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:40.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:40.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:05:40.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:05:41.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:05:41.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:41.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:05:41.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:41.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:41.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:05:41.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.378197 -999.00  +12.30  22.07     56   +3.80 1 1 1 1 1   888    0 9.51 61.50 ----- 19.0 22.1 145.6 28.6 20.1 -26.6 18.9 -26.1 18.1 -26.1 19.2 -25.9
2025-09-29T11:05:41.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:05:41.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:05:41.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.378197
2025-09-29T11:05:41.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:05:41.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:05:41.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:05:41.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:05:41.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:05:41.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:05:16', tmtdew=9.66, humidity=51.56, cloud=0.0, wind=25.16, temperature=11.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:04:36.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:05:41.012 [DEBUG] [Thread-154188] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:41.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:05:41.112 [DEBUG] [Thread-154191] [transport.py] [_log()] starting thread (client mode): 0x2e3c1b70
2025-09-29T11:05:41.112 [DEBUG] [Thread-154191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:41.128 [DEBUG] [Thread-154191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:05:41.128 [INFO] [Thread-154191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:05:41.135 [DEBUG] [Thread-154191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] Compression: none
2025-09-29T11:05:41.136 [DEBUG] [Thread-154191] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:41.196 [DEBUG] [Thread-154191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:41.196 [DEBUG] [Thread-154191] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:41.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:05:41.197 [DEBUG] [Thread-154191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:05:41.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:41.252 [DEBUG] [Thread-154191] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:41.252 [DEBUG] [Thread-154191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:41.252 [DEBUG] [Thread-154191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:41.252 [DEBUG] [Thread-154191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:05:41.252 [DEBUG] [Thread-154191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:41.272 [INFO] [Thread-154191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:41.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:05:41.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:42.217 [DEBUG] [Thread-154191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:42.218 [DEBUG] [Thread-154191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:42.265 [DEBUG] [Thread-154191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:42.265 [DEBUG] [Thread-154191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:42.274 [DEBUG] [Thread-154191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:42.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:42.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:05:42.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:05:42.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:42.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:42.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:42.310 [DEBUG] [Thread-154191] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:48.054 [DEBUG] [Thread-154193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:05:52.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:05:52.313 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:05:52.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:05:52.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 5, 48), 9.12, 53.54, 0.0, 19.53, 11.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:05:52.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:05:48
2025-09-29T11:05:52.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:05:53.146 [DEBUG] [Thread-154194] [transport.py] [_log()] starting thread (client mode): 0x2e3c34f0
2025-09-29T11:05:53.146 [DEBUG] [Thread-154194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:53.167 [DEBUG] [Thread-154194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:05:53.167 [INFO] [Thread-154194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:05:53.170 [DEBUG] [Thread-154194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:53.170 [DEBUG] [Thread-154194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:05:53.170 [DEBUG] [Thread-154194] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:53.170 [DEBUG] [Thread-154194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] Compression: none
2025-09-29T11:05:53.171 [DEBUG] [Thread-154194] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:53.188 [DEBUG] [Thread-154194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:53.188 [DEBUG] [Thread-154194] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:53.189 [DEBUG] [Thread-154194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:05:53.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:05:53.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:53.191 [DEBUG] [Thread-154194] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:53.191 [DEBUG] [Thread-154194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:53.191 [DEBUG] [Thread-154194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:53.191 [DEBUG] [Thread-154194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:05:53.191 [DEBUG] [Thread-154194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:53.204 [INFO] [Thread-154194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:53.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:53.851 [DEBUG] [Thread-154194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:53.851 [DEBUG] [Thread-154194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:53.852 [DEBUG] [Thread-154194] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:05:53.892 [DEBUG] [Thread-154194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:53.893 [DEBUG] [Thread-154194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:53.896 [DEBUG] [Thread-154194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:53.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:53.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:05:53.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:05:53.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:05:53.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:53.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:05:53.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:53.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:53.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:05:53.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.378892 -999.00  +11.80  17.27     57   +3.60 1 1 1 1 1   888    0 9.76 66.45 ----- 19.8 17.3 122.4 24.4 20.0 -26.4 18.8 -26.3 18.1 -25.4 19.1 -26.8
2025-09-29T11:05:53.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:05:53.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:05:53.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.378892
2025-09-29T11:05:53.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:05:53.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:05:53.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:05:53.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:05:53.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:05:53.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:05:48', tmtdew=9.12, humidity=53.54, cloud=0.0, wind=19.53, temperature=11.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:05:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:05:53.921 [DEBUG] [Thread-154194] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:05:54.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:05:54.015 [DEBUG] [Thread-154197] [transport.py] [_log()] starting thread (client mode): 0x287042e0
2025-09-29T11:05:54.015 [DEBUG] [Thread-154197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:05:54.030 [DEBUG] [Thread-154197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:05:54.030 [INFO] [Thread-154197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:05:54.037 [DEBUG] [Thread-154197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:05:54.037 [DEBUG] [Thread-154197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] client lang: <none>
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] server lang: <none>
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] kex follows: False
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] Compression: none
2025-09-29T11:05:54.038 [DEBUG] [Thread-154197] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:05:54.095 [DEBUG] [Thread-154197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:05:54.096 [DEBUG] [Thread-154197] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:05:54.096 [DEBUG] [Thread-154197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:05:54.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:05:54.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:05:54.153 [DEBUG] [Thread-154197] [transport.py] [_log()] userauth is OK
2025-09-29T11:05:54.153 [DEBUG] [Thread-154197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:05:54.153 [DEBUG] [Thread-154197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:05:54.153 [DEBUG] [Thread-154197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:05:54.153 [DEBUG] [Thread-154197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:05:54.172 [INFO] [Thread-154197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:05:54.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:05:54.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:05:55.116 [DEBUG] [Thread-154197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:05:55.117 [DEBUG] [Thread-154197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:05:55.164 [DEBUG] [Thread-154197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:05:55.164 [DEBUG] [Thread-154197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:05:55.173 [DEBUG] [Thread-154197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:05:55.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:05:55.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:05:55.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:05:55.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:05:55.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:05:55.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:05:55.206 [DEBUG] [Thread-154197] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:03.083 [DEBUG] [Thread-154199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:06:05.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:06:05.209 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:06:05.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:06:05.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 5, 48), 9.12, 53.54, 0.0, 19.53, 11.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:06:05.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:05:48
2025-09-29T11:06:05.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:06:06.046 [DEBUG] [Thread-154200] [transport.py] [_log()] starting thread (client mode): 0x28705360
2025-09-29T11:06:06.046 [DEBUG] [Thread-154200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:06.066 [DEBUG] [Thread-154200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:06:06.066 [INFO] [Thread-154200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:06:06.069 [DEBUG] [Thread-154200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:06.069 [DEBUG] [Thread-154200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:06:06.069 [DEBUG] [Thread-154200] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:06.069 [DEBUG] [Thread-154200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:06.069 [DEBUG] [Thread-154200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:06.069 [DEBUG] [Thread-154200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:06.069 [DEBUG] [Thread-154200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:06.069 [DEBUG] [Thread-154200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] Compression: none
2025-09-29T11:06:06.070 [DEBUG] [Thread-154200] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:06.089 [DEBUG] [Thread-154200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:06.090 [DEBUG] [Thread-154200] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:06.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:06:06.091 [DEBUG] [Thread-154200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:06:06.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:06.093 [DEBUG] [Thread-154200] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:06.093 [DEBUG] [Thread-154200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:06.094 [DEBUG] [Thread-154200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:06.094 [DEBUG] [Thread-154200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:06:06.094 [DEBUG] [Thread-154200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:06.109 [INFO] [Thread-154200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:06.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:06.756 [DEBUG] [Thread-154200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:06.756 [DEBUG] [Thread-154200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:06.756 [DEBUG] [Thread-154200] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:06:06.797 [DEBUG] [Thread-154200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:06.797 [DEBUG] [Thread-154200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:06.799 [DEBUG] [Thread-154200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:06.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:06.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:06:06.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:06:06.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:06:06.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:06.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:06:06.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:06.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:06.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:06:06.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.378892 -999.00  +11.80  17.27     57   +3.60 1 1 1 1 1   888    0 9.76 66.45 ----- 19.8 17.3 122.4 24.4 20.0 -26.4 18.8 -26.3 18.1 -25.4 19.1 -26.8
2025-09-29T11:06:06.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:06:06.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:06:06.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.378892
2025-09-29T11:06:06.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:06:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:06:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:06:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:06:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:06:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:05:48', tmtdew=9.12, humidity=53.54, cloud=0.0, wind=19.53, temperature=11.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:05:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:06:06.822 [DEBUG] [Thread-154200] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:06.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:06:06.914 [DEBUG] [Thread-154203] [transport.py] [_log()] starting thread (client mode): 0x2b9b8e50
2025-09-29T11:06:06.914 [DEBUG] [Thread-154203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:06.930 [DEBUG] [Thread-154203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:06:06.930 [INFO] [Thread-154203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:06:06.937 [DEBUG] [Thread-154203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:06.937 [DEBUG] [Thread-154203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:06:06.937 [DEBUG] [Thread-154203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:06.937 [DEBUG] [Thread-154203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:06.937 [DEBUG] [Thread-154203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] Compression: none
2025-09-29T11:06:06.938 [DEBUG] [Thread-154203] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:06.996 [DEBUG] [Thread-154203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:06.996 [DEBUG] [Thread-154203] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:06.997 [DEBUG] [Thread-154203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:06:06.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:06:06.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:07.064 [DEBUG] [Thread-154203] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:07.064 [DEBUG] [Thread-154203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:07.064 [DEBUG] [Thread-154203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:07.064 [DEBUG] [Thread-154203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:06:07.064 [DEBUG] [Thread-154203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:07.078 [INFO] [Thread-154203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:07.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:06:07.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:08.053 [DEBUG] [Thread-154203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:08.053 [DEBUG] [Thread-154203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:08.102 [DEBUG] [Thread-154203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:08.102 [DEBUG] [Thread-154203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:08.111 [DEBUG] [Thread-154203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:08.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:08.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:06:08.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:06:08.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:08.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:08.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:08.145 [DEBUG] [Thread-154203] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:18.129 [DEBUG] [Thread-154205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:06:18.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:06:18.148 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:06:18.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:06:18.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 5, 48), 9.12, 53.54, 0.0, 19.53, 11.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:06:18.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:05:48
2025-09-29T11:06:18.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:06:18.983 [DEBUG] [Thread-154206] [transport.py] [_log()] starting thread (client mode): 0x2e34b130
2025-09-29T11:06:18.983 [DEBUG] [Thread-154206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:19.001 [DEBUG] [Thread-154206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:06:19.001 [INFO] [Thread-154206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:19.003 [DEBUG] [Thread-154206] [transport.py] [_log()] Compression: none
2025-09-29T11:06:19.004 [DEBUG] [Thread-154206] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:19.012 [DEBUG] [Thread-154206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:19.013 [DEBUG] [Thread-154206] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:19.013 [DEBUG] [Thread-154206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:06:19.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:06:19.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:19.014 [DEBUG] [Thread-154206] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:19.014 [DEBUG] [Thread-154206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:19.014 [DEBUG] [Thread-154206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:19.014 [DEBUG] [Thread-154206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:06:19.015 [DEBUG] [Thread-154206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:19.033 [INFO] [Thread-154206] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:19.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:19.663 [DEBUG] [Thread-154206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:19.663 [DEBUG] [Thread-154206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:19.663 [DEBUG] [Thread-154206] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:06:19.704 [DEBUG] [Thread-154206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:19.704 [DEBUG] [Thread-154206] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:19.706 [DEBUG] [Thread-154206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:19.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:19.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:06:19.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:06:19.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:06:19.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:19.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:06:19.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.379239 -999.00  +11.90  20.64     57   +3.70 1 1 1 1 1   888    0 9.51 57.84 ----- 21.3 20.6 122.2 26.8 19.9 -25.7 18.8 -24.8 18.2 -25.8 19.2 -26.3
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.379239
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:06:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:06:19.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:05:48', tmtdew=9.12, humidity=53.54, cloud=0.0, wind=19.53, temperature=11.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:06:06.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:06:19.723 [DEBUG] [Thread-154206] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:19.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:06:19.805 [DEBUG] [Thread-154209] [transport.py] [_log()] starting thread (client mode): 0x2e34b610
2025-09-29T11:06:19.805 [DEBUG] [Thread-154209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:19.825 [DEBUG] [Thread-154209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:06:19.825 [INFO] [Thread-154209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:06:19.832 [DEBUG] [Thread-154209] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:19.832 [DEBUG] [Thread-154209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:06:19.832 [DEBUG] [Thread-154209] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] Compression: none
2025-09-29T11:06:19.833 [DEBUG] [Thread-154209] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:19.892 [DEBUG] [Thread-154209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:19.893 [DEBUG] [Thread-154209] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:19.893 [DEBUG] [Thread-154209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:06:19.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:06:19.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:19.949 [DEBUG] [Thread-154209] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:19.949 [DEBUG] [Thread-154209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:19.949 [DEBUG] [Thread-154209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:19.949 [DEBUG] [Thread-154209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:06:19.949 [DEBUG] [Thread-154209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:19.968 [INFO] [Thread-154209] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:19.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:06:19.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:20.902 [DEBUG] [Thread-154209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:20.902 [DEBUG] [Thread-154209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:20.950 [DEBUG] [Thread-154209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:20.950 [DEBUG] [Thread-154209] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:20.958 [DEBUG] [Thread-154209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:20.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:20.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:06:20.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:06:20.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:20.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:20.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:20.990 [DEBUG] [Thread-154209] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:30.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:06:30.993 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:06:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:06:31.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 6, 20), 9.14, 53.51, 0.0, 17.22, 11.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:06:31.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:06:20
2025-09-29T11:06:31.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:06:31.817 [DEBUG] [Thread-154211] [transport.py] [_log()] starting thread (client mode): 0x28705030
2025-09-29T11:06:31.817 [DEBUG] [Thread-154211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:31.837 [DEBUG] [Thread-154211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:06:31.837 [INFO] [Thread-154211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:31.840 [DEBUG] [Thread-154211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:31.841 [DEBUG] [Thread-154211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:31.841 [DEBUG] [Thread-154211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:31.841 [DEBUG] [Thread-154211] [transport.py] [_log()] Compression: none
2025-09-29T11:06:31.841 [DEBUG] [Thread-154211] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:31.858 [DEBUG] [Thread-154211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:31.859 [DEBUG] [Thread-154211] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:31.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:06:31.860 [DEBUG] [Thread-154211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:06:31.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:31.862 [DEBUG] [Thread-154211] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:31.862 [DEBUG] [Thread-154211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:31.862 [DEBUG] [Thread-154211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:31.863 [DEBUG] [Thread-154211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:06:31.863 [DEBUG] [Thread-154211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:31.882 [INFO] [Thread-154211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:31.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:32.510 [DEBUG] [Thread-154211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:32.510 [DEBUG] [Thread-154211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:32.511 [DEBUG] [Thread-154211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:06:32.551 [DEBUG] [Thread-154211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:32.551 [DEBUG] [Thread-154211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:32.554 [DEBUG] [Thread-154211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:32.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:32.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:06:32.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:06:32.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:06:32.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:32.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:06:32.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:32.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:06:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.379239 -999.00  +11.90  20.64     57   +3.70 1 1 1 1 1   888    0 9.51 57.84 ----- 21.3 20.6 122.2 26.8 19.9 -25.7 18.8 -24.8 18.2 -25.8 19.2 -26.3
2025-09-29T11:06:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:06:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:06:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.379239
2025-09-29T11:06:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:06:32.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:06:32.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:06:32.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:06:32.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:06:32.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:06:20', tmtdew=9.14, humidity=53.51, cloud=0.0, wind=17.22, temperature=11.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:06:06.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:06:32.579 [DEBUG] [Thread-154211] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:32.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:06:32.675 [DEBUG] [Thread-154214] [transport.py] [_log()] starting thread (client mode): 0x2e34ab90
2025-09-29T11:06:32.675 [DEBUG] [Thread-154214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:32.693 [DEBUG] [Thread-154214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:06:32.693 [INFO] [Thread-154214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:06:32.703 [DEBUG] [Thread-154214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:32.703 [DEBUG] [Thread-154214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:06:32.703 [DEBUG] [Thread-154214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:32.703 [DEBUG] [Thread-154214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:32.703 [DEBUG] [Thread-154214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:32.703 [DEBUG] [Thread-154214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:32.703 [DEBUG] [Thread-154214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] Compression: none
2025-09-29T11:06:32.704 [DEBUG] [Thread-154214] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:32.761 [DEBUG] [Thread-154214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:32.761 [DEBUG] [Thread-154214] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:32.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:06:32.762 [DEBUG] [Thread-154214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:06:32.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:32.817 [DEBUG] [Thread-154214] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:32.817 [DEBUG] [Thread-154214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:32.817 [DEBUG] [Thread-154214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:32.817 [DEBUG] [Thread-154214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:06:32.818 [DEBUG] [Thread-154214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:32.836 [INFO] [Thread-154214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:32.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:06:32.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:33.164 [DEBUG] [Thread-154216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:06:33.793 [DEBUG] [Thread-154214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:33.793 [DEBUG] [Thread-154214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:33.841 [DEBUG] [Thread-154214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:33.841 [DEBUG] [Thread-154214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:33.850 [DEBUG] [Thread-154214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:33.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:33.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:06:33.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:06:33.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:33.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:33.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:33.884 [DEBUG] [Thread-154214] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:34.932 [DEBUG] [Thread-154217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:06:35.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:06:35.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:06:43.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:06:43.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:06:43.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:06:44.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 6, 20), 9.14, 53.51, 0.0, 17.22, 11.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:06:44.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:06:20
2025-09-29T11:06:44.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:06:44.707 [DEBUG] [Thread-154218] [transport.py] [_log()] starting thread (client mode): 0x2b9bb1c0
2025-09-29T11:06:44.707 [DEBUG] [Thread-154218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:44.724 [DEBUG] [Thread-154218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:06:44.725 [INFO] [Thread-154218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:06:44.727 [DEBUG] [Thread-154218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:44.728 [DEBUG] [Thread-154218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:44.729 [DEBUG] [Thread-154218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:44.729 [DEBUG] [Thread-154218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:44.729 [DEBUG] [Thread-154218] [transport.py] [_log()] Compression: none
2025-09-29T11:06:44.729 [DEBUG] [Thread-154218] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:44.745 [DEBUG] [Thread-154218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:44.746 [DEBUG] [Thread-154218] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:44.747 [DEBUG] [Thread-154218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:06:44.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:06:44.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:44.749 [DEBUG] [Thread-154218] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:44.749 [DEBUG] [Thread-154218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:44.749 [DEBUG] [Thread-154218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:44.749 [DEBUG] [Thread-154218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:06:44.749 [DEBUG] [Thread-154218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:44.785 [INFO] [Thread-154218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:44.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:45.436 [DEBUG] [Thread-154218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:45.436 [DEBUG] [Thread-154218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:45.436 [DEBUG] [Thread-154218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:06:45.476 [DEBUG] [Thread-154218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:45.476 [DEBUG] [Thread-154218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:45.479 [DEBUG] [Thread-154218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:45.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:45.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:06:45.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:06:45.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:06:45.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:45.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:06:45.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:45.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:06:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.379239 -999.00  +11.90  20.64     57   +3.70 1 1 1 1 1   888    0 9.51 57.84 ----- 21.3 20.6 122.2 26.8 19.9 -25.7 18.8 -24.8 18.2 -25.8 19.2 -26.3
2025-09-29T11:06:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:06:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:06:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.379239
2025-09-29T11:06:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:06:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:06:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:06:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:06:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:06:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:06:20', tmtdew=9.14, humidity=53.51, cloud=0.0, wind=17.22, temperature=11.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:06:06.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:06:45.502 [DEBUG] [Thread-154218] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:45.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:06:45.601 [DEBUG] [Thread-154221] [transport.py] [_log()] starting thread (client mode): 0x2e38f940
2025-09-29T11:06:45.601 [DEBUG] [Thread-154221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:45.619 [DEBUG] [Thread-154221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:06:45.619 [INFO] [Thread-154221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:45.627 [DEBUG] [Thread-154221] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:45.628 [DEBUG] [Thread-154221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:45.628 [DEBUG] [Thread-154221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:45.628 [DEBUG] [Thread-154221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:45.628 [DEBUG] [Thread-154221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:45.628 [DEBUG] [Thread-154221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:45.628 [DEBUG] [Thread-154221] [transport.py] [_log()] Compression: none
2025-09-29T11:06:45.628 [DEBUG] [Thread-154221] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:45.686 [DEBUG] [Thread-154221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:45.686 [DEBUG] [Thread-154221] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:45.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:06:45.687 [DEBUG] [Thread-154221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:06:45.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:45.743 [DEBUG] [Thread-154221] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:45.744 [DEBUG] [Thread-154221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:45.744 [DEBUG] [Thread-154221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:45.744 [DEBUG] [Thread-154221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:06:45.744 [DEBUG] [Thread-154221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:45.765 [INFO] [Thread-154221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:45.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:06:45.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:46.763 [DEBUG] [Thread-154221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:46.763 [DEBUG] [Thread-154221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:46.812 [DEBUG] [Thread-154221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:46.812 [DEBUG] [Thread-154221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:46.821 [DEBUG] [Thread-154221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:46.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:46.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:06:46.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:06:46.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:46.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:46.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:46.856 [DEBUG] [Thread-154221] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:48.216 [DEBUG] [Thread-154223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:06:56.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:06:56.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:06:56.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:06:57.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 6, 51), 9.25, 53.0, 0.0, 24.97, 12.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:06:57.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:06:51
2025-09-29T11:06:57.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:06:57.687 [DEBUG] [Thread-154224] [transport.py] [_log()] starting thread (client mode): 0x28706a40
2025-09-29T11:06:57.687 [DEBUG] [Thread-154224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:06:57.708 [DEBUG] [Thread-154224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:06:57.708 [INFO] [Thread-154224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:06:57.711 [DEBUG] [Thread-154224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:06:57.711 [DEBUG] [Thread-154224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:06:57.711 [DEBUG] [Thread-154224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:06:57.711 [DEBUG] [Thread-154224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:57.711 [DEBUG] [Thread-154224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] client lang: <none>
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] server lang: <none>
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] kex follows: False
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] Compression: none
2025-09-29T11:06:57.712 [DEBUG] [Thread-154224] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:06:57.732 [DEBUG] [Thread-154224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:06:57.733 [DEBUG] [Thread-154224] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:06:57.734 [DEBUG] [Thread-154224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:06:57.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:06:57.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:06:57.736 [DEBUG] [Thread-154224] [transport.py] [_log()] userauth is OK
2025-09-29T11:06:57.737 [DEBUG] [Thread-154224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:06:57.737 [DEBUG] [Thread-154224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:06:57.737 [DEBUG] [Thread-154224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:06:57.737 [DEBUG] [Thread-154224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:06:57.760 [INFO] [Thread-154224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:06:57.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:06:58.423 [DEBUG] [Thread-154224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:06:58.423 [DEBUG] [Thread-154224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:06:58.423 [DEBUG] [Thread-154224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:06:58.464 [DEBUG] [Thread-154224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:06:58.464 [DEBUG] [Thread-154224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:06:58.466 [DEBUG] [Thread-154224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:06:58.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:06:58.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:06:58.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:06:58.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:06:58.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:06:58.489 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:06:58.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:06:58.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:06:58.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:06:58.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.379586 -999.00  +11.60  25.97     58   +3.60 1 1 1 1 1   888    0 9.52 56.41 ----- 21.2 26.0 116.2 30.2 19.8 -25.7 18.9 -25.4 18.2 -25.1 19.1 -26.2
2025-09-29T11:06:58.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:06:58.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:06:58.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.379586
2025-09-29T11:06:58.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:06:58.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:06:58.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:06:58.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:06:58.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:06:58.492 [DEBUG] [Thread-154224] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:06:58.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:06:51', tmtdew=9.25, humidity=53.0, cloud=0.0, wind=24.97, temperature=12.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:06:36.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:06:58.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:07:03.245 [DEBUG] [Thread-154227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:07:18.289 [DEBUG] [Thread-154228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:07:33.313 [DEBUG] [Thread-154229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:07:34.967 [DEBUG] [Thread-154230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:07:35.753 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:07:35.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:07:48.343 [DEBUG] [Thread-154231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:08:03.367 [DEBUG] [Thread-154232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:08:18.397 [DEBUG] [Thread-154233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:08:33.427 [DEBUG] [Thread-154234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:08:35.017 [DEBUG] [Thread-154235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:08:35.899 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:08:35.900 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:08:48.456 [DEBUG] [Thread-154236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:09:03.487 [DEBUG] [Thread-154237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:09:11.483 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:09:18.517 [DEBUG] [Thread-154238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:09:21.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:09:21.492 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:09:21.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:09:22.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 8, 59), 9.47, 52.61, 0.0, 22.89, 12.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:09:22.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:08:59
2025-09-29T11:09:22.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:09:22.399 [DEBUG] [Thread-154239] [transport.py] [_log()] starting thread (client mode): 0x287063b0
2025-09-29T11:09:22.399 [DEBUG] [Thread-154239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:09:22.419 [DEBUG] [Thread-154239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:09:22.419 [INFO] [Thread-154239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] client lang: <none>
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] server lang: <none>
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] kex follows: False
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] Compression: none
2025-09-29T11:09:22.422 [DEBUG] [Thread-154239] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:09:22.439 [DEBUG] [Thread-154239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:09:22.440 [DEBUG] [Thread-154239] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:09:22.440 [DEBUG] [Thread-154239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:09:22.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:09:22.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:09:22.484 [DEBUG] [Thread-154239] [transport.py] [_log()] userauth is OK
2025-09-29T11:09:22.484 [DEBUG] [Thread-154239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:09:22.484 [DEBUG] [Thread-154239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:09:22.484 [DEBUG] [Thread-154239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:09:22.484 [DEBUG] [Thread-154239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:09:22.499 [INFO] [Thread-154239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:09:22.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:09:23.216 [DEBUG] [Thread-154239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:09:23.216 [DEBUG] [Thread-154239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:09:23.216 [DEBUG] [Thread-154239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:09:23.257 [DEBUG] [Thread-154239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:09:23.257 [DEBUG] [Thread-154239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:09:23.260 [DEBUG] [Thread-154239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:09:23.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:09:23.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:09:23.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:09:23.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:09:23.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:09:23.281 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:09:23.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.380975 -999.00  +11.60  13.60     58   +3.70 1 1 1 1 1   888    0 9.07 43.10 ----- 18.0 13.6 160.0 28.0 19.8 -26.4 18.7 -25.5 18.1 -25.4 19.2 -26.7
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.380975
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:09:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:08:59', tmtdew=9.47, humidity=52.61, cloud=0.0, wind=22.89, temperature=12.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:08:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:09:23.282 [DEBUG] [Thread-154239] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:09:23.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:09:23.367 [DEBUG] [Thread-154242] [transport.py] [_log()] starting thread (client mode): 0x2e3c32e0
2025-09-29T11:09:23.367 [DEBUG] [Thread-154242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:09:23.383 [DEBUG] [Thread-154242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:09:23.383 [INFO] [Thread-154242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:09:23.392 [DEBUG] [Thread-154242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:09:23.392 [DEBUG] [Thread-154242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:09:23.392 [DEBUG] [Thread-154242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:09:23.392 [DEBUG] [Thread-154242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] client lang: <none>
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] server lang: <none>
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] kex follows: False
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] Compression: none
2025-09-29T11:09:23.393 [DEBUG] [Thread-154242] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:09:23.447 [DEBUG] [Thread-154242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:09:23.448 [DEBUG] [Thread-154242] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:09:23.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:09:23.448 [DEBUG] [Thread-154242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:09:23.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:09:23.504 [DEBUG] [Thread-154242] [transport.py] [_log()] userauth is OK
2025-09-29T11:09:23.504 [DEBUG] [Thread-154242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:09:23.504 [DEBUG] [Thread-154242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:09:23.504 [DEBUG] [Thread-154242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:09:23.504 [DEBUG] [Thread-154242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:09:23.519 [INFO] [Thread-154242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:09:23.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:09:23.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:09:24.466 [DEBUG] [Thread-154242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:09:24.467 [DEBUG] [Thread-154242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:09:24.515 [DEBUG] [Thread-154242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:09:24.515 [DEBUG] [Thread-154242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:09:24.523 [DEBUG] [Thread-154242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:09:24.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:09:24.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:09:24.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:09:24.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:09:24.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:09:24.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:09:24.555 [DEBUG] [Thread-154242] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:09:33.542 [DEBUG] [Thread-154244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:09:34.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:09:34.556 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:09:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:09:35.063 [DEBUG] [Thread-154245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:09:35.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 9, 31), 9.66, 51.92, 0.0, 20.31, 12.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:09:35.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:09:31
2025-09-29T11:09:35.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:09:35.418 [DEBUG] [Thread-154246] [transport.py] [_log()] starting thread (client mode): 0x2e3493c0
2025-09-29T11:09:35.418 [DEBUG] [Thread-154246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:09:35.441 [DEBUG] [Thread-154246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:09:35.441 [INFO] [Thread-154246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:09:35.444 [DEBUG] [Thread-154246] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] client lang: <none>
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] server lang: <none>
2025-09-29T11:09:35.445 [DEBUG] [Thread-154246] [transport.py] [_log()] kex follows: False
2025-09-29T11:09:35.446 [DEBUG] [Thread-154246] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:09:35.446 [DEBUG] [Thread-154246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:09:35.446 [DEBUG] [Thread-154246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:09:35.446 [DEBUG] [Thread-154246] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:09:35.446 [DEBUG] [Thread-154246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:09:35.446 [DEBUG] [Thread-154246] [transport.py] [_log()] Compression: none
2025-09-29T11:09:35.446 [DEBUG] [Thread-154246] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:09:35.464 [DEBUG] [Thread-154246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:09:35.465 [DEBUG] [Thread-154246] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:09:35.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:09:35.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:09:35.466 [DEBUG] [Thread-154246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:09:35.467 [DEBUG] [Thread-154246] [transport.py] [_log()] userauth is OK
2025-09-29T11:09:35.467 [DEBUG] [Thread-154246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:09:35.467 [DEBUG] [Thread-154246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:09:35.467 [DEBUG] [Thread-154246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:09:35.467 [DEBUG] [Thread-154246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:09:35.483 [INFO] [Thread-154246] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:09:35.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:09:36.041 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:09:36.042 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:09:36.146 [DEBUG] [Thread-154246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:09:36.147 [DEBUG] [Thread-154246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:09:36.147 [DEBUG] [Thread-154246] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:09:36.187 [DEBUG] [Thread-154246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:09:36.188 [DEBUG] [Thread-154246] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:09:36.191 [DEBUG] [Thread-154246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:09:36.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:09:36.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:09:36.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:09:36.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:09:36.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:09:36.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:09:36.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:09:36.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:09:36.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:09:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.380975 -999.00  +11.60  13.60     58   +3.70 1 1 1 1 1   888    0 9.07 43.10 ----- 18.0 13.6 160.0 28.0 19.8 -26.4 18.7 -25.5 18.1 -25.4 19.2 -26.7
2025-09-29T11:09:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:09:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:09:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.380975
2025-09-29T11:09:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:09:36.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:09:36.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:09:36.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:09:36.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:09:36.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:09:31', tmtdew=9.66, humidity=51.92, cloud=0.0, wind=20.31, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:08:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:09:36.216 [DEBUG] [Thread-154246] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:09:36.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:09:36.313 [DEBUG] [Thread-154249] [transport.py] [_log()] starting thread (client mode): 0x2b91dba0
2025-09-29T11:09:36.313 [DEBUG] [Thread-154249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:09:36.327 [DEBUG] [Thread-154249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:09:36.327 [INFO] [Thread-154249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] client lang: <none>
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] server lang: <none>
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] kex follows: False
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:09:36.335 [DEBUG] [Thread-154249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:09:36.336 [DEBUG] [Thread-154249] [transport.py] [_log()] Compression: none
2025-09-29T11:09:36.336 [DEBUG] [Thread-154249] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:09:36.392 [DEBUG] [Thread-154249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:09:36.392 [DEBUG] [Thread-154249] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:09:36.393 [DEBUG] [Thread-154249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:09:36.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:09:36.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:09:36.449 [DEBUG] [Thread-154249] [transport.py] [_log()] userauth is OK
2025-09-29T11:09:36.449 [DEBUG] [Thread-154249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:09:36.449 [DEBUG] [Thread-154249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:09:36.450 [DEBUG] [Thread-154249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:09:36.450 [DEBUG] [Thread-154249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:09:36.469 [INFO] [Thread-154249] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:09:36.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:09:36.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:09:37.512 [DEBUG] [Thread-154249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:09:37.512 [DEBUG] [Thread-154249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:09:37.560 [DEBUG] [Thread-154249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:09:37.560 [DEBUG] [Thread-154249] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:09:37.569 [DEBUG] [Thread-154249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:09:37.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:09:37.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:09:37.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:09:37.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:09:37.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:09:37.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:09:37.603 [DEBUG] [Thread-154249] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:09:47.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:09:47.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:09:47.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:09:48.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 9, 31), 9.66, 51.92, 0.0, 20.31, 12.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:09:48.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:09:31
2025-09-29T11:09:48.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:09:48.477 [DEBUG] [Thread-154251] [transport.py] [_log()] starting thread (client mode): 0x2b91eaa0
2025-09-29T11:09:48.477 [DEBUG] [Thread-154251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:09:48.492 [DEBUG] [Thread-154251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:09:48.492 [INFO] [Thread-154251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:09:48.495 [DEBUG] [Thread-154251] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:09:48.495 [DEBUG] [Thread-154251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:09:48.495 [DEBUG] [Thread-154251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:09:48.495 [DEBUG] [Thread-154251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] client lang: <none>
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] server lang: <none>
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] kex follows: False
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] Compression: none
2025-09-29T11:09:48.496 [DEBUG] [Thread-154251] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:09:48.514 [DEBUG] [Thread-154251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:09:48.515 [DEBUG] [Thread-154251] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:09:48.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:09:48.516 [DEBUG] [Thread-154251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:09:48.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:09:48.518 [DEBUG] [Thread-154251] [transport.py] [_log()] userauth is OK
2025-09-29T11:09:48.518 [DEBUG] [Thread-154251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:09:48.519 [DEBUG] [Thread-154251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:09:48.519 [DEBUG] [Thread-154251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:09:48.519 [DEBUG] [Thread-154251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:09:48.544 [INFO] [Thread-154251] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:09:48.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:09:48.578 [DEBUG] [Thread-154253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:09:49.219 [DEBUG] [Thread-154251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:09:49.219 [DEBUG] [Thread-154251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:09:49.219 [DEBUG] [Thread-154251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:09:49.260 [DEBUG] [Thread-154251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:09:49.261 [DEBUG] [Thread-154251] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:09:49.263 [DEBUG] [Thread-154251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:09:49.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:09:49.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:09:49.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:09:49.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:09:49.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:09:49.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:09:49.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:09:49.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:09:49.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:09:49.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.381669 -999.00  +11.90  17.84     58   +3.90 1 1 1 1 1   888    0 9.10 41.08 ----- 18.7 17.8 132.8 22.8 19.9 -25.1 18.7 -24.7 18.1 -24.8 19.2 -25.8
2025-09-29T11:09:49.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:09:49.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:09:49.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.381669
2025-09-29T11:09:49.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:09:49.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:09:49.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:09:49.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:09:49.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:09:49.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:09:31', tmtdew=9.66, humidity=51.92, cloud=0.0, wind=20.31, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:09:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:09:49.287 [DEBUG] [Thread-154251] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:09:49.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:09:49.383 [DEBUG] [Thread-154255] [transport.py] [_log()] starting thread (client mode): 0x2b9ba650
2025-09-29T11:09:49.383 [DEBUG] [Thread-154255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:09:49.401 [DEBUG] [Thread-154255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:09:49.402 [INFO] [Thread-154255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:09:49.409 [DEBUG] [Thread-154255] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:09:49.409 [DEBUG] [Thread-154255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:09:49.409 [DEBUG] [Thread-154255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:09:49.409 [DEBUG] [Thread-154255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:49.409 [DEBUG] [Thread-154255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:09:49.409 [DEBUG] [Thread-154255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] client lang: <none>
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] server lang: <none>
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] kex follows: False
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] Compression: none
2025-09-29T11:09:49.410 [DEBUG] [Thread-154255] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:09:49.469 [DEBUG] [Thread-154255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:09:49.470 [DEBUG] [Thread-154255] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:09:49.470 [DEBUG] [Thread-154255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:09:49.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:09:49.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:09:49.525 [DEBUG] [Thread-154255] [transport.py] [_log()] userauth is OK
2025-09-29T11:09:49.526 [DEBUG] [Thread-154255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:09:49.526 [DEBUG] [Thread-154255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:09:49.526 [DEBUG] [Thread-154255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:09:49.526 [DEBUG] [Thread-154255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:09:49.546 [INFO] [Thread-154255] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:09:49.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:09:49.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:09:50.524 [DEBUG] [Thread-154255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:09:50.524 [DEBUG] [Thread-154255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:09:50.572 [DEBUG] [Thread-154255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:09:50.572 [DEBUG] [Thread-154255] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:09:50.580 [DEBUG] [Thread-154255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:09:50.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:09:50.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:09:50.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:09:50.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:09:50.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:09:50.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:09:50.611 [DEBUG] [Thread-154255] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:00.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:10:00.613 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:10:00.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:10:01.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 9, 31), 9.66, 51.92, 0.0, 20.31, 12.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:10:01.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:09:31
2025-09-29T11:10:01.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:10:01.517 [DEBUG] [Thread-154257] [transport.py] [_log()] starting thread (client mode): 0x2e38f760
2025-09-29T11:10:01.517 [DEBUG] [Thread-154257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:01.537 [DEBUG] [Thread-154257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:10:01.537 [INFO] [Thread-154257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] Compression: none
2025-09-29T11:10:01.541 [DEBUG] [Thread-154257] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:01.557 [DEBUG] [Thread-154257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:01.558 [DEBUG] [Thread-154257] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:01.558 [DEBUG] [Thread-154257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:10:01.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:10:01.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:01.559 [DEBUG] [Thread-154257] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:01.559 [DEBUG] [Thread-154257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:01.559 [DEBUG] [Thread-154257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:01.559 [DEBUG] [Thread-154257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:10:01.559 [DEBUG] [Thread-154257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:01.570 [INFO] [Thread-154257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:01.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:02.173 [DEBUG] [Thread-154257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:02.173 [DEBUG] [Thread-154257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:02.173 [DEBUG] [Thread-154257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:10:02.214 [DEBUG] [Thread-154257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:02.214 [DEBUG] [Thread-154257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:02.216 [DEBUG] [Thread-154257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:02.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:02.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:10:02.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:10:02.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:10:02.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:02.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:10:02.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.381669 -999.00  +11.90  17.84     58   +3.90 1 1 1 1 1   888    0 9.10 41.08 ----- 18.7 17.8 132.8 22.8 19.9 -25.1 18.7 -24.7 18.1 -24.8 19.2 -25.8
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.381669
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:10:02.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:09:31', tmtdew=9.66, humidity=51.92, cloud=0.0, wind=20.31, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:09:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:10:02.234 [DEBUG] [Thread-154257] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:02.308 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:10:02.319 [DEBUG] [Thread-154260] [transport.py] [_log()] starting thread (client mode): 0x2b9b9e10
2025-09-29T11:10:02.319 [DEBUG] [Thread-154260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:02.333 [DEBUG] [Thread-154260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:10:02.333 [INFO] [Thread-154260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:02.340 [DEBUG] [Thread-154260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:02.341 [DEBUG] [Thread-154260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:02.341 [DEBUG] [Thread-154260] [transport.py] [_log()] Compression: none
2025-09-29T11:10:02.341 [DEBUG] [Thread-154260] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:02.396 [DEBUG] [Thread-154260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:02.396 [DEBUG] [Thread-154260] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:02.396 [DEBUG] [Thread-154260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:10:02.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:10:02.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:02.453 [DEBUG] [Thread-154260] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:02.453 [DEBUG] [Thread-154260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:02.453 [DEBUG] [Thread-154260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:02.453 [DEBUG] [Thread-154260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:10:02.453 [DEBUG] [Thread-154260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:02.467 [INFO] [Thread-154260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:02.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:10:02.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:03.439 [DEBUG] [Thread-154260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:03.439 [DEBUG] [Thread-154260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:03.488 [DEBUG] [Thread-154260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:03.488 [DEBUG] [Thread-154260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:03.497 [DEBUG] [Thread-154260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:03.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:03.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:10:03.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:10:03.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:03.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:03.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:03.532 [DEBUG] [Thread-154260] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:03.621 [DEBUG] [Thread-154262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:10:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:10:13.536 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:10:13.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:10:14.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 10, 3), 9.46, 52.6, 0.0, 21.09, 12.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:10:14.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:10:03
2025-09-29T11:10:14.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:10:14.399 [DEBUG] [Thread-154263] [transport.py] [_log()] starting thread (client mode): 0x2e3c25f0
2025-09-29T11:10:14.399 [DEBUG] [Thread-154263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:14.418 [DEBUG] [Thread-154263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:10:14.418 [INFO] [Thread-154263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:10:14.419 [DEBUG] [Thread-154263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:14.420 [DEBUG] [Thread-154263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:14.421 [DEBUG] [Thread-154263] [transport.py] [_log()] Compression: none
2025-09-29T11:10:14.421 [DEBUG] [Thread-154263] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:14.430 [DEBUG] [Thread-154263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:14.431 [DEBUG] [Thread-154263] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:14.432 [DEBUG] [Thread-154263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:10:14.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:10:14.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:14.434 [DEBUG] [Thread-154263] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:14.434 [DEBUG] [Thread-154263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:14.434 [DEBUG] [Thread-154263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:14.434 [DEBUG] [Thread-154263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:10:14.434 [DEBUG] [Thread-154263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:14.455 [INFO] [Thread-154263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:14.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:16.115 [DEBUG] [Thread-154263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:16.116 [DEBUG] [Thread-154263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:16.116 [DEBUG] [Thread-154263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:10:16.156 [DEBUG] [Thread-154263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:16.156 [DEBUG] [Thread-154263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:16.160 [DEBUG] [Thread-154263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:16.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:16.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:10:16.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:10:16.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:10:16.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:16.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:10:16.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:16.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:16.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:10:16.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.381669 -999.00  +11.90  17.84     58   +3.90 1 1 1 1 1   888    0 9.10 41.08 ----- 18.7 17.8 132.8 22.8 19.9 -25.1 18.7 -24.7 18.1 -24.8 19.2 -25.8
2025-09-29T11:10:16.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:10:16.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:10:16.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.381669
2025-09-29T11:10:16.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:10:16.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:10:16.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:10:16.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:10:16.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:10:16.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:10:03', tmtdew=9.46, humidity=52.6, cloud=0.0, wind=21.09, temperature=12.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:09:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:10:16.304 [DEBUG] [Thread-154263] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:16.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:10:16.401 [DEBUG] [Thread-154266] [transport.py] [_log()] starting thread (client mode): 0x2e38f3a0
2025-09-29T11:10:16.401 [DEBUG] [Thread-154266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:16.415 [DEBUG] [Thread-154266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:10:16.416 [INFO] [Thread-154266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:10:16.423 [DEBUG] [Thread-154266] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:16.423 [DEBUG] [Thread-154266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] Compression: none
2025-09-29T11:10:16.424 [DEBUG] [Thread-154266] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:16.481 [DEBUG] [Thread-154266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:16.481 [DEBUG] [Thread-154266] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:16.482 [DEBUG] [Thread-154266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:10:16.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:10:16.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:16.537 [DEBUG] [Thread-154266] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:16.538 [DEBUG] [Thread-154266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:16.538 [DEBUG] [Thread-154266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:16.538 [DEBUG] [Thread-154266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:10:16.538 [DEBUG] [Thread-154266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:16.558 [INFO] [Thread-154266] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:16.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:10:16.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:17.508 [DEBUG] [Thread-154266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:17.508 [DEBUG] [Thread-154266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:17.557 [DEBUG] [Thread-154266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:17.557 [DEBUG] [Thread-154266] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:17.566 [DEBUG] [Thread-154266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:17.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:17.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:10:17.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:10:17.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:17.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:17.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:17.605 [DEBUG] [Thread-154266] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:18.666 [DEBUG] [Thread-154268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:10:27.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:10:27.608 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:10:27.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:10:28.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 10, 3), 9.46, 52.6, 0.0, 21.09, 12.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:10:28.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:10:03
2025-09-29T11:10:28.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:10:28.479 [DEBUG] [Thread-154269] [transport.py] [_log()] starting thread (client mode): 0x28704e80
2025-09-29T11:10:28.479 [DEBUG] [Thread-154269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:28.499 [DEBUG] [Thread-154269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:10:28.499 [INFO] [Thread-154269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:10:28.502 [DEBUG] [Thread-154269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:28.502 [DEBUG] [Thread-154269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:10:28.502 [DEBUG] [Thread-154269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:28.502 [DEBUG] [Thread-154269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:28.502 [DEBUG] [Thread-154269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:28.502 [DEBUG] [Thread-154269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] Compression: none
2025-09-29T11:10:28.503 [DEBUG] [Thread-154269] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:28.519 [DEBUG] [Thread-154269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:28.519 [DEBUG] [Thread-154269] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:28.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:10:28.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:28.521 [DEBUG] [Thread-154269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:10:28.522 [DEBUG] [Thread-154269] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:28.522 [DEBUG] [Thread-154269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:28.522 [DEBUG] [Thread-154269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:28.522 [DEBUG] [Thread-154269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:10:28.522 [DEBUG] [Thread-154269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:28.537 [INFO] [Thread-154269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:28.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:29.144 [DEBUG] [Thread-154269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:29.145 [DEBUG] [Thread-154269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:29.145 [DEBUG] [Thread-154269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:10:29.185 [DEBUG] [Thread-154269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:29.185 [DEBUG] [Thread-154269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:29.188 [DEBUG] [Thread-154269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:29.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:29.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:10:29.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:10:29.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:10:29.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:29.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:10:29.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:29.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:29.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:10:29.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.382016 -999.00  +12.30  17.68     57   +4.10 1 1 1 1 1   888    0 8.96 36.54 ----- 16.6 17.7 132.4 23.0 19.9 -24.8 18.8 -24.0 18.2 -24.9 19.3 -25.5
2025-09-29T11:10:29.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:10:29.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:10:29.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.382016
2025-09-29T11:10:29.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:10:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:10:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:10:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:10:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:10:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:10:03', tmtdew=9.46, humidity=52.6, cloud=0.0, wind=21.09, temperature=12.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:10:06.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:10:29.212 [DEBUG] [Thread-154269] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:29.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:10:29.308 [DEBUG] [Thread-154272] [transport.py] [_log()] starting thread (client mode): 0x2b9b8640
2025-09-29T11:10:29.308 [DEBUG] [Thread-154272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:29.326 [DEBUG] [Thread-154272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:10:29.326 [INFO] [Thread-154272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:10:29.333 [DEBUG] [Thread-154272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:29.334 [DEBUG] [Thread-154272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:10:29.334 [DEBUG] [Thread-154272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:29.334 [DEBUG] [Thread-154272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:29.334 [DEBUG] [Thread-154272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:29.334 [DEBUG] [Thread-154272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:29.334 [DEBUG] [Thread-154272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:29.334 [DEBUG] [Thread-154272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:29.335 [DEBUG] [Thread-154272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:29.336 [DEBUG] [Thread-154272] [transport.py] [_log()] Compression: none
2025-09-29T11:10:29.336 [DEBUG] [Thread-154272] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:29.398 [DEBUG] [Thread-154272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:29.399 [DEBUG] [Thread-154272] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:29.399 [DEBUG] [Thread-154272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:10:29.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:10:29.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:29.457 [DEBUG] [Thread-154272] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:29.457 [DEBUG] [Thread-154272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:29.458 [DEBUG] [Thread-154272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:29.458 [DEBUG] [Thread-154272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:10:29.458 [DEBUG] [Thread-154272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:29.476 [INFO] [Thread-154272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:29.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:10:29.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:30.506 [DEBUG] [Thread-154272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:30.507 [DEBUG] [Thread-154272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:30.554 [DEBUG] [Thread-154272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:30.554 [DEBUG] [Thread-154272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:30.564 [DEBUG] [Thread-154272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:30.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:30.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:10:30.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:10:30.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:30.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:30.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:30.598 [DEBUG] [Thread-154272] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:33.706 [DEBUG] [Thread-154274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:10:35.117 [DEBUG] [Thread-154275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:10:36.183 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:10:36.184 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:10:40.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:10:40.597 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:10:40.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:10:41.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 10, 35), 9.77, 51.55, 0.0, 19.74, 12.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:10:41.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:10:35
2025-09-29T11:10:41.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:10:41.517 [DEBUG] [Thread-154276] [transport.py] [_log()] starting thread (client mode): 0x2b954e80
2025-09-29T11:10:41.517 [DEBUG] [Thread-154276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:41.537 [DEBUG] [Thread-154276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:10:41.537 [INFO] [Thread-154276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:10:41.538 [DEBUG] [Thread-154276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:41.538 [DEBUG] [Thread-154276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] Compression: none
2025-09-29T11:10:41.539 [DEBUG] [Thread-154276] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:41.547 [DEBUG] [Thread-154276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:41.547 [DEBUG] [Thread-154276] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:41.547 [DEBUG] [Thread-154276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:10:41.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:10:41.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:41.548 [DEBUG] [Thread-154276] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:41.548 [DEBUG] [Thread-154276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:41.548 [DEBUG] [Thread-154276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:41.548 [DEBUG] [Thread-154276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:10:41.548 [DEBUG] [Thread-154276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:41.565 [INFO] [Thread-154276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:41.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:43.133 [DEBUG] [Thread-154276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:43.133 [DEBUG] [Thread-154276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:43.134 [DEBUG] [Thread-154276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:10:43.174 [DEBUG] [Thread-154276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:43.174 [DEBUG] [Thread-154276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:43.177 [DEBUG] [Thread-154276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:43.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:43.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:10:43.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:10:43.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:10:43.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:43.200 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:10:43.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:43.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:43.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:10:43.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.382016 -999.00  +12.30  17.68     57   +4.10 1 1 1 1 1   888    0 8.96 36.54 ----- 16.6 17.7 132.4 23.0 19.9 -24.8 18.8 -24.0 18.2 -24.9 19.3 -25.5
2025-09-29T11:10:43.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:10:43.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:10:43.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.382016
2025-09-29T11:10:43.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:10:43.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:10:43.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:10:43.202 [DEBUG] [Thread-154276] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:43.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:10:43.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:10:43.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:10:35', tmtdew=9.77, humidity=51.55, cloud=0.0, wind=19.74, temperature=12.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:10:06.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:10:43.285 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:10:43.297 [DEBUG] [Thread-154279] [transport.py] [_log()] starting thread (client mode): 0x2b955570
2025-09-29T11:10:43.297 [DEBUG] [Thread-154279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:43.312 [DEBUG] [Thread-154279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:10:43.312 [INFO] [Thread-154279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:10:43.319 [DEBUG] [Thread-154279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:43.319 [DEBUG] [Thread-154279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:10:43.319 [DEBUG] [Thread-154279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] Compression: none
2025-09-29T11:10:43.320 [DEBUG] [Thread-154279] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:43.378 [DEBUG] [Thread-154279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:43.379 [DEBUG] [Thread-154279] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:43.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:10:43.380 [DEBUG] [Thread-154279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:10:43.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:43.434 [DEBUG] [Thread-154279] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:43.434 [DEBUG] [Thread-154279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:43.434 [DEBUG] [Thread-154279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:43.435 [DEBUG] [Thread-154279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:10:43.435 [DEBUG] [Thread-154279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:43.453 [INFO] [Thread-154279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:43.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:10:43.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:44.383 [DEBUG] [Thread-154279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:44.383 [DEBUG] [Thread-154279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:44.431 [DEBUG] [Thread-154279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:44.431 [DEBUG] [Thread-154279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:44.441 [DEBUG] [Thread-154279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:44.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:44.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:10:44.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:10:44.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:44.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:44.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:44.475 [DEBUG] [Thread-154279] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:48.743 [DEBUG] [Thread-154281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:10:54.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:10:54.478 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:10:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:10:55.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 10, 35), 9.77, 51.55, 0.0, 19.74, 12.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:10:55.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:10:35
2025-09-29T11:10:55.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:10:55.340 [DEBUG] [Thread-154282] [transport.py] [_log()] starting thread (client mode): 0x2b9c0a30
2025-09-29T11:10:55.340 [DEBUG] [Thread-154282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:55.360 [DEBUG] [Thread-154282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:10:55.360 [INFO] [Thread-154282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] Compression: none
2025-09-29T11:10:55.362 [DEBUG] [Thread-154282] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:55.380 [DEBUG] [Thread-154282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:55.380 [DEBUG] [Thread-154282] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:55.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:10:55.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:55.382 [DEBUG] [Thread-154282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:10:55.383 [DEBUG] [Thread-154282] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:55.383 [DEBUG] [Thread-154282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:55.383 [DEBUG] [Thread-154282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:55.383 [DEBUG] [Thread-154282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:10:55.383 [DEBUG] [Thread-154282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:55.401 [INFO] [Thread-154282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:55.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:56.050 [DEBUG] [Thread-154282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:56.050 [DEBUG] [Thread-154282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:56.051 [DEBUG] [Thread-154282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:10:56.091 [DEBUG] [Thread-154282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:56.091 [DEBUG] [Thread-154282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:56.094 [DEBUG] [Thread-154282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:56.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:56.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:10:56.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:10:56.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:10:56.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:56.109 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:10:56.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:56.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:56.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:10:56.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.382364 -999.00  +12.20  25.97     56   +3.80 1 1 1 1 1   888    0 8.82 35.58 ----- 24.5 26.0 156.2 31.0 19.9 -25.2 18.8 -24.3 18.2 -26.0 19.3 -25.6
2025-09-29T11:10:56.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:10:56.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:10:56.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.382364
2025-09-29T11:10:56.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:10:56.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:10:56.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:10:56.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:10:56.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:10:56.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:10:35', tmtdew=9.77, humidity=51.55, cloud=0.0, wind=19.74, temperature=12.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:10:36.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:10:56.112 [DEBUG] [Thread-154282] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:10:56.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:10:56.206 [DEBUG] [Thread-154285] [transport.py] [_log()] starting thread (client mode): 0x2b9c07f0
2025-09-29T11:10:56.206 [DEBUG] [Thread-154285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:10:56.225 [DEBUG] [Thread-154285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:10:56.225 [INFO] [Thread-154285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:10:56.233 [DEBUG] [Thread-154285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:10:56.233 [DEBUG] [Thread-154285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:10:56.233 [DEBUG] [Thread-154285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] client lang: <none>
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] server lang: <none>
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] kex follows: False
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] Compression: none
2025-09-29T11:10:56.234 [DEBUG] [Thread-154285] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:10:56.289 [DEBUG] [Thread-154285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:10:56.290 [DEBUG] [Thread-154285] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:10:56.290 [DEBUG] [Thread-154285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:10:56.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:10:56.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:10:56.346 [DEBUG] [Thread-154285] [transport.py] [_log()] userauth is OK
2025-09-29T11:10:56.347 [DEBUG] [Thread-154285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:10:56.347 [DEBUG] [Thread-154285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:10:56.347 [DEBUG] [Thread-154285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:10:56.347 [DEBUG] [Thread-154285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:10:56.367 [INFO] [Thread-154285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:10:56.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:10:56.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:10:57.305 [DEBUG] [Thread-154285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:10:57.305 [DEBUG] [Thread-154285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:10:57.353 [DEBUG] [Thread-154285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:10:57.353 [DEBUG] [Thread-154285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:10:57.362 [DEBUG] [Thread-154285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:10:57.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:10:57.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:10:57.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:10:57.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:10:57.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:10:57.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:10:57.397 [DEBUG] [Thread-154285] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:11:03.789 [DEBUG] [Thread-154287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:11:07.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:11:07.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:11:07.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:11:08.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 10, 35), 9.77, 51.55, 0.0, 19.74, 12.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:11:08.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:10:35
2025-09-29T11:11:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:11:08.317 [DEBUG] [Thread-154288] [transport.py] [_log()] starting thread (client mode): 0x2b956f80
2025-09-29T11:11:08.318 [DEBUG] [Thread-154288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:11:08.333 [DEBUG] [Thread-154288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:11:08.333 [INFO] [Thread-154288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] client lang: <none>
2025-09-29T11:11:08.336 [DEBUG] [Thread-154288] [transport.py] [_log()] server lang: <none>
2025-09-29T11:11:08.337 [DEBUG] [Thread-154288] [transport.py] [_log()] kex follows: False
2025-09-29T11:11:08.337 [DEBUG] [Thread-154288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:11:08.337 [DEBUG] [Thread-154288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:11:08.337 [DEBUG] [Thread-154288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:11:08.337 [DEBUG] [Thread-154288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:11:08.337 [DEBUG] [Thread-154288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:11:08.337 [DEBUG] [Thread-154288] [transport.py] [_log()] Compression: none
2025-09-29T11:11:08.337 [DEBUG] [Thread-154288] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:11:08.348 [DEBUG] [Thread-154288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:11:08.348 [DEBUG] [Thread-154288] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:11:08.348 [DEBUG] [Thread-154288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:11:08.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:11:08.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:11:08.349 [DEBUG] [Thread-154288] [transport.py] [_log()] userauth is OK
2025-09-29T11:11:08.349 [DEBUG] [Thread-154288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:11:08.349 [DEBUG] [Thread-154288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:11:08.349 [DEBUG] [Thread-154288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:11:08.349 [DEBUG] [Thread-154288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:11:08.364 [INFO] [Thread-154288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:11:08.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:11:09.166 [DEBUG] [Thread-154288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:11:09.166 [DEBUG] [Thread-154288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:11:09.166 [DEBUG] [Thread-154288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:11:09.207 [DEBUG] [Thread-154288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:11:09.207 [DEBUG] [Thread-154288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:11:09.209 [DEBUG] [Thread-154288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:11:09.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:11:09.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:11:09.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:11:09.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:11:09.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:11:09.226 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:11:09.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.382364 -999.00  +12.20  25.97     56   +3.80 1 1 1 1 1   888    0 8.82 35.58 ----- 24.5 26.0 156.2 31.0 19.9 -25.2 18.8 -24.3 18.2 -26.0 19.3 -25.6
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.382364
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:11:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:10:35', tmtdew=9.77, humidity=51.55, cloud=0.0, wind=19.74, temperature=12.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:10:36.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:11:09.227 [DEBUG] [Thread-154288] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:11:09.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:11:18.827 [DEBUG] [Thread-154291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:11:33.853 [DEBUG] [Thread-154292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:11:35.174 [DEBUG] [Thread-154293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:11:36.325 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:11:36.326 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:11:48.884 [DEBUG] [Thread-154294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:12:03.911 [DEBUG] [Thread-154295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:12:18.942 [DEBUG] [Thread-154296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:12:33.975 [DEBUG] [Thread-154297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:12:35.218 [DEBUG] [Thread-154298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:12:36.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:12:36.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:12:49.002 [DEBUG] [Thread-154299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:13:04.032 [DEBUG] [Thread-154300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:13:19.062 [DEBUG] [Thread-154301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:13:21.338 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:13:31.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:13:31.348 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:13:31.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:13:31.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 13, 14), 9.45, 52.08, 0.0, 26.26, 11.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:13:31.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:13:14
2025-09-29T11:13:32.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:13:32.233 [DEBUG] [Thread-154302] [transport.py] [_log()] starting thread (client mode): 0x2b9c00a0
2025-09-29T11:13:32.233 [DEBUG] [Thread-154302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:13:32.253 [DEBUG] [Thread-154302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:13:32.253 [INFO] [Thread-154302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] client lang: <none>
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] server lang: <none>
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] kex follows: False
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:13:32.256 [DEBUG] [Thread-154302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:13:32.257 [DEBUG] [Thread-154302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:13:32.257 [DEBUG] [Thread-154302] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:13:32.257 [DEBUG] [Thread-154302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:13:32.257 [DEBUG] [Thread-154302] [transport.py] [_log()] Compression: none
2025-09-29T11:13:32.257 [DEBUG] [Thread-154302] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:13:32.274 [DEBUG] [Thread-154302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:13:32.274 [DEBUG] [Thread-154302] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:13:32.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:13:32.275 [DEBUG] [Thread-154302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:13:32.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:13:32.277 [DEBUG] [Thread-154302] [transport.py] [_log()] userauth is OK
2025-09-29T11:13:32.277 [DEBUG] [Thread-154302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:13:32.277 [DEBUG] [Thread-154302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:13:32.277 [DEBUG] [Thread-154302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:13:32.277 [DEBUG] [Thread-154302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:13:32.300 [INFO] [Thread-154302] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:13:32.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:13:32.930 [DEBUG] [Thread-154302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:13:32.930 [DEBUG] [Thread-154302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:13:32.930 [DEBUG] [Thread-154302] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:13:32.971 [DEBUG] [Thread-154302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:13:32.971 [DEBUG] [Thread-154302] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:13:32.974 [DEBUG] [Thread-154302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:13:32.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:13:32.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:13:32.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:13:32.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:13:32.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:13:32.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:13:32.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:13:32.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:13:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:13:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.383753 -999.00  +12.00  24.27     56   +3.60 1 1 1 1 1   888    0 9.19 40.59 ----- 21.9 24.3 164.4 26.9 19.9 -26.5 18.7 -24.2 18.2 -25.9 19.3 -25.4
2025-09-29T11:13:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:13:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:13:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.383753
2025-09-29T11:13:32.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:13:32.995 [DEBUG] [Thread-154302] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:13:32.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:13:32.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:13:32.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:13:32.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:13:32.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:13:14', tmtdew=9.45, humidity=52.08, cloud=0.0, wind=26.26, temperature=11.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:12:36.259', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:13:33.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:13:33.091 [DEBUG] [Thread-154305] [transport.py] [_log()] starting thread (client mode): 0x2b9bb880
2025-09-29T11:13:33.091 [DEBUG] [Thread-154305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:13:33.107 [DEBUG] [Thread-154305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:13:33.107 [INFO] [Thread-154305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:13:33.114 [DEBUG] [Thread-154305] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:13:33.114 [DEBUG] [Thread-154305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:13:33.114 [DEBUG] [Thread-154305] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] client lang: <none>
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] server lang: <none>
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] kex follows: False
2025-09-29T11:13:33.115 [DEBUG] [Thread-154305] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:13:33.116 [DEBUG] [Thread-154305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:13:33.116 [DEBUG] [Thread-154305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:13:33.116 [DEBUG] [Thread-154305] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:13:33.116 [DEBUG] [Thread-154305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:13:33.116 [DEBUG] [Thread-154305] [transport.py] [_log()] Compression: none
2025-09-29T11:13:33.116 [DEBUG] [Thread-154305] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:13:33.172 [DEBUG] [Thread-154305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:13:33.173 [DEBUG] [Thread-154305] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:13:33.173 [DEBUG] [Thread-154305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:13:33.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:13:33.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:13:33.228 [DEBUG] [Thread-154305] [transport.py] [_log()] userauth is OK
2025-09-29T11:13:33.228 [DEBUG] [Thread-154305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:13:33.228 [DEBUG] [Thread-154305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:13:33.228 [DEBUG] [Thread-154305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:13:33.229 [DEBUG] [Thread-154305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:13:33.247 [INFO] [Thread-154305] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:13:33.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:13:33.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:13:34.093 [DEBUG] [Thread-154307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:13:34.196 [DEBUG] [Thread-154305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:13:34.197 [DEBUG] [Thread-154305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:13:34.244 [DEBUG] [Thread-154305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:13:34.244 [DEBUG] [Thread-154305] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:13:34.252 [DEBUG] [Thread-154305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:13:34.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:13:34.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:13:34.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:13:34.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:13:34.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:13:34.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:13:34.286 [DEBUG] [Thread-154305] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:13:35.277 [DEBUG] [Thread-154308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:13:36.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:13:36.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:13:44.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:13:44.289 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:13:44.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:13:44.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 13, 14), 9.45, 52.08, 0.0, 26.26, 11.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:13:44.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:13:14
2025-09-29T11:13:45.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:13:45.158 [DEBUG] [Thread-154309] [transport.py] [_log()] starting thread (client mode): 0x2b954c40
2025-09-29T11:13:45.158 [DEBUG] [Thread-154309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:13:45.179 [DEBUG] [Thread-154309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:13:45.179 [INFO] [Thread-154309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:13:45.182 [DEBUG] [Thread-154309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] client lang: <none>
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] server lang: <none>
2025-09-29T11:13:45.183 [DEBUG] [Thread-154309] [transport.py] [_log()] kex follows: False
2025-09-29T11:13:45.184 [DEBUG] [Thread-154309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:13:45.184 [DEBUG] [Thread-154309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:13:45.184 [DEBUG] [Thread-154309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:13:45.184 [DEBUG] [Thread-154309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:13:45.184 [DEBUG] [Thread-154309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:13:45.184 [DEBUG] [Thread-154309] [transport.py] [_log()] Compression: none
2025-09-29T11:13:45.184 [DEBUG] [Thread-154309] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:13:45.200 [DEBUG] [Thread-154309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:13:45.200 [DEBUG] [Thread-154309] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:13:45.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:13:45.201 [DEBUG] [Thread-154309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:13:45.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:13:45.203 [DEBUG] [Thread-154309] [transport.py] [_log()] userauth is OK
2025-09-29T11:13:45.203 [DEBUG] [Thread-154309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:13:45.203 [DEBUG] [Thread-154309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:13:45.204 [DEBUG] [Thread-154309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:13:45.204 [DEBUG] [Thread-154309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:13:45.227 [INFO] [Thread-154309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:13:45.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:13:45.944 [DEBUG] [Thread-154309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:13:45.944 [DEBUG] [Thread-154309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:13:45.944 [DEBUG] [Thread-154309] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:13:45.985 [DEBUG] [Thread-154309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:13:45.985 [DEBUG] [Thread-154309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:13:45.988 [DEBUG] [Thread-154309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:13:46.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:13:46.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:13:46.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:13:46.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:13:46.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:13:46.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:13:46.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:13:46.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:13:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:13:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.384447 -999.00  +11.80  16.32     57   +3.80 1 1 1 1 1   888    0 9.07 39.65 ----- 16.1 16.3 140.9 19.8 19.9 -24.5 18.6 -24.1 18.2 -23.7 19.4 -25.3
2025-09-29T11:13:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:13:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:13:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.384447
2025-09-29T11:13:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:13:46.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:13:46.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:13:46.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:13:46.010 [DEBUG] [Thread-154309] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:13:46.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:13:46.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:13:14', tmtdew=9.45, humidity=52.08, cloud=0.0, wind=26.26, temperature=11.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:13:36.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:13:46.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:13:46.108 [DEBUG] [Thread-154312] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d10
2025-09-29T11:13:46.108 [DEBUG] [Thread-154312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:13:46.123 [DEBUG] [Thread-154312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:13:46.123 [INFO] [Thread-154312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] client lang: <none>
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] server lang: <none>
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] kex follows: False
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:13:46.131 [DEBUG] [Thread-154312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:13:46.132 [DEBUG] [Thread-154312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:13:46.132 [DEBUG] [Thread-154312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:13:46.132 [DEBUG] [Thread-154312] [transport.py] [_log()] Compression: none
2025-09-29T11:13:46.132 [DEBUG] [Thread-154312] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:13:46.188 [DEBUG] [Thread-154312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:13:46.189 [DEBUG] [Thread-154312] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:13:46.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:13:46.190 [DEBUG] [Thread-154312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:13:46.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:13:46.249 [DEBUG] [Thread-154312] [transport.py] [_log()] userauth is OK
2025-09-29T11:13:46.249 [DEBUG] [Thread-154312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:13:46.249 [DEBUG] [Thread-154312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:13:46.249 [DEBUG] [Thread-154312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:13:46.249 [DEBUG] [Thread-154312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:13:46.268 [INFO] [Thread-154312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:13:46.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:13:46.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:13:47.238 [DEBUG] [Thread-154312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:13:47.238 [DEBUG] [Thread-154312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:13:47.286 [DEBUG] [Thread-154312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:13:47.286 [DEBUG] [Thread-154312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:13:47.294 [DEBUG] [Thread-154312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:13:47.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:13:47.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:13:47.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:13:47.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:13:47.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:13:47.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:13:47.336 [DEBUG] [Thread-154312] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:13:49.136 [DEBUG] [Thread-154314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:13:57.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:13:57.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:13:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:13:57.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 13, 46), 9.21, 53.49, 0.0, 18.92, 11.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:13:57.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:13:46
2025-09-29T11:13:58.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:13:58.197 [DEBUG] [Thread-154315] [transport.py] [_log()] starting thread (client mode): 0x2b9c1750
2025-09-29T11:13:58.197 [DEBUG] [Thread-154315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:13:58.220 [DEBUG] [Thread-154315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:13:58.220 [INFO] [Thread-154315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] client lang: <none>
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] server lang: <none>
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] kex follows: False
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] Compression: none
2025-09-29T11:13:58.224 [DEBUG] [Thread-154315] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:13:58.242 [DEBUG] [Thread-154315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:13:58.242 [DEBUG] [Thread-154315] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:13:58.243 [DEBUG] [Thread-154315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:13:58.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:13:58.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:13:58.245 [DEBUG] [Thread-154315] [transport.py] [_log()] userauth is OK
2025-09-29T11:13:58.245 [DEBUG] [Thread-154315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:13:58.245 [DEBUG] [Thread-154315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:13:58.245 [DEBUG] [Thread-154315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:13:58.245 [DEBUG] [Thread-154315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:13:58.268 [INFO] [Thread-154315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:13:58.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:13:58.909 [DEBUG] [Thread-154315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:13:58.909 [DEBUG] [Thread-154315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:13:58.909 [DEBUG] [Thread-154315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:13:58.950 [DEBUG] [Thread-154315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:13:58.951 [DEBUG] [Thread-154315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:13:58.954 [DEBUG] [Thread-154315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:13:58.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:13:58.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:13:58.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:13:58.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:13:58.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:13:58.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:13:58.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:13:58.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:13:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:13:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.384447 -999.00  +11.80  16.32     57   +3.80 1 1 1 1 1   888    0 9.07 39.65 ----- 16.1 16.3 140.9 19.8 19.9 -24.5 18.6 -24.1 18.2 -23.7 19.4 -25.3
2025-09-29T11:13:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:13:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:13:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.384447
2025-09-29T11:13:58.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:13:58.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:13:58.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:13:58.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:13:58.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:13:58.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:13:46', tmtdew=9.21, humidity=53.49, cloud=0.0, wind=18.92, temperature=11.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:13:36.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:13:58.981 [DEBUG] [Thread-154315] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:13:59.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:13:59.076 [DEBUG] [Thread-154318] [transport.py] [_log()] starting thread (client mode): 0x2e38c730
2025-09-29T11:13:59.076 [DEBUG] [Thread-154318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:13:59.091 [DEBUG] [Thread-154318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:13:59.091 [INFO] [Thread-154318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] client lang: <none>
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] server lang: <none>
2025-09-29T11:13:59.098 [DEBUG] [Thread-154318] [transport.py] [_log()] kex follows: False
2025-09-29T11:13:59.099 [DEBUG] [Thread-154318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:13:59.099 [DEBUG] [Thread-154318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:13:59.099 [DEBUG] [Thread-154318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:13:59.099 [DEBUG] [Thread-154318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:13:59.099 [DEBUG] [Thread-154318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:13:59.099 [DEBUG] [Thread-154318] [transport.py] [_log()] Compression: none
2025-09-29T11:13:59.099 [DEBUG] [Thread-154318] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:13:59.155 [DEBUG] [Thread-154318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:13:59.155 [DEBUG] [Thread-154318] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:13:59.156 [DEBUG] [Thread-154318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:13:59.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:13:59.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:13:59.213 [DEBUG] [Thread-154318] [transport.py] [_log()] userauth is OK
2025-09-29T11:13:59.213 [DEBUG] [Thread-154318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:13:59.213 [DEBUG] [Thread-154318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:13:59.213 [DEBUG] [Thread-154318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:13:59.213 [DEBUG] [Thread-154318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:13:59.227 [INFO] [Thread-154318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:13:59.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:13:59.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:00.181 [DEBUG] [Thread-154318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:00.181 [DEBUG] [Thread-154318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:00.229 [DEBUG] [Thread-154318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:00.229 [DEBUG] [Thread-154318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:00.238 [DEBUG] [Thread-154318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:00.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:00.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:14:00.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:14:00.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:00.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:00.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:00.273 [DEBUG] [Thread-154318] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:14:04.168 [DEBUG] [Thread-154320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:14:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:14:10.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:14:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:14:10.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 13, 46), 9.21, 53.49, 0.0, 18.92, 11.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:14:10.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:13:46
2025-09-29T11:14:10.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:14:11.148 [DEBUG] [Thread-154321] [transport.py] [_log()] starting thread (client mode): 0x2b955630
2025-09-29T11:14:11.148 [DEBUG] [Thread-154321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:14:11.169 [DEBUG] [Thread-154321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:14:11.169 [INFO] [Thread-154321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:14:11.172 [DEBUG] [Thread-154321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:14:11.172 [DEBUG] [Thread-154321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:14:11.172 [DEBUG] [Thread-154321] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:14:11.172 [DEBUG] [Thread-154321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:11.172 [DEBUG] [Thread-154321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] client lang: <none>
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] server lang: <none>
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] kex follows: False
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:14:11.173 [DEBUG] [Thread-154321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:14:11.174 [DEBUG] [Thread-154321] [transport.py] [_log()] Compression: none
2025-09-29T11:14:11.174 [DEBUG] [Thread-154321] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:14:11.184 [DEBUG] [Thread-154321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:14:11.184 [DEBUG] [Thread-154321] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:14:11.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:14:11.186 [DEBUG] [Thread-154321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:14:11.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:14:11.188 [DEBUG] [Thread-154321] [transport.py] [_log()] userauth is OK
2025-09-29T11:14:11.188 [DEBUG] [Thread-154321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:14:11.188 [DEBUG] [Thread-154321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:14:11.188 [DEBUG] [Thread-154321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:14:11.189 [DEBUG] [Thread-154321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:14:11.225 [INFO] [Thread-154321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:14:11.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:11.882 [DEBUG] [Thread-154321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:11.882 [DEBUG] [Thread-154321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:11.883 [DEBUG] [Thread-154321] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:14:11.923 [DEBUG] [Thread-154321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:11.923 [DEBUG] [Thread-154321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:11.926 [DEBUG] [Thread-154321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:11.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:11.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:14:11.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:14:11.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:14:11.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:11.950 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:14:11.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:11.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:11.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:14:11.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.384447 -999.00  +11.80  16.32     57   +3.80 1 1 1 1 1   888    0 9.07 39.65 ----- 16.1 16.3 140.9 19.8 19.9 -24.5 18.6 -24.1 18.2 -23.7 19.4 -25.3
2025-09-29T11:14:11.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:14:11.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:14:11.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.384447
2025-09-29T11:14:11.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:14:11.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:14:11.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:14:11.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:14:11.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:14:11.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:13:46', tmtdew=9.21, humidity=53.49, cloud=0.0, wind=18.92, temperature=11.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:13:36.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:14:11.953 [DEBUG] [Thread-154321] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:14:12.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:14:12.049 [DEBUG] [Thread-154324] [transport.py] [_log()] starting thread (client mode): 0x2b9557b0
2025-09-29T11:14:12.049 [DEBUG] [Thread-154324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:14:12.068 [DEBUG] [Thread-154324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:14:12.068 [INFO] [Thread-154324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:14:12.083 [DEBUG] [Thread-154324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:14:12.083 [DEBUG] [Thread-154324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:14:12.083 [DEBUG] [Thread-154324] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:14:12.083 [DEBUG] [Thread-154324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:12.083 [DEBUG] [Thread-154324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] client lang: <none>
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] server lang: <none>
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] kex follows: False
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] Compression: none
2025-09-29T11:14:12.084 [DEBUG] [Thread-154324] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:14:12.138 [DEBUG] [Thread-154324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:14:12.138 [DEBUG] [Thread-154324] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:14:12.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:14:12.139 [DEBUG] [Thread-154324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:14:12.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:14:12.193 [DEBUG] [Thread-154324] [transport.py] [_log()] userauth is OK
2025-09-29T11:14:12.193 [DEBUG] [Thread-154324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:14:12.193 [DEBUG] [Thread-154324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:14:12.194 [DEBUG] [Thread-154324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:14:12.194 [DEBUG] [Thread-154324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:14:12.212 [INFO] [Thread-154324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:14:12.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:14:12.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:13.171 [DEBUG] [Thread-154324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:13.171 [DEBUG] [Thread-154324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:13.218 [DEBUG] [Thread-154324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:13.218 [DEBUG] [Thread-154324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:13.227 [DEBUG] [Thread-154324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:13.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:13.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:14:13.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:14:13.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:13.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:13.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:13.262 [DEBUG] [Thread-154324] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:14:19.212 [DEBUG] [Thread-154326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:14:23.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:14:23.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:14:23.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:14:23.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 14, 18), 9.01, 54.19, 0.0, 20.47, 11.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:14:23.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:14:18
2025-09-29T11:14:23.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:14:24.141 [DEBUG] [Thread-154327] [transport.py] [_log()] starting thread (client mode): 0x2b9c3c70
2025-09-29T11:14:24.141 [DEBUG] [Thread-154327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:14:24.161 [DEBUG] [Thread-154327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:14:24.161 [INFO] [Thread-154327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:14:24.164 [DEBUG] [Thread-154327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] client lang: <none>
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] server lang: <none>
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] kex follows: False
2025-09-29T11:14:24.165 [DEBUG] [Thread-154327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:14:24.166 [DEBUG] [Thread-154327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:14:24.166 [DEBUG] [Thread-154327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:14:24.166 [DEBUG] [Thread-154327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:14:24.166 [DEBUG] [Thread-154327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:14:24.166 [DEBUG] [Thread-154327] [transport.py] [_log()] Compression: none
2025-09-29T11:14:24.166 [DEBUG] [Thread-154327] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:14:24.183 [DEBUG] [Thread-154327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:14:24.183 [DEBUG] [Thread-154327] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:14:24.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:14:24.184 [DEBUG] [Thread-154327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:14:24.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:14:24.186 [DEBUG] [Thread-154327] [transport.py] [_log()] userauth is OK
2025-09-29T11:14:24.186 [DEBUG] [Thread-154327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:14:24.186 [DEBUG] [Thread-154327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:14:24.187 [DEBUG] [Thread-154327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:14:24.187 [DEBUG] [Thread-154327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:14:24.204 [INFO] [Thread-154327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:14:24.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:24.860 [DEBUG] [Thread-154327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:24.860 [DEBUG] [Thread-154327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:24.860 [DEBUG] [Thread-154327] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:14:24.901 [DEBUG] [Thread-154327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:24.902 [DEBUG] [Thread-154327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:24.905 [DEBUG] [Thread-154327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:24.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:24.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:14:24.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:14:24.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:14:24.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:24.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:14:24.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:24.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:24.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:14:24.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.384794 -999.00  +12.00  15.11     56   +3.60 1 1 1 1 1   888    0 8.91 35.31 ----- 14.1 15.1 160.6 24.9 20.1 -25.0 18.7 -24.0 18.2 -24.9 19.4 -25.9
2025-09-29T11:14:24.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:14:24.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:14:24.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.384794
2025-09-29T11:14:24.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:14:24.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:14:24.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:14:24.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:14:24.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:14:24.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:14:18', tmtdew=9.01, humidity=54.19, cloud=0.0, wind=20.47, temperature=11.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:14:06.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:14:24.930 [DEBUG] [Thread-154327] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:14:25.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:14:25.024 [DEBUG] [Thread-154330] [transport.py] [_log()] starting thread (client mode): 0x2b955960
2025-09-29T11:14:25.024 [DEBUG] [Thread-154330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:14:25.039 [DEBUG] [Thread-154330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:14:25.039 [INFO] [Thread-154330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:14:25.046 [DEBUG] [Thread-154330] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:14:25.047 [DEBUG] [Thread-154330] [transport.py] [_log()] client lang: <none>
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] server lang: <none>
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] kex follows: False
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] Compression: none
2025-09-29T11:14:25.048 [DEBUG] [Thread-154330] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:14:25.110 [DEBUG] [Thread-154330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:14:25.110 [DEBUG] [Thread-154330] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:14:25.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:14:25.111 [DEBUG] [Thread-154330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:14:25.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:14:25.169 [DEBUG] [Thread-154330] [transport.py] [_log()] userauth is OK
2025-09-29T11:14:25.169 [DEBUG] [Thread-154330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:14:25.169 [DEBUG] [Thread-154330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:14:25.169 [DEBUG] [Thread-154330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:14:25.170 [DEBUG] [Thread-154330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:14:25.189 [INFO] [Thread-154330] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:14:25.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:14:25.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:26.132 [DEBUG] [Thread-154330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:26.133 [DEBUG] [Thread-154330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:26.180 [DEBUG] [Thread-154330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:26.180 [DEBUG] [Thread-154330] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:26.189 [DEBUG] [Thread-154330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:26.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:26.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:14:26.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:14:26.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:26.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:26.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:26.224 [DEBUG] [Thread-154330] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:14:34.238 [DEBUG] [Thread-154332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:14:35.332 [DEBUG] [Thread-154333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:14:36.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:14:36.226 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:14:36.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:14:36.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:14:36.755 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:14:36.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 14, 18), 9.01, 54.19, 0.0, 20.47, 11.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:14:36.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:14:18
2025-09-29T11:14:36.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:14:37.090 [DEBUG] [Thread-154334] [transport.py] [_log()] starting thread (client mode): 0x2b957b50
2025-09-29T11:14:37.090 [DEBUG] [Thread-154334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:14:37.111 [DEBUG] [Thread-154334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:14:37.111 [INFO] [Thread-154334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] client lang: <none>
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] server lang: <none>
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] kex follows: False
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] Compression: none
2025-09-29T11:14:37.113 [DEBUG] [Thread-154334] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:14:37.123 [DEBUG] [Thread-154334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:14:37.124 [DEBUG] [Thread-154334] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:14:37.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:14:37.125 [DEBUG] [Thread-154334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:14:37.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:14:37.126 [DEBUG] [Thread-154334] [transport.py] [_log()] userauth is OK
2025-09-29T11:14:37.126 [DEBUG] [Thread-154334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:14:37.127 [DEBUG] [Thread-154334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:14:37.127 [DEBUG] [Thread-154334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:14:37.127 [DEBUG] [Thread-154334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:14:37.151 [INFO] [Thread-154334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:14:37.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:37.780 [DEBUG] [Thread-154334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:37.781 [DEBUG] [Thread-154334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:37.781 [DEBUG] [Thread-154334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:14:37.821 [DEBUG] [Thread-154334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:37.821 [DEBUG] [Thread-154334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:37.824 [DEBUG] [Thread-154334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:37.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:37.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:14:37.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:14:37.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:14:37.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:37.841 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:14:37.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:37.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:37.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:14:37.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.384794 -999.00  +12.00  15.11     56   +3.60 1 1 1 1 1   888    0 8.91 35.31 ----- 14.1 15.1 160.6 24.9 20.1 -25.0 18.7 -24.0 18.2 -24.9 19.4 -25.9
2025-09-29T11:14:37.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:14:37.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:14:37.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.384794
2025-09-29T11:14:37.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:14:37.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:14:37.843 [DEBUG] [Thread-154334] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:14:37.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:14:37.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:14:37.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:14:37.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:14:18', tmtdew=9.01, humidity=54.19, cloud=0.0, wind=20.47, temperature=11.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:14:06.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:14:37.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:14:37.940 [DEBUG] [Thread-154337] [transport.py] [_log()] starting thread (client mode): 0x2b91ceb0
2025-09-29T11:14:37.940 [DEBUG] [Thread-154337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:14:37.955 [DEBUG] [Thread-154337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:14:37.955 [INFO] [Thread-154337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] client lang: <none>
2025-09-29T11:14:37.963 [DEBUG] [Thread-154337] [transport.py] [_log()] server lang: <none>
2025-09-29T11:14:37.964 [DEBUG] [Thread-154337] [transport.py] [_log()] kex follows: False
2025-09-29T11:14:37.964 [DEBUG] [Thread-154337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:14:37.964 [DEBUG] [Thread-154337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:14:37.964 [DEBUG] [Thread-154337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:14:37.964 [DEBUG] [Thread-154337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:14:37.964 [DEBUG] [Thread-154337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:14:37.964 [DEBUG] [Thread-154337] [transport.py] [_log()] Compression: none
2025-09-29T11:14:37.964 [DEBUG] [Thread-154337] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:14:38.021 [DEBUG] [Thread-154337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:14:38.022 [DEBUG] [Thread-154337] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:14:38.022 [DEBUG] [Thread-154337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:14:38.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:14:38.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:14:38.077 [DEBUG] [Thread-154337] [transport.py] [_log()] userauth is OK
2025-09-29T11:14:38.078 [DEBUG] [Thread-154337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:14:38.078 [DEBUG] [Thread-154337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:14:38.078 [DEBUG] [Thread-154337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:14:38.078 [DEBUG] [Thread-154337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:14:38.097 [INFO] [Thread-154337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:14:38.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:14:38.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:39.017 [DEBUG] [Thread-154337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:39.017 [DEBUG] [Thread-154337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:39.065 [DEBUG] [Thread-154337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:39.065 [DEBUG] [Thread-154337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:39.074 [DEBUG] [Thread-154337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:39.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:39.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:14:39.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:14:39.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:39.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:39.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:39.108 [DEBUG] [Thread-154337] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:14:49.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:14:49.103 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:14:49.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:14:49.288 [DEBUG] [Thread-154339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:14:49.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 14, 18), 9.01, 54.19, 0.0, 20.47, 11.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:14:49.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:14:18
2025-09-29T11:14:49.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:14:49.971 [DEBUG] [Thread-154340] [transport.py] [_log()] starting thread (client mode): 0x2b91d330
2025-09-29T11:14:49.972 [DEBUG] [Thread-154340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:14:49.991 [DEBUG] [Thread-154340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:14:49.991 [INFO] [Thread-154340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:14:49.994 [DEBUG] [Thread-154340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] client lang: <none>
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] server lang: <none>
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] kex follows: False
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] Compression: none
2025-09-29T11:14:49.995 [DEBUG] [Thread-154340] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:14:50.011 [DEBUG] [Thread-154340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:14:50.011 [DEBUG] [Thread-154340] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:14:50.012 [DEBUG] [Thread-154340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:14:50.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:14:50.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:14:50.014 [DEBUG] [Thread-154340] [transport.py] [_log()] userauth is OK
2025-09-29T11:14:50.014 [DEBUG] [Thread-154340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:14:50.014 [DEBUG] [Thread-154340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:14:50.014 [DEBUG] [Thread-154340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:14:50.014 [DEBUG] [Thread-154340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:14:50.032 [INFO] [Thread-154340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:14:50.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:50.652 [DEBUG] [Thread-154340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:50.652 [DEBUG] [Thread-154340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:50.652 [DEBUG] [Thread-154340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:14:50.693 [DEBUG] [Thread-154340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:50.693 [DEBUG] [Thread-154340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:50.696 [DEBUG] [Thread-154340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:50.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:50.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:14:50.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:14:50.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:14:50.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:50.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:14:50.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:50.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:14:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.385142 -999.00  +11.90  18.78     56   +3.60 1 1 1 1 1   888    0 9.10 35.68 ----- 17.8 18.8 136.2 22.2 20.1 -25.0 18.6 -23.8 18.3 -25.2 19.5 -26.0
2025-09-29T11:14:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:14:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:14:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.385142
2025-09-29T11:14:50.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:14:50.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:14:50.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:14:50.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:14:50.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:14:50.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:14:18', tmtdew=9.01, humidity=54.19, cloud=0.0, wind=20.47, temperature=11.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:14:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:14:50.720 [DEBUG] [Thread-154340] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:14:50.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:14:50.808 [DEBUG] [Thread-154343] [transport.py] [_log()] starting thread (client mode): 0x2b9c21d0
2025-09-29T11:14:50.808 [DEBUG] [Thread-154343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:14:50.823 [DEBUG] [Thread-154343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:14:50.823 [INFO] [Thread-154343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] client lang: <none>
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] server lang: <none>
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] kex follows: False
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] Compression: none
2025-09-29T11:14:50.831 [DEBUG] [Thread-154343] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:14:50.888 [DEBUG] [Thread-154343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:14:50.889 [DEBUG] [Thread-154343] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:14:50.889 [DEBUG] [Thread-154343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:14:50.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:14:50.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:14:50.945 [DEBUG] [Thread-154343] [transport.py] [_log()] userauth is OK
2025-09-29T11:14:50.945 [DEBUG] [Thread-154343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:14:50.945 [DEBUG] [Thread-154343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:14:50.945 [DEBUG] [Thread-154343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:14:50.945 [DEBUG] [Thread-154343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:14:50.959 [INFO] [Thread-154343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:14:50.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:14:50.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:14:51.905 [DEBUG] [Thread-154343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:14:51.905 [DEBUG] [Thread-154343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:14:51.953 [DEBUG] [Thread-154343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:14:51.953 [DEBUG] [Thread-154343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:14:51.961 [DEBUG] [Thread-154343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:14:51.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:14:51.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:14:51.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:14:51.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:14:51.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:14:51.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:14:51.992 [DEBUG] [Thread-154343] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:15:01.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:15:01.994 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:15:01.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:15:02.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 14, 50), 9.19, 53.19, 0.0, 16.92, 11.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:15:02.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:14:50
2025-09-29T11:15:02.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:15:02.907 [DEBUG] [Thread-154345] [transport.py] [_log()] starting thread (client mode): 0x2e38eaa0
2025-09-29T11:15:02.907 [DEBUG] [Thread-154345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:15:02.925 [DEBUG] [Thread-154345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:15:02.926 [INFO] [Thread-154345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] client lang: <none>
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] server lang: <none>
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] kex follows: False
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:15:02.929 [DEBUG] [Thread-154345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:15:02.930 [DEBUG] [Thread-154345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:15:02.930 [DEBUG] [Thread-154345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:15:02.930 [DEBUG] [Thread-154345] [transport.py] [_log()] Compression: none
2025-09-29T11:15:02.930 [DEBUG] [Thread-154345] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:15:02.937 [DEBUG] [Thread-154345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:15:02.937 [DEBUG] [Thread-154345] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:15:02.937 [DEBUG] [Thread-154345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:15:02.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:15:02.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:15:02.938 [DEBUG] [Thread-154345] [transport.py] [_log()] userauth is OK
2025-09-29T11:15:02.938 [DEBUG] [Thread-154345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:15:02.938 [DEBUG] [Thread-154345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:15:02.938 [DEBUG] [Thread-154345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:15:02.938 [DEBUG] [Thread-154345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:15:02.951 [INFO] [Thread-154345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:15:02.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:15:04.318 [DEBUG] [Thread-154347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:15:05.473 [DEBUG] [Thread-154345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:15:05.473 [DEBUG] [Thread-154345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:15:05.474 [DEBUG] [Thread-154345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:15:05.516 [DEBUG] [Thread-154345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:15:05.516 [DEBUG] [Thread-154345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:15:05.518 [DEBUG] [Thread-154345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:15:05.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:15:05.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:15:05.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:15:05.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:15:05.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:15:05.547 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:15:05.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:15:05.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:15:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:15:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.385142 -999.00  +11.90  18.78     56   +3.60 1 1 1 1 1   888    0 9.10 35.68 ----- 17.8 18.8 136.2 22.2 20.1 -25.0 18.6 -23.8 18.3 -25.2 19.5 -26.0
2025-09-29T11:15:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:15:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:15:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.385142
2025-09-29T11:15:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:15:05.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:15:05.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:15:05.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:15:05.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:15:05.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:14:50', tmtdew=9.19, humidity=53.19, cloud=0.0, wind=16.92, temperature=11.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:14:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:15:05.548 [DEBUG] [Thread-154345] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:15:05.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:15:05.642 [DEBUG] [Thread-154349] [transport.py] [_log()] starting thread (client mode): 0x2e3c24a0
2025-09-29T11:15:05.642 [DEBUG] [Thread-154349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:15:05.656 [DEBUG] [Thread-154349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:15:05.657 [INFO] [Thread-154349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] client lang: <none>
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] server lang: <none>
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] kex follows: False
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:15:05.664 [DEBUG] [Thread-154349] [transport.py] [_log()] Compression: none
2025-09-29T11:15:05.665 [DEBUG] [Thread-154349] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:15:05.725 [DEBUG] [Thread-154349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:15:05.725 [DEBUG] [Thread-154349] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:15:05.725 [DEBUG] [Thread-154349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:15:05.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:15:05.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:15:05.781 [DEBUG] [Thread-154349] [transport.py] [_log()] userauth is OK
2025-09-29T11:15:05.781 [DEBUG] [Thread-154349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:15:05.782 [DEBUG] [Thread-154349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:15:05.782 [DEBUG] [Thread-154349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:15:05.782 [DEBUG] [Thread-154349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:15:05.795 [INFO] [Thread-154349] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:15:05.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:15:05.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:15:06.760 [DEBUG] [Thread-154349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:15:06.760 [DEBUG] [Thread-154349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:15:06.809 [DEBUG] [Thread-154349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:15:06.809 [DEBUG] [Thread-154349] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:15:06.817 [DEBUG] [Thread-154349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:15:06.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:15:06.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:15:06.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:15:06.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:15:06.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:15:06.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:15:06.849 [DEBUG] [Thread-154349] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:15:16.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:15:16.852 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:15:16.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:15:17.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 14, 50), 9.19, 53.19, 0.0, 16.92, 11.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:15:17.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:14:50
2025-09-29T11:15:17.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:15:17.713 [DEBUG] [Thread-154351] [transport.py] [_log()] starting thread (client mode): 0x2b9bb100
2025-09-29T11:15:17.713 [DEBUG] [Thread-154351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:15:17.732 [DEBUG] [Thread-154351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:15:17.732 [INFO] [Thread-154351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:15:17.736 [DEBUG] [Thread-154351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] client lang: <none>
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] server lang: <none>
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] kex follows: False
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] Compression: none
2025-09-29T11:15:17.737 [DEBUG] [Thread-154351] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:15:17.752 [DEBUG] [Thread-154351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:15:17.752 [DEBUG] [Thread-154351] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:15:17.753 [DEBUG] [Thread-154351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:15:17.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:15:17.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:15:17.753 [DEBUG] [Thread-154351] [transport.py] [_log()] userauth is OK
2025-09-29T11:15:17.753 [DEBUG] [Thread-154351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:15:17.753 [DEBUG] [Thread-154351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:15:17.753 [DEBUG] [Thread-154351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:15:17.753 [DEBUG] [Thread-154351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:15:17.763 [INFO] [Thread-154351] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:15:17.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:15:19.006 [DEBUG] [Thread-154351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:15:19.006 [DEBUG] [Thread-154351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:15:19.006 [DEBUG] [Thread-154351] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:15:19.046 [DEBUG] [Thread-154351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:15:19.046 [DEBUG] [Thread-154351] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:15:19.049 [DEBUG] [Thread-154351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:15:19.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:15:19.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:15:19.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:15:19.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:15:19.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:15:19.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:15:19.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:15:19.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:15:19.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:15:19.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.385142 -999.00  +11.90  18.78     56   +3.60 1 1 1 1 1   888    0 9.10 35.68 ----- 17.8 18.8 136.2 22.2 20.1 -25.0 18.6 -23.8 18.3 -25.2 19.5 -26.0
2025-09-29T11:15:19.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:15:19.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:15:19.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.385142
2025-09-29T11:15:19.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:15:19.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:15:19.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:15:19.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:15:19.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:15:19.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:14:50', tmtdew=9.19, humidity=53.19, cloud=0.0, wind=16.92, temperature=11.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:14:36.269', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:15:19.075 [DEBUG] [Thread-154351] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:15:19.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:15:19.365 [DEBUG] [Thread-154354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:15:34.419 [DEBUG] [Thread-154355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:15:35.384 [DEBUG] [Thread-154356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:15:36.904 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:15:36.905 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:15:49.445 [DEBUG] [Thread-154357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:16:04.471 [DEBUG] [Thread-154358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:16:19.502 [DEBUG] [Thread-154359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:16:34.532 [DEBUG] [Thread-154360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:16:35.433 [DEBUG] [Thread-154361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:16:37.053 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:16:37.055 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:16:49.562 [DEBUG] [Thread-154362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:17:04.590 [DEBUG] [Thread-154363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:17:19.613 [DEBUG] [Thread-154364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:17:31.194 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:17:34.643 [DEBUG] [Thread-154365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:17:35.483 [DEBUG] [Thread-154366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:17:37.195 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:17:37.196 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:17:41.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:17:41.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:17:41.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:17:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 17, 30), 9.51, 52.26, 0.0, 20.7, 11.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:17:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:17:30
2025-09-29T11:17:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:17:42.119 [DEBUG] [Thread-154367] [transport.py] [_log()] starting thread (client mode): 0x2b9b9570
2025-09-29T11:17:42.120 [DEBUG] [Thread-154367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:17:42.139 [DEBUG] [Thread-154367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:17:42.139 [INFO] [Thread-154367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] client lang: <none>
2025-09-29T11:17:42.142 [DEBUG] [Thread-154367] [transport.py] [_log()] server lang: <none>
2025-09-29T11:17:42.143 [DEBUG] [Thread-154367] [transport.py] [_log()] kex follows: False
2025-09-29T11:17:42.143 [DEBUG] [Thread-154367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:17:42.143 [DEBUG] [Thread-154367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:17:42.143 [DEBUG] [Thread-154367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:17:42.143 [DEBUG] [Thread-154367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:17:42.143 [DEBUG] [Thread-154367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:17:42.143 [DEBUG] [Thread-154367] [transport.py] [_log()] Compression: none
2025-09-29T11:17:42.143 [DEBUG] [Thread-154367] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:17:42.157 [DEBUG] [Thread-154367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:17:42.157 [DEBUG] [Thread-154367] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:17:42.157 [DEBUG] [Thread-154367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:17:42.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:17:42.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:17:42.158 [DEBUG] [Thread-154367] [transport.py] [_log()] userauth is OK
2025-09-29T11:17:42.158 [DEBUG] [Thread-154367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:17:42.158 [DEBUG] [Thread-154367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:17:42.158 [DEBUG] [Thread-154367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:17:42.158 [DEBUG] [Thread-154367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:17:42.167 [INFO] [Thread-154367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:17:42.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:17:42.782 [DEBUG] [Thread-154367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:17:42.782 [DEBUG] [Thread-154367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:17:42.783 [DEBUG] [Thread-154367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:17:42.824 [DEBUG] [Thread-154367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:17:42.824 [DEBUG] [Thread-154367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:17:42.826 [DEBUG] [Thread-154367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:17:42.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:17:42.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:17:42.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:17:42.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:17:42.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:17:42.840 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:17:42.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.387225 -999.00  +11.30  19.92     58   +3.40 1 1 1 1 1   888    0 8.96 27.92 ----- 19.8 19.9 139.4 27.7 20.0 -25.7 18.8 -25.2 18.3 -26.2 19.4 -27.5
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.387225
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:17:42.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:17:42.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:17:42.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:17:42.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:17:30', tmtdew=9.51, humidity=52.26, cloud=0.0, wind=20.7, temperature=11.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:17:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:17:42.841 [DEBUG] [Thread-154367] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:17:42.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:17:42.927 [DEBUG] [Thread-154370] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-29T11:17:42.927 [DEBUG] [Thread-154370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:17:42.942 [DEBUG] [Thread-154370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:17:42.942 [INFO] [Thread-154370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] client lang: <none>
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] server lang: <none>
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] kex follows: False
2025-09-29T11:17:42.949 [DEBUG] [Thread-154370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:17:42.950 [DEBUG] [Thread-154370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:17:42.950 [DEBUG] [Thread-154370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:17:42.950 [DEBUG] [Thread-154370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:17:42.950 [DEBUG] [Thread-154370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:17:42.950 [DEBUG] [Thread-154370] [transport.py] [_log()] Compression: none
2025-09-29T11:17:42.950 [DEBUG] [Thread-154370] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:17:43.006 [DEBUG] [Thread-154370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:17:43.006 [DEBUG] [Thread-154370] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:17:43.006 [DEBUG] [Thread-154370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:17:43.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:17:43.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:17:43.063 [DEBUG] [Thread-154370] [transport.py] [_log()] userauth is OK
2025-09-29T11:17:43.063 [DEBUG] [Thread-154370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:17:43.063 [DEBUG] [Thread-154370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:17:43.063 [DEBUG] [Thread-154370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:17:43.063 [DEBUG] [Thread-154370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:17:43.079 [INFO] [Thread-154370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:17:43.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:17:43.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:17:44.031 [DEBUG] [Thread-154370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:17:44.031 [DEBUG] [Thread-154370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:17:44.079 [DEBUG] [Thread-154370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:17:44.079 [DEBUG] [Thread-154370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:17:44.087 [DEBUG] [Thread-154370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:17:44.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:17:44.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:17:44.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:17:44.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:17:44.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:17:44.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:17:44.119 [DEBUG] [Thread-154370] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:17:49.672 [DEBUG] [Thread-154372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:17:54.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:17:54.121 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:17:54.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:17:54.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 17, 30), 9.51, 52.26, 0.0, 20.7, 11.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:17:54.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:17:30
2025-09-29T11:17:54.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:17:54.986 [DEBUG] [Thread-154373] [transport.py] [_log()] starting thread (client mode): 0x2b955c90
2025-09-29T11:17:54.986 [DEBUG] [Thread-154373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:17:55.008 [DEBUG] [Thread-154373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:17:55.008 [INFO] [Thread-154373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:17:55.011 [DEBUG] [Thread-154373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:17:55.011 [DEBUG] [Thread-154373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:17:55.011 [DEBUG] [Thread-154373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:17:55.011 [DEBUG] [Thread-154373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:17:55.011 [DEBUG] [Thread-154373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:17:55.011 [DEBUG] [Thread-154373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:17:55.011 [DEBUG] [Thread-154373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:17:55.011 [DEBUG] [Thread-154373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] client lang: <none>
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] server lang: <none>
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] kex follows: False
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] Compression: none
2025-09-29T11:17:55.012 [DEBUG] [Thread-154373] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:17:55.032 [DEBUG] [Thread-154373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:17:55.033 [DEBUG] [Thread-154373] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:17:55.033 [DEBUG] [Thread-154373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:17:55.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:17:55.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:17:55.035 [DEBUG] [Thread-154373] [transport.py] [_log()] userauth is OK
2025-09-29T11:17:55.035 [DEBUG] [Thread-154373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:17:55.036 [DEBUG] [Thread-154373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:17:55.036 [DEBUG] [Thread-154373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:17:55.036 [DEBUG] [Thread-154373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:17:55.059 [INFO] [Thread-154373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:17:55.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:17:55.705 [DEBUG] [Thread-154373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:17:55.706 [DEBUG] [Thread-154373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:17:55.706 [DEBUG] [Thread-154373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:17:55.746 [DEBUG] [Thread-154373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:17:55.746 [DEBUG] [Thread-154373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:17:55.749 [DEBUG] [Thread-154373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:17:55.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:17:55.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:17:55.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:17:55.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:17:55.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:17:55.772 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:17:55.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:17:55.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:17:55.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:17:55.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.387225 -999.00  +11.30  19.92     58   +3.40 1 1 1 1 1   888    0 8.96 27.92 ----- 19.8 19.9 139.4 27.7 20.0 -25.7 18.8 -25.2 18.3 -26.2 19.4 -27.5
2025-09-29T11:17:55.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:17:55.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:17:55.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.387225
2025-09-29T11:17:55.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:17:55.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:17:55.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:17:55.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:17:55.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:17:55.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:17:30', tmtdew=9.51, humidity=52.26, cloud=0.0, wind=20.7, temperature=11.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:17:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:17:55.774 [DEBUG] [Thread-154373] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:17:55.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:17:55.868 [DEBUG] [Thread-154376] [transport.py] [_log()] starting thread (client mode): 0x2e38f460
2025-09-29T11:17:55.868 [DEBUG] [Thread-154376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:17:55.884 [DEBUG] [Thread-154376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:17:55.884 [INFO] [Thread-154376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:17:55.891 [DEBUG] [Thread-154376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] client lang: <none>
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] server lang: <none>
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] kex follows: False
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] Compression: none
2025-09-29T11:17:55.892 [DEBUG] [Thread-154376] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:17:55.951 [DEBUG] [Thread-154376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:17:55.952 [DEBUG] [Thread-154376] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:17:55.952 [DEBUG] [Thread-154376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:17:55.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:17:55.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:17:56.008 [DEBUG] [Thread-154376] [transport.py] [_log()] userauth is OK
2025-09-29T11:17:56.008 [DEBUG] [Thread-154376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:17:56.008 [DEBUG] [Thread-154376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:17:56.008 [DEBUG] [Thread-154376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:17:56.008 [DEBUG] [Thread-154376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:17:56.027 [INFO] [Thread-154376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:17:56.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:17:56.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:17:56.951 [DEBUG] [Thread-154376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:17:56.951 [DEBUG] [Thread-154376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:17:56.999 [DEBUG] [Thread-154376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:17:56.999 [DEBUG] [Thread-154376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:17:57.008 [DEBUG] [Thread-154376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:17:57.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:17:57.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:17:57.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:17:57.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:17:57.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:17:57.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:17:57.043 [DEBUG] [Thread-154376] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:18:04.715 [DEBUG] [Thread-154378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:18:07.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:18:07.041 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:18:07.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:18:07.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 18, 1), 9.77, 51.4, 0.0, 21.49, 12.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:18:07.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:18:01
2025-09-29T11:18:07.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:18:07.898 [DEBUG] [Thread-154379] [transport.py] [_log()] starting thread (client mode): 0x2b96e980
2025-09-29T11:18:07.898 [DEBUG] [Thread-154379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:18:07.918 [DEBUG] [Thread-154379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:18:07.918 [INFO] [Thread-154379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:18:07.922 [DEBUG] [Thread-154379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] client lang: <none>
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] server lang: <none>
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] kex follows: False
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] Compression: none
2025-09-29T11:18:07.923 [DEBUG] [Thread-154379] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:18:07.941 [DEBUG] [Thread-154379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:18:07.941 [DEBUG] [Thread-154379] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:18:07.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:18:07.942 [DEBUG] [Thread-154379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:18:07.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:18:07.944 [DEBUG] [Thread-154379] [transport.py] [_log()] userauth is OK
2025-09-29T11:18:07.945 [DEBUG] [Thread-154379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:18:07.945 [DEBUG] [Thread-154379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:18:07.945 [DEBUG] [Thread-154379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:18:07.945 [DEBUG] [Thread-154379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:18:07.978 [INFO] [Thread-154379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:18:07.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:18:08.653 [DEBUG] [Thread-154379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:18:08.653 [DEBUG] [Thread-154379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:18:08.653 [DEBUG] [Thread-154379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:18:08.694 [DEBUG] [Thread-154379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:18:08.694 [DEBUG] [Thread-154379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:18:08.697 [DEBUG] [Thread-154379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:18:08.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:18:08.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:18:08.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:18:08.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:18:08.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:18:08.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:18:08.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:18:08.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:18:08.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:18:08.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.387225 -999.00  +11.30  19.92     58   +3.40 1 1 1 1 1   888    0 8.96 27.92 ----- 19.8 19.9 139.4 27.7 20.0 -25.7 18.8 -25.2 18.3 -26.2 19.4 -27.5
2025-09-29T11:18:08.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:18:08.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:18:08.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.387225
2025-09-29T11:18:08.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:18:08.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:18:08.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:18:08.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:18:08.724 [DEBUG] [Thread-154379] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:18:08.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:18:08.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:18:01', tmtdew=9.77, humidity=51.4, cloud=0.0, wind=21.49, temperature=12.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:17:36.240', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:18:08.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:18:08.820 [DEBUG] [Thread-154382] [transport.py] [_log()] starting thread (client mode): 0x2b96d4b0
2025-09-29T11:18:08.821 [DEBUG] [Thread-154382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:18:08.834 [DEBUG] [Thread-154382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:18:08.834 [INFO] [Thread-154382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:18:08.842 [DEBUG] [Thread-154382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:18:08.842 [DEBUG] [Thread-154382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:18:08.842 [DEBUG] [Thread-154382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] client lang: <none>
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] server lang: <none>
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] kex follows: False
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] Compression: none
2025-09-29T11:18:08.843 [DEBUG] [Thread-154382] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:18:08.904 [DEBUG] [Thread-154382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:18:08.905 [DEBUG] [Thread-154382] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:18:08.905 [DEBUG] [Thread-154382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:18:08.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:18:08.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:18:08.960 [DEBUG] [Thread-154382] [transport.py] [_log()] userauth is OK
2025-09-29T11:18:08.961 [DEBUG] [Thread-154382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:18:08.961 [DEBUG] [Thread-154382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:18:08.961 [DEBUG] [Thread-154382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:18:08.961 [DEBUG] [Thread-154382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:18:08.979 [INFO] [Thread-154382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:18:08.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:18:08.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:18:09.934 [DEBUG] [Thread-154382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:18:09.934 [DEBUG] [Thread-154382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:18:09.982 [DEBUG] [Thread-154382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:18:09.982 [DEBUG] [Thread-154382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:18:09.991 [DEBUG] [Thread-154382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:18:10.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:18:10.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:18:10.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:18:10.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:18:10.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:18:10.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:18:10.026 [DEBUG] [Thread-154382] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:18:19.748 [DEBUG] [Thread-154384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:18:20.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:18:20.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:18:20.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:18:20.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 18, 1), 9.77, 51.4, 0.0, 21.49, 12.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:18:20.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:18:01
2025-09-29T11:18:20.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:18:20.936 [DEBUG] [Thread-154385] [transport.py] [_log()] starting thread (client mode): 0x2e3c1030
2025-09-29T11:18:20.936 [DEBUG] [Thread-154385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:18:20.956 [DEBUG] [Thread-154385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:18:20.956 [INFO] [Thread-154385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] client lang: <none>
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] server lang: <none>
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] kex follows: False
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] Compression: none
2025-09-29T11:18:20.960 [DEBUG] [Thread-154385] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:18:20.974 [DEBUG] [Thread-154385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:18:20.974 [DEBUG] [Thread-154385] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:18:20.974 [DEBUG] [Thread-154385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:18:20.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:18:20.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:18:20.975 [DEBUG] [Thread-154385] [transport.py] [_log()] userauth is OK
2025-09-29T11:18:20.975 [DEBUG] [Thread-154385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:18:20.976 [DEBUG] [Thread-154385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:18:20.976 [DEBUG] [Thread-154385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:18:20.976 [DEBUG] [Thread-154385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:18:20.991 [INFO] [Thread-154385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:18:20.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:18:21.659 [DEBUG] [Thread-154385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:18:21.659 [DEBUG] [Thread-154385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:18:21.659 [DEBUG] [Thread-154385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:18:21.700 [DEBUG] [Thread-154385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:18:21.700 [DEBUG] [Thread-154385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:18:21.702 [DEBUG] [Thread-154385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:18:21.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:18:21.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:18:21.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:18:21.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:18:21.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:18:21.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:18:21.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:18:21.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:18:21.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:18:21.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.387572 -999.00  +11.10  17.16     59   +3.40 1 1 1 1 1   888    0 8.79 26.54 ----- 14.3 17.2 147.2 24.1 20.0 -25.7 18.8 -24.8 18.3 -25.8 19.4 -25.8
2025-09-29T11:18:21.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:18:21.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:18:21.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.387572
2025-09-29T11:18:21.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:18:21.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:18:21.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:18:21.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:18:21.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:18:21.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:18:01', tmtdew=9.77, humidity=51.4, cloud=0.0, wind=21.49, temperature=12.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:18:06.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:18:21.721 [DEBUG] [Thread-154385] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:18:21.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:18:21.804 [DEBUG] [Thread-154388] [transport.py] [_log()] starting thread (client mode): 0x2b954430
2025-09-29T11:18:21.804 [DEBUG] [Thread-154388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:18:21.819 [DEBUG] [Thread-154388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:18:21.819 [INFO] [Thread-154388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:18:21.826 [DEBUG] [Thread-154388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:18:21.826 [DEBUG] [Thread-154388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:18:21.826 [DEBUG] [Thread-154388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] client lang: <none>
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] server lang: <none>
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] kex follows: False
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] Compression: none
2025-09-29T11:18:21.827 [DEBUG] [Thread-154388] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:18:21.888 [DEBUG] [Thread-154388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:18:21.888 [DEBUG] [Thread-154388] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:18:21.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:18:21.888 [DEBUG] [Thread-154388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:18:21.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:18:21.944 [DEBUG] [Thread-154388] [transport.py] [_log()] userauth is OK
2025-09-29T11:18:21.944 [DEBUG] [Thread-154388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:18:21.944 [DEBUG] [Thread-154388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:18:21.944 [DEBUG] [Thread-154388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:18:21.944 [DEBUG] [Thread-154388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:18:21.959 [INFO] [Thread-154388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:18:21.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:18:21.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:18:22.895 [DEBUG] [Thread-154388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:18:22.895 [DEBUG] [Thread-154388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:18:22.944 [DEBUG] [Thread-154388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:18:22.944 [DEBUG] [Thread-154388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:18:22.953 [DEBUG] [Thread-154388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:18:22.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:18:22.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:18:22.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:18:22.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:18:22.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:18:22.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:18:22.985 [DEBUG] [Thread-154388] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:18:32.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:18:32.986 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:18:32.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:18:33.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 18, 1), 9.77, 51.4, 0.0, 21.49, 12.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:18:33.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:18:01
2025-09-29T11:18:33.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:18:33.836 [DEBUG] [Thread-154390] [transport.py] [_log()] starting thread (client mode): 0x2e38d300
2025-09-29T11:18:33.836 [DEBUG] [Thread-154390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:18:33.856 [DEBUG] [Thread-154390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:18:33.857 [INFO] [Thread-154390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:18:33.859 [DEBUG] [Thread-154390] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] client lang: <none>
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] server lang: <none>
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] kex follows: False
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:18:33.860 [DEBUG] [Thread-154390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:18:33.861 [DEBUG] [Thread-154390] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:18:33.861 [DEBUG] [Thread-154390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:18:33.861 [DEBUG] [Thread-154390] [transport.py] [_log()] Compression: none
2025-09-29T11:18:33.861 [DEBUG] [Thread-154390] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:18:33.879 [DEBUG] [Thread-154390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:18:33.880 [DEBUG] [Thread-154390] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:18:33.880 [DEBUG] [Thread-154390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:18:33.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:18:33.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:18:33.882 [DEBUG] [Thread-154390] [transport.py] [_log()] userauth is OK
2025-09-29T11:18:33.882 [DEBUG] [Thread-154390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:18:33.882 [DEBUG] [Thread-154390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:18:33.882 [DEBUG] [Thread-154390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:18:33.882 [DEBUG] [Thread-154390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:18:33.907 [INFO] [Thread-154390] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:18:33.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:18:34.561 [DEBUG] [Thread-154390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:18:34.561 [DEBUG] [Thread-154390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:18:34.561 [DEBUG] [Thread-154390] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:18:34.602 [DEBUG] [Thread-154390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:18:34.602 [DEBUG] [Thread-154390] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:18:34.604 [DEBUG] [Thread-154390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:18:34.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:18:34.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:18:34.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:18:34.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:18:34.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:18:34.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:18:34.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:18:34.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:18:34.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.387572 -999.00  +11.10  17.16     59   +3.40 1 1 1 1 1   888    0 8.79 26.54 ----- 14.3 17.2 147.2 24.1 20.0 -25.7 18.8 -24.8 18.3 -25.8 19.4 -25.8
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.387572
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:18:34.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:18:01', tmtdew=9.77, humidity=51.4, cloud=0.0, wind=21.49, temperature=12.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:18:06.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:18:34.621 [DEBUG] [Thread-154390] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:18:34.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:18:34.788 [DEBUG] [Thread-154393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:18:35.529 [DEBUG] [Thread-154394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:18:37.336 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:18:37.337 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:18:49.821 [DEBUG] [Thread-154395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:19:04.849 [DEBUG] [Thread-154396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:19:19.879 [DEBUG] [Thread-154397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:19:34.907 [DEBUG] [Thread-154398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:19:35.580 [DEBUG] [Thread-154399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:19:37.476 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:19:37.477 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:19:49.938 [DEBUG] [Thread-154400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:20:04.969 [DEBUG] [Thread-154401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:20:19.998 [DEBUG] [Thread-154402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:20:35.031 [DEBUG] [Thread-154403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:20:35.608 [DEBUG] [Thread-154404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:20:37.617 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:20:37.619 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:20:47.802 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:20:50.062 [DEBUG] [Thread-154405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:20:57.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:20:57.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:20:57.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:20:58.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 20, 41), 9.58, 51.83, 0.0, 14.72, 11.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:20:58.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:20:41
2025-09-29T11:20:58.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:20:58.709 [DEBUG] [Thread-154406] [transport.py] [_log()] starting thread (client mode): 0x2b9b9030
2025-09-29T11:20:58.709 [DEBUG] [Thread-154406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:20:58.730 [DEBUG] [Thread-154406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:20:58.730 [INFO] [Thread-154406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:20:58.733 [DEBUG] [Thread-154406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:20:58.733 [DEBUG] [Thread-154406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] client lang: <none>
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] server lang: <none>
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] kex follows: False
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] Compression: none
2025-09-29T11:20:58.734 [DEBUG] [Thread-154406] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:20:58.742 [DEBUG] [Thread-154406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:20:58.742 [DEBUG] [Thread-154406] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:20:58.743 [DEBUG] [Thread-154406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:20:58.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:20:58.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:20:58.744 [DEBUG] [Thread-154406] [transport.py] [_log()] userauth is OK
2025-09-29T11:20:58.744 [DEBUG] [Thread-154406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:20:58.744 [DEBUG] [Thread-154406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:20:58.744 [DEBUG] [Thread-154406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:20:58.744 [DEBUG] [Thread-154406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:20:58.763 [INFO] [Thread-154406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:20:58.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:20:59.429 [DEBUG] [Thread-154406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:20:59.430 [DEBUG] [Thread-154406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:20:59.430 [DEBUG] [Thread-154406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:20:59.470 [DEBUG] [Thread-154406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:20:59.470 [DEBUG] [Thread-154406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:20:59.474 [DEBUG] [Thread-154406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:20:59.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:20:59.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:20:59.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:20:59.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:20:59.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:20:59.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:20:59.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:20:59.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:20:59.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:20:59.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.388960 -999.00  +11.60  13.98     56   +3.40 1 1 1 1 1   888    0 8.64 19.97 ----- 7.4 14.0 137.6 17.6 20.2 -25.0 19.0 -24.4 18.5 -24.2 19.7 -26.2
2025-09-29T11:20:59.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:20:59.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:20:59.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.388960
2025-09-29T11:20:59.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:20:59.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:20:59.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:20:59.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:20:59.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:20:59.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:20:41', tmtdew=9.58, humidity=51.83, cloud=0.0, wind=14.72, temperature=11.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:20:06.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:20:59.500 [DEBUG] [Thread-154406] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:20:59.585 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:21:05.090 [DEBUG] [Thread-154409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:21:20.145 [DEBUG] [Thread-154410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:21:35.175 [DEBUG] [Thread-154411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:21:35.654 [DEBUG] [Thread-154412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:21:37.761 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:21:37.762 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:21:50.206 [DEBUG] [Thread-154413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:22:05.234 [DEBUG] [Thread-154414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:22:20.264 [DEBUG] [Thread-154415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:22:35.294 [DEBUG] [Thread-154416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:22:35.705 [DEBUG] [Thread-154417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:22:37.903 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:22:37.904 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:22:50.320 [DEBUG] [Thread-154418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:23:05.347 [DEBUG] [Thread-154419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:23:11.163 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:23:20.380 [DEBUG] [Thread-154420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:23:21.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:23:21.172 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:23:21.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:23:21.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 22, 48), 9.8, 51.26, 0.0, 20.57, 11.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:23:21.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:22:48
2025-09-29T11:23:21.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:23:22.083 [DEBUG] [Thread-154421] [transport.py] [_log()] starting thread (client mode): 0x2e38ce20
2025-09-29T11:23:22.083 [DEBUG] [Thread-154421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:23:22.095 [DEBUG] [Thread-154421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:23:22.095 [INFO] [Thread-154421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] client lang: <none>
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] server lang: <none>
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] kex follows: False
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] Compression: none
2025-09-29T11:23:22.099 [DEBUG] [Thread-154421] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:23:22.115 [DEBUG] [Thread-154421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:23:22.115 [DEBUG] [Thread-154421] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:23:22.115 [DEBUG] [Thread-154421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:23:22.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:23:22.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:23:22.116 [DEBUG] [Thread-154421] [transport.py] [_log()] userauth is OK
2025-09-29T11:23:22.117 [DEBUG] [Thread-154421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:23:22.117 [DEBUG] [Thread-154421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:23:22.117 [DEBUG] [Thread-154421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:23:22.117 [DEBUG] [Thread-154421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:23:22.126 [INFO] [Thread-154421] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:23:22.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:23:22.724 [DEBUG] [Thread-154421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:23:22.724 [DEBUG] [Thread-154421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:23:22.724 [DEBUG] [Thread-154421] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:23:22.765 [DEBUG] [Thread-154421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:23:22.765 [DEBUG] [Thread-154421] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:23:22.767 [DEBUG] [Thread-154421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:23:22.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:23:22.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:23:22.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:23:22.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:23:22.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:23:22.785 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:23:22.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:23:22.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.391044 -999.00  +12.60  16.62     55   +3.80 1 1 1 1 1   888    0 8.70 19.43 ----- 20.3 16.6 170.4 24.5 20.6 -24.4 19.1 -24.5 18.6 -25.0 19.9 -26.0
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.391044
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:23:22.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:22:48', tmtdew=9.8, humidity=51.26, cloud=0.0, wind=20.57, temperature=11.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:23:06.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:23:22.786 [DEBUG] [Thread-154421] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:23:22.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:23:22.875 [DEBUG] [Thread-154424] [transport.py] [_log()] starting thread (client mode): 0x2b956fe0
2025-09-29T11:23:22.875 [DEBUG] [Thread-154424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:23:22.889 [DEBUG] [Thread-154424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:23:22.889 [INFO] [Thread-154424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] client lang: <none>
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] server lang: <none>
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] kex follows: False
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] Compression: none
2025-09-29T11:23:22.897 [DEBUG] [Thread-154424] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:23:22.953 [DEBUG] [Thread-154424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:23:22.953 [DEBUG] [Thread-154424] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:23:22.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:23:22.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:23:22.954 [DEBUG] [Thread-154424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:23:23.011 [DEBUG] [Thread-154424] [transport.py] [_log()] userauth is OK
2025-09-29T11:23:23.011 [DEBUG] [Thread-154424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:23:23.011 [DEBUG] [Thread-154424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:23:23.011 [DEBUG] [Thread-154424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:23:23.012 [DEBUG] [Thread-154424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:23:23.032 [INFO] [Thread-154424] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:23:23.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:23:23.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:23:23.985 [DEBUG] [Thread-154424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:23:23.985 [DEBUG] [Thread-154424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:23:24.033 [DEBUG] [Thread-154424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:23:24.034 [DEBUG] [Thread-154424] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:23:24.043 [DEBUG] [Thread-154424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:23:24.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:23:24.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:23:24.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:23:24.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:23:24.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:23:24.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:23:24.077 [DEBUG] [Thread-154424] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:23:34.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:23:34.075 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:23:34.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:23:34.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 23, 20), 9.75, 51.45, 0.0, 18.58, 11.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:23:34.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:23:20
2025-09-29T11:23:34.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:23:34.942 [DEBUG] [Thread-154426] [transport.py] [_log()] starting thread (client mode): 0x2e348be0
2025-09-29T11:23:34.942 [DEBUG] [Thread-154426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:23:34.963 [DEBUG] [Thread-154426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:23:34.963 [INFO] [Thread-154426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] client lang: <none>
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] server lang: <none>
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] kex follows: False
2025-09-29T11:23:34.966 [DEBUG] [Thread-154426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:23:34.967 [DEBUG] [Thread-154426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:23:34.967 [DEBUG] [Thread-154426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:23:34.967 [DEBUG] [Thread-154426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:23:34.967 [DEBUG] [Thread-154426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:23:34.967 [DEBUG] [Thread-154426] [transport.py] [_log()] Compression: none
2025-09-29T11:23:34.967 [DEBUG] [Thread-154426] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:23:34.982 [DEBUG] [Thread-154426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:23:34.983 [DEBUG] [Thread-154426] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:23:34.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:23:34.983 [DEBUG] [Thread-154426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:23:34.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:23:34.983 [DEBUG] [Thread-154426] [transport.py] [_log()] userauth is OK
2025-09-29T11:23:34.983 [DEBUG] [Thread-154426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:23:34.983 [DEBUG] [Thread-154426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:23:34.984 [DEBUG] [Thread-154426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:23:34.984 [DEBUG] [Thread-154426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:23:34.992 [INFO] [Thread-154426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:23:34.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:23:35.409 [DEBUG] [Thread-154428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:23:35.606 [DEBUG] [Thread-154426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:23:35.606 [DEBUG] [Thread-154426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:23:35.606 [DEBUG] [Thread-154426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:23:35.647 [DEBUG] [Thread-154426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:23:35.647 [DEBUG] [Thread-154426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:23:35.650 [DEBUG] [Thread-154426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:23:35.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:23:35.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:23:35.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:23:35.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:23:35.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:23:35.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:23:35.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:23:35.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:23:35.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:23:35.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.391044 -999.00  +12.60  16.62     55   +3.80 1 1 1 1 1   888    0 8.70 19.43 ----- 20.3 16.6 170.4 24.5 20.6 -24.4 19.1 -24.5 18.6 -25.0 19.9 -26.0
2025-09-29T11:23:35.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:23:35.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:23:35.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.391044
2025-09-29T11:23:35.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:23:35.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:23:35.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:23:35.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:23:35.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:23:35.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:23:20', tmtdew=9.75, humidity=51.45, cloud=0.0, wind=18.58, temperature=11.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:23:06.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:23:35.675 [DEBUG] [Thread-154426] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:23:35.750 [DEBUG] [Thread-154430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:23:35.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:23:35.771 [DEBUG] [Thread-154431] [transport.py] [_log()] starting thread (client mode): 0x2e34b9a0
2025-09-29T11:23:35.771 [DEBUG] [Thread-154431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:23:35.786 [DEBUG] [Thread-154431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:23:35.786 [INFO] [Thread-154431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:23:35.794 [DEBUG] [Thread-154431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:23:35.794 [DEBUG] [Thread-154431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:23:35.794 [DEBUG] [Thread-154431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:23:35.794 [DEBUG] [Thread-154431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:35.794 [DEBUG] [Thread-154431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:35.794 [DEBUG] [Thread-154431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:35.794 [DEBUG] [Thread-154431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] client lang: <none>
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] server lang: <none>
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] kex follows: False
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:23:35.795 [DEBUG] [Thread-154431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:23:35.796 [DEBUG] [Thread-154431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:23:35.796 [DEBUG] [Thread-154431] [transport.py] [_log()] Compression: none
2025-09-29T11:23:35.796 [DEBUG] [Thread-154431] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:23:35.855 [DEBUG] [Thread-154431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:23:35.856 [DEBUG] [Thread-154431] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:23:35.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:23:35.856 [DEBUG] [Thread-154431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:23:35.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:23:35.911 [DEBUG] [Thread-154431] [transport.py] [_log()] userauth is OK
2025-09-29T11:23:35.911 [DEBUG] [Thread-154431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:23:35.911 [DEBUG] [Thread-154431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:23:35.911 [DEBUG] [Thread-154431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:23:35.911 [DEBUG] [Thread-154431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:23:35.931 [INFO] [Thread-154431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:23:35.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:23:35.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:23:36.857 [DEBUG] [Thread-154431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:23:36.857 [DEBUG] [Thread-154431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:23:36.905 [DEBUG] [Thread-154431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:23:36.905 [DEBUG] [Thread-154431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:23:36.914 [DEBUG] [Thread-154431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:23:36.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:23:36.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:23:36.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:23:36.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:23:36.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:23:36.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:23:36.948 [DEBUG] [Thread-154431] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:23:38.045 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:23:38.046 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:23:46.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:23:46.952 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:23:46.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:23:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 23, 20), 9.75, 51.45, 0.0, 18.58, 11.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:23:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:23:20
2025-09-29T11:23:47.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:23:47.804 [DEBUG] [Thread-154433] [transport.py] [_log()] starting thread (client mode): 0x2e34a2f0
2025-09-29T11:23:47.804 [DEBUG] [Thread-154433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:23:47.822 [DEBUG] [Thread-154433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:23:47.822 [INFO] [Thread-154433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] client lang: <none>
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] server lang: <none>
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] kex follows: False
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] Compression: none
2025-09-29T11:23:47.826 [DEBUG] [Thread-154433] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:23:47.843 [DEBUG] [Thread-154433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:23:47.843 [DEBUG] [Thread-154433] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:23:47.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:23:47.844 [DEBUG] [Thread-154433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:23:47.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:23:47.846 [DEBUG] [Thread-154433] [transport.py] [_log()] userauth is OK
2025-09-29T11:23:47.846 [DEBUG] [Thread-154433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:23:47.846 [DEBUG] [Thread-154433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:23:47.846 [DEBUG] [Thread-154433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:23:47.846 [DEBUG] [Thread-154433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:23:47.870 [INFO] [Thread-154433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:23:47.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:23:48.511 [DEBUG] [Thread-154433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:23:48.511 [DEBUG] [Thread-154433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:23:48.511 [DEBUG] [Thread-154433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:23:48.552 [DEBUG] [Thread-154433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:23:48.552 [DEBUG] [Thread-154433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:23:48.555 [DEBUG] [Thread-154433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:23:48.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:23:48.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:23:48.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:23:48.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:23:48.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:23:48.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:23:48.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:23:48.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:23:48.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:23:48.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.391044 -999.00  +12.60  16.62     55   +3.80 1 1 1 1 1   888    0 8.70 19.43 ----- 20.3 16.6 170.4 24.5 20.6 -24.4 19.1 -24.5 18.6 -25.0 19.9 -26.0
2025-09-29T11:23:48.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:23:48.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:23:48.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.391044
2025-09-29T11:23:48.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:23:48.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:23:48.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:23:48.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:23:48.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:23:48.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:23:20', tmtdew=9.75, humidity=51.45, cloud=0.0, wind=18.58, temperature=11.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:23:06.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:23:48.581 [DEBUG] [Thread-154433] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:23:48.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:23:48.675 [DEBUG] [Thread-154436] [transport.py] [_log()] starting thread (client mode): 0x2b91da50
2025-09-29T11:23:48.675 [DEBUG] [Thread-154436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:23:48.689 [DEBUG] [Thread-154436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:23:48.689 [INFO] [Thread-154436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:23:48.697 [DEBUG] [Thread-154436] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:23:48.697 [DEBUG] [Thread-154436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:23:48.697 [DEBUG] [Thread-154436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:23:48.697 [DEBUG] [Thread-154436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] client lang: <none>
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] server lang: <none>
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] kex follows: False
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] Compression: none
2025-09-29T11:23:48.698 [DEBUG] [Thread-154436] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:23:48.754 [DEBUG] [Thread-154436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:23:48.754 [DEBUG] [Thread-154436] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:23:48.755 [DEBUG] [Thread-154436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:23:48.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:23:48.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:23:48.810 [DEBUG] [Thread-154436] [transport.py] [_log()] userauth is OK
2025-09-29T11:23:48.810 [DEBUG] [Thread-154436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:23:48.811 [DEBUG] [Thread-154436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:23:48.811 [DEBUG] [Thread-154436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:23:48.811 [DEBUG] [Thread-154436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:23:48.832 [INFO] [Thread-154436] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:23:48.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:23:48.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:23:49.812 [DEBUG] [Thread-154436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:23:49.812 [DEBUG] [Thread-154436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:23:49.860 [DEBUG] [Thread-154436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:23:49.860 [DEBUG] [Thread-154436] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:23:49.869 [DEBUG] [Thread-154436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:23:49.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:23:49.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:23:49.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:23:49.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:23:49.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:23:49.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:23:49.904 [DEBUG] [Thread-154436] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:23:50.454 [DEBUG] [Thread-154438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:23:59.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:23:59.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:23:59.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:24:00.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 23, 52), 9.65, 51.71, 0.0, 16.18, 11.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:24:00.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:23:52
2025-09-29T11:24:00.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:24:00.784 [DEBUG] [Thread-154439] [transport.py] [_log()] starting thread (client mode): 0x28707dc0
2025-09-29T11:24:00.784 [DEBUG] [Thread-154439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:00.805 [DEBUG] [Thread-154439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:24:00.805 [INFO] [Thread-154439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:24:00.808 [DEBUG] [Thread-154439] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:00.808 [DEBUG] [Thread-154439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:24:00.808 [DEBUG] [Thread-154439] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] Compression: none
2025-09-29T11:24:00.809 [DEBUG] [Thread-154439] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:00.828 [DEBUG] [Thread-154439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:00.828 [DEBUG] [Thread-154439] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:00.829 [DEBUG] [Thread-154439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:24:00.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:24:00.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:00.831 [DEBUG] [Thread-154439] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:00.831 [DEBUG] [Thread-154439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:00.831 [DEBUG] [Thread-154439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:00.832 [DEBUG] [Thread-154439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:24:00.832 [DEBUG] [Thread-154439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:00.857 [INFO] [Thread-154439] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:00.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:01.502 [DEBUG] [Thread-154439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:01.502 [DEBUG] [Thread-154439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:01.502 [DEBUG] [Thread-154439] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:24:01.543 [DEBUG] [Thread-154439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:01.544 [DEBUG] [Thread-154439] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:01.546 [DEBUG] [Thread-154439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:01.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:01.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:24:01.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:24:01.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:24:01.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:01.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:24:01.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:01.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:01.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:24:01.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.391391 -999.00  +12.50  13.15     55   +3.80 1 1 1 1 1   888    0 8.81 20.70 ----- 12.2 13.2 201.4 22.9 20.5 -24.6 18.8 -26.7 18.7 -25.7 19.9 -25.4
2025-09-29T11:24:01.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:24:01.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:24:01.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.391391
2025-09-29T11:24:01.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:24:01.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:24:01.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:24:01.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:24:01.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:24:01.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:23:52', tmtdew=9.65, humidity=51.71, cloud=0.0, wind=16.18, temperature=11.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:23:36.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:24:01.569 [DEBUG] [Thread-154439] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:01.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:24:01.666 [DEBUG] [Thread-154442] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c30
2025-09-29T11:24:01.666 [DEBUG] [Thread-154442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:01.680 [DEBUG] [Thread-154442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:24:01.681 [INFO] [Thread-154442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:24:01.688 [DEBUG] [Thread-154442] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:01.688 [DEBUG] [Thread-154442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] Compression: none
2025-09-29T11:24:01.689 [DEBUG] [Thread-154442] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:01.746 [DEBUG] [Thread-154442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:01.747 [DEBUG] [Thread-154442] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:01.747 [DEBUG] [Thread-154442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:24:01.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:24:01.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:01.803 [DEBUG] [Thread-154442] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:01.803 [DEBUG] [Thread-154442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:01.803 [DEBUG] [Thread-154442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:01.803 [DEBUG] [Thread-154442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:24:01.803 [DEBUG] [Thread-154442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:01.823 [INFO] [Thread-154442] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:01.823 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:24:01.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:02.798 [DEBUG] [Thread-154442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:02.799 [DEBUG] [Thread-154442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:02.846 [DEBUG] [Thread-154442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:02.846 [DEBUG] [Thread-154442] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:02.854 [DEBUG] [Thread-154442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:02.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:02.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:24:02.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:24:02.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:02.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:02.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:02.886 [DEBUG] [Thread-154442] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:05.503 [DEBUG] [Thread-154444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:24:12.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:24:12.887 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:24:12.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:24:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 23, 52), 9.65, 51.71, 0.0, 16.18, 11.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:24:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:23:52
2025-09-29T11:24:13.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:24:13.757 [DEBUG] [Thread-154445] [transport.py] [_log()] starting thread (client mode): 0x28705de0
2025-09-29T11:24:13.757 [DEBUG] [Thread-154445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:13.778 [DEBUG] [Thread-154445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:24:13.778 [INFO] [Thread-154445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] Compression: none
2025-09-29T11:24:13.780 [DEBUG] [Thread-154445] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:13.795 [DEBUG] [Thread-154445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:13.795 [DEBUG] [Thread-154445] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:13.796 [DEBUG] [Thread-154445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:24:13.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:24:13.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:13.798 [DEBUG] [Thread-154445] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:13.798 [DEBUG] [Thread-154445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:13.798 [DEBUG] [Thread-154445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:13.798 [DEBUG] [Thread-154445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:24:13.798 [DEBUG] [Thread-154445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:13.833 [INFO] [Thread-154445] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:13.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:14.488 [DEBUG] [Thread-154445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:14.488 [DEBUG] [Thread-154445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:14.489 [DEBUG] [Thread-154445] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:24:14.529 [DEBUG] [Thread-154445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:14.529 [DEBUG] [Thread-154445] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:14.532 [DEBUG] [Thread-154445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:14.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:14.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:24:14.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:24:14.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:24:14.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:14.555 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:24:14.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:14.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:14.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:24:14.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.391391 -999.00  +12.50  13.15     55   +3.80 1 1 1 1 1   888    0 8.81 20.70 ----- 12.2 13.2 201.4 22.9 20.5 -24.6 18.8 -26.7 18.7 -25.7 19.9 -25.4
2025-09-29T11:24:14.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:24:14.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:24:14.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.391391
2025-09-29T11:24:14.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:24:14.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:24:14.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:24:14.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:24:14.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:24:14.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:23:52', tmtdew=9.65, humidity=51.71, cloud=0.0, wind=16.18, temperature=11.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:23:36.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:24:14.558 [DEBUG] [Thread-154445] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:14.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:24:14.653 [DEBUG] [Thread-154448] [transport.py] [_log()] starting thread (client mode): 0x287040d0
2025-09-29T11:24:14.653 [DEBUG] [Thread-154448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:14.667 [DEBUG] [Thread-154448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:24:14.667 [INFO] [Thread-154448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] Compression: none
2025-09-29T11:24:14.675 [DEBUG] [Thread-154448] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:14.734 [DEBUG] [Thread-154448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:14.734 [DEBUG] [Thread-154448] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:14.735 [DEBUG] [Thread-154448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:24:14.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:24:14.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:14.790 [DEBUG] [Thread-154448] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:14.791 [DEBUG] [Thread-154448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:14.791 [DEBUG] [Thread-154448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:14.791 [DEBUG] [Thread-154448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:24:14.791 [DEBUG] [Thread-154448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:14.809 [INFO] [Thread-154448] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:14.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:24:14.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:15.777 [DEBUG] [Thread-154448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:15.778 [DEBUG] [Thread-154448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:15.825 [DEBUG] [Thread-154448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:15.825 [DEBUG] [Thread-154448] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:15.833 [DEBUG] [Thread-154448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:15.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:15.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:24:15.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:24:15.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:15.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:15.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:15.865 [DEBUG] [Thread-154448] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:20.537 [DEBUG] [Thread-154450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:24:25.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:24:25.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:24:25.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:24:26.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 23, 52), 9.65, 51.71, 0.0, 16.18, 11.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:24:26.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:23:52
2025-09-29T11:24:26.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:24:26.769 [DEBUG] [Thread-154451] [transport.py] [_log()] starting thread (client mode): 0x287058a0
2025-09-29T11:24:26.769 [DEBUG] [Thread-154451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:26.789 [DEBUG] [Thread-154451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:24:26.789 [INFO] [Thread-154451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] Compression: none
2025-09-29T11:24:26.793 [DEBUG] [Thread-154451] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:26.809 [DEBUG] [Thread-154451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:26.810 [DEBUG] [Thread-154451] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:26.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:24:26.810 [DEBUG] [Thread-154451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:24:26.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:26.811 [DEBUG] [Thread-154451] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:26.811 [DEBUG] [Thread-154451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:26.811 [DEBUG] [Thread-154451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:26.811 [DEBUG] [Thread-154451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:24:26.811 [DEBUG] [Thread-154451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:26.829 [INFO] [Thread-154451] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:26.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:27.421 [DEBUG] [Thread-154451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:27.421 [DEBUG] [Thread-154451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:27.422 [DEBUG] [Thread-154451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:24:27.462 [DEBUG] [Thread-154451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:27.462 [DEBUG] [Thread-154451] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:27.465 [DEBUG] [Thread-154451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:27.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:27.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:24:27.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:24:27.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:24:27.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:27.485 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:24:27.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:27.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:27.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:24:27.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.391391 -999.00  +12.50  13.15     55   +3.80 1 1 1 1 1   888    0 8.81 20.70 ----- 12.2 13.2 201.4 22.9 20.5 -24.6 18.8 -26.7 18.7 -25.7 19.9 -25.4
2025-09-29T11:24:27.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:24:27.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:24:27.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.391391
2025-09-29T11:24:27.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:24:27.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:24:27.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:24:27.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:24:27.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:24:27.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:23:52', tmtdew=9.65, humidity=51.71, cloud=0.0, wind=16.18, temperature=11.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:23:36.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:24:27.488 [DEBUG] [Thread-154451] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:27.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:24:27.584 [DEBUG] [Thread-154454] [transport.py] [_log()] starting thread (client mode): 0x2e349570
2025-09-29T11:24:27.584 [DEBUG] [Thread-154454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:27.599 [DEBUG] [Thread-154454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:24:27.599 [INFO] [Thread-154454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:24:27.607 [DEBUG] [Thread-154454] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:27.607 [DEBUG] [Thread-154454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:24:27.607 [DEBUG] [Thread-154454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:27.607 [DEBUG] [Thread-154454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:27.608 [DEBUG] [Thread-154454] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:27.609 [DEBUG] [Thread-154454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:27.609 [DEBUG] [Thread-154454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:27.609 [DEBUG] [Thread-154454] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:27.609 [DEBUG] [Thread-154454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:27.609 [DEBUG] [Thread-154454] [transport.py] [_log()] Compression: none
2025-09-29T11:24:27.609 [DEBUG] [Thread-154454] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:27.667 [DEBUG] [Thread-154454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:27.667 [DEBUG] [Thread-154454] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:27.668 [DEBUG] [Thread-154454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:24:27.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:24:27.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:27.723 [DEBUG] [Thread-154454] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:27.723 [DEBUG] [Thread-154454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:27.723 [DEBUG] [Thread-154454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:27.723 [DEBUG] [Thread-154454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:24:27.723 [DEBUG] [Thread-154454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:27.741 [INFO] [Thread-154454] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:27.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:24:27.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:28.708 [DEBUG] [Thread-154454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:28.708 [DEBUG] [Thread-154454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:28.756 [DEBUG] [Thread-154454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:28.756 [DEBUG] [Thread-154454] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:28.765 [DEBUG] [Thread-154454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:28.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:28.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:24:28.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:24:28.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:28.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:28.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:28.800 [DEBUG] [Thread-154454] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:35.570 [DEBUG] [Thread-154456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:24:35.800 [DEBUG] [Thread-154457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:24:38.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:24:38.188 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:24:38.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:24:38.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:24:38.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:24:39.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 24, 24), 9.63, 51.8, 0.0, 19.36, 11.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:24:39.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:24:24
2025-09-29T11:24:39.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:24:39.655 [DEBUG] [Thread-154458] [transport.py] [_log()] starting thread (client mode): 0x2e348dc0
2025-09-29T11:24:39.655 [DEBUG] [Thread-154458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:39.675 [DEBUG] [Thread-154458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:24:39.675 [INFO] [Thread-154458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] Compression: none
2025-09-29T11:24:39.679 [DEBUG] [Thread-154458] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:39.696 [DEBUG] [Thread-154458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:39.696 [DEBUG] [Thread-154458] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:39.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:24:39.697 [DEBUG] [Thread-154458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:24:39.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:39.699 [DEBUG] [Thread-154458] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:39.700 [DEBUG] [Thread-154458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:39.700 [DEBUG] [Thread-154458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:39.700 [DEBUG] [Thread-154458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:24:39.700 [DEBUG] [Thread-154458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:39.723 [INFO] [Thread-154458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:39.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:40.393 [DEBUG] [Thread-154458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:40.393 [DEBUG] [Thread-154458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:40.393 [DEBUG] [Thread-154458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:24:40.434 [DEBUG] [Thread-154458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:40.434 [DEBUG] [Thread-154458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:40.437 [DEBUG] [Thread-154458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:40.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:40.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:24:40.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:24:40.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:24:40.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:40.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:24:40.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:40.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:40.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:24:40.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.391739 -999.00  +12.50  15.01     55   +3.90 1 1 1 1 1   888    0 8.83 22.82 ----- 17.5 15.0 172.4 19.6 20.6 -23.7 18.9 -24.1 18.7 -24.2 19.9 -25.2
2025-09-29T11:24:40.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:24:40.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:24:40.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.391739
2025-09-29T11:24:40.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:24:40.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:24:40.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:24:40.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:24:40.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:24:40.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:24:24', tmtdew=9.63, humidity=51.8, cloud=0.0, wind=19.36, temperature=11.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:24:06.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:24:40.463 [DEBUG] [Thread-154458] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:40.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:24:40.564 [DEBUG] [Thread-154461] [transport.py] [_log()] starting thread (client mode): 0x28706770
2025-09-29T11:24:40.564 [DEBUG] [Thread-154461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:40.580 [DEBUG] [Thread-154461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:24:40.580 [INFO] [Thread-154461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:24:40.589 [DEBUG] [Thread-154461] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] Compression: none
2025-09-29T11:24:40.590 [DEBUG] [Thread-154461] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:40.648 [DEBUG] [Thread-154461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:40.648 [DEBUG] [Thread-154461] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:40.649 [DEBUG] [Thread-154461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:24:40.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:24:40.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:40.703 [DEBUG] [Thread-154461] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:40.703 [DEBUG] [Thread-154461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:40.703 [DEBUG] [Thread-154461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:40.704 [DEBUG] [Thread-154461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:24:40.704 [DEBUG] [Thread-154461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:40.723 [INFO] [Thread-154461] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:40.724 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:24:40.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:41.730 [DEBUG] [Thread-154461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:41.730 [DEBUG] [Thread-154461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:41.778 [DEBUG] [Thread-154461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:41.778 [DEBUG] [Thread-154461] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:41.787 [DEBUG] [Thread-154461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:41.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:41.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:24:41.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:24:41.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:41.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:41.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:41.821 [DEBUG] [Thread-154461] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:50.598 [DEBUG] [Thread-154463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:24:51.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:24:51.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:24:51.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:24:52.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 24, 24), 9.63, 51.8, 0.0, 19.36, 11.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:24:52.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:24:24
2025-09-29T11:24:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:24:52.688 [DEBUG] [Thread-154464] [transport.py] [_log()] starting thread (client mode): 0x287052d0
2025-09-29T11:24:52.688 [DEBUG] [Thread-154464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:52.709 [DEBUG] [Thread-154464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:24:52.709 [INFO] [Thread-154464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:24:52.712 [DEBUG] [Thread-154464] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:52.712 [DEBUG] [Thread-154464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] Compression: none
2025-09-29T11:24:52.713 [DEBUG] [Thread-154464] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:52.729 [DEBUG] [Thread-154464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:52.730 [DEBUG] [Thread-154464] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:52.730 [DEBUG] [Thread-154464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:24:52.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:24:52.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:52.733 [DEBUG] [Thread-154464] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:52.733 [DEBUG] [Thread-154464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:52.733 [DEBUG] [Thread-154464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:52.733 [DEBUG] [Thread-154464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:24:52.733 [DEBUG] [Thread-154464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:52.759 [INFO] [Thread-154464] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:52.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:53.416 [DEBUG] [Thread-154464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:53.416 [DEBUG] [Thread-154464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:53.416 [DEBUG] [Thread-154464] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:24:53.457 [DEBUG] [Thread-154464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:53.458 [DEBUG] [Thread-154464] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:53.461 [DEBUG] [Thread-154464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:53.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:53.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:24:53.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:24:53.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:24:53.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:53.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:24:53.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:53.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:24:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.391739 -999.00  +12.50  15.01     55   +3.90 1 1 1 1 1   888    0 8.83 22.82 ----- 17.5 15.0 172.4 19.6 20.6 -23.7 18.9 -24.1 18.7 -24.2 19.9 -25.2
2025-09-29T11:24:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:24:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:24:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.391739
2025-09-29T11:24:53.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:24:53.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:24:53.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:24:53.484 [DEBUG] [Thread-154464] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:24:53.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:24:53.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:24:53.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:24:24', tmtdew=9.63, humidity=51.8, cloud=0.0, wind=19.36, temperature=11.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:24:06.250', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:24:53.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:24:53.583 [DEBUG] [Thread-154467] [transport.py] [_log()] starting thread (client mode): 0x28704490
2025-09-29T11:24:53.583 [DEBUG] [Thread-154467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:24:53.597 [DEBUG] [Thread-154467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:24:53.597 [INFO] [Thread-154467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] client lang: <none>
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] server lang: <none>
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] kex follows: False
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] Compression: none
2025-09-29T11:24:53.605 [DEBUG] [Thread-154467] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:24:53.662 [DEBUG] [Thread-154467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:24:53.662 [DEBUG] [Thread-154467] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:24:53.662 [DEBUG] [Thread-154467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:24:53.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:24:53.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:24:53.719 [DEBUG] [Thread-154467] [transport.py] [_log()] userauth is OK
2025-09-29T11:24:53.719 [DEBUG] [Thread-154467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:24:53.720 [DEBUG] [Thread-154467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:24:53.720 [DEBUG] [Thread-154467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:24:53.720 [DEBUG] [Thread-154467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:24:53.741 [INFO] [Thread-154467] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:24:53.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:24:53.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:24:54.699 [DEBUG] [Thread-154467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:24:54.699 [DEBUG] [Thread-154467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:24:54.747 [DEBUG] [Thread-154467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:24:54.747 [DEBUG] [Thread-154467] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:24:54.756 [DEBUG] [Thread-154467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:24:54.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:24:54.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:24:54.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:24:54.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:24:54.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:24:54.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:24:54.792 [DEBUG] [Thread-154467] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:25:04.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:25:04.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:25:04.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:25:05.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 24, 56), 9.47, 51.96, 0.0, 14.96, 11.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:25:05.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:24:56
2025-09-29T11:25:05.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:25:05.632 [DEBUG] [Thread-154469] [transport.py] [_log()] starting thread (client mode): 0x28707f40
2025-09-29T11:25:05.639 [DEBUG] [Thread-154470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:25:05.641 [DEBUG] [Thread-154469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:25:05.655 [DEBUG] [Thread-154469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:25:05.655 [INFO] [Thread-154469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] client lang: <none>
2025-09-29T11:25:05.657 [DEBUG] [Thread-154469] [transport.py] [_log()] server lang: <none>
2025-09-29T11:25:05.658 [DEBUG] [Thread-154469] [transport.py] [_log()] kex follows: False
2025-09-29T11:25:05.658 [DEBUG] [Thread-154469] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:25:05.658 [DEBUG] [Thread-154469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:25:05.658 [DEBUG] [Thread-154469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:25:05.658 [DEBUG] [Thread-154469] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:25:05.658 [DEBUG] [Thread-154469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:25:05.658 [DEBUG] [Thread-154469] [transport.py] [_log()] Compression: none
2025-09-29T11:25:05.658 [DEBUG] [Thread-154469] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:25:05.669 [DEBUG] [Thread-154469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:25:05.670 [DEBUG] [Thread-154469] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:25:05.670 [DEBUG] [Thread-154469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:25:05.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:25:05.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:25:05.716 [DEBUG] [Thread-154469] [transport.py] [_log()] userauth is OK
2025-09-29T11:25:05.716 [DEBUG] [Thread-154469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:25:05.716 [DEBUG] [Thread-154469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:25:05.716 [DEBUG] [Thread-154469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:25:05.716 [DEBUG] [Thread-154469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:25:05.748 [INFO] [Thread-154469] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:25:05.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:25:08.938 [DEBUG] [Thread-154469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:25:08.938 [DEBUG] [Thread-154469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:25:08.939 [DEBUG] [Thread-154469] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:25:08.979 [DEBUG] [Thread-154469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:25:08.980 [DEBUG] [Thread-154469] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:25:08.982 [DEBUG] [Thread-154469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:25:08.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:25:08.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:25:08.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:25:08.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:25:09.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:25:09.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:25:09.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:25:09.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:25:09.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:25:09.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.392086 -999.00  +12.20  12.34     55   +3.60 1 1 1 1 1   888    0 9.11 25.39 ----- 11.7 12.3 188.2 24.1 20.6 -24.7 18.9 -28.3 18.7 -25.1 19.9 -26.3
2025-09-29T11:25:09.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:25:09.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:25:09.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.392086
2025-09-29T11:25:09.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:25:09.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:25:09.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:25:09.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:25:09.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:25:09.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:24:56', tmtdew=9.47, humidity=51.96, cloud=0.0, wind=14.96, temperature=11.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:24:36.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:25:09.018 [DEBUG] [Thread-154469] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:25:09.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:25:09.114 [DEBUG] [Thread-154473] [transport.py] [_log()] starting thread (client mode): 0x2e34a5f0
2025-09-29T11:25:09.114 [DEBUG] [Thread-154473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:25:09.129 [DEBUG] [Thread-154473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:25:09.129 [INFO] [Thread-154473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:25:09.137 [DEBUG] [Thread-154473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] client lang: <none>
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] server lang: <none>
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] kex follows: False
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:25:09.138 [DEBUG] [Thread-154473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:25:09.139 [DEBUG] [Thread-154473] [transport.py] [_log()] Compression: none
2025-09-29T11:25:09.139 [DEBUG] [Thread-154473] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:25:09.194 [DEBUG] [Thread-154473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:25:09.195 [DEBUG] [Thread-154473] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:25:09.195 [DEBUG] [Thread-154473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:25:09.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:25:09.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:25:09.251 [DEBUG] [Thread-154473] [transport.py] [_log()] userauth is OK
2025-09-29T11:25:09.251 [DEBUG] [Thread-154473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:25:09.251 [DEBUG] [Thread-154473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:25:09.251 [DEBUG] [Thread-154473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:25:09.252 [DEBUG] [Thread-154473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:25:09.273 [INFO] [Thread-154473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:25:09.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:25:09.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:25:10.202 [DEBUG] [Thread-154473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:25:10.202 [DEBUG] [Thread-154473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:25:10.250 [DEBUG] [Thread-154473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:25:10.250 [DEBUG] [Thread-154473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:25:10.259 [DEBUG] [Thread-154473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:25:10.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:25:10.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:25:10.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:25:10.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:25:10.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:25:10.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:25:10.296 [DEBUG] [Thread-154473] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:25:20.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:25:20.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:25:20.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:25:20.667 [DEBUG] [Thread-154475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:25:20.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 24, 56), 9.47, 51.96, 0.0, 14.96, 11.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:25:20.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:24:56
2025-09-29T11:25:21.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:25:21.150 [DEBUG] [Thread-154476] [transport.py] [_log()] starting thread (client mode): 0x2b96fb50
2025-09-29T11:25:21.150 [DEBUG] [Thread-154476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:25:21.170 [DEBUG] [Thread-154476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:25:21.170 [INFO] [Thread-154476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:25:21.173 [DEBUG] [Thread-154476] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:25:21.173 [DEBUG] [Thread-154476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:25:21.173 [DEBUG] [Thread-154476] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:25:21.173 [DEBUG] [Thread-154476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:21.173 [DEBUG] [Thread-154476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:21.173 [DEBUG] [Thread-154476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:21.173 [DEBUG] [Thread-154476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:21.173 [DEBUG] [Thread-154476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] client lang: <none>
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] server lang: <none>
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] kex follows: False
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] Compression: none
2025-09-29T11:25:21.174 [DEBUG] [Thread-154476] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:25:21.184 [DEBUG] [Thread-154476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:25:21.184 [DEBUG] [Thread-154476] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:25:21.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:25:21.186 [DEBUG] [Thread-154476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:25:21.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:25:21.188 [DEBUG] [Thread-154476] [transport.py] [_log()] userauth is OK
2025-09-29T11:25:21.188 [DEBUG] [Thread-154476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:25:21.188 [DEBUG] [Thread-154476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:25:21.188 [DEBUG] [Thread-154476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:25:21.188 [DEBUG] [Thread-154476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:25:21.208 [INFO] [Thread-154476] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:25:21.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:25:21.887 [DEBUG] [Thread-154476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:25:21.891 [DEBUG] [Thread-154476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:25:21.891 [DEBUG] [Thread-154476] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:25:21.928 [DEBUG] [Thread-154476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:25:21.928 [DEBUG] [Thread-154476] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:25:21.931 [DEBUG] [Thread-154476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:25:21.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:25:21.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:25:21.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:25:21.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:25:21.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:25:21.948 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:25:21.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:25:21.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:25:21.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:25:21.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.392086 -999.00  +12.20  12.34     55   +3.60 1 1 1 1 1   888    0 9.11 25.39 ----- 11.7 12.3 188.2 24.1 20.6 -24.7 18.9 -28.3 18.7 -25.1 19.9 -26.3
2025-09-29T11:25:21.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:25:21.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:25:21.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.392086
2025-09-29T11:25:21.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:25:21.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:25:21.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:25:21.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:25:21.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:25:21.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:24:56', tmtdew=9.47, humidity=51.96, cloud=0.0, wind=14.96, temperature=11.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:24:36.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:25:21.950 [DEBUG] [Thread-154476] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:25:22.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:25:22.033 [DEBUG] [Thread-154479] [transport.py] [_log()] starting thread (client mode): 0x2e34bf10
2025-09-29T11:25:22.033 [DEBUG] [Thread-154479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:25:22.051 [DEBUG] [Thread-154479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:25:22.051 [INFO] [Thread-154479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] client lang: <none>
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] server lang: <none>
2025-09-29T11:25:22.062 [DEBUG] [Thread-154479] [transport.py] [_log()] kex follows: False
2025-09-29T11:25:22.063 [DEBUG] [Thread-154479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:25:22.063 [DEBUG] [Thread-154479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:25:22.063 [DEBUG] [Thread-154479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:25:22.063 [DEBUG] [Thread-154479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:25:22.063 [DEBUG] [Thread-154479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:25:22.063 [DEBUG] [Thread-154479] [transport.py] [_log()] Compression: none
2025-09-29T11:25:22.063 [DEBUG] [Thread-154479] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:25:22.122 [DEBUG] [Thread-154479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:25:22.122 [DEBUG] [Thread-154479] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:25:22.123 [DEBUG] [Thread-154479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:25:22.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:25:22.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:25:22.187 [DEBUG] [Thread-154479] [transport.py] [_log()] userauth is OK
2025-09-29T11:25:22.187 [DEBUG] [Thread-154479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:25:22.187 [DEBUG] [Thread-154479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:25:22.188 [DEBUG] [Thread-154479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:25:22.188 [DEBUG] [Thread-154479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:25:22.211 [INFO] [Thread-154479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:25:22.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:25:22.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:25:23.156 [DEBUG] [Thread-154479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:25:23.157 [DEBUG] [Thread-154479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:25:23.208 [DEBUG] [Thread-154479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:25:23.208 [DEBUG] [Thread-154479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:25:23.216 [DEBUG] [Thread-154479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:25:23.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:25:23.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:25:23.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:25:23.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:25:23.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:25:23.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:25:23.248 [DEBUG] [Thread-154479] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:25:33.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:25:33.251 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:25:33.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:25:33.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 25, 28), 9.22, 52.84, 0.0, 13.41, 11.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:25:33.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:25:28
2025-09-29T11:25:33.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:25:34.093 [DEBUG] [Thread-154481] [transport.py] [_log()] starting thread (client mode): 0x2e3c20b0
2025-09-29T11:25:34.093 [DEBUG] [Thread-154481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:25:34.113 [DEBUG] [Thread-154481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:25:34.113 [INFO] [Thread-154481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:25:34.116 [DEBUG] [Thread-154481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] client lang: <none>
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] server lang: <none>
2025-09-29T11:25:34.117 [DEBUG] [Thread-154481] [transport.py] [_log()] kex follows: False
2025-09-29T11:25:34.118 [DEBUG] [Thread-154481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:25:34.118 [DEBUG] [Thread-154481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:25:34.118 [DEBUG] [Thread-154481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:25:34.118 [DEBUG] [Thread-154481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:25:34.118 [DEBUG] [Thread-154481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:25:34.118 [DEBUG] [Thread-154481] [transport.py] [_log()] Compression: none
2025-09-29T11:25:34.118 [DEBUG] [Thread-154481] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:25:34.135 [DEBUG] [Thread-154481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:25:34.136 [DEBUG] [Thread-154481] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:25:34.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:25:34.137 [DEBUG] [Thread-154481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:25:34.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:25:34.139 [DEBUG] [Thread-154481] [transport.py] [_log()] userauth is OK
2025-09-29T11:25:34.139 [DEBUG] [Thread-154481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:25:34.139 [DEBUG] [Thread-154481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:25:34.139 [DEBUG] [Thread-154481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:25:34.139 [DEBUG] [Thread-154481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:25:34.163 [INFO] [Thread-154481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:25:34.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:25:34.792 [DEBUG] [Thread-154481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:25:34.792 [DEBUG] [Thread-154481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:25:34.793 [DEBUG] [Thread-154481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:25:34.833 [DEBUG] [Thread-154481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:25:34.834 [DEBUG] [Thread-154481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:25:34.837 [DEBUG] [Thread-154481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:25:34.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:25:34.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:25:34.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:25:34.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:25:34.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:25:34.862 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:25:34.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:25:34.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:25:34.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:25:34.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.392086 -999.00  +12.20  12.34     55   +3.60 1 1 1 1 1   888    0 9.11 25.39 ----- 11.7 12.3 188.2 24.1 20.6 -24.7 18.9 -28.3 18.7 -25.1 19.9 -26.3
2025-09-29T11:25:34.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:25:34.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:25:34.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.392086
2025-09-29T11:25:34.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:25:34.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:25:34.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:25:34.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:25:34.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:25:34.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:25:28', tmtdew=9.22, humidity=52.84, cloud=0.0, wind=13.41, temperature=11.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:24:36.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:25:34.865 [DEBUG] [Thread-154481] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:25:34.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:25:35.714 [DEBUG] [Thread-154484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:25:35.853 [DEBUG] [Thread-154485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:25:38.334 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:25:38.335 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:25:50.758 [DEBUG] [Thread-154486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:26:05.787 [DEBUG] [Thread-154487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:26:20.815 [DEBUG] [Thread-154488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:26:35.846 [DEBUG] [Thread-154489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:26:35.907 [DEBUG] [Thread-154490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:26:38.475 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:26:38.476 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:26:50.874 [DEBUG] [Thread-154491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:27:05.901 [DEBUG] [Thread-154492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:27:20.926 [DEBUG] [Thread-154493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:27:35.956 [DEBUG] [Thread-154494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:27:35.958 [DEBUG] [Thread-154495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:27:38.619 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:27:38.620 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:27:49.691 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:27:50.982 [DEBUG] [Thread-154496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:27:59.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:27:59.700 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:27:59.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:28:00.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 27, 36), 9.6, 51.77, 0.0, 18.79, 11.64, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:28:00.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:27:36
2025-09-29T11:28:00.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:28:00.601 [DEBUG] [Thread-154497] [transport.py] [_log()] starting thread (client mode): 0x2e349930
2025-09-29T11:28:00.602 [DEBUG] [Thread-154497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:00.619 [DEBUG] [Thread-154497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:28:00.619 [INFO] [Thread-154497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] Compression: none
2025-09-29T11:28:00.622 [DEBUG] [Thread-154497] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:00.641 [DEBUG] [Thread-154497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:00.641 [DEBUG] [Thread-154497] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:00.641 [DEBUG] [Thread-154497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:28:00.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:28:00.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:00.642 [DEBUG] [Thread-154497] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:00.642 [DEBUG] [Thread-154497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:00.642 [DEBUG] [Thread-154497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:00.642 [DEBUG] [Thread-154497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:28:00.642 [DEBUG] [Thread-154497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:00.658 [INFO] [Thread-154497] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:00.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:01.260 [DEBUG] [Thread-154497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:01.260 [DEBUG] [Thread-154497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:01.261 [DEBUG] [Thread-154497] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:28:01.301 [DEBUG] [Thread-154497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:01.301 [DEBUG] [Thread-154497] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:01.305 [DEBUG] [Thread-154497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:01.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:01.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:28:01.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:28:01.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:28:01.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:01.326 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:28:01.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:01.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:28:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.394169 -999.00  +12.30  14.57     54   +3.50 1 1 1 1 1   888    0 9.25 29.58 ----- 17.0 14.6 177.6 22.8 19.9 -24.6 18.3 -27.9 18.2 -25.3 19.5 -26.2
2025-09-29T11:28:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:28:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:28:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.394169
2025-09-29T11:28:01.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:28:01.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:28:01.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:28:01.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:28:01.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:28:01.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:27:36', tmtdew=9.6, humidity=51.77, cloud=0.0, wind=18.79, temperature=11.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:27:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:28:01.329 [DEBUG] [Thread-154497] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:01.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:28:01.426 [DEBUG] [Thread-154500] [transport.py] [_log()] starting thread (client mode): 0x2e3c3a60
2025-09-29T11:28:01.426 [DEBUG] [Thread-154500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:01.440 [DEBUG] [Thread-154500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:28:01.440 [INFO] [Thread-154500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:28:01.448 [DEBUG] [Thread-154500] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:01.448 [DEBUG] [Thread-154500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:01.449 [DEBUG] [Thread-154500] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:01.450 [DEBUG] [Thread-154500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:01.450 [DEBUG] [Thread-154500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:01.450 [DEBUG] [Thread-154500] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:01.450 [DEBUG] [Thread-154500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:01.450 [DEBUG] [Thread-154500] [transport.py] [_log()] Compression: none
2025-09-29T11:28:01.450 [DEBUG] [Thread-154500] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:01.508 [DEBUG] [Thread-154500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:01.509 [DEBUG] [Thread-154500] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:01.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:28:01.510 [DEBUG] [Thread-154500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:28:01.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:01.564 [DEBUG] [Thread-154500] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:01.565 [DEBUG] [Thread-154500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:01.565 [DEBUG] [Thread-154500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:01.565 [DEBUG] [Thread-154500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:28:01.565 [DEBUG] [Thread-154500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:01.582 [INFO] [Thread-154500] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:01.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:28:01.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:02.625 [DEBUG] [Thread-154500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:02.626 [DEBUG] [Thread-154500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:02.673 [DEBUG] [Thread-154500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:02.673 [DEBUG] [Thread-154500] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:02.682 [DEBUG] [Thread-154500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:02.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:02.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:28:02.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:28:02.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:02.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:02.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:02.717 [DEBUG] [Thread-154500] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:06.011 [DEBUG] [Thread-154502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:28:12.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:28:12.720 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:28:12.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:28:13.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 28, 8), 9.44, 52.28, 0.0, 17.47, 11.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:28:13.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:28:08
2025-09-29T11:28:13.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:28:13.601 [DEBUG] [Thread-154503] [transport.py] [_log()] starting thread (client mode): 0x287046a0
2025-09-29T11:28:13.601 [DEBUG] [Thread-154503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:13.620 [DEBUG] [Thread-154503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:28:13.620 [INFO] [Thread-154503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] Compression: none
2025-09-29T11:28:13.624 [DEBUG] [Thread-154503] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:13.640 [DEBUG] [Thread-154503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:13.641 [DEBUG] [Thread-154503] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:13.641 [DEBUG] [Thread-154503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:28:13.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:28:13.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:13.643 [DEBUG] [Thread-154503] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:13.643 [DEBUG] [Thread-154503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:13.643 [DEBUG] [Thread-154503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:13.643 [DEBUG] [Thread-154503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:28:13.644 [DEBUG] [Thread-154503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:13.668 [INFO] [Thread-154503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:13.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:14.333 [DEBUG] [Thread-154503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:14.333 [DEBUG] [Thread-154503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:14.334 [DEBUG] [Thread-154503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:28:14.374 [DEBUG] [Thread-154503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:14.375 [DEBUG] [Thread-154503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:14.378 [DEBUG] [Thread-154503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:14.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:14.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:28:14.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:28:14.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:28:14.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:14.400 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:28:14.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:14.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:14.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:28:14.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.394169 -999.00  +12.30  14.57     54   +3.50 1 1 1 1 1   888    0 9.25 29.58 ----- 17.0 14.6 177.6 22.8 19.9 -24.6 18.3 -27.9 18.2 -25.3 19.5 -26.2
2025-09-29T11:28:14.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:28:14.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:28:14.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.394169
2025-09-29T11:28:14.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:28:14.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:28:14.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:28:14.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:28:14.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:28:14.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:28:08', tmtdew=9.44, humidity=52.28, cloud=0.0, wind=17.47, temperature=11.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:27:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:28:14.403 [DEBUG] [Thread-154503] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:14.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:28:14.498 [DEBUG] [Thread-154506] [transport.py] [_log()] starting thread (client mode): 0x2b9b8cd0
2025-09-29T11:28:14.498 [DEBUG] [Thread-154506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:14.512 [DEBUG] [Thread-154506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:28:14.512 [INFO] [Thread-154506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:28:14.520 [DEBUG] [Thread-154506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:14.520 [DEBUG] [Thread-154506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:28:14.520 [DEBUG] [Thread-154506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] Compression: none
2025-09-29T11:28:14.521 [DEBUG] [Thread-154506] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:14.576 [DEBUG] [Thread-154506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:14.577 [DEBUG] [Thread-154506] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:14.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:28:14.578 [DEBUG] [Thread-154506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:28:14.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:14.632 [DEBUG] [Thread-154506] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:14.633 [DEBUG] [Thread-154506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:14.633 [DEBUG] [Thread-154506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:14.633 [DEBUG] [Thread-154506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:28:14.633 [DEBUG] [Thread-154506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:14.657 [INFO] [Thread-154506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:14.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:28:14.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:15.573 [DEBUG] [Thread-154506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:15.573 [DEBUG] [Thread-154506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:15.621 [DEBUG] [Thread-154506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:15.621 [DEBUG] [Thread-154506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:15.630 [DEBUG] [Thread-154506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:15.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:15.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:28:15.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:28:15.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:15.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:15.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:15.664 [DEBUG] [Thread-154506] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:21.064 [DEBUG] [Thread-154508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:28:25.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:28:25.666 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:28:25.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:28:26.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 28, 8), 9.44, 52.28, 0.0, 17.47, 11.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:28:26.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:28:08
2025-09-29T11:28:26.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:28:26.537 [DEBUG] [Thread-154509] [transport.py] [_log()] starting thread (client mode): 0x2e34b0a0
2025-09-29T11:28:26.537 [DEBUG] [Thread-154509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:26.557 [DEBUG] [Thread-154509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:28:26.557 [INFO] [Thread-154509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:26.560 [DEBUG] [Thread-154509] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] Compression: none
2025-09-29T11:28:26.561 [DEBUG] [Thread-154509] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:26.579 [DEBUG] [Thread-154509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:26.579 [DEBUG] [Thread-154509] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:26.580 [DEBUG] [Thread-154509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:28:26.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:28:26.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:26.581 [DEBUG] [Thread-154509] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:26.582 [DEBUG] [Thread-154509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:26.582 [DEBUG] [Thread-154509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:26.582 [DEBUG] [Thread-154509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:28:26.582 [DEBUG] [Thread-154509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:26.620 [INFO] [Thread-154509] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:26.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:27.273 [DEBUG] [Thread-154509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:27.273 [DEBUG] [Thread-154509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:27.273 [DEBUG] [Thread-154509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:28:27.314 [DEBUG] [Thread-154509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:27.314 [DEBUG] [Thread-154509] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:27.317 [DEBUG] [Thread-154509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:27.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:27.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:28:27.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:28:27.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:28:27.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:27.339 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:28:27.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:27.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:27.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:28:27.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.394169 -999.00  +12.30  14.57     54   +3.50 1 1 1 1 1   888    0 9.25 29.58 ----- 17.0 14.6 177.6 22.8 19.9 -24.6 18.3 -27.9 18.2 -25.3 19.5 -26.2
2025-09-29T11:28:27.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:28:27.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:28:27.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.394169
2025-09-29T11:28:27.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:28:27.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:28:27.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:28:27.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:28:27.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:28:27.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:28:08', tmtdew=9.44, humidity=52.28, cloud=0.0, wind=17.47, temperature=11.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:27:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:28:27.342 [DEBUG] [Thread-154509] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:27.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:28:27.438 [DEBUG] [Thread-154512] [transport.py] [_log()] starting thread (client mode): 0x287074f0
2025-09-29T11:28:27.438 [DEBUG] [Thread-154512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:27.452 [DEBUG] [Thread-154512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:28:27.452 [INFO] [Thread-154512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] Compression: none
2025-09-29T11:28:27.460 [DEBUG] [Thread-154512] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:27.514 [DEBUG] [Thread-154512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:27.515 [DEBUG] [Thread-154512] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:27.515 [DEBUG] [Thread-154512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:28:27.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:28:27.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:27.572 [DEBUG] [Thread-154512] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:27.572 [DEBUG] [Thread-154512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:27.572 [DEBUG] [Thread-154512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:27.572 [DEBUG] [Thread-154512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:28:27.572 [DEBUG] [Thread-154512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:27.586 [INFO] [Thread-154512] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:27.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:28:27.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:28.530 [DEBUG] [Thread-154512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:28.530 [DEBUG] [Thread-154512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:28.578 [DEBUG] [Thread-154512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:28.578 [DEBUG] [Thread-154512] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:28.586 [DEBUG] [Thread-154512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:28.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:28.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:28:28.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:28:28.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:28.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:28.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:28.619 [DEBUG] [Thread-154512] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:36.004 [DEBUG] [Thread-154514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:28:36.103 [DEBUG] [Thread-154515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:28:38.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:28:38.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:28:38.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:28:38.761 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:28:38.762 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:28:39.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 28, 8), 9.44, 52.28, 0.0, 17.47, 11.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:28:39.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:28:08
2025-09-29T11:28:39.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:28:39.508 [DEBUG] [Thread-154516] [transport.py] [_log()] starting thread (client mode): 0x287049a0
2025-09-29T11:28:39.508 [DEBUG] [Thread-154516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:39.529 [DEBUG] [Thread-154516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:28:39.529 [INFO] [Thread-154516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:39.532 [DEBUG] [Thread-154516] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:39.533 [DEBUG] [Thread-154516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:39.533 [DEBUG] [Thread-154516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:39.533 [DEBUG] [Thread-154516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:39.533 [DEBUG] [Thread-154516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:39.533 [DEBUG] [Thread-154516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:39.533 [DEBUG] [Thread-154516] [transport.py] [_log()] Compression: none
2025-09-29T11:28:39.533 [DEBUG] [Thread-154516] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:39.551 [DEBUG] [Thread-154516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:39.552 [DEBUG] [Thread-154516] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:39.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:28:39.553 [DEBUG] [Thread-154516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:28:39.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:39.554 [DEBUG] [Thread-154516] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:39.555 [DEBUG] [Thread-154516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:39.555 [DEBUG] [Thread-154516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:39.555 [DEBUG] [Thread-154516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:28:39.555 [DEBUG] [Thread-154516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:39.589 [INFO] [Thread-154516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:39.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:40.179 [DEBUG] [Thread-154516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:40.180 [DEBUG] [Thread-154516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:40.180 [DEBUG] [Thread-154516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:28:40.221 [DEBUG] [Thread-154516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:40.221 [DEBUG] [Thread-154516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:40.223 [DEBUG] [Thread-154516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:40.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:40.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:28:40.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:28:40.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:28:40.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:40.243 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:28:40.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:40.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:40.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:28:40.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.394516 -999.00  +12.00  13.56     55   +3.30 1 1 1 1 1   888    0 9.22 29.78 ----- 12.6 13.6 171.0 18.2 19.9 -24.6 18.0 -27.9 18.2 -24.3 19.4 -25.4
2025-09-29T11:28:40.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:28:40.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:28:40.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.394516
2025-09-29T11:28:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:28:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:28:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:28:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:28:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:28:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:28:08', tmtdew=9.44, humidity=52.28, cloud=0.0, wind=17.47, temperature=11.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:28:06.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:28:40.245 [DEBUG] [Thread-154516] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:40.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:28:40.339 [DEBUG] [Thread-154519] [transport.py] [_log()] starting thread (client mode): 0x2b9c2e60
2025-09-29T11:28:40.339 [DEBUG] [Thread-154519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:40.353 [DEBUG] [Thread-154519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:28:40.353 [INFO] [Thread-154519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] Compression: none
2025-09-29T11:28:40.361 [DEBUG] [Thread-154519] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:40.419 [DEBUG] [Thread-154519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:40.419 [DEBUG] [Thread-154519] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:40.419 [DEBUG] [Thread-154519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:28:40.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:28:40.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:40.476 [DEBUG] [Thread-154519] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:40.477 [DEBUG] [Thread-154519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:40.477 [DEBUG] [Thread-154519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:40.477 [DEBUG] [Thread-154519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:28:40.477 [DEBUG] [Thread-154519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:40.491 [INFO] [Thread-154519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:40.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:28:40.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:41.418 [DEBUG] [Thread-154519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:41.418 [DEBUG] [Thread-154519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:41.466 [DEBUG] [Thread-154519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:41.466 [DEBUG] [Thread-154519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:41.474 [DEBUG] [Thread-154519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:41.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:41.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:28:41.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:28:41.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:41.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:41.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:41.506 [DEBUG] [Thread-154519] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:51.131 [DEBUG] [Thread-154521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:28:51.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:28:51.499 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:28:51.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:28:52.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 28, 40), 9.49, 52.14, 0.0, 19.71, 12.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:28:52.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:28:40
2025-09-29T11:28:52.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:28:52.384 [DEBUG] [Thread-154522] [transport.py] [_log()] starting thread (client mode): 0x28705690
2025-09-29T11:28:52.384 [DEBUG] [Thread-154522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:52.405 [DEBUG] [Thread-154522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:28:52.405 [INFO] [Thread-154522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:28:52.408 [DEBUG] [Thread-154522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:52.408 [DEBUG] [Thread-154522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:28:52.408 [DEBUG] [Thread-154522] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:52.408 [DEBUG] [Thread-154522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:52.408 [DEBUG] [Thread-154522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] Compression: none
2025-09-29T11:28:52.409 [DEBUG] [Thread-154522] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:52.426 [DEBUG] [Thread-154522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:52.427 [DEBUG] [Thread-154522] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:52.427 [DEBUG] [Thread-154522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:28:52.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:28:52.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:52.429 [DEBUG] [Thread-154522] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:52.430 [DEBUG] [Thread-154522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:52.430 [DEBUG] [Thread-154522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:52.430 [DEBUG] [Thread-154522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:28:52.430 [DEBUG] [Thread-154522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:52.443 [INFO] [Thread-154522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:52.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:53.090 [DEBUG] [Thread-154522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:53.091 [DEBUG] [Thread-154522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:53.091 [DEBUG] [Thread-154522] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:28:53.131 [DEBUG] [Thread-154522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:53.131 [DEBUG] [Thread-154522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:53.134 [DEBUG] [Thread-154522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:53.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:53.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:28:53.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:28:53.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:28:53.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:53.158 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:28:53.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:53.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:53.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:28:53.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.394516 -999.00  +12.00  13.56     55   +3.30 1 1 1 1 1   888    0 9.22 29.78 ----- 12.6 13.6 171.0 18.2 19.9 -24.6 18.0 -27.9 18.2 -24.3 19.4 -25.4
2025-09-29T11:28:53.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:28:53.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:28:53.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.394516
2025-09-29T11:28:53.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:28:53.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:28:53.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:28:53.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:28:53.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:28:53.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:28:40', tmtdew=9.49, humidity=52.14, cloud=0.0, wind=19.71, temperature=12.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:28:06.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:28:53.161 [DEBUG] [Thread-154522] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:28:53.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:28:53.255 [DEBUG] [Thread-154525] [transport.py] [_log()] starting thread (client mode): 0x2e349c90
2025-09-29T11:28:53.256 [DEBUG] [Thread-154525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:28:53.270 [DEBUG] [Thread-154525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:28:53.271 [INFO] [Thread-154525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:28:53.278 [DEBUG] [Thread-154525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:28:53.278 [DEBUG] [Thread-154525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:28:53.278 [DEBUG] [Thread-154525] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:28:53.278 [DEBUG] [Thread-154525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] client lang: <none>
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] server lang: <none>
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] kex follows: False
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:28:53.279 [DEBUG] [Thread-154525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:28:53.280 [DEBUG] [Thread-154525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:28:53.280 [DEBUG] [Thread-154525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:28:53.280 [DEBUG] [Thread-154525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:28:53.280 [DEBUG] [Thread-154525] [transport.py] [_log()] Compression: none
2025-09-29T11:28:53.280 [DEBUG] [Thread-154525] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:28:53.338 [DEBUG] [Thread-154525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:28:53.338 [DEBUG] [Thread-154525] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:28:53.339 [DEBUG] [Thread-154525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:28:53.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:28:53.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:28:53.397 [DEBUG] [Thread-154525] [transport.py] [_log()] userauth is OK
2025-09-29T11:28:53.397 [DEBUG] [Thread-154525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:28:53.397 [DEBUG] [Thread-154525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:28:53.397 [DEBUG] [Thread-154525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:28:53.397 [DEBUG] [Thread-154525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:28:53.417 [INFO] [Thread-154525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:28:53.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:28:53.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:28:54.359 [DEBUG] [Thread-154525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:28:54.359 [DEBUG] [Thread-154525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:28:54.407 [DEBUG] [Thread-154525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:28:54.407 [DEBUG] [Thread-154525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:28:54.416 [DEBUG] [Thread-154525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:28:54.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:28:54.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:28:54.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:28:54.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:28:54.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:28:54.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:28:54.451 [DEBUG] [Thread-154525] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:04.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:29:04.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:29:04.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:29:05.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 28, 40), 9.49, 52.14, 0.0, 19.71, 12.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:29:05.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:28:40
2025-09-29T11:29:05.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:29:05.317 [DEBUG] [Thread-154527] [transport.py] [_log()] starting thread (client mode): 0x2e3c2860
2025-09-29T11:29:05.318 [DEBUG] [Thread-154527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:05.330 [DEBUG] [Thread-154527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:29:05.331 [INFO] [Thread-154527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:05.333 [DEBUG] [Thread-154527] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:05.334 [DEBUG] [Thread-154527] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:05.334 [DEBUG] [Thread-154527] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:05.334 [DEBUG] [Thread-154527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:05.334 [DEBUG] [Thread-154527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:05.334 [DEBUG] [Thread-154527] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:05.334 [DEBUG] [Thread-154527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:05.334 [DEBUG] [Thread-154527] [transport.py] [_log()] Compression: none
2025-09-29T11:29:05.334 [DEBUG] [Thread-154527] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:05.346 [DEBUG] [Thread-154527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:05.346 [DEBUG] [Thread-154527] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:05.346 [DEBUG] [Thread-154527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:29:05.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:29:05.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:05.347 [DEBUG] [Thread-154527] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:05.347 [DEBUG] [Thread-154527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:05.347 [DEBUG] [Thread-154527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:05.347 [DEBUG] [Thread-154527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:29:05.347 [DEBUG] [Thread-154527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:05.362 [INFO] [Thread-154527] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:05.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:05.968 [DEBUG] [Thread-154527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:05.968 [DEBUG] [Thread-154527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:05.969 [DEBUG] [Thread-154527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:29:06.009 [DEBUG] [Thread-154527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:06.009 [DEBUG] [Thread-154527] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:06.012 [DEBUG] [Thread-154527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:06.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:06.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:29:06.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:29:06.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:29:06.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:06.034 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:29:06.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:06.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:06.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:29:06.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.394863 -999.00  +12.10  20.33     55   +3.40 1 1 1 1 1   888    0 9.19 30.68 ----- 20.9 20.3 170.2 28.3 19.9 -25.4 18.4 -23.2 18.3 -24.2 19.6 -24.5
2025-09-29T11:29:06.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:29:06.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:29:06.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.394863
2025-09-29T11:29:06.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:29:06.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:29:06.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:29:06.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:29:06.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:29:06.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:28:40', tmtdew=9.49, humidity=52.14, cloud=0.0, wind=19.71, temperature=12.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:28:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:29:06.037 [DEBUG] [Thread-154527] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:06.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:29:06.135 [DEBUG] [Thread-154530] [transport.py] [_log()] starting thread (client mode): 0x2b91f490
2025-09-29T11:29:06.135 [DEBUG] [Thread-154530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:06.150 [DEBUG] [Thread-154530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:29:06.150 [INFO] [Thread-154530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:29:06.157 [DEBUG] [Thread-154530] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] Compression: none
2025-09-29T11:29:06.158 [DEBUG] [Thread-154530] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:06.171 [DEBUG] [Thread-154532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:29:06.217 [DEBUG] [Thread-154530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:06.217 [DEBUG] [Thread-154530] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:06.217 [DEBUG] [Thread-154530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:29:06.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:29:06.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:06.273 [DEBUG] [Thread-154530] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:06.273 [DEBUG] [Thread-154530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:06.273 [DEBUG] [Thread-154530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:06.273 [DEBUG] [Thread-154530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:29:06.274 [DEBUG] [Thread-154530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:06.293 [INFO] [Thread-154530] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:06.293 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:29:06.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:07.235 [DEBUG] [Thread-154530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:07.235 [DEBUG] [Thread-154530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:07.283 [DEBUG] [Thread-154530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:07.283 [DEBUG] [Thread-154530] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:07.292 [DEBUG] [Thread-154530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:07.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:07.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:29:07.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:29:07.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:07.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:07.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:07.328 [DEBUG] [Thread-154530] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:17.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:29:17.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:29:17.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:29:17.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 29, 11), 9.66, 51.56, 0.0, 20.19, 12.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:29:17.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:29:11
2025-09-29T11:29:18.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:29:18.180 [DEBUG] [Thread-154533] [transport.py] [_log()] starting thread (client mode): 0x2b9b8e50
2025-09-29T11:29:18.181 [DEBUG] [Thread-154533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:18.202 [DEBUG] [Thread-154533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:29:18.202 [INFO] [Thread-154533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:29:18.205 [DEBUG] [Thread-154533] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:18.205 [DEBUG] [Thread-154533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:29:18.205 [DEBUG] [Thread-154533] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:18.205 [DEBUG] [Thread-154533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:18.205 [DEBUG] [Thread-154533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] Compression: none
2025-09-29T11:29:18.206 [DEBUG] [Thread-154533] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:18.222 [DEBUG] [Thread-154533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:18.223 [DEBUG] [Thread-154533] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:18.223 [DEBUG] [Thread-154533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:29:18.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:29:18.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:18.225 [DEBUG] [Thread-154533] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:18.225 [DEBUG] [Thread-154533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:18.225 [DEBUG] [Thread-154533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:18.226 [DEBUG] [Thread-154533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:29:18.226 [DEBUG] [Thread-154533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:18.249 [INFO] [Thread-154533] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:18.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:18.856 [DEBUG] [Thread-154533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:18.856 [DEBUG] [Thread-154533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:18.856 [DEBUG] [Thread-154533] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:29:18.897 [DEBUG] [Thread-154533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:18.898 [DEBUG] [Thread-154533] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:18.901 [DEBUG] [Thread-154533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:18.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:18.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:29:18.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:29:18.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:29:18.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:18.923 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:29:18.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:18.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:29:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.394863 -999.00  +12.10  20.33     55   +3.40 1 1 1 1 1   888    0 9.19 30.68 ----- 20.9 20.3 170.2 28.3 19.9 -25.4 18.4 -23.2 18.3 -24.2 19.6 -24.5
2025-09-29T11:29:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:29:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:29:18.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.394863
2025-09-29T11:29:18.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:29:18.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:29:18.925 [DEBUG] [Thread-154533] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:18.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:29:18.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:29:18.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:29:18.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:29:11', tmtdew=9.66, humidity=51.56, cloud=0.0, wind=20.19, temperature=12.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:28:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:29:19.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:29:19.018 [DEBUG] [Thread-154536] [transport.py] [_log()] starting thread (client mode): 0x2b9b9d50
2025-09-29T11:29:19.018 [DEBUG] [Thread-154536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:19.032 [DEBUG] [Thread-154536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:29:19.032 [INFO] [Thread-154536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:29:19.040 [DEBUG] [Thread-154536] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:19.040 [DEBUG] [Thread-154536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:29:19.040 [DEBUG] [Thread-154536] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:19.040 [DEBUG] [Thread-154536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] Compression: none
2025-09-29T11:29:19.041 [DEBUG] [Thread-154536] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:19.097 [DEBUG] [Thread-154536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:19.097 [DEBUG] [Thread-154536] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:19.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:29:19.098 [DEBUG] [Thread-154536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:29:19.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:19.153 [DEBUG] [Thread-154536] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:19.153 [DEBUG] [Thread-154536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:19.153 [DEBUG] [Thread-154536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:19.153 [DEBUG] [Thread-154536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:29:19.153 [DEBUG] [Thread-154536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:19.171 [INFO] [Thread-154536] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:19.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:29:19.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:20.114 [DEBUG] [Thread-154536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:20.114 [DEBUG] [Thread-154536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:20.162 [DEBUG] [Thread-154536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:20.162 [DEBUG] [Thread-154536] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:20.171 [DEBUG] [Thread-154536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:20.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:20.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:29:20.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:29:20.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:20.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:20.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:20.205 [DEBUG] [Thread-154536] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:21.214 [DEBUG] [Thread-154538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:29:30.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:29:30.208 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:29:30.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:29:30.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 29, 11), 9.66, 51.56, 0.0, 20.19, 12.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:29:30.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:29:11
2025-09-29T11:29:30.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:29:31.066 [DEBUG] [Thread-154539] [transport.py] [_log()] starting thread (client mode): 0x2e3c08e0
2025-09-29T11:29:31.066 [DEBUG] [Thread-154539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:31.085 [DEBUG] [Thread-154539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:29:31.085 [INFO] [Thread-154539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:31.088 [DEBUG] [Thread-154539] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] Compression: none
2025-09-29T11:29:31.089 [DEBUG] [Thread-154539] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:31.105 [DEBUG] [Thread-154539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:31.106 [DEBUG] [Thread-154539] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:31.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:29:31.107 [DEBUG] [Thread-154539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:29:31.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:31.109 [DEBUG] [Thread-154539] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:31.109 [DEBUG] [Thread-154539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:31.109 [DEBUG] [Thread-154539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:31.109 [DEBUG] [Thread-154539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:29:31.109 [DEBUG] [Thread-154539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:31.137 [INFO] [Thread-154539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:31.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:31.761 [DEBUG] [Thread-154539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:31.761 [DEBUG] [Thread-154539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:31.762 [DEBUG] [Thread-154539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:29:31.802 [DEBUG] [Thread-154539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:31.803 [DEBUG] [Thread-154539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:31.805 [DEBUG] [Thread-154539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:31.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:31.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:29:31.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:29:31.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:29:31.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:31.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:29:31.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:31.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:31.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:29:31.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.394863 -999.00  +12.10  20.33     55   +3.40 1 1 1 1 1   888    0 9.19 30.68 ----- 20.9 20.3 170.2 28.3 19.9 -25.4 18.4 -23.2 18.3 -24.2 19.6 -24.5
2025-09-29T11:29:31.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:29:31.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:29:31.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.394863
2025-09-29T11:29:31.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:29:31.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:29:31.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:29:31.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:29:31.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:29:31.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:29:11', tmtdew=9.66, humidity=51.56, cloud=0.0, wind=20.19, temperature=12.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:28:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:29:31.829 [DEBUG] [Thread-154539] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:31.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:29:31.925 [DEBUG] [Thread-154542] [transport.py] [_log()] starting thread (client mode): 0x2b91e410
2025-09-29T11:29:31.925 [DEBUG] [Thread-154542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:31.940 [DEBUG] [Thread-154542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:29:31.940 [INFO] [Thread-154542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:31.948 [DEBUG] [Thread-154542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:31.949 [DEBUG] [Thread-154542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:31.949 [DEBUG] [Thread-154542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:31.949 [DEBUG] [Thread-154542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:31.949 [DEBUG] [Thread-154542] [transport.py] [_log()] Compression: none
2025-09-29T11:29:31.949 [DEBUG] [Thread-154542] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:32.005 [DEBUG] [Thread-154542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:32.005 [DEBUG] [Thread-154542] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:32.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:29:32.006 [DEBUG] [Thread-154542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:29:32.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:32.061 [DEBUG] [Thread-154542] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:32.062 [DEBUG] [Thread-154542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:32.062 [DEBUG] [Thread-154542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:32.062 [DEBUG] [Thread-154542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:29:32.062 [DEBUG] [Thread-154542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:32.081 [INFO] [Thread-154542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:32.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:29:32.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:33.041 [DEBUG] [Thread-154542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:33.041 [DEBUG] [Thread-154542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:33.089 [DEBUG] [Thread-154542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:33.089 [DEBUG] [Thread-154542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:33.098 [DEBUG] [Thread-154542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:33.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:33.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:29:33.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:29:33.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:33.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:33.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:33.132 [DEBUG] [Thread-154542] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:36.067 [DEBUG] [Thread-154544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:29:36.262 [DEBUG] [Thread-154545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:29:38.902 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:29:38.903 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:29:43.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:29:43.135 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:29:43.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:29:43.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 29, 11), 9.66, 51.56, 0.0, 20.19, 12.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:29:43.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:29:11
2025-09-29T11:29:43.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:29:43.990 [DEBUG] [Thread-154546] [transport.py] [_log()] starting thread (client mode): 0x2b91e4a0
2025-09-29T11:29:43.990 [DEBUG] [Thread-154546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:44.010 [DEBUG] [Thread-154546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:29:44.010 [INFO] [Thread-154546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:44.014 [DEBUG] [Thread-154546] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:44.015 [DEBUG] [Thread-154546] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:44.015 [DEBUG] [Thread-154546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:44.015 [DEBUG] [Thread-154546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:44.015 [DEBUG] [Thread-154546] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:44.015 [DEBUG] [Thread-154546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:44.015 [DEBUG] [Thread-154546] [transport.py] [_log()] Compression: none
2025-09-29T11:29:44.015 [DEBUG] [Thread-154546] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:44.035 [DEBUG] [Thread-154546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:44.035 [DEBUG] [Thread-154546] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:44.036 [DEBUG] [Thread-154546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:29:44.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:29:44.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:44.038 [DEBUG] [Thread-154546] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:44.038 [DEBUG] [Thread-154546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:44.038 [DEBUG] [Thread-154546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:44.038 [DEBUG] [Thread-154546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:29:44.038 [DEBUG] [Thread-154546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:44.073 [INFO] [Thread-154546] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:44.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:44.727 [DEBUG] [Thread-154546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:44.727 [DEBUG] [Thread-154546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:44.727 [DEBUG] [Thread-154546] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:29:44.769 [DEBUG] [Thread-154546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:44.769 [DEBUG] [Thread-154546] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:44.771 [DEBUG] [Thread-154546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:44.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:44.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:29:44.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:29:44.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:29:44.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:44.791 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:29:44.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.395211 -999.00  +11.90  18.42     55   +3.30 1 1 1 1 1   888    0 9.21 30.87 ----- 16.1 18.4 175.8 25.0 20.0 -25.0 18.4 -25.4 18.1 -25.0 19.4 -26.9
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.395211
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:29:44.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:29:11', tmtdew=9.66, humidity=51.56, cloud=0.0, wind=20.19, temperature=12.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:29:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:29:44.792 [DEBUG] [Thread-154546] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:44.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:29:44.879 [DEBUG] [Thread-154549] [transport.py] [_log()] starting thread (client mode): 0x2b91f070
2025-09-29T11:29:44.879 [DEBUG] [Thread-154549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:44.893 [DEBUG] [Thread-154549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:29:44.893 [INFO] [Thread-154549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] Compression: none
2025-09-29T11:29:44.901 [DEBUG] [Thread-154549] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:44.956 [DEBUG] [Thread-154549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:44.956 [DEBUG] [Thread-154549] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:44.956 [DEBUG] [Thread-154549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:29:44.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:29:44.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:45.013 [DEBUG] [Thread-154549] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:45.013 [DEBUG] [Thread-154549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:45.013 [DEBUG] [Thread-154549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:45.013 [DEBUG] [Thread-154549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:29:45.013 [DEBUG] [Thread-154549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:45.030 [INFO] [Thread-154549] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:45.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:29:45.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:45.974 [DEBUG] [Thread-154549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:45.975 [DEBUG] [Thread-154549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:46.022 [DEBUG] [Thread-154549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:46.022 [DEBUG] [Thread-154549] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:46.031 [DEBUG] [Thread-154549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:46.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:46.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:29:46.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:29:46.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:46.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:46.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:46.066 [DEBUG] [Thread-154549] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:51.287 [DEBUG] [Thread-154551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:29:56.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:29:56.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:29:56.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:29:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 29, 43), 10.14, 49.73, 0.0, 17.06, 11.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:29:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:29:43
2025-09-29T11:29:56.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:29:56.931 [DEBUG] [Thread-154552] [transport.py] [_log()] starting thread (client mode): 0x2b957c70
2025-09-29T11:29:56.932 [DEBUG] [Thread-154552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:56.951 [DEBUG] [Thread-154552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:29:56.951 [INFO] [Thread-154552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:29:56.954 [DEBUG] [Thread-154552] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:56.954 [DEBUG] [Thread-154552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:29:56.954 [DEBUG] [Thread-154552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:56.954 [DEBUG] [Thread-154552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:56.954 [DEBUG] [Thread-154552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:56.954 [DEBUG] [Thread-154552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] Compression: none
2025-09-29T11:29:56.955 [DEBUG] [Thread-154552] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:56.962 [DEBUG] [Thread-154552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:56.963 [DEBUG] [Thread-154552] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:56.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:29:56.963 [DEBUG] [Thread-154552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:29:56.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:56.964 [DEBUG] [Thread-154552] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:56.964 [DEBUG] [Thread-154552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:56.964 [DEBUG] [Thread-154552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:56.964 [DEBUG] [Thread-154552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:29:56.964 [DEBUG] [Thread-154552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:56.975 [INFO] [Thread-154552] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:56.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:57.637 [DEBUG] [Thread-154552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:57.637 [DEBUG] [Thread-154552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:57.638 [DEBUG] [Thread-154552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:29:57.678 [DEBUG] [Thread-154552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:57.678 [DEBUG] [Thread-154552] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:57.681 [DEBUG] [Thread-154552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:57.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:57.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:29:57.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:29:57.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:29:57.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:57.702 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:29:57.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:57.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:57.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:29:57.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.395211 -999.00  +11.90  18.42     55   +3.30 1 1 1 1 1   888    0 9.21 30.87 ----- 16.1 18.4 175.8 25.0 20.0 -25.0 18.4 -25.4 18.1 -25.0 19.4 -26.9
2025-09-29T11:29:57.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:29:57.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:29:57.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.395211
2025-09-29T11:29:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:29:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:29:57.704 [DEBUG] [Thread-154552] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:29:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:29:57.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:29:57.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:29:57.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:29:43', tmtdew=10.14, humidity=49.73, cloud=0.0, wind=17.06, temperature=11.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:29:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:29:57.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:29:57.797 [DEBUG] [Thread-154555] [transport.py] [_log()] starting thread (client mode): 0x2b955870
2025-09-29T11:29:57.797 [DEBUG] [Thread-154555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:29:57.812 [DEBUG] [Thread-154555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:29:57.812 [INFO] [Thread-154555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:29:57.819 [DEBUG] [Thread-154555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] client lang: <none>
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] server lang: <none>
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] kex follows: False
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] Compression: none
2025-09-29T11:29:57.820 [DEBUG] [Thread-154555] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:29:57.877 [DEBUG] [Thread-154555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:29:57.877 [DEBUG] [Thread-154555] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:29:57.878 [DEBUG] [Thread-154555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:29:57.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:29:57.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:29:57.933 [DEBUG] [Thread-154555] [transport.py] [_log()] userauth is OK
2025-09-29T11:29:57.933 [DEBUG] [Thread-154555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:29:57.933 [DEBUG] [Thread-154555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:29:57.934 [DEBUG] [Thread-154555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:29:57.934 [DEBUG] [Thread-154555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:29:57.952 [INFO] [Thread-154555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:29:57.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:29:57.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:29:58.879 [DEBUG] [Thread-154555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:29:58.879 [DEBUG] [Thread-154555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:29:58.927 [DEBUG] [Thread-154555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:29:58.927 [DEBUG] [Thread-154555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:29:58.936 [DEBUG] [Thread-154555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:29:58.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:29:58.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:29:58.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:29:58.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:29:58.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:29:58.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:29:58.970 [DEBUG] [Thread-154555] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:30:06.322 [DEBUG] [Thread-154557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:30:08.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:30:08.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:30:08.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:30:09.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 29, 43), 10.14, 49.73, 0.0, 17.06, 11.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:30:09.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:29:43
2025-09-29T11:30:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:30:09.839 [DEBUG] [Thread-154558] [transport.py] [_log()] starting thread (client mode): 0x2b955bd0
2025-09-29T11:30:09.839 [DEBUG] [Thread-154558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:30:09.860 [DEBUG] [Thread-154558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:30:09.860 [INFO] [Thread-154558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:30:09.863 [DEBUG] [Thread-154558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:30:09.863 [DEBUG] [Thread-154558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] client lang: <none>
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] server lang: <none>
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] kex follows: False
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] Compression: none
2025-09-29T11:30:09.864 [DEBUG] [Thread-154558] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:30:09.881 [DEBUG] [Thread-154558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:30:09.882 [DEBUG] [Thread-154558] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:30:09.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:30:09.882 [DEBUG] [Thread-154558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:30:09.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:30:09.884 [DEBUG] [Thread-154558] [transport.py] [_log()] userauth is OK
2025-09-29T11:30:09.884 [DEBUG] [Thread-154558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:30:09.884 [DEBUG] [Thread-154558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:30:09.884 [DEBUG] [Thread-154558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:30:09.884 [DEBUG] [Thread-154558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:30:09.916 [INFO] [Thread-154558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:30:09.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:30:13.981 [DEBUG] [Thread-154558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:30:13.982 [DEBUG] [Thread-154558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:30:13.991 [DEBUG] [Thread-154558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:30:14.022 [DEBUG] [Thread-154558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:30:14.023 [DEBUG] [Thread-154558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:30:14.025 [DEBUG] [Thread-154558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:30:14.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:30:14.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:30:14.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:30:14.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:30:14.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:30:14.139 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:30:14.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:30:14.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:30:14.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:30:14.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.395211 -999.00  +11.90  18.42     55   +3.30 1 1 1 1 1   888    0 9.21 30.87 ----- 16.1 18.4 175.8 25.0 20.0 -25.0 18.4 -25.4 18.1 -25.0 19.4 -26.9
2025-09-29T11:30:14.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:30:14.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:30:14.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.395211
2025-09-29T11:30:14.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:30:14.140 [DEBUG] [Thread-154558] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:30:14.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:30:14.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:30:14.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:30:14.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:30:14.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:29:43', tmtdew=10.14, humidity=49.73, cloud=0.0, wind=17.06, temperature=11.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:29:06.230', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:30:14.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:30:14.239 [DEBUG] [Thread-154561] [transport.py] [_log()] starting thread (client mode): 0x2b9c1150
2025-09-29T11:30:14.240 [DEBUG] [Thread-154561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:30:14.254 [DEBUG] [Thread-154561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:30:14.254 [INFO] [Thread-154561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:30:14.262 [DEBUG] [Thread-154561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:30:14.262 [DEBUG] [Thread-154561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:30:14.262 [DEBUG] [Thread-154561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:30:14.262 [DEBUG] [Thread-154561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:14.262 [DEBUG] [Thread-154561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] client lang: <none>
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] server lang: <none>
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] kex follows: False
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] Compression: none
2025-09-29T11:30:14.263 [DEBUG] [Thread-154561] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:30:14.321 [DEBUG] [Thread-154561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:30:14.321 [DEBUG] [Thread-154561] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:30:14.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:30:14.322 [DEBUG] [Thread-154561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:30:14.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:30:14.378 [DEBUG] [Thread-154561] [transport.py] [_log()] userauth is OK
2025-09-29T11:30:14.378 [DEBUG] [Thread-154561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:30:14.379 [DEBUG] [Thread-154561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:30:14.379 [DEBUG] [Thread-154561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:30:14.379 [DEBUG] [Thread-154561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:30:14.398 [INFO] [Thread-154561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:30:14.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:30:14.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:30:15.336 [DEBUG] [Thread-154561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:30:15.336 [DEBUG] [Thread-154561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:30:15.384 [DEBUG] [Thread-154561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:30:15.384 [DEBUG] [Thread-154561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:30:15.393 [DEBUG] [Thread-154561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:30:15.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:30:15.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:30:15.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:30:15.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:30:15.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:30:15.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:30:15.428 [DEBUG] [Thread-154561] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:30:21.362 [DEBUG] [Thread-154563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:30:25.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:30:25.431 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:30:25.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:30:26.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 30, 15), 9.99, 50.28, 0.0, 14.7, 11.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:30:26.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:30:15
2025-09-29T11:30:26.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:30:26.296 [DEBUG] [Thread-154564] [transport.py] [_log()] starting thread (client mode): 0x2e349870
2025-09-29T11:30:26.296 [DEBUG] [Thread-154564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:30:26.316 [DEBUG] [Thread-154564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:30:26.316 [INFO] [Thread-154564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] client lang: <none>
2025-09-29T11:30:26.320 [DEBUG] [Thread-154564] [transport.py] [_log()] server lang: <none>
2025-09-29T11:30:26.321 [DEBUG] [Thread-154564] [transport.py] [_log()] kex follows: False
2025-09-29T11:30:26.321 [DEBUG] [Thread-154564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:30:26.321 [DEBUG] [Thread-154564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:30:26.321 [DEBUG] [Thread-154564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:30:26.321 [DEBUG] [Thread-154564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:30:26.321 [DEBUG] [Thread-154564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:30:26.321 [DEBUG] [Thread-154564] [transport.py] [_log()] Compression: none
2025-09-29T11:30:26.321 [DEBUG] [Thread-154564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:30:26.337 [DEBUG] [Thread-154564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:30:26.338 [DEBUG] [Thread-154564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:30:26.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:30:26.339 [DEBUG] [Thread-154564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:30:26.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:30:26.341 [DEBUG] [Thread-154564] [transport.py] [_log()] userauth is OK
2025-09-29T11:30:26.341 [DEBUG] [Thread-154564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:30:26.341 [DEBUG] [Thread-154564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:30:26.341 [DEBUG] [Thread-154564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:30:26.341 [DEBUG] [Thread-154564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:30:26.365 [INFO] [Thread-154564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:30:26.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:30:26.984 [DEBUG] [Thread-154564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:30:26.985 [DEBUG] [Thread-154564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:30:26.985 [DEBUG] [Thread-154564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:30:27.025 [DEBUG] [Thread-154564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:30:27.025 [DEBUG] [Thread-154564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:30:27.027 [DEBUG] [Thread-154564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:30:27.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:30:27.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:30:27.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:30:27.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:30:27.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:30:27.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:30:27.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:30:27.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:30:27.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.395905 -999.00  +12.40  11.58     56   +3.90 1 2 1 1 1   888    0 9.49 35.43 ----- 14.4 11.6 111.6 18.9 20.1 -23.5 18.5 -22.2 18.4 -23.1 19.8 -23.5
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.395905
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T11:30:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:30:15', tmtdew=9.99, humidity=50.28, cloud=0.0, wind=14.7, temperature=11.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:30:06.192', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:30:27.047 [DEBUG] [Thread-154564] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:30:27.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:30:27.129 [DEBUG] [Thread-154567] [transport.py] [_log()] starting thread (client mode): 0x2b96d9c0
2025-09-29T11:30:27.130 [DEBUG] [Thread-154567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:30:27.144 [DEBUG] [Thread-154567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:30:27.144 [INFO] [Thread-154567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] client lang: <none>
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] server lang: <none>
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] kex follows: False
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] Compression: none
2025-09-29T11:30:27.152 [DEBUG] [Thread-154567] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:30:27.208 [DEBUG] [Thread-154567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:30:27.209 [DEBUG] [Thread-154567] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:30:27.209 [DEBUG] [Thread-154567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:30:27.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:30:27.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:30:27.264 [DEBUG] [Thread-154567] [transport.py] [_log()] userauth is OK
2025-09-29T11:30:27.264 [DEBUG] [Thread-154567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:30:27.264 [DEBUG] [Thread-154567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:30:27.264 [DEBUG] [Thread-154567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:30:27.265 [DEBUG] [Thread-154567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:30:27.284 [INFO] [Thread-154567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:30:27.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:30:27.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:30:28.258 [DEBUG] [Thread-154567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:30:28.258 [DEBUG] [Thread-154567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:30:28.306 [DEBUG] [Thread-154567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:30:28.306 [DEBUG] [Thread-154567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:30:28.315 [DEBUG] [Thread-154567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:30:28.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:30:28.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:30:28.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:30:28.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:30:28.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:30:28.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:30:28.350 [DEBUG] [Thread-154567] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:30:36.116 [DEBUG] [Thread-154569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:30:36.391 [DEBUG] [Thread-154570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:30:38.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:30:38.353 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:30:38.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:30:38.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 30, 15), 9.99, 50.28, 0.0, 14.7, 11.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:30:38.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:30:15
2025-09-29T11:30:39.041 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:30:39.042 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:30:39.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:30:39.215 [DEBUG] [Thread-154571] [transport.py] [_log()] starting thread (client mode): 0x2b9c1150
2025-09-29T11:30:39.215 [DEBUG] [Thread-154571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:30:39.235 [DEBUG] [Thread-154571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:30:39.236 [INFO] [Thread-154571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:30:39.239 [DEBUG] [Thread-154571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] client lang: <none>
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] server lang: <none>
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] kex follows: False
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] Compression: none
2025-09-29T11:30:39.240 [DEBUG] [Thread-154571] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:30:39.258 [DEBUG] [Thread-154571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:30:39.259 [DEBUG] [Thread-154571] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:30:39.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:30:39.260 [DEBUG] [Thread-154571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:30:39.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:30:39.261 [DEBUG] [Thread-154571] [transport.py] [_log()] userauth is OK
2025-09-29T11:30:39.262 [DEBUG] [Thread-154571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:30:39.262 [DEBUG] [Thread-154571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:30:39.262 [DEBUG] [Thread-154571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:30:39.262 [DEBUG] [Thread-154571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:30:39.298 [INFO] [Thread-154571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:30:39.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:30:40.977 [DEBUG] [Thread-154571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:30:40.977 [DEBUG] [Thread-154571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:30:40.978 [DEBUG] [Thread-154571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:30:41.018 [DEBUG] [Thread-154571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:30:41.019 [DEBUG] [Thread-154571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:30:41.021 [DEBUG] [Thread-154571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:30:41.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:30:41.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:30:41.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:30:41.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:30:41.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:30:41.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:30:41.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:30:41.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:30:41.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:30:41.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.395905 -999.00  +12.40  11.58     56   +3.90 1 2 1 1 1   888    0 9.49 35.43 ----- 14.4 11.6 111.6 18.9 20.1 -23.5 18.5 -22.2 18.4 -23.1 19.8 -23.5
2025-09-29T11:30:41.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:30:41.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:30:41.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.395905
2025-09-29T11:30:41.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:30:41.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:30:41.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:30:41.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:30:41.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-29T11:30:41.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:30:15', tmtdew=9.99, humidity=50.28, cloud=0.0, wind=14.7, temperature=11.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:30:06.192', atlas_cloud=2, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:30:41.045 [DEBUG] [Thread-154571] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:30:41.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:30:41.142 [DEBUG] [Thread-154574] [transport.py] [_log()] starting thread (client mode): 0x2e38da80
2025-09-29T11:30:41.142 [DEBUG] [Thread-154574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:30:41.157 [DEBUG] [Thread-154574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:30:41.157 [INFO] [Thread-154574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:30:41.164 [DEBUG] [Thread-154574] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:30:41.165 [DEBUG] [Thread-154574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:30:41.165 [DEBUG] [Thread-154574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:30:41.165 [DEBUG] [Thread-154574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:41.165 [DEBUG] [Thread-154574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:41.165 [DEBUG] [Thread-154574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:41.165 [DEBUG] [Thread-154574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:41.165 [DEBUG] [Thread-154574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:30:41.166 [DEBUG] [Thread-154574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:30:41.166 [DEBUG] [Thread-154574] [transport.py] [_log()] client lang: <none>
2025-09-29T11:30:41.166 [DEBUG] [Thread-154574] [transport.py] [_log()] server lang: <none>
2025-09-29T11:30:41.166 [DEBUG] [Thread-154574] [transport.py] [_log()] kex follows: False
2025-09-29T11:30:41.166 [DEBUG] [Thread-154574] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:30:41.166 [DEBUG] [Thread-154574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:30:41.166 [DEBUG] [Thread-154574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:30:41.166 [DEBUG] [Thread-154574] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:30:41.167 [DEBUG] [Thread-154574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:30:41.167 [DEBUG] [Thread-154574] [transport.py] [_log()] Compression: none
2025-09-29T11:30:41.167 [DEBUG] [Thread-154574] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:30:41.223 [DEBUG] [Thread-154574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:30:41.224 [DEBUG] [Thread-154574] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:30:41.224 [DEBUG] [Thread-154574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:30:41.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:30:41.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:30:41.279 [DEBUG] [Thread-154574] [transport.py] [_log()] userauth is OK
2025-09-29T11:30:41.279 [DEBUG] [Thread-154574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:30:41.280 [DEBUG] [Thread-154574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:30:41.280 [DEBUG] [Thread-154574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:30:41.280 [DEBUG] [Thread-154574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:30:41.299 [INFO] [Thread-154574] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:30:41.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:30:41.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:30:42.228 [DEBUG] [Thread-154574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:30:42.228 [DEBUG] [Thread-154574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:30:42.276 [DEBUG] [Thread-154574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:30:42.276 [DEBUG] [Thread-154574] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:30:42.285 [DEBUG] [Thread-154574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:30:42.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:30:42.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:30:42.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:30:42.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:30:42.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:30:42.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:30:42.319 [DEBUG] [Thread-154574] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:30:51.435 [DEBUG] [Thread-154576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:30:52.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:30:52.322 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:30:52.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:30:52.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 30, 48), 9.8, 51.1, 0.0, 18.69, 12.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:30:52.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:30:48
2025-09-29T11:30:53.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:30:53.186 [DEBUG] [Thread-154577] [transport.py] [_log()] starting thread (client mode): 0x2b956fe0
2025-09-29T11:30:53.186 [DEBUG] [Thread-154577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:30:53.206 [DEBUG] [Thread-154577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:30:53.207 [INFO] [Thread-154577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:30:53.210 [DEBUG] [Thread-154577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:30:53.210 [DEBUG] [Thread-154577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:30:53.210 [DEBUG] [Thread-154577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:30:53.210 [DEBUG] [Thread-154577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:53.210 [DEBUG] [Thread-154577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:53.210 [DEBUG] [Thread-154577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:53.210 [DEBUG] [Thread-154577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:53.210 [DEBUG] [Thread-154577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] client lang: <none>
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] server lang: <none>
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] kex follows: False
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] Compression: none
2025-09-29T11:30:53.211 [DEBUG] [Thread-154577] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:30:53.228 [DEBUG] [Thread-154577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:30:53.228 [DEBUG] [Thread-154577] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:30:53.229 [DEBUG] [Thread-154577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:30:53.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:30:53.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:30:53.231 [DEBUG] [Thread-154577] [transport.py] [_log()] userauth is OK
2025-09-29T11:30:53.231 [DEBUG] [Thread-154577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:30:53.232 [DEBUG] [Thread-154577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:30:53.232 [DEBUG] [Thread-154577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:30:53.232 [DEBUG] [Thread-154577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:30:53.255 [INFO] [Thread-154577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:30:53.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:30:53.861 [DEBUG] [Thread-154577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:30:53.862 [DEBUG] [Thread-154577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:30:53.862 [DEBUG] [Thread-154577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:30:53.902 [DEBUG] [Thread-154577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:30:53.902 [DEBUG] [Thread-154577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:30:53.905 [DEBUG] [Thread-154577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:30:53.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:30:53.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:30:53.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:30:53.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:30:53.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:30:53.921 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:30:53.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:30:53.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:30:53.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:30:53.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.396252 -999.00  +12.40  21.97     55   +3.60 1 1 1 1 1   888    0 9.49 38.04 ----- 22.9 22.0 129.0 26.4 20.2 -24.0 18.8 -23.5 18.5 -24.5 19.8 -25.1
2025-09-29T11:30:53.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:30:53.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:30:53.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.396252
2025-09-29T11:30:53.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:30:53.923 [DEBUG] [Thread-154577] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:30:53.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:30:53.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:30:53.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:30:53.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:30:53.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:30:48', tmtdew=9.8, humidity=51.1, cloud=0.0, wind=18.69, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:30:36.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:30:54.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:30:54.015 [DEBUG] [Thread-154580] [transport.py] [_log()] starting thread (client mode): 0x2e38dde0
2025-09-29T11:30:54.016 [DEBUG] [Thread-154580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:30:54.035 [DEBUG] [Thread-154580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:30:54.036 [INFO] [Thread-154580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:30:54.043 [DEBUG] [Thread-154580] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:30:54.043 [DEBUG] [Thread-154580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:30:54.043 [DEBUG] [Thread-154580] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:30:54.043 [DEBUG] [Thread-154580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:54.043 [DEBUG] [Thread-154580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:30:54.043 [DEBUG] [Thread-154580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:54.043 [DEBUG] [Thread-154580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:30:54.043 [DEBUG] [Thread-154580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] client lang: <none>
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] server lang: <none>
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] kex follows: False
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] Compression: none
2025-09-29T11:30:54.044 [DEBUG] [Thread-154580] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:30:54.102 [DEBUG] [Thread-154580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:30:54.102 [DEBUG] [Thread-154580] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:30:54.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:30:54.103 [DEBUG] [Thread-154580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:30:54.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:30:54.158 [DEBUG] [Thread-154580] [transport.py] [_log()] userauth is OK
2025-09-29T11:30:54.158 [DEBUG] [Thread-154580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:30:54.158 [DEBUG] [Thread-154580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:30:54.158 [DEBUG] [Thread-154580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:30:54.158 [DEBUG] [Thread-154580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:30:54.176 [INFO] [Thread-154580] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:30:54.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:30:54.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:30:55.140 [DEBUG] [Thread-154580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:30:55.140 [DEBUG] [Thread-154580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:30:55.188 [DEBUG] [Thread-154580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:30:55.188 [DEBUG] [Thread-154580] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:30:55.197 [DEBUG] [Thread-154580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:30:55.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:30:55.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:30:55.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:30:55.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:30:55.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:30:55.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:30:55.230 [DEBUG] [Thread-154580] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:31:05.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:31:05.233 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:31:05.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:31:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 30, 48), 9.8, 51.1, 0.0, 18.69, 12.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:31:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:30:48
2025-09-29T11:31:05.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:31:06.087 [DEBUG] [Thread-154582] [transport.py] [_log()] starting thread (client mode): 0x2e38c2b0
2025-09-29T11:31:06.088 [DEBUG] [Thread-154582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:31:06.106 [DEBUG] [Thread-154582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:31:06.106 [INFO] [Thread-154582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] client lang: <none>
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] server lang: <none>
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] kex follows: False
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] Compression: none
2025-09-29T11:31:06.110 [DEBUG] [Thread-154582] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:31:06.118 [DEBUG] [Thread-154582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:31:06.119 [DEBUG] [Thread-154582] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:31:06.119 [DEBUG] [Thread-154582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:31:06.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:31:06.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:31:06.121 [DEBUG] [Thread-154582] [transport.py] [_log()] userauth is OK
2025-09-29T11:31:06.121 [DEBUG] [Thread-154582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:31:06.121 [DEBUG] [Thread-154582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:31:06.121 [DEBUG] [Thread-154582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:31:06.121 [DEBUG] [Thread-154582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:31:06.138 [INFO] [Thread-154582] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:31:06.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:31:06.465 [DEBUG] [Thread-154584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:31:06.951 [DEBUG] [Thread-154582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:31:06.951 [DEBUG] [Thread-154582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:31:06.952 [DEBUG] [Thread-154582] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:31:06.992 [DEBUG] [Thread-154582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:31:06.992 [DEBUG] [Thread-154582] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:31:06.995 [DEBUG] [Thread-154582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:31:07.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:31:07.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:31:07.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:31:07.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:31:07.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:31:07.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:31:07.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:31:07.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:31:07.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:31:07.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.396252 -999.00  +12.40  21.97     55   +3.60 1 1 1 1 1   888    0 9.49 38.04 ----- 22.9 22.0 129.0 26.4 20.2 -24.0 18.8 -23.5 18.5 -24.5 19.8 -25.1
2025-09-29T11:31:07.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:31:07.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:31:07.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.396252
2025-09-29T11:31:07.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:31:07.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:31:07.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:31:07.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:31:07.021 [DEBUG] [Thread-154582] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:31:07.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:31:07.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:30:48', tmtdew=9.8, humidity=51.1, cloud=0.0, wind=18.69, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:30:36.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:31:07.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:31:07.115 [DEBUG] [Thread-154586] [transport.py] [_log()] starting thread (client mode): 0x2e38dff0
2025-09-29T11:31:07.116 [DEBUG] [Thread-154586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:31:07.132 [DEBUG] [Thread-154586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:31:07.132 [INFO] [Thread-154586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:31:07.140 [DEBUG] [Thread-154586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:31:07.140 [DEBUG] [Thread-154586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:31:07.140 [DEBUG] [Thread-154586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:31:07.140 [DEBUG] [Thread-154586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:07.140 [DEBUG] [Thread-154586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:07.140 [DEBUG] [Thread-154586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:07.140 [DEBUG] [Thread-154586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:07.141 [DEBUG] [Thread-154586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:31:07.141 [DEBUG] [Thread-154586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:31:07.141 [DEBUG] [Thread-154586] [transport.py] [_log()] client lang: <none>
2025-09-29T11:31:07.141 [DEBUG] [Thread-154586] [transport.py] [_log()] server lang: <none>
2025-09-29T11:31:07.141 [DEBUG] [Thread-154586] [transport.py] [_log()] kex follows: False
2025-09-29T11:31:07.141 [DEBUG] [Thread-154586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:31:07.141 [DEBUG] [Thread-154586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:31:07.141 [DEBUG] [Thread-154586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:31:07.142 [DEBUG] [Thread-154586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:31:07.142 [DEBUG] [Thread-154586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:31:07.142 [DEBUG] [Thread-154586] [transport.py] [_log()] Compression: none
2025-09-29T11:31:07.142 [DEBUG] [Thread-154586] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:31:07.200 [DEBUG] [Thread-154586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:31:07.201 [DEBUG] [Thread-154586] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:31:07.201 [DEBUG] [Thread-154586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:31:07.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:31:07.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:31:07.257 [DEBUG] [Thread-154586] [transport.py] [_log()] userauth is OK
2025-09-29T11:31:07.257 [DEBUG] [Thread-154586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:31:07.257 [DEBUG] [Thread-154586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:31:07.258 [DEBUG] [Thread-154586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:31:07.258 [DEBUG] [Thread-154586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:31:07.277 [INFO] [Thread-154586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:31:07.277 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:31:07.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:31:08.302 [DEBUG] [Thread-154586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:31:08.302 [DEBUG] [Thread-154586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:31:08.350 [DEBUG] [Thread-154586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:31:08.350 [DEBUG] [Thread-154586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:31:08.358 [DEBUG] [Thread-154586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:31:08.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:31:08.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:31:08.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:31:08.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:31:08.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:31:08.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:31:08.389 [DEBUG] [Thread-154586] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:31:18.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:31:18.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:31:18.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:31:18.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 30, 48), 9.8, 51.1, 0.0, 18.69, 12.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:31:18.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:30:48
2025-09-29T11:31:19.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:31:19.253 [DEBUG] [Thread-154588] [transport.py] [_log()] starting thread (client mode): 0x2e38e9b0
2025-09-29T11:31:19.253 [DEBUG] [Thread-154588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:31:19.273 [DEBUG] [Thread-154588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:31:19.273 [INFO] [Thread-154588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:31:19.276 [DEBUG] [Thread-154588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] client lang: <none>
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] server lang: <none>
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] kex follows: False
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] Compression: none
2025-09-29T11:31:19.277 [DEBUG] [Thread-154588] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:31:19.294 [DEBUG] [Thread-154588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:31:19.294 [DEBUG] [Thread-154588] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:31:19.295 [DEBUG] [Thread-154588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:31:19.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:31:19.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:31:19.297 [DEBUG] [Thread-154588] [transport.py] [_log()] userauth is OK
2025-09-29T11:31:19.297 [DEBUG] [Thread-154588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:31:19.297 [DEBUG] [Thread-154588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:31:19.297 [DEBUG] [Thread-154588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:31:19.297 [DEBUG] [Thread-154588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:31:19.332 [INFO] [Thread-154588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:31:19.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:31:20.135 [DEBUG] [Thread-154588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:31:20.135 [DEBUG] [Thread-154588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:31:20.136 [DEBUG] [Thread-154588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:31:20.176 [DEBUG] [Thread-154588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:31:20.176 [DEBUG] [Thread-154588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:31:20.179 [DEBUG] [Thread-154588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:31:20.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:31:20.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:31:20.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:31:20.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:31:20.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:31:20.196 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:31:20.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:31:20.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:31:20.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:31:20.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.396252 -999.00  +12.40  21.97     55   +3.60 1 1 1 1 1   888    0 9.49 38.04 ----- 22.9 22.0 129.0 26.4 20.2 -24.0 18.8 -23.5 18.5 -24.5 19.8 -25.1
2025-09-29T11:31:20.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:31:20.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:31:20.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.396252
2025-09-29T11:31:20.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:31:20.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:31:20.198 [DEBUG] [Thread-154588] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:31:20.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:31:20.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:31:20.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:31:20.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:30:48', tmtdew=9.8, humidity=51.1, cloud=0.0, wind=18.69, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:30:36.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:31:20.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:31:20.292 [DEBUG] [Thread-154591] [transport.py] [_log()] starting thread (client mode): 0x2e38c2e0
2025-09-29T11:31:20.292 [DEBUG] [Thread-154591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:31:20.306 [DEBUG] [Thread-154591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:31:20.306 [INFO] [Thread-154591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] client lang: <none>
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] server lang: <none>
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] kex follows: False
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] Compression: none
2025-09-29T11:31:20.314 [DEBUG] [Thread-154591] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:31:20.372 [DEBUG] [Thread-154591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:31:20.372 [DEBUG] [Thread-154591] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:31:20.373 [DEBUG] [Thread-154591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:31:20.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:31:20.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:31:20.428 [DEBUG] [Thread-154591] [transport.py] [_log()] userauth is OK
2025-09-29T11:31:20.428 [DEBUG] [Thread-154591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:31:20.429 [DEBUG] [Thread-154591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:31:20.429 [DEBUG] [Thread-154591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:31:20.429 [DEBUG] [Thread-154591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:31:20.448 [INFO] [Thread-154591] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:31:20.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:31:20.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:31:21.396 [DEBUG] [Thread-154591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:31:21.396 [DEBUG] [Thread-154591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:31:21.444 [DEBUG] [Thread-154591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:31:21.444 [DEBUG] [Thread-154591] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:31:21.452 [DEBUG] [Thread-154591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:31:21.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:31:21.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:31:21.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:31:21.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:31:21.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:31:21.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:31:21.485 [DEBUG] [Thread-154591] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:31:21.510 [DEBUG] [Thread-154593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:31:31.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:31:31.488 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:31:31.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:31:32.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 31, 20), 9.8, 51.08, 0.0, 21.07, 12.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:31:32.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:31:20
2025-09-29T11:31:32.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:31:32.344 [DEBUG] [Thread-154594] [transport.py] [_log()] starting thread (client mode): 0x2b9569b0
2025-09-29T11:31:32.344 [DEBUG] [Thread-154594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:31:32.365 [DEBUG] [Thread-154594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:31:32.365 [INFO] [Thread-154594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:31:32.369 [DEBUG] [Thread-154594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:31:32.369 [DEBUG] [Thread-154594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:31:32.369 [DEBUG] [Thread-154594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:31:32.369 [DEBUG] [Thread-154594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] client lang: <none>
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] server lang: <none>
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] kex follows: False
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] Compression: none
2025-09-29T11:31:32.370 [DEBUG] [Thread-154594] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:31:32.385 [DEBUG] [Thread-154594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:31:32.385 [DEBUG] [Thread-154594] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:31:32.386 [DEBUG] [Thread-154594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:31:32.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:31:32.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:31:32.388 [DEBUG] [Thread-154594] [transport.py] [_log()] userauth is OK
2025-09-29T11:31:32.388 [DEBUG] [Thread-154594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:31:32.388 [DEBUG] [Thread-154594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:31:32.388 [DEBUG] [Thread-154594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:31:32.388 [DEBUG] [Thread-154594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:31:32.412 [INFO] [Thread-154594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:31:32.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:31:33.009 [DEBUG] [Thread-154594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:31:33.009 [DEBUG] [Thread-154594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:31:33.010 [DEBUG] [Thread-154594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:31:33.050 [DEBUG] [Thread-154594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:31:33.050 [DEBUG] [Thread-154594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:31:33.053 [DEBUG] [Thread-154594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:31:33.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:31:33.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:31:33.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:31:33.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:31:33.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:31:33.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:31:33.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:31:33.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:31:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:31:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.396599 -999.00  +12.30  20.12     55   +3.70 1 1 1 1 1   888    0 9.73 41.75 ----- 23.0 20.1 134.4 23.0 20.1 -24.7 18.9 -23.0 18.5 -24.1 19.8 -24.7
2025-09-29T11:31:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:31:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:31:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.396599
2025-09-29T11:31:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:31:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:31:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:31:33.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:31:33.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:31:33.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:31:20', tmtdew=9.8, humidity=51.08, cloud=0.0, wind=21.07, temperature=12.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:31:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:31:33.078 [DEBUG] [Thread-154594] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:31:33.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:31:36.184 [DEBUG] [Thread-154597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:31:36.543 [DEBUG] [Thread-154598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:31:39.184 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:31:39.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:31:51.596 [DEBUG] [Thread-154599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:32:06.621 [DEBUG] [Thread-154600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:32:21.659 [DEBUG] [Thread-154601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:32:36.235 [DEBUG] [Thread-154602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:32:36.688 [DEBUG] [Thread-154603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:32:39.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:32:39.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:32:51.716 [DEBUG] [Thread-154604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:33:06.742 [DEBUG] [Thread-154605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:33:21.771 [DEBUG] [Thread-154606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:33:36.269 [DEBUG] [Thread-154607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:33:36.805 [DEBUG] [Thread-154608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:33:39.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:33:39.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:33:46.042 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:33:51.834 [DEBUG] [Thread-154609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:33:56.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:33:56.053 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:33:56.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:33:56.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 33, 28), 10.09, 49.91, 0.0, 19.3, 12.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:33:56.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:33:28
2025-09-29T11:33:56.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:33:56.925 [DEBUG] [Thread-154610] [transport.py] [_log()] starting thread (client mode): 0x2b9c2560
2025-09-29T11:33:56.925 [DEBUG] [Thread-154610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:33:56.946 [DEBUG] [Thread-154610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:33:56.946 [INFO] [Thread-154610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:33:56.949 [DEBUG] [Thread-154610] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:33:56.949 [DEBUG] [Thread-154610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:33:56.949 [DEBUG] [Thread-154610] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] client lang: <none>
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] server lang: <none>
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] kex follows: False
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] Compression: none
2025-09-29T11:33:56.950 [DEBUG] [Thread-154610] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:33:56.966 [DEBUG] [Thread-154610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:33:56.967 [DEBUG] [Thread-154610] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:33:56.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:33:56.968 [DEBUG] [Thread-154610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:33:56.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:33:56.970 [DEBUG] [Thread-154610] [transport.py] [_log()] userauth is OK
2025-09-29T11:33:56.970 [DEBUG] [Thread-154610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:33:56.970 [DEBUG] [Thread-154610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:33:56.970 [DEBUG] [Thread-154610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:33:56.970 [DEBUG] [Thread-154610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:33:56.994 [INFO] [Thread-154610] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:33:56.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:33:57.815 [DEBUG] [Thread-154610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:33:57.815 [DEBUG] [Thread-154610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:33:57.815 [DEBUG] [Thread-154610] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:33:57.856 [DEBUG] [Thread-154610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:33:57.856 [DEBUG] [Thread-154610] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:33:57.859 [DEBUG] [Thread-154610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:33:57.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:33:57.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:33:57.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:33:57.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:33:57.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:33:57.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:33:57.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.397988 -999.00  +12.30  16.67     55   +3.50 1 1 1 1 1   888    0 9.53 39.70 ----- 15.7 16.7 133.0 26.0 20.4 -24.2 19.2 -23.3 18.9 -23.7 19.9 -26.0
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.397988
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:33:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:33:28', tmtdew=10.09, humidity=49.91, cloud=0.0, wind=19.3, temperature=12.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:33:06.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:33:57.878 [DEBUG] [Thread-154610] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:33:57.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:33:57.964 [DEBUG] [Thread-154613] [transport.py] [_log()] starting thread (client mode): 0x2b9c0f70
2025-09-29T11:33:57.964 [DEBUG] [Thread-154613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:33:57.979 [DEBUG] [Thread-154613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:33:57.979 [INFO] [Thread-154613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] client lang: <none>
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] server lang: <none>
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] kex follows: False
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] Compression: none
2025-09-29T11:33:57.987 [DEBUG] [Thread-154613] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:33:58.045 [DEBUG] [Thread-154613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:33:58.045 [DEBUG] [Thread-154613] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:33:58.046 [DEBUG] [Thread-154613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:33:58.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:33:58.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:33:58.102 [DEBUG] [Thread-154613] [transport.py] [_log()] userauth is OK
2025-09-29T11:33:58.102 [DEBUG] [Thread-154613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:33:58.102 [DEBUG] [Thread-154613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:33:58.102 [DEBUG] [Thread-154613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:33:58.102 [DEBUG] [Thread-154613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:33:58.124 [INFO] [Thread-154613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:33:58.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:33:58.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:33:59.049 [DEBUG] [Thread-154613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:33:59.049 [DEBUG] [Thread-154613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:33:59.097 [DEBUG] [Thread-154613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:33:59.098 [DEBUG] [Thread-154613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:33:59.107 [DEBUG] [Thread-154613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:33:59.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:33:59.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:33:59.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:33:59.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:33:59.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:33:59.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:33:59.142 [DEBUG] [Thread-154613] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:06.864 [DEBUG] [Thread-154615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:34:09.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:34:09.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:34:09.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:34:09.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 33, 59), 9.98, 50.45, 0.0, 16.5, 11.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:34:09.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:33:59
2025-09-29T11:34:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:34:10.025 [DEBUG] [Thread-154616] [transport.py] [_log()] starting thread (client mode): 0x2b9564a0
2025-09-29T11:34:10.025 [DEBUG] [Thread-154616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:34:10.045 [DEBUG] [Thread-154616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:34:10.045 [INFO] [Thread-154616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] client lang: <none>
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] server lang: <none>
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] kex follows: False
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] Compression: none
2025-09-29T11:34:10.046 [DEBUG] [Thread-154616] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:34:10.064 [DEBUG] [Thread-154616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:34:10.065 [DEBUG] [Thread-154616] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:34:10.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:34:10.066 [DEBUG] [Thread-154616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:34:10.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:34:10.067 [DEBUG] [Thread-154616] [transport.py] [_log()] userauth is OK
2025-09-29T11:34:10.068 [DEBUG] [Thread-154616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:34:10.068 [DEBUG] [Thread-154616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:34:10.068 [DEBUG] [Thread-154616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:34:10.068 [DEBUG] [Thread-154616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:34:10.091 [INFO] [Thread-154616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:34:10.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:34:10.890 [DEBUG] [Thread-154616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:34:10.890 [DEBUG] [Thread-154616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:34:10.890 [DEBUG] [Thread-154616] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:34:10.931 [DEBUG] [Thread-154616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:34:10.932 [DEBUG] [Thread-154616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:34:10.934 [DEBUG] [Thread-154616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:34:10.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:34:10.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:34:10.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:34:10.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:34:10.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:34:10.956 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:34:10.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:34:10.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:34:10.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:34:10.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.397988 -999.00  +12.30  16.67     55   +3.50 1 1 1 1 1   888    0 9.53 39.70 ----- 15.7 16.7 133.0 26.0 20.4 -24.2 19.2 -23.3 18.9 -23.7 19.9 -26.0
2025-09-29T11:34:10.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:34:10.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:34:10.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.397988
2025-09-29T11:34:10.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:34:10.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:34:10.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:34:10.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:34:10.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:34:10.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:33:59', tmtdew=9.98, humidity=50.45, cloud=0.0, wind=16.5, temperature=11.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:33:06.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:34:10.959 [DEBUG] [Thread-154616] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:11.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:34:11.053 [DEBUG] [Thread-154619] [transport.py] [_log()] starting thread (client mode): 0x2e38ddb0
2025-09-29T11:34:11.054 [DEBUG] [Thread-154619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:34:11.068 [DEBUG] [Thread-154619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:34:11.068 [INFO] [Thread-154619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:34:11.076 [DEBUG] [Thread-154619] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:34:11.076 [DEBUG] [Thread-154619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:34:11.076 [DEBUG] [Thread-154619] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] client lang: <none>
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] server lang: <none>
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] kex follows: False
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] Compression: none
2025-09-29T11:34:11.077 [DEBUG] [Thread-154619] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:34:11.133 [DEBUG] [Thread-154619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:34:11.133 [DEBUG] [Thread-154619] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:34:11.134 [DEBUG] [Thread-154619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:34:11.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:34:11.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:34:11.189 [DEBUG] [Thread-154619] [transport.py] [_log()] userauth is OK
2025-09-29T11:34:11.189 [DEBUG] [Thread-154619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:34:11.189 [DEBUG] [Thread-154619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:34:11.189 [DEBUG] [Thread-154619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:34:11.189 [DEBUG] [Thread-154619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:34:11.208 [INFO] [Thread-154619] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:34:11.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:34:11.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:34:12.123 [DEBUG] [Thread-154619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:34:12.124 [DEBUG] [Thread-154619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:34:12.171 [DEBUG] [Thread-154619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:34:12.171 [DEBUG] [Thread-154619] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:34:12.180 [DEBUG] [Thread-154619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:34:12.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:34:12.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:34:12.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:34:12.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:34:12.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:34:12.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:34:12.214 [DEBUG] [Thread-154619] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:21.907 [DEBUG] [Thread-154621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:34:22.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:34:22.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:34:22.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:34:22.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 33, 59), 9.98, 50.45, 0.0, 16.5, 11.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:34:22.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:33:59
2025-09-29T11:34:22.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:34:23.126 [DEBUG] [Thread-154622] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d70
2025-09-29T11:34:23.126 [DEBUG] [Thread-154622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:34:23.147 [DEBUG] [Thread-154622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:34:23.147 [INFO] [Thread-154622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:34:23.151 [DEBUG] [Thread-154622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:34:23.151 [DEBUG] [Thread-154622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:34:23.151 [DEBUG] [Thread-154622] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:34:23.151 [DEBUG] [Thread-154622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] client lang: <none>
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] server lang: <none>
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] kex follows: False
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] Compression: none
2025-09-29T11:34:23.152 [DEBUG] [Thread-154622] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:34:23.166 [DEBUG] [Thread-154622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:34:23.166 [DEBUG] [Thread-154622] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:34:23.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:34:23.167 [DEBUG] [Thread-154622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:34:23.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:34:23.167 [DEBUG] [Thread-154622] [transport.py] [_log()] userauth is OK
2025-09-29T11:34:23.168 [DEBUG] [Thread-154622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:34:23.168 [DEBUG] [Thread-154622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:34:23.168 [DEBUG] [Thread-154622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:34:23.168 [DEBUG] [Thread-154622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:34:23.178 [INFO] [Thread-154622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:34:23.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:34:23.818 [DEBUG] [Thread-154622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:34:23.818 [DEBUG] [Thread-154622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:34:23.819 [DEBUG] [Thread-154622] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:34:23.860 [DEBUG] [Thread-154622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:34:23.860 [DEBUG] [Thread-154622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:34:23.862 [DEBUG] [Thread-154622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:34:23.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:34:23.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:34:23.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:34:23.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:34:23.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:34:23.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:34:23.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:34:23.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.398683 -999.00  +12.00   9.13     55   +3.30 1 1 1 1 1   888    0 9.85 41.84 ----- 7.2 9.1 178.2 14.5 20.6 -24.5 19.4 -23.3 19.0 -24.0 20.1 -24.7
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.398683
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:34:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:33:59', tmtdew=9.98, humidity=50.45, cloud=0.0, wind=16.5, temperature=11.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:34:06.211', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:34:23.881 [DEBUG] [Thread-154622] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:23.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:34:23.985 [DEBUG] [Thread-154625] [transport.py] [_log()] starting thread (client mode): 0x2b9c0e80
2025-09-29T11:34:23.985 [DEBUG] [Thread-154625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:34:24.001 [DEBUG] [Thread-154625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:34:24.001 [INFO] [Thread-154625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] client lang: <none>
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] server lang: <none>
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] kex follows: False
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] Compression: none
2025-09-29T11:34:24.009 [DEBUG] [Thread-154625] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:34:24.067 [DEBUG] [Thread-154625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:34:24.067 [DEBUG] [Thread-154625] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:34:24.067 [DEBUG] [Thread-154625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:34:24.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:34:24.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:34:24.124 [DEBUG] [Thread-154625] [transport.py] [_log()] userauth is OK
2025-09-29T11:34:24.124 [DEBUG] [Thread-154625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:34:24.124 [DEBUG] [Thread-154625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:34:24.124 [DEBUG] [Thread-154625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:34:24.124 [DEBUG] [Thread-154625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:34:24.138 [INFO] [Thread-154625] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:34:24.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:34:24.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:34:25.102 [DEBUG] [Thread-154625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:34:25.102 [DEBUG] [Thread-154625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:34:25.153 [DEBUG] [Thread-154625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:34:25.153 [DEBUG] [Thread-154625] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:34:25.167 [DEBUG] [Thread-154625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:34:25.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:34:25.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:34:25.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:34:25.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:34:25.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:34:25.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:34:25.203 [DEBUG] [Thread-154625] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:35.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:34:35.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:34:35.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:34:35.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 34, 31), 9.98, 50.45, 0.0, 16.11, 11.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:34:35.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:34:31
2025-09-29T11:34:35.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:34:36.083 [DEBUG] [Thread-154627] [transport.py] [_log()] starting thread (client mode): 0x2b91f0a0
2025-09-29T11:34:36.083 [DEBUG] [Thread-154627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:34:36.103 [DEBUG] [Thread-154627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:34:36.103 [INFO] [Thread-154627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:34:36.106 [DEBUG] [Thread-154627] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:34:36.106 [DEBUG] [Thread-154627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] client lang: <none>
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] server lang: <none>
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] kex follows: False
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] Compression: none
2025-09-29T11:34:36.107 [DEBUG] [Thread-154627] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:34:36.119 [DEBUG] [Thread-154627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:34:36.120 [DEBUG] [Thread-154627] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:34:36.120 [DEBUG] [Thread-154627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:34:36.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:34:36.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:34:36.122 [DEBUG] [Thread-154627] [transport.py] [_log()] userauth is OK
2025-09-29T11:34:36.122 [DEBUG] [Thread-154627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:34:36.122 [DEBUG] [Thread-154627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:34:36.122 [DEBUG] [Thread-154627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:34:36.122 [DEBUG] [Thread-154627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:34:36.146 [INFO] [Thread-154627] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:34:36.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:34:36.325 [DEBUG] [Thread-154629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:34:36.945 [DEBUG] [Thread-154630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:34:36.952 [DEBUG] [Thread-154627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:34:36.952 [DEBUG] [Thread-154627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:34:36.952 [DEBUG] [Thread-154627] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:34:36.993 [DEBUG] [Thread-154627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:34:36.993 [DEBUG] [Thread-154627] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:34:36.996 [DEBUG] [Thread-154627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:34:37.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:34:37.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:34:37.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:34:37.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:34:37.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:34:37.016 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:34:37.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:34:37.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:34:37.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:34:37.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.398683 -999.00  +12.00   9.13     55   +3.30 1 1 1 1 1   888    0 9.85 41.84 ----- 7.2 9.1 178.2 14.5 20.6 -24.5 19.4 -23.3 19.0 -24.0 20.1 -24.7
2025-09-29T11:34:37.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:34:37.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:34:37.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.398683
2025-09-29T11:34:37.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:34:37.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:34:37.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:34:37.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:34:37.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:34:37.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:34:31', tmtdew=9.98, humidity=50.45, cloud=0.0, wind=16.11, temperature=11.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:34:06.211', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:34:37.019 [DEBUG] [Thread-154627] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:37.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:34:37.117 [DEBUG] [Thread-154632] [transport.py] [_log()] starting thread (client mode): 0x2b9bb3a0
2025-09-29T11:34:37.117 [DEBUG] [Thread-154632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:34:37.131 [DEBUG] [Thread-154632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:34:37.131 [INFO] [Thread-154632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] client lang: <none>
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] server lang: <none>
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] kex follows: False
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:34:37.139 [DEBUG] [Thread-154632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:34:37.140 [DEBUG] [Thread-154632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:34:37.140 [DEBUG] [Thread-154632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:34:37.140 [DEBUG] [Thread-154632] [transport.py] [_log()] Compression: none
2025-09-29T11:34:37.140 [DEBUG] [Thread-154632] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:34:37.195 [DEBUG] [Thread-154632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:34:37.196 [DEBUG] [Thread-154632] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:34:37.196 [DEBUG] [Thread-154632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:34:37.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:34:37.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:34:37.254 [DEBUG] [Thread-154632] [transport.py] [_log()] userauth is OK
2025-09-29T11:34:37.255 [DEBUG] [Thread-154632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:34:37.255 [DEBUG] [Thread-154632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:34:37.255 [DEBUG] [Thread-154632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:34:37.255 [DEBUG] [Thread-154632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:34:37.274 [INFO] [Thread-154632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:34:37.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:34:37.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:34:38.197 [DEBUG] [Thread-154632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:34:38.197 [DEBUG] [Thread-154632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:34:38.245 [DEBUG] [Thread-154632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:34:38.246 [DEBUG] [Thread-154632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:34:38.255 [DEBUG] [Thread-154632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:34:38.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:34:38.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:34:38.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:34:38.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:34:38.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:34:38.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:34:38.289 [DEBUG] [Thread-154632] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:39.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:34:39.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:34:48.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:34:48.291 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:34:48.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:34:48.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 34, 31), 9.98, 50.45, 0.0, 16.11, 11.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:34:48.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:34:31
2025-09-29T11:34:49.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:34:49.151 [DEBUG] [Thread-154634] [transport.py] [_log()] starting thread (client mode): 0x2b956a40
2025-09-29T11:34:49.151 [DEBUG] [Thread-154634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:34:49.170 [DEBUG] [Thread-154634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:34:49.170 [INFO] [Thread-154634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] client lang: <none>
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] server lang: <none>
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] kex follows: False
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:34:49.171 [DEBUG] [Thread-154634] [transport.py] [_log()] Compression: none
2025-09-29T11:34:49.172 [DEBUG] [Thread-154634] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:34:49.182 [DEBUG] [Thread-154634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:34:49.182 [DEBUG] [Thread-154634] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:34:49.183 [DEBUG] [Thread-154634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:34:49.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:34:49.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:34:49.184 [DEBUG] [Thread-154634] [transport.py] [_log()] userauth is OK
2025-09-29T11:34:49.184 [DEBUG] [Thread-154634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:34:49.184 [DEBUG] [Thread-154634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:34:49.184 [DEBUG] [Thread-154634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:34:49.184 [DEBUG] [Thread-154634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:34:49.207 [INFO] [Thread-154634] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:34:49.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:34:49.862 [DEBUG] [Thread-154634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:34:49.862 [DEBUG] [Thread-154634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:34:49.863 [DEBUG] [Thread-154634] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:34:49.903 [DEBUG] [Thread-154634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:34:49.903 [DEBUG] [Thread-154634] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:34:49.906 [DEBUG] [Thread-154634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:34:49.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:34:49.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:34:49.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:34:49.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:34:49.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:34:49.928 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:34:49.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:34:49.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:34:49.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:34:49.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.399030 -999.00  +11.90  17.27     54   +3.10 1 1 1 1 1   888    0 9.77 46.91 ----- 15.9 17.3 143.8 23.7 20.5 -25.9 19.3 -25.1 18.9 -25.3 20.1 -26.1
2025-09-29T11:34:49.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:34:49.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:34:49.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.399030
2025-09-29T11:34:49.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:34:49.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:34:49.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:34:49.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:34:49.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:34:49.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:34:31', tmtdew=9.98, humidity=50.45, cloud=0.0, wind=16.11, temperature=11.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:34:36.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:34:49.931 [DEBUG] [Thread-154634] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:50.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:34:50.025 [DEBUG] [Thread-154637] [transport.py] [_log()] starting thread (client mode): 0x2b957520
2025-09-29T11:34:50.025 [DEBUG] [Thread-154637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:34:50.040 [DEBUG] [Thread-154637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:34:50.040 [INFO] [Thread-154637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] client lang: <none>
2025-09-29T11:34:50.048 [DEBUG] [Thread-154637] [transport.py] [_log()] server lang: <none>
2025-09-29T11:34:50.049 [DEBUG] [Thread-154637] [transport.py] [_log()] kex follows: False
2025-09-29T11:34:50.049 [DEBUG] [Thread-154637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:34:50.049 [DEBUG] [Thread-154637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:34:50.049 [DEBUG] [Thread-154637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:34:50.049 [DEBUG] [Thread-154637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:34:50.049 [DEBUG] [Thread-154637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:34:50.049 [DEBUG] [Thread-154637] [transport.py] [_log()] Compression: none
2025-09-29T11:34:50.049 [DEBUG] [Thread-154637] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:34:50.110 [DEBUG] [Thread-154637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:34:50.111 [DEBUG] [Thread-154637] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:34:50.111 [DEBUG] [Thread-154637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:34:50.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:34:50.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:34:50.167 [DEBUG] [Thread-154637] [transport.py] [_log()] userauth is OK
2025-09-29T11:34:50.167 [DEBUG] [Thread-154637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:34:50.167 [DEBUG] [Thread-154637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:34:50.167 [DEBUG] [Thread-154637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:34:50.167 [DEBUG] [Thread-154637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:34:50.185 [INFO] [Thread-154637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:34:50.185 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:34:50.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:34:51.176 [DEBUG] [Thread-154637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:34:51.177 [DEBUG] [Thread-154637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:34:51.224 [DEBUG] [Thread-154637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:34:51.224 [DEBUG] [Thread-154637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:34:51.233 [DEBUG] [Thread-154637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:34:51.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:34:51.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:34:51.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:34:51.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:34:51.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:34:51.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:34:51.267 [DEBUG] [Thread-154637] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:34:51.990 [DEBUG] [Thread-154639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:35:01.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:35:01.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:35:01.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:35:01.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 34, 31), 9.98, 50.45, 0.0, 16.11, 11.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:35:01.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:34:31
2025-09-29T11:35:02.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:35:02.178 [DEBUG] [Thread-154640] [transport.py] [_log()] starting thread (client mode): 0x2e38e9b0
2025-09-29T11:35:02.178 [DEBUG] [Thread-154640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:02.199 [DEBUG] [Thread-154640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:35:02.199 [INFO] [Thread-154640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] Compression: none
2025-09-29T11:35:02.202 [DEBUG] [Thread-154640] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:02.217 [DEBUG] [Thread-154640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:02.218 [DEBUG] [Thread-154640] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:02.218 [DEBUG] [Thread-154640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:35:02.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:35:02.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:02.218 [DEBUG] [Thread-154640] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:02.218 [DEBUG] [Thread-154640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:02.218 [DEBUG] [Thread-154640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:02.218 [DEBUG] [Thread-154640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:35:02.218 [DEBUG] [Thread-154640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:02.228 [INFO] [Thread-154640] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:02.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:05.924 [DEBUG] [Thread-154640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:05.924 [DEBUG] [Thread-154640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:05.924 [DEBUG] [Thread-154640] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:35:05.965 [DEBUG] [Thread-154640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:05.966 [DEBUG] [Thread-154640] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:05.969 [DEBUG] [Thread-154640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:05.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:05.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:35:05.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:35:05.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:35:06.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:06.171 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:35:06.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:06.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:06.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:35:06.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.399030 -999.00  +11.90  17.27     54   +3.10 1 1 1 1 1   888    0 9.77 46.91 ----- 15.9 17.3 143.8 23.7 20.5 -25.9 19.3 -25.1 18.9 -25.3 20.1 -26.1
2025-09-29T11:35:06.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:35:06.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:35:06.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.399030
2025-09-29T11:35:06.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:35:06.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:35:06.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:35:06.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:35:06.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:35:06.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:34:31', tmtdew=9.98, humidity=50.45, cloud=0.0, wind=16.11, temperature=11.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:34:36.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:35:06.173 [DEBUG] [Thread-154640] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:06.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:35:06.271 [DEBUG] [Thread-154643] [transport.py] [_log()] starting thread (client mode): 0x2e38dc90
2025-09-29T11:35:06.271 [DEBUG] [Thread-154643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:06.286 [DEBUG] [Thread-154643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:35:06.286 [INFO] [Thread-154643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:35:06.294 [DEBUG] [Thread-154643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:06.294 [DEBUG] [Thread-154643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:35:06.294 [DEBUG] [Thread-154643] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:06.294 [DEBUG] [Thread-154643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:06.294 [DEBUG] [Thread-154643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:06.294 [DEBUG] [Thread-154643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:06.294 [DEBUG] [Thread-154643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:06.294 [DEBUG] [Thread-154643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:06.295 [DEBUG] [Thread-154643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:06.295 [DEBUG] [Thread-154643] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:06.295 [DEBUG] [Thread-154643] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:06.295 [DEBUG] [Thread-154643] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:06.295 [DEBUG] [Thread-154643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:06.295 [DEBUG] [Thread-154643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:06.295 [DEBUG] [Thread-154643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:06.295 [DEBUG] [Thread-154643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:06.296 [DEBUG] [Thread-154643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:06.296 [DEBUG] [Thread-154643] [transport.py] [_log()] Compression: none
2025-09-29T11:35:06.296 [DEBUG] [Thread-154643] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:06.350 [DEBUG] [Thread-154643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:06.351 [DEBUG] [Thread-154643] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:06.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:35:06.352 [DEBUG] [Thread-154643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:35:06.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:06.406 [DEBUG] [Thread-154643] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:06.406 [DEBUG] [Thread-154643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:06.407 [DEBUG] [Thread-154643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:06.407 [DEBUG] [Thread-154643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:35:06.407 [DEBUG] [Thread-154643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:06.428 [INFO] [Thread-154643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:06.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:35:06.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:07.033 [DEBUG] [Thread-154645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:35:07.367 [DEBUG] [Thread-154643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:07.367 [DEBUG] [Thread-154643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:07.415 [DEBUG] [Thread-154643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:07.415 [DEBUG] [Thread-154643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:07.425 [DEBUG] [Thread-154643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:07.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:07.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:35:07.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:35:07.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:07.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:07.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:07.460 [DEBUG] [Thread-154643] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:17.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:35:17.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:35:17.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:35:18.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 35, 3), 9.98, 50.46, 0.0, 13.83, 11.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:35:18.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:35:03
2025-09-29T11:35:18.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:35:18.318 [DEBUG] [Thread-154646] [transport.py] [_log()] starting thread (client mode): 0x2b954eb0
2025-09-29T11:35:18.319 [DEBUG] [Thread-154646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:18.342 [DEBUG] [Thread-154646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:35:18.342 [INFO] [Thread-154646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:35:18.346 [DEBUG] [Thread-154646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:18.346 [DEBUG] [Thread-154646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:35:18.346 [DEBUG] [Thread-154646] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] Compression: none
2025-09-29T11:35:18.347 [DEBUG] [Thread-154646] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:18.364 [DEBUG] [Thread-154646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:18.364 [DEBUG] [Thread-154646] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:18.365 [DEBUG] [Thread-154646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:35:18.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:35:18.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:18.367 [DEBUG] [Thread-154646] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:18.367 [DEBUG] [Thread-154646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:18.367 [DEBUG] [Thread-154646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:18.368 [DEBUG] [Thread-154646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:35:18.368 [DEBUG] [Thread-154646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:18.403 [INFO] [Thread-154646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:18.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:19.246 [DEBUG] [Thread-154646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:19.246 [DEBUG] [Thread-154646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:19.247 [DEBUG] [Thread-154646] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:35:19.287 [DEBUG] [Thread-154646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:19.287 [DEBUG] [Thread-154646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:19.290 [DEBUG] [Thread-154646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:19.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:19.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:35:19.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:35:19.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:35:19.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:19.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:35:19.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:19.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:19.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:35:19.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.399030 -999.00  +11.90  17.27     54   +3.10 1 1 1 1 1   888    0 9.77 46.91 ----- 15.9 17.3 143.8 23.7 20.5 -25.9 19.3 -25.1 18.9 -25.3 20.1 -26.1
2025-09-29T11:35:19.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:35:19.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:35:19.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.399030
2025-09-29T11:35:19.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:35:19.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:35:19.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:35:19.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:35:19.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:35:19.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:35:03', tmtdew=9.98, humidity=50.46, cloud=0.0, wind=13.83, temperature=11.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:34:36.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:35:19.316 [DEBUG] [Thread-154646] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:19.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:35:19.411 [DEBUG] [Thread-154649] [transport.py] [_log()] starting thread (client mode): 0x2b9c1780
2025-09-29T11:35:19.411 [DEBUG] [Thread-154649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:19.430 [DEBUG] [Thread-154649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:35:19.430 [INFO] [Thread-154649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:19.438 [DEBUG] [Thread-154649] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:19.439 [DEBUG] [Thread-154649] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:19.439 [DEBUG] [Thread-154649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:19.439 [DEBUG] [Thread-154649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:19.439 [DEBUG] [Thread-154649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:19.439 [DEBUG] [Thread-154649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:19.439 [DEBUG] [Thread-154649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:19.439 [DEBUG] [Thread-154649] [transport.py] [_log()] Compression: none
2025-09-29T11:35:19.439 [DEBUG] [Thread-154649] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:19.497 [DEBUG] [Thread-154649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:19.497 [DEBUG] [Thread-154649] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:19.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:35:19.498 [DEBUG] [Thread-154649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:35:19.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:19.553 [DEBUG] [Thread-154649] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:19.554 [DEBUG] [Thread-154649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:19.554 [DEBUG] [Thread-154649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:19.554 [DEBUG] [Thread-154649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:35:19.554 [DEBUG] [Thread-154649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:19.572 [INFO] [Thread-154649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:19.573 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:35:19.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:20.530 [DEBUG] [Thread-154649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:20.530 [DEBUG] [Thread-154649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:20.578 [DEBUG] [Thread-154649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:20.578 [DEBUG] [Thread-154649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:20.587 [DEBUG] [Thread-154649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:20.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:20.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:35:20.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:35:20.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:20.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:20.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:20.621 [DEBUG] [Thread-154649] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:22.065 [DEBUG] [Thread-154651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:35:30.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:35:30.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:35:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:35:31.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 35, 3), 9.98, 50.46, 0.0, 13.83, 11.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:35:31.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:35:03
2025-09-29T11:35:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:35:31.467 [DEBUG] [Thread-154652] [transport.py] [_log()] starting thread (client mode): 0x2e38f550
2025-09-29T11:35:31.467 [DEBUG] [Thread-154652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:31.486 [DEBUG] [Thread-154652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:35:31.487 [INFO] [Thread-154652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:35:31.490 [DEBUG] [Thread-154652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:31.490 [DEBUG] [Thread-154652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:35:31.490 [DEBUG] [Thread-154652] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:31.490 [DEBUG] [Thread-154652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:31.490 [DEBUG] [Thread-154652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] Compression: none
2025-09-29T11:35:31.491 [DEBUG] [Thread-154652] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:31.507 [DEBUG] [Thread-154652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:31.508 [DEBUG] [Thread-154652] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:31.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:35:31.509 [DEBUG] [Thread-154652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:35:31.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:31.552 [DEBUG] [Thread-154652] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:31.552 [DEBUG] [Thread-154652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:31.552 [DEBUG] [Thread-154652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:31.552 [DEBUG] [Thread-154652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:35:31.553 [DEBUG] [Thread-154652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:31.574 [INFO] [Thread-154652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:31.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:32.213 [DEBUG] [Thread-154652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:32.213 [DEBUG] [Thread-154652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:32.213 [DEBUG] [Thread-154652] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:35:32.253 [DEBUG] [Thread-154652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:32.253 [DEBUG] [Thread-154652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:32.255 [DEBUG] [Thread-154652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:32.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:32.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:35:32.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:35:32.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:35:32.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:32.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:35:32.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.399377 -999.00  +11.90  17.11     54   +3.10 1 1 1 1 1   888    0 9.90 50.46 ----- 16.5 17.1 169.6 22.1 20.6 -25.6 19.4 -24.6 19.0 -24.7 20.1 -26.0
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.399377
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:35:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:35:32.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:35:03', tmtdew=9.98, humidity=50.46, cloud=0.0, wind=13.83, temperature=11.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:35:06.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:35:32.272 [DEBUG] [Thread-154652] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:32.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:35:32.366 [DEBUG] [Thread-154655] [transport.py] [_log()] starting thread (client mode): 0x2b91c760
2025-09-29T11:35:32.366 [DEBUG] [Thread-154655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:32.381 [DEBUG] [Thread-154655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:35:32.381 [INFO] [Thread-154655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] Compression: none
2025-09-29T11:35:32.389 [DEBUG] [Thread-154655] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:32.444 [DEBUG] [Thread-154655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:32.445 [DEBUG] [Thread-154655] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:32.445 [DEBUG] [Thread-154655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:35:32.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:35:32.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:32.501 [DEBUG] [Thread-154655] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:32.501 [DEBUG] [Thread-154655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:32.501 [DEBUG] [Thread-154655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:32.501 [DEBUG] [Thread-154655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:35:32.501 [DEBUG] [Thread-154655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:32.521 [INFO] [Thread-154655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:32.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:35:32.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:33.441 [DEBUG] [Thread-154655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:33.442 [DEBUG] [Thread-154655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:33.490 [DEBUG] [Thread-154655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:33.490 [DEBUG] [Thread-154655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:33.499 [DEBUG] [Thread-154655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:33.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:33.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:35:33.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:35:33.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:33.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:33.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:33.535 [DEBUG] [Thread-154655] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:36.375 [DEBUG] [Thread-154657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:35:37.119 [DEBUG] [Thread-154658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:35:39.755 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:35:39.756 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:35:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:35:43.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:35:43.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:35:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 35, 35), 10.3, 49.41, 0.0, 13.53, 11.97, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:35:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:35:35
2025-09-29T11:35:44.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:35:44.386 [DEBUG] [Thread-154659] [transport.py] [_log()] starting thread (client mode): 0x2b956350
2025-09-29T11:35:44.386 [DEBUG] [Thread-154659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:44.407 [DEBUG] [Thread-154659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:35:44.407 [INFO] [Thread-154659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] Compression: none
2025-09-29T11:35:44.411 [DEBUG] [Thread-154659] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:44.430 [DEBUG] [Thread-154659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:44.431 [DEBUG] [Thread-154659] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:44.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:35:44.432 [DEBUG] [Thread-154659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:35:44.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:44.434 [DEBUG] [Thread-154659] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:44.434 [DEBUG] [Thread-154659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:44.434 [DEBUG] [Thread-154659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:44.434 [DEBUG] [Thread-154659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:35:44.434 [DEBUG] [Thread-154659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:44.460 [INFO] [Thread-154659] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:44.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:45.144 [DEBUG] [Thread-154659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:45.144 [DEBUG] [Thread-154659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:45.145 [DEBUG] [Thread-154659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:35:45.185 [DEBUG] [Thread-154659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:45.185 [DEBUG] [Thread-154659] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:45.188 [DEBUG] [Thread-154659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:45.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:45.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:35:45.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:35:45.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:35:45.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:45.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:35:45.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:45.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:45.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:35:45.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.399377 -999.00  +11.90  17.11     54   +3.10 1 1 1 1 1   888    0 9.90 50.46 ----- 16.5 17.1 169.6 22.1 20.6 -25.6 19.4 -24.6 19.0 -24.7 20.1 -26.0
2025-09-29T11:35:45.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:35:45.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:35:45.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.399377
2025-09-29T11:35:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:35:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:35:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:35:45.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:35:45.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:35:45.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:35:35', tmtdew=10.3, humidity=49.41, cloud=0.0, wind=13.53, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:35:06.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:35:45.213 [DEBUG] [Thread-154659] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:45.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:35:45.309 [DEBUG] [Thread-154662] [transport.py] [_log()] starting thread (client mode): 0x28706920
2025-09-29T11:35:45.309 [DEBUG] [Thread-154662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:45.328 [DEBUG] [Thread-154662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:35:45.328 [INFO] [Thread-154662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:35:45.336 [DEBUG] [Thread-154662] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:45.336 [DEBUG] [Thread-154662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:35:45.336 [DEBUG] [Thread-154662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:45.337 [DEBUG] [Thread-154662] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:45.338 [DEBUG] [Thread-154662] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:45.338 [DEBUG] [Thread-154662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:45.338 [DEBUG] [Thread-154662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:45.338 [DEBUG] [Thread-154662] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:45.338 [DEBUG] [Thread-154662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:45.339 [DEBUG] [Thread-154662] [transport.py] [_log()] Compression: none
2025-09-29T11:35:45.339 [DEBUG] [Thread-154662] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:45.399 [DEBUG] [Thread-154662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:45.400 [DEBUG] [Thread-154662] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:45.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:35:45.401 [DEBUG] [Thread-154662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:35:45.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:45.456 [DEBUG] [Thread-154662] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:45.457 [DEBUG] [Thread-154662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:45.457 [DEBUG] [Thread-154662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:45.457 [DEBUG] [Thread-154662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:35:45.457 [DEBUG] [Thread-154662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:45.477 [INFO] [Thread-154662] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:45.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:35:45.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:46.463 [DEBUG] [Thread-154662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:46.463 [DEBUG] [Thread-154662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:46.511 [DEBUG] [Thread-154662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:46.511 [DEBUG] [Thread-154662] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:46.520 [DEBUG] [Thread-154662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:46.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:46.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:35:46.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:35:46.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:46.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:46.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:46.555 [DEBUG] [Thread-154662] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:52.154 [DEBUG] [Thread-154664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:35:56.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:35:56.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:35:56.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:35:57.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 35, 35), 10.3, 49.41, 0.0, 13.53, 11.97, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:35:57.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:35:35
2025-09-29T11:35:57.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:35:57.408 [DEBUG] [Thread-154665] [transport.py] [_log()] starting thread (client mode): 0x2b957580
2025-09-29T11:35:57.408 [DEBUG] [Thread-154665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:57.428 [DEBUG] [Thread-154665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:35:57.428 [INFO] [Thread-154665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:35:57.429 [DEBUG] [Thread-154665] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] Compression: none
2025-09-29T11:35:57.430 [DEBUG] [Thread-154665] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:57.438 [DEBUG] [Thread-154665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:57.438 [DEBUG] [Thread-154665] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:57.439 [DEBUG] [Thread-154665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:35:57.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:35:57.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:57.440 [DEBUG] [Thread-154665] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:57.440 [DEBUG] [Thread-154665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:57.440 [DEBUG] [Thread-154665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:57.440 [DEBUG] [Thread-154665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:35:57.440 [DEBUG] [Thread-154665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:57.455 [INFO] [Thread-154665] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:57.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:58.066 [DEBUG] [Thread-154665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:58.066 [DEBUG] [Thread-154665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:58.067 [DEBUG] [Thread-154665] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:35:58.107 [DEBUG] [Thread-154665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:58.107 [DEBUG] [Thread-154665] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:58.110 [DEBUG] [Thread-154665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:58.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:58.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:35:58.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:35:58.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:35:58.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:58.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:35:58.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:58.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:58.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:35:58.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.399724 -999.00  +11.80   8.83     54   +3.00 1 1 1 1 1   888    0 9.99 53.59 ----- 9.4 8.8 168.4 15.7 20.6 -24.6 19.3 -23.9 19.1 -24.2 20.3 -25.6
2025-09-29T11:35:58.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:35:58.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:35:58.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.399724
2025-09-29T11:35:58.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:35:58.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:35:58.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:35:58.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:35:58.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:35:58.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:35:35', tmtdew=10.3, humidity=49.41, cloud=0.0, wind=13.53, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:35:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:35:58.127 [DEBUG] [Thread-154665] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:35:58.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:35:58.224 [DEBUG] [Thread-154668] [transport.py] [_log()] starting thread (client mode): 0x2e38cc10
2025-09-29T11:35:58.224 [DEBUG] [Thread-154668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:35:58.239 [DEBUG] [Thread-154668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:35:58.239 [INFO] [Thread-154668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:35:58.246 [DEBUG] [Thread-154668] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:35:58.246 [DEBUG] [Thread-154668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:35:58.246 [DEBUG] [Thread-154668] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:35:58.246 [DEBUG] [Thread-154668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:58.246 [DEBUG] [Thread-154668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:35:58.246 [DEBUG] [Thread-154668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] client lang: <none>
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] server lang: <none>
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] kex follows: False
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] Compression: none
2025-09-29T11:35:58.247 [DEBUG] [Thread-154668] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:35:58.303 [DEBUG] [Thread-154668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:35:58.303 [DEBUG] [Thread-154668] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:35:58.304 [DEBUG] [Thread-154668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:35:58.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:35:58.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:35:58.360 [DEBUG] [Thread-154668] [transport.py] [_log()] userauth is OK
2025-09-29T11:35:58.360 [DEBUG] [Thread-154668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:35:58.360 [DEBUG] [Thread-154668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:35:58.360 [DEBUG] [Thread-154668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:35:58.360 [DEBUG] [Thread-154668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:35:58.378 [INFO] [Thread-154668] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:35:58.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:35:58.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:35:59.265 [DEBUG] [Thread-154668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:35:59.265 [DEBUG] [Thread-154668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:35:59.313 [DEBUG] [Thread-154668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:35:59.313 [DEBUG] [Thread-154668] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:35:59.322 [DEBUG] [Thread-154668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:35:59.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:35:59.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:35:59.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:35:59.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:35:59.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:35:59.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:35:59.356 [DEBUG] [Thread-154668] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:07.200 [DEBUG] [Thread-154670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:36:09.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:36:09.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:36:09.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:36:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 35, 35), 10.3, 49.41, 0.0, 13.53, 11.97, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:36:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:35:35
2025-09-29T11:36:10.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:36:10.205 [DEBUG] [Thread-154671] [transport.py] [_log()] starting thread (client mode): 0x2e34b3a0
2025-09-29T11:36:10.206 [DEBUG] [Thread-154671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:36:10.225 [DEBUG] [Thread-154671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:36:10.226 [INFO] [Thread-154671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:36:10.229 [DEBUG] [Thread-154671] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:36:10.229 [DEBUG] [Thread-154671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:36:10.229 [DEBUG] [Thread-154671] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:36:10.229 [DEBUG] [Thread-154671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:10.229 [DEBUG] [Thread-154671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:10.229 [DEBUG] [Thread-154671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:10.229 [DEBUG] [Thread-154671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] client lang: <none>
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] server lang: <none>
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] kex follows: False
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] Compression: none
2025-09-29T11:36:10.230 [DEBUG] [Thread-154671] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:36:10.248 [DEBUG] [Thread-154671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:36:10.249 [DEBUG] [Thread-154671] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:36:10.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:36:10.250 [DEBUG] [Thread-154671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:36:10.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:36:10.252 [DEBUG] [Thread-154671] [transport.py] [_log()] userauth is OK
2025-09-29T11:36:10.252 [DEBUG] [Thread-154671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:36:10.252 [DEBUG] [Thread-154671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:36:10.252 [DEBUG] [Thread-154671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:36:10.252 [DEBUG] [Thread-154671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:36:10.277 [INFO] [Thread-154671] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:36:10.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:36:10.899 [DEBUG] [Thread-154671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:36:10.899 [DEBUG] [Thread-154671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:36:10.899 [DEBUG] [Thread-154671] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:36:10.941 [DEBUG] [Thread-154671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:36:10.941 [DEBUG] [Thread-154671] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:36:10.943 [DEBUG] [Thread-154671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:36:10.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:36:10.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:36:10.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:36:10.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:36:10.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:36:10.961 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:36:10.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.399724 -999.00  +11.80   8.83     54   +3.00 1 1 1 1 1   888    0 9.99 53.59 ----- 9.4 8.8 168.4 15.7 20.6 -24.6 19.3 -23.9 19.1 -24.2 20.3 -25.6
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.399724
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:36:10.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:36:10.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:36:10.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:35:35', tmtdew=10.3, humidity=49.41, cloud=0.0, wind=13.53, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:35:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:36:10.962 [DEBUG] [Thread-154671] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:11.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:36:11.045 [DEBUG] [Thread-154674] [transport.py] [_log()] starting thread (client mode): 0x2e34bac0
2025-09-29T11:36:11.045 [DEBUG] [Thread-154674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:36:11.060 [DEBUG] [Thread-154674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:36:11.061 [INFO] [Thread-154674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:36:11.068 [DEBUG] [Thread-154674] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:36:11.068 [DEBUG] [Thread-154674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:36:11.069 [DEBUG] [Thread-154674] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:36:11.069 [DEBUG] [Thread-154674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:11.069 [DEBUG] [Thread-154674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:11.069 [DEBUG] [Thread-154674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:11.069 [DEBUG] [Thread-154674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:11.069 [DEBUG] [Thread-154674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:36:11.069 [DEBUG] [Thread-154674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:36:11.069 [DEBUG] [Thread-154674] [transport.py] [_log()] client lang: <none>
2025-09-29T11:36:11.070 [DEBUG] [Thread-154674] [transport.py] [_log()] server lang: <none>
2025-09-29T11:36:11.070 [DEBUG] [Thread-154674] [transport.py] [_log()] kex follows: False
2025-09-29T11:36:11.070 [DEBUG] [Thread-154674] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:36:11.070 [DEBUG] [Thread-154674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:36:11.070 [DEBUG] [Thread-154674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:36:11.070 [DEBUG] [Thread-154674] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:36:11.071 [DEBUG] [Thread-154674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:36:11.071 [DEBUG] [Thread-154674] [transport.py] [_log()] Compression: none
2025-09-29T11:36:11.071 [DEBUG] [Thread-154674] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:36:11.127 [DEBUG] [Thread-154674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:36:11.127 [DEBUG] [Thread-154674] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:36:11.128 [DEBUG] [Thread-154674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:36:11.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:36:11.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:36:11.183 [DEBUG] [Thread-154674] [transport.py] [_log()] userauth is OK
2025-09-29T11:36:11.183 [DEBUG] [Thread-154674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:36:11.183 [DEBUG] [Thread-154674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:36:11.183 [DEBUG] [Thread-154674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:36:11.184 [DEBUG] [Thread-154674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:36:11.203 [INFO] [Thread-154674] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:36:11.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:36:11.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:36:12.146 [DEBUG] [Thread-154674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:36:12.146 [DEBUG] [Thread-154674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:36:12.195 [DEBUG] [Thread-154674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:36:12.195 [DEBUG] [Thread-154674] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:36:12.207 [DEBUG] [Thread-154674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:36:12.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:36:12.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:36:12.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:36:12.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:36:12.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:36:12.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:36:12.244 [DEBUG] [Thread-154674] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:22.242 [DEBUG] [Thread-154676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:36:22.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:36:22.245 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:36:22.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:36:22.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 36, 7), 10.25, 49.58, 0.0, 11.42, 11.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:36:22.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:36:07
2025-09-29T11:36:22.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:36:23.089 [DEBUG] [Thread-154677] [transport.py] [_log()] starting thread (client mode): 0x2e38fbe0
2025-09-29T11:36:23.090 [DEBUG] [Thread-154677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:36:23.109 [DEBUG] [Thread-154677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:36:23.109 [INFO] [Thread-154677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:36:23.111 [DEBUG] [Thread-154677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:36:23.111 [DEBUG] [Thread-154677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:36:23.111 [DEBUG] [Thread-154677] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:36:23.111 [DEBUG] [Thread-154677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:23.111 [DEBUG] [Thread-154677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:23.111 [DEBUG] [Thread-154677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] client lang: <none>
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] server lang: <none>
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] kex follows: False
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] Compression: none
2025-09-29T11:36:23.112 [DEBUG] [Thread-154677] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:36:23.120 [DEBUG] [Thread-154677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:36:23.120 [DEBUG] [Thread-154677] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:36:23.120 [DEBUG] [Thread-154677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:36:23.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:36:23.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:36:23.122 [DEBUG] [Thread-154677] [transport.py] [_log()] userauth is OK
2025-09-29T11:36:23.122 [DEBUG] [Thread-154677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:36:23.122 [DEBUG] [Thread-154677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:36:23.122 [DEBUG] [Thread-154677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:36:23.122 [DEBUG] [Thread-154677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:36:23.156 [INFO] [Thread-154677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:36:23.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:36:23.812 [DEBUG] [Thread-154677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:36:23.812 [DEBUG] [Thread-154677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:36:23.812 [DEBUG] [Thread-154677] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:36:23.853 [DEBUG] [Thread-154677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:36:23.853 [DEBUG] [Thread-154677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:36:23.855 [DEBUG] [Thread-154677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:36:23.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:36:23.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:36:23.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:36:23.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:36:23.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:36:23.876 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:36:23.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:36:23.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:36:23.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:36:23.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.399724 -999.00  +11.80   8.83     54   +3.00 1 1 1 1 1   888    0 9.99 53.59 ----- 9.4 8.8 168.4 15.7 20.6 -24.6 19.3 -23.9 19.1 -24.2 20.3 -25.6
2025-09-29T11:36:23.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:36:23.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:36:23.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.399724
2025-09-29T11:36:23.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:36:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:36:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:36:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:36:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:36:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:36:07', tmtdew=10.25, humidity=49.58, cloud=0.0, wind=11.42, temperature=11.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:35:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:36:23.878 [DEBUG] [Thread-154677] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:23.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:36:23.974 [DEBUG] [Thread-154680] [transport.py] [_log()] starting thread (client mode): 0x2b91e2f0
2025-09-29T11:36:23.974 [DEBUG] [Thread-154680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:36:23.988 [DEBUG] [Thread-154680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:36:23.988 [INFO] [Thread-154680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:36:23.996 [DEBUG] [Thread-154680] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:36:23.996 [DEBUG] [Thread-154680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] client lang: <none>
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] server lang: <none>
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] kex follows: False
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] Compression: none
2025-09-29T11:36:23.997 [DEBUG] [Thread-154680] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:36:24.054 [DEBUG] [Thread-154680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:36:24.054 [DEBUG] [Thread-154680] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:36:24.055 [DEBUG] [Thread-154680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:36:24.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:36:24.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:36:24.110 [DEBUG] [Thread-154680] [transport.py] [_log()] userauth is OK
2025-09-29T11:36:24.111 [DEBUG] [Thread-154680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:36:24.111 [DEBUG] [Thread-154680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:36:24.111 [DEBUG] [Thread-154680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:36:24.111 [DEBUG] [Thread-154680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:36:24.130 [INFO] [Thread-154680] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:36:24.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:36:24.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:36:25.067 [DEBUG] [Thread-154680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:36:25.067 [DEBUG] [Thread-154680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:36:25.115 [DEBUG] [Thread-154680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:36:25.115 [DEBUG] [Thread-154680] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:36:25.124 [DEBUG] [Thread-154680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:36:25.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:36:25.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:36:25.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:36:25.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:36:25.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:36:25.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:36:25.159 [DEBUG] [Thread-154680] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:35.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:36:35.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:36:35.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:36:35.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 36, 7), 10.25, 49.58, 0.0, 11.42, 11.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:36:35.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:36:07
2025-09-29T11:36:35.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:36:35.994 [DEBUG] [Thread-154682] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-29T11:36:35.994 [DEBUG] [Thread-154682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:36:36.014 [DEBUG] [Thread-154682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:36:36.015 [INFO] [Thread-154682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] client lang: <none>
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] server lang: <none>
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] kex follows: False
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] Compression: none
2025-09-29T11:36:36.018 [DEBUG] [Thread-154682] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:36:36.035 [DEBUG] [Thread-154682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:36:36.035 [DEBUG] [Thread-154682] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:36:36.035 [DEBUG] [Thread-154682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:36:36.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:36:36.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:36:36.038 [DEBUG] [Thread-154682] [transport.py] [_log()] userauth is OK
2025-09-29T11:36:36.038 [DEBUG] [Thread-154682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:36:36.038 [DEBUG] [Thread-154682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:36:36.038 [DEBUG] [Thread-154682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:36:36.038 [DEBUG] [Thread-154682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:36:36.055 [INFO] [Thread-154682] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:36:36.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:36:36.425 [DEBUG] [Thread-154684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:36:36.679 [DEBUG] [Thread-154682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:36:36.679 [DEBUG] [Thread-154682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:36:36.679 [DEBUG] [Thread-154682] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:36:36.720 [DEBUG] [Thread-154682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:36:36.720 [DEBUG] [Thread-154682] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:36:36.722 [DEBUG] [Thread-154682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:36:36.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:36:36.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:36:36.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:36:36.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:36:36.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:36:36.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:36:36.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:36:36.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:36:36.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:36:36.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.400072 -999.00  +11.80  14.40     55   +3.20 1 1 1 1 1   888    0 9.99 54.30 ----- 11.9 14.4 158.4 17.1 20.8 -25.9 19.5 -23.6 19.1 -24.9 20.3 -26.0
2025-09-29T11:36:36.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:36:36.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:36:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.400072
2025-09-29T11:36:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:36:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:36:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:36:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:36:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:36:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:36:07', tmtdew=10.25, humidity=49.58, cloud=0.0, wind=11.42, temperature=11.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:36:06.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:36:36.741 [DEBUG] [Thread-154682] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:36.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:36:36.825 [DEBUG] [Thread-154686] [transport.py] [_log()] starting thread (client mode): 0x2e38d780
2025-09-29T11:36:36.825 [DEBUG] [Thread-154686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:36:36.840 [DEBUG] [Thread-154686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:36:36.840 [INFO] [Thread-154686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:36:36.848 [DEBUG] [Thread-154686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] client lang: <none>
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] server lang: <none>
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] kex follows: False
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] Compression: none
2025-09-29T11:36:36.849 [DEBUG] [Thread-154686] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:36:36.908 [DEBUG] [Thread-154686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:36:36.909 [DEBUG] [Thread-154686] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:36:36.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:36:36.910 [DEBUG] [Thread-154686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:36:36.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:36:36.968 [DEBUG] [Thread-154686] [transport.py] [_log()] userauth is OK
2025-09-29T11:36:36.968 [DEBUG] [Thread-154686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:36:36.969 [DEBUG] [Thread-154686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:36:36.969 [DEBUG] [Thread-154686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:36:36.969 [DEBUG] [Thread-154686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:36:36.991 [INFO] [Thread-154686] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:36:36.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:36:36.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:36:37.275 [DEBUG] [Thread-154688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:36:37.919 [DEBUG] [Thread-154686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:36:37.920 [DEBUG] [Thread-154686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:36:37.967 [DEBUG] [Thread-154686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:36:37.967 [DEBUG] [Thread-154686] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:36:37.976 [DEBUG] [Thread-154686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:36:37.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:36:37.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:36:37.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:36:38.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:36:38.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:36:38.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:36:38.011 [DEBUG] [Thread-154686] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:39.898 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:36:39.899 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:36:48.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:36:48.014 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:36:48.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:36:48.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 36, 39), 9.91, 50.55, 0.0, 10.96, 11.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:36:48.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:36:39
2025-09-29T11:36:48.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:36:48.836 [DEBUG] [Thread-154689] [transport.py] [_log()] starting thread (client mode): 0x2b96f370
2025-09-29T11:36:48.836 [DEBUG] [Thread-154689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:36:48.857 [DEBUG] [Thread-154689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:36:48.857 [INFO] [Thread-154689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] client lang: <none>
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] server lang: <none>
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] kex follows: False
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:36:48.860 [DEBUG] [Thread-154689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:36:48.861 [DEBUG] [Thread-154689] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:36:48.861 [DEBUG] [Thread-154689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:36:48.861 [DEBUG] [Thread-154689] [transport.py] [_log()] Compression: none
2025-09-29T11:36:48.861 [DEBUG] [Thread-154689] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:36:48.877 [DEBUG] [Thread-154689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:36:48.877 [DEBUG] [Thread-154689] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:36:48.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:36:48.878 [DEBUG] [Thread-154689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:36:48.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:36:48.880 [DEBUG] [Thread-154689] [transport.py] [_log()] userauth is OK
2025-09-29T11:36:48.880 [DEBUG] [Thread-154689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:36:48.880 [DEBUG] [Thread-154689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:36:48.880 [DEBUG] [Thread-154689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:36:48.880 [DEBUG] [Thread-154689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:36:48.905 [INFO] [Thread-154689] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:36:48.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:36:49.565 [DEBUG] [Thread-154689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:36:49.566 [DEBUG] [Thread-154689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:36:49.566 [DEBUG] [Thread-154689] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:36:49.606 [DEBUG] [Thread-154689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:36:49.606 [DEBUG] [Thread-154689] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:36:49.609 [DEBUG] [Thread-154689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:36:49.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:36:49.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:36:49.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:36:49.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:36:49.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:36:49.636 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:36:49.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.400072 -999.00  +11.80  14.40     55   +3.20 1 1 1 1 1   888    0 9.99 54.30 ----- 11.9 14.4 158.4 17.1 20.8 -25.9 19.5 -23.6 19.1 -24.9 20.3 -26.0
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.400072
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:36:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:36:39', tmtdew=9.91, humidity=50.55, cloud=0.0, wind=10.96, temperature=11.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:36:06.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:36:49.638 [DEBUG] [Thread-154689] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:49.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:36:49.718 [DEBUG] [Thread-154692] [transport.py] [_log()] starting thread (client mode): 0x2b96d240
2025-09-29T11:36:49.718 [DEBUG] [Thread-154692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:36:49.732 [DEBUG] [Thread-154692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:36:49.732 [INFO] [Thread-154692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] client lang: <none>
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] server lang: <none>
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] kex follows: False
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:36:49.740 [DEBUG] [Thread-154692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:36:49.741 [DEBUG] [Thread-154692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:36:49.741 [DEBUG] [Thread-154692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:36:49.741 [DEBUG] [Thread-154692] [transport.py] [_log()] Compression: none
2025-09-29T11:36:49.741 [DEBUG] [Thread-154692] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:36:49.804 [DEBUG] [Thread-154692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:36:49.804 [DEBUG] [Thread-154692] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:36:49.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:36:49.805 [DEBUG] [Thread-154692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:36:49.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:36:49.860 [DEBUG] [Thread-154692] [transport.py] [_log()] userauth is OK
2025-09-29T11:36:49.861 [DEBUG] [Thread-154692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:36:49.861 [DEBUG] [Thread-154692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:36:49.861 [DEBUG] [Thread-154692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:36:49.861 [DEBUG] [Thread-154692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:36:49.877 [INFO] [Thread-154692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:36:49.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:36:49.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:36:50.841 [DEBUG] [Thread-154692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:36:50.842 [DEBUG] [Thread-154692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:36:50.889 [DEBUG] [Thread-154692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:36:50.889 [DEBUG] [Thread-154692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:36:50.898 [DEBUG] [Thread-154692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:36:50.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:36:50.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:36:50.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:36:50.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:36:50.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:36:50.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:36:50.930 [DEBUG] [Thread-154692] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:36:52.321 [DEBUG] [Thread-154694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:37:00.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:37:00.932 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:37:00.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:37:01.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 36, 39), 9.91, 50.55, 0.0, 10.96, 11.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:37:01.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:36:39
2025-09-29T11:37:01.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:37:01.777 [DEBUG] [Thread-154695] [transport.py] [_log()] starting thread (client mode): 0x28706590
2025-09-29T11:37:01.777 [DEBUG] [Thread-154695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:01.798 [DEBUG] [Thread-154695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:37:01.798 [INFO] [Thread-154695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] Compression: none
2025-09-29T11:37:01.801 [DEBUG] [Thread-154695] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:01.818 [DEBUG] [Thread-154695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:01.819 [DEBUG] [Thread-154695] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:01.819 [DEBUG] [Thread-154695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:37:01.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:37:01.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:01.822 [DEBUG] [Thread-154695] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:01.822 [DEBUG] [Thread-154695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:01.822 [DEBUG] [Thread-154695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:01.822 [DEBUG] [Thread-154695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:37:01.822 [DEBUG] [Thread-154695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:01.846 [INFO] [Thread-154695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:01.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:02.493 [DEBUG] [Thread-154695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:02.493 [DEBUG] [Thread-154695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:02.494 [DEBUG] [Thread-154695] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:37:02.534 [DEBUG] [Thread-154695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:02.534 [DEBUG] [Thread-154695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:02.537 [DEBUG] [Thread-154695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:02.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:02.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:37:02.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:37:02.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:37:02.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:02.560 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:37:02.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:02.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:02.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:37:02.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.400072 -999.00  +11.80  14.40     55   +3.20 1 1 1 1 1   888    0 9.99 54.30 ----- 11.9 14.4 158.4 17.1 20.8 -25.9 19.5 -23.6 19.1 -24.9 20.3 -26.0
2025-09-29T11:37:02.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:37:02.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:37:02.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.400072
2025-09-29T11:37:02.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:37:02.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:37:02.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:37:02.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:37:02.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:37:02.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:36:39', tmtdew=9.91, humidity=50.55, cloud=0.0, wind=10.96, temperature=11.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:36:06.221', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:37:02.563 [DEBUG] [Thread-154695] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:02.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:37:02.661 [DEBUG] [Thread-154698] [transport.py] [_log()] starting thread (client mode): 0x2e38cbb0
2025-09-29T11:37:02.661 [DEBUG] [Thread-154698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:02.675 [DEBUG] [Thread-154698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:37:02.675 [INFO] [Thread-154698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:02.683 [DEBUG] [Thread-154698] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:02.684 [DEBUG] [Thread-154698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:02.684 [DEBUG] [Thread-154698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:02.684 [DEBUG] [Thread-154698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:02.684 [DEBUG] [Thread-154698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:02.684 [DEBUG] [Thread-154698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:02.684 [DEBUG] [Thread-154698] [transport.py] [_log()] Compression: none
2025-09-29T11:37:02.684 [DEBUG] [Thread-154698] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:02.741 [DEBUG] [Thread-154698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:02.741 [DEBUG] [Thread-154698] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:02.742 [DEBUG] [Thread-154698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:37:02.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:37:02.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:02.797 [DEBUG] [Thread-154698] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:02.797 [DEBUG] [Thread-154698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:02.797 [DEBUG] [Thread-154698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:02.797 [DEBUG] [Thread-154698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:37:02.798 [DEBUG] [Thread-154698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:02.817 [INFO] [Thread-154698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:02.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:37:02.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:03.782 [DEBUG] [Thread-154698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:03.783 [DEBUG] [Thread-154698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:03.833 [DEBUG] [Thread-154698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:03.833 [DEBUG] [Thread-154698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:03.842 [DEBUG] [Thread-154698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:03.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:03.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:37:03.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:37:03.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:03.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:03.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:03.877 [DEBUG] [Thread-154698] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:07.378 [DEBUG] [Thread-154700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:37:13.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:37:13.872 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:37:13.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:37:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 37, 11), 10.02, 50.23, 0.0, 18.9, 12.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:37:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:37:11
2025-09-29T11:37:14.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:37:14.702 [DEBUG] [Thread-154701] [transport.py] [_log()] starting thread (client mode): 0x2b957850
2025-09-29T11:37:14.702 [DEBUG] [Thread-154701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:14.722 [DEBUG] [Thread-154701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:37:14.722 [INFO] [Thread-154701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:37:14.725 [DEBUG] [Thread-154701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:14.725 [DEBUG] [Thread-154701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:37:14.725 [DEBUG] [Thread-154701] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] Compression: none
2025-09-29T11:37:14.726 [DEBUG] [Thread-154701] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:14.743 [DEBUG] [Thread-154701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:14.744 [DEBUG] [Thread-154701] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:14.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:37:14.745 [DEBUG] [Thread-154701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:37:14.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:14.747 [DEBUG] [Thread-154701] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:14.747 [DEBUG] [Thread-154701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:14.747 [DEBUG] [Thread-154701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:14.747 [DEBUG] [Thread-154701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:37:14.747 [DEBUG] [Thread-154701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:14.771 [INFO] [Thread-154701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:14.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:15.417 [DEBUG] [Thread-154701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:15.418 [DEBUG] [Thread-154701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:15.418 [DEBUG] [Thread-154701] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:37:15.458 [DEBUG] [Thread-154701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:15.459 [DEBUG] [Thread-154701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:15.462 [DEBUG] [Thread-154701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:15.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:15.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:37:15.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:37:15.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:37:15.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:15.484 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:37:15.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:15.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:15.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:37:15.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.400419 -999.00  +11.90   7.86     55   +3.30 1 1 1 1 1   888    0 10.52 59.23 ----- 7.2 7.9 146.2 17.8 20.8 -25.5 19.5 -23.8 19.2 -24.2 20.4 -25.3
2025-09-29T11:37:15.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:37:15.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:37:15.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.400419
2025-09-29T11:37:15.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:37:15.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:37:15.487 [DEBUG] [Thread-154701] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:15.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:37:15.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:37:15.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:37:15.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:37:11', tmtdew=10.02, humidity=50.23, cloud=0.0, wind=18.9, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:36:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:37:15.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:37:15.580 [DEBUG] [Thread-154704] [transport.py] [_log()] starting thread (client mode): 0x2e3c1de0
2025-09-29T11:37:15.580 [DEBUG] [Thread-154704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:15.595 [DEBUG] [Thread-154704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:37:15.595 [INFO] [Thread-154704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] Compression: none
2025-09-29T11:37:15.603 [DEBUG] [Thread-154704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:15.664 [DEBUG] [Thread-154704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:15.664 [DEBUG] [Thread-154704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:15.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:37:15.665 [DEBUG] [Thread-154704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:37:15.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:15.720 [DEBUG] [Thread-154704] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:15.720 [DEBUG] [Thread-154704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:15.720 [DEBUG] [Thread-154704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:15.720 [DEBUG] [Thread-154704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:37:15.720 [DEBUG] [Thread-154704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:15.740 [INFO] [Thread-154704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:15.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:37:15.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:16.671 [DEBUG] [Thread-154704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:16.671 [DEBUG] [Thread-154704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:16.719 [DEBUG] [Thread-154704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:16.719 [DEBUG] [Thread-154704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:16.728 [DEBUG] [Thread-154704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:16.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:16.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:37:16.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:37:16.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:16.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:16.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:16.762 [DEBUG] [Thread-154704] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:22.411 [DEBUG] [Thread-154706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:37:26.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:37:26.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:37:26.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:37:27.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 37, 11), 10.02, 50.23, 0.0, 18.9, 12.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:37:27.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:37:11
2025-09-29T11:37:27.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:37:27.587 [DEBUG] [Thread-154707] [transport.py] [_log()] starting thread (client mode): 0x2b9553c0
2025-09-29T11:37:27.587 [DEBUG] [Thread-154707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:27.607 [DEBUG] [Thread-154707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:37:27.607 [INFO] [Thread-154707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] Compression: none
2025-09-29T11:37:27.611 [DEBUG] [Thread-154707] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:27.626 [DEBUG] [Thread-154707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:27.626 [DEBUG] [Thread-154707] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:27.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:37:27.627 [DEBUG] [Thread-154707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:37:27.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:27.629 [DEBUG] [Thread-154707] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:27.630 [DEBUG] [Thread-154707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:27.630 [DEBUG] [Thread-154707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:27.630 [DEBUG] [Thread-154707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:37:27.630 [DEBUG] [Thread-154707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:27.662 [INFO] [Thread-154707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:27.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:28.313 [DEBUG] [Thread-154707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:28.314 [DEBUG] [Thread-154707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:28.314 [DEBUG] [Thread-154707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:37:28.354 [DEBUG] [Thread-154707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:28.354 [DEBUG] [Thread-154707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:28.357 [DEBUG] [Thread-154707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:28.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:28.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:37:28.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:37:28.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:37:28.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:28.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:37:28.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:28.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:28.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:37:28.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.400419 -999.00  +11.90   7.86     55   +3.30 1 1 1 1 1   888    0 10.52 59.23 ----- 7.2 7.9 146.2 17.8 20.8 -25.5 19.5 -23.8 19.2 -24.2 20.4 -25.3
2025-09-29T11:37:28.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:37:28.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:37:28.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.400419
2025-09-29T11:37:28.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:37:28.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:37:28.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:37:28.381 [DEBUG] [Thread-154707] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:28.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:37:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:37:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:37:11', tmtdew=10.02, humidity=50.23, cloud=0.0, wind=18.9, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:36:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:37:28.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:37:28.467 [DEBUG] [Thread-154710] [transport.py] [_log()] starting thread (client mode): 0x2b96dcc0
2025-09-29T11:37:28.467 [DEBUG] [Thread-154710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:28.481 [DEBUG] [Thread-154710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:37:28.481 [INFO] [Thread-154710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:28.489 [DEBUG] [Thread-154710] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] Compression: none
2025-09-29T11:37:28.490 [DEBUG] [Thread-154710] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:28.547 [DEBUG] [Thread-154710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:28.547 [DEBUG] [Thread-154710] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:28.548 [DEBUG] [Thread-154710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:37:28.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:37:28.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:28.604 [DEBUG] [Thread-154710] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:28.604 [DEBUG] [Thread-154710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:28.604 [DEBUG] [Thread-154710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:28.604 [DEBUG] [Thread-154710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:37:28.604 [DEBUG] [Thread-154710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:28.618 [INFO] [Thread-154710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:28.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:37:28.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:29.655 [DEBUG] [Thread-154710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:29.655 [DEBUG] [Thread-154710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:29.703 [DEBUG] [Thread-154710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:29.703 [DEBUG] [Thread-154710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:29.712 [DEBUG] [Thread-154710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:29.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:29.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:37:29.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:37:29.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:29.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:29.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:29.746 [DEBUG] [Thread-154710] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:36.473 [DEBUG] [Thread-154712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:37:37.446 [DEBUG] [Thread-154713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:37:39.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:37:39.749 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:37:39.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:37:40.042 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:37:40.043 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:37:40.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 37, 11), 10.02, 50.23, 0.0, 18.9, 12.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:37:40.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:37:11
2025-09-29T11:37:40.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:37:40.575 [DEBUG] [Thread-154714] [transport.py] [_log()] starting thread (client mode): 0x2b96df30
2025-09-29T11:37:40.575 [DEBUG] [Thread-154714] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:40.596 [DEBUG] [Thread-154714] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:37:40.596 [INFO] [Thread-154714] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:37:40.599 [DEBUG] [Thread-154714] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:40.599 [DEBUG] [Thread-154714] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:37:40.599 [DEBUG] [Thread-154714] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:40.599 [DEBUG] [Thread-154714] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:40.599 [DEBUG] [Thread-154714] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:40.599 [DEBUG] [Thread-154714] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:40.599 [DEBUG] [Thread-154714] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] Compression: none
2025-09-29T11:37:40.600 [DEBUG] [Thread-154714] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:40.619 [DEBUG] [Thread-154714] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:40.620 [DEBUG] [Thread-154714] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:40.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:37:40.620 [DEBUG] [Thread-154714] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:37:40.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:40.621 [DEBUG] [Thread-154714] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:40.621 [DEBUG] [Thread-154714] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:40.621 [DEBUG] [Thread-154714] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:40.621 [DEBUG] [Thread-154714] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:37:40.621 [DEBUG] [Thread-154714] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:40.633 [INFO] [Thread-154714] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:40.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:41.299 [DEBUG] [Thread-154714] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:41.299 [DEBUG] [Thread-154714] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:41.299 [DEBUG] [Thread-154714] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:37:41.340 [DEBUG] [Thread-154714] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:41.340 [DEBUG] [Thread-154714] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:41.343 [DEBUG] [Thread-154714] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:41.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:41.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:37:41.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:37:41.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:37:41.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:41.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:37:41.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:41.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:41.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:37:41.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.400766 -999.00  +12.10   3.47     55   +3.30 1 1 1 1 1   888    0 10.08 52.49 ----- 7.1 3.5 141.4 12.7 21.0 -24.8 19.5 -23.8 19.4 -24.2 20.6 -23.9
2025-09-29T11:37:41.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:37:41.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:37:41.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.400766
2025-09-29T11:37:41.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:37:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:37:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:37:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:37:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:37:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:37:11', tmtdew=10.02, humidity=50.23, cloud=0.0, wind=18.9, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:37:06.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:37:41.368 [DEBUG] [Thread-154714] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:41.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:37:41.463 [DEBUG] [Thread-154717] [transport.py] [_log()] starting thread (client mode): 0x2e3c09a0
2025-09-29T11:37:41.463 [DEBUG] [Thread-154717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:41.478 [DEBUG] [Thread-154717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:37:41.478 [INFO] [Thread-154717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:37:41.485 [DEBUG] [Thread-154717] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:41.485 [DEBUG] [Thread-154717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] Compression: none
2025-09-29T11:37:41.486 [DEBUG] [Thread-154717] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:41.543 [DEBUG] [Thread-154717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:41.543 [DEBUG] [Thread-154717] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:41.544 [DEBUG] [Thread-154717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:37:41.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:37:41.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:41.599 [DEBUG] [Thread-154717] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:41.599 [DEBUG] [Thread-154717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:41.599 [DEBUG] [Thread-154717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:41.599 [DEBUG] [Thread-154717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:37:41.599 [DEBUG] [Thread-154717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:41.619 [INFO] [Thread-154717] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:41.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:37:41.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:42.628 [DEBUG] [Thread-154717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:42.628 [DEBUG] [Thread-154717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:42.676 [DEBUG] [Thread-154717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:42.676 [DEBUG] [Thread-154717] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:42.685 [DEBUG] [Thread-154717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:42.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:42.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:37:42.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:37:42.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:42.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:42.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:42.720 [DEBUG] [Thread-154717] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:52.473 [DEBUG] [Thread-154719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:37:52.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:37:52.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:37:52.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:37:53.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 37, 43), 10.09, 50.02, 0.0, 18.24, 12.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:37:53.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:37:43
2025-09-29T11:37:53.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:37:53.564 [DEBUG] [Thread-154720] [transport.py] [_log()] starting thread (client mode): 0x2e3c0bb0
2025-09-29T11:37:53.564 [DEBUG] [Thread-154720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:53.583 [DEBUG] [Thread-154720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:37:53.583 [INFO] [Thread-154720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:53.586 [DEBUG] [Thread-154720] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:53.587 [DEBUG] [Thread-154720] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:53.587 [DEBUG] [Thread-154720] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:53.587 [DEBUG] [Thread-154720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:53.587 [DEBUG] [Thread-154720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:53.587 [DEBUG] [Thread-154720] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:53.587 [DEBUG] [Thread-154720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:53.587 [DEBUG] [Thread-154720] [transport.py] [_log()] Compression: none
2025-09-29T11:37:53.587 [DEBUG] [Thread-154720] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:53.604 [DEBUG] [Thread-154720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:53.605 [DEBUG] [Thread-154720] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:53.605 [DEBUG] [Thread-154720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:37:53.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:37:53.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:53.606 [DEBUG] [Thread-154720] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:53.606 [DEBUG] [Thread-154720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:53.606 [DEBUG] [Thread-154720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:53.606 [DEBUG] [Thread-154720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:37:53.607 [DEBUG] [Thread-154720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:53.626 [INFO] [Thread-154720] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:53.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:54.292 [DEBUG] [Thread-154720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:54.292 [DEBUG] [Thread-154720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:54.293 [DEBUG] [Thread-154720] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:37:54.333 [DEBUG] [Thread-154720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:54.333 [DEBUG] [Thread-154720] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:54.336 [DEBUG] [Thread-154720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:54.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:54.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:37:54.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:37:54.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:37:54.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:54.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:37:54.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:54.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:54.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:37:54.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.400766 -999.00  +12.10   3.47     55   +3.30 1 1 1 1 1   888    0 10.08 52.49 ----- 7.1 3.5 141.4 12.7 21.0 -24.8 19.5 -23.8 19.4 -24.2 20.6 -23.9
2025-09-29T11:37:54.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:37:54.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:37:54.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.400766
2025-09-29T11:37:54.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:37:54.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:37:54.365 [DEBUG] [Thread-154720] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:37:54.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:37:54.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:37:54.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:37:54.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:37:43', tmtdew=10.09, humidity=50.02, cloud=0.0, wind=18.24, temperature=12.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:37:06.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:37:54.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:37:54.462 [DEBUG] [Thread-154723] [transport.py] [_log()] starting thread (client mode): 0x2e3c0a60
2025-09-29T11:37:54.462 [DEBUG] [Thread-154723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:37:54.477 [DEBUG] [Thread-154723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:37:54.477 [INFO] [Thread-154723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:37:54.484 [DEBUG] [Thread-154723] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:37:54.485 [DEBUG] [Thread-154723] [transport.py] [_log()] client lang: <none>
2025-09-29T11:37:54.486 [DEBUG] [Thread-154723] [transport.py] [_log()] server lang: <none>
2025-09-29T11:37:54.486 [DEBUG] [Thread-154723] [transport.py] [_log()] kex follows: False
2025-09-29T11:37:54.486 [DEBUG] [Thread-154723] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:37:54.486 [DEBUG] [Thread-154723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:37:54.486 [DEBUG] [Thread-154723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:37:54.486 [DEBUG] [Thread-154723] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:37:54.486 [DEBUG] [Thread-154723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:37:54.486 [DEBUG] [Thread-154723] [transport.py] [_log()] Compression: none
2025-09-29T11:37:54.487 [DEBUG] [Thread-154723] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:37:54.543 [DEBUG] [Thread-154723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:37:54.544 [DEBUG] [Thread-154723] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:37:54.545 [DEBUG] [Thread-154723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:37:54.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:37:54.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:37:54.599 [DEBUG] [Thread-154723] [transport.py] [_log()] userauth is OK
2025-09-29T11:37:54.599 [DEBUG] [Thread-154723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:37:54.599 [DEBUG] [Thread-154723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:37:54.599 [DEBUG] [Thread-154723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:37:54.599 [DEBUG] [Thread-154723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:37:54.621 [INFO] [Thread-154723] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:37:54.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:37:54.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:37:55.535 [DEBUG] [Thread-154723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:37:55.536 [DEBUG] [Thread-154723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:37:55.583 [DEBUG] [Thread-154723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:37:55.583 [DEBUG] [Thread-154723] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:37:55.592 [DEBUG] [Thread-154723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:37:55.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:37:55.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:37:55.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:37:55.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:37:55.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:37:55.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:37:55.626 [DEBUG] [Thread-154723] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:05.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:38:05.629 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:38:05.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:38:06.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 37, 43), 10.09, 50.02, 0.0, 18.24, 12.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:38:06.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:37:43
2025-09-29T11:38:06.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:38:06.466 [DEBUG] [Thread-154725] [transport.py] [_log()] starting thread (client mode): 0x2b96fd00
2025-09-29T11:38:06.466 [DEBUG] [Thread-154725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:06.486 [DEBUG] [Thread-154725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:38:06.486 [INFO] [Thread-154725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] Compression: none
2025-09-29T11:38:06.490 [DEBUG] [Thread-154725] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:06.505 [DEBUG] [Thread-154725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:06.505 [DEBUG] [Thread-154725] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:06.505 [DEBUG] [Thread-154725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:38:06.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:38:06.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:06.506 [DEBUG] [Thread-154725] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:06.506 [DEBUG] [Thread-154725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:06.506 [DEBUG] [Thread-154725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:06.506 [DEBUG] [Thread-154725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:38:06.506 [DEBUG] [Thread-154725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:06.521 [INFO] [Thread-154725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:06.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:07.150 [DEBUG] [Thread-154725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:07.150 [DEBUG] [Thread-154725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:07.150 [DEBUG] [Thread-154725] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:38:07.190 [DEBUG] [Thread-154725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:07.191 [DEBUG] [Thread-154725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:07.194 [DEBUG] [Thread-154725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:07.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:07.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:38:07.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:38:07.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:38:07.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:07.217 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:38:07.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:07.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:38:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.400766 -999.00  +12.10   3.47     55   +3.30 1 1 1 1 1   888    0 10.08 52.49 ----- 7.1 3.5 141.4 12.7 21.0 -24.8 19.5 -23.8 19.4 -24.2 20.6 -23.9
2025-09-29T11:38:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:38:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:38:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.400766
2025-09-29T11:38:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:38:07.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:38:07.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:38:07.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:38:07.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:38:07.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:37:43', tmtdew=10.09, humidity=50.02, cloud=0.0, wind=18.24, temperature=12.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:37:06.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:38:07.220 [DEBUG] [Thread-154725] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:07.305 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:38:07.316 [DEBUG] [Thread-154728] [transport.py] [_log()] starting thread (client mode): 0x2b96d780
2025-09-29T11:38:07.316 [DEBUG] [Thread-154728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:07.331 [DEBUG] [Thread-154728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:38:07.331 [INFO] [Thread-154728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:38:07.338 [DEBUG] [Thread-154728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:07.339 [DEBUG] [Thread-154728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:38:07.339 [DEBUG] [Thread-154728] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:07.339 [DEBUG] [Thread-154728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:07.339 [DEBUG] [Thread-154728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:07.339 [DEBUG] [Thread-154728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] Compression: none
2025-09-29T11:38:07.340 [DEBUG] [Thread-154728] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:07.398 [DEBUG] [Thread-154728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:07.398 [DEBUG] [Thread-154728] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:07.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:38:07.399 [DEBUG] [Thread-154728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:38:07.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:07.454 [DEBUG] [Thread-154728] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:07.454 [DEBUG] [Thread-154728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:07.454 [DEBUG] [Thread-154728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:07.454 [DEBUG] [Thread-154728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:38:07.455 [DEBUG] [Thread-154728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:07.473 [INFO] [Thread-154728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:07.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:38:07.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:07.516 [DEBUG] [Thread-154730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:38:08.504 [DEBUG] [Thread-154728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:08.504 [DEBUG] [Thread-154728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:08.552 [DEBUG] [Thread-154728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:08.553 [DEBUG] [Thread-154728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:08.561 [DEBUG] [Thread-154728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:08.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:08.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:38:08.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:38:08.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:08.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:08.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:08.596 [DEBUG] [Thread-154728] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:18.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:38:18.599 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:38:18.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:38:19.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 38, 15), 10.21, 49.62, 0.0, 20.89, 12.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:38:19.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:38:15
2025-09-29T11:38:19.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:38:19.433 [DEBUG] [Thread-154731] [transport.py] [_log()] starting thread (client mode): 0x2b96db40
2025-09-29T11:38:19.433 [DEBUG] [Thread-154731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:19.453 [DEBUG] [Thread-154731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:38:19.453 [INFO] [Thread-154731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:38:19.456 [DEBUG] [Thread-154731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] Compression: none
2025-09-29T11:38:19.457 [DEBUG] [Thread-154731] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:19.474 [DEBUG] [Thread-154731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:19.474 [DEBUG] [Thread-154731] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:19.475 [DEBUG] [Thread-154731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:38:19.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:38:19.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:19.477 [DEBUG] [Thread-154731] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:19.477 [DEBUG] [Thread-154731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:19.477 [DEBUG] [Thread-154731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:19.477 [DEBUG] [Thread-154731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:38:19.477 [DEBUG] [Thread-154731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:19.502 [INFO] [Thread-154731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:19.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:20.176 [DEBUG] [Thread-154731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:20.176 [DEBUG] [Thread-154731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:20.177 [DEBUG] [Thread-154731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:38:20.217 [DEBUG] [Thread-154731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:20.217 [DEBUG] [Thread-154731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:20.220 [DEBUG] [Thread-154731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:20.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:20.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:38:20.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:38:20.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:38:20.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:20.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:38:20.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:20.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:20.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:38:20.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.401460 -999.00  +12.60  21.76     54   +3.70 1 1 1 1 1   888    0 10.29 63.28 ----- 20.3 21.8 145.6 23.8 21.0 -25.3 19.8 -24.6 19.4 -25.4 20.6 -26.2
2025-09-29T11:38:20.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:38:20.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:38:20.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.401460
2025-09-29T11:38:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:38:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:38:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:38:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:38:20.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:38:20.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:38:15', tmtdew=10.21, humidity=49.62, cloud=0.0, wind=20.89, temperature=12.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:38:06.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:38:20.245 [DEBUG] [Thread-154731] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:20.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:38:20.339 [DEBUG] [Thread-154734] [transport.py] [_log()] starting thread (client mode): 0x2b96d000
2025-09-29T11:38:20.339 [DEBUG] [Thread-154734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:20.354 [DEBUG] [Thread-154734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:38:20.354 [INFO] [Thread-154734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:38:20.361 [DEBUG] [Thread-154734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:20.361 [DEBUG] [Thread-154734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:38:20.361 [DEBUG] [Thread-154734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:20.361 [DEBUG] [Thread-154734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:20.361 [DEBUG] [Thread-154734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] Compression: none
2025-09-29T11:38:20.362 [DEBUG] [Thread-154734] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:20.421 [DEBUG] [Thread-154734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:20.422 [DEBUG] [Thread-154734] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:20.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:38:20.423 [DEBUG] [Thread-154734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:38:20.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:20.477 [DEBUG] [Thread-154734] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:20.478 [DEBUG] [Thread-154734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:20.478 [DEBUG] [Thread-154734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:20.478 [DEBUG] [Thread-154734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:38:20.478 [DEBUG] [Thread-154734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:20.496 [INFO] [Thread-154734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:20.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:38:20.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:21.404 [DEBUG] [Thread-154734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:21.404 [DEBUG] [Thread-154734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:21.452 [DEBUG] [Thread-154734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:21.452 [DEBUG] [Thread-154734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:21.461 [DEBUG] [Thread-154734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:21.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:21.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:38:21.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:38:21.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:21.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:21.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:21.495 [DEBUG] [Thread-154734] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:22.562 [DEBUG] [Thread-154736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:38:31.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:38:31.497 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:38:31.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:38:32.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 38, 15), 10.21, 49.62, 0.0, 20.89, 12.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:38:32.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:38:15
2025-09-29T11:38:32.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:38:32.331 [DEBUG] [Thread-154737] [transport.py] [_log()] starting thread (client mode): 0x28704100
2025-09-29T11:38:32.331 [DEBUG] [Thread-154737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:32.351 [DEBUG] [Thread-154737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:38:32.351 [INFO] [Thread-154737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:38:32.355 [DEBUG] [Thread-154737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:32.355 [DEBUG] [Thread-154737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:38:32.355 [DEBUG] [Thread-154737] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:32.355 [DEBUG] [Thread-154737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] Compression: none
2025-09-29T11:38:32.356 [DEBUG] [Thread-154737] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:32.374 [DEBUG] [Thread-154737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:32.375 [DEBUG] [Thread-154737] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:32.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:38:32.376 [DEBUG] [Thread-154737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:38:32.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:32.378 [DEBUG] [Thread-154737] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:32.378 [DEBUG] [Thread-154737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:32.379 [DEBUG] [Thread-154737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:32.379 [DEBUG] [Thread-154737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:38:32.379 [DEBUG] [Thread-154737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:32.397 [INFO] [Thread-154737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:32.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:33.053 [DEBUG] [Thread-154737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:33.054 [DEBUG] [Thread-154737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:33.054 [DEBUG] [Thread-154737] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:38:33.094 [DEBUG] [Thread-154737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:33.094 [DEBUG] [Thread-154737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:33.097 [DEBUG] [Thread-154737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:33.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:33.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:38:33.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:38:33.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:38:33.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:33.120 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:38:33.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:33.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:33.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:38:33.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.401460 -999.00  +12.60  21.76     54   +3.70 1 1 1 1 1   888    0 10.29 63.28 ----- 20.3 21.8 145.6 23.8 21.0 -25.3 19.8 -24.6 19.4 -25.4 20.6 -26.2
2025-09-29T11:38:33.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:38:33.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:38:33.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.401460
2025-09-29T11:38:33.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:38:33.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:38:33.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:38:33.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:38:33.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:38:33.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:38:15', tmtdew=10.21, humidity=49.62, cloud=0.0, wind=20.89, temperature=12.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:38:06.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:38:33.122 [DEBUG] [Thread-154737] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:33.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:38:33.209 [DEBUG] [Thread-154740] [transport.py] [_log()] starting thread (client mode): 0x2e34b6d0
2025-09-29T11:38:33.209 [DEBUG] [Thread-154740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:33.224 [DEBUG] [Thread-154740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:38:33.224 [INFO] [Thread-154740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:38:33.231 [DEBUG] [Thread-154740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:33.231 [DEBUG] [Thread-154740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] Compression: none
2025-09-29T11:38:33.232 [DEBUG] [Thread-154740] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:33.289 [DEBUG] [Thread-154740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:33.289 [DEBUG] [Thread-154740] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:33.289 [DEBUG] [Thread-154740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:38:33.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:38:33.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:33.349 [DEBUG] [Thread-154740] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:33.349 [DEBUG] [Thread-154740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:33.349 [DEBUG] [Thread-154740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:33.349 [DEBUG] [Thread-154740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:38:33.350 [DEBUG] [Thread-154740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:33.368 [INFO] [Thread-154740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:33.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:38:33.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:34.319 [DEBUG] [Thread-154740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:34.319 [DEBUG] [Thread-154740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:34.367 [DEBUG] [Thread-154740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:34.367 [DEBUG] [Thread-154740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:34.376 [DEBUG] [Thread-154740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:34.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:34.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:38:34.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:38:34.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:34.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:34.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:34.410 [DEBUG] [Thread-154740] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:36.531 [DEBUG] [Thread-154742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:38:37.607 [DEBUG] [Thread-154743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:38:40.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:38:40.186 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:38:44.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:38:44.413 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:38:44.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:38:44.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 38, 15), 10.21, 49.62, 0.0, 20.89, 12.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:38:44.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:38:15
2025-09-29T11:38:45.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:38:45.254 [DEBUG] [Thread-154744] [transport.py] [_log()] starting thread (client mode): 0x2b96ddb0
2025-09-29T11:38:45.254 [DEBUG] [Thread-154744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:45.274 [DEBUG] [Thread-154744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:38:45.274 [INFO] [Thread-154744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] Compression: none
2025-09-29T11:38:45.276 [DEBUG] [Thread-154744] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:45.290 [DEBUG] [Thread-154744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:45.291 [DEBUG] [Thread-154744] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:45.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:38:45.292 [DEBUG] [Thread-154744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:38:45.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:45.293 [DEBUG] [Thread-154744] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:45.294 [DEBUG] [Thread-154744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:45.294 [DEBUG] [Thread-154744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:45.294 [DEBUG] [Thread-154744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:38:45.294 [DEBUG] [Thread-154744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:45.312 [INFO] [Thread-154744] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:45.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:45.916 [DEBUG] [Thread-154744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:45.916 [DEBUG] [Thread-154744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:45.916 [DEBUG] [Thread-154744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:38:45.957 [DEBUG] [Thread-154744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:45.957 [DEBUG] [Thread-154744] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:45.961 [DEBUG] [Thread-154744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:45.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:45.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:38:45.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:38:45.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:38:45.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:45.983 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:38:45.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:45.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:45.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:38:45.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.401808 -999.00  +12.50  23.90     53   +3.30 1 1 1 1 1   888    0 10.33 58.82 ----- 26.8 23.9 138.0 31.4 20.9 -26.4 19.8 -25.2 19.1 -28.9 20.3 -30.5
2025-09-29T11:38:45.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:38:45.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:38:45.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.401808
2025-09-29T11:38:45.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:38:45.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:38:45.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:38:45.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:38:45.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:38:45.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:38:15', tmtdew=10.21, humidity=49.62, cloud=0.0, wind=20.89, temperature=12.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:38:36.211', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:38:45.987 [DEBUG] [Thread-154744] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:46.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:38:46.082 [DEBUG] [Thread-154747] [transport.py] [_log()] starting thread (client mode): 0x2b96d000
2025-09-29T11:38:46.082 [DEBUG] [Thread-154747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:46.097 [DEBUG] [Thread-154747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:38:46.097 [INFO] [Thread-154747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:38:46.104 [DEBUG] [Thread-154747] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:46.104 [DEBUG] [Thread-154747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:38:46.104 [DEBUG] [Thread-154747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:46.104 [DEBUG] [Thread-154747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:46.104 [DEBUG] [Thread-154747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:46.104 [DEBUG] [Thread-154747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] Compression: none
2025-09-29T11:38:46.105 [DEBUG] [Thread-154747] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:46.164 [DEBUG] [Thread-154747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:46.165 [DEBUG] [Thread-154747] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:46.165 [DEBUG] [Thread-154747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:38:46.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:38:46.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:46.221 [DEBUG] [Thread-154747] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:46.221 [DEBUG] [Thread-154747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:46.221 [DEBUG] [Thread-154747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:46.221 [DEBUG] [Thread-154747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:38:46.221 [DEBUG] [Thread-154747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:46.240 [INFO] [Thread-154747] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:46.241 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:38:46.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:47.213 [DEBUG] [Thread-154747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:47.213 [DEBUG] [Thread-154747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:47.261 [DEBUG] [Thread-154747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:47.261 [DEBUG] [Thread-154747] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:47.270 [DEBUG] [Thread-154747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:47.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:47.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:38:47.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:38:47.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:47.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:47.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:47.301 [DEBUG] [Thread-154747] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:52.637 [DEBUG] [Thread-154749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:38:57.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:38:57.302 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:38:57.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:38:57.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 38, 47), 10.61, 48.29, 0.0, 23.91, 12.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:38:57.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:38:47
2025-09-29T11:38:57.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:38:58.126 [DEBUG] [Thread-154750] [transport.py] [_log()] starting thread (client mode): 0x28707310
2025-09-29T11:38:58.126 [DEBUG] [Thread-154750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:58.139 [DEBUG] [Thread-154750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:38:58.139 [INFO] [Thread-154750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:58.142 [DEBUG] [Thread-154750] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:58.143 [DEBUG] [Thread-154750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:58.143 [DEBUG] [Thread-154750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:58.143 [DEBUG] [Thread-154750] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:58.143 [DEBUG] [Thread-154750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:58.143 [DEBUG] [Thread-154750] [transport.py] [_log()] Compression: none
2025-09-29T11:38:58.143 [DEBUG] [Thread-154750] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:58.157 [DEBUG] [Thread-154750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:58.157 [DEBUG] [Thread-154750] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:58.157 [DEBUG] [Thread-154750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:38:58.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:38:58.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:58.158 [DEBUG] [Thread-154750] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:58.158 [DEBUG] [Thread-154750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:58.158 [DEBUG] [Thread-154750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:58.158 [DEBUG] [Thread-154750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:38:58.158 [DEBUG] [Thread-154750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:58.176 [INFO] [Thread-154750] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:58.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:38:58.807 [DEBUG] [Thread-154750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:38:58.807 [DEBUG] [Thread-154750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:38:58.808 [DEBUG] [Thread-154750] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:38:58.849 [DEBUG] [Thread-154750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:38:58.849 [DEBUG] [Thread-154750] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:38:58.853 [DEBUG] [Thread-154750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:38:58.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:38:58.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:38:58.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:38:58.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:38:58.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:38:58.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:38:58.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:38:58.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:38:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:38:58.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.401808 -999.00  +12.50  23.90     53   +3.30 1 1 1 1 1   888    0 10.33 58.82 ----- 26.8 23.9 138.0 31.4 20.9 -26.4 19.8 -25.2 19.1 -28.9 20.3 -30.5
2025-09-29T11:38:58.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:38:58.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:38:58.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.401808
2025-09-29T11:38:58.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:38:58.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:38:58.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:38:58.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:38:58.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:38:58.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:38:47', tmtdew=10.61, humidity=48.29, cloud=0.0, wind=23.91, temperature=12.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:38:36.211', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:38:58.879 [DEBUG] [Thread-154750] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:38:58.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:38:58.973 [DEBUG] [Thread-154753] [transport.py] [_log()] starting thread (client mode): 0x28704580
2025-09-29T11:38:58.973 [DEBUG] [Thread-154753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:38:58.988 [DEBUG] [Thread-154753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:38:58.988 [INFO] [Thread-154753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:38:58.995 [DEBUG] [Thread-154753] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:38:58.995 [DEBUG] [Thread-154753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] client lang: <none>
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] server lang: <none>
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] kex follows: False
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] Compression: none
2025-09-29T11:38:58.996 [DEBUG] [Thread-154753] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:38:59.052 [DEBUG] [Thread-154753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:38:59.052 [DEBUG] [Thread-154753] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:38:59.053 [DEBUG] [Thread-154753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:38:59.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:38:59.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:38:59.108 [DEBUG] [Thread-154753] [transport.py] [_log()] userauth is OK
2025-09-29T11:38:59.108 [DEBUG] [Thread-154753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:38:59.108 [DEBUG] [Thread-154753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:38:59.109 [DEBUG] [Thread-154753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:38:59.109 [DEBUG] [Thread-154753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:38:59.127 [INFO] [Thread-154753] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:38:59.128 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:38:59.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:00.070 [DEBUG] [Thread-154753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:00.070 [DEBUG] [Thread-154753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:00.119 [DEBUG] [Thread-154753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:00.119 [DEBUG] [Thread-154753] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:00.127 [DEBUG] [Thread-154753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:00.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:00.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:39:00.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:39:00.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:00.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:00.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:00.160 [DEBUG] [Thread-154753] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:07.687 [DEBUG] [Thread-154755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:39:10.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:39:10.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:39:10.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:39:10.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 38, 47), 10.61, 48.29, 0.0, 23.91, 12.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:39:10.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:38:47
2025-09-29T11:39:10.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:39:11.000 [DEBUG] [Thread-154756] [transport.py] [_log()] starting thread (client mode): 0x2b96fd00
2025-09-29T11:39:11.000 [DEBUG] [Thread-154756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:39:11.023 [DEBUG] [Thread-154756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:39:11.023 [INFO] [Thread-154756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] client lang: <none>
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] server lang: <none>
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] kex follows: False
2025-09-29T11:39:11.026 [DEBUG] [Thread-154756] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:39:11.027 [DEBUG] [Thread-154756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:39:11.027 [DEBUG] [Thread-154756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:39:11.027 [DEBUG] [Thread-154756] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:39:11.027 [DEBUG] [Thread-154756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:39:11.027 [DEBUG] [Thread-154756] [transport.py] [_log()] Compression: none
2025-09-29T11:39:11.027 [DEBUG] [Thread-154756] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:39:11.042 [DEBUG] [Thread-154756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:39:11.042 [DEBUG] [Thread-154756] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:39:11.043 [DEBUG] [Thread-154756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:39:11.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:39:11.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:39:11.045 [DEBUG] [Thread-154756] [transport.py] [_log()] userauth is OK
2025-09-29T11:39:11.045 [DEBUG] [Thread-154756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:39:11.045 [DEBUG] [Thread-154756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:39:11.045 [DEBUG] [Thread-154756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:39:11.045 [DEBUG] [Thread-154756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:39:11.063 [INFO] [Thread-154756] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:39:11.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:11.747 [DEBUG] [Thread-154756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:11.747 [DEBUG] [Thread-154756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:11.748 [DEBUG] [Thread-154756] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:39:11.788 [DEBUG] [Thread-154756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:11.788 [DEBUG] [Thread-154756] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:11.791 [DEBUG] [Thread-154756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:11.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:11.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:39:11.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:39:11.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:39:11.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:11.811 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:39:11.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:11.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:11.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:39:11.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.401808 -999.00  +12.50  23.90     53   +3.30 1 1 1 1 1   888    0 10.33 58.82 ----- 26.8 23.9 138.0 31.4 20.9 -26.4 19.8 -25.2 19.1 -28.9 20.3 -30.5
2025-09-29T11:39:11.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:39:11.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:39:11.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.401808
2025-09-29T11:39:11.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:39:11.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:39:11.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:39:11.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:39:11.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:39:11.813 [DEBUG] [Thread-154756] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:11.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:38:47', tmtdew=10.61, humidity=48.29, cloud=0.0, wind=23.91, temperature=12.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:38:36.211', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:39:11.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:39:11.910 [DEBUG] [Thread-154759] [transport.py] [_log()] starting thread (client mode): 0x2e348730
2025-09-29T11:39:11.910 [DEBUG] [Thread-154759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:39:11.925 [DEBUG] [Thread-154759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:39:11.925 [INFO] [Thread-154759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:39:11.932 [DEBUG] [Thread-154759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:39:11.933 [DEBUG] [Thread-154759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:39:11.933 [DEBUG] [Thread-154759] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:39:11.933 [DEBUG] [Thread-154759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:11.933 [DEBUG] [Thread-154759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:11.933 [DEBUG] [Thread-154759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:11.933 [DEBUG] [Thread-154759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:11.933 [DEBUG] [Thread-154759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:39:11.933 [DEBUG] [Thread-154759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] client lang: <none>
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] server lang: <none>
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] kex follows: False
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:39:11.934 [DEBUG] [Thread-154759] [transport.py] [_log()] Compression: none
2025-09-29T11:39:11.935 [DEBUG] [Thread-154759] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:39:11.992 [DEBUG] [Thread-154759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:39:11.993 [DEBUG] [Thread-154759] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:39:11.994 [DEBUG] [Thread-154759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:39:11.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:39:11.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:39:12.048 [DEBUG] [Thread-154759] [transport.py] [_log()] userauth is OK
2025-09-29T11:39:12.048 [DEBUG] [Thread-154759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:39:12.048 [DEBUG] [Thread-154759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:39:12.049 [DEBUG] [Thread-154759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:39:12.049 [DEBUG] [Thread-154759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:39:12.068 [INFO] [Thread-154759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:39:12.068 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:39:12.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:13.002 [DEBUG] [Thread-154759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:13.003 [DEBUG] [Thread-154759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:13.050 [DEBUG] [Thread-154759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:13.050 [DEBUG] [Thread-154759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:13.059 [DEBUG] [Thread-154759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:13.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:13.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:39:13.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:39:13.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:13.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:13.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:13.094 [DEBUG] [Thread-154759] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:22.726 [DEBUG] [Thread-154761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:39:23.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:39:23.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:39:23.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:39:23.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 39, 19), 10.63, 48.27, 0.0, 25.28, 12.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:39:23.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:39:19
2025-09-29T11:39:23.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:39:23.930 [DEBUG] [Thread-154762] [transport.py] [_log()] starting thread (client mode): 0x2e34a2c0
2025-09-29T11:39:23.930 [DEBUG] [Thread-154762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:39:23.948 [DEBUG] [Thread-154762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:39:23.948 [INFO] [Thread-154762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] client lang: <none>
2025-09-29T11:39:23.952 [DEBUG] [Thread-154762] [transport.py] [_log()] server lang: <none>
2025-09-29T11:39:23.953 [DEBUG] [Thread-154762] [transport.py] [_log()] kex follows: False
2025-09-29T11:39:23.953 [DEBUG] [Thread-154762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:39:23.953 [DEBUG] [Thread-154762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:39:23.953 [DEBUG] [Thread-154762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:39:23.953 [DEBUG] [Thread-154762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:39:23.953 [DEBUG] [Thread-154762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:39:23.953 [DEBUG] [Thread-154762] [transport.py] [_log()] Compression: none
2025-09-29T11:39:23.953 [DEBUG] [Thread-154762] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:39:23.970 [DEBUG] [Thread-154762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:39:23.970 [DEBUG] [Thread-154762] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:39:23.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:39:23.971 [DEBUG] [Thread-154762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:39:23.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:39:23.973 [DEBUG] [Thread-154762] [transport.py] [_log()] userauth is OK
2025-09-29T11:39:23.974 [DEBUG] [Thread-154762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:39:23.974 [DEBUG] [Thread-154762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:39:23.974 [DEBUG] [Thread-154762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:39:23.974 [DEBUG] [Thread-154762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:39:23.998 [INFO] [Thread-154762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:39:23.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:24.642 [DEBUG] [Thread-154762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:24.642 [DEBUG] [Thread-154762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:24.643 [DEBUG] [Thread-154762] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:39:24.683 [DEBUG] [Thread-154762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:24.683 [DEBUG] [Thread-154762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:24.687 [DEBUG] [Thread-154762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:24.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:24.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:39:24.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:39:24.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:39:24.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:24.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:39:24.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:24.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:24.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:39:24.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.402155 -999.00  +12.30  23.39     54   +3.40 1 1 1 1 1   888    0 10.71 61.47 ----- 19.5 23.4 143.8 30.4 20.5 -27.7 19.5 -26.4 19.1 -26.7 20.1 -27.9
2025-09-29T11:39:24.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:39:24.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:39:24.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.402155
2025-09-29T11:39:24.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:39:24.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:39:24.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:39:24.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:39:24.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:39:24.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:39:19', tmtdew=10.63, humidity=48.27, cloud=0.0, wind=25.28, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:39:06.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:39:24.715 [DEBUG] [Thread-154762] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:24.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:39:24.809 [DEBUG] [Thread-154765] [transport.py] [_log()] starting thread (client mode): 0x2b96df00
2025-09-29T11:39:24.809 [DEBUG] [Thread-154765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:39:24.824 [DEBUG] [Thread-154765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:39:24.824 [INFO] [Thread-154765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:39:24.831 [DEBUG] [Thread-154765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:39:24.831 [DEBUG] [Thread-154765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:39:24.831 [DEBUG] [Thread-154765] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] client lang: <none>
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] server lang: <none>
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] kex follows: False
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] Compression: none
2025-09-29T11:39:24.832 [DEBUG] [Thread-154765] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:39:24.891 [DEBUG] [Thread-154765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:39:24.891 [DEBUG] [Thread-154765] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:39:24.892 [DEBUG] [Thread-154765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:39:24.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:39:24.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:39:24.951 [DEBUG] [Thread-154765] [transport.py] [_log()] userauth is OK
2025-09-29T11:39:24.952 [DEBUG] [Thread-154765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:39:24.952 [DEBUG] [Thread-154765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:39:24.952 [DEBUG] [Thread-154765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:39:24.952 [DEBUG] [Thread-154765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:39:24.973 [INFO] [Thread-154765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:39:24.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:39:24.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:25.894 [DEBUG] [Thread-154765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:25.894 [DEBUG] [Thread-154765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:25.942 [DEBUG] [Thread-154765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:25.942 [DEBUG] [Thread-154765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:25.950 [DEBUG] [Thread-154765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:25.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:25.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:39:25.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:39:25.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:25.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:25.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:25.982 [DEBUG] [Thread-154765] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:35.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:39:35.985 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:39:35.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:39:36.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 39, 19), 10.63, 48.27, 0.0, 25.28, 12.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:39:36.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:39:19
2025-09-29T11:39:36.577 [DEBUG] [Thread-154767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:39:36.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:39:36.815 [DEBUG] [Thread-154768] [transport.py] [_log()] starting thread (client mode): 0x2e348160
2025-09-29T11:39:36.816 [DEBUG] [Thread-154768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:39:36.834 [DEBUG] [Thread-154768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:39:36.834 [INFO] [Thread-154768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:39:36.839 [DEBUG] [Thread-154768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:39:36.839 [DEBUG] [Thread-154768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:39:36.839 [DEBUG] [Thread-154768] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] client lang: <none>
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] server lang: <none>
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] kex follows: False
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] Compression: none
2025-09-29T11:39:36.840 [DEBUG] [Thread-154768] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:39:36.857 [DEBUG] [Thread-154768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:39:36.858 [DEBUG] [Thread-154768] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:39:36.858 [DEBUG] [Thread-154768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:39:36.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:39:36.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:39:36.860 [DEBUG] [Thread-154768] [transport.py] [_log()] userauth is OK
2025-09-29T11:39:36.860 [DEBUG] [Thread-154768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:39:36.861 [DEBUG] [Thread-154768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:39:36.861 [DEBUG] [Thread-154768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:39:36.861 [DEBUG] [Thread-154768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:39:36.885 [INFO] [Thread-154768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:39:36.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:37.581 [DEBUG] [Thread-154768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:37.581 [DEBUG] [Thread-154768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:37.581 [DEBUG] [Thread-154768] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:39:37.622 [DEBUG] [Thread-154768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:37.622 [DEBUG] [Thread-154768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:37.625 [DEBUG] [Thread-154768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:37.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:37.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:39:37.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:39:37.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:39:37.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:37.648 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:39:37.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:37.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:39:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.402155 -999.00  +12.30  23.39     54   +3.40 1 1 1 1 1   888    0 10.71 61.47 ----- 19.5 23.4 143.8 30.4 20.5 -27.7 19.5 -26.4 19.1 -26.7 20.1 -27.9
2025-09-29T11:39:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:39:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:39:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.402155
2025-09-29T11:39:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:39:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:39:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:39:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:39:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:39:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:39:19', tmtdew=10.63, humidity=48.27, cloud=0.0, wind=25.28, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:39:06.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:39:37.651 [DEBUG] [Thread-154768] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:37.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:39:37.749 [DEBUG] [Thread-154771] [transport.py] [_log()] starting thread (client mode): 0x2b9c0f70
2025-09-29T11:39:37.749 [DEBUG] [Thread-154771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:39:37.751 [DEBUG] [Thread-154772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:39:37.764 [DEBUG] [Thread-154771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:39:37.764 [INFO] [Thread-154771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] client lang: <none>
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] server lang: <none>
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] kex follows: False
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] Compression: none
2025-09-29T11:39:37.771 [DEBUG] [Thread-154771] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:39:37.829 [DEBUG] [Thread-154771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:39:37.829 [DEBUG] [Thread-154771] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:39:37.829 [DEBUG] [Thread-154771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:39:37.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:39:37.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:39:37.887 [DEBUG] [Thread-154771] [transport.py] [_log()] userauth is OK
2025-09-29T11:39:37.887 [DEBUG] [Thread-154771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:39:37.887 [DEBUG] [Thread-154771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:39:37.888 [DEBUG] [Thread-154771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:39:37.888 [DEBUG] [Thread-154771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:39:37.906 [INFO] [Thread-154771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:39:37.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:39:37.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:38.814 [DEBUG] [Thread-154771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:38.820 [DEBUG] [Thread-154771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:38.862 [DEBUG] [Thread-154771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:38.862 [DEBUG] [Thread-154771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:38.871 [DEBUG] [Thread-154771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:38.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:38.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:39:38.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:39:38.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:38.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:38.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:38.905 [DEBUG] [Thread-154771] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:40.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:39:40.329 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:39:48.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:39:48.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:39:48.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:39:49.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 39, 19), 10.63, 48.27, 0.0, 25.28, 12.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:39:49.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:39:19
2025-09-29T11:39:49.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:39:49.725 [DEBUG] [Thread-154774] [transport.py] [_log()] starting thread (client mode): 0x2b96df00
2025-09-29T11:39:49.725 [DEBUG] [Thread-154774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:39:49.745 [DEBUG] [Thread-154774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:39:49.745 [INFO] [Thread-154774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] client lang: <none>
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] server lang: <none>
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] kex follows: False
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] Compression: none
2025-09-29T11:39:49.749 [DEBUG] [Thread-154774] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:39:49.765 [DEBUG] [Thread-154774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:39:49.766 [DEBUG] [Thread-154774] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:39:49.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:39:49.767 [DEBUG] [Thread-154774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:39:49.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:39:49.768 [DEBUG] [Thread-154774] [transport.py] [_log()] userauth is OK
2025-09-29T11:39:49.768 [DEBUG] [Thread-154774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:39:49.768 [DEBUG] [Thread-154774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:39:49.769 [DEBUG] [Thread-154774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:39:49.769 [DEBUG] [Thread-154774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:39:49.792 [INFO] [Thread-154774] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:39:49.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:50.408 [DEBUG] [Thread-154774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:50.408 [DEBUG] [Thread-154774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:50.408 [DEBUG] [Thread-154774] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:39:50.449 [DEBUG] [Thread-154774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:50.449 [DEBUG] [Thread-154774] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:50.451 [DEBUG] [Thread-154774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:50.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:50.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:39:50.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:39:50.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:39:50.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:50.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:39:50.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:50.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:39:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.402155 -999.00  +12.30  23.39     54   +3.40 1 1 1 1 1   888    0 10.71 61.47 ----- 19.5 23.4 143.8 30.4 20.5 -27.7 19.5 -26.4 19.1 -26.7 20.1 -27.9
2025-09-29T11:39:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:39:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:39:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.402155
2025-09-29T11:39:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:39:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:39:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:39:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:39:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:39:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:39:19', tmtdew=10.63, humidity=48.27, cloud=0.0, wind=25.28, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:39:06.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:39:50.478 [DEBUG] [Thread-154774] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:50.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:39:50.567 [DEBUG] [Thread-154777] [transport.py] [_log()] starting thread (client mode): 0x2e34a080
2025-09-29T11:39:50.567 [DEBUG] [Thread-154777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:39:50.583 [DEBUG] [Thread-154777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:39:50.583 [INFO] [Thread-154777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:39:50.590 [DEBUG] [Thread-154777] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:39:50.591 [DEBUG] [Thread-154777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:39:50.591 [DEBUG] [Thread-154777] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:39:50.591 [DEBUG] [Thread-154777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:50.591 [DEBUG] [Thread-154777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:39:50.591 [DEBUG] [Thread-154777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:50.591 [DEBUG] [Thread-154777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:39:50.591 [DEBUG] [Thread-154777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] client lang: <none>
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] server lang: <none>
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] kex follows: False
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] Compression: none
2025-09-29T11:39:50.592 [DEBUG] [Thread-154777] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:39:50.649 [DEBUG] [Thread-154777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:39:50.650 [DEBUG] [Thread-154777] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:39:50.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:39:50.651 [DEBUG] [Thread-154777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:39:50.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:39:50.707 [DEBUG] [Thread-154777] [transport.py] [_log()] userauth is OK
2025-09-29T11:39:50.707 [DEBUG] [Thread-154777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:39:50.707 [DEBUG] [Thread-154777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:39:50.707 [DEBUG] [Thread-154777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:39:50.707 [DEBUG] [Thread-154777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:39:50.727 [INFO] [Thread-154777] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:39:50.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:39:50.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:39:51.654 [DEBUG] [Thread-154777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:39:51.654 [DEBUG] [Thread-154777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:39:51.702 [DEBUG] [Thread-154777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:39:51.702 [DEBUG] [Thread-154777] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:39:51.710 [DEBUG] [Thread-154777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:39:51.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:39:51.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:39:51.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:39:51.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:39:51.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:39:51.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:39:51.742 [DEBUG] [Thread-154777] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:39:52.786 [DEBUG] [Thread-154779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:40:01.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:40:01.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:40:01.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:40:02.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 39, 51), 10.61, 47.97, 0.0, 26.2, 12.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:40:02.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:39:51
2025-09-29T11:40:02.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:40:02.618 [DEBUG] [Thread-154780] [transport.py] [_log()] starting thread (client mode): 0x2b9c1d50
2025-09-29T11:40:02.618 [DEBUG] [Thread-154780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:02.638 [DEBUG] [Thread-154780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:40:02.639 [INFO] [Thread-154780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:40:02.642 [DEBUG] [Thread-154780] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:02.642 [DEBUG] [Thread-154780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:02.643 [DEBUG] [Thread-154780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:02.644 [DEBUG] [Thread-154780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:02.644 [DEBUG] [Thread-154780] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:02.644 [DEBUG] [Thread-154780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:02.644 [DEBUG] [Thread-154780] [transport.py] [_log()] Compression: none
2025-09-29T11:40:02.644 [DEBUG] [Thread-154780] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:02.662 [DEBUG] [Thread-154780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:02.662 [DEBUG] [Thread-154780] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:02.663 [DEBUG] [Thread-154780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:40:02.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:40:02.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:02.664 [DEBUG] [Thread-154780] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:02.665 [DEBUG] [Thread-154780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:02.665 [DEBUG] [Thread-154780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:02.665 [DEBUG] [Thread-154780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:40:02.665 [DEBUG] [Thread-154780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:02.687 [INFO] [Thread-154780] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:02.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:05.050 [DEBUG] [Thread-154780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:05.050 [DEBUG] [Thread-154780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:05.050 [DEBUG] [Thread-154780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:40:05.091 [DEBUG] [Thread-154780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:05.091 [DEBUG] [Thread-154780] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:05.093 [DEBUG] [Thread-154780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:05.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:05.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:40:05.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:40:05.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:40:05.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:05.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:40:05.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.402502 -999.00  +12.20  25.46     54   +3.40 1 1 1 1 1   888    0 9.82 50.64 ----- 18.4 25.5 135.6 27.5 20.5 -26.3 19.5 -24.4 19.1 -25.2 20.1 -26.7
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.402502
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:40:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:39:51', tmtdew=10.61, humidity=47.97, cloud=0.0, wind=26.2, temperature=12.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:39:36.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:40:05.115 [DEBUG] [Thread-154780] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:05.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:40:05.200 [DEBUG] [Thread-154783] [transport.py] [_log()] starting thread (client mode): 0x287040d0
2025-09-29T11:40:05.200 [DEBUG] [Thread-154783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:05.215 [DEBUG] [Thread-154783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:40:05.215 [INFO] [Thread-154783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] Compression: none
2025-09-29T11:40:05.222 [DEBUG] [Thread-154783] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:05.285 [DEBUG] [Thread-154783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:05.285 [DEBUG] [Thread-154783] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:05.285 [DEBUG] [Thread-154783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:40:05.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:40:05.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:05.341 [DEBUG] [Thread-154783] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:05.341 [DEBUG] [Thread-154783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:05.341 [DEBUG] [Thread-154783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:05.341 [DEBUG] [Thread-154783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:40:05.341 [DEBUG] [Thread-154783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:05.357 [INFO] [Thread-154783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:05.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:40:05.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:06.318 [DEBUG] [Thread-154783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:06.318 [DEBUG] [Thread-154783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:06.366 [DEBUG] [Thread-154783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:06.366 [DEBUG] [Thread-154783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:06.374 [DEBUG] [Thread-154783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:06.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:06.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:40:06.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:40:06.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:06.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:06.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:06.405 [DEBUG] [Thread-154783] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:07.812 [DEBUG] [Thread-154785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:40:16.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:40:16.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:40:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:40:16.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 39, 51), 10.61, 47.97, 0.0, 26.2, 12.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:40:16.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:39:51
2025-09-29T11:40:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:40:17.228 [DEBUG] [Thread-154786] [transport.py] [_log()] starting thread (client mode): 0x2b91e800
2025-09-29T11:40:17.228 [DEBUG] [Thread-154786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:17.248 [DEBUG] [Thread-154786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:40:17.248 [INFO] [Thread-154786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:17.252 [DEBUG] [Thread-154786] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:17.253 [DEBUG] [Thread-154786] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:17.253 [DEBUG] [Thread-154786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:17.253 [DEBUG] [Thread-154786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:17.253 [DEBUG] [Thread-154786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:17.253 [DEBUG] [Thread-154786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:17.253 [DEBUG] [Thread-154786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:17.253 [DEBUG] [Thread-154786] [transport.py] [_log()] Compression: none
2025-09-29T11:40:17.253 [DEBUG] [Thread-154786] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:17.275 [DEBUG] [Thread-154786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:17.276 [DEBUG] [Thread-154786] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:17.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:40:17.277 [DEBUG] [Thread-154786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:40:17.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:17.279 [DEBUG] [Thread-154786] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:17.279 [DEBUG] [Thread-154786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:17.279 [DEBUG] [Thread-154786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:17.280 [DEBUG] [Thread-154786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:40:17.280 [DEBUG] [Thread-154786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:17.303 [INFO] [Thread-154786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:17.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:17.964 [DEBUG] [Thread-154786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:17.965 [DEBUG] [Thread-154786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:17.965 [DEBUG] [Thread-154786] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:40:18.005 [DEBUG] [Thread-154786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:18.006 [DEBUG] [Thread-154786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:18.009 [DEBUG] [Thread-154786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:18.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:18.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:40:18.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:40:18.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:40:18.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:18.033 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:40:18.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:18.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:40:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.402502 -999.00  +12.20  25.46     54   +3.40 1 1 1 1 1   888    0 9.82 50.64 ----- 18.4 25.5 135.6 27.5 20.5 -26.3 19.5 -24.4 19.1 -25.2 20.1 -26.7
2025-09-29T11:40:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:40:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:40:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.402502
2025-09-29T11:40:18.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:40:18.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:40:18.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:40:18.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:40:18.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:40:18.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:39:51', tmtdew=10.61, humidity=47.97, cloud=0.0, wind=26.2, temperature=12.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:39:36.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:40:18.036 [DEBUG] [Thread-154786] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:18.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:40:18.130 [DEBUG] [Thread-154789] [transport.py] [_log()] starting thread (client mode): 0x2b9c23b0
2025-09-29T11:40:18.130 [DEBUG] [Thread-154789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:18.148 [DEBUG] [Thread-154789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:40:18.148 [INFO] [Thread-154789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:18.156 [DEBUG] [Thread-154789] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] Compression: none
2025-09-29T11:40:18.157 [DEBUG] [Thread-154789] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:18.218 [DEBUG] [Thread-154789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:18.219 [DEBUG] [Thread-154789] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:18.219 [DEBUG] [Thread-154789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:40:18.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:40:18.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:18.273 [DEBUG] [Thread-154789] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:18.274 [DEBUG] [Thread-154789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:18.274 [DEBUG] [Thread-154789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:18.274 [DEBUG] [Thread-154789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:40:18.274 [DEBUG] [Thread-154789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:18.292 [INFO] [Thread-154789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:18.293 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:40:18.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:19.339 [DEBUG] [Thread-154789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:19.339 [DEBUG] [Thread-154789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:19.387 [DEBUG] [Thread-154789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:19.387 [DEBUG] [Thread-154789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:19.396 [DEBUG] [Thread-154789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:19.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:19.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:40:19.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:40:19.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:19.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:19.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:19.430 [DEBUG] [Thread-154789] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:22.848 [DEBUG] [Thread-154791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:40:29.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:40:29.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:40:29.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:40:30.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 40, 22), 10.58, 48.05, 0.0, 22.48, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:40:30.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:40:22
2025-09-29T11:40:30.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:40:30.262 [DEBUG] [Thread-154792] [transport.py] [_log()] starting thread (client mode): 0x28706770
2025-09-29T11:40:30.262 [DEBUG] [Thread-154792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:30.280 [DEBUG] [Thread-154792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:40:30.280 [INFO] [Thread-154792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:40:30.283 [DEBUG] [Thread-154792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:30.283 [DEBUG] [Thread-154792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:30.284 [DEBUG] [Thread-154792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:30.285 [DEBUG] [Thread-154792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:30.285 [DEBUG] [Thread-154792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:30.285 [DEBUG] [Thread-154792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:30.285 [DEBUG] [Thread-154792] [transport.py] [_log()] Compression: none
2025-09-29T11:40:30.285 [DEBUG] [Thread-154792] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:30.302 [DEBUG] [Thread-154792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:30.302 [DEBUG] [Thread-154792] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:30.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:40:30.303 [DEBUG] [Thread-154792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:40:30.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:30.305 [DEBUG] [Thread-154792] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:30.305 [DEBUG] [Thread-154792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:30.305 [DEBUG] [Thread-154792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:30.306 [DEBUG] [Thread-154792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:40:30.306 [DEBUG] [Thread-154792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:30.329 [INFO] [Thread-154792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:30.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:30.982 [DEBUG] [Thread-154792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:30.982 [DEBUG] [Thread-154792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:30.982 [DEBUG] [Thread-154792] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:40:31.023 [DEBUG] [Thread-154792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:31.023 [DEBUG] [Thread-154792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:31.027 [DEBUG] [Thread-154792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:31.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:31.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:40:31.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:40:31.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:40:31.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:31.049 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:40:31.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:31.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:31.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:40:31.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.402849 -999.00  +12.50  17.21     54   +3.60 1 1 1 1 1   888    0 10.04 51.51 ----- 17.1 17.2 118.4 21.6 20.5 -26.2 19.5 -24.3 19.2 -25.0 20.3 -25.4
2025-09-29T11:40:31.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:40:31.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:40:31.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.402849
2025-09-29T11:40:31.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:40:31.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:40:31.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:40:31.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:40:31.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:40:31.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:40:22', tmtdew=10.58, humidity=48.05, cloud=0.0, wind=22.48, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:40:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:40:31.052 [DEBUG] [Thread-154792] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:31.136 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:40:31.151 [DEBUG] [Thread-154795] [transport.py] [_log()] starting thread (client mode): 0x2b9c0b50
2025-09-29T11:40:31.151 [DEBUG] [Thread-154795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:31.166 [DEBUG] [Thread-154795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:40:31.166 [INFO] [Thread-154795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:31.174 [DEBUG] [Thread-154795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:31.175 [DEBUG] [Thread-154795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:31.175 [DEBUG] [Thread-154795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:31.175 [DEBUG] [Thread-154795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:31.175 [DEBUG] [Thread-154795] [transport.py] [_log()] Compression: none
2025-09-29T11:40:31.175 [DEBUG] [Thread-154795] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:31.232 [DEBUG] [Thread-154795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:31.232 [DEBUG] [Thread-154795] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:31.232 [DEBUG] [Thread-154795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:40:31.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:40:31.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:31.288 [DEBUG] [Thread-154795] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:31.288 [DEBUG] [Thread-154795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:31.288 [DEBUG] [Thread-154795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:31.289 [DEBUG] [Thread-154795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:40:31.289 [DEBUG] [Thread-154795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:31.303 [INFO] [Thread-154795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:31.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:40:31.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:32.273 [DEBUG] [Thread-154795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:32.274 [DEBUG] [Thread-154795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:32.321 [DEBUG] [Thread-154795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:32.322 [DEBUG] [Thread-154795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:32.331 [DEBUG] [Thread-154795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:32.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:32.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:40:32.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:40:32.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:32.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:32.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:32.366 [DEBUG] [Thread-154795] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:36.633 [DEBUG] [Thread-154797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:40:37.878 [DEBUG] [Thread-154798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:40:40.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:40:40.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:40:42.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:40:42.367 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:40:42.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:40:42.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 40, 22), 10.58, 48.05, 0.0, 22.48, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:40:42.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:40:22
2025-09-29T11:40:43.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:40:43.203 [DEBUG] [Thread-154799] [transport.py] [_log()] starting thread (client mode): 0x2e348400
2025-09-29T11:40:43.203 [DEBUG] [Thread-154799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:43.223 [DEBUG] [Thread-154799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:40:43.223 [INFO] [Thread-154799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:43.226 [DEBUG] [Thread-154799] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:43.227 [DEBUG] [Thread-154799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:43.227 [DEBUG] [Thread-154799] [transport.py] [_log()] Compression: none
2025-09-29T11:40:43.227 [DEBUG] [Thread-154799] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:43.244 [DEBUG] [Thread-154799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:43.244 [DEBUG] [Thread-154799] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:43.245 [DEBUG] [Thread-154799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:40:43.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:40:43.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:43.246 [DEBUG] [Thread-154799] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:43.246 [DEBUG] [Thread-154799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:43.246 [DEBUG] [Thread-154799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:43.246 [DEBUG] [Thread-154799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:40:43.246 [DEBUG] [Thread-154799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:43.263 [INFO] [Thread-154799] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:43.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:43.887 [DEBUG] [Thread-154799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:43.887 [DEBUG] [Thread-154799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:43.887 [DEBUG] [Thread-154799] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:40:43.928 [DEBUG] [Thread-154799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:43.928 [DEBUG] [Thread-154799] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:43.930 [DEBUG] [Thread-154799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:43.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:43.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:40:43.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:40:43.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:40:43.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:43.948 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:40:43.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.402849 -999.00  +12.50  17.21     54   +3.60 1 1 1 1 1   888    0 10.04 51.51 ----- 17.1 17.2 118.4 21.6 20.5 -26.2 19.5 -24.3 19.2 -25.0 20.3 -25.4
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.402849
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:40:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:40:22', tmtdew=10.58, humidity=48.05, cloud=0.0, wind=22.48, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:40:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:40:43.949 [DEBUG] [Thread-154799] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:44.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:40:44.035 [DEBUG] [Thread-154802] [transport.py] [_log()] starting thread (client mode): 0x2b96c880
2025-09-29T11:40:44.035 [DEBUG] [Thread-154802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:44.050 [DEBUG] [Thread-154802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:40:44.050 [INFO] [Thread-154802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] Compression: none
2025-09-29T11:40:44.058 [DEBUG] [Thread-154802] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:44.115 [DEBUG] [Thread-154802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:44.115 [DEBUG] [Thread-154802] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:44.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:40:44.116 [DEBUG] [Thread-154802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:40:44.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:44.173 [DEBUG] [Thread-154802] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:44.173 [DEBUG] [Thread-154802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:44.173 [DEBUG] [Thread-154802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:44.173 [DEBUG] [Thread-154802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:40:44.173 [DEBUG] [Thread-154802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:44.191 [INFO] [Thread-154802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:44.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:40:44.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:45.196 [DEBUG] [Thread-154802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:45.197 [DEBUG] [Thread-154802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:45.245 [DEBUG] [Thread-154802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:45.245 [DEBUG] [Thread-154802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:45.253 [DEBUG] [Thread-154802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:45.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:45.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:40:45.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:40:45.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:45.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:45.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:45.285 [DEBUG] [Thread-154802] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:52.923 [DEBUG] [Thread-154804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:40:55.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:40:55.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:40:55.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:40:55.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 40, 22), 10.58, 48.05, 0.0, 22.48, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:40:55.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:40:22
2025-09-29T11:40:56.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:40:56.175 [DEBUG] [Thread-154805] [transport.py] [_log()] starting thread (client mode): 0x2b954cd0
2025-09-29T11:40:56.175 [DEBUG] [Thread-154805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:56.187 [DEBUG] [Thread-154805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:40:56.187 [INFO] [Thread-154805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] Compression: none
2025-09-29T11:40:56.190 [DEBUG] [Thread-154805] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:56.206 [DEBUG] [Thread-154805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:56.206 [DEBUG] [Thread-154805] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:56.206 [DEBUG] [Thread-154805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:40:56.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:40:56.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:56.251 [DEBUG] [Thread-154805] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:56.251 [DEBUG] [Thread-154805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:56.252 [DEBUG] [Thread-154805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:56.252 [DEBUG] [Thread-154805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:40:56.252 [DEBUG] [Thread-154805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:56.269 [INFO] [Thread-154805] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:56.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:56.918 [DEBUG] [Thread-154805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:56.918 [DEBUG] [Thread-154805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:56.919 [DEBUG] [Thread-154805] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:40:56.959 [DEBUG] [Thread-154805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:56.959 [DEBUG] [Thread-154805] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:56.962 [DEBUG] [Thread-154805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:56.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:56.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:40:56.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:40:56.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:40:56.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:56.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:40:56.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:56.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.402849 -999.00  +12.50  17.21     54   +3.60 1 1 1 1 1   888    0 10.04 51.51 ----- 17.1 17.2 118.4 21.6 20.5 -26.2 19.5 -24.3 19.2 -25.0 20.3 -25.4
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.402849
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:40:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:40:22', tmtdew=10.58, humidity=48.05, cloud=0.0, wind=22.48, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:40:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:40:56.980 [DEBUG] [Thread-154805] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:40:57.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:40:57.064 [DEBUG] [Thread-154808] [transport.py] [_log()] starting thread (client mode): 0x2b957370
2025-09-29T11:40:57.064 [DEBUG] [Thread-154808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:40:57.079 [DEBUG] [Thread-154808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:40:57.079 [INFO] [Thread-154808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:40:57.086 [DEBUG] [Thread-154808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] client lang: <none>
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] server lang: <none>
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] kex follows: False
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:40:57.087 [DEBUG] [Thread-154808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:40:57.088 [DEBUG] [Thread-154808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:40:57.088 [DEBUG] [Thread-154808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:40:57.088 [DEBUG] [Thread-154808] [transport.py] [_log()] Compression: none
2025-09-29T11:40:57.088 [DEBUG] [Thread-154808] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:40:57.144 [DEBUG] [Thread-154808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:40:57.145 [DEBUG] [Thread-154808] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:40:57.145 [DEBUG] [Thread-154808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:40:57.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:40:57.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:40:57.201 [DEBUG] [Thread-154808] [transport.py] [_log()] userauth is OK
2025-09-29T11:40:57.201 [DEBUG] [Thread-154808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:40:57.201 [DEBUG] [Thread-154808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:40:57.201 [DEBUG] [Thread-154808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:40:57.201 [DEBUG] [Thread-154808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:40:57.220 [INFO] [Thread-154808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:40:57.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:40:57.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:40:58.230 [DEBUG] [Thread-154808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:40:58.231 [DEBUG] [Thread-154808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:40:58.278 [DEBUG] [Thread-154808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:40:58.278 [DEBUG] [Thread-154808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:40:58.287 [DEBUG] [Thread-154808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:40:58.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:40:58.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:40:58.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:40:58.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:40:58.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:40:58.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:40:58.322 [DEBUG] [Thread-154808] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:41:07.953 [DEBUG] [Thread-154810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:41:08.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:41:08.324 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:41:08.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:41:08.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 40, 54), 10.34, 49.42, 0.0, 13.94, 12.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:41:08.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:40:54
2025-09-29T11:41:09.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:41:09.174 [DEBUG] [Thread-154811] [transport.py] [_log()] starting thread (client mode): 0x2b96da80
2025-09-29T11:41:09.174 [DEBUG] [Thread-154811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:41:09.192 [DEBUG] [Thread-154811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:41:09.192 [INFO] [Thread-154811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:41:09.194 [DEBUG] [Thread-154811] [transport.py] [_log()] client lang: <none>
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] server lang: <none>
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] kex follows: False
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] Compression: none
2025-09-29T11:41:09.195 [DEBUG] [Thread-154811] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:41:09.208 [DEBUG] [Thread-154811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:41:09.209 [DEBUG] [Thread-154811] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:41:09.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:41:09.209 [DEBUG] [Thread-154811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:41:09.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:41:09.211 [DEBUG] [Thread-154811] [transport.py] [_log()] userauth is OK
2025-09-29T11:41:09.211 [DEBUG] [Thread-154811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:41:09.211 [DEBUG] [Thread-154811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:41:09.211 [DEBUG] [Thread-154811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:41:09.211 [DEBUG] [Thread-154811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:41:09.229 [INFO] [Thread-154811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:41:09.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:41:09.884 [DEBUG] [Thread-154811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:41:09.884 [DEBUG] [Thread-154811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:41:09.884 [DEBUG] [Thread-154811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:41:09.925 [DEBUG] [Thread-154811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:41:09.925 [DEBUG] [Thread-154811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:41:09.928 [DEBUG] [Thread-154811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:41:09.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:41:09.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:41:09.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:41:09.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:41:09.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:41:09.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:41:09.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:41:09.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:41:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:41:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.403196 -999.00  +12.70   9.76     54   +3.70 1 1 1 1 1   888    0 10.08 47.24 ----- 14.7 9.8 137.1 17.6 20.6 -24.3 19.6 -24.0 19.4 -25.2 20.4 -25.4
2025-09-29T11:41:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:41:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:41:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.403196
2025-09-29T11:41:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:41:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:41:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:41:09.949 [DEBUG] [Thread-154811] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:41:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:41:09.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:41:09.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:40:54', tmtdew=10.34, humidity=49.42, cloud=0.0, wind=13.94, temperature=12.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:40:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:41:10.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:41:10.044 [DEBUG] [Thread-154814] [transport.py] [_log()] starting thread (client mode): 0x2e38e260
2025-09-29T11:41:10.044 [DEBUG] [Thread-154814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:41:10.057 [DEBUG] [Thread-154814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:41:10.057 [INFO] [Thread-154814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] client lang: <none>
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] server lang: <none>
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] kex follows: False
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] Compression: none
2025-09-29T11:41:10.065 [DEBUG] [Thread-154814] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:41:10.127 [DEBUG] [Thread-154814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:41:10.127 [DEBUG] [Thread-154814] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:41:10.127 [DEBUG] [Thread-154814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:41:10.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:41:10.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:41:10.188 [DEBUG] [Thread-154814] [transport.py] [_log()] userauth is OK
2025-09-29T11:41:10.188 [DEBUG] [Thread-154814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:41:10.188 [DEBUG] [Thread-154814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:41:10.188 [DEBUG] [Thread-154814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:41:10.188 [DEBUG] [Thread-154814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:41:10.210 [INFO] [Thread-154814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:41:10.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:41:10.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:41:11.173 [DEBUG] [Thread-154814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:41:11.174 [DEBUG] [Thread-154814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:41:11.221 [DEBUG] [Thread-154814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:41:11.221 [DEBUG] [Thread-154814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:41:11.230 [DEBUG] [Thread-154814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:41:11.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:41:11.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:41:11.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:41:11.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:41:11.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:41:11.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:41:11.263 [DEBUG] [Thread-154814] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:41:21.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:41:21.266 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:41:21.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:41:21.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 40, 54), 10.34, 49.42, 0.0, 13.94, 12.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:41:21.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:40:54
2025-09-29T11:41:21.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:41:22.114 [DEBUG] [Thread-154816] [transport.py] [_log()] starting thread (client mode): 0x2b91c730
2025-09-29T11:41:22.114 [DEBUG] [Thread-154816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:41:22.134 [DEBUG] [Thread-154816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:41:22.134 [INFO] [Thread-154816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] client lang: <none>
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] server lang: <none>
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] kex follows: False
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] Compression: none
2025-09-29T11:41:22.137 [DEBUG] [Thread-154816] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:41:22.151 [DEBUG] [Thread-154816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:41:22.151 [DEBUG] [Thread-154816] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:41:22.151 [DEBUG] [Thread-154816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:41:22.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:41:22.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:41:22.152 [DEBUG] [Thread-154816] [transport.py] [_log()] userauth is OK
2025-09-29T11:41:22.152 [DEBUG] [Thread-154816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:41:22.152 [DEBUG] [Thread-154816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:41:22.152 [DEBUG] [Thread-154816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:41:22.152 [DEBUG] [Thread-154816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:41:22.161 [INFO] [Thread-154816] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:41:22.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:41:22.833 [DEBUG] [Thread-154816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:41:22.833 [DEBUG] [Thread-154816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:41:22.833 [DEBUG] [Thread-154816] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:41:22.874 [DEBUG] [Thread-154816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:41:22.874 [DEBUG] [Thread-154816] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:41:22.876 [DEBUG] [Thread-154816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:41:22.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:41:22.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:41:22.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:41:22.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:41:22.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:41:22.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:41:22.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.403196 -999.00  +12.70   9.76     54   +3.70 1 1 1 1 1   888    0 10.08 47.24 ----- 14.7 9.8 137.1 17.6 20.6 -24.3 19.6 -24.0 19.4 -25.2 20.4 -25.4
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.403196
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:41:22.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:40:54', tmtdew=10.34, humidity=49.42, cloud=0.0, wind=13.94, temperature=12.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:40:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:41:22.899 [DEBUG] [Thread-154816] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:41:22.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:41:22.981 [DEBUG] [Thread-154819] [transport.py] [_log()] starting thread (client mode): 0x2b9575b0
2025-09-29T11:41:22.981 [DEBUG] [Thread-154819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:41:22.985 [DEBUG] [Thread-154820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:41:22.996 [DEBUG] [Thread-154819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:41:22.996 [INFO] [Thread-154819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:41:23.003 [DEBUG] [Thread-154819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:41:23.003 [DEBUG] [Thread-154819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:41:23.003 [DEBUG] [Thread-154819] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:41:23.003 [DEBUG] [Thread-154819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] client lang: <none>
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] server lang: <none>
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] kex follows: False
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] Compression: none
2025-09-29T11:41:23.004 [DEBUG] [Thread-154819] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:41:23.061 [DEBUG] [Thread-154819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:41:23.062 [DEBUG] [Thread-154819] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:41:23.062 [DEBUG] [Thread-154819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:41:23.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:41:23.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:41:23.119 [DEBUG] [Thread-154819] [transport.py] [_log()] userauth is OK
2025-09-29T11:41:23.119 [DEBUG] [Thread-154819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:41:23.119 [DEBUG] [Thread-154819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:41:23.119 [DEBUG] [Thread-154819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:41:23.119 [DEBUG] [Thread-154819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:41:23.132 [INFO] [Thread-154819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:41:23.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:41:23.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:41:24.089 [DEBUG] [Thread-154819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:41:24.089 [DEBUG] [Thread-154819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:41:24.137 [DEBUG] [Thread-154819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:41:24.137 [DEBUG] [Thread-154819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:41:24.145 [DEBUG] [Thread-154819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:41:24.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:41:24.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:41:24.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:41:24.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:41:24.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:41:24.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:41:24.177 [DEBUG] [Thread-154819] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:41:34.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:41:34.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:41:34.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:41:34.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 41, 26), 10.1, 50.21, 0.0, 13.34, 12.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:41:34.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:41:26
2025-09-29T11:41:34.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:41:35.008 [DEBUG] [Thread-154822] [transport.py] [_log()] starting thread (client mode): 0x28706050
2025-09-29T11:41:35.008 [DEBUG] [Thread-154822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:41:35.027 [DEBUG] [Thread-154822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:41:35.027 [INFO] [Thread-154822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:41:35.029 [DEBUG] [Thread-154822] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:41:35.029 [DEBUG] [Thread-154822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:41:35.029 [DEBUG] [Thread-154822] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:41:35.029 [DEBUG] [Thread-154822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:35.029 [DEBUG] [Thread-154822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:41:35.029 [DEBUG] [Thread-154822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:35.029 [DEBUG] [Thread-154822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] client lang: <none>
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] server lang: <none>
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] kex follows: False
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] Compression: none
2025-09-29T11:41:35.030 [DEBUG] [Thread-154822] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:41:35.038 [DEBUG] [Thread-154822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:41:35.038 [DEBUG] [Thread-154822] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:41:35.038 [DEBUG] [Thread-154822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:41:35.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:41:35.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:41:35.041 [DEBUG] [Thread-154822] [transport.py] [_log()] userauth is OK
2025-09-29T11:41:35.041 [DEBUG] [Thread-154822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:41:35.041 [DEBUG] [Thread-154822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:41:35.041 [DEBUG] [Thread-154822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:41:35.041 [DEBUG] [Thread-154822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:41:35.068 [INFO] [Thread-154822] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:41:35.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:41:35.653 [DEBUG] [Thread-154822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:41:35.653 [DEBUG] [Thread-154822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:41:35.653 [DEBUG] [Thread-154822] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:41:35.694 [DEBUG] [Thread-154822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:41:35.694 [DEBUG] [Thread-154822] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:41:35.697 [DEBUG] [Thread-154822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:41:35.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:41:35.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:41:35.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:41:35.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:41:35.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:41:35.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:41:35.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:41:35.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:41:35.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:41:35.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.403544 -999.00  +12.90  13.36     53   +3.80 1 1 1 1 1   888    0 10.01 47.98 ----- 14.0 13.4 160.8 14.4 20.7 -24.9 19.6 -27.2 19.4 -24.7 20.5 -25.3
2025-09-29T11:41:35.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:41:35.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:41:35.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.403544
2025-09-29T11:41:35.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:41:35.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:41:35.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:41:35.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:41:35.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:41:35.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:41:26', tmtdew=10.1, humidity=50.21, cloud=0.0, wind=13.34, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:41:06.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:41:35.717 [DEBUG] [Thread-154822] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:41:35.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:41:36.689 [DEBUG] [Thread-154825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:41:38.018 [DEBUG] [Thread-154826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:41:40.615 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:41:40.616 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:41:53.061 [DEBUG] [Thread-154827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:42:08.092 [DEBUG] [Thread-154828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:42:23.118 [DEBUG] [Thread-154829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:42:36.740 [DEBUG] [Thread-154830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:42:38.141 [DEBUG] [Thread-154831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:42:40.755 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:42:40.756 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:42:53.170 [DEBUG] [Thread-154832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:43:08.199 [DEBUG] [Thread-154833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:43:23.239 [DEBUG] [Thread-154834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:43:36.788 [DEBUG] [Thread-154835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:43:38.269 [DEBUG] [Thread-154836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:43:40.897 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:43:40.898 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:43:48.155 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:43:53.304 [DEBUG] [Thread-154837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:43:58.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:43:58.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:43:58.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:43:58.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 43, 34), 10.05, 50.21, 0.0, 22.69, 12.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:43:58.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:43:34
2025-09-29T11:43:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:43:59.024 [DEBUG] [Thread-154838] [transport.py] [_log()] starting thread (client mode): 0x28706980
2025-09-29T11:43:59.025 [DEBUG] [Thread-154838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:43:59.043 [DEBUG] [Thread-154838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:43:59.044 [INFO] [Thread-154838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] client lang: <none>
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] server lang: <none>
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] kex follows: False
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] Compression: none
2025-09-29T11:43:59.053 [DEBUG] [Thread-154838] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:43:59.069 [DEBUG] [Thread-154838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:43:59.069 [DEBUG] [Thread-154838] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:43:59.069 [DEBUG] [Thread-154838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:43:59.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:43:59.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:43:59.069 [DEBUG] [Thread-154838] [transport.py] [_log()] userauth is OK
2025-09-29T11:43:59.069 [DEBUG] [Thread-154838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:43:59.069 [DEBUG] [Thread-154838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:43:59.069 [DEBUG] [Thread-154838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:43:59.069 [DEBUG] [Thread-154838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:43:59.079 [INFO] [Thread-154838] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:43:59.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:43:59.766 [DEBUG] [Thread-154838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:43:59.766 [DEBUG] [Thread-154838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:43:59.766 [DEBUG] [Thread-154838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:43:59.807 [DEBUG] [Thread-154838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:43:59.807 [DEBUG] [Thread-154838] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:43:59.810 [DEBUG] [Thread-154838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:43:59.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:43:59.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:43:59.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:43:59.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:43:59.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:43:59.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:43:59.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:43:59.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:43:59.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:43:59.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.405280 -999.00  +12.80  25.77     54   +3.80 1 1 1 1 1   888    0 9.93 40.53 ----- 24.5 25.8 164.2 31.4 20.7 -25.3 19.4 -24.9 19.2 -27.1 20.4 -27.0
2025-09-29T11:43:59.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:43:59.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:43:59.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.405280
2025-09-29T11:43:59.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:43:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:43:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:43:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:43:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:43:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:43:34', tmtdew=10.05, humidity=50.21, cloud=0.0, wind=22.69, temperature=12.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:43:36.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:43:59.835 [DEBUG] [Thread-154838] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:43:59.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:43:59.932 [DEBUG] [Thread-154841] [transport.py] [_log()] starting thread (client mode): 0x2b957b50
2025-09-29T11:43:59.932 [DEBUG] [Thread-154841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:43:59.948 [DEBUG] [Thread-154841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:43:59.948 [INFO] [Thread-154841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] client lang: <none>
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] server lang: <none>
2025-09-29T11:43:59.956 [DEBUG] [Thread-154841] [transport.py] [_log()] kex follows: False
2025-09-29T11:43:59.957 [DEBUG] [Thread-154841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:43:59.957 [DEBUG] [Thread-154841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:43:59.957 [DEBUG] [Thread-154841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:43:59.957 [DEBUG] [Thread-154841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:43:59.957 [DEBUG] [Thread-154841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:43:59.957 [DEBUG] [Thread-154841] [transport.py] [_log()] Compression: none
2025-09-29T11:43:59.957 [DEBUG] [Thread-154841] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:00.015 [DEBUG] [Thread-154841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:00.016 [DEBUG] [Thread-154841] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:00.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:44:00.017 [DEBUG] [Thread-154841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:44:00.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:00.071 [DEBUG] [Thread-154841] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:00.071 [DEBUG] [Thread-154841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:00.071 [DEBUG] [Thread-154841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:00.071 [DEBUG] [Thread-154841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:44:00.071 [DEBUG] [Thread-154841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:00.090 [INFO] [Thread-154841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:00.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:44:00.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:01.032 [DEBUG] [Thread-154841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:01.032 [DEBUG] [Thread-154841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:01.080 [DEBUG] [Thread-154841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:01.081 [DEBUG] [Thread-154841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:01.089 [DEBUG] [Thread-154841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:01.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:01.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:44:01.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:44:01.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:01.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:01.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:01.128 [DEBUG] [Thread-154841] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:08.340 [DEBUG] [Thread-154843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:44:11.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:44:11.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:44:11.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:44:11.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 44, 6), 9.98, 50.46, 0.0, 20.15, 12.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:44:11.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:44:06
2025-09-29T11:44:11.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:44:12.009 [DEBUG] [Thread-154844] [transport.py] [_log()] starting thread (client mode): 0x2b955ba0
2025-09-29T11:44:12.009 [DEBUG] [Thread-154844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:44:12.028 [DEBUG] [Thread-154844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:44:12.029 [INFO] [Thread-154844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:44:12.032 [DEBUG] [Thread-154844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] client lang: <none>
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] server lang: <none>
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] kex follows: False
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] Compression: none
2025-09-29T11:44:12.033 [DEBUG] [Thread-154844] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:12.051 [DEBUG] [Thread-154844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:12.052 [DEBUG] [Thread-154844] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:12.052 [DEBUG] [Thread-154844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:44:12.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:44:12.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:12.054 [DEBUG] [Thread-154844] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:12.054 [DEBUG] [Thread-154844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:12.055 [DEBUG] [Thread-154844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:12.055 [DEBUG] [Thread-154844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:44:12.055 [DEBUG] [Thread-154844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:12.078 [INFO] [Thread-154844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:12.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:12.899 [DEBUG] [Thread-154844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:12.899 [DEBUG] [Thread-154844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:12.900 [DEBUG] [Thread-154844] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:44:12.940 [DEBUG] [Thread-154844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:12.940 [DEBUG] [Thread-154844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:12.943 [DEBUG] [Thread-154844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:12.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:12.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:44:12.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:44:12.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:44:12.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:12.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:44:12.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:12.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:12.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:44:12.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.405280 -999.00  +12.80  25.77     54   +3.80 1 1 1 1 1   888    0 9.93 40.53 ----- 24.5 25.8 164.2 31.4 20.7 -25.3 19.4 -24.9 19.2 -27.1 20.4 -27.0
2025-09-29T11:44:12.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:44:12.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:44:12.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.405280
2025-09-29T11:44:12.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:44:12.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:44:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:44:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:44:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:44:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:44:06', tmtdew=9.98, humidity=50.46, cloud=0.0, wind=20.15, temperature=12.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:43:36.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:44:12.970 [DEBUG] [Thread-154844] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:13.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:44:13.065 [DEBUG] [Thread-154847] [transport.py] [_log()] starting thread (client mode): 0x2b94fc70
2025-09-29T11:44:13.065 [DEBUG] [Thread-154847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:44:13.079 [DEBUG] [Thread-154847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:44:13.080 [INFO] [Thread-154847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:44:13.087 [DEBUG] [Thread-154847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:44:13.087 [DEBUG] [Thread-154847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] client lang: <none>
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] server lang: <none>
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] kex follows: False
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] Compression: none
2025-09-29T11:44:13.088 [DEBUG] [Thread-154847] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:13.147 [DEBUG] [Thread-154847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:13.148 [DEBUG] [Thread-154847] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:13.148 [DEBUG] [Thread-154847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:44:13.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:44:13.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:13.203 [DEBUG] [Thread-154847] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:13.203 [DEBUG] [Thread-154847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:13.203 [DEBUG] [Thread-154847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:13.203 [DEBUG] [Thread-154847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:44:13.203 [DEBUG] [Thread-154847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:13.222 [INFO] [Thread-154847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:13.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:44:13.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:14.146 [DEBUG] [Thread-154847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:14.146 [DEBUG] [Thread-154847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:14.194 [DEBUG] [Thread-154847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:14.194 [DEBUG] [Thread-154847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:14.204 [DEBUG] [Thread-154847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:14.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:14.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:44:14.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:44:14.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:14.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:14.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:14.241 [DEBUG] [Thread-154847] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:23.378 [DEBUG] [Thread-154849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:44:24.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:44:24.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:44:24.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:44:24.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 44, 6), 9.98, 50.46, 0.0, 20.15, 12.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:44:24.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:44:06
2025-09-29T11:44:24.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:44:25.083 [DEBUG] [Thread-154850] [transport.py] [_log()] starting thread (client mode): 0x2b96b9d0
2025-09-29T11:44:25.083 [DEBUG] [Thread-154850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:44:25.102 [DEBUG] [Thread-154850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:44:25.102 [INFO] [Thread-154850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:44:25.105 [DEBUG] [Thread-154850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:44:25.105 [DEBUG] [Thread-154850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:44:25.105 [DEBUG] [Thread-154850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:44:25.105 [DEBUG] [Thread-154850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:25.105 [DEBUG] [Thread-154850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:25.105 [DEBUG] [Thread-154850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:25.105 [DEBUG] [Thread-154850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] client lang: <none>
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] server lang: <none>
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] kex follows: False
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] Compression: none
2025-09-29T11:44:25.106 [DEBUG] [Thread-154850] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:25.122 [DEBUG] [Thread-154850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:25.122 [DEBUG] [Thread-154850] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:25.123 [DEBUG] [Thread-154850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:44:25.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:44:25.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:25.124 [DEBUG] [Thread-154850] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:25.125 [DEBUG] [Thread-154850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:25.125 [DEBUG] [Thread-154850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:25.125 [DEBUG] [Thread-154850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:44:25.125 [DEBUG] [Thread-154850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:25.139 [INFO] [Thread-154850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:25.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:25.791 [DEBUG] [Thread-154850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:25.791 [DEBUG] [Thread-154850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:25.791 [DEBUG] [Thread-154850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:44:25.833 [DEBUG] [Thread-154850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:25.833 [DEBUG] [Thread-154850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:25.836 [DEBUG] [Thread-154850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:25.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:25.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:44:25.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:44:25.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:44:25.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:25.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:44:25.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:25.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:25.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:44:25.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.405627 -999.00  +12.50  14.21     55   +3.70 1 1 1 1 1   888    0 9.69 35.37 ----- 12.6 14.2 170.2 25.5 20.7 -25.3 19.4 -24.1 19.2 -23.8 20.4 -25.2
2025-09-29T11:44:25.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:44:25.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:44:25.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.405627
2025-09-29T11:44:25.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:44:25.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:44:25.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:44:25.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:44:25.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:44:25.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:44:06', tmtdew=9.98, humidity=50.46, cloud=0.0, wind=20.15, temperature=12.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:44:06.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:44:25.863 [DEBUG] [Thread-154850] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:25.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:44:25.959 [DEBUG] [Thread-154853] [transport.py] [_log()] starting thread (client mode): 0x2b96aa40
2025-09-29T11:44:25.959 [DEBUG] [Thread-154853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:44:25.973 [DEBUG] [Thread-154853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:44:25.973 [INFO] [Thread-154853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:44:25.981 [DEBUG] [Thread-154853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:44:25.981 [DEBUG] [Thread-154853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:44:25.981 [DEBUG] [Thread-154853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] client lang: <none>
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] server lang: <none>
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] kex follows: False
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] Compression: none
2025-09-29T11:44:25.982 [DEBUG] [Thread-154853] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:26.038 [DEBUG] [Thread-154853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:26.039 [DEBUG] [Thread-154853] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:26.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:44:26.039 [DEBUG] [Thread-154853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:44:26.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:26.099 [DEBUG] [Thread-154853] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:26.099 [DEBUG] [Thread-154853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:26.099 [DEBUG] [Thread-154853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:26.099 [DEBUG] [Thread-154853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:44:26.099 [DEBUG] [Thread-154853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:26.118 [INFO] [Thread-154853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:26.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:44:26.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:27.064 [DEBUG] [Thread-154853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:27.064 [DEBUG] [Thread-154853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:27.111 [DEBUG] [Thread-154853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:27.111 [DEBUG] [Thread-154853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:27.120 [DEBUG] [Thread-154853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:27.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:27.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:44:27.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:44:27.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:27.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:27.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:27.155 [DEBUG] [Thread-154853] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:36.837 [DEBUG] [Thread-154855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:44:37.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:44:37.158 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:44:37.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:44:37.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 44, 6), 9.98, 50.46, 0.0, 20.15, 12.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:44:37.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:44:06
2025-09-29T11:44:37.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:44:38.025 [DEBUG] [Thread-154856] [transport.py] [_log()] starting thread (client mode): 0x2e38f460
2025-09-29T11:44:38.025 [DEBUG] [Thread-154856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:44:38.044 [DEBUG] [Thread-154856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:44:38.044 [INFO] [Thread-154856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:44:38.047 [DEBUG] [Thread-154856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] client lang: <none>
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] server lang: <none>
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] kex follows: False
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] Compression: none
2025-09-29T11:44:38.048 [DEBUG] [Thread-154856] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:38.065 [DEBUG] [Thread-154856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:38.065 [DEBUG] [Thread-154856] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:38.066 [DEBUG] [Thread-154856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:44:38.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:44:38.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:38.068 [DEBUG] [Thread-154856] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:38.068 [DEBUG] [Thread-154856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:38.068 [DEBUG] [Thread-154856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:38.068 [DEBUG] [Thread-154856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:44:38.068 [DEBUG] [Thread-154856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:38.092 [INFO] [Thread-154856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:38.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:38.428 [DEBUG] [Thread-154858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:44:38.882 [DEBUG] [Thread-154856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:38.882 [DEBUG] [Thread-154856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:38.882 [DEBUG] [Thread-154856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:44:38.923 [DEBUG] [Thread-154856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:38.923 [DEBUG] [Thread-154856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:38.925 [DEBUG] [Thread-154856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:38.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:38.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:44:38.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:44:38.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:44:38.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:38.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:44:38.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:38.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:44:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.405627 -999.00  +12.50  14.21     55   +3.70 1 1 1 1 1   888    0 9.69 35.37 ----- 12.6 14.2 170.2 25.5 20.7 -25.3 19.4 -24.1 19.2 -23.8 20.4 -25.2
2025-09-29T11:44:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:44:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:44:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.405627
2025-09-29T11:44:38.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:44:38.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:44:38.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:44:38.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:44:38.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:44:38.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:44:06', tmtdew=9.98, humidity=50.46, cloud=0.0, wind=20.15, temperature=12.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:44:06.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:44:38.943 [DEBUG] [Thread-154856] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:39.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:44:39.027 [DEBUG] [Thread-154860] [transport.py] [_log()] starting thread (client mode): 0x2e38fd00
2025-09-29T11:44:39.028 [DEBUG] [Thread-154860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:44:39.043 [DEBUG] [Thread-154860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:44:39.043 [INFO] [Thread-154860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] client lang: <none>
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] server lang: <none>
2025-09-29T11:44:39.050 [DEBUG] [Thread-154860] [transport.py] [_log()] kex follows: False
2025-09-29T11:44:39.051 [DEBUG] [Thread-154860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:44:39.051 [DEBUG] [Thread-154860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:44:39.051 [DEBUG] [Thread-154860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:44:39.051 [DEBUG] [Thread-154860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:44:39.051 [DEBUG] [Thread-154860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:44:39.051 [DEBUG] [Thread-154860] [transport.py] [_log()] Compression: none
2025-09-29T11:44:39.051 [DEBUG] [Thread-154860] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:39.115 [DEBUG] [Thread-154860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:39.115 [DEBUG] [Thread-154860] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:39.115 [DEBUG] [Thread-154860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:44:39.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:44:39.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:39.170 [DEBUG] [Thread-154860] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:39.170 [DEBUG] [Thread-154860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:39.170 [DEBUG] [Thread-154860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:39.170 [DEBUG] [Thread-154860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:44:39.170 [DEBUG] [Thread-154860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:39.184 [INFO] [Thread-154860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:39.184 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:44:39.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:40.167 [DEBUG] [Thread-154860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:40.168 [DEBUG] [Thread-154860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:40.216 [DEBUG] [Thread-154860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:40.216 [DEBUG] [Thread-154860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:40.224 [DEBUG] [Thread-154860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:40.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:40.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:44:40.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:44:40.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:40.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:40.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:40.256 [DEBUG] [Thread-154860] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:41.038 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:44:41.040 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:44:50.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:44:50.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:44:50.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:44:50.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 44, 38), 9.79, 51.09, 0.0, 13.45, 11.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:44:50.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:44:38
2025-09-29T11:44:50.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:44:51.134 [DEBUG] [Thread-154862] [transport.py] [_log()] starting thread (client mode): 0x2e3dc8e0
2025-09-29T11:44:51.134 [DEBUG] [Thread-154862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:44:51.155 [DEBUG] [Thread-154862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:44:51.155 [INFO] [Thread-154862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:44:51.158 [DEBUG] [Thread-154862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:44:51.158 [DEBUG] [Thread-154862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] client lang: <none>
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] server lang: <none>
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] kex follows: False
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] Compression: none
2025-09-29T11:44:51.159 [DEBUG] [Thread-154862] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:51.176 [DEBUG] [Thread-154862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:51.177 [DEBUG] [Thread-154862] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:51.177 [DEBUG] [Thread-154862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:44:51.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:44:51.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:51.179 [DEBUG] [Thread-154862] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:51.179 [DEBUG] [Thread-154862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:51.180 [DEBUG] [Thread-154862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:51.180 [DEBUG] [Thread-154862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:44:51.180 [DEBUG] [Thread-154862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:51.198 [INFO] [Thread-154862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:51.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:52.000 [DEBUG] [Thread-154862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:52.009 [DEBUG] [Thread-154862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:52.010 [DEBUG] [Thread-154862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:44:52.041 [DEBUG] [Thread-154862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:52.041 [DEBUG] [Thread-154862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:52.044 [DEBUG] [Thread-154862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:52.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:52.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:44:52.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:44:52.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:44:52.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:52.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:44:52.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:52.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:44:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.405627 -999.00  +12.50  14.21     55   +3.70 1 1 1 1 1   888    0 9.69 35.37 ----- 12.6 14.2 170.2 25.5 20.7 -25.3 19.4 -24.1 19.2 -23.8 20.4 -25.2
2025-09-29T11:44:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:44:52.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:44:52.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.405627
2025-09-29T11:44:52.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:44:52.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:44:52.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:44:52.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:44:52.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:44:52.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:44:38', tmtdew=9.79, humidity=51.09, cloud=0.0, wind=13.45, temperature=11.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:44:06.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:44:52.071 [DEBUG] [Thread-154862] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:52.159 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:44:52.168 [DEBUG] [Thread-154865] [transport.py] [_log()] starting thread (client mode): 0x2b969f60
2025-09-29T11:44:52.169 [DEBUG] [Thread-154865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:44:52.183 [DEBUG] [Thread-154865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:44:52.183 [INFO] [Thread-154865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:44:52.191 [DEBUG] [Thread-154865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:44:52.191 [DEBUG] [Thread-154865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:44:52.191 [DEBUG] [Thread-154865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] client lang: <none>
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] server lang: <none>
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] kex follows: False
2025-09-29T11:44:52.192 [DEBUG] [Thread-154865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:44:52.193 [DEBUG] [Thread-154865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:44:52.193 [DEBUG] [Thread-154865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:44:52.193 [DEBUG] [Thread-154865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:44:52.193 [DEBUG] [Thread-154865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:44:52.193 [DEBUG] [Thread-154865] [transport.py] [_log()] Compression: none
2025-09-29T11:44:52.193 [DEBUG] [Thread-154865] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:44:52.251 [DEBUG] [Thread-154865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:44:52.251 [DEBUG] [Thread-154865] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:44:52.252 [DEBUG] [Thread-154865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:44:52.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:44:52.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:44:52.307 [DEBUG] [Thread-154865] [transport.py] [_log()] userauth is OK
2025-09-29T11:44:52.307 [DEBUG] [Thread-154865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:44:52.307 [DEBUG] [Thread-154865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:44:52.307 [DEBUG] [Thread-154865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:44:52.307 [DEBUG] [Thread-154865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:44:52.325 [INFO] [Thread-154865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:44:52.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:44:52.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:44:53.265 [DEBUG] [Thread-154865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:44:53.265 [DEBUG] [Thread-154865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:44:53.313 [DEBUG] [Thread-154865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:44:53.313 [DEBUG] [Thread-154865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:44:53.322 [DEBUG] [Thread-154865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:44:53.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:44:53.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:44:53.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:44:53.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:44:53.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:44:53.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:44:53.359 [DEBUG] [Thread-154865] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:44:53.481 [DEBUG] [Thread-154867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:45:03.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:45:03.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:45:03.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:45:03.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 44, 38), 9.79, 51.09, 0.0, 13.45, 11.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:45:03.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:44:38
2025-09-29T11:45:04.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:45:04.243 [DEBUG] [Thread-154868] [transport.py] [_log()] starting thread (client mode): 0x2e38c220
2025-09-29T11:45:04.243 [DEBUG] [Thread-154868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:45:04.264 [DEBUG] [Thread-154868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:45:04.264 [INFO] [Thread-154868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:45:04.267 [DEBUG] [Thread-154868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:45:04.267 [DEBUG] [Thread-154868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:45:04.267 [DEBUG] [Thread-154868] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] client lang: <none>
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] server lang: <none>
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] kex follows: False
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] Compression: none
2025-09-29T11:45:04.268 [DEBUG] [Thread-154868] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:45:04.284 [DEBUG] [Thread-154868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:45:04.285 [DEBUG] [Thread-154868] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:45:04.285 [DEBUG] [Thread-154868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:45:04.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:45:04.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:45:04.288 [DEBUG] [Thread-154868] [transport.py] [_log()] userauth is OK
2025-09-29T11:45:04.288 [DEBUG] [Thread-154868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:45:04.288 [DEBUG] [Thread-154868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:45:04.288 [DEBUG] [Thread-154868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:45:04.288 [DEBUG] [Thread-154868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:45:04.304 [INFO] [Thread-154868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:45:04.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:45:08.529 [DEBUG] [Thread-154870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:45:10.092 [DEBUG] [Thread-154868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:45:10.093 [DEBUG] [Thread-154868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:45:10.093 [DEBUG] [Thread-154868] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:45:10.134 [DEBUG] [Thread-154868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:45:10.134 [DEBUG] [Thread-154868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:45:10.136 [DEBUG] [Thread-154868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:45:10.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:45:10.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:45:10.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:45:10.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:45:10.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:45:10.165 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:45:10.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:45:10.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:45:10.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:45:10.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.405974 -999.00  +12.70  12.20     54   +3.70 1 1 1 1 1   888    0 9.73 35.21 ----- 9.5 12.2 163.6 16.6 20.8 -23.9 19.3 -27.3 19.3 -24.1 20.6 -25.7
2025-09-29T11:45:10.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:45:10.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:45:10.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.405974
2025-09-29T11:45:10.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:45:10.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:45:10.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:45:10.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:45:10.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:45:10.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:44:38', tmtdew=9.79, humidity=51.09, cloud=0.0, wind=13.45, temperature=11.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:44:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:45:10.167 [DEBUG] [Thread-154868] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:45:10.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:45:10.257 [DEBUG] [Thread-154872] [transport.py] [_log()] starting thread (client mode): 0x2e38c2e0
2025-09-29T11:45:10.257 [DEBUG] [Thread-154872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:45:10.271 [DEBUG] [Thread-154872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:45:10.271 [INFO] [Thread-154872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] client lang: <none>
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] server lang: <none>
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] kex follows: False
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:45:10.279 [DEBUG] [Thread-154872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:45:10.280 [DEBUG] [Thread-154872] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:45:10.280 [DEBUG] [Thread-154872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:45:10.280 [DEBUG] [Thread-154872] [transport.py] [_log()] Compression: none
2025-09-29T11:45:10.280 [DEBUG] [Thread-154872] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:45:10.340 [DEBUG] [Thread-154872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:45:10.340 [DEBUG] [Thread-154872] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:45:10.340 [DEBUG] [Thread-154872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:45:10.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:45:10.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:45:10.397 [DEBUG] [Thread-154872] [transport.py] [_log()] userauth is OK
2025-09-29T11:45:10.397 [DEBUG] [Thread-154872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:45:10.397 [DEBUG] [Thread-154872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:45:10.397 [DEBUG] [Thread-154872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:45:10.397 [DEBUG] [Thread-154872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:45:10.411 [INFO] [Thread-154872] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:45:10.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:45:10.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:45:11.336 [DEBUG] [Thread-154872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:45:11.336 [DEBUG] [Thread-154872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:45:11.384 [DEBUG] [Thread-154872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:45:11.384 [DEBUG] [Thread-154872] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:45:11.392 [DEBUG] [Thread-154872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:45:11.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:45:11.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:45:11.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:45:11.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:45:11.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:45:11.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:45:11.423 [DEBUG] [Thread-154872] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:45:21.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:45:21.426 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:45:21.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:45:22.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 45, 10), 9.76, 51.21, 0.0, 12.05, 11.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:45:22.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:45:10
2025-09-29T11:45:22.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:45:22.277 [DEBUG] [Thread-154874] [transport.py] [_log()] starting thread (client mode): 0x2b969600
2025-09-29T11:45:22.277 [DEBUG] [Thread-154874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:45:22.298 [DEBUG] [Thread-154874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:45:22.298 [INFO] [Thread-154874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:45:22.299 [DEBUG] [Thread-154874] [transport.py] [_log()] client lang: <none>
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] server lang: <none>
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] kex follows: False
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] Compression: none
2025-09-29T11:45:22.300 [DEBUG] [Thread-154874] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:45:22.319 [DEBUG] [Thread-154874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:45:22.319 [DEBUG] [Thread-154874] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:45:22.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:45:22.321 [DEBUG] [Thread-154874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:45:22.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:45:22.322 [DEBUG] [Thread-154874] [transport.py] [_log()] userauth is OK
2025-09-29T11:45:22.322 [DEBUG] [Thread-154874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:45:22.322 [DEBUG] [Thread-154874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:45:22.322 [DEBUG] [Thread-154874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:45:22.322 [DEBUG] [Thread-154874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:45:22.346 [INFO] [Thread-154874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:45:22.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:45:23.558 [DEBUG] [Thread-154876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:45:25.391 [DEBUG] [Thread-154874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:45:25.392 [DEBUG] [Thread-154874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:45:25.392 [DEBUG] [Thread-154874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:45:25.433 [DEBUG] [Thread-154874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:45:25.433 [DEBUG] [Thread-154874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:45:25.435 [DEBUG] [Thread-154874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:45:25.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:45:25.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:45:25.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:45:25.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:45:25.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:45:25.455 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:45:25.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:45:25.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:45:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:45:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.405974 -999.00  +12.70  12.20     54   +3.70 1 1 1 1 1   888    0 9.73 35.21 ----- 9.5 12.2 163.6 16.6 20.8 -23.9 19.3 -27.3 19.3 -24.1 20.6 -25.7
2025-09-29T11:45:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:45:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:45:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.405974
2025-09-29T11:45:25.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:45:25.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:45:25.458 [DEBUG] [Thread-154874] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:45:25.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:45:25.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:45:25.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:45:25.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:45:10', tmtdew=9.76, humidity=51.21, cloud=0.0, wind=12.05, temperature=11.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:44:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:45:25.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:45:25.546 [DEBUG] [Thread-154878] [transport.py] [_log()] starting thread (client mode): 0x2b96a140
2025-09-29T11:45:25.546 [DEBUG] [Thread-154878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:45:25.561 [DEBUG] [Thread-154878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:45:25.561 [INFO] [Thread-154878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:45:25.568 [DEBUG] [Thread-154878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:45:25.568 [DEBUG] [Thread-154878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] client lang: <none>
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] server lang: <none>
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] kex follows: False
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] Compression: none
2025-09-29T11:45:25.569 [DEBUG] [Thread-154878] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:45:25.625 [DEBUG] [Thread-154878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:45:25.625 [DEBUG] [Thread-154878] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:45:25.626 [DEBUG] [Thread-154878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:45:25.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:45:25.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:45:25.681 [DEBUG] [Thread-154878] [transport.py] [_log()] userauth is OK
2025-09-29T11:45:25.681 [DEBUG] [Thread-154878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:45:25.681 [DEBUG] [Thread-154878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:45:25.682 [DEBUG] [Thread-154878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:45:25.682 [DEBUG] [Thread-154878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:45:25.700 [INFO] [Thread-154878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:45:25.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:45:25.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:45:26.663 [DEBUG] [Thread-154878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:45:26.663 [DEBUG] [Thread-154878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:45:26.711 [DEBUG] [Thread-154878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:45:26.711 [DEBUG] [Thread-154878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:45:26.720 [DEBUG] [Thread-154878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:45:26.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:45:26.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:45:26.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:45:26.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:45:26.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:45:26.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:45:26.752 [DEBUG] [Thread-154878] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:45:36.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:45:36.748 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:45:36.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:45:36.885 [DEBUG] [Thread-154880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:45:37.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 45, 10), 9.76, 51.21, 0.0, 12.05, 11.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:45:37.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:45:10
2025-09-29T11:45:37.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:45:37.584 [DEBUG] [Thread-154881] [transport.py] [_log()] starting thread (client mode): 0x2b96bcd0
2025-09-29T11:45:37.584 [DEBUG] [Thread-154881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:45:37.605 [DEBUG] [Thread-154881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:45:37.605 [INFO] [Thread-154881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] client lang: <none>
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] server lang: <none>
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] kex follows: False
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:45:37.608 [DEBUG] [Thread-154881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:45:37.609 [DEBUG] [Thread-154881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:45:37.609 [DEBUG] [Thread-154881] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:45:37.609 [DEBUG] [Thread-154881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:45:37.609 [DEBUG] [Thread-154881] [transport.py] [_log()] Compression: none
2025-09-29T11:45:37.609 [DEBUG] [Thread-154881] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:45:37.626 [DEBUG] [Thread-154881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:45:37.626 [DEBUG] [Thread-154881] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:45:37.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:45:37.627 [DEBUG] [Thread-154881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:45:37.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:45:37.629 [DEBUG] [Thread-154881] [transport.py] [_log()] userauth is OK
2025-09-29T11:45:37.630 [DEBUG] [Thread-154881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:45:37.630 [DEBUG] [Thread-154881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:45:37.630 [DEBUG] [Thread-154881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:45:37.630 [DEBUG] [Thread-154881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:45:37.653 [INFO] [Thread-154881] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:45:37.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:45:38.264 [DEBUG] [Thread-154881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:45:38.264 [DEBUG] [Thread-154881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:45:38.265 [DEBUG] [Thread-154881] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:45:38.305 [DEBUG] [Thread-154881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:45:38.305 [DEBUG] [Thread-154881] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:45:38.308 [DEBUG] [Thread-154881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:45:38.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:45:38.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:45:38.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:45:38.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:45:38.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:45:38.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:45:38.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:45:38.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:45:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:45:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.406321 -999.00  +12.70  19.46     54   +3.70 1 1 1 1 1   888    0 9.77 35.30 ----- 14.6 19.5 140.0 22.4 21.0 -23.9 19.5 -22.7 19.4 -24.1 20.6 -24.3
2025-09-29T11:45:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:45:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:45:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.406321
2025-09-29T11:45:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:45:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:45:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:45:38.332 [DEBUG] [Thread-154881] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:45:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:45:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:45:38.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:45:10', tmtdew=9.76, humidity=51.21, cloud=0.0, wind=12.05, temperature=11.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:45:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:45:38.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:45:38.431 [DEBUG] [Thread-154884] [transport.py] [_log()] starting thread (client mode): 0x2e38c9a0
2025-09-29T11:45:38.431 [DEBUG] [Thread-154884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:45:38.447 [DEBUG] [Thread-154884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:45:38.447 [INFO] [Thread-154884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:45:38.454 [DEBUG] [Thread-154884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:45:38.455 [DEBUG] [Thread-154884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:45:38.455 [DEBUG] [Thread-154884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:45:38.455 [DEBUG] [Thread-154884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:38.455 [DEBUG] [Thread-154884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:38.455 [DEBUG] [Thread-154884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:38.455 [DEBUG] [Thread-154884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:38.455 [DEBUG] [Thread-154884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:45:38.456 [DEBUG] [Thread-154884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:45:38.456 [DEBUG] [Thread-154884] [transport.py] [_log()] client lang: <none>
2025-09-29T11:45:38.456 [DEBUG] [Thread-154884] [transport.py] [_log()] server lang: <none>
2025-09-29T11:45:38.456 [DEBUG] [Thread-154884] [transport.py] [_log()] kex follows: False
2025-09-29T11:45:38.456 [DEBUG] [Thread-154884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:45:38.456 [DEBUG] [Thread-154884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:45:38.456 [DEBUG] [Thread-154884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:45:38.456 [DEBUG] [Thread-154884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:45:38.457 [DEBUG] [Thread-154884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:45:38.457 [DEBUG] [Thread-154884] [transport.py] [_log()] Compression: none
2025-09-29T11:45:38.457 [DEBUG] [Thread-154884] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:45:38.513 [DEBUG] [Thread-154884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:45:38.513 [DEBUG] [Thread-154884] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:45:38.514 [DEBUG] [Thread-154884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:45:38.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:45:38.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:45:38.572 [DEBUG] [Thread-154884] [transport.py] [_log()] userauth is OK
2025-09-29T11:45:38.572 [DEBUG] [Thread-154884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:45:38.572 [DEBUG] [Thread-154884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:45:38.572 [DEBUG] [Thread-154884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:45:38.572 [DEBUG] [Thread-154884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:45:38.592 [INFO] [Thread-154884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:45:38.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:45:38.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:45:38.600 [DEBUG] [Thread-154886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:45:39.624 [DEBUG] [Thread-154884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:45:39.624 [DEBUG] [Thread-154884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:45:39.672 [DEBUG] [Thread-154884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:45:39.672 [DEBUG] [Thread-154884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:45:39.680 [DEBUG] [Thread-154884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:45:39.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:45:39.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:45:39.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:45:39.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:45:39.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:45:39.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:45:39.712 [DEBUG] [Thread-154884] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:45:41.184 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:45:41.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:45:49.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:45:49.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:45:49.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:45:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 45, 42), 9.75, 51.47, 0.0, 21.09, 12.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:45:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:45:42
2025-09-29T11:45:50.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:45:50.596 [DEBUG] [Thread-154887] [transport.py] [_log()] starting thread (client mode): 0x2e38c820
2025-09-29T11:45:50.596 [DEBUG] [Thread-154887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:45:50.616 [DEBUG] [Thread-154887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:45:50.616 [INFO] [Thread-154887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:45:50.620 [DEBUG] [Thread-154887] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:45:50.620 [DEBUG] [Thread-154887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:45:50.620 [DEBUG] [Thread-154887] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:45:50.620 [DEBUG] [Thread-154887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:50.620 [DEBUG] [Thread-154887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:50.620 [DEBUG] [Thread-154887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] client lang: <none>
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] server lang: <none>
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] kex follows: False
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] Compression: none
2025-09-29T11:45:50.621 [DEBUG] [Thread-154887] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:45:50.636 [DEBUG] [Thread-154887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:45:50.636 [DEBUG] [Thread-154887] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:45:50.636 [DEBUG] [Thread-154887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:45:50.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:45:50.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:45:50.637 [DEBUG] [Thread-154887] [transport.py] [_log()] userauth is OK
2025-09-29T11:45:50.637 [DEBUG] [Thread-154887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:45:50.637 [DEBUG] [Thread-154887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:45:50.637 [DEBUG] [Thread-154887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:45:50.637 [DEBUG] [Thread-154887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:45:50.664 [INFO] [Thread-154887] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:45:50.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:45:51.438 [DEBUG] [Thread-154887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:45:51.439 [DEBUG] [Thread-154887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:45:51.439 [DEBUG] [Thread-154887] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:45:51.480 [DEBUG] [Thread-154887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:45:51.480 [DEBUG] [Thread-154887] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:45:51.482 [DEBUG] [Thread-154887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:45:51.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:45:51.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:45:51.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:45:51.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:45:51.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:45:51.502 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:45:51.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.406321 -999.00  +12.70  19.46     54   +3.70 1 1 1 1 1   888    0 9.77 35.30 ----- 14.6 19.5 140.0 22.4 21.0 -23.9 19.5 -22.7 19.4 -24.1 20.6 -24.3
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.406321
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:45:51.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:45:51.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:45:42', tmtdew=9.75, humidity=51.47, cloud=0.0, wind=21.09, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:45:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:45:51.503 [DEBUG] [Thread-154887] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:45:51.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:45:51.587 [DEBUG] [Thread-154890] [transport.py] [_log()] starting thread (client mode): 0x2e38c8e0
2025-09-29T11:45:51.587 [DEBUG] [Thread-154890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:45:51.602 [DEBUG] [Thread-154890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:45:51.602 [INFO] [Thread-154890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] client lang: <none>
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] server lang: <none>
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] kex follows: False
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:45:51.609 [DEBUG] [Thread-154890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:45:51.610 [DEBUG] [Thread-154890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:45:51.610 [DEBUG] [Thread-154890] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:45:51.610 [DEBUG] [Thread-154890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:45:51.610 [DEBUG] [Thread-154890] [transport.py] [_log()] Compression: none
2025-09-29T11:45:51.610 [DEBUG] [Thread-154890] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:45:51.667 [DEBUG] [Thread-154890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:45:51.668 [DEBUG] [Thread-154890] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:45:51.668 [DEBUG] [Thread-154890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:45:51.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:45:51.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:45:51.725 [DEBUG] [Thread-154890] [transport.py] [_log()] userauth is OK
2025-09-29T11:45:51.725 [DEBUG] [Thread-154890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:45:51.725 [DEBUG] [Thread-154890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:45:51.725 [DEBUG] [Thread-154890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:45:51.725 [DEBUG] [Thread-154890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:45:51.745 [INFO] [Thread-154890] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:45:51.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:45:51.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:45:52.675 [DEBUG] [Thread-154890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:45:52.675 [DEBUG] [Thread-154890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:45:52.723 [DEBUG] [Thread-154890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:45:52.723 [DEBUG] [Thread-154890] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:45:52.731 [DEBUG] [Thread-154890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:45:52.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:45:52.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:45:52.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:45:52.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:45:52.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:45:52.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:45:52.763 [DEBUG] [Thread-154890] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:45:53.641 [DEBUG] [Thread-154892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:46:02.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:46:02.766 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:46:02.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:46:03.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 45, 42), 9.75, 51.47, 0.0, 21.09, 12.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:46:03.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:45:42
2025-09-29T11:46:03.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:46:03.638 [DEBUG] [Thread-154893] [transport.py] [_log()] starting thread (client mode): 0x2b9560b0
2025-09-29T11:46:03.638 [DEBUG] [Thread-154893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:03.658 [DEBUG] [Thread-154893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:46:03.658 [INFO] [Thread-154893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:46:03.662 [DEBUG] [Thread-154893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:03.662 [DEBUG] [Thread-154893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:46:03.662 [DEBUG] [Thread-154893] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:03.662 [DEBUG] [Thread-154893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:03.662 [DEBUG] [Thread-154893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:03.662 [DEBUG] [Thread-154893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:03.662 [DEBUG] [Thread-154893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:03.662 [DEBUG] [Thread-154893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] Compression: none
2025-09-29T11:46:03.663 [DEBUG] [Thread-154893] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:03.678 [DEBUG] [Thread-154893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:03.678 [DEBUG] [Thread-154893] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:03.679 [DEBUG] [Thread-154893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:46:03.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:46:03.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:03.681 [DEBUG] [Thread-154893] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:03.681 [DEBUG] [Thread-154893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:03.681 [DEBUG] [Thread-154893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:03.681 [DEBUG] [Thread-154893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:46:03.681 [DEBUG] [Thread-154893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:03.705 [INFO] [Thread-154893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:03.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:04.496 [DEBUG] [Thread-154893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:04.496 [DEBUG] [Thread-154893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:04.496 [DEBUG] [Thread-154893] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:46:04.537 [DEBUG] [Thread-154893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:04.537 [DEBUG] [Thread-154893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:04.540 [DEBUG] [Thread-154893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:04.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:04.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:46:04.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:46:04.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:46:04.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:04.557 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:46:04.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:04.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:04.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:46:04.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.406321 -999.00  +12.70  19.46     54   +3.70 1 1 1 1 1   888    0 9.77 35.30 ----- 14.6 19.5 140.0 22.4 21.0 -23.9 19.5 -22.7 19.4 -24.1 20.6 -24.3
2025-09-29T11:46:04.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:46:04.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:46:04.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.406321
2025-09-29T11:46:04.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:46:04.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:46:04.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:46:04.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:46:04.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:46:04.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:45:42', tmtdew=9.75, humidity=51.47, cloud=0.0, wind=21.09, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:45:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:46:04.560 [DEBUG] [Thread-154893] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:04.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:46:04.656 [DEBUG] [Thread-154896] [transport.py] [_log()] starting thread (client mode): 0x2b957d00
2025-09-29T11:46:04.656 [DEBUG] [Thread-154896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:04.670 [DEBUG] [Thread-154896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:46:04.670 [INFO] [Thread-154896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:04.678 [DEBUG] [Thread-154896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:04.679 [DEBUG] [Thread-154896] [transport.py] [_log()] Compression: none
2025-09-29T11:46:04.679 [DEBUG] [Thread-154896] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:04.736 [DEBUG] [Thread-154896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:04.736 [DEBUG] [Thread-154896] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:04.737 [DEBUG] [Thread-154896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:46:04.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:46:04.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:04.792 [DEBUG] [Thread-154896] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:04.792 [DEBUG] [Thread-154896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:04.792 [DEBUG] [Thread-154896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:04.793 [DEBUG] [Thread-154896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:46:04.793 [DEBUG] [Thread-154896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:04.817 [INFO] [Thread-154896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:04.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:46:04.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:05.776 [DEBUG] [Thread-154896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:05.776 [DEBUG] [Thread-154896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:05.824 [DEBUG] [Thread-154896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:05.824 [DEBUG] [Thread-154896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:05.834 [DEBUG] [Thread-154896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:05.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:05.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:46:05.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:46:05.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:05.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:05.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:05.868 [DEBUG] [Thread-154896] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:08.679 [DEBUG] [Thread-154898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:46:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:46:15.871 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:46:15.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:46:16.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 45, 42), 9.75, 51.47, 0.0, 21.09, 12.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:46:16.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:45:42
2025-09-29T11:46:16.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:46:16.764 [DEBUG] [Thread-154899] [transport.py] [_log()] starting thread (client mode): 0x2b96a140
2025-09-29T11:46:16.764 [DEBUG] [Thread-154899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:16.784 [DEBUG] [Thread-154899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:46:16.785 [INFO] [Thread-154899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] Compression: none
2025-09-29T11:46:16.788 [DEBUG] [Thread-154899] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:16.805 [DEBUG] [Thread-154899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:16.805 [DEBUG] [Thread-154899] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:16.806 [DEBUG] [Thread-154899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:46:16.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:46:16.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:16.807 [DEBUG] [Thread-154899] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:16.807 [DEBUG] [Thread-154899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:16.807 [DEBUG] [Thread-154899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:16.807 [DEBUG] [Thread-154899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:46:16.807 [DEBUG] [Thread-154899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:16.824 [INFO] [Thread-154899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:16.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:17.449 [DEBUG] [Thread-154899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:17.450 [DEBUG] [Thread-154899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:17.450 [DEBUG] [Thread-154899] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:46:17.491 [DEBUG] [Thread-154899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:17.491 [DEBUG] [Thread-154899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:17.493 [DEBUG] [Thread-154899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:17.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:17.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:46:17.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:46:17.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:46:17.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:17.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:46:17.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.406669 -999.00  +12.70  14.54     53   +3.60 1 1 1 1 1   888    0 9.78 34.34 ----- 15.8 14.5 155.5 27.0 20.6 -28.5 19.5 -27.9 19.1 -26.3 20.3 -27.5
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.406669
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:46:17.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:45:42', tmtdew=9.75, humidity=51.47, cloud=0.0, wind=21.09, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:45:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:46:17.513 [DEBUG] [Thread-154899] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:17.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:46:17.597 [DEBUG] [Thread-154902] [transport.py] [_log()] starting thread (client mode): 0x2b96ba60
2025-09-29T11:46:17.597 [DEBUG] [Thread-154902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:17.612 [DEBUG] [Thread-154902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:46:17.612 [INFO] [Thread-154902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:46:17.619 [DEBUG] [Thread-154902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:17.619 [DEBUG] [Thread-154902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:46:17.619 [DEBUG] [Thread-154902] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] Compression: none
2025-09-29T11:46:17.620 [DEBUG] [Thread-154902] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:17.677 [DEBUG] [Thread-154902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:17.677 [DEBUG] [Thread-154902] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:17.677 [DEBUG] [Thread-154902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:46:17.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:46:17.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:17.732 [DEBUG] [Thread-154902] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:17.733 [DEBUG] [Thread-154902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:17.733 [DEBUG] [Thread-154902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:17.733 [DEBUG] [Thread-154902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:46:17.733 [DEBUG] [Thread-154902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:17.752 [INFO] [Thread-154902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:17.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:46:17.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:18.665 [DEBUG] [Thread-154902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:18.666 [DEBUG] [Thread-154902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:18.713 [DEBUG] [Thread-154902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:18.713 [DEBUG] [Thread-154902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:18.722 [DEBUG] [Thread-154902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:18.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:18.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:46:18.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:46:18.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:18.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:18.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:18.757 [DEBUG] [Thread-154902] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:23.708 [DEBUG] [Thread-154904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:46:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:46:28.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:46:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:46:29.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 46, 14), 9.96, 50.74, 0.0, 24.12, 12.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:46:29.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:46:14
2025-09-29T11:46:29.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:46:29.624 [DEBUG] [Thread-154905] [transport.py] [_log()] starting thread (client mode): 0x2b96b970
2025-09-29T11:46:29.625 [DEBUG] [Thread-154905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:29.640 [DEBUG] [Thread-154905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:46:29.641 [INFO] [Thread-154905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:29.644 [DEBUG] [Thread-154905] [transport.py] [_log()] Compression: none
2025-09-29T11:46:29.645 [DEBUG] [Thread-154905] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:29.660 [DEBUG] [Thread-154905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:29.660 [DEBUG] [Thread-154905] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:29.661 [DEBUG] [Thread-154905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:46:29.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:46:29.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:29.662 [DEBUG] [Thread-154905] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:29.662 [DEBUG] [Thread-154905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:29.662 [DEBUG] [Thread-154905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:29.662 [DEBUG] [Thread-154905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:46:29.662 [DEBUG] [Thread-154905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:29.690 [INFO] [Thread-154905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:29.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:30.481 [DEBUG] [Thread-154905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:30.481 [DEBUG] [Thread-154905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:30.481 [DEBUG] [Thread-154905] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:46:30.522 [DEBUG] [Thread-154905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:30.522 [DEBUG] [Thread-154905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:30.524 [DEBUG] [Thread-154905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:30.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:30.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:46:30.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:46:30.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:46:30.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:30.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:46:30.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.406669 -999.00  +12.70  14.54     53   +3.60 1 1 1 1 1   888    0 9.78 34.34 ----- 15.8 14.5 155.5 27.0 20.6 -28.5 19.5 -27.9 19.1 -26.3 20.3 -27.5
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.406669
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:46:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:46:14', tmtdew=9.96, humidity=50.74, cloud=0.0, wind=24.12, temperature=12.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:45:36.202', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:46:30.542 [DEBUG] [Thread-154905] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:30.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:46:30.626 [DEBUG] [Thread-154908] [transport.py] [_log()] starting thread (client mode): 0x2b9c0520
2025-09-29T11:46:30.626 [DEBUG] [Thread-154908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:30.641 [DEBUG] [Thread-154908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:46:30.641 [INFO] [Thread-154908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:46:30.648 [DEBUG] [Thread-154908] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:30.648 [DEBUG] [Thread-154908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:46:30.648 [DEBUG] [Thread-154908] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:30.648 [DEBUG] [Thread-154908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] Compression: none
2025-09-29T11:46:30.649 [DEBUG] [Thread-154908] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:30.706 [DEBUG] [Thread-154908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:30.706 [DEBUG] [Thread-154908] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:30.707 [DEBUG] [Thread-154908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:46:30.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:46:30.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:30.764 [DEBUG] [Thread-154908] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:30.764 [DEBUG] [Thread-154908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:30.764 [DEBUG] [Thread-154908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:30.764 [DEBUG] [Thread-154908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:46:30.764 [DEBUG] [Thread-154908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:30.777 [INFO] [Thread-154908] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:30.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:46:30.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:31.749 [DEBUG] [Thread-154908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:31.749 [DEBUG] [Thread-154908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:31.798 [DEBUG] [Thread-154908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:31.798 [DEBUG] [Thread-154908] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:31.806 [DEBUG] [Thread-154908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:31.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:31.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:46:31.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:46:31.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:31.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:31.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:31.837 [DEBUG] [Thread-154908] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:36.923 [DEBUG] [Thread-154910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:46:38.748 [DEBUG] [Thread-154911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:46:41.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:46:41.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:46:41.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:46:41.840 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:46:41.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:46:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 46, 14), 9.96, 50.74, 0.0, 24.12, 12.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:46:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:46:14
2025-09-29T11:46:42.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:46:42.700 [DEBUG] [Thread-154912] [transport.py] [_log()] starting thread (client mode): 0x2b969b10
2025-09-29T11:46:42.700 [DEBUG] [Thread-154912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:42.719 [DEBUG] [Thread-154912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:46:42.720 [INFO] [Thread-154912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:46:42.721 [DEBUG] [Thread-154912] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:42.721 [DEBUG] [Thread-154912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] Compression: none
2025-09-29T11:46:42.722 [DEBUG] [Thread-154912] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:42.742 [DEBUG] [Thread-154912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:42.743 [DEBUG] [Thread-154912] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:42.743 [DEBUG] [Thread-154912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:46:42.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:46:42.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:42.746 [DEBUG] [Thread-154912] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:42.746 [DEBUG] [Thread-154912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:42.747 [DEBUG] [Thread-154912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:42.747 [DEBUG] [Thread-154912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:46:42.747 [DEBUG] [Thread-154912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:42.771 [INFO] [Thread-154912] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:42.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:43.399 [DEBUG] [Thread-154912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:43.399 [DEBUG] [Thread-154912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:43.399 [DEBUG] [Thread-154912] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:46:43.440 [DEBUG] [Thread-154912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:43.441 [DEBUG] [Thread-154912] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:43.443 [DEBUG] [Thread-154912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:43.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:43.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:46:43.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:46:43.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:46:43.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:43.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:46:43.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:43.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:43.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:46:43.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.407363 -999.00  +12.40  14.63     53   +3.10 1 1 1 1 1   888    0 9.70 34.29 ----- 12.3 14.6 155.8 20.1 20.4 -24.6 19.0 -25.2 19.1 -24.4 20.2 -25.5
2025-09-29T11:46:43.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:46:43.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:46:43.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.407363
2025-09-29T11:46:43.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:46:43.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:46:43.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:46:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:46:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:46:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:46:14', tmtdew=9.96, humidity=50.74, cloud=0.0, wind=24.12, temperature=12.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:46:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:46:43.464 [DEBUG] [Thread-154912] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:43.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:46:43.562 [DEBUG] [Thread-154915] [transport.py] [_log()] starting thread (client mode): 0x2b968310
2025-09-29T11:46:43.562 [DEBUG] [Thread-154915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:43.577 [DEBUG] [Thread-154915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:46:43.577 [INFO] [Thread-154915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:46:43.584 [DEBUG] [Thread-154915] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:43.584 [DEBUG] [Thread-154915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:46:43.584 [DEBUG] [Thread-154915] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:43.584 [DEBUG] [Thread-154915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] Compression: none
2025-09-29T11:46:43.585 [DEBUG] [Thread-154915] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:43.643 [DEBUG] [Thread-154915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:43.644 [DEBUG] [Thread-154915] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:43.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:46:43.645 [DEBUG] [Thread-154915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:46:43.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:43.700 [DEBUG] [Thread-154915] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:43.700 [DEBUG] [Thread-154915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:43.700 [DEBUG] [Thread-154915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:43.700 [DEBUG] [Thread-154915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:46:43.700 [DEBUG] [Thread-154915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:43.719 [INFO] [Thread-154915] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:43.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:46:43.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:44.644 [DEBUG] [Thread-154915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:44.645 [DEBUG] [Thread-154915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:44.692 [DEBUG] [Thread-154915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:44.692 [DEBUG] [Thread-154915] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:44.701 [DEBUG] [Thread-154915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:44.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:44.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:46:44.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:46:44.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:44.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:44.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:44.736 [DEBUG] [Thread-154915] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:53.790 [DEBUG] [Thread-154917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:46:54.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:46:54.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:46:54.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:46:55.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 46, 47), 10.54, 48.35, 0.0, 21.72, 12.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:46:55.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:46:47
2025-09-29T11:46:55.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:46:55.591 [DEBUG] [Thread-154918] [transport.py] [_log()] starting thread (client mode): 0x2b956470
2025-09-29T11:46:55.591 [DEBUG] [Thread-154918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:55.611 [DEBUG] [Thread-154918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:46:55.611 [INFO] [Thread-154918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:46:55.614 [DEBUG] [Thread-154918] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:55.615 [DEBUG] [Thread-154918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:46:55.615 [DEBUG] [Thread-154918] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:55.615 [DEBUG] [Thread-154918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:55.615 [DEBUG] [Thread-154918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:55.615 [DEBUG] [Thread-154918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:55.615 [DEBUG] [Thread-154918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:55.615 [DEBUG] [Thread-154918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:55.615 [DEBUG] [Thread-154918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:55.616 [DEBUG] [Thread-154918] [transport.py] [_log()] Compression: none
2025-09-29T11:46:55.617 [DEBUG] [Thread-154918] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:55.635 [DEBUG] [Thread-154918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:55.635 [DEBUG] [Thread-154918] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:55.636 [DEBUG] [Thread-154918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:46:55.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:46:55.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:55.638 [DEBUG] [Thread-154918] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:55.638 [DEBUG] [Thread-154918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:55.638 [DEBUG] [Thread-154918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:55.638 [DEBUG] [Thread-154918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:46:55.638 [DEBUG] [Thread-154918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:55.657 [INFO] [Thread-154918] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:55.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:56.432 [DEBUG] [Thread-154918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:56.432 [DEBUG] [Thread-154918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:56.433 [DEBUG] [Thread-154918] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:46:56.473 [DEBUG] [Thread-154918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:56.473 [DEBUG] [Thread-154918] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:56.477 [DEBUG] [Thread-154918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:56.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:56.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:46:56.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:46:56.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:46:56.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:56.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:46:56.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:56.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:56.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:46:56.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.407363 -999.00  +12.40  14.63     53   +3.10 1 1 1 1 1   888    0 9.70 34.29 ----- 12.3 14.6 155.8 20.1 20.4 -24.6 19.0 -25.2 19.1 -24.4 20.2 -25.5
2025-09-29T11:46:56.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:46:56.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:46:56.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.407363
2025-09-29T11:46:56.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:46:56.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:46:56.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:46:56.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:46:56.502 [DEBUG] [Thread-154918] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:46:56.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:46:56.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:46:47', tmtdew=10.54, humidity=48.35, cloud=0.0, wind=21.72, temperature=12.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:46:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:46:56.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:46:56.598 [DEBUG] [Thread-154921] [transport.py] [_log()] starting thread (client mode): 0x2b91ff40
2025-09-29T11:46:56.598 [DEBUG] [Thread-154921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:46:56.613 [DEBUG] [Thread-154921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:46:56.613 [INFO] [Thread-154921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:46:56.620 [DEBUG] [Thread-154921] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:46:56.621 [DEBUG] [Thread-154921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:46:56.621 [DEBUG] [Thread-154921] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:46:56.621 [DEBUG] [Thread-154921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:56.621 [DEBUG] [Thread-154921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:46:56.621 [DEBUG] [Thread-154921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:56.621 [DEBUG] [Thread-154921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:46:56.621 [DEBUG] [Thread-154921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:46:56.621 [DEBUG] [Thread-154921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] client lang: <none>
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] server lang: <none>
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] kex follows: False
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] Compression: none
2025-09-29T11:46:56.622 [DEBUG] [Thread-154921] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:46:56.679 [DEBUG] [Thread-154921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:46:56.680 [DEBUG] [Thread-154921] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:46:56.680 [DEBUG] [Thread-154921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:46:56.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:46:56.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:46:56.735 [DEBUG] [Thread-154921] [transport.py] [_log()] userauth is OK
2025-09-29T11:46:56.736 [DEBUG] [Thread-154921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:46:56.736 [DEBUG] [Thread-154921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:46:56.736 [DEBUG] [Thread-154921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:46:56.736 [DEBUG] [Thread-154921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:46:56.755 [INFO] [Thread-154921] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:46:56.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:46:56.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:46:57.679 [DEBUG] [Thread-154921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:46:57.680 [DEBUG] [Thread-154921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:46:57.727 [DEBUG] [Thread-154921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:46:57.727 [DEBUG] [Thread-154921] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:46:57.736 [DEBUG] [Thread-154921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:46:57.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:46:57.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:46:57.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:46:57.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:46:57.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:46:57.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:46:57.770 [DEBUG] [Thread-154921] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:07.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:47:07.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:47:07.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:47:08.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 46, 47), 10.54, 48.35, 0.0, 21.72, 12.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:47:08.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:46:47
2025-09-29T11:47:08.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:47:08.649 [DEBUG] [Thread-154923] [transport.py] [_log()] starting thread (client mode): 0x2b9549d0
2025-09-29T11:47:08.649 [DEBUG] [Thread-154923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:47:08.669 [DEBUG] [Thread-154923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:47:08.669 [INFO] [Thread-154923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] client lang: <none>
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] server lang: <none>
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] kex follows: False
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] Compression: none
2025-09-29T11:47:08.672 [DEBUG] [Thread-154923] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:47:08.688 [DEBUG] [Thread-154923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:47:08.688 [DEBUG] [Thread-154923] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:47:08.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:47:08.688 [DEBUG] [Thread-154923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:47:08.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:47:08.689 [DEBUG] [Thread-154923] [transport.py] [_log()] userauth is OK
2025-09-29T11:47:08.689 [DEBUG] [Thread-154923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:47:08.689 [DEBUG] [Thread-154923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:47:08.689 [DEBUG] [Thread-154923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:47:08.689 [DEBUG] [Thread-154923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:47:08.698 [INFO] [Thread-154923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:47:08.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:47:08.833 [DEBUG] [Thread-154925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:47:09.491 [DEBUG] [Thread-154923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:47:09.491 [DEBUG] [Thread-154923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:47:09.491 [DEBUG] [Thread-154923] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:47:09.532 [DEBUG] [Thread-154923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:47:09.532 [DEBUG] [Thread-154923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:47:09.534 [DEBUG] [Thread-154923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:47:09.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:47:09.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:47:09.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:47:09.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:47:09.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:47:09.552 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:47:09.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.407363 -999.00  +12.40  14.63     53   +3.10 1 1 1 1 1   888    0 9.70 34.29 ----- 12.3 14.6 155.8 20.1 20.4 -24.6 19.0 -25.2 19.1 -24.4 20.2 -25.5
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.407363
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:47:09.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:47:09.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:46:47', tmtdew=10.54, humidity=48.35, cloud=0.0, wind=21.72, temperature=12.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:46:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:47:09.553 [DEBUG] [Thread-154923] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:09.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:47:09.639 [DEBUG] [Thread-154927] [transport.py] [_log()] starting thread (client mode): 0x2e38d360
2025-09-29T11:47:09.639 [DEBUG] [Thread-154927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:47:09.654 [DEBUG] [Thread-154927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:47:09.654 [INFO] [Thread-154927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] client lang: <none>
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] server lang: <none>
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] kex follows: False
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:47:09.661 [DEBUG] [Thread-154927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:47:09.662 [DEBUG] [Thread-154927] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:47:09.662 [DEBUG] [Thread-154927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:47:09.662 [DEBUG] [Thread-154927] [transport.py] [_log()] Compression: none
2025-09-29T11:47:09.662 [DEBUG] [Thread-154927] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:47:09.720 [DEBUG] [Thread-154927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:47:09.720 [DEBUG] [Thread-154927] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:47:09.720 [DEBUG] [Thread-154927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:47:09.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:47:09.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:47:09.775 [DEBUG] [Thread-154927] [transport.py] [_log()] userauth is OK
2025-09-29T11:47:09.775 [DEBUG] [Thread-154927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:47:09.775 [DEBUG] [Thread-154927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:47:09.775 [DEBUG] [Thread-154927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:47:09.775 [DEBUG] [Thread-154927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:47:09.789 [INFO] [Thread-154927] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:47:09.789 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:47:09.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:47:10.727 [DEBUG] [Thread-154927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:47:10.727 [DEBUG] [Thread-154927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:47:10.775 [DEBUG] [Thread-154927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:47:10.776 [DEBUG] [Thread-154927] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:47:10.785 [DEBUG] [Thread-154927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:47:10.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:47:10.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:47:10.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:47:10.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:47:10.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:47:10.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:47:10.823 [DEBUG] [Thread-154927] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:20.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:47:20.825 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:47:20.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:47:21.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 46, 47), 10.54, 48.35, 0.0, 21.72, 12.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:47:21.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:46:47
2025-09-29T11:47:21.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:47:21.714 [DEBUG] [Thread-154929] [transport.py] [_log()] starting thread (client mode): 0x2b9c1630
2025-09-29T11:47:21.714 [DEBUG] [Thread-154929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:47:21.734 [DEBUG] [Thread-154929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:47:21.734 [INFO] [Thread-154929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] client lang: <none>
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] server lang: <none>
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] kex follows: False
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:47:21.737 [DEBUG] [Thread-154929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:47:21.738 [DEBUG] [Thread-154929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:47:21.738 [DEBUG] [Thread-154929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:47:21.738 [DEBUG] [Thread-154929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:47:21.738 [DEBUG] [Thread-154929] [transport.py] [_log()] Compression: none
2025-09-29T11:47:21.738 [DEBUG] [Thread-154929] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:47:21.754 [DEBUG] [Thread-154929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:47:21.754 [DEBUG] [Thread-154929] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:47:21.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:47:21.755 [DEBUG] [Thread-154929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:47:21.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:47:21.756 [DEBUG] [Thread-154929] [transport.py] [_log()] userauth is OK
2025-09-29T11:47:21.756 [DEBUG] [Thread-154929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:47:21.757 [DEBUG] [Thread-154929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:47:21.757 [DEBUG] [Thread-154929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:47:21.757 [DEBUG] [Thread-154929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:47:21.770 [INFO] [Thread-154929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:47:21.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:47:22.405 [DEBUG] [Thread-154929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:47:22.405 [DEBUG] [Thread-154929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:47:22.405 [DEBUG] [Thread-154929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:47:22.446 [DEBUG] [Thread-154929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:47:22.446 [DEBUG] [Thread-154929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:47:22.449 [DEBUG] [Thread-154929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:47:22.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:47:22.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:47:22.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:47:22.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:47:22.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:47:22.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:47:22.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:47:22.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:47:22.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:47:22.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.407710 -999.00  +12.20  11.90     53   +3.10 1 1 1 1 1   888    0 9.84 35.47 ----- 10.4 11.9 168.2 17.4 20.6 -24.7 19.2 -24.9 19.1 -23.3 20.4 -25.2
2025-09-29T11:47:22.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:47:22.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:47:22.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.407710
2025-09-29T11:47:22.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:47:22.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:47:22.474 [DEBUG] [Thread-154929] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:22.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:47:22.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:47:22.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:47:22.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:46:47', tmtdew=10.54, humidity=48.35, cloud=0.0, wind=21.72, temperature=12.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:47:06.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:47:22.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:47:22.566 [DEBUG] [Thread-154932] [transport.py] [_log()] starting thread (client mode): 0x2b9c0940
2025-09-29T11:47:22.566 [DEBUG] [Thread-154932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:47:22.581 [DEBUG] [Thread-154932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:47:22.581 [INFO] [Thread-154932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:47:22.589 [DEBUG] [Thread-154932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:47:22.589 [DEBUG] [Thread-154932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:47:22.589 [DEBUG] [Thread-154932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:47:22.589 [DEBUG] [Thread-154932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:22.589 [DEBUG] [Thread-154932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:22.589 [DEBUG] [Thread-154932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:22.589 [DEBUG] [Thread-154932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:22.589 [DEBUG] [Thread-154932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] client lang: <none>
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] server lang: <none>
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] kex follows: False
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:47:22.590 [DEBUG] [Thread-154932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:47:22.591 [DEBUG] [Thread-154932] [transport.py] [_log()] Compression: none
2025-09-29T11:47:22.591 [DEBUG] [Thread-154932] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:47:22.647 [DEBUG] [Thread-154932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:47:22.647 [DEBUG] [Thread-154932] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:47:22.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:47:22.648 [DEBUG] [Thread-154932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:47:22.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:47:22.703 [DEBUG] [Thread-154932] [transport.py] [_log()] userauth is OK
2025-09-29T11:47:22.703 [DEBUG] [Thread-154932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:47:22.703 [DEBUG] [Thread-154932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:47:22.703 [DEBUG] [Thread-154932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:47:22.703 [DEBUG] [Thread-154932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:47:22.722 [INFO] [Thread-154932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:47:22.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:47:22.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:47:23.655 [DEBUG] [Thread-154932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:47:23.656 [DEBUG] [Thread-154932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:47:23.704 [DEBUG] [Thread-154932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:47:23.704 [DEBUG] [Thread-154932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:47:23.713 [DEBUG] [Thread-154932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:47:23.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:47:23.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:47:23.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:47:23.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:47:23.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:47:23.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:47:23.746 [DEBUG] [Thread-154932] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:23.875 [DEBUG] [Thread-154934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:47:33.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:47:33.749 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:47:33.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:47:34.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 47, 19), 10.54, 48.32, 0.0, 19.62, 12.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:47:34.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:47:19
2025-09-29T11:47:34.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:47:34.622 [DEBUG] [Thread-154935] [transport.py] [_log()] starting thread (client mode): 0x2e34b550
2025-09-29T11:47:34.623 [DEBUG] [Thread-154935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:47:34.643 [DEBUG] [Thread-154935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:47:34.643 [INFO] [Thread-154935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:47:34.646 [DEBUG] [Thread-154935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] client lang: <none>
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] server lang: <none>
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] kex follows: False
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:47:34.647 [DEBUG] [Thread-154935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:47:34.648 [DEBUG] [Thread-154935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:47:34.648 [DEBUG] [Thread-154935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:47:34.648 [DEBUG] [Thread-154935] [transport.py] [_log()] Compression: none
2025-09-29T11:47:34.648 [DEBUG] [Thread-154935] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:47:34.665 [DEBUG] [Thread-154935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:47:34.666 [DEBUG] [Thread-154935] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:47:34.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:47:34.666 [DEBUG] [Thread-154935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:47:34.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:47:34.668 [DEBUG] [Thread-154935] [transport.py] [_log()] userauth is OK
2025-09-29T11:47:34.668 [DEBUG] [Thread-154935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:47:34.668 [DEBUG] [Thread-154935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:47:34.668 [DEBUG] [Thread-154935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:47:34.668 [DEBUG] [Thread-154935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:47:34.691 [INFO] [Thread-154935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:47:34.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:47:35.511 [DEBUG] [Thread-154935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:47:35.511 [DEBUG] [Thread-154935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:47:35.511 [DEBUG] [Thread-154935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:47:35.552 [DEBUG] [Thread-154935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:47:35.552 [DEBUG] [Thread-154935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:47:35.555 [DEBUG] [Thread-154935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:47:35.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:47:35.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:47:35.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:47:35.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:47:35.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:47:35.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:47:35.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:47:35.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:47:35.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:47:35.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.407710 -999.00  +12.20  11.90     53   +3.10 1 1 1 1 1   888    0 9.84 35.47 ----- 10.4 11.9 168.2 17.4 20.6 -24.7 19.2 -24.9 19.1 -23.3 20.4 -25.2
2025-09-29T11:47:35.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:47:35.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:47:35.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.407710
2025-09-29T11:47:35.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:47:35.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:47:35.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:47:35.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:47:35.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:47:35.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:47:19', tmtdew=10.54, humidity=48.32, cloud=0.0, wind=19.62, temperature=12.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:47:06.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:47:35.578 [DEBUG] [Thread-154935] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:35.660 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:47:35.670 [DEBUG] [Thread-154938] [transport.py] [_log()] starting thread (client mode): 0x2b96e0e0
2025-09-29T11:47:35.670 [DEBUG] [Thread-154938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:47:35.691 [DEBUG] [Thread-154938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:47:35.691 [INFO] [Thread-154938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:47:35.698 [DEBUG] [Thread-154938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] client lang: <none>
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] server lang: <none>
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] kex follows: False
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:47:35.699 [DEBUG] [Thread-154938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:47:35.700 [DEBUG] [Thread-154938] [transport.py] [_log()] Compression: none
2025-09-29T11:47:35.700 [DEBUG] [Thread-154938] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:47:35.758 [DEBUG] [Thread-154938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:47:35.759 [DEBUG] [Thread-154938] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:47:35.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:47:35.759 [DEBUG] [Thread-154938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:47:35.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:47:35.816 [DEBUG] [Thread-154938] [transport.py] [_log()] userauth is OK
2025-09-29T11:47:35.816 [DEBUG] [Thread-154938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:47:35.816 [DEBUG] [Thread-154938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:47:35.816 [DEBUG] [Thread-154938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:47:35.816 [DEBUG] [Thread-154938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:47:35.835 [INFO] [Thread-154938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:47:35.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:47:35.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:47:36.782 [DEBUG] [Thread-154938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:47:36.782 [DEBUG] [Thread-154938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:47:36.830 [DEBUG] [Thread-154938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:47:36.830 [DEBUG] [Thread-154938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:47:36.838 [DEBUG] [Thread-154938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:47:36.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:47:36.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:47:36.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:47:36.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:47:36.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:47:36.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:47:36.871 [DEBUG] [Thread-154938] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:36.981 [DEBUG] [Thread-154940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:47:38.923 [DEBUG] [Thread-154941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:47:41.471 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:47:41.472 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:47:46.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:47:46.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:47:46.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:47:47.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 47, 19), 10.54, 48.32, 0.0, 19.62, 12.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:47:47.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:47:19
2025-09-29T11:47:47.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:47:47.771 [DEBUG] [Thread-154942] [transport.py] [_log()] starting thread (client mode): 0x2b96de40
2025-09-29T11:47:47.771 [DEBUG] [Thread-154942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:47:47.791 [DEBUG] [Thread-154942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:47:47.791 [INFO] [Thread-154942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] client lang: <none>
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] server lang: <none>
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] kex follows: False
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] Compression: none
2025-09-29T11:47:47.794 [DEBUG] [Thread-154942] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:47:47.808 [DEBUG] [Thread-154942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:47:47.809 [DEBUG] [Thread-154942] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:47:47.809 [DEBUG] [Thread-154942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:47:47.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:47:47.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:47:47.809 [DEBUG] [Thread-154942] [transport.py] [_log()] userauth is OK
2025-09-29T11:47:47.810 [DEBUG] [Thread-154942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:47:47.810 [DEBUG] [Thread-154942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:47:47.810 [DEBUG] [Thread-154942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:47:47.810 [DEBUG] [Thread-154942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:47:47.825 [INFO] [Thread-154942] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:47:47.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:47:48.566 [DEBUG] [Thread-154942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:47:48.566 [DEBUG] [Thread-154942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:47:48.567 [DEBUG] [Thread-154942] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:47:48.607 [DEBUG] [Thread-154942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:47:48.607 [DEBUG] [Thread-154942] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:47:48.608 [DEBUG] [Thread-154942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:47:48.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:47:48.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:47:48.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:47:48.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:47:48.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:47:48.622 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:47:48.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.407710 -999.00  +12.20  11.90     53   +3.10 1 1 1 1 1   888    0 9.84 35.47 ----- 10.4 11.9 168.2 17.4 20.6 -24.7 19.2 -24.9 19.1 -23.3 20.4 -25.2
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.407710
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:47:48.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:47:19', tmtdew=10.54, humidity=48.32, cloud=0.0, wind=19.62, temperature=12.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:47:06.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:47:48.622 [DEBUG] [Thread-154942] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:48.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:47:48.704 [DEBUG] [Thread-154945] [transport.py] [_log()] starting thread (client mode): 0x2e349570
2025-09-29T11:47:48.704 [DEBUG] [Thread-154945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:47:48.718 [DEBUG] [Thread-154945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:47:48.718 [INFO] [Thread-154945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] client lang: <none>
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] server lang: <none>
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] kex follows: False
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] Compression: none
2025-09-29T11:47:48.726 [DEBUG] [Thread-154945] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:47:48.786 [DEBUG] [Thread-154945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:47:48.786 [DEBUG] [Thread-154945] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:47:48.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:47:48.787 [DEBUG] [Thread-154945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:47:48.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:47:48.842 [DEBUG] [Thread-154945] [transport.py] [_log()] userauth is OK
2025-09-29T11:47:48.843 [DEBUG] [Thread-154945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:47:48.843 [DEBUG] [Thread-154945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:47:48.843 [DEBUG] [Thread-154945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:47:48.843 [DEBUG] [Thread-154945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:47:48.861 [INFO] [Thread-154945] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:47:48.862 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:47:48.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:47:49.827 [DEBUG] [Thread-154945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:47:49.827 [DEBUG] [Thread-154945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:47:49.875 [DEBUG] [Thread-154945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:47:49.875 [DEBUG] [Thread-154945] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:47:49.885 [DEBUG] [Thread-154945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:47:49.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:47:49.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:47:49.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:47:49.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:47:49.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:47:49.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:47:49.919 [DEBUG] [Thread-154945] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:47:53.964 [DEBUG] [Thread-154947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:47:59.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:47:59.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:47:59.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:48:00.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 47, 51), 10.19, 49.65, 0.0, 15.93, 12.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:48:00.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:47:51
2025-09-29T11:48:00.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:48:00.794 [DEBUG] [Thread-154948] [transport.py] [_log()] starting thread (client mode): 0x2e34b7c0
2025-09-29T11:48:00.794 [DEBUG] [Thread-154948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:00.815 [DEBUG] [Thread-154948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:48:00.815 [INFO] [Thread-154948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:00.818 [DEBUG] [Thread-154948] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] Compression: none
2025-09-29T11:48:00.819 [DEBUG] [Thread-154948] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:00.838 [DEBUG] [Thread-154948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:00.839 [DEBUG] [Thread-154948] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:00.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:48:00.840 [DEBUG] [Thread-154948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:48:00.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:00.841 [DEBUG] [Thread-154948] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:00.842 [DEBUG] [Thread-154948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:00.842 [DEBUG] [Thread-154948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:00.842 [DEBUG] [Thread-154948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:48:00.842 [DEBUG] [Thread-154948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:00.866 [INFO] [Thread-154948] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:00.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:01.489 [DEBUG] [Thread-154948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:01.490 [DEBUG] [Thread-154948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:01.490 [DEBUG] [Thread-154948] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:48:01.530 [DEBUG] [Thread-154948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:01.530 [DEBUG] [Thread-154948] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:01.533 [DEBUG] [Thread-154948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:01.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:01.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:48:01.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:48:01.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:48:01.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:01.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:48:01.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:01.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:01.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:48:01.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.408057 -999.00  +12.50   9.27     54   +3.50 1 1 1 1 1   888    0 9.74 33.17 ----- 8.2 9.3 149.6 13.9 20.7 -25.0 19.2 -23.5 19.2 -23.1 20.6 -24.6
2025-09-29T11:48:01.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:48:01.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:48:01.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.408057
2025-09-29T11:48:01.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:48:01.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:48:01.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:48:01.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:48:01.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:48:01.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:47:51', tmtdew=10.19, humidity=49.65, cloud=0.0, wind=15.93, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:47:36.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:48:01.557 [DEBUG] [Thread-154948] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:01.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:48:01.652 [DEBUG] [Thread-154951] [transport.py] [_log()] starting thread (client mode): 0x2b9c1630
2025-09-29T11:48:01.652 [DEBUG] [Thread-154951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:01.667 [DEBUG] [Thread-154951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:48:01.667 [INFO] [Thread-154951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:01.674 [DEBUG] [Thread-154951] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:01.675 [DEBUG] [Thread-154951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:01.675 [DEBUG] [Thread-154951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:01.675 [DEBUG] [Thread-154951] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:01.675 [DEBUG] [Thread-154951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:01.675 [DEBUG] [Thread-154951] [transport.py] [_log()] Compression: none
2025-09-29T11:48:01.675 [DEBUG] [Thread-154951] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:01.734 [DEBUG] [Thread-154951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:01.734 [DEBUG] [Thread-154951] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:01.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:48:01.735 [DEBUG] [Thread-154951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:48:01.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:01.790 [DEBUG] [Thread-154951] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:01.791 [DEBUG] [Thread-154951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:01.791 [DEBUG] [Thread-154951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:01.791 [DEBUG] [Thread-154951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:48:01.791 [DEBUG] [Thread-154951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:01.814 [INFO] [Thread-154951] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:01.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:48:01.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:02.786 [DEBUG] [Thread-154951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:02.786 [DEBUG] [Thread-154951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:02.834 [DEBUG] [Thread-154951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:02.834 [DEBUG] [Thread-154951] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:02.843 [DEBUG] [Thread-154951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:02.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:02.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:48:02.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:48:02.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:02.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:02.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:02.876 [DEBUG] [Thread-154951] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:08.994 [DEBUG] [Thread-154953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:48:12.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:48:12.879 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:48:12.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:48:13.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 47, 51), 10.19, 49.65, 0.0, 15.93, 12.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:48:13.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:47:51
2025-09-29T11:48:13.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:48:13.734 [DEBUG] [Thread-154954] [transport.py] [_log()] starting thread (client mode): 0x2b9557e0
2025-09-29T11:48:13.734 [DEBUG] [Thread-154954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:13.755 [DEBUG] [Thread-154954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:48:13.755 [INFO] [Thread-154954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:48:13.759 [DEBUG] [Thread-154954] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:13.759 [DEBUG] [Thread-154954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:48:13.759 [DEBUG] [Thread-154954] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:13.759 [DEBUG] [Thread-154954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:13.759 [DEBUG] [Thread-154954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:13.759 [DEBUG] [Thread-154954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:13.759 [DEBUG] [Thread-154954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:13.759 [DEBUG] [Thread-154954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] Compression: none
2025-09-29T11:48:13.760 [DEBUG] [Thread-154954] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:13.781 [DEBUG] [Thread-154954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:13.782 [DEBUG] [Thread-154954] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:13.782 [DEBUG] [Thread-154954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:48:13.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:48:13.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:13.784 [DEBUG] [Thread-154954] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:13.784 [DEBUG] [Thread-154954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:13.784 [DEBUG] [Thread-154954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:13.784 [DEBUG] [Thread-154954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:48:13.784 [DEBUG] [Thread-154954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:13.810 [INFO] [Thread-154954] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:13.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:14.603 [DEBUG] [Thread-154954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:14.603 [DEBUG] [Thread-154954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:14.603 [DEBUG] [Thread-154954] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:48:14.644 [DEBUG] [Thread-154954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:14.644 [DEBUG] [Thread-154954] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:14.647 [DEBUG] [Thread-154954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:14.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:14.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:48:14.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:48:14.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:48:14.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:14.669 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:48:14.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:14.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:48:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.408057 -999.00  +12.50   9.27     54   +3.50 1 1 1 1 1   888    0 9.74 33.17 ----- 8.2 9.3 149.6 13.9 20.7 -25.0 19.2 -23.5 19.2 -23.1 20.6 -24.6
2025-09-29T11:48:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:48:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:48:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.408057
2025-09-29T11:48:14.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:48:14.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:48:14.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:48:14.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:48:14.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:48:14.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:47:51', tmtdew=10.19, humidity=49.65, cloud=0.0, wind=15.93, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:47:36.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:48:14.672 [DEBUG] [Thread-154954] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:14.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:48:14.777 [DEBUG] [Thread-154957] [transport.py] [_log()] starting thread (client mode): 0x2b91d3f0
2025-09-29T11:48:14.777 [DEBUG] [Thread-154957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:14.792 [DEBUG] [Thread-154957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:48:14.793 [INFO] [Thread-154957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:48:14.800 [DEBUG] [Thread-154957] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] Compression: none
2025-09-29T11:48:14.801 [DEBUG] [Thread-154957] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:14.857 [DEBUG] [Thread-154957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:14.858 [DEBUG] [Thread-154957] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:14.858 [DEBUG] [Thread-154957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:48:14.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:48:14.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:14.914 [DEBUG] [Thread-154957] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:14.914 [DEBUG] [Thread-154957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:14.914 [DEBUG] [Thread-154957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:14.914 [DEBUG] [Thread-154957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:48:14.914 [DEBUG] [Thread-154957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:14.934 [INFO] [Thread-154957] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:14.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:48:14.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:15.879 [DEBUG] [Thread-154957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:15.879 [DEBUG] [Thread-154957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:15.927 [DEBUG] [Thread-154957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:15.927 [DEBUG] [Thread-154957] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:15.936 [DEBUG] [Thread-154957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:15.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:15.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:48:15.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:48:15.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:15.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:15.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:15.971 [DEBUG] [Thread-154957] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:24.036 [DEBUG] [Thread-154959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:48:25.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:48:25.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:48:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:48:26.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 48, 23), 10.39, 49.05, 0.0, 19.96, 12.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:48:26.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:48:23
2025-09-29T11:48:26.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:48:26.856 [DEBUG] [Thread-154960] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d10
2025-09-29T11:48:26.856 [DEBUG] [Thread-154960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:26.873 [DEBUG] [Thread-154960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:48:26.873 [INFO] [Thread-154960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:48:26.875 [DEBUG] [Thread-154960] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:26.875 [DEBUG] [Thread-154960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:48:26.875 [DEBUG] [Thread-154960] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:26.875 [DEBUG] [Thread-154960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:26.875 [DEBUG] [Thread-154960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:26.875 [DEBUG] [Thread-154960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:26.875 [DEBUG] [Thread-154960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:26.875 [DEBUG] [Thread-154960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] Compression: none
2025-09-29T11:48:26.876 [DEBUG] [Thread-154960] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:26.886 [DEBUG] [Thread-154960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:26.887 [DEBUG] [Thread-154960] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:26.887 [DEBUG] [Thread-154960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:48:26.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:48:26.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:26.888 [DEBUG] [Thread-154960] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:26.889 [DEBUG] [Thread-154960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:26.889 [DEBUG] [Thread-154960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:26.889 [DEBUG] [Thread-154960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:48:26.889 [DEBUG] [Thread-154960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:26.911 [INFO] [Thread-154960] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:26.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:27.554 [DEBUG] [Thread-154960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:27.555 [DEBUG] [Thread-154960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:27.555 [DEBUG] [Thread-154960] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:48:27.595 [DEBUG] [Thread-154960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:27.596 [DEBUG] [Thread-154960] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:27.599 [DEBUG] [Thread-154960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:27.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:27.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:48:27.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:48:27.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:48:27.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:27.621 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:48:27.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:27.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:27.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:48:27.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.408405 -999.00  +12.70  14.57     54   +3.70 1 1 1 1 1   888    0 9.78 31.18 ----- 15.9 14.6 195.8 17.1 20.8 -24.7 19.3 -24.1 19.3 -24.4 20.6 -25.8
2025-09-29T11:48:27.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:48:27.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:48:27.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.408405
2025-09-29T11:48:27.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:48:27.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:48:27.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:48:27.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:48:27.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:48:27.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:48:23', tmtdew=10.39, humidity=49.05, cloud=0.0, wind=19.96, temperature=12.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:48:06.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:48:27.625 [DEBUG] [Thread-154960] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:27.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:48:27.724 [DEBUG] [Thread-154963] [transport.py] [_log()] starting thread (client mode): 0x2b91f280
2025-09-29T11:48:27.724 [DEBUG] [Thread-154963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:27.739 [DEBUG] [Thread-154963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:48:27.739 [INFO] [Thread-154963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:48:27.746 [DEBUG] [Thread-154963] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:27.746 [DEBUG] [Thread-154963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] Compression: none
2025-09-29T11:48:27.747 [DEBUG] [Thread-154963] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:27.805 [DEBUG] [Thread-154963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:27.806 [DEBUG] [Thread-154963] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:27.806 [DEBUG] [Thread-154963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:48:27.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:48:27.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:27.862 [DEBUG] [Thread-154963] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:27.862 [DEBUG] [Thread-154963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:27.862 [DEBUG] [Thread-154963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:27.862 [DEBUG] [Thread-154963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:48:27.862 [DEBUG] [Thread-154963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:27.880 [INFO] [Thread-154963] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:27.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:48:27.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:28.818 [DEBUG] [Thread-154963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:28.819 [DEBUG] [Thread-154963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:28.866 [DEBUG] [Thread-154963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:28.866 [DEBUG] [Thread-154963] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:28.875 [DEBUG] [Thread-154963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:28.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:28.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:48:28.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:48:28.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:28.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:28.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:28.914 [DEBUG] [Thread-154963] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:37.048 [DEBUG] [Thread-154965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:48:38.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:48:38.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:48:38.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:48:39.063 [DEBUG] [Thread-154966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:48:39.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 48, 23), 10.39, 49.05, 0.0, 19.96, 12.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:48:39.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:48:23
2025-09-29T11:48:39.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:48:39.762 [DEBUG] [Thread-154967] [transport.py] [_log()] starting thread (client mode): 0x2b957370
2025-09-29T11:48:39.762 [DEBUG] [Thread-154967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:39.785 [DEBUG] [Thread-154967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:48:39.785 [INFO] [Thread-154967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:39.788 [DEBUG] [Thread-154967] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:39.789 [DEBUG] [Thread-154967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:39.789 [DEBUG] [Thread-154967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:39.789 [DEBUG] [Thread-154967] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:39.789 [DEBUG] [Thread-154967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:39.789 [DEBUG] [Thread-154967] [transport.py] [_log()] Compression: none
2025-09-29T11:48:39.789 [DEBUG] [Thread-154967] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:39.806 [DEBUG] [Thread-154967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:39.806 [DEBUG] [Thread-154967] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:39.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:48:39.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:39.808 [DEBUG] [Thread-154967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:48:39.809 [DEBUG] [Thread-154967] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:39.809 [DEBUG] [Thread-154967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:39.809 [DEBUG] [Thread-154967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:39.809 [DEBUG] [Thread-154967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:48:39.810 [DEBUG] [Thread-154967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:39.844 [INFO] [Thread-154967] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:39.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:40.608 [DEBUG] [Thread-154967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:40.609 [DEBUG] [Thread-154967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:40.609 [DEBUG] [Thread-154967] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:48:40.649 [DEBUG] [Thread-154967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:40.649 [DEBUG] [Thread-154967] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:40.652 [DEBUG] [Thread-154967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:40.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:40.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:48:40.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:48:40.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:48:40.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:40.671 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:48:40.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:40.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:40.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:48:40.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.408405 -999.00  +12.70  14.57     54   +3.70 1 1 1 1 1   888    0 9.78 31.18 ----- 15.9 14.6 195.8 17.1 20.8 -24.7 19.3 -24.1 19.3 -24.4 20.6 -25.8
2025-09-29T11:48:40.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:48:40.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:48:40.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.408405
2025-09-29T11:48:40.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:48:40.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:48:40.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:48:40.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:48:40.673 [DEBUG] [Thread-154967] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:40.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:48:40.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:48:23', tmtdew=10.39, humidity=49.05, cloud=0.0, wind=19.96, temperature=12.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:48:06.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:48:40.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:48:40.767 [DEBUG] [Thread-154970] [transport.py] [_log()] starting thread (client mode): 0x2b94ed10
2025-09-29T11:48:40.767 [DEBUG] [Thread-154970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:40.782 [DEBUG] [Thread-154970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:48:40.782 [INFO] [Thread-154970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:48:40.790 [DEBUG] [Thread-154970] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:40.791 [DEBUG] [Thread-154970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:48:40.791 [DEBUG] [Thread-154970] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:40.791 [DEBUG] [Thread-154970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:40.791 [DEBUG] [Thread-154970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:40.791 [DEBUG] [Thread-154970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:40.791 [DEBUG] [Thread-154970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:40.791 [DEBUG] [Thread-154970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:40.791 [DEBUG] [Thread-154970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:40.792 [DEBUG] [Thread-154970] [transport.py] [_log()] Compression: none
2025-09-29T11:48:40.793 [DEBUG] [Thread-154970] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:40.850 [DEBUG] [Thread-154970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:40.850 [DEBUG] [Thread-154970] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:40.850 [DEBUG] [Thread-154970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:48:40.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:48:40.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:40.905 [DEBUG] [Thread-154970] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:40.906 [DEBUG] [Thread-154970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:40.906 [DEBUG] [Thread-154970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:40.906 [DEBUG] [Thread-154970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:48:40.906 [DEBUG] [Thread-154970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:40.925 [INFO] [Thread-154970] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:40.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:48:40.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:41.613 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:48:41.615 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:48:41.865 [DEBUG] [Thread-154970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:41.865 [DEBUG] [Thread-154970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:41.913 [DEBUG] [Thread-154970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:41.914 [DEBUG] [Thread-154970] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:41.923 [DEBUG] [Thread-154970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:41.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:41.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:48:41.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:48:41.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:41.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:41.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:41.958 [DEBUG] [Thread-154970] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:51.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:48:51.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:48:51.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:48:52.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 48, 23), 10.39, 49.05, 0.0, 19.96, 12.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:48:52.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:48:23
2025-09-29T11:48:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:48:52.814 [DEBUG] [Thread-154972] [transport.py] [_log()] starting thread (client mode): 0x2e3c2a10
2025-09-29T11:48:52.814 [DEBUG] [Thread-154972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:52.834 [DEBUG] [Thread-154972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:48:52.834 [INFO] [Thread-154972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:48:52.837 [DEBUG] [Thread-154972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:52.838 [DEBUG] [Thread-154972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:52.839 [DEBUG] [Thread-154972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:52.839 [DEBUG] [Thread-154972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:52.839 [DEBUG] [Thread-154972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:52.839 [DEBUG] [Thread-154972] [transport.py] [_log()] Compression: none
2025-09-29T11:48:52.839 [DEBUG] [Thread-154972] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:52.856 [DEBUG] [Thread-154972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:52.857 [DEBUG] [Thread-154972] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:52.857 [DEBUG] [Thread-154972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:48:52.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:48:52.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:52.859 [DEBUG] [Thread-154972] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:52.859 [DEBUG] [Thread-154972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:52.859 [DEBUG] [Thread-154972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:52.859 [DEBUG] [Thread-154972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:48:52.859 [DEBUG] [Thread-154972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:52.883 [INFO] [Thread-154972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:52.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:53.732 [DEBUG] [Thread-154972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:53.733 [DEBUG] [Thread-154972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:53.733 [DEBUG] [Thread-154972] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:48:53.773 [DEBUG] [Thread-154972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:53.773 [DEBUG] [Thread-154972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:53.776 [DEBUG] [Thread-154972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:53.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:53.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:48:53.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:48:53.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:48:53.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:53.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:48:53.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:53.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:53.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:48:53.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.408405 -999.00  +12.70  14.57     54   +3.70 1 1 1 1 1   888    0 9.78 31.18 ----- 15.9 14.6 195.8 17.1 20.8 -24.7 19.3 -24.1 19.3 -24.4 20.6 -25.8
2025-09-29T11:48:53.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:48:53.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:48:53.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.408405
2025-09-29T11:48:53.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:48:53.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:48:53.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:48:53.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:48:53.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:48:53.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:48:23', tmtdew=10.39, humidity=49.05, cloud=0.0, wind=19.96, temperature=12.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:48:06.192', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:48:53.801 [DEBUG] [Thread-154972] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:48:53.885 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:48:53.895 [DEBUG] [Thread-154975] [transport.py] [_log()] starting thread (client mode): 0x2b96e0e0
2025-09-29T11:48:53.895 [DEBUG] [Thread-154975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:48:53.910 [DEBUG] [Thread-154975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:48:53.910 [INFO] [Thread-154975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:48:53.918 [DEBUG] [Thread-154975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] client lang: <none>
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] server lang: <none>
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] kex follows: False
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] Compression: none
2025-09-29T11:48:53.919 [DEBUG] [Thread-154975] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:48:53.977 [DEBUG] [Thread-154975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:48:53.978 [DEBUG] [Thread-154975] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:48:53.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:48:53.979 [DEBUG] [Thread-154975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:48:53.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:48:54.033 [DEBUG] [Thread-154975] [transport.py] [_log()] userauth is OK
2025-09-29T11:48:54.033 [DEBUG] [Thread-154975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:48:54.034 [DEBUG] [Thread-154975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:48:54.034 [DEBUG] [Thread-154975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:48:54.034 [DEBUG] [Thread-154975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:48:54.053 [INFO] [Thread-154975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:48:54.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:48:54.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:48:54.101 [DEBUG] [Thread-154977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:48:54.999 [DEBUG] [Thread-154975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:48:54.999 [DEBUG] [Thread-154975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:48:55.047 [DEBUG] [Thread-154975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:48:55.047 [DEBUG] [Thread-154975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:48:55.056 [DEBUG] [Thread-154975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:48:55.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:48:55.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:48:55.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:48:55.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:48:55.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:48:55.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:48:55.093 [DEBUG] [Thread-154975] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:05.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:49:05.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:49:05.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:49:05.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 48, 55), 10.47, 49.14, 0.0, 16.04, 12.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:49:05.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:48:55
2025-09-29T11:49:05.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:49:05.967 [DEBUG] [Thread-154978] [transport.py] [_log()] starting thread (client mode): 0x2e348bb0
2025-09-29T11:49:05.967 [DEBUG] [Thread-154978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:05.990 [DEBUG] [Thread-154978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:49:05.990 [INFO] [Thread-154978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:49:05.994 [DEBUG] [Thread-154978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:05.994 [DEBUG] [Thread-154978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:49:05.994 [DEBUG] [Thread-154978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:05.994 [DEBUG] [Thread-154978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:05.994 [DEBUG] [Thread-154978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:05.994 [DEBUG] [Thread-154978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:05.995 [DEBUG] [Thread-154978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:05.996 [DEBUG] [Thread-154978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:05.996 [DEBUG] [Thread-154978] [transport.py] [_log()] Compression: none
2025-09-29T11:49:05.996 [DEBUG] [Thread-154978] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:06.015 [DEBUG] [Thread-154978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:06.015 [DEBUG] [Thread-154978] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:06.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:49:06.016 [DEBUG] [Thread-154978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:49:06.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:06.018 [DEBUG] [Thread-154978] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:06.019 [DEBUG] [Thread-154978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:06.019 [DEBUG] [Thread-154978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:06.019 [DEBUG] [Thread-154978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:49:06.019 [DEBUG] [Thread-154978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:06.043 [INFO] [Thread-154978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:06.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:06.719 [DEBUG] [Thread-154978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:06.719 [DEBUG] [Thread-154978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:06.719 [DEBUG] [Thread-154978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:49:06.760 [DEBUG] [Thread-154978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:06.761 [DEBUG] [Thread-154978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:06.763 [DEBUG] [Thread-154978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:06.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:06.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:49:06.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:49:06.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:49:06.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:06.786 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:49:06.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:06.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:06.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:49:06.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.408752 -999.00  +12.70  15.50     53   +3.40 1 1 1 1 1   888    0 9.68 30.22 ----- 11.4 15.5 176.2 19.0 20.7 -25.2 19.0 -29.3 19.2 -24.6 20.5 -26.1
2025-09-29T11:49:06.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:49:06.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:49:06.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.408752
2025-09-29T11:49:06.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:49:06.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:49:06.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:49:06.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:49:06.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:49:06.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:48:55', tmtdew=10.47, humidity=49.14, cloud=0.0, wind=16.04, temperature=12.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:48:36.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:49:06.789 [DEBUG] [Thread-154978] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:06.873 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:49:06.884 [DEBUG] [Thread-154981] [transport.py] [_log()] starting thread (client mode): 0x2e349450
2025-09-29T11:49:06.884 [DEBUG] [Thread-154981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:06.900 [DEBUG] [Thread-154981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:49:06.900 [INFO] [Thread-154981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] Compression: none
2025-09-29T11:49:06.908 [DEBUG] [Thread-154981] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:06.965 [DEBUG] [Thread-154981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:06.965 [DEBUG] [Thread-154981] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:06.965 [DEBUG] [Thread-154981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:49:06.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:49:06.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:07.021 [DEBUG] [Thread-154981] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:07.021 [DEBUG] [Thread-154981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:07.021 [DEBUG] [Thread-154981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:07.021 [DEBUG] [Thread-154981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:49:07.021 [DEBUG] [Thread-154981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:07.041 [INFO] [Thread-154981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:07.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:49:07.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:08.024 [DEBUG] [Thread-154981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:08.024 [DEBUG] [Thread-154981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:08.072 [DEBUG] [Thread-154981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:08.073 [DEBUG] [Thread-154981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:08.084 [DEBUG] [Thread-154981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:08.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:08.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:49:08.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:49:08.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:08.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:08.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:08.119 [DEBUG] [Thread-154981] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:09.130 [DEBUG] [Thread-154983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:49:18.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:49:18.121 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:49:18.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:49:18.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 48, 55), 10.47, 49.14, 0.0, 16.04, 12.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:49:18.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:48:55
2025-09-29T11:49:18.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:49:18.975 [DEBUG] [Thread-154984] [transport.py] [_log()] starting thread (client mode): 0x2b96d3c0
2025-09-29T11:49:18.975 [DEBUG] [Thread-154984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:18.988 [DEBUG] [Thread-154984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:49:18.988 [INFO] [Thread-154984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:18.990 [DEBUG] [Thread-154984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:18.991 [DEBUG] [Thread-154984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:18.991 [DEBUG] [Thread-154984] [transport.py] [_log()] Compression: none
2025-09-29T11:49:18.991 [DEBUG] [Thread-154984] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:18.998 [DEBUG] [Thread-154984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:18.998 [DEBUG] [Thread-154984] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:18.998 [DEBUG] [Thread-154984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:49:18.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:49:18.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:19.000 [DEBUG] [Thread-154984] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:19.000 [DEBUG] [Thread-154984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:19.000 [DEBUG] [Thread-154984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:19.000 [DEBUG] [Thread-154984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:49:19.000 [DEBUG] [Thread-154984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:19.013 [INFO] [Thread-154984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:19.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:19.793 [DEBUG] [Thread-154984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:19.794 [DEBUG] [Thread-154984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:19.794 [DEBUG] [Thread-154984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:49:19.834 [DEBUG] [Thread-154984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:19.834 [DEBUG] [Thread-154984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:19.837 [DEBUG] [Thread-154984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:19.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:19.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:49:19.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:49:19.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:49:19.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:19.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:49:19.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:19.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:19.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:49:19.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.408752 -999.00  +12.70  15.50     53   +3.40 1 1 1 1 1   888    0 9.68 30.22 ----- 11.4 15.5 176.2 19.0 20.7 -25.2 19.0 -29.3 19.2 -24.6 20.5 -26.1
2025-09-29T11:49:19.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:49:19.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:49:19.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.408752
2025-09-29T11:49:19.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:49:19.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:49:19.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:49:19.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:49:19.863 [DEBUG] [Thread-154984] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:19.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:49:19.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:48:55', tmtdew=10.47, humidity=49.14, cloud=0.0, wind=16.04, temperature=12.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:48:36.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:49:19.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:49:19.951 [DEBUG] [Thread-154987] [transport.py] [_log()] starting thread (client mode): 0x2e34b130
2025-09-29T11:49:19.952 [DEBUG] [Thread-154987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:19.967 [DEBUG] [Thread-154987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:49:19.967 [INFO] [Thread-154987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:19.974 [DEBUG] [Thread-154987] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] Compression: none
2025-09-29T11:49:19.975 [DEBUG] [Thread-154987] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:20.032 [DEBUG] [Thread-154987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:20.032 [DEBUG] [Thread-154987] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:20.033 [DEBUG] [Thread-154987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:49:20.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:49:20.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:20.089 [DEBUG] [Thread-154987] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:20.089 [DEBUG] [Thread-154987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:20.089 [DEBUG] [Thread-154987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:20.089 [DEBUG] [Thread-154987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:49:20.089 [DEBUG] [Thread-154987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:20.108 [INFO] [Thread-154987] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:20.108 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:49:20.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:21.064 [DEBUG] [Thread-154987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:21.064 [DEBUG] [Thread-154987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:21.112 [DEBUG] [Thread-154987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:21.113 [DEBUG] [Thread-154987] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:21.122 [DEBUG] [Thread-154987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:21.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:21.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:49:21.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:49:21.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:21.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:21.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:21.156 [DEBUG] [Thread-154987] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:24.176 [DEBUG] [Thread-154989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:49:31.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:49:31.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:49:31.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:49:31.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 49, 27), 10.47, 49.12, 0.0, 18.21, 12.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:49:31.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:49:27
2025-09-29T11:49:31.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:49:32.029 [DEBUG] [Thread-154990] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c60
2025-09-29T11:49:32.029 [DEBUG] [Thread-154990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:32.044 [DEBUG] [Thread-154990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:49:32.044 [INFO] [Thread-154990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:32.047 [DEBUG] [Thread-154990] [transport.py] [_log()] Compression: none
2025-09-29T11:49:32.048 [DEBUG] [Thread-154990] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:32.064 [DEBUG] [Thread-154990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:32.065 [DEBUG] [Thread-154990] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:32.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:49:32.066 [DEBUG] [Thread-154990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:49:32.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:32.069 [DEBUG] [Thread-154990] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:32.069 [DEBUG] [Thread-154990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:32.069 [DEBUG] [Thread-154990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:32.069 [DEBUG] [Thread-154990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:49:32.070 [DEBUG] [Thread-154990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:32.094 [INFO] [Thread-154990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:32.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:32.714 [DEBUG] [Thread-154990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:32.714 [DEBUG] [Thread-154990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:32.715 [DEBUG] [Thread-154990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:49:32.755 [DEBUG] [Thread-154990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:32.755 [DEBUG] [Thread-154990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:32.761 [DEBUG] [Thread-154990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:32.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:32.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:49:32.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:49:32.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:49:32.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:32.800 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:49:32.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:32.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:32.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:49:32.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.409099 -999.00  +12.70  14.80     53   +3.30 1 1 1 1 1   888    0 9.49 26.19 ----- 17.4 14.8 181.2 22.1 20.7 -25.5 19.0 -30.6 19.1 -26.3 20.5 -27.5
2025-09-29T11:49:32.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:49:32.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:49:32.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.409099
2025-09-29T11:49:32.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:49:32.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:49:32.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:49:32.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:49:32.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:49:32.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:49:27', tmtdew=10.47, humidity=49.12, cloud=0.0, wind=18.21, temperature=12.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:49:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:49:32.804 [DEBUG] [Thread-154990] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:32.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:49:32.898 [DEBUG] [Thread-154993] [transport.py] [_log()] starting thread (client mode): 0x2b96fe80
2025-09-29T11:49:32.899 [DEBUG] [Thread-154993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:32.913 [DEBUG] [Thread-154993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:49:32.913 [INFO] [Thread-154993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:49:32.920 [DEBUG] [Thread-154993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] Compression: none
2025-09-29T11:49:32.921 [DEBUG] [Thread-154993] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:32.980 [DEBUG] [Thread-154993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:32.981 [DEBUG] [Thread-154993] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:32.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:49:32.982 [DEBUG] [Thread-154993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:49:32.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:33.041 [DEBUG] [Thread-154993] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:33.041 [DEBUG] [Thread-154993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:33.042 [DEBUG] [Thread-154993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:33.042 [DEBUG] [Thread-154993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:49:33.042 [DEBUG] [Thread-154993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:33.061 [INFO] [Thread-154993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:33.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:49:33.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:34.024 [DEBUG] [Thread-154993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:34.024 [DEBUG] [Thread-154993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:34.072 [DEBUG] [Thread-154993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:34.072 [DEBUG] [Thread-154993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:34.081 [DEBUG] [Thread-154993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:34.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:34.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:49:34.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:49:34.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:34.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:34.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:34.117 [DEBUG] [Thread-154993] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:37.105 [DEBUG] [Thread-154995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:49:39.204 [DEBUG] [Thread-154996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:49:41.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:49:41.755 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:49:44.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:49:44.119 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:49:44.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:49:44.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 49, 27), 10.47, 49.12, 0.0, 18.21, 12.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:49:44.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:49:27
2025-09-29T11:49:44.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:49:44.990 [DEBUG] [Thread-154997] [transport.py] [_log()] starting thread (client mode): 0x2b96d8d0
2025-09-29T11:49:44.990 [DEBUG] [Thread-154997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:45.011 [DEBUG] [Thread-154997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:49:45.011 [INFO] [Thread-154997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:49:45.014 [DEBUG] [Thread-154997] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:45.014 [DEBUG] [Thread-154997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:49:45.014 [DEBUG] [Thread-154997] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:45.015 [DEBUG] [Thread-154997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:45.016 [DEBUG] [Thread-154997] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:45.016 [DEBUG] [Thread-154997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:45.016 [DEBUG] [Thread-154997] [transport.py] [_log()] Compression: none
2025-09-29T11:49:45.016 [DEBUG] [Thread-154997] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:45.037 [DEBUG] [Thread-154997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:45.038 [DEBUG] [Thread-154997] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:45.039 [DEBUG] [Thread-154997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:49:45.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:49:45.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:45.041 [DEBUG] [Thread-154997] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:45.041 [DEBUG] [Thread-154997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:45.041 [DEBUG] [Thread-154997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:45.041 [DEBUG] [Thread-154997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:49:45.041 [DEBUG] [Thread-154997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:45.061 [INFO] [Thread-154997] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:45.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:45.648 [DEBUG] [Thread-154997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:45.648 [DEBUG] [Thread-154997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:45.649 [DEBUG] [Thread-154997] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:49:45.688 [DEBUG] [Thread-154997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:45.689 [DEBUG] [Thread-154997] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:45.692 [DEBUG] [Thread-154997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:45.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:45.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:49:45.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:49:45.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:49:45.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:45.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:49:45.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:45.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:49:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.409099 -999.00  +12.70  14.80     53   +3.30 1 1 1 1 1   888    0 9.49 26.19 ----- 17.4 14.8 181.2 22.1 20.7 -25.5 19.0 -30.6 19.1 -26.3 20.5 -27.5
2025-09-29T11:49:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:49:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:49:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.409099
2025-09-29T11:49:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:49:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:49:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:49:45.717 [DEBUG] [Thread-154997] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:45.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:49:45.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:49:45.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:49:27', tmtdew=10.47, humidity=49.12, cloud=0.0, wind=18.21, temperature=12.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:49:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:49:45.803 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:49:45.814 [DEBUG] [Thread-155000] [transport.py] [_log()] starting thread (client mode): 0x2b91f910
2025-09-29T11:49:45.814 [DEBUG] [Thread-155000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:45.829 [DEBUG] [Thread-155000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:49:45.829 [INFO] [Thread-155000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:49:45.837 [DEBUG] [Thread-155000] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:45.837 [DEBUG] [Thread-155000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:49:45.837 [DEBUG] [Thread-155000] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:45.838 [DEBUG] [Thread-155000] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:45.839 [DEBUG] [Thread-155000] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:45.839 [DEBUG] [Thread-155000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:45.839 [DEBUG] [Thread-155000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:45.839 [DEBUG] [Thread-155000] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:45.839 [DEBUG] [Thread-155000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:45.839 [DEBUG] [Thread-155000] [transport.py] [_log()] Compression: none
2025-09-29T11:49:45.839 [DEBUG] [Thread-155000] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:45.897 [DEBUG] [Thread-155000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:45.898 [DEBUG] [Thread-155000] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:45.898 [DEBUG] [Thread-155000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:49:45.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:49:45.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:45.952 [DEBUG] [Thread-155000] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:45.953 [DEBUG] [Thread-155000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:45.953 [DEBUG] [Thread-155000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:45.953 [DEBUG] [Thread-155000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:49:45.953 [DEBUG] [Thread-155000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:45.972 [INFO] [Thread-155000] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:45.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:49:45.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:46.926 [DEBUG] [Thread-155000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:46.926 [DEBUG] [Thread-155000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:46.974 [DEBUG] [Thread-155000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:46.974 [DEBUG] [Thread-155000] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:46.984 [DEBUG] [Thread-155000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:46.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:46.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:49:47.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:49:47.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:47.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:47.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:47.018 [DEBUG] [Thread-155000] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:54.239 [DEBUG] [Thread-155002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:49:57.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:49:57.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:49:57.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:49:57.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 49, 27), 10.47, 49.12, 0.0, 18.21, 12.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:49:57.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:49:27
2025-09-29T11:49:57.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:49:57.878 [DEBUG] [Thread-155003] [transport.py] [_log()] starting thread (client mode): 0x2b91c670
2025-09-29T11:49:57.878 [DEBUG] [Thread-155003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:57.902 [DEBUG] [Thread-155003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:49:57.902 [INFO] [Thread-155003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] Compression: none
2025-09-29T11:49:57.906 [DEBUG] [Thread-155003] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:57.923 [DEBUG] [Thread-155003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:57.924 [DEBUG] [Thread-155003] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:57.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:49:57.925 [DEBUG] [Thread-155003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:49:57.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:57.927 [DEBUG] [Thread-155003] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:57.927 [DEBUG] [Thread-155003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:57.927 [DEBUG] [Thread-155003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:57.928 [DEBUG] [Thread-155003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:49:57.928 [DEBUG] [Thread-155003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:57.952 [INFO] [Thread-155003] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:57.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:58.573 [DEBUG] [Thread-155003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:58.573 [DEBUG] [Thread-155003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:58.573 [DEBUG] [Thread-155003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:49:58.614 [DEBUG] [Thread-155003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:58.615 [DEBUG] [Thread-155003] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:58.618 [DEBUG] [Thread-155003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:58.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:58.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:49:58.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:49:58.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:49:58.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:58.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:49:58.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:58.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:49:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.409099 -999.00  +12.70  14.80     53   +3.30 1 1 1 1 1   888    0 9.49 26.19 ----- 17.4 14.8 181.2 22.1 20.7 -25.5 19.0 -30.6 19.1 -26.3 20.5 -27.5
2025-09-29T11:49:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:49:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:49:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.409099
2025-09-29T11:49:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:49:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:49:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:49:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:49:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:49:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:49:27', tmtdew=10.47, humidity=49.12, cloud=0.0, wind=18.21, temperature=12.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:49:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:49:58.644 [DEBUG] [Thread-155003] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:49:58.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:49:58.738 [DEBUG] [Thread-155006] [transport.py] [_log()] starting thread (client mode): 0x2e3c0070
2025-09-29T11:49:58.738 [DEBUG] [Thread-155006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:49:58.752 [DEBUG] [Thread-155006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:49:58.752 [INFO] [Thread-155006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:49:58.760 [DEBUG] [Thread-155006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:49:58.760 [DEBUG] [Thread-155006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:49:58.760 [DEBUG] [Thread-155006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:49:58.760 [DEBUG] [Thread-155006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] client lang: <none>
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] server lang: <none>
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] kex follows: False
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] Compression: none
2025-09-29T11:49:58.761 [DEBUG] [Thread-155006] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:49:58.820 [DEBUG] [Thread-155006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:49:58.820 [DEBUG] [Thread-155006] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:49:58.821 [DEBUG] [Thread-155006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:49:58.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:49:58.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:49:58.876 [DEBUG] [Thread-155006] [transport.py] [_log()] userauth is OK
2025-09-29T11:49:58.876 [DEBUG] [Thread-155006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:49:58.876 [DEBUG] [Thread-155006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:49:58.877 [DEBUG] [Thread-155006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:49:58.877 [DEBUG] [Thread-155006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:49:58.899 [INFO] [Thread-155006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:49:58.900 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:49:58.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:49:59.875 [DEBUG] [Thread-155006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:49:59.875 [DEBUG] [Thread-155006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:49:59.923 [DEBUG] [Thread-155006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:49:59.923 [DEBUG] [Thread-155006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:49:59.931 [DEBUG] [Thread-155006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:49:59.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:49:59.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:49:59.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:49:59.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:49:59.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:49:59.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:49:59.964 [DEBUG] [Thread-155006] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:09.268 [DEBUG] [Thread-155008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:50:09.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:50:09.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:50:09.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:50:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 49, 58), 10.47, 48.99, 0.0, 22.07, 12.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:50:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:49:58
2025-09-29T11:50:10.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:50:10.834 [DEBUG] [Thread-155009] [transport.py] [_log()] starting thread (client mode): 0x2b91fdf0
2025-09-29T11:50:10.834 [DEBUG] [Thread-155009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:50:10.853 [DEBUG] [Thread-155009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:50:10.853 [INFO] [Thread-155009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:50:10.856 [DEBUG] [Thread-155009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:50:10.856 [DEBUG] [Thread-155009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:50:10.856 [DEBUG] [Thread-155009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:50:10.856 [DEBUG] [Thread-155009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] client lang: <none>
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] server lang: <none>
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] kex follows: False
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] Compression: none
2025-09-29T11:50:10.857 [DEBUG] [Thread-155009] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:50:10.874 [DEBUG] [Thread-155009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:50:10.875 [DEBUG] [Thread-155009] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:50:10.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:50:10.876 [DEBUG] [Thread-155009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:50:10.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:50:10.878 [DEBUG] [Thread-155009] [transport.py] [_log()] userauth is OK
2025-09-29T11:50:10.878 [DEBUG] [Thread-155009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:50:10.878 [DEBUG] [Thread-155009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:50:10.878 [DEBUG] [Thread-155009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:50:10.879 [DEBUG] [Thread-155009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:50:10.894 [INFO] [Thread-155009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:50:10.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:50:11.553 [DEBUG] [Thread-155009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:50:11.553 [DEBUG] [Thread-155009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:50:11.553 [DEBUG] [Thread-155009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:50:11.594 [DEBUG] [Thread-155009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:50:11.594 [DEBUG] [Thread-155009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:50:11.597 [DEBUG] [Thread-155009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:50:11.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:50:11.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:50:11.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:50:11.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:50:11.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:50:11.622 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:50:11.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:50:11.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:50:11.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:50:11.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.409446 -999.00  +12.70  15.17     53   +3.50 1 1 1 1 1   888    0 9.76 27.19 ----- 15.2 15.2 143.1 20.0 20.8 -25.5 19.0 -26.8 19.4 -23.7 20.6 -24.4
2025-09-29T11:50:11.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:50:11.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:50:11.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.409446
2025-09-29T11:50:11.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:50:11.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:50:11.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:50:11.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:50:11.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:50:11.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:49:58', tmtdew=10.47, humidity=48.99, cloud=0.0, wind=22.07, temperature=12.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:49:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:50:11.625 [DEBUG] [Thread-155009] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:11.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:50:11.721 [DEBUG] [Thread-155012] [transport.py] [_log()] starting thread (client mode): 0x2e3c07c0
2025-09-29T11:50:11.721 [DEBUG] [Thread-155012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:50:11.736 [DEBUG] [Thread-155012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:50:11.736 [INFO] [Thread-155012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] client lang: <none>
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] server lang: <none>
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] kex follows: False
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:50:11.745 [DEBUG] [Thread-155012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:50:11.746 [DEBUG] [Thread-155012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:50:11.746 [DEBUG] [Thread-155012] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:50:11.746 [DEBUG] [Thread-155012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:50:11.746 [DEBUG] [Thread-155012] [transport.py] [_log()] Compression: none
2025-09-29T11:50:11.746 [DEBUG] [Thread-155012] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:50:11.804 [DEBUG] [Thread-155012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:50:11.804 [DEBUG] [Thread-155012] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:50:11.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:50:11.805 [DEBUG] [Thread-155012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:50:11.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:50:11.860 [DEBUG] [Thread-155012] [transport.py] [_log()] userauth is OK
2025-09-29T11:50:11.860 [DEBUG] [Thread-155012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:50:11.860 [DEBUG] [Thread-155012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:50:11.860 [DEBUG] [Thread-155012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:50:11.860 [DEBUG] [Thread-155012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:50:11.879 [INFO] [Thread-155012] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:50:11.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:50:11.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:50:12.796 [DEBUG] [Thread-155012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:50:12.796 [DEBUG] [Thread-155012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:50:12.844 [DEBUG] [Thread-155012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:50:12.845 [DEBUG] [Thread-155012] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:50:12.854 [DEBUG] [Thread-155012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:50:12.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:50:12.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:50:12.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:50:12.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:50:12.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:50:12.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:50:12.888 [DEBUG] [Thread-155012] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:22.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:50:22.891 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:50:22.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:50:23.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 49, 58), 10.47, 48.99, 0.0, 22.07, 12.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:50:23.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:49:58
2025-09-29T11:50:23.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:50:23.731 [DEBUG] [Thread-155014] [transport.py] [_log()] starting thread (client mode): 0x2b96eef0
2025-09-29T11:50:23.731 [DEBUG] [Thread-155014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:50:23.754 [DEBUG] [Thread-155014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:50:23.754 [INFO] [Thread-155014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] client lang: <none>
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] server lang: <none>
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] kex follows: False
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] Compression: none
2025-09-29T11:50:23.756 [DEBUG] [Thread-155014] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:50:23.776 [DEBUG] [Thread-155014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:50:23.776 [DEBUG] [Thread-155014] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:50:23.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:50:23.777 [DEBUG] [Thread-155014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:50:23.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:50:23.779 [DEBUG] [Thread-155014] [transport.py] [_log()] userauth is OK
2025-09-29T11:50:23.779 [DEBUG] [Thread-155014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:50:23.779 [DEBUG] [Thread-155014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:50:23.779 [DEBUG] [Thread-155014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:50:23.779 [DEBUG] [Thread-155014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:50:23.815 [INFO] [Thread-155014] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:50:23.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:50:24.296 [DEBUG] [Thread-155016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:50:24.472 [DEBUG] [Thread-155014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:50:24.472 [DEBUG] [Thread-155014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:50:24.473 [DEBUG] [Thread-155014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:50:24.513 [DEBUG] [Thread-155014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:50:24.513 [DEBUG] [Thread-155014] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:50:24.516 [DEBUG] [Thread-155014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:50:24.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:50:24.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:50:24.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:50:24.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:50:24.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:50:24.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:50:24.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:50:24.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:50:24.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:50:24.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.409446 -999.00  +12.70  15.17     53   +3.50 1 1 1 1 1   888    0 9.76 27.19 ----- 15.2 15.2 143.1 20.0 20.8 -25.5 19.0 -26.8 19.4 -23.7 20.6 -24.4
2025-09-29T11:50:24.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:50:24.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:50:24.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.409446
2025-09-29T11:50:24.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:50:24.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:50:24.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:50:24.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:50:24.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:50:24.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:49:58', tmtdew=10.47, humidity=48.99, cloud=0.0, wind=22.07, temperature=12.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:49:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:50:24.544 [DEBUG] [Thread-155014] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:24.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:50:24.637 [DEBUG] [Thread-155018] [transport.py] [_log()] starting thread (client mode): 0x2b91cac0
2025-09-29T11:50:24.637 [DEBUG] [Thread-155018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:50:24.652 [DEBUG] [Thread-155018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:50:24.652 [INFO] [Thread-155018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:50:24.659 [DEBUG] [Thread-155018] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] client lang: <none>
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] server lang: <none>
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] kex follows: False
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] Compression: none
2025-09-29T11:50:24.660 [DEBUG] [Thread-155018] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:50:24.718 [DEBUG] [Thread-155018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:50:24.718 [DEBUG] [Thread-155018] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:50:24.719 [DEBUG] [Thread-155018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:50:24.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:50:24.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:50:24.775 [DEBUG] [Thread-155018] [transport.py] [_log()] userauth is OK
2025-09-29T11:50:24.776 [DEBUG] [Thread-155018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:50:24.776 [DEBUG] [Thread-155018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:50:24.776 [DEBUG] [Thread-155018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:50:24.776 [DEBUG] [Thread-155018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:50:24.795 [INFO] [Thread-155018] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:50:24.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:50:24.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:50:25.739 [DEBUG] [Thread-155018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:50:25.739 [DEBUG] [Thread-155018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:50:25.787 [DEBUG] [Thread-155018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:50:25.787 [DEBUG] [Thread-155018] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:50:25.796 [DEBUG] [Thread-155018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:50:25.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:50:25.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:50:25.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:50:25.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:50:25.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:50:25.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:50:25.830 [DEBUG] [Thread-155018] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:35.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:50:35.833 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:50:35.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:50:36.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 50, 30), 10.35, 49.29, 0.0, 21.09, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:50:36.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:50:30
2025-09-29T11:50:36.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:50:36.688 [DEBUG] [Thread-155020] [transport.py] [_log()] starting thread (client mode): 0x2e3c07c0
2025-09-29T11:50:36.688 [DEBUG] [Thread-155020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:50:36.708 [DEBUG] [Thread-155020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:50:36.708 [INFO] [Thread-155020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:50:36.711 [DEBUG] [Thread-155020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:50:36.711 [DEBUG] [Thread-155020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] client lang: <none>
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] server lang: <none>
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] kex follows: False
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] Compression: none
2025-09-29T11:50:36.712 [DEBUG] [Thread-155020] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:50:36.727 [DEBUG] [Thread-155020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:50:36.728 [DEBUG] [Thread-155020] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:50:36.728 [DEBUG] [Thread-155020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:50:36.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:50:36.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:50:36.728 [DEBUG] [Thread-155020] [transport.py] [_log()] userauth is OK
2025-09-29T11:50:36.728 [DEBUG] [Thread-155020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:50:36.729 [DEBUG] [Thread-155020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:50:36.729 [DEBUG] [Thread-155020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:50:36.729 [DEBUG] [Thread-155020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:50:36.737 [INFO] [Thread-155020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:50:36.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:50:37.167 [DEBUG] [Thread-155022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:50:37.415 [DEBUG] [Thread-155020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:50:37.415 [DEBUG] [Thread-155020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:50:37.415 [DEBUG] [Thread-155020] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:50:37.456 [DEBUG] [Thread-155020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:50:37.457 [DEBUG] [Thread-155020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:50:37.460 [DEBUG] [Thread-155020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:50:37.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:50:37.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:50:37.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:50:37.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:50:37.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:50:37.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:50:37.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:50:37.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:50:37.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:50:37.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.409446 -999.00  +12.70  15.17     53   +3.50 1 1 1 1 1   888    0 9.76 27.19 ----- 15.2 15.2 143.1 20.0 20.8 -25.5 19.0 -26.8 19.4 -23.7 20.6 -24.4
2025-09-29T11:50:37.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:50:37.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:50:37.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.409446
2025-09-29T11:50:37.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:50:37.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:50:37.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:50:37.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:50:37.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:50:37.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:50:30', tmtdew=10.35, humidity=49.29, cloud=0.0, wind=21.09, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:49:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:50:37.485 [DEBUG] [Thread-155020] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:37.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:50:37.581 [DEBUG] [Thread-155024] [transport.py] [_log()] starting thread (client mode): 0x2b91fb50
2025-09-29T11:50:37.582 [DEBUG] [Thread-155024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:50:37.596 [DEBUG] [Thread-155024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:50:37.597 [INFO] [Thread-155024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:50:37.604 [DEBUG] [Thread-155024] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:50:37.604 [DEBUG] [Thread-155024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] client lang: <none>
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] server lang: <none>
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] kex follows: False
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] Compression: none
2025-09-29T11:50:37.605 [DEBUG] [Thread-155024] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:50:37.663 [DEBUG] [Thread-155024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:50:37.664 [DEBUG] [Thread-155024] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:50:37.664 [DEBUG] [Thread-155024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:50:37.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:50:37.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:50:37.719 [DEBUG] [Thread-155024] [transport.py] [_log()] userauth is OK
2025-09-29T11:50:37.720 [DEBUG] [Thread-155024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:50:37.720 [DEBUG] [Thread-155024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:50:37.720 [DEBUG] [Thread-155024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:50:37.720 [DEBUG] [Thread-155024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:50:37.739 [INFO] [Thread-155024] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:50:37.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:50:37.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:50:38.705 [DEBUG] [Thread-155024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:50:38.705 [DEBUG] [Thread-155024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:50:38.753 [DEBUG] [Thread-155024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:50:38.753 [DEBUG] [Thread-155024] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:50:38.762 [DEBUG] [Thread-155024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:50:38.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:50:38.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:50:38.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:50:38.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:50:38.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:50:38.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:50:38.801 [DEBUG] [Thread-155024] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:39.348 [DEBUG] [Thread-155026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:50:41.905 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:50:41.906 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:50:48.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:50:48.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:50:48.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:50:49.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 50, 30), 10.35, 49.29, 0.0, 21.09, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:50:49.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:50:30
2025-09-29T11:50:49.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:50:49.654 [DEBUG] [Thread-155027] [transport.py] [_log()] starting thread (client mode): 0x2b957190
2025-09-29T11:50:49.654 [DEBUG] [Thread-155027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:50:49.674 [DEBUG] [Thread-155027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:50:49.674 [INFO] [Thread-155027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] client lang: <none>
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] server lang: <none>
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] kex follows: False
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:50:49.677 [DEBUG] [Thread-155027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:50:49.678 [DEBUG] [Thread-155027] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:50:49.678 [DEBUG] [Thread-155027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:50:49.678 [DEBUG] [Thread-155027] [transport.py] [_log()] Compression: none
2025-09-29T11:50:49.678 [DEBUG] [Thread-155027] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:50:49.695 [DEBUG] [Thread-155027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:50:49.695 [DEBUG] [Thread-155027] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:50:49.696 [DEBUG] [Thread-155027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:50:49.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:50:49.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:50:49.698 [DEBUG] [Thread-155027] [transport.py] [_log()] userauth is OK
2025-09-29T11:50:49.698 [DEBUG] [Thread-155027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:50:49.698 [DEBUG] [Thread-155027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:50:49.698 [DEBUG] [Thread-155027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:50:49.698 [DEBUG] [Thread-155027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:50:49.722 [INFO] [Thread-155027] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:50:49.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:50:50.374 [DEBUG] [Thread-155027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:50:50.375 [DEBUG] [Thread-155027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:50:50.375 [DEBUG] [Thread-155027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:50:50.415 [DEBUG] [Thread-155027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:50:50.415 [DEBUG] [Thread-155027] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:50:50.418 [DEBUG] [Thread-155027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:50:50.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:50:50.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:50:50.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:50:50.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:50:50.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:50:50.440 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:50:50.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:50:50.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:50:50.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:50:50.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.410141 -999.00  +12.60  14.12     53   +3.30 1 1 1 1 1   888    0 9.82 29.99 ----- 11.8 14.1 159.4 28.0 20.7 -26.5 19.4 -25.0 19.3 -25.1 20.5 -25.8
2025-09-29T11:50:50.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:50:50.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:50:50.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.410141
2025-09-29T11:50:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:50:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:50:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:50:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:50:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:50:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:50:30', tmtdew=10.35, humidity=49.29, cloud=0.0, wind=21.09, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:50:36.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:50:50.443 [DEBUG] [Thread-155027] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:50.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:50:50.537 [DEBUG] [Thread-155030] [transport.py] [_log()] starting thread (client mode): 0x2e3c2710
2025-09-29T11:50:50.537 [DEBUG] [Thread-155030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:50:50.551 [DEBUG] [Thread-155030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:50:50.551 [INFO] [Thread-155030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:50:50.559 [DEBUG] [Thread-155030] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:50:50.559 [DEBUG] [Thread-155030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:50:50.559 [DEBUG] [Thread-155030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:50:50.559 [DEBUG] [Thread-155030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] client lang: <none>
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] server lang: <none>
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] kex follows: False
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:50:50.560 [DEBUG] [Thread-155030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:50:50.561 [DEBUG] [Thread-155030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:50:50.561 [DEBUG] [Thread-155030] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:50:50.561 [DEBUG] [Thread-155030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:50:50.561 [DEBUG] [Thread-155030] [transport.py] [_log()] Compression: none
2025-09-29T11:50:50.561 [DEBUG] [Thread-155030] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:50:50.619 [DEBUG] [Thread-155030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:50:50.620 [DEBUG] [Thread-155030] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:50:50.620 [DEBUG] [Thread-155030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:50:50.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:50:50.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:50:50.675 [DEBUG] [Thread-155030] [transport.py] [_log()] userauth is OK
2025-09-29T11:50:50.675 [DEBUG] [Thread-155030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:50:50.675 [DEBUG] [Thread-155030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:50:50.675 [DEBUG] [Thread-155030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:50:50.675 [DEBUG] [Thread-155030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:50:50.696 [INFO] [Thread-155030] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:50:50.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:50:50.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:50:51.644 [DEBUG] [Thread-155030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:50:51.644 [DEBUG] [Thread-155030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:50:51.692 [DEBUG] [Thread-155030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:50:51.692 [DEBUG] [Thread-155030] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:50:51.701 [DEBUG] [Thread-155030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:50:51.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:50:51.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:50:51.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:50:51.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:50:51.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:50:51.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:50:51.733 [DEBUG] [Thread-155030] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:50:54.389 [DEBUG] [Thread-155032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:51:01.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:51:01.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:51:01.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:51:02.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 50, 30), 10.35, 49.29, 0.0, 21.09, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:51:02.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:50:30
2025-09-29T11:51:02.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:51:02.581 [DEBUG] [Thread-155033] [transport.py] [_log()] starting thread (client mode): 0x2e361ae0
2025-09-29T11:51:02.581 [DEBUG] [Thread-155033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:02.603 [DEBUG] [Thread-155033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:51:02.603 [INFO] [Thread-155033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:51:02.606 [DEBUG] [Thread-155033] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:02.606 [DEBUG] [Thread-155033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] Compression: none
2025-09-29T11:51:02.607 [DEBUG] [Thread-155033] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:02.622 [DEBUG] [Thread-155033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:02.623 [DEBUG] [Thread-155033] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:02.623 [DEBUG] [Thread-155033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:51:02.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:51:02.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:02.625 [DEBUG] [Thread-155033] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:02.626 [DEBUG] [Thread-155033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:02.626 [DEBUG] [Thread-155033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:02.626 [DEBUG] [Thread-155033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:51:02.626 [DEBUG] [Thread-155033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:02.643 [INFO] [Thread-155033] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:02.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:03.299 [DEBUG] [Thread-155033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:03.299 [DEBUG] [Thread-155033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:03.299 [DEBUG] [Thread-155033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:51:03.340 [DEBUG] [Thread-155033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:03.340 [DEBUG] [Thread-155033] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:03.342 [DEBUG] [Thread-155033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:03.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:03.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:51:03.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:51:03.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:51:03.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:03.359 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:51:03.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:03.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:51:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.410141 -999.00  +12.60  14.12     53   +3.30 1 1 1 1 1   888    0 9.82 29.99 ----- 11.8 14.1 159.4 28.0 20.7 -26.5 19.4 -25.0 19.3 -25.1 20.5 -25.8
2025-09-29T11:51:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:51:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:51:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.410141
2025-09-29T11:51:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:51:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:51:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:51:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:51:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:51:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:50:30', tmtdew=10.35, humidity=49.29, cloud=0.0, wind=21.09, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:50:36.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:51:03.360 [DEBUG] [Thread-155033] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:03.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:51:03.454 [DEBUG] [Thread-155036] [transport.py] [_log()] starting thread (client mode): 0x2b955390
2025-09-29T11:51:03.454 [DEBUG] [Thread-155036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:03.471 [DEBUG] [Thread-155036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:51:03.471 [INFO] [Thread-155036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:03.478 [DEBUG] [Thread-155036] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:03.479 [DEBUG] [Thread-155036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:03.479 [DEBUG] [Thread-155036] [transport.py] [_log()] Compression: none
2025-09-29T11:51:03.479 [DEBUG] [Thread-155036] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:03.534 [DEBUG] [Thread-155036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:03.534 [DEBUG] [Thread-155036] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:03.534 [DEBUG] [Thread-155036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:51:03.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:51:03.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:03.591 [DEBUG] [Thread-155036] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:03.591 [DEBUG] [Thread-155036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:03.591 [DEBUG] [Thread-155036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:03.591 [DEBUG] [Thread-155036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:51:03.591 [DEBUG] [Thread-155036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:03.605 [INFO] [Thread-155036] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:03.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:51:03.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:04.582 [DEBUG] [Thread-155036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:04.582 [DEBUG] [Thread-155036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:04.631 [DEBUG] [Thread-155036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:04.631 [DEBUG] [Thread-155036] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:04.640 [DEBUG] [Thread-155036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:04.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:04.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:51:04.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:51:04.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:04.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:04.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:04.672 [DEBUG] [Thread-155036] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:09.423 [DEBUG] [Thread-155038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:51:14.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:51:14.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:51:14.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:51:15.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 51, 2), 10.17, 49.85, 0.0, 21.72, 12.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:51:15.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:51:02
2025-09-29T11:51:15.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:51:15.530 [DEBUG] [Thread-155039] [transport.py] [_log()] starting thread (client mode): 0x2b96e020
2025-09-29T11:51:15.530 [DEBUG] [Thread-155039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:15.550 [DEBUG] [Thread-155039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:51:15.550 [INFO] [Thread-155039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:51:15.553 [DEBUG] [Thread-155039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:15.553 [DEBUG] [Thread-155039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:51:15.553 [DEBUG] [Thread-155039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] Compression: none
2025-09-29T11:51:15.554 [DEBUG] [Thread-155039] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:15.571 [DEBUG] [Thread-155039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:15.571 [DEBUG] [Thread-155039] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:15.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:51:15.573 [DEBUG] [Thread-155039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:51:15.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:15.575 [DEBUG] [Thread-155039] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:15.575 [DEBUG] [Thread-155039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:15.575 [DEBUG] [Thread-155039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:15.575 [DEBUG] [Thread-155039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:51:15.575 [DEBUG] [Thread-155039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:15.600 [INFO] [Thread-155039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:15.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:16.248 [DEBUG] [Thread-155039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:16.248 [DEBUG] [Thread-155039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:16.248 [DEBUG] [Thread-155039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:51:16.289 [DEBUG] [Thread-155039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:16.290 [DEBUG] [Thread-155039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:16.293 [DEBUG] [Thread-155039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:16.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:16.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:51:16.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:51:16.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:51:16.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:16.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:51:16.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:16.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:16.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:51:16.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.410141 -999.00  +12.60  14.12     53   +3.30 1 1 1 1 1   888    0 9.82 29.99 ----- 11.8 14.1 159.4 28.0 20.7 -26.5 19.4 -25.0 19.3 -25.1 20.5 -25.8
2025-09-29T11:51:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:51:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:51:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.410141
2025-09-29T11:51:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:51:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:51:16.318 [DEBUG] [Thread-155039] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:51:16.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:51:16.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:51:16.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:51:02', tmtdew=10.17, humidity=49.85, cloud=0.0, wind=21.72, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:50:36.182', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:51:16.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:51:16.414 [DEBUG] [Thread-155042] [transport.py] [_log()] starting thread (client mode): 0x2e38c5e0
2025-09-29T11:51:16.414 [DEBUG] [Thread-155042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:16.428 [DEBUG] [Thread-155042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:51:16.428 [INFO] [Thread-155042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:16.435 [DEBUG] [Thread-155042] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] Compression: none
2025-09-29T11:51:16.436 [DEBUG] [Thread-155042] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:16.494 [DEBUG] [Thread-155042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:16.494 [DEBUG] [Thread-155042] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:16.494 [DEBUG] [Thread-155042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:51:16.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:51:16.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:16.551 [DEBUG] [Thread-155042] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:16.551 [DEBUG] [Thread-155042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:16.551 [DEBUG] [Thread-155042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:16.551 [DEBUG] [Thread-155042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:51:16.551 [DEBUG] [Thread-155042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:16.570 [INFO] [Thread-155042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:16.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:51:16.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:17.502 [DEBUG] [Thread-155042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:17.502 [DEBUG] [Thread-155042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:17.550 [DEBUG] [Thread-155042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:17.550 [DEBUG] [Thread-155042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:17.559 [DEBUG] [Thread-155042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:17.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:17.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:51:17.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:51:17.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:17.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:17.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:17.593 [DEBUG] [Thread-155042] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:24.454 [DEBUG] [Thread-155044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:51:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:51:27.596 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:51:27.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:51:28.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 51, 2), 10.17, 49.85, 0.0, 21.72, 12.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:51:28.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:51:02
2025-09-29T11:51:28.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:51:28.446 [DEBUG] [Thread-155045] [transport.py] [_log()] starting thread (client mode): 0x2b956380
2025-09-29T11:51:28.446 [DEBUG] [Thread-155045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:28.466 [DEBUG] [Thread-155045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:51:28.467 [INFO] [Thread-155045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:51:28.469 [DEBUG] [Thread-155045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] Compression: none
2025-09-29T11:51:28.470 [DEBUG] [Thread-155045] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:28.487 [DEBUG] [Thread-155045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:28.487 [DEBUG] [Thread-155045] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:28.488 [DEBUG] [Thread-155045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:51:28.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:51:28.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:28.489 [DEBUG] [Thread-155045] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:28.489 [DEBUG] [Thread-155045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:28.489 [DEBUG] [Thread-155045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:28.489 [DEBUG] [Thread-155045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:51:28.489 [DEBUG] [Thread-155045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:28.504 [INFO] [Thread-155045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:28.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:29.126 [DEBUG] [Thread-155045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:29.127 [DEBUG] [Thread-155045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:29.127 [DEBUG] [Thread-155045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:51:29.167 [DEBUG] [Thread-155045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:29.167 [DEBUG] [Thread-155045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:29.170 [DEBUG] [Thread-155045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:29.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:29.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:51:29.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:51:29.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:51:29.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:29.194 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:51:29.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:29.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:29.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:51:29.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.410488 -999.00  +12.60  15.11     53   +3.40 1 1 1 1 1   888    0 9.86 32.50 ----- 18.3 15.1 146.6 19.9 20.8 -25.5 19.3 -24.3 19.3 -24.8 20.6 -25.7
2025-09-29T11:51:29.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:51:29.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:51:29.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.410488
2025-09-29T11:51:29.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:51:29.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:51:29.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:51:29.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:51:29.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:51:29.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:51:02', tmtdew=10.17, humidity=49.85, cloud=0.0, wind=21.72, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:51:06.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:51:29.197 [DEBUG] [Thread-155045] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:29.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:51:29.293 [DEBUG] [Thread-155048] [transport.py] [_log()] starting thread (client mode): 0x2b9570a0
2025-09-29T11:51:29.293 [DEBUG] [Thread-155048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:29.308 [DEBUG] [Thread-155048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:51:29.308 [INFO] [Thread-155048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:29.316 [DEBUG] [Thread-155048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:29.317 [DEBUG] [Thread-155048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:29.317 [DEBUG] [Thread-155048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:29.317 [DEBUG] [Thread-155048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:29.317 [DEBUG] [Thread-155048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:29.317 [DEBUG] [Thread-155048] [transport.py] [_log()] Compression: none
2025-09-29T11:51:29.317 [DEBUG] [Thread-155048] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:29.374 [DEBUG] [Thread-155048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:29.375 [DEBUG] [Thread-155048] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:29.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:51:29.376 [DEBUG] [Thread-155048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:51:29.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:29.431 [DEBUG] [Thread-155048] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:29.431 [DEBUG] [Thread-155048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:29.431 [DEBUG] [Thread-155048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:29.431 [DEBUG] [Thread-155048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:51:29.431 [DEBUG] [Thread-155048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:29.450 [INFO] [Thread-155048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:29.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:51:29.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:30.404 [DEBUG] [Thread-155048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:30.405 [DEBUG] [Thread-155048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:30.452 [DEBUG] [Thread-155048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:30.452 [DEBUG] [Thread-155048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:30.461 [DEBUG] [Thread-155048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:30.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:30.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:51:30.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:51:30.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:30.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:30.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:30.496 [DEBUG] [Thread-155048] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:37.218 [DEBUG] [Thread-155050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:51:39.496 [DEBUG] [Thread-155051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:51:40.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:51:40.499 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:51:40.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:51:41.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 51, 34), 9.97, 50.53, 0.0, 18.72, 12.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:51:41.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:51:34
2025-09-29T11:51:41.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:51:41.351 [DEBUG] [Thread-155052] [transport.py] [_log()] starting thread (client mode): 0x2b91fa60
2025-09-29T11:51:41.351 [DEBUG] [Thread-155052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:41.371 [DEBUG] [Thread-155052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:51:41.372 [INFO] [Thread-155052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:51:41.375 [DEBUG] [Thread-155052] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:41.375 [DEBUG] [Thread-155052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:51:41.375 [DEBUG] [Thread-155052] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:41.375 [DEBUG] [Thread-155052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:41.375 [DEBUG] [Thread-155052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:41.375 [DEBUG] [Thread-155052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:41.375 [DEBUG] [Thread-155052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:41.375 [DEBUG] [Thread-155052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] Compression: none
2025-09-29T11:51:41.376 [DEBUG] [Thread-155052] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:41.387 [DEBUG] [Thread-155052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:41.388 [DEBUG] [Thread-155052] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:41.389 [DEBUG] [Thread-155052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:51:41.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:51:41.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:41.391 [DEBUG] [Thread-155052] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:41.391 [DEBUG] [Thread-155052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:41.391 [DEBUG] [Thread-155052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:41.391 [DEBUG] [Thread-155052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:51:41.392 [DEBUG] [Thread-155052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:41.414 [INFO] [Thread-155052] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:41.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:42.046 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:51:42.048 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:51:42.082 [DEBUG] [Thread-155052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:42.083 [DEBUG] [Thread-155052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:42.083 [DEBUG] [Thread-155052] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:51:42.123 [DEBUG] [Thread-155052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:42.123 [DEBUG] [Thread-155052] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:42.126 [DEBUG] [Thread-155052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:42.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:42.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:51:42.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:51:42.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:51:42.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:42.149 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:51:42.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:42.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:42.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:51:42.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.410488 -999.00  +12.60  15.11     53   +3.40 1 1 1 1 1   888    0 9.86 32.50 ----- 18.3 15.1 146.6 19.9 20.8 -25.5 19.3 -24.3 19.3 -24.8 20.6 -25.7
2025-09-29T11:51:42.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:51:42.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:51:42.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.410488
2025-09-29T11:51:42.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:51:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:51:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:51:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:51:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:51:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:51:34', tmtdew=9.97, humidity=50.53, cloud=0.0, wind=18.72, temperature=12.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:51:06.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:51:42.152 [DEBUG] [Thread-155052] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:42.237 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:51:42.248 [DEBUG] [Thread-155055] [transport.py] [_log()] starting thread (client mode): 0x2b957f70
2025-09-29T11:51:42.248 [DEBUG] [Thread-155055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:42.265 [DEBUG] [Thread-155055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:51:42.265 [INFO] [Thread-155055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:51:42.272 [DEBUG] [Thread-155055] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:42.272 [DEBUG] [Thread-155055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:51:42.272 [DEBUG] [Thread-155055] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:42.272 [DEBUG] [Thread-155055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:42.272 [DEBUG] [Thread-155055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:42.272 [DEBUG] [Thread-155055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:42.272 [DEBUG] [Thread-155055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] Compression: none
2025-09-29T11:51:42.273 [DEBUG] [Thread-155055] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:42.332 [DEBUG] [Thread-155055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:42.332 [DEBUG] [Thread-155055] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:42.333 [DEBUG] [Thread-155055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:51:42.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:51:42.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:42.390 [DEBUG] [Thread-155055] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:42.391 [DEBUG] [Thread-155055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:42.391 [DEBUG] [Thread-155055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:42.391 [DEBUG] [Thread-155055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:51:42.391 [DEBUG] [Thread-155055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:42.409 [INFO] [Thread-155055] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:42.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:51:42.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:43.372 [DEBUG] [Thread-155055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:43.373 [DEBUG] [Thread-155055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:43.421 [DEBUG] [Thread-155055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:43.421 [DEBUG] [Thread-155055] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:43.430 [DEBUG] [Thread-155055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:43.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:43.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:51:43.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:51:43.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:43.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:43.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:43.463 [DEBUG] [Thread-155055] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:53.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:51:53.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:51:53.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:51:54.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 51, 34), 9.97, 50.53, 0.0, 18.72, 12.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:51:54.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:51:34
2025-09-29T11:51:54.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:51:54.317 [DEBUG] [Thread-155057] [transport.py] [_log()] starting thread (client mode): 0x2e38cb80
2025-09-29T11:51:54.317 [DEBUG] [Thread-155057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:54.339 [DEBUG] [Thread-155057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:51:54.340 [INFO] [Thread-155057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:54.341 [DEBUG] [Thread-155057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:54.342 [DEBUG] [Thread-155057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:54.342 [DEBUG] [Thread-155057] [transport.py] [_log()] Compression: none
2025-09-29T11:51:54.342 [DEBUG] [Thread-155057] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:54.350 [DEBUG] [Thread-155057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:54.350 [DEBUG] [Thread-155057] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:54.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:51:54.351 [DEBUG] [Thread-155057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:51:54.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:54.353 [DEBUG] [Thread-155057] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:54.353 [DEBUG] [Thread-155057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:54.353 [DEBUG] [Thread-155057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:54.353 [DEBUG] [Thread-155057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:51:54.353 [DEBUG] [Thread-155057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:54.371 [INFO] [Thread-155057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:54.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:54.537 [DEBUG] [Thread-155059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:51:54.956 [DEBUG] [Thread-155057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:54.956 [DEBUG] [Thread-155057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:54.957 [DEBUG] [Thread-155057] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:51:54.997 [DEBUG] [Thread-155057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:54.997 [DEBUG] [Thread-155057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:55.000 [DEBUG] [Thread-155057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:55.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:55.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:51:55.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:51:55.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:51:55.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:55.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:51:55.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:55.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:55.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:51:55.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.410835 -999.00  +12.60  18.66     54   +3.60 1 1 1 1 1   888    0 9.84 31.73 ----- 18.8 18.7 164.6 23.9 20.9 -25.1 19.4 -24.2 19.3 -24.8 20.6 -26.9
2025-09-29T11:51:55.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:51:55.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:51:55.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.410835
2025-09-29T11:51:55.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:51:55.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:51:55.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:51:55.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:51:55.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:51:55.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:51:34', tmtdew=9.97, humidity=50.53, cloud=0.0, wind=18.72, temperature=12.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:51:36.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:51:55.020 [DEBUG] [Thread-155057] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:51:55.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:51:55.114 [DEBUG] [Thread-155061] [transport.py] [_log()] starting thread (client mode): 0x2b969e70
2025-09-29T11:51:55.115 [DEBUG] [Thread-155061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:51:55.130 [DEBUG] [Thread-155061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:51:55.130 [INFO] [Thread-155061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:51:55.137 [DEBUG] [Thread-155061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:51:55.137 [DEBUG] [Thread-155061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] client lang: <none>
2025-09-29T11:51:55.138 [DEBUG] [Thread-155061] [transport.py] [_log()] server lang: <none>
2025-09-29T11:51:55.139 [DEBUG] [Thread-155061] [transport.py] [_log()] kex follows: False
2025-09-29T11:51:55.139 [DEBUG] [Thread-155061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:51:55.139 [DEBUG] [Thread-155061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:51:55.139 [DEBUG] [Thread-155061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:51:55.139 [DEBUG] [Thread-155061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:51:55.139 [DEBUG] [Thread-155061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:51:55.139 [DEBUG] [Thread-155061] [transport.py] [_log()] Compression: none
2025-09-29T11:51:55.139 [DEBUG] [Thread-155061] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:51:55.194 [DEBUG] [Thread-155061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:51:55.195 [DEBUG] [Thread-155061] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:51:55.196 [DEBUG] [Thread-155061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:51:55.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:51:55.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:51:55.250 [DEBUG] [Thread-155061] [transport.py] [_log()] userauth is OK
2025-09-29T11:51:55.251 [DEBUG] [Thread-155061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:51:55.251 [DEBUG] [Thread-155061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:51:55.251 [DEBUG] [Thread-155061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:51:55.251 [DEBUG] [Thread-155061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:51:55.270 [INFO] [Thread-155061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:51:55.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:51:55.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:51:56.185 [DEBUG] [Thread-155061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:51:56.185 [DEBUG] [Thread-155061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:51:56.233 [DEBUG] [Thread-155061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:51:56.233 [DEBUG] [Thread-155061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:51:56.242 [DEBUG] [Thread-155061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:51:56.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:51:56.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:51:56.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:51:56.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:51:56.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:51:56.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:51:56.278 [DEBUG] [Thread-155061] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:06.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:52:06.281 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:52:06.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:52:06.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 51, 34), 9.97, 50.53, 0.0, 18.72, 12.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:52:06.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:51:34
2025-09-29T11:52:06.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:52:07.135 [DEBUG] [Thread-155063] [transport.py] [_log()] starting thread (client mode): 0x2b969660
2025-09-29T11:52:07.135 [DEBUG] [Thread-155063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:07.156 [DEBUG] [Thread-155063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:52:07.156 [INFO] [Thread-155063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] Compression: none
2025-09-29T11:52:07.159 [DEBUG] [Thread-155063] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:07.174 [DEBUG] [Thread-155063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:07.174 [DEBUG] [Thread-155063] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:07.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:52:07.174 [DEBUG] [Thread-155063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:52:07.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:07.175 [DEBUG] [Thread-155063] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:07.175 [DEBUG] [Thread-155063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:07.175 [DEBUG] [Thread-155063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:07.175 [DEBUG] [Thread-155063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:52:07.175 [DEBUG] [Thread-155063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:07.184 [INFO] [Thread-155063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:07.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:07.817 [DEBUG] [Thread-155063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:07.818 [DEBUG] [Thread-155063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:07.818 [DEBUG] [Thread-155063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:52:07.859 [DEBUG] [Thread-155063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:07.859 [DEBUG] [Thread-155063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:07.861 [DEBUG] [Thread-155063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:07.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:07.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:52:07.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:52:07.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:52:07.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:07.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:52:07.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:07.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.410835 -999.00  +12.60  18.66     54   +3.60 1 1 1 1 1   888    0 9.84 31.73 ----- 18.8 18.7 164.6 23.9 20.9 -25.1 19.4 -24.2 19.3 -24.8 20.6 -26.9
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.410835
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:52:07.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:51:34', tmtdew=9.97, humidity=50.53, cloud=0.0, wind=18.72, temperature=12.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:51:36.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:52:07.881 [DEBUG] [Thread-155063] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:07.955 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:52:07.968 [DEBUG] [Thread-155066] [transport.py] [_log()] starting thread (client mode): 0x2b91fb20
2025-09-29T11:52:07.968 [DEBUG] [Thread-155066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:07.983 [DEBUG] [Thread-155066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:52:07.983 [INFO] [Thread-155066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] Compression: none
2025-09-29T11:52:07.991 [DEBUG] [Thread-155066] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:08.049 [DEBUG] [Thread-155066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:08.049 [DEBUG] [Thread-155066] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:08.049 [DEBUG] [Thread-155066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:52:08.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:52:08.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:08.106 [DEBUG] [Thread-155066] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:08.106 [DEBUG] [Thread-155066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:08.106 [DEBUG] [Thread-155066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:08.106 [DEBUG] [Thread-155066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:52:08.106 [DEBUG] [Thread-155066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:08.120 [INFO] [Thread-155066] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:08.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:52:08.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:09.087 [DEBUG] [Thread-155066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:09.087 [DEBUG] [Thread-155066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:09.135 [DEBUG] [Thread-155066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:09.135 [DEBUG] [Thread-155066] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:09.145 [DEBUG] [Thread-155066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:09.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:09.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:52:09.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:52:09.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:09.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:09.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:09.181 [DEBUG] [Thread-155066] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:09.582 [DEBUG] [Thread-155068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:52:19.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:52:19.175 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:52:19.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:52:19.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 52, 6), 9.86, 50.85, 0.0, 18.35, 11.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:52:19.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:52:06
2025-09-29T11:52:19.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:52:20.020 [DEBUG] [Thread-155069] [transport.py] [_log()] starting thread (client mode): 0x2b96df30
2025-09-29T11:52:20.020 [DEBUG] [Thread-155069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:20.041 [DEBUG] [Thread-155069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:52:20.041 [INFO] [Thread-155069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:20.042 [DEBUG] [Thread-155069] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:20.043 [DEBUG] [Thread-155069] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:20.043 [DEBUG] [Thread-155069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:20.043 [DEBUG] [Thread-155069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:20.043 [DEBUG] [Thread-155069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:20.043 [DEBUG] [Thread-155069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:20.043 [DEBUG] [Thread-155069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:20.043 [DEBUG] [Thread-155069] [transport.py] [_log()] Compression: none
2025-09-29T11:52:20.043 [DEBUG] [Thread-155069] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:20.061 [DEBUG] [Thread-155069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:20.061 [DEBUG] [Thread-155069] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:20.062 [DEBUG] [Thread-155069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:52:20.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:52:20.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:20.064 [DEBUG] [Thread-155069] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:20.064 [DEBUG] [Thread-155069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:20.064 [DEBUG] [Thread-155069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:20.064 [DEBUG] [Thread-155069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:52:20.064 [DEBUG] [Thread-155069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:20.088 [INFO] [Thread-155069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:20.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:20.707 [DEBUG] [Thread-155069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:20.707 [DEBUG] [Thread-155069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:20.707 [DEBUG] [Thread-155069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:52:20.748 [DEBUG] [Thread-155069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:20.748 [DEBUG] [Thread-155069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:20.751 [DEBUG] [Thread-155069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:20.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:20.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:52:20.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:52:20.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:52:20.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:20.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:52:20.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:20.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:20.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:52:20.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.410835 -999.00  +12.60  18.66     54   +3.60 1 1 1 1 1   888    0 9.84 31.73 ----- 18.8 18.7 164.6 23.9 20.9 -25.1 19.4 -24.2 19.3 -24.8 20.6 -26.9
2025-09-29T11:52:20.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:52:20.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:52:20.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.410835
2025-09-29T11:52:20.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:52:20.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:52:20.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:52:20.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:52:20.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:52:20.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:52:06', tmtdew=9.86, humidity=50.85, cloud=0.0, wind=18.35, temperature=11.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:51:36.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:52:20.777 [DEBUG] [Thread-155069] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:20.862 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:52:20.871 [DEBUG] [Thread-155072] [transport.py] [_log()] starting thread (client mode): 0x2b91c070
2025-09-29T11:52:20.871 [DEBUG] [Thread-155072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:20.885 [DEBUG] [Thread-155072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:52:20.885 [INFO] [Thread-155072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:52:20.893 [DEBUG] [Thread-155072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:20.893 [DEBUG] [Thread-155072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] Compression: none
2025-09-29T11:52:20.894 [DEBUG] [Thread-155072] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:20.949 [DEBUG] [Thread-155072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:20.949 [DEBUG] [Thread-155072] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:20.950 [DEBUG] [Thread-155072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:52:20.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:52:20.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:21.006 [DEBUG] [Thread-155072] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:21.006 [DEBUG] [Thread-155072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:21.006 [DEBUG] [Thread-155072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:21.006 [DEBUG] [Thread-155072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:52:21.006 [DEBUG] [Thread-155072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:21.026 [INFO] [Thread-155072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:21.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:52:21.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:21.927 [DEBUG] [Thread-155072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:21.927 [DEBUG] [Thread-155072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:21.975 [DEBUG] [Thread-155072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:21.975 [DEBUG] [Thread-155072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:21.984 [DEBUG] [Thread-155072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:21.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:21.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:52:22.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:52:22.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:22.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:22.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:22.019 [DEBUG] [Thread-155072] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:24.623 [DEBUG] [Thread-155074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:52:32.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:52:32.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:52:32.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:52:32.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 52, 6), 9.86, 50.85, 0.0, 18.35, 11.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:52:32.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:52:06
2025-09-29T11:52:32.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:52:32.867 [DEBUG] [Thread-155075] [transport.py] [_log()] starting thread (client mode): 0x2b96ddb0
2025-09-29T11:52:32.867 [DEBUG] [Thread-155075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:32.887 [DEBUG] [Thread-155075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:52:32.887 [INFO] [Thread-155075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:52:32.890 [DEBUG] [Thread-155075] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:32.890 [DEBUG] [Thread-155075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:52:32.890 [DEBUG] [Thread-155075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] Compression: none
2025-09-29T11:52:32.891 [DEBUG] [Thread-155075] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:32.907 [DEBUG] [Thread-155075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:32.908 [DEBUG] [Thread-155075] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:32.908 [DEBUG] [Thread-155075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:52:32.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:52:32.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:32.910 [DEBUG] [Thread-155075] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:32.910 [DEBUG] [Thread-155075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:32.911 [DEBUG] [Thread-155075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:32.911 [DEBUG] [Thread-155075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:52:32.911 [DEBUG] [Thread-155075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:32.934 [INFO] [Thread-155075] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:32.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:33.605 [DEBUG] [Thread-155075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:33.605 [DEBUG] [Thread-155075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:33.605 [DEBUG] [Thread-155075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:52:33.646 [DEBUG] [Thread-155075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:33.646 [DEBUG] [Thread-155075] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:33.649 [DEBUG] [Thread-155075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:33.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:33.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:52:33.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:52:33.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:52:33.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:33.671 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:52:33.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:33.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:33.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:52:33.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.411182 -999.00  +12.60  20.74     54   +3.60 1 1 1 1 1   888    0 10.05 32.11 ----- 17.6 20.7 146.9 26.4 20.8 -26.0 19.5 -24.9 19.2 -25.0 20.5 -27.1
2025-09-29T11:52:33.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:52:33.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:52:33.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.411182
2025-09-29T11:52:33.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:52:33.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:52:33.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:52:33.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:52:33.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:52:33.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:52:06', tmtdew=9.86, humidity=50.85, cloud=0.0, wind=18.35, temperature=11.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:52:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:52:33.674 [DEBUG] [Thread-155075] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:33.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:52:33.769 [DEBUG] [Thread-155078] [transport.py] [_log()] starting thread (client mode): 0x2e38d3c0
2025-09-29T11:52:33.769 [DEBUG] [Thread-155078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:33.784 [DEBUG] [Thread-155078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:52:33.784 [INFO] [Thread-155078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:52:33.792 [DEBUG] [Thread-155078] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:33.792 [DEBUG] [Thread-155078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:52:33.792 [DEBUG] [Thread-155078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] Compression: none
2025-09-29T11:52:33.793 [DEBUG] [Thread-155078] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:33.849 [DEBUG] [Thread-155078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:33.850 [DEBUG] [Thread-155078] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:33.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:52:33.851 [DEBUG] [Thread-155078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:52:33.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:33.906 [DEBUG] [Thread-155078] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:33.906 [DEBUG] [Thread-155078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:33.906 [DEBUG] [Thread-155078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:33.907 [DEBUG] [Thread-155078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:52:33.907 [DEBUG] [Thread-155078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:33.925 [INFO] [Thread-155078] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:33.935 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:52:33.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:34.867 [DEBUG] [Thread-155078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:34.868 [DEBUG] [Thread-155078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:34.915 [DEBUG] [Thread-155078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:34.916 [DEBUG] [Thread-155078] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:34.927 [DEBUG] [Thread-155078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:34.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:34.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:52:34.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:52:34.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:34.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:34.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:34.970 [DEBUG] [Thread-155078] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:37.269 [DEBUG] [Thread-155080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:52:39.666 [DEBUG] [Thread-155081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:52:42.189 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:52:42.190 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:52:44.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:52:44.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:52:44.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:52:45.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 52, 38), 10.09, 50.06, 0.0, 22.3, 11.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:52:45.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:52:38
2025-09-29T11:52:45.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:52:45.817 [DEBUG] [Thread-155082] [transport.py] [_log()] starting thread (client mode): 0x2b91dff0
2025-09-29T11:52:45.817 [DEBUG] [Thread-155082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:45.837 [DEBUG] [Thread-155082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:52:45.837 [INFO] [Thread-155082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] Compression: none
2025-09-29T11:52:45.841 [DEBUG] [Thread-155082] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:45.861 [DEBUG] [Thread-155082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:45.862 [DEBUG] [Thread-155082] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:45.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:52:45.862 [DEBUG] [Thread-155082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:52:45.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:45.865 [DEBUG] [Thread-155082] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:45.865 [DEBUG] [Thread-155082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:45.865 [DEBUG] [Thread-155082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:45.865 [DEBUG] [Thread-155082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:52:45.865 [DEBUG] [Thread-155082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:45.890 [INFO] [Thread-155082] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:45.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:46.559 [DEBUG] [Thread-155082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:46.559 [DEBUG] [Thread-155082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:46.560 [DEBUG] [Thread-155082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:52:46.600 [DEBUG] [Thread-155082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:46.600 [DEBUG] [Thread-155082] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:46.604 [DEBUG] [Thread-155082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:46.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:46.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:52:46.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:52:46.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:52:46.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:46.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:52:46.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:46.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:46.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:52:46.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.411182 -999.00  +12.60  20.74     54   +3.60 1 1 1 1 1   888    0 10.05 32.11 ----- 17.6 20.7 146.9 26.4 20.8 -26.0 19.5 -24.9 19.2 -25.0 20.5 -27.1
2025-09-29T11:52:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:52:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:52:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.411182
2025-09-29T11:52:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:52:46.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:52:46.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:52:46.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:52:46.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:52:46.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:52:38', tmtdew=10.09, humidity=50.06, cloud=0.0, wind=22.3, temperature=11.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:52:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:52:46.629 [DEBUG] [Thread-155082] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:46.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:52:46.733 [DEBUG] [Thread-155085] [transport.py] [_log()] starting thread (client mode): 0x28707670
2025-09-29T11:52:46.733 [DEBUG] [Thread-155085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:46.753 [DEBUG] [Thread-155085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:52:46.753 [INFO] [Thread-155085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:52:46.771 [DEBUG] [Thread-155085] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:46.771 [DEBUG] [Thread-155085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:46.772 [DEBUG] [Thread-155085] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:46.773 [DEBUG] [Thread-155085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:46.773 [DEBUG] [Thread-155085] [transport.py] [_log()] Compression: none
2025-09-29T11:52:46.773 [DEBUG] [Thread-155085] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:46.837 [DEBUG] [Thread-155085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:46.838 [DEBUG] [Thread-155085] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:46.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:52:46.839 [DEBUG] [Thread-155085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:52:46.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:46.899 [DEBUG] [Thread-155085] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:46.900 [DEBUG] [Thread-155085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:46.900 [DEBUG] [Thread-155085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:46.900 [DEBUG] [Thread-155085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:52:46.900 [DEBUG] [Thread-155085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:46.931 [INFO] [Thread-155085] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:46.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:52:46.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:47.860 [DEBUG] [Thread-155085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:47.870 [DEBUG] [Thread-155085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:47.908 [DEBUG] [Thread-155085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:47.909 [DEBUG] [Thread-155085] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:47.917 [DEBUG] [Thread-155085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:47.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:47.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:52:47.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:52:47.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:47.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:47.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:47.952 [DEBUG] [Thread-155085] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:54.701 [DEBUG] [Thread-155087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:52:57.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:52:57.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:52:57.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:52:58.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 52, 38), 10.09, 50.06, 0.0, 22.3, 11.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:52:58.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:52:38
2025-09-29T11:52:58.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:52:58.784 [DEBUG] [Thread-155088] [transport.py] [_log()] starting thread (client mode): 0x2b954e50
2025-09-29T11:52:58.784 [DEBUG] [Thread-155088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:58.803 [DEBUG] [Thread-155088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:52:58.803 [INFO] [Thread-155088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:58.805 [DEBUG] [Thread-155088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] Compression: none
2025-09-29T11:52:58.806 [DEBUG] [Thread-155088] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:58.824 [DEBUG] [Thread-155088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:58.825 [DEBUG] [Thread-155088] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:58.826 [DEBUG] [Thread-155088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:52:58.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:52:58.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:58.829 [DEBUG] [Thread-155088] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:58.829 [DEBUG] [Thread-155088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:58.829 [DEBUG] [Thread-155088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:58.829 [DEBUG] [Thread-155088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:52:58.829 [DEBUG] [Thread-155088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:58.865 [INFO] [Thread-155088] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:58.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:52:59.575 [DEBUG] [Thread-155088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:52:59.575 [DEBUG] [Thread-155088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:52:59.575 [DEBUG] [Thread-155088] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:52:59.616 [DEBUG] [Thread-155088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:52:59.616 [DEBUG] [Thread-155088] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:52:59.620 [DEBUG] [Thread-155088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:52:59.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:52:59.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:52:59.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:52:59.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:52:59.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:52:59.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:52:59.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:52:59.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:52:59.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:52:59.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.411182 -999.00  +12.60  20.74     54   +3.60 1 1 1 1 1   888    0 10.05 32.11 ----- 17.6 20.7 146.9 26.4 20.8 -26.0 19.5 -24.9 19.2 -25.0 20.5 -27.1
2025-09-29T11:52:59.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:52:59.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:52:59.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.411182
2025-09-29T11:52:59.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:52:59.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:52:59.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:52:59.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:52:59.646 [DEBUG] [Thread-155088] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:52:59.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:52:59.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:52:38', tmtdew=10.09, humidity=50.06, cloud=0.0, wind=22.3, temperature=11.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:52:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:52:59.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:52:59.741 [DEBUG] [Thread-155091] [transport.py] [_log()] starting thread (client mode): 0x2e361d20
2025-09-29T11:52:59.741 [DEBUG] [Thread-155091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:52:59.755 [DEBUG] [Thread-155091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:52:59.755 [INFO] [Thread-155091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] client lang: <none>
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] server lang: <none>
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] kex follows: False
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] Compression: none
2025-09-29T11:52:59.763 [DEBUG] [Thread-155091] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:52:59.821 [DEBUG] [Thread-155091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:52:59.822 [DEBUG] [Thread-155091] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:52:59.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:52:59.823 [DEBUG] [Thread-155091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:52:59.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:52:59.877 [DEBUG] [Thread-155091] [transport.py] [_log()] userauth is OK
2025-09-29T11:52:59.878 [DEBUG] [Thread-155091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:52:59.878 [DEBUG] [Thread-155091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:52:59.878 [DEBUG] [Thread-155091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:52:59.878 [DEBUG] [Thread-155091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:52:59.896 [INFO] [Thread-155091] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:52:59.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:52:59.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:00.844 [DEBUG] [Thread-155091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:00.844 [DEBUG] [Thread-155091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:00.892 [DEBUG] [Thread-155091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:00.892 [DEBUG] [Thread-155091] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:00.901 [DEBUG] [Thread-155091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:00.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:00.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:53:00.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:53:00.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:00.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:00.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:00.936 [DEBUG] [Thread-155091] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:09.737 [DEBUG] [Thread-155093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:53:10.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:53:10.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:53:10.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:53:11.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 52, 38), 10.09, 50.06, 0.0, 22.3, 11.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:53:11.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:52:38
2025-09-29T11:53:11.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:53:11.821 [DEBUG] [Thread-155094] [transport.py] [_log()] starting thread (client mode): 0x28707430
2025-09-29T11:53:11.821 [DEBUG] [Thread-155094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:53:11.841 [DEBUG] [Thread-155094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:53:11.841 [INFO] [Thread-155094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:53:11.844 [DEBUG] [Thread-155094] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] client lang: <none>
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] server lang: <none>
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] kex follows: False
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] Compression: none
2025-09-29T11:53:11.845 [DEBUG] [Thread-155094] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:53:11.861 [DEBUG] [Thread-155094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:53:11.861 [DEBUG] [Thread-155094] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:53:11.861 [DEBUG] [Thread-155094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:53:11.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:53:11.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:53:11.862 [DEBUG] [Thread-155094] [transport.py] [_log()] userauth is OK
2025-09-29T11:53:11.862 [DEBUG] [Thread-155094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:53:11.862 [DEBUG] [Thread-155094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:53:11.862 [DEBUG] [Thread-155094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:53:11.862 [DEBUG] [Thread-155094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:53:11.871 [INFO] [Thread-155094] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:53:11.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:12.528 [DEBUG] [Thread-155094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:12.528 [DEBUG] [Thread-155094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:12.528 [DEBUG] [Thread-155094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:53:12.569 [DEBUG] [Thread-155094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:12.569 [DEBUG] [Thread-155094] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:12.572 [DEBUG] [Thread-155094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:12.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:12.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:53:12.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:53:12.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:53:12.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:12.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:53:12.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:12.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.411529 -999.00  +12.30  22.80     54   +3.40 1 1 1 1 1   888    0 9.90 32.18 ----- 20.4 22.8 136.2 24.1 20.8 -25.5 19.5 -24.2 19.3 -25.5 20.5 -26.8
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.411529
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:53:12.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:52:38', tmtdew=10.09, humidity=50.06, cloud=0.0, wind=22.3, temperature=11.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:52:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:53:12.594 [DEBUG] [Thread-155094] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:12.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:53:12.680 [DEBUG] [Thread-155097] [transport.py] [_log()] starting thread (client mode): 0x28705180
2025-09-29T11:53:12.680 [DEBUG] [Thread-155097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:53:12.695 [DEBUG] [Thread-155097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:53:12.695 [INFO] [Thread-155097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:53:12.703 [DEBUG] [Thread-155097] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:53:12.703 [DEBUG] [Thread-155097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:53:12.703 [DEBUG] [Thread-155097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:53:12.703 [DEBUG] [Thread-155097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:12.703 [DEBUG] [Thread-155097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:12.703 [DEBUG] [Thread-155097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] client lang: <none>
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] server lang: <none>
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] kex follows: False
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:53:12.704 [DEBUG] [Thread-155097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:53:12.705 [DEBUG] [Thread-155097] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:53:12.705 [DEBUG] [Thread-155097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:53:12.705 [DEBUG] [Thread-155097] [transport.py] [_log()] Compression: none
2025-09-29T11:53:12.705 [DEBUG] [Thread-155097] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:53:12.761 [DEBUG] [Thread-155097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:53:12.762 [DEBUG] [Thread-155097] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:53:12.762 [DEBUG] [Thread-155097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:53:12.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:53:12.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:53:12.817 [DEBUG] [Thread-155097] [transport.py] [_log()] userauth is OK
2025-09-29T11:53:12.817 [DEBUG] [Thread-155097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:53:12.817 [DEBUG] [Thread-155097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:53:12.817 [DEBUG] [Thread-155097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:53:12.817 [DEBUG] [Thread-155097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:53:12.833 [INFO] [Thread-155097] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:53:12.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:53:12.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:13.772 [DEBUG] [Thread-155097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:13.773 [DEBUG] [Thread-155097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:13.820 [DEBUG] [Thread-155097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:13.820 [DEBUG] [Thread-155097] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:13.829 [DEBUG] [Thread-155097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:13.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:13.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:53:13.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:53:13.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:13.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:13.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:13.870 [DEBUG] [Thread-155097] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:23.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:53:23.873 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:53:23.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:53:24.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 53, 10), 10.15, 49.91, 0.0, 18.92, 12.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:53:24.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:53:10
2025-09-29T11:53:24.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:53:24.716 [DEBUG] [Thread-155099] [transport.py] [_log()] starting thread (client mode): 0x2b9690c0
2025-09-29T11:53:24.716 [DEBUG] [Thread-155099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:53:24.737 [DEBUG] [Thread-155099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:53:24.737 [INFO] [Thread-155099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:53:24.740 [DEBUG] [Thread-155099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:53:24.740 [DEBUG] [Thread-155099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:53:24.740 [DEBUG] [Thread-155099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] client lang: <none>
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] server lang: <none>
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] kex follows: False
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] Compression: none
2025-09-29T11:53:24.741 [DEBUG] [Thread-155099] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:53:24.758 [DEBUG] [Thread-155099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:53:24.758 [DEBUG] [Thread-155099] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:53:24.759 [DEBUG] [Thread-155099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:53:24.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:53:24.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:53:24.760 [DEBUG] [Thread-155099] [transport.py] [_log()] userauth is OK
2025-09-29T11:53:24.761 [DEBUG] [Thread-155099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:53:24.761 [DEBUG] [Thread-155099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:53:24.761 [DEBUG] [Thread-155099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:53:24.761 [DEBUG] [Thread-155099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:53:24.764 [DEBUG] [Thread-155101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:53:24.785 [INFO] [Thread-155099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:53:24.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:25.457 [DEBUG] [Thread-155099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:25.457 [DEBUG] [Thread-155099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:25.457 [DEBUG] [Thread-155099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:53:25.498 [DEBUG] [Thread-155099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:25.498 [DEBUG] [Thread-155099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:25.500 [DEBUG] [Thread-155099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:25.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:25.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:53:25.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:53:25.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:53:25.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:25.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:53:25.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.411529 -999.00  +12.30  22.80     54   +3.40 1 1 1 1 1   888    0 9.90 32.18 ----- 20.4 22.8 136.2 24.1 20.8 -25.5 19.5 -24.2 19.3 -25.5 20.5 -26.8
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.411529
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:53:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:53:10', tmtdew=10.15, humidity=49.91, cloud=0.0, wind=18.92, temperature=12.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:52:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:53:25.520 [DEBUG] [Thread-155099] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:25.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:53:25.601 [DEBUG] [Thread-155103] [transport.py] [_log()] starting thread (client mode): 0x2b96a140
2025-09-29T11:53:25.601 [DEBUG] [Thread-155103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:53:25.625 [DEBUG] [Thread-155103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:53:25.625 [INFO] [Thread-155103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:53:25.633 [DEBUG] [Thread-155103] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:53:25.633 [DEBUG] [Thread-155103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:53:25.633 [DEBUG] [Thread-155103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:53:25.633 [DEBUG] [Thread-155103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:25.633 [DEBUG] [Thread-155103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:25.634 [DEBUG] [Thread-155103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:25.634 [DEBUG] [Thread-155103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:25.634 [DEBUG] [Thread-155103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:53:25.634 [DEBUG] [Thread-155103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:53:25.634 [DEBUG] [Thread-155103] [transport.py] [_log()] client lang: <none>
2025-09-29T11:53:25.634 [DEBUG] [Thread-155103] [transport.py] [_log()] server lang: <none>
2025-09-29T11:53:25.634 [DEBUG] [Thread-155103] [transport.py] [_log()] kex follows: False
2025-09-29T11:53:25.634 [DEBUG] [Thread-155103] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:53:25.635 [DEBUG] [Thread-155103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:53:25.635 [DEBUG] [Thread-155103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:53:25.635 [DEBUG] [Thread-155103] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:53:25.635 [DEBUG] [Thread-155103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:53:25.635 [DEBUG] [Thread-155103] [transport.py] [_log()] Compression: none
2025-09-29T11:53:25.635 [DEBUG] [Thread-155103] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:53:25.700 [DEBUG] [Thread-155103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:53:25.701 [DEBUG] [Thread-155103] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:53:25.702 [DEBUG] [Thread-155103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:53:25.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:53:25.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:53:25.757 [DEBUG] [Thread-155103] [transport.py] [_log()] userauth is OK
2025-09-29T11:53:25.757 [DEBUG] [Thread-155103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:53:25.758 [DEBUG] [Thread-155103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:53:25.758 [DEBUG] [Thread-155103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:53:25.758 [DEBUG] [Thread-155103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:53:25.777 [INFO] [Thread-155103] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:53:25.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:53:25.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:26.721 [DEBUG] [Thread-155103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:26.721 [DEBUG] [Thread-155103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:26.769 [DEBUG] [Thread-155103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:26.769 [DEBUG] [Thread-155103] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:26.778 [DEBUG] [Thread-155103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:26.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:26.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:53:26.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:53:26.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:26.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:26.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:26.812 [DEBUG] [Thread-155103] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:36.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:53:36.807 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:53:36.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:53:37.321 [DEBUG] [Thread-155105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:53:37.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 53, 10), 10.15, 49.91, 0.0, 18.92, 12.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:53:37.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:53:10
2025-09-29T11:53:37.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:53:37.639 [DEBUG] [Thread-155106] [transport.py] [_log()] starting thread (client mode): 0x2b96bca0
2025-09-29T11:53:37.639 [DEBUG] [Thread-155106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:53:37.659 [DEBUG] [Thread-155106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:53:37.659 [INFO] [Thread-155106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:53:37.661 [DEBUG] [Thread-155106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] client lang: <none>
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] server lang: <none>
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] kex follows: False
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:53:37.662 [DEBUG] [Thread-155106] [transport.py] [_log()] Compression: none
2025-09-29T11:53:37.663 [DEBUG] [Thread-155106] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:53:37.677 [DEBUG] [Thread-155106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:53:37.678 [DEBUG] [Thread-155106] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:53:37.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:53:37.680 [DEBUG] [Thread-155106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:53:37.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:53:37.682 [DEBUG] [Thread-155106] [transport.py] [_log()] userauth is OK
2025-09-29T11:53:37.682 [DEBUG] [Thread-155106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:53:37.682 [DEBUG] [Thread-155106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:53:37.682 [DEBUG] [Thread-155106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:53:37.682 [DEBUG] [Thread-155106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:53:37.703 [INFO] [Thread-155106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:53:37.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:38.326 [DEBUG] [Thread-155106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:38.326 [DEBUG] [Thread-155106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:38.326 [DEBUG] [Thread-155106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:53:38.367 [DEBUG] [Thread-155106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:38.367 [DEBUG] [Thread-155106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:38.371 [DEBUG] [Thread-155106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:38.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:38.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:53:38.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:53:38.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:53:38.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:38.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:53:38.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:38.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:53:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.411877 -999.00  +12.30  15.78     55   +3.50 1 1 1 1 1   888    0 9.71 30.85 ----- 15.9 15.8 159.4 26.0 20.6 -25.4 19.4 -25.6 19.3 -25.7 20.6 -26.1
2025-09-29T11:53:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:53:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:53:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.411877
2025-09-29T11:53:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:53:38.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:53:38.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:53:38.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:53:38.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:53:38.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:53:10', tmtdew=10.15, humidity=49.91, cloud=0.0, wind=18.92, temperature=12.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:53:06.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:53:38.396 [DEBUG] [Thread-155106] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:38.479 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:53:38.492 [DEBUG] [Thread-155109] [transport.py] [_log()] starting thread (client mode): 0x28705ed0
2025-09-29T11:53:38.492 [DEBUG] [Thread-155109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:53:38.507 [DEBUG] [Thread-155109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:53:38.507 [INFO] [Thread-155109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:53:38.515 [DEBUG] [Thread-155109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:53:38.515 [DEBUG] [Thread-155109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:53:38.515 [DEBUG] [Thread-155109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:53:38.515 [DEBUG] [Thread-155109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:38.515 [DEBUG] [Thread-155109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] client lang: <none>
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] server lang: <none>
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] kex follows: False
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] Compression: none
2025-09-29T11:53:38.516 [DEBUG] [Thread-155109] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:53:38.572 [DEBUG] [Thread-155109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:53:38.573 [DEBUG] [Thread-155109] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:53:38.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:53:38.574 [DEBUG] [Thread-155109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:53:38.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:53:38.629 [DEBUG] [Thread-155109] [transport.py] [_log()] userauth is OK
2025-09-29T11:53:38.629 [DEBUG] [Thread-155109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:53:38.629 [DEBUG] [Thread-155109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:53:38.629 [DEBUG] [Thread-155109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:53:38.629 [DEBUG] [Thread-155109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:53:38.649 [INFO] [Thread-155109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:53:38.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:53:38.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:39.572 [DEBUG] [Thread-155109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:39.572 [DEBUG] [Thread-155109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:39.620 [DEBUG] [Thread-155109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:39.620 [DEBUG] [Thread-155109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:39.629 [DEBUG] [Thread-155109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:39.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:39.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:53:39.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:53:39.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:39.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:39.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:39.664 [DEBUG] [Thread-155109] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:39.809 [DEBUG] [Thread-155111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:53:42.333 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:53:42.335 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:53:49.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:53:49.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:53:49.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:53:50.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 53, 42), 9.93, 50.48, 0.0, 17.06, 12.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:53:50.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:53:42
2025-09-29T11:53:50.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:53:50.495 [DEBUG] [Thread-155112] [transport.py] [_log()] starting thread (client mode): 0x28704d60
2025-09-29T11:53:50.495 [DEBUG] [Thread-155112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:53:50.514 [DEBUG] [Thread-155112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:53:50.514 [INFO] [Thread-155112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] client lang: <none>
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] server lang: <none>
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] kex follows: False
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:53:50.517 [DEBUG] [Thread-155112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:53:50.518 [DEBUG] [Thread-155112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:53:50.518 [DEBUG] [Thread-155112] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:53:50.518 [DEBUG] [Thread-155112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:53:50.518 [DEBUG] [Thread-155112] [transport.py] [_log()] Compression: none
2025-09-29T11:53:50.518 [DEBUG] [Thread-155112] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:53:50.532 [DEBUG] [Thread-155112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:53:50.532 [DEBUG] [Thread-155112] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:53:50.532 [DEBUG] [Thread-155112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:53:50.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:53:50.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:53:50.533 [DEBUG] [Thread-155112] [transport.py] [_log()] userauth is OK
2025-09-29T11:53:50.533 [DEBUG] [Thread-155112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:53:50.533 [DEBUG] [Thread-155112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:53:50.533 [DEBUG] [Thread-155112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:53:50.533 [DEBUG] [Thread-155112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:53:50.542 [INFO] [Thread-155112] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:53:50.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:51.157 [DEBUG] [Thread-155112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:51.158 [DEBUG] [Thread-155112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:51.158 [DEBUG] [Thread-155112] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:53:51.198 [DEBUG] [Thread-155112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:51.198 [DEBUG] [Thread-155112] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:51.201 [DEBUG] [Thread-155112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:51.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:51.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:53:51.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:53:51.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:53:51.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:51.221 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:53:51.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:51.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:51.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:53:51.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.411877 -999.00  +12.30  15.78     55   +3.50 1 1 1 1 1   888    0 9.71 30.85 ----- 15.9 15.8 159.4 26.0 20.6 -25.4 19.4 -25.6 19.3 -25.7 20.6 -26.1
2025-09-29T11:53:51.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:53:51.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:53:51.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.411877
2025-09-29T11:53:51.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:53:51.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:53:51.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:53:51.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:53:51.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:53:51.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:53:42', tmtdew=9.93, humidity=50.48, cloud=0.0, wind=17.06, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:53:06.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:53:51.224 [DEBUG] [Thread-155112] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:51.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:53:51.318 [DEBUG] [Thread-155115] [transport.py] [_log()] starting thread (client mode): 0x2b96bb80
2025-09-29T11:53:51.319 [DEBUG] [Thread-155115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:53:51.333 [DEBUG] [Thread-155115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:53:51.333 [INFO] [Thread-155115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:53:51.341 [DEBUG] [Thread-155115] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:53:51.341 [DEBUG] [Thread-155115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:53:51.341 [DEBUG] [Thread-155115] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] client lang: <none>
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] server lang: <none>
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] kex follows: False
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] Compression: none
2025-09-29T11:53:51.342 [DEBUG] [Thread-155115] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:53:51.400 [DEBUG] [Thread-155115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:53:51.401 [DEBUG] [Thread-155115] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:53:51.401 [DEBUG] [Thread-155115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:53:51.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:53:51.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:53:51.457 [DEBUG] [Thread-155115] [transport.py] [_log()] userauth is OK
2025-09-29T11:53:51.457 [DEBUG] [Thread-155115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:53:51.457 [DEBUG] [Thread-155115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:53:51.457 [DEBUG] [Thread-155115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:53:51.457 [DEBUG] [Thread-155115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:53:51.480 [INFO] [Thread-155115] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:53:51.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:53:51.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:53:52.418 [DEBUG] [Thread-155115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:53:52.419 [DEBUG] [Thread-155115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:53:52.467 [DEBUG] [Thread-155115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:53:52.467 [DEBUG] [Thread-155115] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:53:52.476 [DEBUG] [Thread-155115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:53:52.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:53:52.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:53:52.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:53:52.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:53:52.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:53:52.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:53:52.520 [DEBUG] [Thread-155115] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:53:54.847 [DEBUG] [Thread-155117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:54:02.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:54:02.518 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:54:02.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:54:03.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 53, 42), 9.93, 50.48, 0.0, 17.06, 12.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:54:03.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:53:42
2025-09-29T11:54:03.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:54:03.351 [DEBUG] [Thread-155118] [transport.py] [_log()] starting thread (client mode): 0x28707fa0
2025-09-29T11:54:03.351 [DEBUG] [Thread-155118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:03.372 [DEBUG] [Thread-155118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:54:03.372 [INFO] [Thread-155118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:03.375 [DEBUG] [Thread-155118] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:03.376 [DEBUG] [Thread-155118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:03.376 [DEBUG] [Thread-155118] [transport.py] [_log()] Compression: none
2025-09-29T11:54:03.376 [DEBUG] [Thread-155118] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:03.399 [DEBUG] [Thread-155118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:03.399 [DEBUG] [Thread-155118] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:03.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:54:03.400 [DEBUG] [Thread-155118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:54:03.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:03.402 [DEBUG] [Thread-155118] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:03.402 [DEBUG] [Thread-155118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:03.402 [DEBUG] [Thread-155118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:03.402 [DEBUG] [Thread-155118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:54:03.402 [DEBUG] [Thread-155118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:03.424 [INFO] [Thread-155118] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:03.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:04.085 [DEBUG] [Thread-155118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:04.085 [DEBUG] [Thread-155118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:04.085 [DEBUG] [Thread-155118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:54:04.126 [DEBUG] [Thread-155118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:04.127 [DEBUG] [Thread-155118] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:04.130 [DEBUG] [Thread-155118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:04.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:04.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:54:04.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:54:04.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:54:04.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:04.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:54:04.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:04.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:04.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:54:04.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.411877 -999.00  +12.30  15.78     55   +3.50 1 1 1 1 1   888    0 9.71 30.85 ----- 15.9 15.8 159.4 26.0 20.6 -25.4 19.4 -25.6 19.3 -25.7 20.6 -26.1
2025-09-29T11:54:04.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:54:04.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:54:04.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.411877
2025-09-29T11:54:04.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:54:04.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:54:04.156 [DEBUG] [Thread-155118] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:04.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:54:04.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:54:04.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:54:04.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:53:42', tmtdew=9.93, humidity=50.48, cloud=0.0, wind=17.06, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:53:06.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:54:04.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:54:04.250 [DEBUG] [Thread-155121] [transport.py] [_log()] starting thread (client mode): 0x287077f0
2025-09-29T11:54:04.251 [DEBUG] [Thread-155121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:04.265 [DEBUG] [Thread-155121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:54:04.265 [INFO] [Thread-155121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:54:04.273 [DEBUG] [Thread-155121] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:04.273 [DEBUG] [Thread-155121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:54:04.273 [DEBUG] [Thread-155121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:04.273 [DEBUG] [Thread-155121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:04.273 [DEBUG] [Thread-155121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:04.273 [DEBUG] [Thread-155121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:04.274 [DEBUG] [Thread-155121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:04.275 [DEBUG] [Thread-155121] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:04.275 [DEBUG] [Thread-155121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:04.275 [DEBUG] [Thread-155121] [transport.py] [_log()] Compression: none
2025-09-29T11:54:04.275 [DEBUG] [Thread-155121] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:04.334 [DEBUG] [Thread-155121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:04.334 [DEBUG] [Thread-155121] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:04.335 [DEBUG] [Thread-155121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:54:04.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:54:04.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:04.393 [DEBUG] [Thread-155121] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:04.393 [DEBUG] [Thread-155121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:04.393 [DEBUG] [Thread-155121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:04.394 [DEBUG] [Thread-155121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:54:04.394 [DEBUG] [Thread-155121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:04.414 [INFO] [Thread-155121] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:04.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:54:04.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:05.336 [DEBUG] [Thread-155121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:05.336 [DEBUG] [Thread-155121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:05.384 [DEBUG] [Thread-155121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:05.384 [DEBUG] [Thread-155121] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:05.393 [DEBUG] [Thread-155121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:05.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:05.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:54:05.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:54:05.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:05.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:05.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:05.428 [DEBUG] [Thread-155121] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:09.891 [DEBUG] [Thread-155123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:54:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:54:15.431 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:54:15.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:54:16.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 53, 42), 9.93, 50.48, 0.0, 17.06, 12.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:54:16.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:53:42
2025-09-29T11:54:16.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:54:16.313 [DEBUG] [Thread-155124] [transport.py] [_log()] starting thread (client mode): 0x2e38d780
2025-09-29T11:54:16.313 [DEBUG] [Thread-155124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:16.334 [DEBUG] [Thread-155124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:54:16.334 [INFO] [Thread-155124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] Compression: none
2025-09-29T11:54:16.337 [DEBUG] [Thread-155124] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:16.353 [DEBUG] [Thread-155124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:16.353 [DEBUG] [Thread-155124] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:16.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:54:16.354 [DEBUG] [Thread-155124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:54:16.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:16.354 [DEBUG] [Thread-155124] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:16.354 [DEBUG] [Thread-155124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:16.354 [DEBUG] [Thread-155124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:16.354 [DEBUG] [Thread-155124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:54:16.354 [DEBUG] [Thread-155124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:16.370 [INFO] [Thread-155124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:16.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:16.986 [DEBUG] [Thread-155124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:16.986 [DEBUG] [Thread-155124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:16.986 [DEBUG] [Thread-155124] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:54:17.026 [DEBUG] [Thread-155124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:17.027 [DEBUG] [Thread-155124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:17.029 [DEBUG] [Thread-155124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:17.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:17.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:54:17.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:54:17.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:54:17.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:17.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:54:17.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:17.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:17.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:54:17.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.412224 -999.00  +12.30  17.00     54   +3.40 1 1 1 1 1   888    0 9.77 29.59 ----- 18.0 17.0 171.0 24.1 20.7 -25.2 19.4 -23.8 19.3 -25.4 20.6 -26.0
2025-09-29T11:54:17.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:54:17.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:54:17.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.412224
2025-09-29T11:54:17.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:54:17.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:54:17.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:54:17.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:54:17.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:54:17.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:53:42', tmtdew=9.93, humidity=50.48, cloud=0.0, wind=17.06, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:53:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:54:17.055 [DEBUG] [Thread-155124] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:17.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:54:17.148 [DEBUG] [Thread-155127] [transport.py] [_log()] starting thread (client mode): 0x2b969c90
2025-09-29T11:54:17.148 [DEBUG] [Thread-155127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:17.163 [DEBUG] [Thread-155127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:54:17.164 [INFO] [Thread-155127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:54:17.171 [DEBUG] [Thread-155127] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:17.171 [DEBUG] [Thread-155127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] Compression: none
2025-09-29T11:54:17.172 [DEBUG] [Thread-155127] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:17.228 [DEBUG] [Thread-155127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:17.229 [DEBUG] [Thread-155127] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:17.229 [DEBUG] [Thread-155127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:54:17.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:54:17.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:17.284 [DEBUG] [Thread-155127] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:17.284 [DEBUG] [Thread-155127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:17.285 [DEBUG] [Thread-155127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:17.285 [DEBUG] [Thread-155127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:54:17.285 [DEBUG] [Thread-155127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:17.306 [INFO] [Thread-155127] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:17.307 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:54:17.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:18.229 [DEBUG] [Thread-155127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:18.229 [DEBUG] [Thread-155127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:18.277 [DEBUG] [Thread-155127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:18.277 [DEBUG] [Thread-155127] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:18.286 [DEBUG] [Thread-155127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:18.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:18.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:54:18.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:54:18.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:18.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:18.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:18.321 [DEBUG] [Thread-155127] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:24.917 [DEBUG] [Thread-155129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:54:28.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:54:28.322 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:54:28.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:54:28.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 54, 14), 9.96, 50.36, 0.0, 21.28, 12.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:54:28.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:54:14
2025-09-29T11:54:28.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:54:29.146 [DEBUG] [Thread-155130] [transport.py] [_log()] starting thread (client mode): 0x28707ac0
2025-09-29T11:54:29.146 [DEBUG] [Thread-155130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:29.166 [DEBUG] [Thread-155130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:54:29.166 [INFO] [Thread-155130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:54:29.169 [DEBUG] [Thread-155130] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:29.169 [DEBUG] [Thread-155130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:54:29.169 [DEBUG] [Thread-155130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:29.169 [DEBUG] [Thread-155130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:29.169 [DEBUG] [Thread-155130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:29.169 [DEBUG] [Thread-155130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:29.170 [DEBUG] [Thread-155130] [transport.py] [_log()] Compression: none
2025-09-29T11:54:29.171 [DEBUG] [Thread-155130] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:29.188 [DEBUG] [Thread-155130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:29.188 [DEBUG] [Thread-155130] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:29.189 [DEBUG] [Thread-155130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:54:29.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:54:29.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:29.191 [DEBUG] [Thread-155130] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:29.191 [DEBUG] [Thread-155130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:29.192 [DEBUG] [Thread-155130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:29.192 [DEBUG] [Thread-155130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:54:29.192 [DEBUG] [Thread-155130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:29.215 [INFO] [Thread-155130] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:29.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:29.875 [DEBUG] [Thread-155130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:29.875 [DEBUG] [Thread-155130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:29.876 [DEBUG] [Thread-155130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:54:29.916 [DEBUG] [Thread-155130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:29.917 [DEBUG] [Thread-155130] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:29.920 [DEBUG] [Thread-155130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:29.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:29.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:54:29.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:54:29.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:54:29.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:29.944 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:54:29.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:29.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:29.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:54:29.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.412224 -999.00  +12.30  17.00     54   +3.40 1 1 1 1 1   888    0 9.77 29.59 ----- 18.0 17.0 171.0 24.1 20.7 -25.2 19.4 -23.8 19.3 -25.4 20.6 -26.0
2025-09-29T11:54:29.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:54:29.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:54:29.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.412224
2025-09-29T11:54:29.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:54:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:54:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:54:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:54:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:54:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:54:14', tmtdew=9.96, humidity=50.36, cloud=0.0, wind=21.28, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:53:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:54:29.947 [DEBUG] [Thread-155130] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:30.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:54:30.043 [DEBUG] [Thread-155133] [transport.py] [_log()] starting thread (client mode): 0x2b957160
2025-09-29T11:54:30.043 [DEBUG] [Thread-155133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:30.059 [DEBUG] [Thread-155133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:54:30.059 [INFO] [Thread-155133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:54:30.066 [DEBUG] [Thread-155133] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] Compression: none
2025-09-29T11:54:30.067 [DEBUG] [Thread-155133] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:30.123 [DEBUG] [Thread-155133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:30.124 [DEBUG] [Thread-155133] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:30.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:54:30.125 [DEBUG] [Thread-155133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:54:30.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:30.180 [DEBUG] [Thread-155133] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:30.180 [DEBUG] [Thread-155133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:30.180 [DEBUG] [Thread-155133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:30.181 [DEBUG] [Thread-155133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:54:30.181 [DEBUG] [Thread-155133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:30.200 [INFO] [Thread-155133] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:30.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:54:30.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:31.173 [DEBUG] [Thread-155133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:31.173 [DEBUG] [Thread-155133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:31.221 [DEBUG] [Thread-155133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:31.221 [DEBUG] [Thread-155133] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:31.230 [DEBUG] [Thread-155133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:31.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:31.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:54:31.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:54:31.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:31.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:31.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:31.265 [DEBUG] [Thread-155133] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:37.373 [DEBUG] [Thread-155135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:54:39.961 [DEBUG] [Thread-155136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:54:41.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:54:41.266 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:54:41.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:54:41.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 54, 14), 9.96, 50.36, 0.0, 21.28, 12.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:54:41.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:54:14
2025-09-29T11:54:41.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:54:42.093 [DEBUG] [Thread-155137] [transport.py] [_log()] starting thread (client mode): 0x2b96bf70
2025-09-29T11:54:42.093 [DEBUG] [Thread-155137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:42.114 [DEBUG] [Thread-155137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:54:42.114 [INFO] [Thread-155137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:54:42.117 [DEBUG] [Thread-155137] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] Compression: none
2025-09-29T11:54:42.118 [DEBUG] [Thread-155137] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:42.130 [DEBUG] [Thread-155137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:42.130 [DEBUG] [Thread-155137] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:42.130 [DEBUG] [Thread-155137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:54:42.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:54:42.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:42.131 [DEBUG] [Thread-155137] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:42.131 [DEBUG] [Thread-155137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:42.131 [DEBUG] [Thread-155137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:42.131 [DEBUG] [Thread-155137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:54:42.131 [DEBUG] [Thread-155137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:42.140 [INFO] [Thread-155137] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:42.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:42.474 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:54:42.475 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:54:42.791 [DEBUG] [Thread-155137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:42.791 [DEBUG] [Thread-155137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:42.792 [DEBUG] [Thread-155137] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:54:42.832 [DEBUG] [Thread-155137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:42.833 [DEBUG] [Thread-155137] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:42.835 [DEBUG] [Thread-155137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:42.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:42.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:54:42.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:54:42.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:54:42.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:42.861 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:54:42.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:42.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:42.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:54:42.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.412918 -999.00  +12.30  17.45     54   +3.40 1 1 1 1 1   888    0 9.86 30.04 ----- 18.4 17.4 169.4 26.0 20.6 -25.5 19.2 -24.5 19.2 -24.3 20.5 -25.4
2025-09-29T11:54:42.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:54:42.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:54:42.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.412918
2025-09-29T11:54:42.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:54:42.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:54:42.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:54:42.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:54:42.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:54:42.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:54:14', tmtdew=9.96, humidity=50.36, cloud=0.0, wind=21.28, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:54:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:54:42.864 [DEBUG] [Thread-155137] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:42.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:54:42.962 [DEBUG] [Thread-155140] [transport.py] [_log()] starting thread (client mode): 0x2e38ef20
2025-09-29T11:54:42.963 [DEBUG] [Thread-155140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:42.977 [DEBUG] [Thread-155140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:54:42.977 [INFO] [Thread-155140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:54:42.984 [DEBUG] [Thread-155140] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:42.985 [DEBUG] [Thread-155140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:42.986 [DEBUG] [Thread-155140] [transport.py] [_log()] Compression: none
2025-09-29T11:54:42.986 [DEBUG] [Thread-155140] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:43.043 [DEBUG] [Thread-155140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:43.044 [DEBUG] [Thread-155140] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:43.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:54:43.044 [DEBUG] [Thread-155140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:54:43.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:43.100 [DEBUG] [Thread-155140] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:43.100 [DEBUG] [Thread-155140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:43.100 [DEBUG] [Thread-155140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:43.100 [DEBUG] [Thread-155140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:54:43.100 [DEBUG] [Thread-155140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:43.120 [INFO] [Thread-155140] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:43.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:54:43.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:44.033 [DEBUG] [Thread-155140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:44.033 [DEBUG] [Thread-155140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:44.081 [DEBUG] [Thread-155140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:44.081 [DEBUG] [Thread-155140] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:44.089 [DEBUG] [Thread-155140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:44.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:44.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:54:44.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:54:44.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:44.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:44.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:44.121 [DEBUG] [Thread-155140] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:54.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:54:54.122 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:54:54.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:54:54.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 54, 46), 10.03, 49.98, 0.0, 24.72, 12.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:54:54.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:54:46
2025-09-29T11:54:54.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:54:54.951 [DEBUG] [Thread-155142] [transport.py] [_log()] starting thread (client mode): 0x287078e0
2025-09-29T11:54:54.951 [DEBUG] [Thread-155142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:54.971 [DEBUG] [Thread-155142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:54:54.971 [INFO] [Thread-155142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] Compression: none
2025-09-29T11:54:54.974 [DEBUG] [Thread-155142] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:54.990 [DEBUG] [Thread-155142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:54.991 [DEBUG] [Thread-155142] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:54.991 [DEBUG] [Thread-155142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:54:54.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:54:54.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:55.007 [DEBUG] [Thread-155144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:54:55.033 [DEBUG] [Thread-155142] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:55.034 [DEBUG] [Thread-155142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:55.034 [DEBUG] [Thread-155142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:55.034 [DEBUG] [Thread-155142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:54:55.034 [DEBUG] [Thread-155142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:55.069 [INFO] [Thread-155142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:55.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:55.703 [DEBUG] [Thread-155142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:55.703 [DEBUG] [Thread-155142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:55.703 [DEBUG] [Thread-155142] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:54:55.744 [DEBUG] [Thread-155142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:55.744 [DEBUG] [Thread-155142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:55.747 [DEBUG] [Thread-155142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:55.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:55.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:54:55.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:54:55.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:54:55.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:55.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:54:55.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:55.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:55.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:54:55.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.412918 -999.00  +12.30  17.45     54   +3.40 1 1 1 1 1   888    0 9.86 30.04 ----- 18.4 17.4 169.4 26.0 20.6 -25.5 19.2 -24.5 19.2 -24.3 20.5 -25.4
2025-09-29T11:54:55.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:54:55.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:54:55.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.412918
2025-09-29T11:54:55.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:54:55.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:54:55.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:54:55.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:54:55.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:54:55.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:54:46', tmtdew=10.03, humidity=49.98, cloud=0.0, wind=24.72, temperature=12.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:54:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:54:55.771 [DEBUG] [Thread-155142] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:54:55.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:54:55.865 [DEBUG] [Thread-155146] [transport.py] [_log()] starting thread (client mode): 0x2e38c730
2025-09-29T11:54:55.865 [DEBUG] [Thread-155146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:54:55.879 [DEBUG] [Thread-155146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:54:55.879 [INFO] [Thread-155146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:54:55.887 [DEBUG] [Thread-155146] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:54:55.887 [DEBUG] [Thread-155146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] client lang: <none>
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] server lang: <none>
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] kex follows: False
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] Compression: none
2025-09-29T11:54:55.888 [DEBUG] [Thread-155146] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:54:55.944 [DEBUG] [Thread-155146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:54:55.944 [DEBUG] [Thread-155146] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:54:55.944 [DEBUG] [Thread-155146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:54:55.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:54:55.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:54:56.000 [DEBUG] [Thread-155146] [transport.py] [_log()] userauth is OK
2025-09-29T11:54:56.000 [DEBUG] [Thread-155146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:54:56.000 [DEBUG] [Thread-155146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:54:56.000 [DEBUG] [Thread-155146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:54:56.000 [DEBUG] [Thread-155146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:54:56.019 [INFO] [Thread-155146] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:54:56.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:54:56.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:54:56.947 [DEBUG] [Thread-155146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:54:56.947 [DEBUG] [Thread-155146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:54:56.995 [DEBUG] [Thread-155146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:54:56.996 [DEBUG] [Thread-155146] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:54:57.004 [DEBUG] [Thread-155146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:54:57.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:54:57.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:54:57.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:54:57.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:54:57.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:54:57.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:54:57.040 [DEBUG] [Thread-155146] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:55:07.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:55:07.043 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:55:07.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:55:07.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 54, 46), 10.03, 49.98, 0.0, 24.72, 12.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:55:07.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:54:46
2025-09-29T11:55:07.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:55:07.864 [DEBUG] [Thread-155148] [transport.py] [_log()] starting thread (client mode): 0x2b956e30
2025-09-29T11:55:07.864 [DEBUG] [Thread-155148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:55:07.880 [DEBUG] [Thread-155148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:55:07.880 [INFO] [Thread-155148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] client lang: <none>
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] server lang: <none>
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] kex follows: False
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] Compression: none
2025-09-29T11:55:07.884 [DEBUG] [Thread-155148] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:55:07.896 [DEBUG] [Thread-155148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:55:07.896 [DEBUG] [Thread-155148] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:55:07.896 [DEBUG] [Thread-155148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:55:07.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:55:07.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:55:07.898 [DEBUG] [Thread-155148] [transport.py] [_log()] userauth is OK
2025-09-29T11:55:07.898 [DEBUG] [Thread-155148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:55:07.898 [DEBUG] [Thread-155148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:55:07.898 [DEBUG] [Thread-155148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:55:07.898 [DEBUG] [Thread-155148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:55:07.916 [INFO] [Thread-155148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:55:07.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:55:10.059 [DEBUG] [Thread-155150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:55:14.936 [DEBUG] [Thread-155148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:55:14.937 [DEBUG] [Thread-155148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:55:14.937 [DEBUG] [Thread-155148] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:55:14.977 [DEBUG] [Thread-155148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:55:14.978 [DEBUG] [Thread-155148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:55:14.982 [DEBUG] [Thread-155148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:55:14.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:55:14.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:55:14.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:55:14.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:55:15.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:55:15.004 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:55:15.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:55:15.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:55:15.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:55:15.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.412918 -999.00  +12.30  17.45     54   +3.40 1 1 1 1 1   888    0 9.86 30.04 ----- 18.4 17.4 169.4 26.0 20.6 -25.5 19.2 -24.5 19.2 -24.3 20.5 -25.4
2025-09-29T11:55:15.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:55:15.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:55:15.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.412918
2025-09-29T11:55:15.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:55:15.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:55:15.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:55:15.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:55:15.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:55:15.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:54:46', tmtdew=10.03, humidity=49.98, cloud=0.0, wind=24.72, temperature=12.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:54:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:55:15.007 [DEBUG] [Thread-155148] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:55:15.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:55:15.103 [DEBUG] [Thread-155152] [transport.py] [_log()] starting thread (client mode): 0x2b9c15d0
2025-09-29T11:55:15.103 [DEBUG] [Thread-155152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:55:15.118 [DEBUG] [Thread-155152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:55:15.118 [INFO] [Thread-155152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:55:15.126 [DEBUG] [Thread-155152] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:55:15.126 [DEBUG] [Thread-155152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:55:15.126 [DEBUG] [Thread-155152] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:55:15.126 [DEBUG] [Thread-155152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] client lang: <none>
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] server lang: <none>
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] kex follows: False
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] Compression: none
2025-09-29T11:55:15.127 [DEBUG] [Thread-155152] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:55:15.183 [DEBUG] [Thread-155152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:55:15.183 [DEBUG] [Thread-155152] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:55:15.184 [DEBUG] [Thread-155152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:55:15.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:55:15.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:55:15.239 [DEBUG] [Thread-155152] [transport.py] [_log()] userauth is OK
2025-09-29T11:55:15.240 [DEBUG] [Thread-155152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:55:15.240 [DEBUG] [Thread-155152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:55:15.240 [DEBUG] [Thread-155152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:55:15.240 [DEBUG] [Thread-155152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:55:15.258 [INFO] [Thread-155152] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:55:15.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:55:15.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:55:16.220 [DEBUG] [Thread-155152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:55:16.220 [DEBUG] [Thread-155152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:55:16.268 [DEBUG] [Thread-155152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:55:16.268 [DEBUG] [Thread-155152] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:55:16.277 [DEBUG] [Thread-155152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:55:16.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:55:16.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:55:16.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:55:16.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:55:16.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:55:16.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:55:16.312 [DEBUG] [Thread-155152] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:55:25.101 [DEBUG] [Thread-155154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:55:26.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:55:26.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:55:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:55:26.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 55, 18), 10.09, 49.78, 0.0, 23.49, 12.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:55:26.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:55:18
2025-09-29T11:55:27.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:55:27.168 [DEBUG] [Thread-155155] [transport.py] [_log()] starting thread (client mode): 0x28706920
2025-09-29T11:55:27.169 [DEBUG] [Thread-155155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:55:27.189 [DEBUG] [Thread-155155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:55:27.189 [INFO] [Thread-155155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:55:27.191 [DEBUG] [Thread-155155] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:55:27.191 [DEBUG] [Thread-155155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:55:27.191 [DEBUG] [Thread-155155] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] client lang: <none>
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] server lang: <none>
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] kex follows: False
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] Compression: none
2025-09-29T11:55:27.192 [DEBUG] [Thread-155155] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:55:27.207 [DEBUG] [Thread-155155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:55:27.207 [DEBUG] [Thread-155155] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:55:27.208 [DEBUG] [Thread-155155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:55:27.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:55:27.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:55:27.208 [DEBUG] [Thread-155155] [transport.py] [_log()] userauth is OK
2025-09-29T11:55:27.208 [DEBUG] [Thread-155155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:55:27.208 [DEBUG] [Thread-155155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:55:27.208 [DEBUG] [Thread-155155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:55:27.208 [DEBUG] [Thread-155155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:55:27.223 [INFO] [Thread-155155] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:55:27.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:55:27.886 [DEBUG] [Thread-155155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:55:27.886 [DEBUG] [Thread-155155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:55:27.887 [DEBUG] [Thread-155155] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:55:27.927 [DEBUG] [Thread-155155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:55:27.928 [DEBUG] [Thread-155155] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:55:27.930 [DEBUG] [Thread-155155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:55:27.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:55:27.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:55:27.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:55:27.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:55:27.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:55:27.956 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:55:27.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:55:27.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:55:27.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:55:27.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.413265 -999.00  +12.40  12.42     54   +3.40 1 1 1 1 1   888    0 9.85 29.36 ----- 11.2 12.4 178.2 18.0 20.7 -25.0 19.3 -23.3 19.3 -25.3 20.6 -26.2
2025-09-29T11:55:27.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:55:27.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:55:27.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.413265
2025-09-29T11:55:27.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:55:27.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:55:27.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:55:27.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:55:27.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:55:27.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:55:18', tmtdew=10.09, humidity=49.78, cloud=0.0, wind=23.49, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:55:06.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:55:27.959 [DEBUG] [Thread-155155] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:55:28.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:55:28.055 [DEBUG] [Thread-155158] [transport.py] [_log()] starting thread (client mode): 0x2b954310
2025-09-29T11:55:28.055 [DEBUG] [Thread-155158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:55:28.069 [DEBUG] [Thread-155158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:55:28.070 [INFO] [Thread-155158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:55:28.077 [DEBUG] [Thread-155158] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:55:28.077 [DEBUG] [Thread-155158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:55:28.077 [DEBUG] [Thread-155158] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:55:28.077 [DEBUG] [Thread-155158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:28.077 [DEBUG] [Thread-155158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:28.077 [DEBUG] [Thread-155158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:28.077 [DEBUG] [Thread-155158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] client lang: <none>
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] server lang: <none>
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] kex follows: False
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] Compression: none
2025-09-29T11:55:28.078 [DEBUG] [Thread-155158] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:55:28.134 [DEBUG] [Thread-155158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:55:28.134 [DEBUG] [Thread-155158] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:55:28.134 [DEBUG] [Thread-155158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:55:28.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:55:28.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:55:28.191 [DEBUG] [Thread-155158] [transport.py] [_log()] userauth is OK
2025-09-29T11:55:28.191 [DEBUG] [Thread-155158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:55:28.191 [DEBUG] [Thread-155158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:55:28.191 [DEBUG] [Thread-155158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:55:28.191 [DEBUG] [Thread-155158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:55:28.205 [INFO] [Thread-155158] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:55:28.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:55:28.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:55:29.233 [DEBUG] [Thread-155158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:55:29.233 [DEBUG] [Thread-155158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:55:29.281 [DEBUG] [Thread-155158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:55:29.281 [DEBUG] [Thread-155158] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:55:29.290 [DEBUG] [Thread-155158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:55:29.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:55:29.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:55:29.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:55:29.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:55:29.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:55:29.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:55:29.325 [DEBUG] [Thread-155158] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:55:37.423 [DEBUG] [Thread-155160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:55:39.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:55:39.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:55:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:55:39.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 55, 18), 10.09, 49.78, 0.0, 23.49, 12.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:55:39.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:55:18
2025-09-29T11:55:40.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:55:40.131 [DEBUG] [Thread-155161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:55:40.154 [DEBUG] [Thread-155162] [transport.py] [_log()] starting thread (client mode): 0x2b96fb50
2025-09-29T11:55:40.154 [DEBUG] [Thread-155162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:55:40.174 [DEBUG] [Thread-155162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:55:40.174 [INFO] [Thread-155162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:55:40.177 [DEBUG] [Thread-155162] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] client lang: <none>
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] server lang: <none>
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] kex follows: False
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] Compression: none
2025-09-29T11:55:40.178 [DEBUG] [Thread-155162] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:55:40.195 [DEBUG] [Thread-155162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:55:40.196 [DEBUG] [Thread-155162] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:55:40.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:55:40.197 [DEBUG] [Thread-155162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:55:40.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:55:40.198 [DEBUG] [Thread-155162] [transport.py] [_log()] userauth is OK
2025-09-29T11:55:40.199 [DEBUG] [Thread-155162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:55:40.199 [DEBUG] [Thread-155162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:55:40.199 [DEBUG] [Thread-155162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:55:40.199 [DEBUG] [Thread-155162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:55:40.234 [INFO] [Thread-155162] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:55:40.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:55:40.889 [DEBUG] [Thread-155162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:55:40.889 [DEBUG] [Thread-155162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:55:40.890 [DEBUG] [Thread-155162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:55:40.930 [DEBUG] [Thread-155162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:55:40.930 [DEBUG] [Thread-155162] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:55:40.933 [DEBUG] [Thread-155162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:55:40.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:55:40.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:55:40.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:55:40.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:55:40.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:55:40.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:55:40.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:55:40.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:55:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:55:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.413265 -999.00  +12.40  12.42     54   +3.40 1 1 1 1 1   888    0 9.85 29.36 ----- 11.2 12.4 178.2 18.0 20.7 -25.0 19.3 -23.3 19.3 -25.3 20.6 -26.2
2025-09-29T11:55:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:55:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:55:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.413265
2025-09-29T11:55:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:55:40.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:55:40.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:55:40.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:55:40.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:55:40.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:55:18', tmtdew=10.09, humidity=49.78, cloud=0.0, wind=23.49, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:55:06.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:55:40.959 [DEBUG] [Thread-155162] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:55:41.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:55:41.056 [DEBUG] [Thread-155165] [transport.py] [_log()] starting thread (client mode): 0x2b955030
2025-09-29T11:55:41.056 [DEBUG] [Thread-155165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:55:41.070 [DEBUG] [Thread-155165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:55:41.070 [INFO] [Thread-155165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:55:41.078 [DEBUG] [Thread-155165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] client lang: <none>
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] server lang: <none>
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] kex follows: False
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] Compression: none
2025-09-29T11:55:41.079 [DEBUG] [Thread-155165] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:55:41.135 [DEBUG] [Thread-155165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:55:41.135 [DEBUG] [Thread-155165] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:55:41.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:55:41.136 [DEBUG] [Thread-155165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:55:41.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:55:41.191 [DEBUG] [Thread-155165] [transport.py] [_log()] userauth is OK
2025-09-29T11:55:41.191 [DEBUG] [Thread-155165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:55:41.191 [DEBUG] [Thread-155165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:55:41.191 [DEBUG] [Thread-155165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:55:41.191 [DEBUG] [Thread-155165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:55:41.210 [INFO] [Thread-155165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:55:41.210 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:55:41.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:55:42.236 [DEBUG] [Thread-155165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:55:42.236 [DEBUG] [Thread-155165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:55:42.284 [DEBUG] [Thread-155165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:55:42.284 [DEBUG] [Thread-155165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:55:42.293 [DEBUG] [Thread-155165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:55:42.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:55:42.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:55:42.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:55:42.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:55:42.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:55:42.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:55:42.327 [DEBUG] [Thread-155165] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:55:42.615 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:55:42.616 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:55:52.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:55:52.328 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:55:52.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:55:52.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 55, 18), 10.09, 49.78, 0.0, 23.49, 12.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:55:52.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:55:18
2025-09-29T11:55:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:55:53.167 [DEBUG] [Thread-155167] [transport.py] [_log()] starting thread (client mode): 0x2b96a980
2025-09-29T11:55:53.167 [DEBUG] [Thread-155167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:55:53.188 [DEBUG] [Thread-155167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:55:53.188 [INFO] [Thread-155167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:55:53.191 [DEBUG] [Thread-155167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:55:53.191 [DEBUG] [Thread-155167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] client lang: <none>
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] server lang: <none>
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] kex follows: False
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] Compression: none
2025-09-29T11:55:53.192 [DEBUG] [Thread-155167] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:55:53.207 [DEBUG] [Thread-155167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:55:53.207 [DEBUG] [Thread-155167] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:55:53.208 [DEBUG] [Thread-155167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:55:53.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:55:53.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:55:53.209 [DEBUG] [Thread-155167] [transport.py] [_log()] userauth is OK
2025-09-29T11:55:53.209 [DEBUG] [Thread-155167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:55:53.210 [DEBUG] [Thread-155167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:55:53.210 [DEBUG] [Thread-155167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:55:53.210 [DEBUG] [Thread-155167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:55:53.229 [INFO] [Thread-155167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:55:53.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:55:53.845 [DEBUG] [Thread-155167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:55:53.845 [DEBUG] [Thread-155167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:55:53.845 [DEBUG] [Thread-155167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:55:53.886 [DEBUG] [Thread-155167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:55:53.887 [DEBUG] [Thread-155167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:55:53.890 [DEBUG] [Thread-155167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:55:53.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:55:53.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:55:53.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:55:53.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:55:53.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:55:53.908 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:55:53.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:55:53.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:55:53.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:55:53.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.413613 -999.00  +12.50  11.74     53   +3.30 1 1 1 1 1   888    0 9.90 28.73 ----- 9.0 11.7 121.8 16.1 20.8 -25.8 19.3 -23.2 19.4 -24.0 20.6 -24.9
2025-09-29T11:55:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:55:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:55:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.413613
2025-09-29T11:55:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:55:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:55:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:55:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:55:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:55:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:55:18', tmtdew=10.09, humidity=49.78, cloud=0.0, wind=23.49, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:55:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:55:53.911 [DEBUG] [Thread-155167] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:55:53.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:55:54.006 [DEBUG] [Thread-155170] [transport.py] [_log()] starting thread (client mode): 0x28707610
2025-09-29T11:55:54.007 [DEBUG] [Thread-155170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:55:54.022 [DEBUG] [Thread-155170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T11:55:54.022 [INFO] [Thread-155170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T11:55:54.030 [DEBUG] [Thread-155170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:55:54.030 [DEBUG] [Thread-155170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T11:55:54.030 [DEBUG] [Thread-155170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:55:54.030 [DEBUG] [Thread-155170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:54.030 [DEBUG] [Thread-155170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] client lang: <none>
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] server lang: <none>
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] kex follows: False
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] Compression: none
2025-09-29T11:55:54.031 [DEBUG] [Thread-155170] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:55:54.091 [DEBUG] [Thread-155170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:55:54.092 [DEBUG] [Thread-155170] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:55:54.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T11:55:54.093 [DEBUG] [Thread-155170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T11:55:54.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:55:54.147 [DEBUG] [Thread-155170] [transport.py] [_log()] userauth is OK
2025-09-29T11:55:54.147 [DEBUG] [Thread-155170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:55:54.147 [DEBUG] [Thread-155170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:55:54.147 [DEBUG] [Thread-155170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T11:55:54.148 [DEBUG] [Thread-155170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:55:54.166 [INFO] [Thread-155170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:55:54.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T11:55:54.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:55:55.112 [DEBUG] [Thread-155170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:55:55.112 [DEBUG] [Thread-155170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:55:55.160 [DEBUG] [Thread-155170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:55:55.160 [DEBUG] [Thread-155170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:55:55.167 [DEBUG] [Thread-155172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:55:55.169 [DEBUG] [Thread-155170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:55:55.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:55:55.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T11:55:55.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T11:55:55.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:55:55.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:55:55.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:55:55.204 [DEBUG] [Thread-155170] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:56:05.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:56:05.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:56:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:56:05.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 55, 50), 9.9, 50.7, 0.0, 12.88, 11.97, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:56:05.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:55:50
2025-09-29T11:56:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:56:06.050 [DEBUG] [Thread-155173] [transport.py] [_log()] starting thread (client mode): 0x2b96dff0
2025-09-29T11:56:06.050 [DEBUG] [Thread-155173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:56:06.070 [DEBUG] [Thread-155173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:56:06.070 [INFO] [Thread-155173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] client lang: <none>
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] server lang: <none>
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] kex follows: False
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:56:06.073 [DEBUG] [Thread-155173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:56:06.074 [DEBUG] [Thread-155173] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:56:06.074 [DEBUG] [Thread-155173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:56:06.074 [DEBUG] [Thread-155173] [transport.py] [_log()] Compression: none
2025-09-29T11:56:06.074 [DEBUG] [Thread-155173] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:56:06.089 [DEBUG] [Thread-155173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:56:06.089 [DEBUG] [Thread-155173] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:56:06.089 [DEBUG] [Thread-155173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:56:06.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:56:06.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:56:06.091 [DEBUG] [Thread-155173] [transport.py] [_log()] userauth is OK
2025-09-29T11:56:06.092 [DEBUG] [Thread-155173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:56:06.092 [DEBUG] [Thread-155173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:56:06.092 [DEBUG] [Thread-155173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:56:06.092 [DEBUG] [Thread-155173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:56:06.127 [INFO] [Thread-155173] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:56:06.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:56:06.816 [DEBUG] [Thread-155173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:56:06.816 [DEBUG] [Thread-155173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:56:06.816 [DEBUG] [Thread-155173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:56:06.857 [DEBUG] [Thread-155173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:56:06.857 [DEBUG] [Thread-155173] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:56:06.860 [DEBUG] [Thread-155173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:56:06.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:56:06.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:56:06.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:56:06.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:56:06.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:56:06.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:56:06.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:56:06.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:56:06.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:56:06.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.413613 -999.00  +12.50  11.74     53   +3.30 1 1 1 1 1   888    0 9.90 28.73 ----- 9.0 11.7 121.8 16.1 20.8 -25.8 19.3 -23.2 19.4 -24.0 20.6 -24.9
2025-09-29T11:56:06.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:56:06.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:56:06.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.413613
2025-09-29T11:56:06.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:56:06.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:56:06.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:56:06.888 [DEBUG] [Thread-155173] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:56:06.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:56:06.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:56:06.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:55:50', tmtdew=9.9, humidity=50.7, cloud=0.0, wind=12.88, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:55:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:56:06.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:56:10.209 [DEBUG] [Thread-155176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:56:25.262 [DEBUG] [Thread-155177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:56:37.470 [DEBUG] [Thread-155178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:56:40.294 [DEBUG] [Thread-155179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:56:42.759 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:56:42.760 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:56:55.319 [DEBUG] [Thread-155180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:57:10.347 [DEBUG] [Thread-155181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:57:25.377 [DEBUG] [Thread-155182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:57:37.520 [DEBUG] [Thread-155183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:57:40.408 [DEBUG] [Thread-155184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:57:42.901 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:57:42.902 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:57:55.434 [DEBUG] [Thread-155185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:58:10.463 [DEBUG] [Thread-155186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:58:20.603 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T11:58:25.493 [DEBUG] [Thread-155187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:58:30.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T11:58:30.612 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T11:58:30.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T11:58:31.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 11, 57, 26), 10.45, 48.88, 0.0, 13.57, 12.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T11:58:31.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 11:57:26
2025-09-29T11:58:31.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T11:58:31.488 [DEBUG] [Thread-155188] [transport.py] [_log()] starting thread (client mode): 0x2b96ce50
2025-09-29T11:58:31.489 [DEBUG] [Thread-155188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T11:58:31.509 [DEBUG] [Thread-155188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T11:58:31.509 [INFO] [Thread-155188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T11:58:31.512 [DEBUG] [Thread-155188] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T11:58:31.512 [DEBUG] [Thread-155188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T11:58:31.512 [DEBUG] [Thread-155188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T11:58:31.512 [DEBUG] [Thread-155188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:58:31.512 [DEBUG] [Thread-155188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] client lang: <none>
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] server lang: <none>
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] kex follows: False
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] Compression: none
2025-09-29T11:58:31.513 [DEBUG] [Thread-155188] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T11:58:31.530 [DEBUG] [Thread-155188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T11:58:31.531 [DEBUG] [Thread-155188] [transport.py] [_log()] Switch to new keys ...
2025-09-29T11:58:31.531 [DEBUG] [Thread-155188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T11:58:31.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T11:58:31.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T11:58:31.533 [DEBUG] [Thread-155188] [transport.py] [_log()] userauth is OK
2025-09-29T11:58:31.534 [DEBUG] [Thread-155188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T11:58:31.534 [DEBUG] [Thread-155188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T11:58:31.534 [DEBUG] [Thread-155188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T11:58:31.534 [DEBUG] [Thread-155188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T11:58:31.557 [INFO] [Thread-155188] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T11:58:31.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T11:58:32.194 [DEBUG] [Thread-155188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T11:58:32.194 [DEBUG] [Thread-155188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T11:58:32.194 [DEBUG] [Thread-155188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T11:58:32.235 [DEBUG] [Thread-155188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T11:58:32.235 [DEBUG] [Thread-155188] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T11:58:32.238 [DEBUG] [Thread-155188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T11:58:32.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T11:58:32.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T11:58:32.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T11:58:32.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T11:58:32.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T11:58:32.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T11:58:32.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T11:58:32.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T11:58:32.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T11:58:32.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.415002 -999.00  +13.50  15.65     51   +3.60 1 1 1 1 1   888    0 9.83 33.37 ----- 15.2 15.7 177.4 19.9 21.1 -24.4 19.5 -23.2 19.5 -25.4 20.8 -26.9
2025-09-29T11:58:32.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T11:58:32.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T11:58:32.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.415002
2025-09-29T11:58:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T11:58:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T11:58:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T11:58:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T11:58:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T11:58:32.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T11:57:26', tmtdew=10.45, humidity=48.88, cloud=0.0, wind=13.57, temperature=12.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T09:57:36.173', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T11:58:32.264 [DEBUG] [Thread-155188] [transport.py] [_log()] EOF in transport thread
2025-09-29T11:58:32.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T11:58:37.566 [DEBUG] [Thread-155191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:58:40.523 [DEBUG] [Thread-155192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:58:43.042 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:58:43.044 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:58:55.565 [DEBUG] [Thread-155193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:59:10.597 [DEBUG] [Thread-155194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:59:25.626 [DEBUG] [Thread-155195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:59:37.616 [DEBUG] [Thread-155196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:59:40.656 [DEBUG] [Thread-155197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:59:43.186 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:59:43.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T11:59:55.682 [DEBUG] [Thread-155198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:00:10.711 [DEBUG] [Thread-155199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:00:25.740 [DEBUG] [Thread-155200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:00:37.677 [DEBUG] [Thread-155201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:00:40.774 [DEBUG] [Thread-155202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:00:43.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:00:43.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:00:43.962 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T12:00:53.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:00:53.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:00:53.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:00:54.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 0, 42), 10.67, 47.92, 0.0, 16.41, 12.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:00:54.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:00:42
2025-09-29T12:00:54.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:00:54.841 [DEBUG] [Thread-155203] [transport.py] [_log()] starting thread (client mode): 0x2b968550
2025-09-29T12:00:54.842 [DEBUG] [Thread-155203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:00:54.862 [DEBUG] [Thread-155203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:00:54.863 [INFO] [Thread-155203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:00:54.866 [DEBUG] [Thread-155203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] client lang: <none>
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] server lang: <none>
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] kex follows: False
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] Compression: none
2025-09-29T12:00:54.867 [DEBUG] [Thread-155203] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:00:54.884 [DEBUG] [Thread-155203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:00:54.884 [DEBUG] [Thread-155203] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:00:54.885 [DEBUG] [Thread-155203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:00:54.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:00:54.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:00:54.887 [DEBUG] [Thread-155203] [transport.py] [_log()] userauth is OK
2025-09-29T12:00:54.887 [DEBUG] [Thread-155203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:00:54.888 [DEBUG] [Thread-155203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:00:54.888 [DEBUG] [Thread-155203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:00:54.888 [DEBUG] [Thread-155203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:00:54.910 [INFO] [Thread-155203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:00:54.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:00:55.576 [DEBUG] [Thread-155203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:00:55.576 [DEBUG] [Thread-155203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:00:55.576 [DEBUG] [Thread-155203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:00:55.617 [DEBUG] [Thread-155203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:00:55.617 [DEBUG] [Thread-155203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:00:55.619 [DEBUG] [Thread-155203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:00:55.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:00:55.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:00:55.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:00:55.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:00:55.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:00:55.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:00:55.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.416737 -999.00  +13.00  10.56     50   +2.90 1 1 1 1 1   888    0 10.61 50.77 ----- 15.1 10.6 184.8 15.9 21.0 -25.6 19.3 -27.3 19.5 -25.2 20.9 -25.2
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.416737
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:00:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:00:42', tmtdew=10.67, humidity=47.92, cloud=0.0, wind=16.41, temperature=12.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:00:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:00:55.640 [DEBUG] [Thread-155203] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:00:55.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:00:55.724 [DEBUG] [Thread-155206] [transport.py] [_log()] starting thread (client mode): 0x2b96ce80
2025-09-29T12:00:55.724 [DEBUG] [Thread-155206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:00:55.738 [DEBUG] [Thread-155206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:00:55.739 [INFO] [Thread-155206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:00:55.746 [DEBUG] [Thread-155206] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:00:55.746 [DEBUG] [Thread-155206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] client lang: <none>
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] server lang: <none>
2025-09-29T12:00:55.747 [DEBUG] [Thread-155206] [transport.py] [_log()] kex follows: False
2025-09-29T12:00:55.748 [DEBUG] [Thread-155206] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:00:55.748 [DEBUG] [Thread-155206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:00:55.748 [DEBUG] [Thread-155206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:00:55.748 [DEBUG] [Thread-155206] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:00:55.748 [DEBUG] [Thread-155206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:00:55.748 [DEBUG] [Thread-155206] [transport.py] [_log()] Compression: none
2025-09-29T12:00:55.748 [DEBUG] [Thread-155206] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:00:55.804 [DEBUG] [Thread-155206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:00:55.805 [DEBUG] [Thread-155206] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:00:55.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:00:55.806 [DEBUG] [Thread-155206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:00:55.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:00:55.812 [DEBUG] [Thread-155208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:00:55.860 [DEBUG] [Thread-155206] [transport.py] [_log()] userauth is OK
2025-09-29T12:00:55.860 [DEBUG] [Thread-155206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:00:55.860 [DEBUG] [Thread-155206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:00:55.860 [DEBUG] [Thread-155206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:00:55.860 [DEBUG] [Thread-155206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:00:55.879 [INFO] [Thread-155206] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:00:55.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:00:55.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:00:56.784 [DEBUG] [Thread-155206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:00:56.784 [DEBUG] [Thread-155206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:00:56.832 [DEBUG] [Thread-155206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:00:56.833 [DEBUG] [Thread-155206] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:00:56.842 [DEBUG] [Thread-155206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:00:56.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:00:56.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:00:56.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:00:56.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:00:56.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:00:56.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:00:56.876 [DEBUG] [Thread-155206] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:06.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:01:06.878 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:01:06.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:01:07.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 0, 42), 10.67, 47.92, 0.0, 16.41, 12.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:01:07.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:00:42
2025-09-29T12:01:07.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:01:07.779 [DEBUG] [Thread-155209] [transport.py] [_log()] starting thread (client mode): 0x2b96ddb0
2025-09-29T12:01:07.779 [DEBUG] [Thread-155209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:07.800 [DEBUG] [Thread-155209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:01:07.800 [INFO] [Thread-155209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:01:07.803 [DEBUG] [Thread-155209] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] Compression: none
2025-09-29T12:01:07.804 [DEBUG] [Thread-155209] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:07.820 [DEBUG] [Thread-155209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:07.820 [DEBUG] [Thread-155209] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:07.820 [DEBUG] [Thread-155209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:01:07.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:01:07.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:07.821 [DEBUG] [Thread-155209] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:07.821 [DEBUG] [Thread-155209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:07.821 [DEBUG] [Thread-155209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:07.821 [DEBUG] [Thread-155209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:01:07.821 [DEBUG] [Thread-155209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:07.830 [INFO] [Thread-155209] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:07.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:01:08.482 [DEBUG] [Thread-155209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:01:08.482 [DEBUG] [Thread-155209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:01:08.482 [DEBUG] [Thread-155209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:01:08.523 [DEBUG] [Thread-155209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:01:08.523 [DEBUG] [Thread-155209] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:01:08.525 [DEBUG] [Thread-155209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:01:08.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:01:08.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:01:08.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:01:08.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:01:08.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:01:08.543 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:01:08.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:01:08.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:01:08.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:01:08.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.417085 -999.00  +12.80  20.53     52   +3.30 1 1 1 1 1   888    0 10.68 49.22 ----- 21.1 20.5 141.8 25.6 21.0 -25.8 19.2 -26.6 19.4 -25.6 20.8 -27.1
2025-09-29T12:01:08.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:01:08.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:01:08.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.417085
2025-09-29T12:01:08.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:01:08.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:01:08.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:01:08.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:01:08.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:01:08.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:00:42', tmtdew=10.67, humidity=47.92, cloud=0.0, wind=16.41, temperature=12.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:00:36.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:01:08.544 [DEBUG] [Thread-155209] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:08.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:01:08.628 [DEBUG] [Thread-155212] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d10
2025-09-29T12:01:08.628 [DEBUG] [Thread-155212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:08.643 [DEBUG] [Thread-155212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:01:08.643 [INFO] [Thread-155212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] Compression: none
2025-09-29T12:01:08.650 [DEBUG] [Thread-155212] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:08.706 [DEBUG] [Thread-155212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:08.706 [DEBUG] [Thread-155212] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:08.706 [DEBUG] [Thread-155212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:01:08.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:01:08.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:08.763 [DEBUG] [Thread-155212] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:08.763 [DEBUG] [Thread-155212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:08.763 [DEBUG] [Thread-155212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:08.763 [DEBUG] [Thread-155212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:01:08.763 [DEBUG] [Thread-155212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:08.777 [INFO] [Thread-155212] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:08.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:01:08.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:01:09.763 [DEBUG] [Thread-155212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:01:09.763 [DEBUG] [Thread-155212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:01:09.811 [DEBUG] [Thread-155212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:01:09.811 [DEBUG] [Thread-155212] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:01:09.819 [DEBUG] [Thread-155212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:01:09.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:01:09.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:01:09.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:01:09.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:01:09.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:01:09.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:01:09.852 [DEBUG] [Thread-155212] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:10.856 [DEBUG] [Thread-155214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:01:19.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:01:19.854 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:01:19.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:01:20.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 1, 14), 10.68, 47.89, 0.0, 21.16, 12.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:01:20.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:01:14
2025-09-29T12:01:20.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:01:20.713 [DEBUG] [Thread-155215] [transport.py] [_log()] starting thread (client mode): 0x2e3c0e20
2025-09-29T12:01:20.713 [DEBUG] [Thread-155215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:20.733 [DEBUG] [Thread-155215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:01:20.733 [INFO] [Thread-155215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:20.736 [DEBUG] [Thread-155215] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:20.737 [DEBUG] [Thread-155215] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:20.737 [DEBUG] [Thread-155215] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:20.737 [DEBUG] [Thread-155215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:20.737 [DEBUG] [Thread-155215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:20.737 [DEBUG] [Thread-155215] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:20.737 [DEBUG] [Thread-155215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:20.737 [DEBUG] [Thread-155215] [transport.py] [_log()] Compression: none
2025-09-29T12:01:20.737 [DEBUG] [Thread-155215] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:20.744 [DEBUG] [Thread-155215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:20.744 [DEBUG] [Thread-155215] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:20.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:01:20.745 [DEBUG] [Thread-155215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:01:20.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:20.746 [DEBUG] [Thread-155215] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:20.746 [DEBUG] [Thread-155215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:20.746 [DEBUG] [Thread-155215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:20.746 [DEBUG] [Thread-155215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:01:20.746 [DEBUG] [Thread-155215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:20.776 [INFO] [Thread-155215] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:20.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:01:21.428 [DEBUG] [Thread-155215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:01:21.428 [DEBUG] [Thread-155215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:01:21.429 [DEBUG] [Thread-155215] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:01:21.469 [DEBUG] [Thread-155215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:01:21.469 [DEBUG] [Thread-155215] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:01:21.472 [DEBUG] [Thread-155215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:01:21.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:01:21.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:01:21.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:01:21.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:01:21.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:01:21.495 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:01:21.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:01:21.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:01:21.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:01:21.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.417085 -999.00  +12.80  20.53     52   +3.30 1 1 1 1 1   888    0 10.68 49.22 ----- 21.1 20.5 141.8 25.6 21.0 -25.8 19.2 -26.6 19.4 -25.6 20.8 -27.1
2025-09-29T12:01:21.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:01:21.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:01:21.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.417085
2025-09-29T12:01:21.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:01:21.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:01:21.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:01:21.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:01:21.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:01:21.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:01:14', tmtdew=10.68, humidity=47.89, cloud=0.0, wind=21.16, temperature=12.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:00:36.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:01:21.497 [DEBUG] [Thread-155215] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:21.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:01:21.593 [DEBUG] [Thread-155218] [transport.py] [_log()] starting thread (client mode): 0x2e34a230
2025-09-29T12:01:21.593 [DEBUG] [Thread-155218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:21.609 [DEBUG] [Thread-155218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:01:21.609 [INFO] [Thread-155218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:01:21.617 [DEBUG] [Thread-155218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:21.617 [DEBUG] [Thread-155218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:01:21.617 [DEBUG] [Thread-155218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:21.617 [DEBUG] [Thread-155218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:21.617 [DEBUG] [Thread-155218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:21.617 [DEBUG] [Thread-155218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:21.617 [DEBUG] [Thread-155218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:21.618 [DEBUG] [Thread-155218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:21.618 [DEBUG] [Thread-155218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:21.618 [DEBUG] [Thread-155218] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:21.618 [DEBUG] [Thread-155218] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:21.618 [DEBUG] [Thread-155218] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:21.618 [DEBUG] [Thread-155218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:21.618 [DEBUG] [Thread-155218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:21.618 [DEBUG] [Thread-155218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:21.619 [DEBUG] [Thread-155218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:21.619 [DEBUG] [Thread-155218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:21.619 [DEBUG] [Thread-155218] [transport.py] [_log()] Compression: none
2025-09-29T12:01:21.619 [DEBUG] [Thread-155218] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:21.675 [DEBUG] [Thread-155218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:21.676 [DEBUG] [Thread-155218] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:21.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:01:21.677 [DEBUG] [Thread-155218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:01:21.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:21.731 [DEBUG] [Thread-155218] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:21.731 [DEBUG] [Thread-155218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:21.732 [DEBUG] [Thread-155218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:21.732 [DEBUG] [Thread-155218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:01:21.732 [DEBUG] [Thread-155218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:21.752 [INFO] [Thread-155218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:21.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:01:21.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:01:22.669 [DEBUG] [Thread-155218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:01:22.669 [DEBUG] [Thread-155218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:01:22.717 [DEBUG] [Thread-155218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:01:22.717 [DEBUG] [Thread-155218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:01:22.726 [DEBUG] [Thread-155218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:01:22.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:01:22.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:01:22.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:01:22.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:01:22.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:01:22.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:01:22.762 [DEBUG] [Thread-155218] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:25.894 [DEBUG] [Thread-155220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:01:32.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:01:32.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:01:32.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:01:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 1, 14), 10.68, 47.89, 0.0, 21.16, 12.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:01:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:01:14
2025-09-29T12:01:33.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:01:33.633 [DEBUG] [Thread-155221] [transport.py] [_log()] starting thread (client mode): 0x2e38e6b0
2025-09-29T12:01:33.633 [DEBUG] [Thread-155221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:33.648 [DEBUG] [Thread-155221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:01:33.648 [INFO] [Thread-155221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:01:33.649 [DEBUG] [Thread-155221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:33.649 [DEBUG] [Thread-155221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:01:33.649 [DEBUG] [Thread-155221] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] Compression: none
2025-09-29T12:01:33.650 [DEBUG] [Thread-155221] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:33.666 [DEBUG] [Thread-155221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:33.667 [DEBUG] [Thread-155221] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:33.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:01:33.668 [DEBUG] [Thread-155221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:01:33.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:33.669 [DEBUG] [Thread-155221] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:33.670 [DEBUG] [Thread-155221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:33.670 [DEBUG] [Thread-155221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:33.670 [DEBUG] [Thread-155221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:01:33.670 [DEBUG] [Thread-155221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:33.687 [INFO] [Thread-155221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:33.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:01:34.315 [DEBUG] [Thread-155221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:01:34.315 [DEBUG] [Thread-155221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:01:34.315 [DEBUG] [Thread-155221] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:01:34.356 [DEBUG] [Thread-155221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:01:34.356 [DEBUG] [Thread-155221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:01:34.359 [DEBUG] [Thread-155221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:01:34.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:01:34.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:01:34.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:01:34.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:01:34.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:01:34.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:01:34.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:01:34.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:01:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:01:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.417432 -999.00  +12.60  16.79     53   +3.50 1 1 1 1 1   888    0 10.79 51.49 ----- 13.7 16.8 153.6 26.8 20.9 -25.7 19.5 -24.6 19.4 -25.2 20.8 -28.0
2025-09-29T12:01:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:01:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:01:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.417432
2025-09-29T12:01:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:01:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:01:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:01:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:01:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:01:34.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:01:14', tmtdew=10.68, humidity=47.89, cloud=0.0, wind=21.16, temperature=12.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:01:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:01:34.385 [DEBUG] [Thread-155221] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:34.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:01:34.481 [DEBUG] [Thread-155224] [transport.py] [_log()] starting thread (client mode): 0x2e3c2cb0
2025-09-29T12:01:34.482 [DEBUG] [Thread-155224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:34.500 [DEBUG] [Thread-155224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:01:34.501 [INFO] [Thread-155224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:01:34.508 [DEBUG] [Thread-155224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:34.508 [DEBUG] [Thread-155224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:01:34.508 [DEBUG] [Thread-155224] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:34.508 [DEBUG] [Thread-155224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:34.508 [DEBUG] [Thread-155224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:34.508 [DEBUG] [Thread-155224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:34.508 [DEBUG] [Thread-155224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:34.508 [DEBUG] [Thread-155224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] Compression: none
2025-09-29T12:01:34.509 [DEBUG] [Thread-155224] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:34.567 [DEBUG] [Thread-155224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:34.568 [DEBUG] [Thread-155224] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:34.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:01:34.569 [DEBUG] [Thread-155224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:01:34.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:34.623 [DEBUG] [Thread-155224] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:34.623 [DEBUG] [Thread-155224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:34.624 [DEBUG] [Thread-155224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:34.624 [DEBUG] [Thread-155224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:01:34.624 [DEBUG] [Thread-155224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:34.643 [INFO] [Thread-155224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:34.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:01:34.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:01:35.550 [DEBUG] [Thread-155224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:01:35.551 [DEBUG] [Thread-155224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:01:35.598 [DEBUG] [Thread-155224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:01:35.598 [DEBUG] [Thread-155224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:01:35.607 [DEBUG] [Thread-155224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:01:35.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:01:35.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:01:35.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:01:35.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:01:35.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:01:35.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:01:35.640 [DEBUG] [Thread-155224] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:37.731 [DEBUG] [Thread-155226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:01:40.941 [DEBUG] [Thread-155227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:01:43.467 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:01:43.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:01:45.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:01:45.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:01:45.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:01:46.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 1, 14), 10.68, 47.89, 0.0, 21.16, 12.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:01:46.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:01:14
2025-09-29T12:01:46.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:01:46.551 [DEBUG] [Thread-155228] [transport.py] [_log()] starting thread (client mode): 0x2b9c2e90
2025-09-29T12:01:46.551 [DEBUG] [Thread-155228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:46.575 [DEBUG] [Thread-155228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:01:46.575 [INFO] [Thread-155228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] Compression: none
2025-09-29T12:01:46.579 [DEBUG] [Thread-155228] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:46.594 [DEBUG] [Thread-155228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:46.594 [DEBUG] [Thread-155228] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:46.594 [DEBUG] [Thread-155228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:01:46.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:01:46.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:46.636 [DEBUG] [Thread-155228] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:46.636 [DEBUG] [Thread-155228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:46.636 [DEBUG] [Thread-155228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:46.636 [DEBUG] [Thread-155228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:01:46.636 [DEBUG] [Thread-155228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:46.662 [INFO] [Thread-155228] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:46.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:01:47.311 [DEBUG] [Thread-155228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:01:47.311 [DEBUG] [Thread-155228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:01:47.311 [DEBUG] [Thread-155228] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:01:47.352 [DEBUG] [Thread-155228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:01:47.352 [DEBUG] [Thread-155228] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:01:47.355 [DEBUG] [Thread-155228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:01:47.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:01:47.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:01:47.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:01:47.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:01:47.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:01:47.374 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:01:47.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:01:47.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.417432 -999.00  +12.60  16.79     53   +3.50 1 1 1 1 1   888    0 10.79 51.49 ----- 13.7 16.8 153.6 26.8 20.9 -25.7 19.5 -24.6 19.4 -25.2 20.8 -28.0
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.417432
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:01:47.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:01:14', tmtdew=10.68, humidity=47.89, cloud=0.0, wind=21.16, temperature=12.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:01:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:01:47.376 [DEBUG] [Thread-155228] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:47.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:01:47.460 [DEBUG] [Thread-155231] [transport.py] [_log()] starting thread (client mode): 0x2e38dff0
2025-09-29T12:01:47.460 [DEBUG] [Thread-155231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:47.475 [DEBUG] [Thread-155231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:01:47.475 [INFO] [Thread-155231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:01:47.482 [DEBUG] [Thread-155231] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:47.482 [DEBUG] [Thread-155231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:01:47.482 [DEBUG] [Thread-155231] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:47.482 [DEBUG] [Thread-155231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:47.482 [DEBUG] [Thread-155231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:47.482 [DEBUG] [Thread-155231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] Compression: none
2025-09-29T12:01:47.483 [DEBUG] [Thread-155231] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:47.542 [DEBUG] [Thread-155231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:47.542 [DEBUG] [Thread-155231] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:47.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:01:47.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:47.543 [DEBUG] [Thread-155231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:01:47.598 [DEBUG] [Thread-155231] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:47.599 [DEBUG] [Thread-155231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:47.599 [DEBUG] [Thread-155231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:47.599 [DEBUG] [Thread-155231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:01:47.599 [DEBUG] [Thread-155231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:47.615 [INFO] [Thread-155231] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:47.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:01:47.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:01:48.541 [DEBUG] [Thread-155231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:01:48.541 [DEBUG] [Thread-155231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:01:48.590 [DEBUG] [Thread-155231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:01:48.590 [DEBUG] [Thread-155231] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:01:48.598 [DEBUG] [Thread-155231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:01:48.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:01:48.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:01:48.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:01:48.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:01:48.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:01:48.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:01:48.630 [DEBUG] [Thread-155231] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:01:55.981 [DEBUG] [Thread-155233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:01:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:01:58.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:01:58.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:01:59.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 1, 46), 10.52, 48.4, 0.0, 17.27, 12.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:01:59.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:01:46
2025-09-29T12:01:59.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:01:59.478 [DEBUG] [Thread-155234] [transport.py] [_log()] starting thread (client mode): 0x2b96ee30
2025-09-29T12:01:59.478 [DEBUG] [Thread-155234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:01:59.498 [DEBUG] [Thread-155234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:01:59.498 [INFO] [Thread-155234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:01:59.501 [DEBUG] [Thread-155234] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:01:59.501 [DEBUG] [Thread-155234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] client lang: <none>
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] server lang: <none>
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] kex follows: False
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:01:59.502 [DEBUG] [Thread-155234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:01:59.503 [DEBUG] [Thread-155234] [transport.py] [_log()] Compression: none
2025-09-29T12:01:59.503 [DEBUG] [Thread-155234] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:01:59.512 [DEBUG] [Thread-155234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:01:59.513 [DEBUG] [Thread-155234] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:01:59.514 [DEBUG] [Thread-155234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:01:59.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:01:59.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:01:59.516 [DEBUG] [Thread-155234] [transport.py] [_log()] userauth is OK
2025-09-29T12:01:59.516 [DEBUG] [Thread-155234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:01:59.516 [DEBUG] [Thread-155234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:01:59.516 [DEBUG] [Thread-155234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:01:59.516 [DEBUG] [Thread-155234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:01:59.539 [INFO] [Thread-155234] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:01:59.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:00.179 [DEBUG] [Thread-155234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:00.180 [DEBUG] [Thread-155234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:00.180 [DEBUG] [Thread-155234] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:02:00.220 [DEBUG] [Thread-155234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:00.221 [DEBUG] [Thread-155234] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:00.224 [DEBUG] [Thread-155234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:00.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:00.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:02:00.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:02:00.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:02:00.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:00.248 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:02:00.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:00.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:02:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.417432 -999.00  +12.60  16.79     53   +3.50 1 1 1 1 1   888    0 10.79 51.49 ----- 13.7 16.8 153.6 26.8 20.9 -25.7 19.5 -24.6 19.4 -25.2 20.8 -28.0
2025-09-29T12:02:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:02:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:02:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.417432
2025-09-29T12:02:00.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:02:00.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:02:00.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:02:00.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:02:00.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:02:00.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:01:46', tmtdew=10.52, humidity=48.4, cloud=0.0, wind=17.27, temperature=12.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:01:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:02:00.251 [DEBUG] [Thread-155234] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:00.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:02:00.347 [DEBUG] [Thread-155237] [transport.py] [_log()] starting thread (client mode): 0x2b94e230
2025-09-29T12:02:00.348 [DEBUG] [Thread-155237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:00.362 [DEBUG] [Thread-155237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:02:00.362 [INFO] [Thread-155237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:00.370 [DEBUG] [Thread-155237] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:00.371 [DEBUG] [Thread-155237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:00.371 [DEBUG] [Thread-155237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:00.371 [DEBUG] [Thread-155237] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:00.371 [DEBUG] [Thread-155237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:00.371 [DEBUG] [Thread-155237] [transport.py] [_log()] Compression: none
2025-09-29T12:02:00.371 [DEBUG] [Thread-155237] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:00.427 [DEBUG] [Thread-155237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:00.427 [DEBUG] [Thread-155237] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:00.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:02:00.428 [DEBUG] [Thread-155237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:02:00.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:00.483 [DEBUG] [Thread-155237] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:00.483 [DEBUG] [Thread-155237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:00.483 [DEBUG] [Thread-155237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:00.483 [DEBUG] [Thread-155237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:02:00.483 [DEBUG] [Thread-155237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:00.504 [INFO] [Thread-155237] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:00.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:02:00.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:01.465 [DEBUG] [Thread-155237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:01.466 [DEBUG] [Thread-155237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:01.513 [DEBUG] [Thread-155237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:01.513 [DEBUG] [Thread-155237] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:01.522 [DEBUG] [Thread-155237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:01.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:01.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:02:01.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:02:01.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:01.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:01.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:01.555 [DEBUG] [Thread-155237] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:11.015 [DEBUG] [Thread-155239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:02:11.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:02:11.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:02:11.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:02:12.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 1, 46), 10.52, 48.4, 0.0, 17.27, 12.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:02:12.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:01:46
2025-09-29T12:02:12.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:02:12.387 [DEBUG] [Thread-155240] [transport.py] [_log()] starting thread (client mode): 0x2b91dc60
2025-09-29T12:02:12.387 [DEBUG] [Thread-155240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:12.407 [DEBUG] [Thread-155240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:02:12.407 [INFO] [Thread-155240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:02:12.410 [DEBUG] [Thread-155240] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:12.410 [DEBUG] [Thread-155240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] Compression: none
2025-09-29T12:02:12.411 [DEBUG] [Thread-155240] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:12.427 [DEBUG] [Thread-155240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:12.428 [DEBUG] [Thread-155240] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:12.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:02:12.429 [DEBUG] [Thread-155240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:02:12.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:12.431 [DEBUG] [Thread-155240] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:12.431 [DEBUG] [Thread-155240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:12.431 [DEBUG] [Thread-155240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:12.432 [DEBUG] [Thread-155240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:02:12.432 [DEBUG] [Thread-155240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:12.451 [INFO] [Thread-155240] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:12.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:13.106 [DEBUG] [Thread-155240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:13.106 [DEBUG] [Thread-155240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:13.107 [DEBUG] [Thread-155240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:02:13.147 [DEBUG] [Thread-155240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:13.148 [DEBUG] [Thread-155240] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:13.151 [DEBUG] [Thread-155240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:13.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:13.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:02:13.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:02:13.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:02:13.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:13.174 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:02:13.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:13.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:13.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:02:13.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.417779 -999.00  +12.60  15.52     54   +3.60 1 1 1 1 1   888    0 10.71 47.13 ----- 13.5 15.5 166.0 23.1 20.9 -25.0 19.4 -23.7 19.3 -25.6 20.8 -27.6
2025-09-29T12:02:13.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:02:13.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:02:13.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.417779
2025-09-29T12:02:13.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:02:13.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:02:13.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:02:13.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:02:13.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:02:13.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:01:46', tmtdew=10.52, humidity=48.4, cloud=0.0, wind=17.27, temperature=12.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:01:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:02:13.177 [DEBUG] [Thread-155240] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:13.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:02:13.274 [DEBUG] [Thread-155243] [transport.py] [_log()] starting thread (client mode): 0x2e34b070
2025-09-29T12:02:13.274 [DEBUG] [Thread-155243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:13.293 [DEBUG] [Thread-155243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:02:13.293 [INFO] [Thread-155243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:02:13.300 [DEBUG] [Thread-155243] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:13.301 [DEBUG] [Thread-155243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:02:13.301 [DEBUG] [Thread-155243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:13.301 [DEBUG] [Thread-155243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:13.301 [DEBUG] [Thread-155243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:13.301 [DEBUG] [Thread-155243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:13.301 [DEBUG] [Thread-155243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:13.301 [DEBUG] [Thread-155243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:13.301 [DEBUG] [Thread-155243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:13.302 [DEBUG] [Thread-155243] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:13.302 [DEBUG] [Thread-155243] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:13.302 [DEBUG] [Thread-155243] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:13.302 [DEBUG] [Thread-155243] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:13.302 [DEBUG] [Thread-155243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:13.302 [DEBUG] [Thread-155243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:13.302 [DEBUG] [Thread-155243] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:13.302 [DEBUG] [Thread-155243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:13.303 [DEBUG] [Thread-155243] [transport.py] [_log()] Compression: none
2025-09-29T12:02:13.303 [DEBUG] [Thread-155243] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:13.359 [DEBUG] [Thread-155243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:13.360 [DEBUG] [Thread-155243] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:13.360 [DEBUG] [Thread-155243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:02:13.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:02:13.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:13.414 [DEBUG] [Thread-155243] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:13.415 [DEBUG] [Thread-155243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:13.415 [DEBUG] [Thread-155243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:13.415 [DEBUG] [Thread-155243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:02:13.415 [DEBUG] [Thread-155243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:13.433 [INFO] [Thread-155243] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:13.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:02:13.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:14.359 [DEBUG] [Thread-155243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:14.359 [DEBUG] [Thread-155243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:14.407 [DEBUG] [Thread-155243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:14.407 [DEBUG] [Thread-155243] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:14.416 [DEBUG] [Thread-155243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:14.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:14.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:02:14.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:02:14.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:14.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:14.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:14.452 [DEBUG] [Thread-155243] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:24.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:02:24.454 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:02:24.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:02:25.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 2, 18), 10.43, 48.68, 0.0, 17.98, 12.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:02:25.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:02:18
2025-09-29T12:02:25.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:02:25.340 [DEBUG] [Thread-155245] [transport.py] [_log()] starting thread (client mode): 0x2e349930
2025-09-29T12:02:25.340 [DEBUG] [Thread-155245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:25.360 [DEBUG] [Thread-155245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:02:25.360 [INFO] [Thread-155245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] Compression: none
2025-09-29T12:02:25.364 [DEBUG] [Thread-155245] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:25.382 [DEBUG] [Thread-155245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:25.382 [DEBUG] [Thread-155245] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:25.382 [DEBUG] [Thread-155245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:02:25.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:02:25.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:25.383 [DEBUG] [Thread-155245] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:25.383 [DEBUG] [Thread-155245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:25.383 [DEBUG] [Thread-155245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:25.383 [DEBUG] [Thread-155245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:02:25.383 [DEBUG] [Thread-155245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:25.400 [INFO] [Thread-155245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:25.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:26.055 [DEBUG] [Thread-155247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:02:26.067 [DEBUG] [Thread-155245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:26.067 [DEBUG] [Thread-155245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:26.068 [DEBUG] [Thread-155245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:02:26.109 [DEBUG] [Thread-155245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:26.109 [DEBUG] [Thread-155245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:26.111 [DEBUG] [Thread-155245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:26.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:26.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:02:26.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:02:26.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:02:26.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:26.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:02:26.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.417779 -999.00  +12.60  15.52     54   +3.60 1 1 1 1 1   888    0 10.71 47.13 ----- 13.5 15.5 166.0 23.1 20.9 -25.0 19.4 -23.7 19.3 -25.6 20.8 -27.6
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.417779
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:02:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:02:18', tmtdew=10.43, humidity=48.68, cloud=0.0, wind=17.98, temperature=12.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:01:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:02:26.131 [DEBUG] [Thread-155245] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:26.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:02:26.214 [DEBUG] [Thread-155249] [transport.py] [_log()] starting thread (client mode): 0x2e3c07c0
2025-09-29T12:02:26.215 [DEBUG] [Thread-155249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:26.230 [DEBUG] [Thread-155249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:02:26.230 [INFO] [Thread-155249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:26.238 [DEBUG] [Thread-155249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:26.239 [DEBUG] [Thread-155249] [transport.py] [_log()] Compression: none
2025-09-29T12:02:26.239 [DEBUG] [Thread-155249] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:26.293 [DEBUG] [Thread-155249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:26.293 [DEBUG] [Thread-155249] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:26.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:02:26.293 [DEBUG] [Thread-155249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:02:26.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:26.350 [DEBUG] [Thread-155249] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:26.350 [DEBUG] [Thread-155249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:26.350 [DEBUG] [Thread-155249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:26.350 [DEBUG] [Thread-155249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:02:26.350 [DEBUG] [Thread-155249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:26.368 [INFO] [Thread-155249] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:26.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:02:26.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:27.318 [DEBUG] [Thread-155249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:27.318 [DEBUG] [Thread-155249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:27.366 [DEBUG] [Thread-155249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:27.367 [DEBUG] [Thread-155249] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:27.375 [DEBUG] [Thread-155249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:27.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:27.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:02:27.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:02:27.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:27.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:27.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:27.405 [DEBUG] [Thread-155249] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:37.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:02:37.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:02:37.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:02:37.780 [DEBUG] [Thread-155251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:02:38.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 2, 18), 10.43, 48.68, 0.0, 17.98, 12.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:02:38.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:02:18
2025-09-29T12:02:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:02:38.260 [DEBUG] [Thread-155252] [transport.py] [_log()] starting thread (client mode): 0x2e3489a0
2025-09-29T12:02:38.260 [DEBUG] [Thread-155252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:38.280 [DEBUG] [Thread-155252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:02:38.280 [INFO] [Thread-155252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:38.281 [DEBUG] [Thread-155252] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:38.282 [DEBUG] [Thread-155252] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:38.282 [DEBUG] [Thread-155252] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:38.282 [DEBUG] [Thread-155252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:38.282 [DEBUG] [Thread-155252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:38.282 [DEBUG] [Thread-155252] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:38.282 [DEBUG] [Thread-155252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:38.282 [DEBUG] [Thread-155252] [transport.py] [_log()] Compression: none
2025-09-29T12:02:38.282 [DEBUG] [Thread-155252] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:38.300 [DEBUG] [Thread-155252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:38.301 [DEBUG] [Thread-155252] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:38.302 [DEBUG] [Thread-155252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:02:38.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:02:38.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:38.305 [DEBUG] [Thread-155252] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:38.305 [DEBUG] [Thread-155252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:38.305 [DEBUG] [Thread-155252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:38.305 [DEBUG] [Thread-155252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:02:38.305 [DEBUG] [Thread-155252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:38.329 [INFO] [Thread-155252] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:38.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:38.969 [DEBUG] [Thread-155252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:38.969 [DEBUG] [Thread-155252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:38.970 [DEBUG] [Thread-155252] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:02:39.010 [DEBUG] [Thread-155252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:39.010 [DEBUG] [Thread-155252] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:39.013 [DEBUG] [Thread-155252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:39.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:39.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:02:39.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:02:39.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:02:39.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:39.034 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:02:39.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:39.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:39.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:02:39.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.417779 -999.00  +12.60  15.52     54   +3.60 1 1 1 1 1   888    0 10.71 47.13 ----- 13.5 15.5 166.0 23.1 20.9 -25.0 19.4 -23.7 19.3 -25.6 20.8 -27.6
2025-09-29T12:02:39.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:02:39.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:02:39.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.417779
2025-09-29T12:02:39.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:02:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:02:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:02:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:02:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:02:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:02:18', tmtdew=10.43, humidity=48.68, cloud=0.0, wind=17.98, temperature=12.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:01:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:02:39.036 [DEBUG] [Thread-155252] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:39.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:02:39.135 [DEBUG] [Thread-155255] [transport.py] [_log()] starting thread (client mode): 0x2e34a800
2025-09-29T12:02:39.136 [DEBUG] [Thread-155255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:39.151 [DEBUG] [Thread-155255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:02:39.151 [INFO] [Thread-155255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:02:39.159 [DEBUG] [Thread-155255] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:39.159 [DEBUG] [Thread-155255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:02:39.159 [DEBUG] [Thread-155255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:39.159 [DEBUG] [Thread-155255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:39.159 [DEBUG] [Thread-155255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:39.159 [DEBUG] [Thread-155255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:39.160 [DEBUG] [Thread-155255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:39.161 [DEBUG] [Thread-155255] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:39.161 [DEBUG] [Thread-155255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:39.161 [DEBUG] [Thread-155255] [transport.py] [_log()] Compression: none
2025-09-29T12:02:39.161 [DEBUG] [Thread-155255] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:39.218 [DEBUG] [Thread-155255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:39.219 [DEBUG] [Thread-155255] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:39.219 [DEBUG] [Thread-155255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:02:39.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:02:39.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:39.274 [DEBUG] [Thread-155255] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:39.274 [DEBUG] [Thread-155255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:39.274 [DEBUG] [Thread-155255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:39.274 [DEBUG] [Thread-155255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:02:39.274 [DEBUG] [Thread-155255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:39.288 [INFO] [Thread-155255] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:39.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:02:39.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:40.316 [DEBUG] [Thread-155255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:40.316 [DEBUG] [Thread-155255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:40.367 [DEBUG] [Thread-155255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:40.367 [DEBUG] [Thread-155255] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:40.376 [DEBUG] [Thread-155255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:40.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:40.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:02:40.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:02:40.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:40.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:40.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:40.411 [DEBUG] [Thread-155255] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:41.091 [DEBUG] [Thread-155257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:02:43.608 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:02:43.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:02:50.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:02:50.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:02:50.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:02:51.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 2, 18), 10.43, 48.68, 0.0, 17.98, 12.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:02:51.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:02:18
2025-09-29T12:02:51.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:02:51.317 [DEBUG] [Thread-155258] [transport.py] [_log()] starting thread (client mode): 0x2b91de40
2025-09-29T12:02:51.317 [DEBUG] [Thread-155258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:51.338 [DEBUG] [Thread-155258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:02:51.338 [INFO] [Thread-155258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] Compression: none
2025-09-29T12:02:51.341 [DEBUG] [Thread-155258] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:51.357 [DEBUG] [Thread-155258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:51.358 [DEBUG] [Thread-155258] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:51.358 [DEBUG] [Thread-155258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:02:51.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:02:51.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:51.358 [DEBUG] [Thread-155258] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:51.358 [DEBUG] [Thread-155258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:51.358 [DEBUG] [Thread-155258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:51.358 [DEBUG] [Thread-155258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:02:51.358 [DEBUG] [Thread-155258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:51.373 [INFO] [Thread-155258] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:51.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:52.029 [DEBUG] [Thread-155258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:52.029 [DEBUG] [Thread-155258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:52.030 [DEBUG] [Thread-155258] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:02:52.071 [DEBUG] [Thread-155258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:52.071 [DEBUG] [Thread-155258] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:52.073 [DEBUG] [Thread-155258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:52.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:52.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:02:52.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:02:52.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:02:52.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:52.092 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:02:52.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:52.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:52.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:02:52.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.418474 -999.00  +12.50   7.96     55   +3.70 1 1 1 1 1   888    0 10.37 39.10 ----- 6.0 8.0 172.0 17.8 20.8 -25.0 18.9 -24.1 19.4 -23.7 20.8 -25.0
2025-09-29T12:02:52.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:02:52.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:02:52.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.418474
2025-09-29T12:02:52.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:02:52.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:02:52.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:02:52.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:02:52.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:02:52.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:02:18', tmtdew=10.43, humidity=48.68, cloud=0.0, wind=17.98, temperature=12.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:02:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:02:52.094 [DEBUG] [Thread-155258] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:52.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:02:52.177 [DEBUG] [Thread-155261] [transport.py] [_log()] starting thread (client mode): 0x2e348880
2025-09-29T12:02:52.177 [DEBUG] [Thread-155261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:02:52.191 [DEBUG] [Thread-155261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:02:52.191 [INFO] [Thread-155261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] client lang: <none>
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] server lang: <none>
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] kex follows: False
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] Compression: none
2025-09-29T12:02:52.199 [DEBUG] [Thread-155261] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:02:52.259 [DEBUG] [Thread-155261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:02:52.260 [DEBUG] [Thread-155261] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:02:52.260 [DEBUG] [Thread-155261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:02:52.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:02:52.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:02:52.318 [DEBUG] [Thread-155261] [transport.py] [_log()] userauth is OK
2025-09-29T12:02:52.318 [DEBUG] [Thread-155261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:02:52.318 [DEBUG] [Thread-155261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:02:52.318 [DEBUG] [Thread-155261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:02:52.318 [DEBUG] [Thread-155261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:02:52.334 [INFO] [Thread-155261] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:02:52.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:02:52.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:02:53.290 [DEBUG] [Thread-155261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:02:53.290 [DEBUG] [Thread-155261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:02:53.338 [DEBUG] [Thread-155261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:02:53.339 [DEBUG] [Thread-155261] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:02:53.347 [DEBUG] [Thread-155261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:02:53.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:02:53.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:02:53.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:02:53.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:02:53.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:02:53.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:02:53.385 [DEBUG] [Thread-155261] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:02:56.149 [DEBUG] [Thread-155263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:03:03.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:03:03.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:03:03.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:03:04.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 2, 50), 10.36, 49.23, 0.0, 15.58, 12.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:03:04.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:02:50
2025-09-29T12:03:04.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:03:04.316 [DEBUG] [Thread-155264] [transport.py] [_log()] starting thread (client mode): 0x2b91ed10
2025-09-29T12:03:04.317 [DEBUG] [Thread-155264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:04.337 [DEBUG] [Thread-155264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:03:04.337 [INFO] [Thread-155264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:04.340 [DEBUG] [Thread-155264] [transport.py] [_log()] Compression: none
2025-09-29T12:03:04.341 [DEBUG] [Thread-155264] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:04.357 [DEBUG] [Thread-155264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:04.358 [DEBUG] [Thread-155264] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:04.358 [DEBUG] [Thread-155264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:03:04.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:03:04.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:04.359 [DEBUG] [Thread-155264] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:04.359 [DEBUG] [Thread-155264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:04.359 [DEBUG] [Thread-155264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:04.359 [DEBUG] [Thread-155264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:03:04.359 [DEBUG] [Thread-155264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:04.368 [INFO] [Thread-155264] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:04.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:05.036 [DEBUG] [Thread-155264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:05.036 [DEBUG] [Thread-155264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:05.036 [DEBUG] [Thread-155264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:03:05.077 [DEBUG] [Thread-155264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:05.077 [DEBUG] [Thread-155264] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:05.079 [DEBUG] [Thread-155264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:05.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:05.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:03:05.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:03:05.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:03:05.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:05.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:03:05.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:05.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:03:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.418474 -999.00  +12.50   7.96     55   +3.70 1 1 1 1 1   888    0 10.37 39.10 ----- 6.0 8.0 172.0 17.8 20.8 -25.0 18.9 -24.1 19.4 -23.7 20.8 -25.0
2025-09-29T12:03:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:03:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:03:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.418474
2025-09-29T12:03:05.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:03:05.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:03:05.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:03:05.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:03:05.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:03:05.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:02:50', tmtdew=10.36, humidity=49.23, cloud=0.0, wind=15.58, temperature=12.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:02:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:03:05.097 [DEBUG] [Thread-155264] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:05.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:03:05.182 [DEBUG] [Thread-155267] [transport.py] [_log()] starting thread (client mode): 0x2b9c1480
2025-09-29T12:03:05.182 [DEBUG] [Thread-155267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:05.197 [DEBUG] [Thread-155267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:03:05.197 [INFO] [Thread-155267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:05.205 [DEBUG] [Thread-155267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:05.206 [DEBUG] [Thread-155267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:05.206 [DEBUG] [Thread-155267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:05.206 [DEBUG] [Thread-155267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:05.206 [DEBUG] [Thread-155267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:05.206 [DEBUG] [Thread-155267] [transport.py] [_log()] Compression: none
2025-09-29T12:03:05.206 [DEBUG] [Thread-155267] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:05.260 [DEBUG] [Thread-155267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:05.261 [DEBUG] [Thread-155267] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:05.261 [DEBUG] [Thread-155267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:03:05.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:03:05.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:05.318 [DEBUG] [Thread-155267] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:05.318 [DEBUG] [Thread-155267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:05.318 [DEBUG] [Thread-155267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:05.318 [DEBUG] [Thread-155267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:03:05.318 [DEBUG] [Thread-155267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:05.335 [INFO] [Thread-155267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:05.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:03:05.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:06.284 [DEBUG] [Thread-155267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:06.284 [DEBUG] [Thread-155267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:06.332 [DEBUG] [Thread-155267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:06.332 [DEBUG] [Thread-155267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:06.340 [DEBUG] [Thread-155267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:06.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:06.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:03:06.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:03:06.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:06.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:06.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:06.372 [DEBUG] [Thread-155267] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:11.194 [DEBUG] [Thread-155269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:03:16.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:03:16.375 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:03:16.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:03:16.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 2, 50), 10.36, 49.23, 0.0, 15.58, 12.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:03:16.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:02:50
2025-09-29T12:03:17.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:03:17.232 [DEBUG] [Thread-155270] [transport.py] [_log()] starting thread (client mode): 0x2b91cb50
2025-09-29T12:03:17.233 [DEBUG] [Thread-155270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:17.250 [DEBUG] [Thread-155270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:03:17.250 [INFO] [Thread-155270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:17.252 [DEBUG] [Thread-155270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:17.253 [DEBUG] [Thread-155270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:17.253 [DEBUG] [Thread-155270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:17.253 [DEBUG] [Thread-155270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:17.253 [DEBUG] [Thread-155270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:17.253 [DEBUG] [Thread-155270] [transport.py] [_log()] Compression: none
2025-09-29T12:03:17.253 [DEBUG] [Thread-155270] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:17.263 [DEBUG] [Thread-155270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:17.264 [DEBUG] [Thread-155270] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:17.264 [DEBUG] [Thread-155270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:03:17.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:03:17.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:17.266 [DEBUG] [Thread-155270] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:17.266 [DEBUG] [Thread-155270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:17.266 [DEBUG] [Thread-155270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:17.266 [DEBUG] [Thread-155270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:03:17.266 [DEBUG] [Thread-155270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:17.284 [INFO] [Thread-155270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:17.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:17.921 [DEBUG] [Thread-155270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:17.921 [DEBUG] [Thread-155270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:17.922 [DEBUG] [Thread-155270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:03:17.962 [DEBUG] [Thread-155270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:17.963 [DEBUG] [Thread-155270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:17.965 [DEBUG] [Thread-155270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:17.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:17.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:03:17.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:03:17.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:03:17.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:17.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:03:17.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:17.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:17.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:03:17.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.418821 -999.00  +12.70  12.71     54   +3.70 1 1 1 1 1   888    0 10.05 34.46 ----- 19.4 12.7 160.7 17.8 20.8 -25.1 19.0 -27.5 19.4 -24.2 20.9 -25.6
2025-09-29T12:03:17.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:03:17.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:03:17.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.418821
2025-09-29T12:03:17.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:03:17.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:03:17.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:03:17.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:03:17.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:03:17.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:02:50', tmtdew=10.36, humidity=49.23, cloud=0.0, wind=15.58, temperature=12.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:03:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:03:17.987 [DEBUG] [Thread-155270] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:18.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:03:18.082 [DEBUG] [Thread-155273] [transport.py] [_log()] starting thread (client mode): 0x2e3c3220
2025-09-29T12:03:18.083 [DEBUG] [Thread-155273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:18.097 [DEBUG] [Thread-155273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:03:18.097 [INFO] [Thread-155273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:03:18.104 [DEBUG] [Thread-155273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:18.105 [DEBUG] [Thread-155273] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] Compression: none
2025-09-29T12:03:18.106 [DEBUG] [Thread-155273] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:18.161 [DEBUG] [Thread-155273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:18.162 [DEBUG] [Thread-155273] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:18.162 [DEBUG] [Thread-155273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:03:18.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:03:18.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:18.218 [DEBUG] [Thread-155273] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:18.218 [DEBUG] [Thread-155273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:18.218 [DEBUG] [Thread-155273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:18.218 [DEBUG] [Thread-155273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:03:18.218 [DEBUG] [Thread-155273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:18.239 [INFO] [Thread-155273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:18.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:03:18.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:19.193 [DEBUG] [Thread-155273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:19.193 [DEBUG] [Thread-155273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:19.243 [DEBUG] [Thread-155273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:19.243 [DEBUG] [Thread-155273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:19.255 [DEBUG] [Thread-155273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:19.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:19.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:03:19.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:03:19.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:19.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:19.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:19.301 [DEBUG] [Thread-155273] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:26.241 [DEBUG] [Thread-155275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:03:29.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:03:29.294 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:03:29.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:03:29.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 3, 22), 10.38, 49.26, 0.0, 14.75, 12.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:03:29.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:03:22
2025-09-29T12:03:30.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:03:30.181 [DEBUG] [Thread-155276] [transport.py] [_log()] starting thread (client mode): 0x2b96d3c0
2025-09-29T12:03:30.181 [DEBUG] [Thread-155276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:30.202 [DEBUG] [Thread-155276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:03:30.203 [INFO] [Thread-155276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:03:30.206 [DEBUG] [Thread-155276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:30.206 [DEBUG] [Thread-155276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:03:30.206 [DEBUG] [Thread-155276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:30.206 [DEBUG] [Thread-155276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:30.206 [DEBUG] [Thread-155276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] Compression: none
2025-09-29T12:03:30.207 [DEBUG] [Thread-155276] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:30.226 [DEBUG] [Thread-155276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:30.227 [DEBUG] [Thread-155276] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:30.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:03:30.228 [DEBUG] [Thread-155276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:03:30.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:30.229 [DEBUG] [Thread-155276] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:30.229 [DEBUG] [Thread-155276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:30.230 [DEBUG] [Thread-155276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:30.230 [DEBUG] [Thread-155276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:03:30.230 [DEBUG] [Thread-155276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:30.252 [INFO] [Thread-155276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:30.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:30.909 [DEBUG] [Thread-155276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:30.909 [DEBUG] [Thread-155276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:30.910 [DEBUG] [Thread-155276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:03:30.950 [DEBUG] [Thread-155276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:30.950 [DEBUG] [Thread-155276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:30.953 [DEBUG] [Thread-155276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:30.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:30.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:03:30.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:03:30.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:03:30.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:30.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:03:30.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:30.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:03:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.418821 -999.00  +12.70  12.71     54   +3.70 1 1 1 1 1   888    0 10.05 34.46 ----- 19.4 12.7 160.7 17.8 20.8 -25.1 19.0 -27.5 19.4 -24.2 20.9 -25.6
2025-09-29T12:03:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:03:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:03:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.418821
2025-09-29T12:03:30.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:03:30.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:03:30.977 [DEBUG] [Thread-155276] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:30.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:03:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:03:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:03:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:03:22', tmtdew=10.38, humidity=49.26, cloud=0.0, wind=14.75, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:03:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:03:31.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:03:31.073 [DEBUG] [Thread-155279] [transport.py] [_log()] starting thread (client mode): 0x2b91ca30
2025-09-29T12:03:31.074 [DEBUG] [Thread-155279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:31.088 [DEBUG] [Thread-155279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:03:31.089 [INFO] [Thread-155279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:03:31.096 [DEBUG] [Thread-155279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:31.096 [DEBUG] [Thread-155279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:03:31.096 [DEBUG] [Thread-155279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:31.096 [DEBUG] [Thread-155279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:31.097 [DEBUG] [Thread-155279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:31.098 [DEBUG] [Thread-155279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:31.098 [DEBUG] [Thread-155279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:31.098 [DEBUG] [Thread-155279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:31.098 [DEBUG] [Thread-155279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:31.098 [DEBUG] [Thread-155279] [transport.py] [_log()] Compression: none
2025-09-29T12:03:31.098 [DEBUG] [Thread-155279] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:31.153 [DEBUG] [Thread-155279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:31.154 [DEBUG] [Thread-155279] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:31.154 [DEBUG] [Thread-155279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:03:31.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:03:31.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:31.210 [DEBUG] [Thread-155279] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:31.210 [DEBUG] [Thread-155279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:31.210 [DEBUG] [Thread-155279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:31.210 [DEBUG] [Thread-155279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:03:31.210 [DEBUG] [Thread-155279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:31.229 [INFO] [Thread-155279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:31.230 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:03:31.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:32.169 [DEBUG] [Thread-155279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:32.170 [DEBUG] [Thread-155279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:32.217 [DEBUG] [Thread-155279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:32.218 [DEBUG] [Thread-155279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:32.227 [DEBUG] [Thread-155279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:32.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:32.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:03:32.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:03:32.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:32.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:32.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:32.262 [DEBUG] [Thread-155279] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:37.830 [DEBUG] [Thread-155281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:03:41.288 [DEBUG] [Thread-155282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:03:42.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:03:42.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:03:42.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:03:42.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 3, 22), 10.38, 49.26, 0.0, 14.75, 12.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:03:42.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:03:22
2025-09-29T12:03:42.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:03:43.132 [DEBUG] [Thread-155283] [transport.py] [_log()] starting thread (client mode): 0x2e3c1ba0
2025-09-29T12:03:43.132 [DEBUG] [Thread-155283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:43.153 [DEBUG] [Thread-155283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:03:43.153 [INFO] [Thread-155283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:43.156 [DEBUG] [Thread-155283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:43.157 [DEBUG] [Thread-155283] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:43.157 [DEBUG] [Thread-155283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:43.157 [DEBUG] [Thread-155283] [transport.py] [_log()] Compression: none
2025-09-29T12:03:43.157 [DEBUG] [Thread-155283] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:43.172 [DEBUG] [Thread-155283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:43.172 [DEBUG] [Thread-155283] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:43.172 [DEBUG] [Thread-155283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:03:43.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:03:43.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:43.173 [DEBUG] [Thread-155283] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:43.173 [DEBUG] [Thread-155283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:43.173 [DEBUG] [Thread-155283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:43.173 [DEBUG] [Thread-155283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:03:43.173 [DEBUG] [Thread-155283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:43.203 [INFO] [Thread-155283] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:43.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:43.751 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:03:43.752 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:03:43.841 [DEBUG] [Thread-155283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:43.841 [DEBUG] [Thread-155283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:43.841 [DEBUG] [Thread-155283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:03:43.882 [DEBUG] [Thread-155283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:43.882 [DEBUG] [Thread-155283] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:43.883 [DEBUG] [Thread-155283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:43.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:43.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:03:43.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:03:43.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:03:43.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:43.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:03:43.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:43.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:03:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.418821 -999.00  +12.70  12.71     54   +3.70 1 1 1 1 1   888    0 10.05 34.46 ----- 19.4 12.7 160.7 17.8 20.8 -25.1 19.0 -27.5 19.4 -24.2 20.9 -25.6
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.418821
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:03:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:03:22', tmtdew=10.38, humidity=49.26, cloud=0.0, wind=14.75, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:03:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:03:43.899 [DEBUG] [Thread-155283] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:43.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:03:43.987 [DEBUG] [Thread-155286] [transport.py] [_log()] starting thread (client mode): 0x2b96f4f0
2025-09-29T12:03:43.987 [DEBUG] [Thread-155286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:44.003 [DEBUG] [Thread-155286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:03:44.003 [INFO] [Thread-155286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] Compression: none
2025-09-29T12:03:44.011 [DEBUG] [Thread-155286] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:44.068 [DEBUG] [Thread-155286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:44.068 [DEBUG] [Thread-155286] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:44.069 [DEBUG] [Thread-155286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:03:44.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:03:44.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:44.126 [DEBUG] [Thread-155286] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:44.126 [DEBUG] [Thread-155286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:44.126 [DEBUG] [Thread-155286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:44.126 [DEBUG] [Thread-155286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:03:44.126 [DEBUG] [Thread-155286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:44.145 [INFO] [Thread-155286] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:44.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:03:44.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:45.079 [DEBUG] [Thread-155286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:45.079 [DEBUG] [Thread-155286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:45.127 [DEBUG] [Thread-155286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:45.127 [DEBUG] [Thread-155286] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:45.135 [DEBUG] [Thread-155286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:45.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:45.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:03:45.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:03:45.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:45.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:45.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:45.166 [DEBUG] [Thread-155286] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:55.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:03:55.168 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:03:55.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:03:55.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 3, 22), 10.38, 49.26, 0.0, 14.75, 12.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:03:55.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:03:22
2025-09-29T12:03:55.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:03:56.072 [DEBUG] [Thread-155288] [transport.py] [_log()] starting thread (client mode): 0x2e3c0910
2025-09-29T12:03:56.072 [DEBUG] [Thread-155288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:56.092 [DEBUG] [Thread-155288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:03:56.092 [INFO] [Thread-155288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:56.093 [DEBUG] [Thread-155288] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:56.094 [DEBUG] [Thread-155288] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:56.094 [DEBUG] [Thread-155288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:56.094 [DEBUG] [Thread-155288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:56.094 [DEBUG] [Thread-155288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:56.094 [DEBUG] [Thread-155288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:56.094 [DEBUG] [Thread-155288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:56.094 [DEBUG] [Thread-155288] [transport.py] [_log()] Compression: none
2025-09-29T12:03:56.094 [DEBUG] [Thread-155288] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:56.101 [DEBUG] [Thread-155288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:56.101 [DEBUG] [Thread-155288] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:56.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:03:56.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:56.101 [DEBUG] [Thread-155288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:03:56.102 [DEBUG] [Thread-155288] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:56.102 [DEBUG] [Thread-155288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:56.102 [DEBUG] [Thread-155288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:56.102 [DEBUG] [Thread-155288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:03:56.102 [DEBUG] [Thread-155288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:56.117 [INFO] [Thread-155288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:56.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:56.330 [DEBUG] [Thread-155290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:03:56.750 [DEBUG] [Thread-155288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:56.751 [DEBUG] [Thread-155288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:56.751 [DEBUG] [Thread-155288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:03:56.791 [DEBUG] [Thread-155288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:56.791 [DEBUG] [Thread-155288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:56.794 [DEBUG] [Thread-155288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:56.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:56.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:03:56.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:03:56.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:03:56.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:56.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:03:56.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:56.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:56.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:03:56.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.419168 -999.00  +12.90  11.65     53   +3.70 1 1 1 1 1   888    0 10.19 35.93 ----- 10.9 11.7 184.0 18.4 20.9 -25.9 19.3 -28.7 19.6 -24.3 20.9 -25.2
2025-09-29T12:03:56.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:03:56.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:03:56.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.419168
2025-09-29T12:03:56.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:03:56.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:03:56.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:03:56.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:03:56.820 [DEBUG] [Thread-155288] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:03:56.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:03:56.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:03:22', tmtdew=10.38, humidity=49.26, cloud=0.0, wind=14.75, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:03:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:03:56.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:03:56.916 [DEBUG] [Thread-155292] [transport.py] [_log()] starting thread (client mode): 0x2b9c0b50
2025-09-29T12:03:56.916 [DEBUG] [Thread-155292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:03:56.931 [DEBUG] [Thread-155292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:03:56.931 [INFO] [Thread-155292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:03:56.938 [DEBUG] [Thread-155292] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:03:56.938 [DEBUG] [Thread-155292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] client lang: <none>
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] server lang: <none>
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] kex follows: False
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] Compression: none
2025-09-29T12:03:56.939 [DEBUG] [Thread-155292] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:03:56.997 [DEBUG] [Thread-155292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:03:56.997 [DEBUG] [Thread-155292] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:03:56.998 [DEBUG] [Thread-155292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:03:56.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:03:56.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:03:57.054 [DEBUG] [Thread-155292] [transport.py] [_log()] userauth is OK
2025-09-29T12:03:57.054 [DEBUG] [Thread-155292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:03:57.054 [DEBUG] [Thread-155292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:03:57.054 [DEBUG] [Thread-155292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:03:57.054 [DEBUG] [Thread-155292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:03:57.073 [INFO] [Thread-155292] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:03:57.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:03:57.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:03:58.001 [DEBUG] [Thread-155292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:03:58.001 [DEBUG] [Thread-155292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:03:58.050 [DEBUG] [Thread-155292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:03:58.050 [DEBUG] [Thread-155292] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:03:58.058 [DEBUG] [Thread-155292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:03:58.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:03:58.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:03:58.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:03:58.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:03:58.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:03:58.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:03:58.090 [DEBUG] [Thread-155292] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:08.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:04:08.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:04:08.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:04:08.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 3, 54), 10.73, 47.84, 0.0, 19.32, 13.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:04:08.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:03:54
2025-09-29T12:04:08.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:04:08.943 [DEBUG] [Thread-155294] [transport.py] [_log()] starting thread (client mode): 0x2e3c1390
2025-09-29T12:04:08.943 [DEBUG] [Thread-155294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:04:08.960 [DEBUG] [Thread-155294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:04:08.961 [INFO] [Thread-155294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:04:08.964 [DEBUG] [Thread-155294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] client lang: <none>
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] server lang: <none>
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] kex follows: False
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] Compression: none
2025-09-29T12:04:08.965 [DEBUG] [Thread-155294] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:04:08.980 [DEBUG] [Thread-155294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:04:08.980 [DEBUG] [Thread-155294] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:04:08.980 [DEBUG] [Thread-155294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:04:08.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:04:08.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:04:08.981 [DEBUG] [Thread-155294] [transport.py] [_log()] userauth is OK
2025-09-29T12:04:08.982 [DEBUG] [Thread-155294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:04:08.982 [DEBUG] [Thread-155294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:04:08.982 [DEBUG] [Thread-155294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:04:08.982 [DEBUG] [Thread-155294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:04:09.001 [INFO] [Thread-155294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:04:09.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:04:09.633 [DEBUG] [Thread-155294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:04:09.633 [DEBUG] [Thread-155294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:04:09.633 [DEBUG] [Thread-155294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:04:09.674 [DEBUG] [Thread-155294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:04:09.675 [DEBUG] [Thread-155294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:04:09.677 [DEBUG] [Thread-155294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:04:09.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:04:09.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:04:09.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:04:09.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:04:09.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:04:09.697 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:04:09.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:04:09.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:04:09.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:04:09.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.419168 -999.00  +12.90  11.65     53   +3.70 1 1 1 1 1   888    0 10.19 35.93 ----- 10.9 11.7 184.0 18.4 20.9 -25.9 19.3 -28.7 19.6 -24.3 20.9 -25.2
2025-09-29T12:04:09.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:04:09.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:04:09.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.419168
2025-09-29T12:04:09.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:04:09.699 [DEBUG] [Thread-155294] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:09.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:04:09.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:04:09.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:04:09.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:04:09.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:03:54', tmtdew=10.73, humidity=47.84, cloud=0.0, wind=19.32, temperature=13.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:03:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:04:09.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:04:09.795 [DEBUG] [Thread-155297] [transport.py] [_log()] starting thread (client mode): 0x2b96ed70
2025-09-29T12:04:09.795 [DEBUG] [Thread-155297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:04:09.809 [DEBUG] [Thread-155297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:04:09.809 [INFO] [Thread-155297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:04:09.817 [DEBUG] [Thread-155297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:04:09.817 [DEBUG] [Thread-155297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:04:09.817 [DEBUG] [Thread-155297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:04:09.817 [DEBUG] [Thread-155297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:09.817 [DEBUG] [Thread-155297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:09.817 [DEBUG] [Thread-155297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:09.817 [DEBUG] [Thread-155297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:09.817 [DEBUG] [Thread-155297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:04:09.818 [DEBUG] [Thread-155297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:04:09.818 [DEBUG] [Thread-155297] [transport.py] [_log()] client lang: <none>
2025-09-29T12:04:09.818 [DEBUG] [Thread-155297] [transport.py] [_log()] server lang: <none>
2025-09-29T12:04:09.818 [DEBUG] [Thread-155297] [transport.py] [_log()] kex follows: False
2025-09-29T12:04:09.818 [DEBUG] [Thread-155297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:04:09.818 [DEBUG] [Thread-155297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:04:09.818 [DEBUG] [Thread-155297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:04:09.818 [DEBUG] [Thread-155297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:04:09.819 [DEBUG] [Thread-155297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:04:09.819 [DEBUG] [Thread-155297] [transport.py] [_log()] Compression: none
2025-09-29T12:04:09.819 [DEBUG] [Thread-155297] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:04:09.873 [DEBUG] [Thread-155297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:04:09.874 [DEBUG] [Thread-155297] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:04:09.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:04:09.875 [DEBUG] [Thread-155297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:04:09.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:04:09.929 [DEBUG] [Thread-155297] [transport.py] [_log()] userauth is OK
2025-09-29T12:04:09.930 [DEBUG] [Thread-155297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:04:09.930 [DEBUG] [Thread-155297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:04:09.930 [DEBUG] [Thread-155297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:04:09.930 [DEBUG] [Thread-155297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:04:09.949 [INFO] [Thread-155297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:04:09.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:04:09.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:04:10.870 [DEBUG] [Thread-155297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:04:10.871 [DEBUG] [Thread-155297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:04:10.918 [DEBUG] [Thread-155297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:04:10.918 [DEBUG] [Thread-155297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:04:10.927 [DEBUG] [Thread-155297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:04:10.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:04:10.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:04:10.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:04:10.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:04:10.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:04:10.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:04:10.961 [DEBUG] [Thread-155297] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:11.362 [DEBUG] [Thread-155299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:04:20.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:04:20.962 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:04:20.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:04:21.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 3, 54), 10.73, 47.84, 0.0, 19.32, 13.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:04:21.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:03:54
2025-09-29T12:04:21.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:04:21.850 [DEBUG] [Thread-155300] [transport.py] [_log()] starting thread (client mode): 0x2b957580
2025-09-29T12:04:21.851 [DEBUG] [Thread-155300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:04:21.862 [DEBUG] [Thread-155300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:04:21.862 [INFO] [Thread-155300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] client lang: <none>
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] server lang: <none>
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] kex follows: False
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] Compression: none
2025-09-29T12:04:21.864 [DEBUG] [Thread-155300] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:04:21.875 [DEBUG] [Thread-155300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:04:21.875 [DEBUG] [Thread-155300] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:04:21.875 [DEBUG] [Thread-155300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:04:21.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:04:21.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:04:21.876 [DEBUG] [Thread-155300] [transport.py] [_log()] userauth is OK
2025-09-29T12:04:21.876 [DEBUG] [Thread-155300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:04:21.876 [DEBUG] [Thread-155300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:04:21.876 [DEBUG] [Thread-155300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:04:21.876 [DEBUG] [Thread-155300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:04:21.891 [INFO] [Thread-155300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:04:21.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:04:22.505 [DEBUG] [Thread-155300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:04:22.505 [DEBUG] [Thread-155300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:04:22.505 [DEBUG] [Thread-155300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:04:22.546 [DEBUG] [Thread-155300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:04:22.546 [DEBUG] [Thread-155300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:04:22.550 [DEBUG] [Thread-155300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:04:22.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:04:22.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:04:22.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:04:22.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:04:22.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:04:22.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:04:22.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.419515 -999.00  +12.90  21.37     53   +3.70 1 1 1 1 1   888    0 10.19 34.54 ----- 20.4 21.4 171.1 28.1 21.1 -26.1 19.4 -23.5 19.5 -25.0 21.0 -25.4
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.419515
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:04:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:03:54', tmtdew=10.73, humidity=47.84, cloud=0.0, wind=19.32, temperature=13.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:04:06.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:04:22.564 [DEBUG] [Thread-155300] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:22.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:04:22.648 [DEBUG] [Thread-155303] [transport.py] [_log()] starting thread (client mode): 0x2b957cd0
2025-09-29T12:04:22.648 [DEBUG] [Thread-155303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:04:22.663 [DEBUG] [Thread-155303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:04:22.663 [INFO] [Thread-155303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] client lang: <none>
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] server lang: <none>
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] kex follows: False
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:04:22.675 [DEBUG] [Thread-155303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:04:22.676 [DEBUG] [Thread-155303] [transport.py] [_log()] Compression: none
2025-09-29T12:04:22.676 [DEBUG] [Thread-155303] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:04:22.731 [DEBUG] [Thread-155303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:04:22.732 [DEBUG] [Thread-155303] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:04:22.732 [DEBUG] [Thread-155303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:04:22.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:04:22.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:04:22.790 [DEBUG] [Thread-155303] [transport.py] [_log()] userauth is OK
2025-09-29T12:04:22.790 [DEBUG] [Thread-155303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:04:22.790 [DEBUG] [Thread-155303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:04:22.790 [DEBUG] [Thread-155303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:04:22.790 [DEBUG] [Thread-155303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:04:22.804 [INFO] [Thread-155303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:04:22.804 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:04:22.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:04:23.734 [DEBUG] [Thread-155303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:04:23.734 [DEBUG] [Thread-155303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:04:23.785 [DEBUG] [Thread-155303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:04:23.785 [DEBUG] [Thread-155303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:04:23.794 [DEBUG] [Thread-155303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:04:23.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:04:23.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:04:23.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:04:23.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:04:23.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:04:23.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:04:23.832 [DEBUG] [Thread-155303] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:26.402 [DEBUG] [Thread-155305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:04:33.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:04:33.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:04:33.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:04:34.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 4, 26), 10.68, 47.9, 0.0, 17.56, 12.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:04:34.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:04:26
2025-09-29T12:04:34.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:04:34.694 [DEBUG] [Thread-155306] [transport.py] [_log()] starting thread (client mode): 0x28704f10
2025-09-29T12:04:34.694 [DEBUG] [Thread-155306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:04:34.716 [DEBUG] [Thread-155306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:04:34.716 [INFO] [Thread-155306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:04:34.719 [DEBUG] [Thread-155306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:04:34.719 [DEBUG] [Thread-155306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:04:34.719 [DEBUG] [Thread-155306] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:04:34.719 [DEBUG] [Thread-155306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:34.719 [DEBUG] [Thread-155306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] client lang: <none>
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] server lang: <none>
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] kex follows: False
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] Compression: none
2025-09-29T12:04:34.720 [DEBUG] [Thread-155306] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:04:34.735 [DEBUG] [Thread-155306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:04:34.735 [DEBUG] [Thread-155306] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:04:34.736 [DEBUG] [Thread-155306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:04:34.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:04:34.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:04:34.738 [DEBUG] [Thread-155306] [transport.py] [_log()] userauth is OK
2025-09-29T12:04:34.738 [DEBUG] [Thread-155306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:04:34.738 [DEBUG] [Thread-155306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:04:34.738 [DEBUG] [Thread-155306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:04:34.738 [DEBUG] [Thread-155306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:04:34.772 [INFO] [Thread-155306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:04:34.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:04:35.398 [DEBUG] [Thread-155306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:04:35.398 [DEBUG] [Thread-155306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:04:35.399 [DEBUG] [Thread-155306] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:04:35.439 [DEBUG] [Thread-155306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:04:35.439 [DEBUG] [Thread-155306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:04:35.442 [DEBUG] [Thread-155306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:04:35.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:04:35.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:04:35.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:04:35.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:04:35.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:04:35.463 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:04:35.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:04:35.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:04:35.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:04:35.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.419515 -999.00  +12.90  21.37     53   +3.70 1 1 1 1 1   888    0 10.19 34.54 ----- 20.4 21.4 171.1 28.1 21.1 -26.1 19.4 -23.5 19.5 -25.0 21.0 -25.4
2025-09-29T12:04:35.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:04:35.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:04:35.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.419515
2025-09-29T12:04:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:04:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:04:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:04:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:04:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:04:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:04:26', tmtdew=10.68, humidity=47.9, cloud=0.0, wind=17.56, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:04:06.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:04:35.466 [DEBUG] [Thread-155306] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:35.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:04:35.561 [DEBUG] [Thread-155309] [transport.py] [_log()] starting thread (client mode): 0x287062c0
2025-09-29T12:04:35.561 [DEBUG] [Thread-155309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:04:35.575 [DEBUG] [Thread-155309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:04:35.575 [INFO] [Thread-155309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:04:35.583 [DEBUG] [Thread-155309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:04:35.583 [DEBUG] [Thread-155309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:04:35.583 [DEBUG] [Thread-155309] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:04:35.583 [DEBUG] [Thread-155309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:35.583 [DEBUG] [Thread-155309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:35.583 [DEBUG] [Thread-155309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] client lang: <none>
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] server lang: <none>
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] kex follows: False
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:04:35.584 [DEBUG] [Thread-155309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:04:35.585 [DEBUG] [Thread-155309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:04:35.585 [DEBUG] [Thread-155309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:04:35.585 [DEBUG] [Thread-155309] [transport.py] [_log()] Compression: none
2025-09-29T12:04:35.585 [DEBUG] [Thread-155309] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:04:35.640 [DEBUG] [Thread-155309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:04:35.641 [DEBUG] [Thread-155309] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:04:35.641 [DEBUG] [Thread-155309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:04:35.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:04:35.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:04:35.702 [DEBUG] [Thread-155309] [transport.py] [_log()] userauth is OK
2025-09-29T12:04:35.702 [DEBUG] [Thread-155309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:04:35.702 [DEBUG] [Thread-155309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:04:35.702 [DEBUG] [Thread-155309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:04:35.702 [DEBUG] [Thread-155309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:04:35.726 [INFO] [Thread-155309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:04:35.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:04:35.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:04:36.639 [DEBUG] [Thread-155309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:04:36.640 [DEBUG] [Thread-155309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:04:36.691 [DEBUG] [Thread-155309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:04:36.691 [DEBUG] [Thread-155309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:04:36.702 [DEBUG] [Thread-155309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:04:36.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:04:36.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:04:36.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:04:36.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:04:36.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:04:36.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:04:36.744 [DEBUG] [Thread-155309] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:37.883 [DEBUG] [Thread-155311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:04:41.442 [DEBUG] [Thread-155312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:04:43.894 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:04:43.895 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:04:46.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:04:46.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:04:46.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:04:47.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 4, 26), 10.68, 47.9, 0.0, 17.56, 12.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:04:47.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:04:26
2025-09-29T12:04:47.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:04:47.599 [DEBUG] [Thread-155313] [transport.py] [_log()] starting thread (client mode): 0x2b9c16f0
2025-09-29T12:04:47.599 [DEBUG] [Thread-155313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:04:47.619 [DEBUG] [Thread-155313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:04:47.619 [INFO] [Thread-155313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] client lang: <none>
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] server lang: <none>
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] kex follows: False
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] Compression: none
2025-09-29T12:04:47.623 [DEBUG] [Thread-155313] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:04:47.639 [DEBUG] [Thread-155313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:04:47.639 [DEBUG] [Thread-155313] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:04:47.640 [DEBUG] [Thread-155313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:04:47.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:04:47.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:04:47.642 [DEBUG] [Thread-155313] [transport.py] [_log()] userauth is OK
2025-09-29T12:04:47.642 [DEBUG] [Thread-155313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:04:47.642 [DEBUG] [Thread-155313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:04:47.643 [DEBUG] [Thread-155313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:04:47.643 [DEBUG] [Thread-155313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:04:47.666 [INFO] [Thread-155313] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:04:47.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:04:48.290 [DEBUG] [Thread-155313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:04:48.290 [DEBUG] [Thread-155313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:04:48.290 [DEBUG] [Thread-155313] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:04:48.333 [DEBUG] [Thread-155313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:04:48.333 [DEBUG] [Thread-155313] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:04:48.336 [DEBUG] [Thread-155313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:04:48.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:04:48.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:04:48.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:04:48.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:04:48.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:04:48.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:04:48.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:04:48.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:04:48.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.419515 -999.00  +12.90  21.37     53   +3.70 1 1 1 1 1   888    0 10.19 34.54 ----- 20.4 21.4 171.1 28.1 21.1 -26.1 19.4 -23.5 19.5 -25.0 21.0 -25.4
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.419515
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:04:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:04:26', tmtdew=10.68, humidity=47.9, cloud=0.0, wind=17.56, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:04:06.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:04:48.354 [DEBUG] [Thread-155313] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:48.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:04:48.435 [DEBUG] [Thread-155316] [transport.py] [_log()] starting thread (client mode): 0x2e3c25f0
2025-09-29T12:04:48.435 [DEBUG] [Thread-155316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:04:48.450 [DEBUG] [Thread-155316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:04:48.451 [INFO] [Thread-155316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:04:48.458 [DEBUG] [Thread-155316] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:04:48.458 [DEBUG] [Thread-155316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] client lang: <none>
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] server lang: <none>
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] kex follows: False
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:04:48.459 [DEBUG] [Thread-155316] [transport.py] [_log()] Compression: none
2025-09-29T12:04:48.460 [DEBUG] [Thread-155316] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:04:48.517 [DEBUG] [Thread-155316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:04:48.518 [DEBUG] [Thread-155316] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:04:48.518 [DEBUG] [Thread-155316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:04:48.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:04:48.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:04:48.574 [DEBUG] [Thread-155316] [transport.py] [_log()] userauth is OK
2025-09-29T12:04:48.574 [DEBUG] [Thread-155316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:04:48.574 [DEBUG] [Thread-155316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:04:48.574 [DEBUG] [Thread-155316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:04:48.574 [DEBUG] [Thread-155316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:04:48.594 [INFO] [Thread-155316] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:04:48.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:04:48.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:04:49.548 [DEBUG] [Thread-155316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:04:49.548 [DEBUG] [Thread-155316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:04:49.596 [DEBUG] [Thread-155316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:04:49.596 [DEBUG] [Thread-155316] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:04:49.605 [DEBUG] [Thread-155316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:04:49.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:04:49.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:04:49.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:04:49.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:04:49.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:04:49.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:04:49.640 [DEBUG] [Thread-155316] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:04:56.491 [DEBUG] [Thread-155318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:04:59.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:04:59.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:04:59.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:05:00.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 4, 26), 10.68, 47.9, 0.0, 17.56, 12.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:05:00.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:04:26
2025-09-29T12:05:00.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:05:00.532 [DEBUG] [Thread-155319] [transport.py] [_log()] starting thread (client mode): 0x2e3480d0
2025-09-29T12:05:00.532 [DEBUG] [Thread-155319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:00.552 [DEBUG] [Thread-155319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:05:00.552 [INFO] [Thread-155319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:05:00.555 [DEBUG] [Thread-155319] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:00.555 [DEBUG] [Thread-155319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:05:00.555 [DEBUG] [Thread-155319] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:00.555 [DEBUG] [Thread-155319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:00.555 [DEBUG] [Thread-155319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:00.555 [DEBUG] [Thread-155319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] Compression: none
2025-09-29T12:05:00.556 [DEBUG] [Thread-155319] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:00.571 [DEBUG] [Thread-155319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:00.571 [DEBUG] [Thread-155319] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:00.571 [DEBUG] [Thread-155319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:05:00.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:05:00.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:00.572 [DEBUG] [Thread-155319] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:00.572 [DEBUG] [Thread-155319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:00.572 [DEBUG] [Thread-155319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:00.572 [DEBUG] [Thread-155319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:05:00.572 [DEBUG] [Thread-155319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:00.587 [INFO] [Thread-155319] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:00.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:05:01.226 [DEBUG] [Thread-155319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:05:01.226 [DEBUG] [Thread-155319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:05:01.226 [DEBUG] [Thread-155319] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:05:01.267 [DEBUG] [Thread-155319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:05:01.267 [DEBUG] [Thread-155319] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:05:01.269 [DEBUG] [Thread-155319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:05:01.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:05:01.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:05:01.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:05:01.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:05:01.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:05:01.288 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:05:01.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.419863 -999.00  +12.80  17.94     53   +3.60 1 1 1 1 1   888    0 10.37 36.98 ----- 12.8 17.9 190.4 23.9 20.9 -25.2 19.3 -23.9 19.5 -24.6 21.0 -24.6
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.419863
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:05:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:04:26', tmtdew=10.68, humidity=47.9, cloud=0.0, wind=17.56, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:04:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:05:01.289 [DEBUG] [Thread-155319] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:05:01.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:05:01.374 [DEBUG] [Thread-155322] [transport.py] [_log()] starting thread (client mode): 0x2e3c0340
2025-09-29T12:05:01.374 [DEBUG] [Thread-155322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:01.389 [DEBUG] [Thread-155322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:05:01.389 [INFO] [Thread-155322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:01.396 [DEBUG] [Thread-155322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:01.397 [DEBUG] [Thread-155322] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:01.397 [DEBUG] [Thread-155322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:01.397 [DEBUG] [Thread-155322] [transport.py] [_log()] Compression: none
2025-09-29T12:05:01.397 [DEBUG] [Thread-155322] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:01.454 [DEBUG] [Thread-155322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:01.454 [DEBUG] [Thread-155322] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:01.455 [DEBUG] [Thread-155322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:05:01.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:05:01.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:01.510 [DEBUG] [Thread-155322] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:01.510 [DEBUG] [Thread-155322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:01.510 [DEBUG] [Thread-155322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:01.510 [DEBUG] [Thread-155322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:05:01.510 [DEBUG] [Thread-155322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:01.524 [INFO] [Thread-155322] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:01.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:05:01.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:05:02.494 [DEBUG] [Thread-155322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:05:02.495 [DEBUG] [Thread-155322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:05:02.542 [DEBUG] [Thread-155322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:05:02.542 [DEBUG] [Thread-155322] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:05:02.551 [DEBUG] [Thread-155322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:05:02.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:05:02.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:05:02.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:05:02.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:05:02.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:05:02.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:05:02.586 [DEBUG] [Thread-155322] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:05:11.521 [DEBUG] [Thread-155324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:05:12.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:05:12.589 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:05:12.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:05:13.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 4, 58), 10.81, 47.78, 0.0, 22.78, 12.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:05:13.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:04:58
2025-09-29T12:05:13.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:05:13.450 [DEBUG] [Thread-155325] [transport.py] [_log()] starting thread (client mode): 0x2e348280
2025-09-29T12:05:13.450 [DEBUG] [Thread-155325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:13.475 [DEBUG] [Thread-155325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:05:13.475 [INFO] [Thread-155325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] Compression: none
2025-09-29T12:05:13.478 [DEBUG] [Thread-155325] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:13.492 [DEBUG] [Thread-155325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:13.492 [DEBUG] [Thread-155325] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:13.493 [DEBUG] [Thread-155325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:05:13.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:05:13.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:13.493 [DEBUG] [Thread-155325] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:13.493 [DEBUG] [Thread-155325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:13.493 [DEBUG] [Thread-155325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:13.493 [DEBUG] [Thread-155325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:05:13.493 [DEBUG] [Thread-155325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:13.503 [INFO] [Thread-155325] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:13.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:05:19.649 [DEBUG] [Thread-155325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:05:19.649 [DEBUG] [Thread-155325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:05:19.649 [DEBUG] [Thread-155325] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:05:19.689 [DEBUG] [Thread-155325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:05:19.689 [DEBUG] [Thread-155325] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:05:19.692 [DEBUG] [Thread-155325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:05:19.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:05:19.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:05:19.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:05:19.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:05:20.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:05:20.082 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:05:20.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:05:20.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:05:20.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:05:20.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.419863 -999.00  +12.80  17.94     53   +3.60 1 1 1 1 1   888    0 10.37 36.98 ----- 12.8 17.9 190.4 23.9 20.9 -25.2 19.3 -23.9 19.5 -24.6 21.0 -24.6
2025-09-29T12:05:20.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:05:20.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:05:20.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.419863
2025-09-29T12:05:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:05:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:05:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:05:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:05:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:05:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:04:58', tmtdew=10.81, humidity=47.78, cloud=0.0, wind=22.78, temperature=12.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:04:36.163', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:05:20.085 [DEBUG] [Thread-155325] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:05:20.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:05:20.180 [DEBUG] [Thread-155328] [transport.py] [_log()] starting thread (client mode): 0x2b91f490
2025-09-29T12:05:20.180 [DEBUG] [Thread-155328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:20.201 [DEBUG] [Thread-155328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:05:20.201 [INFO] [Thread-155328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:20.209 [DEBUG] [Thread-155328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:20.210 [DEBUG] [Thread-155328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:20.210 [DEBUG] [Thread-155328] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:20.210 [DEBUG] [Thread-155328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:20.210 [DEBUG] [Thread-155328] [transport.py] [_log()] Compression: none
2025-09-29T12:05:20.210 [DEBUG] [Thread-155328] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:20.266 [DEBUG] [Thread-155328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:20.266 [DEBUG] [Thread-155328] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:20.267 [DEBUG] [Thread-155328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:05:20.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:05:20.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:20.323 [DEBUG] [Thread-155328] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:20.324 [DEBUG] [Thread-155328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:20.324 [DEBUG] [Thread-155328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:20.324 [DEBUG] [Thread-155328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:05:20.324 [DEBUG] [Thread-155328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:20.344 [INFO] [Thread-155328] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:20.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:05:20.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:05:21.276 [DEBUG] [Thread-155328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:05:21.276 [DEBUG] [Thread-155328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:05:21.324 [DEBUG] [Thread-155328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:05:21.324 [DEBUG] [Thread-155328] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:05:21.333 [DEBUG] [Thread-155328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:05:21.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:05:21.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:05:21.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:05:21.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:05:21.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:05:21.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:05:21.368 [DEBUG] [Thread-155328] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:05:26.575 [DEBUG] [Thread-155330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:05:31.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:05:31.370 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:05:31.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:05:31.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 4, 58), 10.81, 47.78, 0.0, 22.78, 12.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:05:31.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:04:58
2025-09-29T12:05:32.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:05:32.269 [DEBUG] [Thread-155331] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-29T12:05:32.269 [DEBUG] [Thread-155331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:32.289 [DEBUG] [Thread-155331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:05:32.289 [INFO] [Thread-155331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:32.291 [DEBUG] [Thread-155331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:32.292 [DEBUG] [Thread-155331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:32.292 [DEBUG] [Thread-155331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:32.292 [DEBUG] [Thread-155331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:32.292 [DEBUG] [Thread-155331] [transport.py] [_log()] Compression: none
2025-09-29T12:05:32.292 [DEBUG] [Thread-155331] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:32.302 [DEBUG] [Thread-155331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:32.303 [DEBUG] [Thread-155331] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:32.303 [DEBUG] [Thread-155331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:05:32.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:05:32.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:32.305 [DEBUG] [Thread-155331] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:32.305 [DEBUG] [Thread-155331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:32.305 [DEBUG] [Thread-155331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:32.305 [DEBUG] [Thread-155331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:05:32.305 [DEBUG] [Thread-155331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:32.325 [INFO] [Thread-155331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:32.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:05:32.880 [DEBUG] [Thread-155331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:05:32.880 [DEBUG] [Thread-155331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:05:32.880 [DEBUG] [Thread-155331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:05:32.920 [DEBUG] [Thread-155331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:05:32.921 [DEBUG] [Thread-155331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:05:32.924 [DEBUG] [Thread-155331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:05:32.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:05:32.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:05:32.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:05:32.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:05:32.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:05:32.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:05:32.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:05:32.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:05:32.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:05:32.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.420209 -999.00  +12.80  19.41     53   +3.70 1 1 1 1 1   888    0 10.10 32.93 ----- 14.7 19.4 178.0 24.6 20.8 -25.1 19.2 -25.1 19.5 -24.6 20.8 -24.4
2025-09-29T12:05:32.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:05:32.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:05:32.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.420209
2025-09-29T12:05:32.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:05:32.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:05:32.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:05:32.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:05:32.948 [DEBUG] [Thread-155331] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:05:32.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:05:32.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:04:58', tmtdew=10.81, humidity=47.78, cloud=0.0, wind=22.78, temperature=12.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:05:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:05:33.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:05:33.044 [DEBUG] [Thread-155334] [transport.py] [_log()] starting thread (client mode): 0x2e3c1840
2025-09-29T12:05:33.044 [DEBUG] [Thread-155334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:33.059 [DEBUG] [Thread-155334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:05:33.059 [INFO] [Thread-155334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:05:33.067 [DEBUG] [Thread-155334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] Compression: none
2025-09-29T12:05:33.068 [DEBUG] [Thread-155334] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:33.128 [DEBUG] [Thread-155334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:33.128 [DEBUG] [Thread-155334] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:33.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:05:33.130 [DEBUG] [Thread-155334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:05:33.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:33.184 [DEBUG] [Thread-155334] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:33.184 [DEBUG] [Thread-155334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:33.184 [DEBUG] [Thread-155334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:33.184 [DEBUG] [Thread-155334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:05:33.184 [DEBUG] [Thread-155334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:33.204 [INFO] [Thread-155334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:33.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:05:33.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:05:34.166 [DEBUG] [Thread-155334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:05:34.166 [DEBUG] [Thread-155334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:05:34.214 [DEBUG] [Thread-155334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:05:34.214 [DEBUG] [Thread-155334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:05:34.223 [DEBUG] [Thread-155334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:05:34.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:05:34.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:05:34.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:05:34.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:05:34.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:05:34.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:05:34.258 [DEBUG] [Thread-155334] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:05:37.933 [DEBUG] [Thread-155336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:05:41.618 [DEBUG] [Thread-155337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:05:44.038 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:05:44.039 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:05:44.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:05:44.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:05:44.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:05:44.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 5, 30), 10.72, 48.12, 0.0, 17.82, 13.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:05:44.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:05:30
2025-09-29T12:05:44.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:05:45.109 [DEBUG] [Thread-155338] [transport.py] [_log()] starting thread (client mode): 0x2b96bf70
2025-09-29T12:05:45.109 [DEBUG] [Thread-155338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:45.128 [DEBUG] [Thread-155338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:05:45.128 [INFO] [Thread-155338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:05:45.131 [DEBUG] [Thread-155338] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] Compression: none
2025-09-29T12:05:45.132 [DEBUG] [Thread-155338] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:45.148 [DEBUG] [Thread-155338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:45.149 [DEBUG] [Thread-155338] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:45.149 [DEBUG] [Thread-155338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:05:45.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:05:45.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:45.151 [DEBUG] [Thread-155338] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:45.151 [DEBUG] [Thread-155338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:45.151 [DEBUG] [Thread-155338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:45.152 [DEBUG] [Thread-155338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:05:45.152 [DEBUG] [Thread-155338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:45.175 [INFO] [Thread-155338] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:45.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:05:45.774 [DEBUG] [Thread-155338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:05:45.774 [DEBUG] [Thread-155338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:05:45.774 [DEBUG] [Thread-155338] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:05:45.815 [DEBUG] [Thread-155338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:05:45.816 [DEBUG] [Thread-155338] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:05:45.818 [DEBUG] [Thread-155338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:05:45.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:05:45.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:05:45.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:05:45.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:05:45.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:05:45.837 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:05:45.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:05:45.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:05:45.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:05:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.420209 -999.00  +12.80  19.41     53   +3.70 1 1 1 1 1   888    0 10.10 32.93 ----- 14.7 19.4 178.0 24.6 20.8 -25.1 19.2 -25.1 19.5 -24.6 20.8 -24.4
2025-09-29T12:05:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:05:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:05:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.420209
2025-09-29T12:05:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:05:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:05:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:05:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:05:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:05:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:05:30', tmtdew=10.72, humidity=48.12, cloud=0.0, wind=17.82, temperature=13.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:05:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:05:45.839 [DEBUG] [Thread-155338] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:05:45.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:05:45.934 [DEBUG] [Thread-155341] [transport.py] [_log()] starting thread (client mode): 0x2e38d570
2025-09-29T12:05:45.934 [DEBUG] [Thread-155341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:45.948 [DEBUG] [Thread-155341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:05:45.948 [INFO] [Thread-155341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:05:45.956 [DEBUG] [Thread-155341] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:45.956 [DEBUG] [Thread-155341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:05:45.956 [DEBUG] [Thread-155341] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:45.956 [DEBUG] [Thread-155341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:45.956 [DEBUG] [Thread-155341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] Compression: none
2025-09-29T12:05:45.957 [DEBUG] [Thread-155341] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:46.019 [DEBUG] [Thread-155341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:46.020 [DEBUG] [Thread-155341] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:46.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:05:46.021 [DEBUG] [Thread-155341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:05:46.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:46.075 [DEBUG] [Thread-155341] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:46.076 [DEBUG] [Thread-155341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:46.076 [DEBUG] [Thread-155341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:46.076 [DEBUG] [Thread-155341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:05:46.076 [DEBUG] [Thread-155341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:46.095 [INFO] [Thread-155341] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:46.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:05:46.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:05:47.034 [DEBUG] [Thread-155341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:05:47.034 [DEBUG] [Thread-155341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:05:47.082 [DEBUG] [Thread-155341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:05:47.082 [DEBUG] [Thread-155341] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:05:47.091 [DEBUG] [Thread-155341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:05:47.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:05:47.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:05:47.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:05:47.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:05:47.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:05:47.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:05:47.125 [DEBUG] [Thread-155341] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:05:56.665 [DEBUG] [Thread-155343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:05:57.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:05:57.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:05:57.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:05:57.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 5, 30), 10.72, 48.12, 0.0, 17.82, 13.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:05:57.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:05:30
2025-09-29T12:05:57.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:05:57.968 [DEBUG] [Thread-155344] [transport.py] [_log()] starting thread (client mode): 0x2b954730
2025-09-29T12:05:57.968 [DEBUG] [Thread-155344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:05:57.988 [DEBUG] [Thread-155344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:05:57.988 [INFO] [Thread-155344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:05:57.992 [DEBUG] [Thread-155344] [transport.py] [_log()] client lang: <none>
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] server lang: <none>
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] kex follows: False
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] Compression: none
2025-09-29T12:05:57.993 [DEBUG] [Thread-155344] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:05:58.008 [DEBUG] [Thread-155344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:05:58.009 [DEBUG] [Thread-155344] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:05:58.009 [DEBUG] [Thread-155344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:05:58.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:05:58.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:05:58.012 [DEBUG] [Thread-155344] [transport.py] [_log()] userauth is OK
2025-09-29T12:05:58.012 [DEBUG] [Thread-155344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:05:58.012 [DEBUG] [Thread-155344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:05:58.012 [DEBUG] [Thread-155344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:05:58.012 [DEBUG] [Thread-155344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:05:58.036 [INFO] [Thread-155344] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:05:58.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:00.016 [DEBUG] [Thread-155344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:00.016 [DEBUG] [Thread-155344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:00.017 [DEBUG] [Thread-155344] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:06:00.057 [DEBUG] [Thread-155344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:00.057 [DEBUG] [Thread-155344] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:00.060 [DEBUG] [Thread-155344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:00.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:00.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:06:00.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:06:00.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:06:00.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:00.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:06:00.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:00.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:00.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:06:00.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.420209 -999.00  +12.80  19.41     53   +3.70 1 1 1 1 1   888    0 10.10 32.93 ----- 14.7 19.4 178.0 24.6 20.8 -25.1 19.2 -25.1 19.5 -24.6 20.8 -24.4
2025-09-29T12:06:00.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:06:00.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:06:00.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.420209
2025-09-29T12:06:00.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:06:00.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:06:00.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:06:00.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:06:00.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:06:00.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:05:30', tmtdew=10.72, humidity=48.12, cloud=0.0, wind=17.82, temperature=13.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:05:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:06:00.084 [DEBUG] [Thread-155344] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:00.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:06:00.179 [DEBUG] [Thread-155347] [transport.py] [_log()] starting thread (client mode): 0x28704340
2025-09-29T12:06:00.179 [DEBUG] [Thread-155347] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:00.194 [DEBUG] [Thread-155347] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:06:00.194 [INFO] [Thread-155347] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:06:00.201 [DEBUG] [Thread-155347] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] Compression: none
2025-09-29T12:06:00.202 [DEBUG] [Thread-155347] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:00.260 [DEBUG] [Thread-155347] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:00.261 [DEBUG] [Thread-155347] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:00.262 [DEBUG] [Thread-155347] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:06:00.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:06:00.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:00.316 [DEBUG] [Thread-155347] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:00.316 [DEBUG] [Thread-155347] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:00.316 [DEBUG] [Thread-155347] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:00.316 [DEBUG] [Thread-155347] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:06:00.316 [DEBUG] [Thread-155347] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:00.336 [INFO] [Thread-155347] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:00.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:06:00.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:01.254 [DEBUG] [Thread-155347] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:01.254 [DEBUG] [Thread-155347] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:01.302 [DEBUG] [Thread-155347] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:01.302 [DEBUG] [Thread-155347] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:01.311 [DEBUG] [Thread-155347] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:01.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:01.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:06:01.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:06:01.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:01.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:01.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:01.346 [DEBUG] [Thread-155347] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:11.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:06:11.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:06:11.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:06:11.708 [DEBUG] [Thread-155349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:06:11.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 6, 2), 10.98, 47.3, 0.0, 18.19, 13.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:06:11.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:06:02
2025-09-29T12:06:12.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:06:12.205 [DEBUG] [Thread-155350] [transport.py] [_log()] starting thread (client mode): 0x28704d00
2025-09-29T12:06:12.205 [DEBUG] [Thread-155350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:12.221 [DEBUG] [Thread-155350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:06:12.221 [INFO] [Thread-155350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:12.225 [DEBUG] [Thread-155350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:12.226 [DEBUG] [Thread-155350] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:12.226 [DEBUG] [Thread-155350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:12.226 [DEBUG] [Thread-155350] [transport.py] [_log()] Compression: none
2025-09-29T12:06:12.226 [DEBUG] [Thread-155350] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:12.245 [DEBUG] [Thread-155350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:12.245 [DEBUG] [Thread-155350] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:12.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:06:12.246 [DEBUG] [Thread-155350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:06:12.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:12.248 [DEBUG] [Thread-155350] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:12.248 [DEBUG] [Thread-155350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:12.248 [DEBUG] [Thread-155350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:12.248 [DEBUG] [Thread-155350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:06:12.248 [DEBUG] [Thread-155350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:12.272 [INFO] [Thread-155350] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:12.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:12.888 [DEBUG] [Thread-155350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:12.888 [DEBUG] [Thread-155350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:12.889 [DEBUG] [Thread-155350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:06:12.930 [DEBUG] [Thread-155350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:12.930 [DEBUG] [Thread-155350] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:12.933 [DEBUG] [Thread-155350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:12.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:12.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:06:12.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:06:12.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:06:12.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:12.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:06:12.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:12.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:12.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:06:12.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.420557 -999.00  +13.10  17.10     53   +3.90 1 1 1 1 1   888    0 10.20 31.61 ----- 11.9 17.1 164.4 24.2 21.0 -23.0 19.3 -22.7 19.5 -23.5 21.0 -23.7
2025-09-29T12:06:12.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:06:12.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:06:12.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.420557
2025-09-29T12:06:12.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:06:12.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:06:12.956 [DEBUG] [Thread-155350] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:12.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:06:12.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:06:12.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:06:12.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:06:02', tmtdew=10.98, humidity=47.3, cloud=0.0, wind=18.19, temperature=13.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:05:36.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:06:13.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:06:13.050 [DEBUG] [Thread-155353] [transport.py] [_log()] starting thread (client mode): 0x2b954e80
2025-09-29T12:06:13.050 [DEBUG] [Thread-155353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:13.070 [DEBUG] [Thread-155353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:06:13.071 [INFO] [Thread-155353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:06:13.082 [DEBUG] [Thread-155353] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:13.082 [DEBUG] [Thread-155353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:06:13.082 [DEBUG] [Thread-155353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:13.082 [DEBUG] [Thread-155353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:13.082 [DEBUG] [Thread-155353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:13.082 [DEBUG] [Thread-155353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:13.082 [DEBUG] [Thread-155353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:13.082 [DEBUG] [Thread-155353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] Compression: none
2025-09-29T12:06:13.083 [DEBUG] [Thread-155353] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:13.136 [DEBUG] [Thread-155353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:13.136 [DEBUG] [Thread-155353] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:13.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:06:13.137 [DEBUG] [Thread-155353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:06:13.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:13.192 [DEBUG] [Thread-155353] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:13.192 [DEBUG] [Thread-155353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:13.192 [DEBUG] [Thread-155353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:13.192 [DEBUG] [Thread-155353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:06:13.192 [DEBUG] [Thread-155353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:13.211 [INFO] [Thread-155353] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:13.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:06:13.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:14.191 [DEBUG] [Thread-155353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:14.191 [DEBUG] [Thread-155353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:14.239 [DEBUG] [Thread-155353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:14.239 [DEBUG] [Thread-155353] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:14.247 [DEBUG] [Thread-155353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:14.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:14.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:06:14.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:06:14.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:14.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:14.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:14.280 [DEBUG] [Thread-155353] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:24.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:06:24.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:06:24.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:06:24.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 6, 2), 10.98, 47.3, 0.0, 18.19, 13.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:06:24.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:06:02
2025-09-29T12:06:24.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:06:25.143 [DEBUG] [Thread-155355] [transport.py] [_log()] starting thread (client mode): 0x2b91ffd0
2025-09-29T12:06:25.143 [DEBUG] [Thread-155355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:25.163 [DEBUG] [Thread-155355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:06:25.164 [INFO] [Thread-155355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:06:25.167 [DEBUG] [Thread-155355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:25.167 [DEBUG] [Thread-155355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:06:25.167 [DEBUG] [Thread-155355] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:25.167 [DEBUG] [Thread-155355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:25.167 [DEBUG] [Thread-155355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:25.167 [DEBUG] [Thread-155355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] Compression: none
2025-09-29T12:06:25.168 [DEBUG] [Thread-155355] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:25.185 [DEBUG] [Thread-155355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:25.186 [DEBUG] [Thread-155355] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:25.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:06:25.187 [DEBUG] [Thread-155355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:06:25.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:25.188 [DEBUG] [Thread-155355] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:25.189 [DEBUG] [Thread-155355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:25.189 [DEBUG] [Thread-155355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:25.189 [DEBUG] [Thread-155355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:06:25.189 [DEBUG] [Thread-155355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:25.224 [INFO] [Thread-155355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:25.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:25.996 [DEBUG] [Thread-155355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:25.996 [DEBUG] [Thread-155355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:25.996 [DEBUG] [Thread-155355] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:06:26.037 [DEBUG] [Thread-155355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:26.037 [DEBUG] [Thread-155355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:26.040 [DEBUG] [Thread-155355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:26.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:26.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:06:26.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:06:26.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:06:26.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:26.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:06:26.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:26.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:26.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:06:26.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.420557 -999.00  +13.10  17.10     53   +3.90 1 1 1 1 1   888    0 10.20 31.61 ----- 11.9 17.1 164.4 24.2 21.0 -23.0 19.3 -22.7 19.5 -23.5 21.0 -23.7
2025-09-29T12:06:26.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:06:26.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:06:26.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.420557
2025-09-29T12:06:26.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:06:26.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:06:26.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:06:26.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:06:26.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:06:26.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:06:02', tmtdew=10.98, humidity=47.3, cloud=0.0, wind=18.19, temperature=13.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:05:36.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:06:26.067 [DEBUG] [Thread-155355] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:26.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:06:26.155 [DEBUG] [Thread-155358] [transport.py] [_log()] starting thread (client mode): 0x2b9af100
2025-09-29T12:06:26.155 [DEBUG] [Thread-155358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:26.174 [DEBUG] [Thread-155358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:06:26.174 [INFO] [Thread-155358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:06:26.182 [DEBUG] [Thread-155358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:26.182 [DEBUG] [Thread-155358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:06:26.182 [DEBUG] [Thread-155358] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:26.182 [DEBUG] [Thread-155358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:26.182 [DEBUG] [Thread-155358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:26.182 [DEBUG] [Thread-155358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:26.183 [DEBUG] [Thread-155358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:26.184 [DEBUG] [Thread-155358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:26.184 [DEBUG] [Thread-155358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:26.184 [DEBUG] [Thread-155358] [transport.py] [_log()] Compression: none
2025-09-29T12:06:26.184 [DEBUG] [Thread-155358] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:26.241 [DEBUG] [Thread-155358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:26.241 [DEBUG] [Thread-155358] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:26.242 [DEBUG] [Thread-155358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:06:26.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:06:26.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:26.296 [DEBUG] [Thread-155358] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:26.297 [DEBUG] [Thread-155358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:26.297 [DEBUG] [Thread-155358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:26.297 [DEBUG] [Thread-155358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:06:26.297 [DEBUG] [Thread-155358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:26.316 [INFO] [Thread-155358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:26.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:06:26.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:26.738 [DEBUG] [Thread-155360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:06:27.282 [DEBUG] [Thread-155358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:27.282 [DEBUG] [Thread-155358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:27.330 [DEBUG] [Thread-155358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:27.330 [DEBUG] [Thread-155358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:27.339 [DEBUG] [Thread-155358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:27.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:27.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:06:27.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:06:27.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:27.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:27.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:27.373 [DEBUG] [Thread-155358] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:37.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:06:37.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:06:37.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:06:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 6, 34), 11.09, 46.8, 0.0, 19.94, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:06:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:06:34
2025-09-29T12:06:37.984 [DEBUG] [Thread-155361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:06:38.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:06:38.235 [DEBUG] [Thread-155362] [transport.py] [_log()] starting thread (client mode): 0x2b94e230
2025-09-29T12:06:38.235 [DEBUG] [Thread-155362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:38.255 [DEBUG] [Thread-155362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:06:38.255 [INFO] [Thread-155362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:06:38.259 [DEBUG] [Thread-155362] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:38.259 [DEBUG] [Thread-155362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:06:38.259 [DEBUG] [Thread-155362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:38.259 [DEBUG] [Thread-155362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:38.259 [DEBUG] [Thread-155362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:38.259 [DEBUG] [Thread-155362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] Compression: none
2025-09-29T12:06:38.260 [DEBUG] [Thread-155362] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:38.277 [DEBUG] [Thread-155362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:38.278 [DEBUG] [Thread-155362] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:38.278 [DEBUG] [Thread-155362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:06:38.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:06:38.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:38.280 [DEBUG] [Thread-155362] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:38.280 [DEBUG] [Thread-155362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:38.280 [DEBUG] [Thread-155362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:38.280 [DEBUG] [Thread-155362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:06:38.280 [DEBUG] [Thread-155362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:38.298 [INFO] [Thread-155362] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:38.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:39.061 [DEBUG] [Thread-155362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:39.061 [DEBUG] [Thread-155362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:39.062 [DEBUG] [Thread-155362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:06:39.102 [DEBUG] [Thread-155362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:39.103 [DEBUG] [Thread-155362] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:39.105 [DEBUG] [Thread-155362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:39.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:39.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:06:39.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:06:39.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:06:39.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:39.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:06:39.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:39.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:39.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:06:39.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.420557 -999.00  +13.10  17.10     53   +3.90 1 1 1 1 1   888    0 10.20 31.61 ----- 11.9 17.1 164.4 24.2 21.0 -23.0 19.3 -22.7 19.5 -23.5 21.0 -23.7
2025-09-29T12:06:39.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:06:39.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:06:39.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.420557
2025-09-29T12:06:39.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:06:39.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:06:39.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:06:39.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:06:39.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:06:39.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:06:34', tmtdew=11.09, humidity=46.8, cloud=0.0, wind=19.94, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:05:36.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:06:39.127 [DEBUG] [Thread-155362] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:39.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:06:39.225 [DEBUG] [Thread-155365] [transport.py] [_log()] starting thread (client mode): 0x2e38cc10
2025-09-29T12:06:39.225 [DEBUG] [Thread-155365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:39.241 [DEBUG] [Thread-155365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:06:39.241 [INFO] [Thread-155365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:06:39.248 [DEBUG] [Thread-155365] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] Compression: none
2025-09-29T12:06:39.249 [DEBUG] [Thread-155365] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:39.308 [DEBUG] [Thread-155365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:39.308 [DEBUG] [Thread-155365] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:39.309 [DEBUG] [Thread-155365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:06:39.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:06:39.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:39.364 [DEBUG] [Thread-155365] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:39.365 [DEBUG] [Thread-155365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:39.365 [DEBUG] [Thread-155365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:39.365 [DEBUG] [Thread-155365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:06:39.365 [DEBUG] [Thread-155365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:39.383 [INFO] [Thread-155365] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:39.384 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:06:39.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:40.313 [DEBUG] [Thread-155365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:40.313 [DEBUG] [Thread-155365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:40.361 [DEBUG] [Thread-155365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:40.361 [DEBUG] [Thread-155365] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:40.370 [DEBUG] [Thread-155365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:40.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:40.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:06:40.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:06:40.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:40.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:40.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:40.404 [DEBUG] [Thread-155365] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:41.781 [DEBUG] [Thread-155367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:06:44.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:06:44.180 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:06:50.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:06:50.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:06:50.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:06:50.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 6, 34), 11.09, 46.8, 0.0, 19.94, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:06:50.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:06:34
2025-09-29T12:06:51.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:06:51.253 [DEBUG] [Thread-155368] [transport.py] [_log()] starting thread (client mode): 0x2e38fc70
2025-09-29T12:06:51.253 [DEBUG] [Thread-155368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:51.273 [DEBUG] [Thread-155368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:06:51.273 [INFO] [Thread-155368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:51.274 [DEBUG] [Thread-155368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:51.275 [DEBUG] [Thread-155368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:51.275 [DEBUG] [Thread-155368] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:51.275 [DEBUG] [Thread-155368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:51.275 [DEBUG] [Thread-155368] [transport.py] [_log()] Compression: none
2025-09-29T12:06:51.275 [DEBUG] [Thread-155368] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:51.282 [DEBUG] [Thread-155368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:51.282 [DEBUG] [Thread-155368] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:51.283 [DEBUG] [Thread-155368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:06:51.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:06:51.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:51.284 [DEBUG] [Thread-155368] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:51.284 [DEBUG] [Thread-155368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:51.284 [DEBUG] [Thread-155368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:51.284 [DEBUG] [Thread-155368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:06:51.284 [DEBUG] [Thread-155368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:51.299 [INFO] [Thread-155368] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:51.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:51.957 [DEBUG] [Thread-155368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:51.958 [DEBUG] [Thread-155368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:51.958 [DEBUG] [Thread-155368] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:06:51.998 [DEBUG] [Thread-155368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:51.998 [DEBUG] [Thread-155368] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:52.001 [DEBUG] [Thread-155368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:52.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:52.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:06:52.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:06:52.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:06:52.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:52.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:06:52.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:52.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:06:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.421251 -999.00  +12.80  21.38     52   +3.30 1 1 1 1 1   888    0 10.32 33.23 ----- 19.8 21.4 144.0 35.4 20.8 -24.4 19.5 -25.0 19.5 -24.5 20.8 -25.0
2025-09-29T12:06:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:06:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:06:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.421251
2025-09-29T12:06:52.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:06:52.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:06:52.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:06:52.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:06:52.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:06:52.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:06:34', tmtdew=11.09, humidity=46.8, cloud=0.0, wind=19.94, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:06:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:06:52.028 [DEBUG] [Thread-155368] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:52.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:06:52.122 [DEBUG] [Thread-155371] [transport.py] [_log()] starting thread (client mode): 0x2e38c2b0
2025-09-29T12:06:52.122 [DEBUG] [Thread-155371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:06:52.136 [DEBUG] [Thread-155371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:06:52.137 [INFO] [Thread-155371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:06:52.144 [DEBUG] [Thread-155371] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:06:52.144 [DEBUG] [Thread-155371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:06:52.144 [DEBUG] [Thread-155371] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:06:52.144 [DEBUG] [Thread-155371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] client lang: <none>
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] server lang: <none>
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] kex follows: False
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] Compression: none
2025-09-29T12:06:52.145 [DEBUG] [Thread-155371] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:06:52.201 [DEBUG] [Thread-155371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:06:52.201 [DEBUG] [Thread-155371] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:06:52.201 [DEBUG] [Thread-155371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:06:52.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:06:52.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:06:52.257 [DEBUG] [Thread-155371] [transport.py] [_log()] userauth is OK
2025-09-29T12:06:52.257 [DEBUG] [Thread-155371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:06:52.257 [DEBUG] [Thread-155371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:06:52.257 [DEBUG] [Thread-155371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:06:52.257 [DEBUG] [Thread-155371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:06:52.277 [INFO] [Thread-155371] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:06:52.277 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:06:52.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:06:53.200 [DEBUG] [Thread-155371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:06:53.201 [DEBUG] [Thread-155371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:06:53.248 [DEBUG] [Thread-155371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:06:53.248 [DEBUG] [Thread-155371] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:06:53.257 [DEBUG] [Thread-155371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:06:53.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:06:53.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:06:53.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:06:53.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:06:53.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:06:53.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:06:53.292 [DEBUG] [Thread-155371] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:06:56.818 [DEBUG] [Thread-155373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:07:03.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:07:03.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:07:03.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:07:03.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 6, 34), 11.09, 46.8, 0.0, 19.94, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:07:03.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:06:34
2025-09-29T12:07:03.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:07:04.145 [DEBUG] [Thread-155374] [transport.py] [_log()] starting thread (client mode): 0x2b9afac0
2025-09-29T12:07:04.145 [DEBUG] [Thread-155374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:04.166 [DEBUG] [Thread-155374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:07:04.167 [INFO] [Thread-155374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:04.168 [DEBUG] [Thread-155374] [transport.py] [_log()] Compression: none
2025-09-29T12:07:04.169 [DEBUG] [Thread-155374] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:04.177 [DEBUG] [Thread-155374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:04.177 [DEBUG] [Thread-155374] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:04.178 [DEBUG] [Thread-155374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:07:04.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:07:04.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:04.179 [DEBUG] [Thread-155374] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:04.180 [DEBUG] [Thread-155374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:04.180 [DEBUG] [Thread-155374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:04.180 [DEBUG] [Thread-155374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:07:04.180 [DEBUG] [Thread-155374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:04.194 [INFO] [Thread-155374] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:04.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:05.022 [DEBUG] [Thread-155374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:05.023 [DEBUG] [Thread-155374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:05.023 [DEBUG] [Thread-155374] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:07:05.063 [DEBUG] [Thread-155374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:05.063 [DEBUG] [Thread-155374] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:05.066 [DEBUG] [Thread-155374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:05.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:05.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:07:05.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:07:05.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:07:05.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:05.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:07:05.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:05.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:07:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.421251 -999.00  +12.80  21.38     52   +3.30 1 1 1 1 1   888    0 10.32 33.23 ----- 19.8 21.4 144.0 35.4 20.8 -24.4 19.5 -25.0 19.5 -24.5 20.8 -25.0
2025-09-29T12:07:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:07:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:07:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.421251
2025-09-29T12:07:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:07:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:07:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:07:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:07:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:07:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:06:34', tmtdew=11.09, humidity=46.8, cloud=0.0, wind=19.94, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:06:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:07:05.092 [DEBUG] [Thread-155374] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:05.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:07:05.187 [DEBUG] [Thread-155377] [transport.py] [_log()] starting thread (client mode): 0x2b9ac550
2025-09-29T12:07:05.187 [DEBUG] [Thread-155377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:05.202 [DEBUG] [Thread-155377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:07:05.202 [INFO] [Thread-155377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:07:05.209 [DEBUG] [Thread-155377] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] Compression: none
2025-09-29T12:07:05.210 [DEBUG] [Thread-155377] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:05.274 [DEBUG] [Thread-155377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:05.274 [DEBUG] [Thread-155377] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:05.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:07:05.275 [DEBUG] [Thread-155377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:07:05.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:05.329 [DEBUG] [Thread-155377] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:05.329 [DEBUG] [Thread-155377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:05.330 [DEBUG] [Thread-155377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:05.330 [DEBUG] [Thread-155377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:07:05.330 [DEBUG] [Thread-155377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:05.348 [INFO] [Thread-155377] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:05.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:07:05.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:06.294 [DEBUG] [Thread-155377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:06.294 [DEBUG] [Thread-155377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:06.342 [DEBUG] [Thread-155377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:06.342 [DEBUG] [Thread-155377] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:06.350 [DEBUG] [Thread-155377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:06.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:06.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:07:06.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:07:06.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:06.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:06.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:06.381 [DEBUG] [Thread-155377] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:11.859 [DEBUG] [Thread-155379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:07:16.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:07:16.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:07:16.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:07:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 7, 5), 11.31, 46.09, 0.0, 24.33, 13.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:07:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:07:05
2025-09-29T12:07:17.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:07:17.216 [DEBUG] [Thread-155380] [transport.py] [_log()] starting thread (client mode): 0x2b9afb50
2025-09-29T12:07:17.216 [DEBUG] [Thread-155380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:17.238 [DEBUG] [Thread-155380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:07:17.239 [INFO] [Thread-155380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:17.241 [DEBUG] [Thread-155380] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] Compression: none
2025-09-29T12:07:17.242 [DEBUG] [Thread-155380] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:17.256 [DEBUG] [Thread-155380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:17.257 [DEBUG] [Thread-155380] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:17.257 [DEBUG] [Thread-155380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:07:17.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:07:17.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:17.259 [DEBUG] [Thread-155380] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:17.260 [DEBUG] [Thread-155380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:17.260 [DEBUG] [Thread-155380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:17.260 [DEBUG] [Thread-155380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:07:17.260 [DEBUG] [Thread-155380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:17.277 [INFO] [Thread-155380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:17.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:17.846 [DEBUG] [Thread-155380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:17.846 [DEBUG] [Thread-155380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:17.846 [DEBUG] [Thread-155380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:07:17.887 [DEBUG] [Thread-155380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:17.888 [DEBUG] [Thread-155380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:17.889 [DEBUG] [Thread-155380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:17.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:17.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:07:17.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:07:17.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:07:17.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:17.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:07:17.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:17.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:17.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:07:17.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.421599 -999.00  +12.80  21.15     52   +3.40 1 1 1 1 1   888    0 9.96 28.62 ----- 18.7 21.1 153.7 30.2 20.7 -24.9 19.5 -24.4 19.5 -24.1 20.8 -25.4
2025-09-29T12:07:17.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:07:17.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:07:17.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.421599
2025-09-29T12:07:17.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:07:17.913 [DEBUG] [Thread-155380] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:17.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:07:17.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:07:17.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:07:17.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:07:17.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:07:05', tmtdew=11.31, humidity=46.09, cloud=0.0, wind=24.33, temperature=13.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:07:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:07:17.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:07:18.006 [DEBUG] [Thread-155383] [transport.py] [_log()] starting thread (client mode): 0x2e38cc10
2025-09-29T12:07:18.006 [DEBUG] [Thread-155383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:18.021 [DEBUG] [Thread-155383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:07:18.021 [INFO] [Thread-155383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] Compression: none
2025-09-29T12:07:18.029 [DEBUG] [Thread-155383] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:18.085 [DEBUG] [Thread-155383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:18.085 [DEBUG] [Thread-155383] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:18.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:07:18.086 [DEBUG] [Thread-155383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:07:18.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:18.141 [DEBUG] [Thread-155383] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:18.142 [DEBUG] [Thread-155383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:18.142 [DEBUG] [Thread-155383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:18.142 [DEBUG] [Thread-155383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:07:18.142 [DEBUG] [Thread-155383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:18.160 [INFO] [Thread-155383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:18.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:07:18.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:19.078 [DEBUG] [Thread-155383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:19.078 [DEBUG] [Thread-155383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:19.126 [DEBUG] [Thread-155383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:19.127 [DEBUG] [Thread-155383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:19.135 [DEBUG] [Thread-155383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:19.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:19.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:07:19.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:07:19.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:19.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:19.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:19.170 [DEBUG] [Thread-155383] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:26.887 [DEBUG] [Thread-155385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:07:29.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:07:29.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:07:29.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:07:29.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 7, 5), 11.31, 46.09, 0.0, 24.33, 13.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:07:29.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:07:05
2025-09-29T12:07:29.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:07:30.014 [DEBUG] [Thread-155386] [transport.py] [_log()] starting thread (client mode): 0x2b969180
2025-09-29T12:07:30.014 [DEBUG] [Thread-155386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:30.033 [DEBUG] [Thread-155386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:07:30.034 [INFO] [Thread-155386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:07:30.035 [DEBUG] [Thread-155386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:30.036 [DEBUG] [Thread-155386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:30.037 [DEBUG] [Thread-155386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:30.037 [DEBUG] [Thread-155386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:30.037 [DEBUG] [Thread-155386] [transport.py] [_log()] Compression: none
2025-09-29T12:07:30.037 [DEBUG] [Thread-155386] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:30.048 [DEBUG] [Thread-155386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:30.049 [DEBUG] [Thread-155386] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:30.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:07:30.050 [DEBUG] [Thread-155386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:07:30.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:30.051 [DEBUG] [Thread-155386] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:30.052 [DEBUG] [Thread-155386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:30.052 [DEBUG] [Thread-155386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:30.052 [DEBUG] [Thread-155386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:07:30.052 [DEBUG] [Thread-155386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:30.075 [INFO] [Thread-155386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:30.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:30.909 [DEBUG] [Thread-155386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:30.909 [DEBUG] [Thread-155386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:30.909 [DEBUG] [Thread-155386] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:07:30.950 [DEBUG] [Thread-155386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:30.950 [DEBUG] [Thread-155386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:30.953 [DEBUG] [Thread-155386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:30.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:30.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:07:30.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:07:30.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:07:30.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:30.977 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:07:30.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:30.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:07:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.421599 -999.00  +12.80  21.15     52   +3.40 1 1 1 1 1   888    0 9.96 28.62 ----- 18.7 21.1 153.7 30.2 20.7 -24.9 19.5 -24.4 19.5 -24.1 20.8 -25.4
2025-09-29T12:07:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:07:30.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:07:30.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.421599
2025-09-29T12:07:30.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:07:30.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:07:30.980 [DEBUG] [Thread-155386] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:30.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:07:30.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:07:30.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:07:30.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:07:05', tmtdew=11.31, humidity=46.09, cloud=0.0, wind=24.33, temperature=13.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:07:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:07:31.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:07:31.080 [DEBUG] [Thread-155389] [transport.py] [_log()] starting thread (client mode): 0x28704d00
2025-09-29T12:07:31.080 [DEBUG] [Thread-155389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:31.097 [DEBUG] [Thread-155389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:07:31.097 [INFO] [Thread-155389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:07:31.108 [DEBUG] [Thread-155389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:31.108 [DEBUG] [Thread-155389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:07:31.108 [DEBUG] [Thread-155389] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:31.108 [DEBUG] [Thread-155389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:31.108 [DEBUG] [Thread-155389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:31.108 [DEBUG] [Thread-155389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:31.108 [DEBUG] [Thread-155389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:31.108 [DEBUG] [Thread-155389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] Compression: none
2025-09-29T12:07:31.109 [DEBUG] [Thread-155389] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:31.161 [DEBUG] [Thread-155389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:31.162 [DEBUG] [Thread-155389] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:31.162 [DEBUG] [Thread-155389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:07:31.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:07:31.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:31.218 [DEBUG] [Thread-155389] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:31.218 [DEBUG] [Thread-155389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:31.218 [DEBUG] [Thread-155389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:31.218 [DEBUG] [Thread-155389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:07:31.218 [DEBUG] [Thread-155389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:31.237 [INFO] [Thread-155389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:31.237 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:07:31.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:32.232 [DEBUG] [Thread-155389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:32.233 [DEBUG] [Thread-155389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:32.280 [DEBUG] [Thread-155389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:32.280 [DEBUG] [Thread-155389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:32.289 [DEBUG] [Thread-155389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:32.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:32.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:07:32.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:07:32.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:32.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:32.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:32.324 [DEBUG] [Thread-155389] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:38.033 [DEBUG] [Thread-155391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:07:41.929 [DEBUG] [Thread-155392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:07:42.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:07:42.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:07:42.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:07:42.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 7, 37), 11.23, 46.47, 0.0, 23.71, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:07:42.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:07:37
2025-09-29T12:07:43.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:07:43.180 [DEBUG] [Thread-155393] [transport.py] [_log()] starting thread (client mode): 0x28704970
2025-09-29T12:07:43.180 [DEBUG] [Thread-155393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:43.201 [DEBUG] [Thread-155393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:07:43.201 [INFO] [Thread-155393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:07:43.204 [DEBUG] [Thread-155393] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:43.204 [DEBUG] [Thread-155393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:07:43.204 [DEBUG] [Thread-155393] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:43.204 [DEBUG] [Thread-155393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:43.204 [DEBUG] [Thread-155393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:43.204 [DEBUG] [Thread-155393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] Compression: none
2025-09-29T12:07:43.205 [DEBUG] [Thread-155393] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:43.222 [DEBUG] [Thread-155393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:43.223 [DEBUG] [Thread-155393] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:43.223 [DEBUG] [Thread-155393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:07:43.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:07:43.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:43.225 [DEBUG] [Thread-155393] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:43.225 [DEBUG] [Thread-155393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:43.225 [DEBUG] [Thread-155393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:43.226 [DEBUG] [Thread-155393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:07:43.226 [DEBUG] [Thread-155393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:43.248 [INFO] [Thread-155393] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:43.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:44.082 [DEBUG] [Thread-155393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:44.082 [DEBUG] [Thread-155393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:44.083 [DEBUG] [Thread-155393] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:07:44.123 [DEBUG] [Thread-155393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:44.124 [DEBUG] [Thread-155393] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:44.126 [DEBUG] [Thread-155393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:44.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:44.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:07:44.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:07:44.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:07:44.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:44.148 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:07:44.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:44.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:07:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.421599 -999.00  +12.80  21.15     52   +3.40 1 1 1 1 1   888    0 9.96 28.62 ----- 18.7 21.1 153.7 30.2 20.7 -24.9 19.5 -24.4 19.5 -24.1 20.8 -25.4
2025-09-29T12:07:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:07:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:07:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.421599
2025-09-29T12:07:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:07:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:07:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:07:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:07:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:07:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:07:37', tmtdew=11.23, humidity=46.47, cloud=0.0, wind=23.71, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:07:06.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:07:44.150 [DEBUG] [Thread-155393] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:44.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:07:44.246 [DEBUG] [Thread-155396] [transport.py] [_log()] starting thread (client mode): 0x287079d0
2025-09-29T12:07:44.247 [DEBUG] [Thread-155396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:44.261 [DEBUG] [Thread-155396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:07:44.261 [INFO] [Thread-155396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:44.269 [DEBUG] [Thread-155396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:44.270 [DEBUG] [Thread-155396] [transport.py] [_log()] Compression: none
2025-09-29T12:07:44.270 [DEBUG] [Thread-155396] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:44.323 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:07:44.324 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:07:44.326 [DEBUG] [Thread-155396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:44.327 [DEBUG] [Thread-155396] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:44.327 [DEBUG] [Thread-155396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:07:44.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:07:44.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:44.382 [DEBUG] [Thread-155396] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:44.382 [DEBUG] [Thread-155396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:44.383 [DEBUG] [Thread-155396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:44.383 [DEBUG] [Thread-155396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:07:44.383 [DEBUG] [Thread-155396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:44.401 [INFO] [Thread-155396] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:44.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:07:44.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:45.351 [DEBUG] [Thread-155396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:45.352 [DEBUG] [Thread-155396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:45.399 [DEBUG] [Thread-155396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:45.399 [DEBUG] [Thread-155396] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:45.408 [DEBUG] [Thread-155396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:45.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:45.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:07:45.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:07:45.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:45.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:45.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:45.443 [DEBUG] [Thread-155396] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:55.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:07:55.446 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:07:55.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:07:56.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 7, 37), 11.23, 46.47, 0.0, 23.71, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:07:56.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:07:37
2025-09-29T12:07:56.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:07:56.290 [DEBUG] [Thread-155398] [transport.py] [_log()] starting thread (client mode): 0x2b9ae2c0
2025-09-29T12:07:56.290 [DEBUG] [Thread-155398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:56.310 [DEBUG] [Thread-155398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:07:56.311 [INFO] [Thread-155398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:07:56.314 [DEBUG] [Thread-155398] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:56.314 [DEBUG] [Thread-155398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:07:56.314 [DEBUG] [Thread-155398] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] Compression: none
2025-09-29T12:07:56.315 [DEBUG] [Thread-155398] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:56.332 [DEBUG] [Thread-155398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:56.332 [DEBUG] [Thread-155398] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:56.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:07:56.333 [DEBUG] [Thread-155398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:07:56.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:56.335 [DEBUG] [Thread-155398] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:56.335 [DEBUG] [Thread-155398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:56.335 [DEBUG] [Thread-155398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:56.335 [DEBUG] [Thread-155398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:07:56.335 [DEBUG] [Thread-155398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:56.353 [INFO] [Thread-155398] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:56.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:56.960 [DEBUG] [Thread-155400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:07:56.996 [DEBUG] [Thread-155398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:56.996 [DEBUG] [Thread-155398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:56.997 [DEBUG] [Thread-155398] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:07:57.037 [DEBUG] [Thread-155398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:57.037 [DEBUG] [Thread-155398] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:57.039 [DEBUG] [Thread-155398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:57.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:57.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:07:57.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:07:57.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:07:57.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:57.061 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:07:57.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:57.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:57.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:07:57.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.421946 -999.00  +12.70  24.77     53   +3.50 1 1 1 1 1   888    0 9.96 32.14 ----- 19.6 24.8 135.0 30.7 20.8 -24.8 19.4 -23.2 19.4 -25.0 20.8 -24.7
2025-09-29T12:07:57.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:07:57.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:07:57.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.421946
2025-09-29T12:07:57.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:07:57.064 [DEBUG] [Thread-155398] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:07:57.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:07:57.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:07:57.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:07:57.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:07:57.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:07:37', tmtdew=11.23, humidity=46.47, cloud=0.0, wind=23.71, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:07:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:07:57.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:07:57.163 [DEBUG] [Thread-155402] [transport.py] [_log()] starting thread (client mode): 0x2e38dde0
2025-09-29T12:07:57.163 [DEBUG] [Thread-155402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:07:57.178 [DEBUG] [Thread-155402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:07:57.178 [INFO] [Thread-155402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] client lang: <none>
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] server lang: <none>
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] kex follows: False
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] Compression: none
2025-09-29T12:07:57.186 [DEBUG] [Thread-155402] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:07:57.241 [DEBUG] [Thread-155402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:07:57.241 [DEBUG] [Thread-155402] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:07:57.241 [DEBUG] [Thread-155402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:07:57.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:07:57.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:07:57.298 [DEBUG] [Thread-155402] [transport.py] [_log()] userauth is OK
2025-09-29T12:07:57.298 [DEBUG] [Thread-155402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:07:57.298 [DEBUG] [Thread-155402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:07:57.298 [DEBUG] [Thread-155402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:07:57.298 [DEBUG] [Thread-155402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:07:57.312 [INFO] [Thread-155402] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:07:57.312 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:07:57.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:07:58.239 [DEBUG] [Thread-155402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:07:58.239 [DEBUG] [Thread-155402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:07:58.287 [DEBUG] [Thread-155402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:07:58.287 [DEBUG] [Thread-155402] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:07:58.296 [DEBUG] [Thread-155402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:07:58.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:07:58.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:07:58.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:07:58.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:07:58.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:07:58.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:07:58.330 [DEBUG] [Thread-155402] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:08.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:08:08.333 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:08:08.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:08:08.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 7, 37), 11.23, 46.47, 0.0, 23.71, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:08:08.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:07:37
2025-09-29T12:08:09.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:08:09.182 [DEBUG] [Thread-155404] [transport.py] [_log()] starting thread (client mode): 0x2b96b4f0
2025-09-29T12:08:09.182 [DEBUG] [Thread-155404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:08:09.202 [DEBUG] [Thread-155404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:08:09.202 [INFO] [Thread-155404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:08:09.205 [DEBUG] [Thread-155404] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:08:09.205 [DEBUG] [Thread-155404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:08:09.205 [DEBUG] [Thread-155404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:08:09.205 [DEBUG] [Thread-155404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] client lang: <none>
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] server lang: <none>
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] kex follows: False
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] Compression: none
2025-09-29T12:08:09.206 [DEBUG] [Thread-155404] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:08:09.223 [DEBUG] [Thread-155404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:08:09.223 [DEBUG] [Thread-155404] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:08:09.232 [DEBUG] [Thread-155404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:08:09.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:08:09.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:08:09.234 [DEBUG] [Thread-155404] [transport.py] [_log()] userauth is OK
2025-09-29T12:08:09.235 [DEBUG] [Thread-155404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:08:09.235 [DEBUG] [Thread-155404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:08:09.235 [DEBUG] [Thread-155404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:08:09.235 [DEBUG] [Thread-155404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:08:09.259 [INFO] [Thread-155404] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:08:09.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:08:10.082 [DEBUG] [Thread-155404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:08:10.083 [DEBUG] [Thread-155404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:08:10.083 [DEBUG] [Thread-155404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:08:10.124 [DEBUG] [Thread-155404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:08:10.124 [DEBUG] [Thread-155404] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:08:10.126 [DEBUG] [Thread-155404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:08:10.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:08:10.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:08:10.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:08:10.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:08:10.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:08:10.141 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:08:10.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.421946 -999.00  +12.70  24.77     53   +3.50 1 1 1 1 1   888    0 9.96 32.14 ----- 19.6 24.8 135.0 30.7 20.8 -24.8 19.4 -23.2 19.4 -25.0 20.8 -24.7
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.421946
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:08:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:07:37', tmtdew=11.23, humidity=46.47, cloud=0.0, wind=23.71, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:07:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:08:10.142 [DEBUG] [Thread-155404] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:10.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:08:10.227 [DEBUG] [Thread-155407] [transport.py] [_log()] starting thread (client mode): 0x2b9aeb60
2025-09-29T12:08:10.227 [DEBUG] [Thread-155407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:08:10.242 [DEBUG] [Thread-155407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:08:10.242 [INFO] [Thread-155407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] client lang: <none>
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] server lang: <none>
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] kex follows: False
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] Compression: none
2025-09-29T12:08:10.250 [DEBUG] [Thread-155407] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:08:10.305 [DEBUG] [Thread-155407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:08:10.305 [DEBUG] [Thread-155407] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:08:10.305 [DEBUG] [Thread-155407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:08:10.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:08:10.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:08:10.362 [DEBUG] [Thread-155407] [transport.py] [_log()] userauth is OK
2025-09-29T12:08:10.362 [DEBUG] [Thread-155407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:08:10.362 [DEBUG] [Thread-155407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:08:10.362 [DEBUG] [Thread-155407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:08:10.362 [DEBUG] [Thread-155407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:08:10.376 [INFO] [Thread-155407] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:08:10.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:08:10.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:08:11.348 [DEBUG] [Thread-155407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:08:11.348 [DEBUG] [Thread-155407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:08:11.396 [DEBUG] [Thread-155407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:08:11.396 [DEBUG] [Thread-155407] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:08:11.404 [DEBUG] [Thread-155407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:08:11.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:08:11.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:08:11.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:08:11.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:08:11.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:08:11.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:08:11.436 [DEBUG] [Thread-155407] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:12.004 [DEBUG] [Thread-155409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:08:21.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:08:21.435 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:08:21.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:08:22.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 8, 9), 11.31, 46.26, 0.0, 24.76, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:08:22.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:08:09
2025-09-29T12:08:22.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:08:22.271 [DEBUG] [Thread-155410] [transport.py] [_log()] starting thread (client mode): 0x2e38dde0
2025-09-29T12:08:22.271 [DEBUG] [Thread-155410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:08:22.292 [DEBUG] [Thread-155410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:08:22.292 [INFO] [Thread-155410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] client lang: <none>
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] server lang: <none>
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] kex follows: False
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:08:22.295 [DEBUG] [Thread-155410] [transport.py] [_log()] Compression: none
2025-09-29T12:08:22.296 [DEBUG] [Thread-155410] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:08:22.312 [DEBUG] [Thread-155410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:08:22.313 [DEBUG] [Thread-155410] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:08:22.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:08:22.314 [DEBUG] [Thread-155410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:08:22.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:08:22.316 [DEBUG] [Thread-155410] [transport.py] [_log()] userauth is OK
2025-09-29T12:08:22.316 [DEBUG] [Thread-155410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:08:22.316 [DEBUG] [Thread-155410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:08:22.316 [DEBUG] [Thread-155410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:08:22.316 [DEBUG] [Thread-155410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:08:22.340 [INFO] [Thread-155410] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:08:22.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:08:22.937 [DEBUG] [Thread-155410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:08:22.937 [DEBUG] [Thread-155410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:08:22.938 [DEBUG] [Thread-155410] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:08:22.978 [DEBUG] [Thread-155410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:08:22.978 [DEBUG] [Thread-155410] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:08:22.981 [DEBUG] [Thread-155410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:08:22.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:08:22.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:08:22.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:08:22.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:08:23.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:08:23.005 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:08:23.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:08:23.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:08:23.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:08:23.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.422293 -999.00  +12.90  14.08     53   +3.60 1 1 1 1 1   888    0 10.04 26.50 ----- 15.3 14.1 123.8 24.7 20.9 -24.4 19.5 -23.3 19.4 -24.3 21.0 -24.9
2025-09-29T12:08:23.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:08:23.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:08:23.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.422293
2025-09-29T12:08:23.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:08:23.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:08:23.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:08:23.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:08:23.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:08:23.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:08:09', tmtdew=11.31, humidity=46.26, cloud=0.0, wind=24.76, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:08:06.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:08:23.008 [DEBUG] [Thread-155410] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:23.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:08:23.102 [DEBUG] [Thread-155413] [transport.py] [_log()] starting thread (client mode): 0x28706a40
2025-09-29T12:08:23.102 [DEBUG] [Thread-155413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:08:23.117 [DEBUG] [Thread-155413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:08:23.117 [INFO] [Thread-155413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:08:23.125 [DEBUG] [Thread-155413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:08:23.125 [DEBUG] [Thread-155413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:08:23.125 [DEBUG] [Thread-155413] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:08:23.125 [DEBUG] [Thread-155413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:23.125 [DEBUG] [Thread-155413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:23.125 [DEBUG] [Thread-155413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:23.125 [DEBUG] [Thread-155413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] client lang: <none>
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] server lang: <none>
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] kex follows: False
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:08:23.126 [DEBUG] [Thread-155413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:08:23.127 [DEBUG] [Thread-155413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:08:23.127 [DEBUG] [Thread-155413] [transport.py] [_log()] Compression: none
2025-09-29T12:08:23.127 [DEBUG] [Thread-155413] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:08:23.182 [DEBUG] [Thread-155413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:08:23.183 [DEBUG] [Thread-155413] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:08:23.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:08:23.183 [DEBUG] [Thread-155413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:08:23.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:08:23.239 [DEBUG] [Thread-155413] [transport.py] [_log()] userauth is OK
2025-09-29T12:08:23.239 [DEBUG] [Thread-155413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:08:23.239 [DEBUG] [Thread-155413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:08:23.240 [DEBUG] [Thread-155413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:08:23.240 [DEBUG] [Thread-155413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:08:23.259 [INFO] [Thread-155413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:08:23.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:08:23.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:08:24.199 [DEBUG] [Thread-155413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:08:24.199 [DEBUG] [Thread-155413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:08:24.247 [DEBUG] [Thread-155413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:08:24.247 [DEBUG] [Thread-155413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:08:24.265 [DEBUG] [Thread-155413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:08:24.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:08:24.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:08:24.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:08:24.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:08:24.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:08:24.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:08:24.299 [DEBUG] [Thread-155413] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:27.034 [DEBUG] [Thread-155415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:08:34.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:08:34.302 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:08:34.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:08:34.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 8, 9), 11.31, 46.26, 0.0, 24.76, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:08:34.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:08:09
2025-09-29T12:08:35.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:08:35.151 [DEBUG] [Thread-155416] [transport.py] [_log()] starting thread (client mode): 0x2b9697b0
2025-09-29T12:08:35.151 [DEBUG] [Thread-155416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:08:35.172 [DEBUG] [Thread-155416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:08:35.172 [INFO] [Thread-155416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] client lang: <none>
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] server lang: <none>
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] kex follows: False
2025-09-29T12:08:35.173 [DEBUG] [Thread-155416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:08:35.174 [DEBUG] [Thread-155416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:08:35.174 [DEBUG] [Thread-155416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:08:35.174 [DEBUG] [Thread-155416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:08:35.174 [DEBUG] [Thread-155416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:08:35.174 [DEBUG] [Thread-155416] [transport.py] [_log()] Compression: none
2025-09-29T12:08:35.174 [DEBUG] [Thread-155416] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:08:35.186 [DEBUG] [Thread-155416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:08:35.186 [DEBUG] [Thread-155416] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:08:35.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:08:35.187 [DEBUG] [Thread-155416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:08:35.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:08:35.189 [DEBUG] [Thread-155416] [transport.py] [_log()] userauth is OK
2025-09-29T12:08:35.189 [DEBUG] [Thread-155416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:08:35.190 [DEBUG] [Thread-155416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:08:35.190 [DEBUG] [Thread-155416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:08:35.190 [DEBUG] [Thread-155416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:08:35.227 [INFO] [Thread-155416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:08:35.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:08:35.882 [DEBUG] [Thread-155416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:08:35.882 [DEBUG] [Thread-155416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:08:35.882 [DEBUG] [Thread-155416] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:08:35.923 [DEBUG] [Thread-155416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:08:35.923 [DEBUG] [Thread-155416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:08:35.926 [DEBUG] [Thread-155416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:08:35.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:08:35.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:08:35.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:08:35.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:08:35.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:08:35.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:08:35.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:08:35.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:08:35.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:08:35.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.422293 -999.00  +12.90  14.08     53   +3.60 1 1 1 1 1   888    0 10.04 26.50 ----- 15.3 14.1 123.8 24.7 20.9 -24.4 19.5 -23.3 19.4 -24.3 21.0 -24.9
2025-09-29T12:08:35.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:08:35.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:08:35.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.422293
2025-09-29T12:08:35.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:08:35.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:08:35.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:08:35.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:08:35.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:08:35.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:08:09', tmtdew=11.31, humidity=46.26, cloud=0.0, wind=24.76, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:08:06.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:08:35.949 [DEBUG] [Thread-155416] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:36.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:08:36.051 [DEBUG] [Thread-155419] [transport.py] [_log()] starting thread (client mode): 0x2b9aea10
2025-09-29T12:08:36.052 [DEBUG] [Thread-155419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:08:36.071 [DEBUG] [Thread-155419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:08:36.071 [INFO] [Thread-155419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:08:36.087 [DEBUG] [Thread-155419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:08:36.087 [DEBUG] [Thread-155419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:08:36.087 [DEBUG] [Thread-155419] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:08:36.087 [DEBUG] [Thread-155419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] client lang: <none>
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] server lang: <none>
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] kex follows: False
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:08:36.088 [DEBUG] [Thread-155419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:08:36.089 [DEBUG] [Thread-155419] [transport.py] [_log()] Compression: none
2025-09-29T12:08:36.089 [DEBUG] [Thread-155419] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:08:36.146 [DEBUG] [Thread-155419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:08:36.147 [DEBUG] [Thread-155419] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:08:36.147 [DEBUG] [Thread-155419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:08:36.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:08:36.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:08:36.203 [DEBUG] [Thread-155419] [transport.py] [_log()] userauth is OK
2025-09-29T12:08:36.203 [DEBUG] [Thread-155419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:08:36.204 [DEBUG] [Thread-155419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:08:36.204 [DEBUG] [Thread-155419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:08:36.204 [DEBUG] [Thread-155419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:08:36.222 [INFO] [Thread-155419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:08:36.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:08:36.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:08:37.166 [DEBUG] [Thread-155419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:08:37.166 [DEBUG] [Thread-155419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:08:37.214 [DEBUG] [Thread-155419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:08:37.214 [DEBUG] [Thread-155419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:08:37.223 [DEBUG] [Thread-155419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:08:37.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:08:37.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:08:37.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:08:37.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:08:37.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:08:37.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:08:37.258 [DEBUG] [Thread-155419] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:38.086 [DEBUG] [Thread-155421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:08:42.086 [DEBUG] [Thread-155422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:08:44.464 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:08:44.464 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:08:47.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:08:47.256 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:08:47.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:08:47.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 8, 41), 11.27, 46.48, 0.0, 25.71, 13.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:08:47.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:08:41
2025-09-29T12:08:47.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:08:48.106 [DEBUG] [Thread-155423] [transport.py] [_log()] starting thread (client mode): 0x2b9c09a0
2025-09-29T12:08:48.106 [DEBUG] [Thread-155423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:08:48.128 [DEBUG] [Thread-155423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:08:48.128 [INFO] [Thread-155423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:08:48.129 [DEBUG] [Thread-155423] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:08:48.129 [DEBUG] [Thread-155423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] client lang: <none>
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] server lang: <none>
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] kex follows: False
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:08:48.130 [DEBUG] [Thread-155423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:08:48.131 [DEBUG] [Thread-155423] [transport.py] [_log()] Compression: none
2025-09-29T12:08:48.131 [DEBUG] [Thread-155423] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:08:48.153 [DEBUG] [Thread-155423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:08:48.153 [DEBUG] [Thread-155423] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:08:48.154 [DEBUG] [Thread-155423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:08:48.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:08:48.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:08:48.155 [DEBUG] [Thread-155423] [transport.py] [_log()] userauth is OK
2025-09-29T12:08:48.156 [DEBUG] [Thread-155423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:08:48.156 [DEBUG] [Thread-155423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:08:48.156 [DEBUG] [Thread-155423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:08:48.156 [DEBUG] [Thread-155423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:08:48.169 [INFO] [Thread-155423] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:08:48.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:08:49.010 [DEBUG] [Thread-155423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:08:49.010 [DEBUG] [Thread-155423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:08:49.010 [DEBUG] [Thread-155423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:08:49.052 [DEBUG] [Thread-155423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:08:49.052 [DEBUG] [Thread-155423] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:08:49.055 [DEBUG] [Thread-155423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:08:49.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:08:49.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:08:49.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:08:49.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:08:49.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:08:49.074 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:08:49.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:08:49.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:08:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:08:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.422293 -999.00  +12.90  14.08     53   +3.60 1 1 1 1 1   888    0 10.04 26.50 ----- 15.3 14.1 123.8 24.7 20.9 -24.4 19.5 -23.3 19.4 -24.3 21.0 -24.9
2025-09-29T12:08:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:08:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:08:49.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.422293
2025-09-29T12:08:49.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:08:49.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:08:49.076 [DEBUG] [Thread-155423] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:49.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:08:49.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:08:49.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:08:49.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:08:41', tmtdew=11.27, humidity=46.48, cloud=0.0, wind=25.71, temperature=13.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:08:06.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:08:49.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:08:49.171 [DEBUG] [Thread-155426] [transport.py] [_log()] starting thread (client mode): 0x2b9c1b70
2025-09-29T12:08:49.172 [DEBUG] [Thread-155426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:08:49.186 [DEBUG] [Thread-155426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:08:49.187 [INFO] [Thread-155426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:08:49.194 [DEBUG] [Thread-155426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:08:49.194 [DEBUG] [Thread-155426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] client lang: <none>
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] server lang: <none>
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] kex follows: False
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] Compression: none
2025-09-29T12:08:49.195 [DEBUG] [Thread-155426] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:08:49.254 [DEBUG] [Thread-155426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:08:49.254 [DEBUG] [Thread-155426] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:08:49.255 [DEBUG] [Thread-155426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:08:49.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:08:49.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:08:49.315 [DEBUG] [Thread-155426] [transport.py] [_log()] userauth is OK
2025-09-29T12:08:49.315 [DEBUG] [Thread-155426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:08:49.316 [DEBUG] [Thread-155426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:08:49.316 [DEBUG] [Thread-155426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:08:49.316 [DEBUG] [Thread-155426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:08:49.339 [INFO] [Thread-155426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:08:49.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:08:49.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:08:50.291 [DEBUG] [Thread-155426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:08:50.291 [DEBUG] [Thread-155426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:08:50.339 [DEBUG] [Thread-155426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:08:50.339 [DEBUG] [Thread-155426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:08:50.347 [DEBUG] [Thread-155426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:08:50.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:08:50.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:08:50.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:08:50.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:08:50.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:08:50.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:08:50.378 [DEBUG] [Thread-155426] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:08:57.108 [DEBUG] [Thread-155428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:09:00.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:09:00.375 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:09:00.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:09:00.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 8, 41), 11.27, 46.48, 0.0, 25.71, 13.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:09:00.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:08:41
2025-09-29T12:09:01.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:09:01.203 [DEBUG] [Thread-155429] [transport.py] [_log()] starting thread (client mode): 0x2b9aebc0
2025-09-29T12:09:01.204 [DEBUG] [Thread-155429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:09:01.224 [DEBUG] [Thread-155429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:09:01.224 [INFO] [Thread-155429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:09:01.227 [DEBUG] [Thread-155429] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:09:01.227 [DEBUG] [Thread-155429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:09:01.227 [DEBUG] [Thread-155429] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:09:01.227 [DEBUG] [Thread-155429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:01.227 [DEBUG] [Thread-155429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:01.227 [DEBUG] [Thread-155429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:01.227 [DEBUG] [Thread-155429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] client lang: <none>
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] server lang: <none>
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] kex follows: False
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] Compression: none
2025-09-29T12:09:01.228 [DEBUG] [Thread-155429] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:09:01.245 [DEBUG] [Thread-155429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:09:01.246 [DEBUG] [Thread-155429] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:09:01.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:09:01.247 [DEBUG] [Thread-155429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:09:01.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:09:01.249 [DEBUG] [Thread-155429] [transport.py] [_log()] userauth is OK
2025-09-29T12:09:01.250 [DEBUG] [Thread-155429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:09:01.250 [DEBUG] [Thread-155429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:09:01.250 [DEBUG] [Thread-155429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:09:01.250 [DEBUG] [Thread-155429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:09:01.273 [INFO] [Thread-155429] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:09:01.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:09:01.946 [DEBUG] [Thread-155429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:09:01.946 [DEBUG] [Thread-155429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:09:01.946 [DEBUG] [Thread-155429] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:09:01.986 [DEBUG] [Thread-155429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:09:01.986 [DEBUG] [Thread-155429] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:09:01.988 [DEBUG] [Thread-155429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:09:02.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:09:02.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:09:02.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:09:02.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:09:02.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:09:02.006 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:09:02.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:09:02.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:09:02.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:09:02.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.422640 -999.00  +13.20  16.88     52   +3.70 1 1 1 1 1   888    0 9.98 27.88 ----- 10.2 16.9 143.6 20.2 20.9 -23.8 19.6 -23.9 19.6 -23.3 21.1 -23.7
2025-09-29T12:09:02.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:09:02.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:09:02.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.422640
2025-09-29T12:09:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:09:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:09:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:09:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:09:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:09:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:08:41', tmtdew=11.27, humidity=46.48, cloud=0.0, wind=25.71, temperature=13.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:08:36.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:09:02.007 [DEBUG] [Thread-155429] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:09:02.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:09:02.093 [DEBUG] [Thread-155432] [transport.py] [_log()] starting thread (client mode): 0x28705c00
2025-09-29T12:09:02.094 [DEBUG] [Thread-155432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:09:02.108 [DEBUG] [Thread-155432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:09:02.108 [INFO] [Thread-155432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] client lang: <none>
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] server lang: <none>
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] kex follows: False
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:09:02.116 [DEBUG] [Thread-155432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:09:02.117 [DEBUG] [Thread-155432] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:09:02.117 [DEBUG] [Thread-155432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:09:02.117 [DEBUG] [Thread-155432] [transport.py] [_log()] Compression: none
2025-09-29T12:09:02.117 [DEBUG] [Thread-155432] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:09:02.179 [DEBUG] [Thread-155432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:09:02.180 [DEBUG] [Thread-155432] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:09:02.180 [DEBUG] [Thread-155432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:09:02.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:09:02.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:09:02.235 [DEBUG] [Thread-155432] [transport.py] [_log()] userauth is OK
2025-09-29T12:09:02.236 [DEBUG] [Thread-155432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:09:02.236 [DEBUG] [Thread-155432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:09:02.236 [DEBUG] [Thread-155432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:09:02.236 [DEBUG] [Thread-155432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:09:02.254 [INFO] [Thread-155432] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:09:02.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:09:02.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:09:03.209 [DEBUG] [Thread-155432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:09:03.210 [DEBUG] [Thread-155432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:09:03.258 [DEBUG] [Thread-155432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:09:03.258 [DEBUG] [Thread-155432] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:09:03.266 [DEBUG] [Thread-155432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:09:03.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:09:03.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:09:03.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:09:03.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:09:03.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:09:03.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:09:03.298 [DEBUG] [Thread-155432] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:09:12.146 [DEBUG] [Thread-155434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:09:13.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:09:13.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:09:13.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:09:13.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 8, 41), 11.27, 46.48, 0.0, 25.71, 13.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:09:13.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:08:41
2025-09-29T12:09:14.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:09:14.172 [DEBUG] [Thread-155435] [transport.py] [_log()] starting thread (client mode): 0x2b9566b0
2025-09-29T12:09:14.172 [DEBUG] [Thread-155435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:09:14.192 [DEBUG] [Thread-155435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:09:14.192 [INFO] [Thread-155435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] client lang: <none>
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] server lang: <none>
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] kex follows: False
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] Compression: none
2025-09-29T12:09:14.197 [DEBUG] [Thread-155435] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:09:14.211 [DEBUG] [Thread-155435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:09:14.211 [DEBUG] [Thread-155435] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:09:14.211 [DEBUG] [Thread-155435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:09:14.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:09:14.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:09:14.212 [DEBUG] [Thread-155435] [transport.py] [_log()] userauth is OK
2025-09-29T12:09:14.212 [DEBUG] [Thread-155435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:09:14.212 [DEBUG] [Thread-155435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:09:14.212 [DEBUG] [Thread-155435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:09:14.212 [DEBUG] [Thread-155435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:09:14.222 [INFO] [Thread-155435] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:09:14.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:09:14.859 [DEBUG] [Thread-155435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:09:14.859 [DEBUG] [Thread-155435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:09:14.859 [DEBUG] [Thread-155435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:09:14.900 [DEBUG] [Thread-155435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:09:14.900 [DEBUG] [Thread-155435] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:09:14.903 [DEBUG] [Thread-155435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:09:14.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:09:14.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:09:14.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:09:14.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:09:14.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:09:14.921 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:09:14.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.422640 -999.00  +13.20  16.88     52   +3.70 1 1 1 1 1   888    0 9.98 27.88 ----- 10.2 16.9 143.6 20.2 20.9 -23.8 19.6 -23.9 19.6 -23.3 21.1 -23.7
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.422640
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:09:14.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:08:41', tmtdew=11.27, humidity=46.48, cloud=0.0, wind=25.71, temperature=13.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:08:36.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:09:14.923 [DEBUG] [Thread-155435] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:09:15.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:09:15.016 [DEBUG] [Thread-155438] [transport.py] [_log()] starting thread (client mode): 0x2b9568f0
2025-09-29T12:09:15.016 [DEBUG] [Thread-155438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:09:15.030 [DEBUG] [Thread-155438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:09:15.030 [INFO] [Thread-155438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:09:15.037 [DEBUG] [Thread-155438] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] client lang: <none>
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] server lang: <none>
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] kex follows: False
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] Compression: none
2025-09-29T12:09:15.038 [DEBUG] [Thread-155438] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:09:15.094 [DEBUG] [Thread-155438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:09:15.094 [DEBUG] [Thread-155438] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:09:15.094 [DEBUG] [Thread-155438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:09:15.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:09:15.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:09:15.152 [DEBUG] [Thread-155438] [transport.py] [_log()] userauth is OK
2025-09-29T12:09:15.152 [DEBUG] [Thread-155438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:09:15.152 [DEBUG] [Thread-155438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:09:15.152 [DEBUG] [Thread-155438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:09:15.152 [DEBUG] [Thread-155438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:09:15.166 [INFO] [Thread-155438] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:09:15.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:09:15.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:09:16.071 [DEBUG] [Thread-155438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:09:16.071 [DEBUG] [Thread-155438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:09:16.119 [DEBUG] [Thread-155438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:09:16.119 [DEBUG] [Thread-155438] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:09:16.129 [DEBUG] [Thread-155438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:09:16.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:09:16.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:09:16.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:09:16.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:09:16.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:09:16.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:09:16.163 [DEBUG] [Thread-155438] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:09:26.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:09:26.163 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:09:26.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:09:26.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 9, 13), 11.26, 46.46, 0.0, 24.33, 12.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:09:26.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:09:13
2025-09-29T12:09:26.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:09:26.988 [DEBUG] [Thread-155440] [transport.py] [_log()] starting thread (client mode): 0x2b9ae9b0
2025-09-29T12:09:26.988 [DEBUG] [Thread-155440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:09:27.009 [DEBUG] [Thread-155440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:09:27.009 [INFO] [Thread-155440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:09:27.012 [DEBUG] [Thread-155440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:09:27.012 [DEBUG] [Thread-155440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:09:27.012 [DEBUG] [Thread-155440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:09:27.012 [DEBUG] [Thread-155440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] client lang: <none>
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] server lang: <none>
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] kex follows: False
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] Compression: none
2025-09-29T12:09:27.013 [DEBUG] [Thread-155440] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:09:27.030 [DEBUG] [Thread-155440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:09:27.031 [DEBUG] [Thread-155440] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:09:27.031 [DEBUG] [Thread-155440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:09:27.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:09:27.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:09:27.033 [DEBUG] [Thread-155440] [transport.py] [_log()] userauth is OK
2025-09-29T12:09:27.034 [DEBUG] [Thread-155440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:09:27.034 [DEBUG] [Thread-155440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:09:27.034 [DEBUG] [Thread-155440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:09:27.034 [DEBUG] [Thread-155440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:09:27.072 [INFO] [Thread-155440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:09:27.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:09:27.190 [DEBUG] [Thread-155442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:09:27.714 [DEBUG] [Thread-155440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:09:27.714 [DEBUG] [Thread-155440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:09:27.714 [DEBUG] [Thread-155440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:09:27.755 [DEBUG] [Thread-155440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:09:27.755 [DEBUG] [Thread-155440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:09:27.757 [DEBUG] [Thread-155440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:09:27.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:09:27.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:09:27.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:09:27.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:09:27.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:09:27.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:09:27.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:09:27.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:09:27.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:09:27.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.422640 -999.00  +13.20  16.88     52   +3.70 1 1 1 1 1   888    0 9.98 27.88 ----- 10.2 16.9 143.6 20.2 20.9 -23.8 19.6 -23.9 19.6 -23.3 21.1 -23.7
2025-09-29T12:09:27.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:09:27.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:09:27.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.422640
2025-09-29T12:09:27.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:09:27.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:09:27.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:09:27.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:09:27.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:09:27.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:09:13', tmtdew=11.26, humidity=46.46, cloud=0.0, wind=24.33, temperature=12.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:08:36.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:09:27.779 [DEBUG] [Thread-155440] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:09:27.853 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:09:38.121 [DEBUG] [Thread-155444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:09:42.225 [DEBUG] [Thread-155445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:09:44.606 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:09:44.607 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:09:57.275 [DEBUG] [Thread-155446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:10:12.308 [DEBUG] [Thread-155447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:10:27.343 [DEBUG] [Thread-155448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:10:38.171 [DEBUG] [Thread-155449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:10:42.373 [DEBUG] [Thread-155450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:10:44.748 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:10:44.749 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:10:57.406 [DEBUG] [Thread-155451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:11:12.434 [DEBUG] [Thread-155452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:11:27.456 [DEBUG] [Thread-155453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:11:38.233 [DEBUG] [Thread-155454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:11:39.322 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T12:11:42.485 [DEBUG] [Thread-155455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:11:44.890 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:11:44.891 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:11:49.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:11:49.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:11:49.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:11:49.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 11, 21), 10.4, 48.96, 0.0, 12.51, 11.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:11:49.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:11:21
2025-09-29T12:11:50.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:11:50.212 [DEBUG] [Thread-155456] [transport.py] [_log()] starting thread (client mode): 0x2b9afb50
2025-09-29T12:11:50.213 [DEBUG] [Thread-155456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:11:50.233 [DEBUG] [Thread-155456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:11:50.233 [INFO] [Thread-155456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:11:50.236 [DEBUG] [Thread-155456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:11:50.236 [DEBUG] [Thread-155456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:11:50.236 [DEBUG] [Thread-155456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:11:50.236 [DEBUG] [Thread-155456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:11:50.236 [DEBUG] [Thread-155456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] client lang: <none>
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] server lang: <none>
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] kex follows: False
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] Compression: none
2025-09-29T12:11:50.237 [DEBUG] [Thread-155456] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:11:50.254 [DEBUG] [Thread-155456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:11:50.255 [DEBUG] [Thread-155456] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:11:50.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:11:50.256 [DEBUG] [Thread-155456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:11:50.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:11:50.258 [DEBUG] [Thread-155456] [transport.py] [_log()] userauth is OK
2025-09-29T12:11:50.258 [DEBUG] [Thread-155456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:11:50.258 [DEBUG] [Thread-155456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:11:50.258 [DEBUG] [Thread-155456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:11:50.259 [DEBUG] [Thread-155456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:11:50.274 [INFO] [Thread-155456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:11:50.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:11:50.901 [DEBUG] [Thread-155456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:11:50.901 [DEBUG] [Thread-155456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:11:50.902 [DEBUG] [Thread-155456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:11:50.942 [DEBUG] [Thread-155456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:11:50.942 [DEBUG] [Thread-155456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:11:50.945 [DEBUG] [Thread-155456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:11:50.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:11:50.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:11:50.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:11:50.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:11:50.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:11:50.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:11:50.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:11:50.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:11:50.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:11:50.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.424376 -999.00  +12.40  15.10     53   +3.30 1 1 1 1 1   888    0 9.88 23.86 ----- 19.7 15.1 130.4 19.1 20.9 -23.9 20.0 -23.5 19.9 -24.3 21.1 -24.7
2025-09-29T12:11:50.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:11:50.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:11:50.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.424376
2025-09-29T12:11:50.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:11:50.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:11:50.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:11:50.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:11:50.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:11:50.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:11:21', tmtdew=10.4, humidity=48.96, cloud=0.0, wind=12.51, temperature=11.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:11:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:11:50.973 [DEBUG] [Thread-155456] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:11:51.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:11:51.070 [DEBUG] [Thread-155459] [transport.py] [_log()] starting thread (client mode): 0x2b9c1b70
2025-09-29T12:11:51.071 [DEBUG] [Thread-155459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:11:51.085 [DEBUG] [Thread-155459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:11:51.085 [INFO] [Thread-155459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:11:51.093 [DEBUG] [Thread-155459] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:11:51.093 [DEBUG] [Thread-155459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:11:51.093 [DEBUG] [Thread-155459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:11:51.093 [DEBUG] [Thread-155459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:11:51.093 [DEBUG] [Thread-155459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:11:51.094 [DEBUG] [Thread-155459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:11:51.094 [DEBUG] [Thread-155459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:11:51.094 [DEBUG] [Thread-155459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:11:51.094 [DEBUG] [Thread-155459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:11:51.094 [DEBUG] [Thread-155459] [transport.py] [_log()] client lang: <none>
2025-09-29T12:11:51.094 [DEBUG] [Thread-155459] [transport.py] [_log()] server lang: <none>
2025-09-29T12:11:51.094 [DEBUG] [Thread-155459] [transport.py] [_log()] kex follows: False
2025-09-29T12:11:51.094 [DEBUG] [Thread-155459] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:11:51.095 [DEBUG] [Thread-155459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:11:51.095 [DEBUG] [Thread-155459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:11:51.095 [DEBUG] [Thread-155459] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:11:51.095 [DEBUG] [Thread-155459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:11:51.095 [DEBUG] [Thread-155459] [transport.py] [_log()] Compression: none
2025-09-29T12:11:51.095 [DEBUG] [Thread-155459] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:11:51.150 [DEBUG] [Thread-155459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:11:51.150 [DEBUG] [Thread-155459] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:11:51.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:11:51.151 [DEBUG] [Thread-155459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:11:51.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:11:51.206 [DEBUG] [Thread-155459] [transport.py] [_log()] userauth is OK
2025-09-29T12:11:51.206 [DEBUG] [Thread-155459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:11:51.206 [DEBUG] [Thread-155459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:11:51.206 [DEBUG] [Thread-155459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:11:51.206 [DEBUG] [Thread-155459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:11:51.225 [INFO] [Thread-155459] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:11:51.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:11:51.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:11:52.184 [DEBUG] [Thread-155459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:11:52.185 [DEBUG] [Thread-155459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:11:52.233 [DEBUG] [Thread-155459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:11:52.233 [DEBUG] [Thread-155459] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:11:52.242 [DEBUG] [Thread-155459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:11:52.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:11:52.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:11:52.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:11:52.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:11:52.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:11:52.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:11:52.276 [DEBUG] [Thread-155459] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:11:57.519 [DEBUG] [Thread-155461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:12:02.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:12:02.278 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:12:02.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:12:02.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 11, 53), 10.25, 49.29, 0.0, 10.25, 11.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:12:02.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:11:53
2025-09-29T12:12:03.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:12:03.190 [DEBUG] [Thread-155462] [transport.py] [_log()] starting thread (client mode): 0x2b957280
2025-09-29T12:12:03.191 [DEBUG] [Thread-155462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:03.211 [DEBUG] [Thread-155462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:12:03.211 [INFO] [Thread-155462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:12:03.214 [DEBUG] [Thread-155462] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] Compression: none
2025-09-29T12:12:03.215 [DEBUG] [Thread-155462] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:03.234 [DEBUG] [Thread-155462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:03.234 [DEBUG] [Thread-155462] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:03.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:12:03.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:03.235 [DEBUG] [Thread-155462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:12:03.235 [DEBUG] [Thread-155462] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:03.235 [DEBUG] [Thread-155462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:03.235 [DEBUG] [Thread-155462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:03.235 [DEBUG] [Thread-155462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:12:03.235 [DEBUG] [Thread-155462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:03.251 [INFO] [Thread-155462] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:03.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:03.908 [DEBUG] [Thread-155462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:03.908 [DEBUG] [Thread-155462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:03.908 [DEBUG] [Thread-155462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:12:03.949 [DEBUG] [Thread-155462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:03.949 [DEBUG] [Thread-155462] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:03.951 [DEBUG] [Thread-155462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:03.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:03.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:12:03.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:12:03.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:12:03.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:03.968 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:12:03.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.424724 -999.00  +12.10   2.56     53   +3.10 1 1 1 1 1   888    0 10.11 24.73 ----- 4.4 2.6 263.3 16.4 21.0 -23.9 20.1 -23.5 20.0 -25.1 21.4 -24.5
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.424724
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:12:03.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:11:53', tmtdew=10.25, humidity=49.29, cloud=0.0, wind=10.25, temperature=11.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:11:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:12:03.969 [DEBUG] [Thread-155462] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:04.043 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:12:04.052 [DEBUG] [Thread-155465] [transport.py] [_log()] starting thread (client mode): 0x2b9ae500
2025-09-29T12:12:04.052 [DEBUG] [Thread-155465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:04.067 [DEBUG] [Thread-155465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:12:04.068 [INFO] [Thread-155465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:04.075 [DEBUG] [Thread-155465] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:04.076 [DEBUG] [Thread-155465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:04.076 [DEBUG] [Thread-155465] [transport.py] [_log()] Compression: none
2025-09-29T12:12:04.076 [DEBUG] [Thread-155465] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:04.133 [DEBUG] [Thread-155465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:04.133 [DEBUG] [Thread-155465] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:04.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:12:04.133 [DEBUG] [Thread-155465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:12:04.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:04.189 [DEBUG] [Thread-155465] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:04.189 [DEBUG] [Thread-155465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:04.189 [DEBUG] [Thread-155465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:04.189 [DEBUG] [Thread-155465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:12:04.189 [DEBUG] [Thread-155465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:04.207 [INFO] [Thread-155465] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:04.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:12:04.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:05.140 [DEBUG] [Thread-155465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:05.140 [DEBUG] [Thread-155465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:05.188 [DEBUG] [Thread-155465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:05.188 [DEBUG] [Thread-155465] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:05.196 [DEBUG] [Thread-155465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:05.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:05.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:12:05.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:12:05.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:05.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:05.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:05.227 [DEBUG] [Thread-155465] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:12.573 [DEBUG] [Thread-155467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:12:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:12:15.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:12:15.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:12:15.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 11, 53), 10.25, 49.29, 0.0, 10.25, 11.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:12:15.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:11:53
2025-09-29T12:12:15.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:12:16.092 [DEBUG] [Thread-155468] [transport.py] [_log()] starting thread (client mode): 0x2e348be0
2025-09-29T12:12:16.092 [DEBUG] [Thread-155468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:16.114 [DEBUG] [Thread-155468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:12:16.114 [INFO] [Thread-155468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:12:16.118 [DEBUG] [Thread-155468] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:16.118 [DEBUG] [Thread-155468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:12:16.118 [DEBUG] [Thread-155468] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:16.118 [DEBUG] [Thread-155468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] Compression: none
2025-09-29T12:12:16.119 [DEBUG] [Thread-155468] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:16.137 [DEBUG] [Thread-155468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:16.137 [DEBUG] [Thread-155468] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:16.138 [DEBUG] [Thread-155468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:12:16.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:12:16.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:16.140 [DEBUG] [Thread-155468] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:16.140 [DEBUG] [Thread-155468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:16.140 [DEBUG] [Thread-155468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:16.140 [DEBUG] [Thread-155468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:12:16.140 [DEBUG] [Thread-155468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:16.165 [INFO] [Thread-155468] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:16.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:16.818 [DEBUG] [Thread-155468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:16.819 [DEBUG] [Thread-155468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:16.819 [DEBUG] [Thread-155468] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:12:16.859 [DEBUG] [Thread-155468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:16.860 [DEBUG] [Thread-155468] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:16.863 [DEBUG] [Thread-155468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:16.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:16.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:12:16.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:12:16.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:12:16.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:16.884 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:12:16.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:16.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:16.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:12:16.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.424724 -999.00  +12.10   2.56     53   +3.10 1 1 1 1 1   888    0 10.11 24.73 ----- 4.4 2.6 263.3 16.4 21.0 -23.9 20.1 -23.5 20.0 -25.1 21.4 -24.5
2025-09-29T12:12:16.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:12:16.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:12:16.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.424724
2025-09-29T12:12:16.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:12:16.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:12:16.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:12:16.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:12:16.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:12:16.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:11:53', tmtdew=10.25, humidity=49.29, cloud=0.0, wind=10.25, temperature=11.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:11:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:12:16.887 [DEBUG] [Thread-155468] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:16.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:12:16.983 [DEBUG] [Thread-155471] [transport.py] [_log()] starting thread (client mode): 0x2b91c0a0
2025-09-29T12:12:16.983 [DEBUG] [Thread-155471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:16.998 [DEBUG] [Thread-155471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:12:16.998 [INFO] [Thread-155471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:12:17.006 [DEBUG] [Thread-155471] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:17.007 [DEBUG] [Thread-155471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:17.008 [DEBUG] [Thread-155471] [transport.py] [_log()] Compression: none
2025-09-29T12:12:17.008 [DEBUG] [Thread-155471] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:17.066 [DEBUG] [Thread-155471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:17.066 [DEBUG] [Thread-155471] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:17.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:12:17.067 [DEBUG] [Thread-155471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:12:17.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:17.122 [DEBUG] [Thread-155471] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:17.122 [DEBUG] [Thread-155471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:17.122 [DEBUG] [Thread-155471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:17.122 [DEBUG] [Thread-155471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:12:17.122 [DEBUG] [Thread-155471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:17.141 [INFO] [Thread-155471] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:17.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:12:17.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:18.059 [DEBUG] [Thread-155471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:18.059 [DEBUG] [Thread-155471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:18.111 [DEBUG] [Thread-155471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:18.111 [DEBUG] [Thread-155471] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:18.124 [DEBUG] [Thread-155471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:18.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:18.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:12:18.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:12:18.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:18.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:18.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:18.165 [DEBUG] [Thread-155471] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:27.618 [DEBUG] [Thread-155473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:12:28.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:12:28.168 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:12:28.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:12:28.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 12, 24), 10.12, 49.79, 0.0, 14.13, 12.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:12:28.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:12:24
2025-09-29T12:12:28.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:12:29.029 [DEBUG] [Thread-155474] [transport.py] [_log()] starting thread (client mode): 0x2b96bd30
2025-09-29T12:12:29.030 [DEBUG] [Thread-155474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:29.049 [DEBUG] [Thread-155474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:12:29.050 [INFO] [Thread-155474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] Compression: none
2025-09-29T12:12:29.053 [DEBUG] [Thread-155474] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:29.069 [DEBUG] [Thread-155474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:29.069 [DEBUG] [Thread-155474] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:29.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:12:29.071 [DEBUG] [Thread-155474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:12:29.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:29.072 [DEBUG] [Thread-155474] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:29.073 [DEBUG] [Thread-155474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:29.073 [DEBUG] [Thread-155474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:29.073 [DEBUG] [Thread-155474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:12:29.073 [DEBUG] [Thread-155474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:29.097 [INFO] [Thread-155474] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:29.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:29.711 [DEBUG] [Thread-155474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:29.712 [DEBUG] [Thread-155474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:29.712 [DEBUG] [Thread-155474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:12:29.752 [DEBUG] [Thread-155474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:29.753 [DEBUG] [Thread-155474] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:29.757 [DEBUG] [Thread-155474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:29.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:29.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:12:29.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:12:29.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:12:29.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:29.789 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:12:29.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:29.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:29.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:12:29.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.424724 -999.00  +12.10   2.56     53   +3.10 1 1 1 1 1   888    0 10.11 24.73 ----- 4.4 2.6 263.3 16.4 21.0 -23.9 20.1 -23.5 20.0 -25.1 21.4 -24.5
2025-09-29T12:12:29.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:12:29.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:12:29.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.424724
2025-09-29T12:12:29.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:12:29.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:12:29.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:12:29.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:12:29.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:12:29.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:12:24', tmtdew=10.12, humidity=49.79, cloud=0.0, wind=14.13, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:11:36.154', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:12:29.792 [DEBUG] [Thread-155474] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:29.882 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:12:29.891 [DEBUG] [Thread-155477] [transport.py] [_log()] starting thread (client mode): 0x2b91dc60
2025-09-29T12:12:29.891 [DEBUG] [Thread-155477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:29.906 [DEBUG] [Thread-155477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:12:29.906 [INFO] [Thread-155477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:29.914 [DEBUG] [Thread-155477] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:29.915 [DEBUG] [Thread-155477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:29.915 [DEBUG] [Thread-155477] [transport.py] [_log()] Compression: none
2025-09-29T12:12:29.915 [DEBUG] [Thread-155477] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:29.976 [DEBUG] [Thread-155477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:29.976 [DEBUG] [Thread-155477] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:29.977 [DEBUG] [Thread-155477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:12:29.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:12:29.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:30.034 [DEBUG] [Thread-155477] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:30.034 [DEBUG] [Thread-155477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:30.034 [DEBUG] [Thread-155477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:30.034 [DEBUG] [Thread-155477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:12:30.034 [DEBUG] [Thread-155477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:30.054 [INFO] [Thread-155477] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:30.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:12:30.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:30.976 [DEBUG] [Thread-155477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:30.976 [DEBUG] [Thread-155477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:31.024 [DEBUG] [Thread-155477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:31.024 [DEBUG] [Thread-155477] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:31.032 [DEBUG] [Thread-155477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:31.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:31.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:12:31.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:12:31.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:31.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:31.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:31.064 [DEBUG] [Thread-155477] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:38.290 [DEBUG] [Thread-155479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:12:41.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:12:41.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:12:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:12:41.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 12, 24), 10.12, 49.79, 0.0, 14.13, 12.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:12:41.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:12:24
2025-09-29T12:12:41.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:12:41.976 [DEBUG] [Thread-155480] [transport.py] [_log()] starting thread (client mode): 0x2b969990
2025-09-29T12:12:41.976 [DEBUG] [Thread-155480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:41.996 [DEBUG] [Thread-155480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:12:41.996 [INFO] [Thread-155480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] Compression: none
2025-09-29T12:12:42.000 [DEBUG] [Thread-155480] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:42.016 [DEBUG] [Thread-155480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:42.016 [DEBUG] [Thread-155480] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:42.017 [DEBUG] [Thread-155480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:12:42.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:12:42.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:42.017 [DEBUG] [Thread-155480] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:42.017 [DEBUG] [Thread-155480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:42.017 [DEBUG] [Thread-155480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:42.017 [DEBUG] [Thread-155480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:12:42.017 [DEBUG] [Thread-155480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:42.026 [INFO] [Thread-155480] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:42.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:42.646 [DEBUG] [Thread-155482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:12:42.674 [DEBUG] [Thread-155480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:42.674 [DEBUG] [Thread-155480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:42.674 [DEBUG] [Thread-155480] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:12:42.715 [DEBUG] [Thread-155480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:42.715 [DEBUG] [Thread-155480] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:42.717 [DEBUG] [Thread-155480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:42.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:42.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:12:42.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:12:42.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:12:42.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:42.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:12:42.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.425071 -999.00  +12.20  14.21     54   +3.30 1 1 1 1 1   888    0 9.87 21.08 ----- 11.3 14.2 110.4 17.1 21.0 -23.6 20.2 -23.6 20.2 -24.9 21.4 -24.5
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.425071
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:12:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:12:24', tmtdew=10.12, humidity=49.79, cloud=0.0, wind=14.13, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:12:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:12:42.738 [DEBUG] [Thread-155480] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:42.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:12:42.824 [DEBUG] [Thread-155484] [transport.py] [_log()] starting thread (client mode): 0x2b96f4c0
2025-09-29T12:12:42.825 [DEBUG] [Thread-155484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:42.839 [DEBUG] [Thread-155484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:12:42.839 [INFO] [Thread-155484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] Compression: none
2025-09-29T12:12:42.847 [DEBUG] [Thread-155484] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:42.904 [DEBUG] [Thread-155484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:42.905 [DEBUG] [Thread-155484] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:42.905 [DEBUG] [Thread-155484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:12:42.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:12:42.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:42.962 [DEBUG] [Thread-155484] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:42.962 [DEBUG] [Thread-155484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:42.962 [DEBUG] [Thread-155484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:42.962 [DEBUG] [Thread-155484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:12:42.962 [DEBUG] [Thread-155484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:42.976 [INFO] [Thread-155484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:42.976 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:12:42.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:43.917 [DEBUG] [Thread-155484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:43.917 [DEBUG] [Thread-155484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:43.965 [DEBUG] [Thread-155484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:43.965 [DEBUG] [Thread-155484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:43.973 [DEBUG] [Thread-155484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:43.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:43.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:12:43.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:12:43.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:43.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:43.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:44.004 [DEBUG] [Thread-155484] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:45.033 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:12:45.035 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:12:53.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:12:53.999 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:12:54.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:12:54.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 12, 24), 10.12, 49.79, 0.0, 14.13, 12.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:12:54.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:12:24
2025-09-29T12:12:54.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:12:54.856 [DEBUG] [Thread-155486] [transport.py] [_log()] starting thread (client mode): 0x2b96df00
2025-09-29T12:12:54.856 [DEBUG] [Thread-155486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:54.877 [DEBUG] [Thread-155486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:12:54.877 [INFO] [Thread-155486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:12:54.880 [DEBUG] [Thread-155486] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] Compression: none
2025-09-29T12:12:54.881 [DEBUG] [Thread-155486] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:54.898 [DEBUG] [Thread-155486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:54.899 [DEBUG] [Thread-155486] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:54.899 [DEBUG] [Thread-155486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:12:54.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:12:54.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:54.901 [DEBUG] [Thread-155486] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:54.901 [DEBUG] [Thread-155486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:54.902 [DEBUG] [Thread-155486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:54.902 [DEBUG] [Thread-155486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:12:54.902 [DEBUG] [Thread-155486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:54.918 [INFO] [Thread-155486] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:54.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:55.564 [DEBUG] [Thread-155486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:55.573 [DEBUG] [Thread-155486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:55.573 [DEBUG] [Thread-155486] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:12:55.605 [DEBUG] [Thread-155486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:55.605 [DEBUG] [Thread-155486] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:55.608 [DEBUG] [Thread-155486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:55.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:55.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:12:55.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:12:55.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:12:55.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:55.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:12:55.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:55.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:12:55.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.425071 -999.00  +12.20  14.21     54   +3.30 1 1 1 1 1   888    0 9.87 21.08 ----- 11.3 14.2 110.4 17.1 21.0 -23.6 20.2 -23.6 20.2 -24.9 21.4 -24.5
2025-09-29T12:12:55.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:12:55.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:12:55.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.425071
2025-09-29T12:12:55.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:12:55.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:12:55.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:12:55.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:12:55.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:12:55.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:12:24', tmtdew=10.12, humidity=49.79, cloud=0.0, wind=14.13, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:12:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:12:55.636 [DEBUG] [Thread-155486] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:55.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:12:55.721 [DEBUG] [Thread-155489] [transport.py] [_log()] starting thread (client mode): 0x2e3c1450
2025-09-29T12:12:55.721 [DEBUG] [Thread-155489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:12:55.735 [DEBUG] [Thread-155489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:12:55.736 [INFO] [Thread-155489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:12:55.743 [DEBUG] [Thread-155489] [transport.py] [_log()] client lang: <none>
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] server lang: <none>
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] kex follows: False
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] Compression: none
2025-09-29T12:12:55.744 [DEBUG] [Thread-155489] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:12:55.802 [DEBUG] [Thread-155489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:12:55.802 [DEBUG] [Thread-155489] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:12:55.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:12:55.803 [DEBUG] [Thread-155489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:12:55.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:12:55.861 [DEBUG] [Thread-155489] [transport.py] [_log()] userauth is OK
2025-09-29T12:12:55.861 [DEBUG] [Thread-155489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:12:55.862 [DEBUG] [Thread-155489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:12:55.862 [DEBUG] [Thread-155489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:12:55.862 [DEBUG] [Thread-155489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:12:55.884 [INFO] [Thread-155489] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:12:55.885 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:12:55.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:12:56.839 [DEBUG] [Thread-155489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:12:56.839 [DEBUG] [Thread-155489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:12:56.887 [DEBUG] [Thread-155489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:12:56.888 [DEBUG] [Thread-155489] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:12:56.897 [DEBUG] [Thread-155489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:12:56.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:12:56.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:12:56.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:12:56.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:12:56.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:12:56.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:12:56.931 [DEBUG] [Thread-155489] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:12:57.684 [DEBUG] [Thread-155491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:13:06.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:13:06.928 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:13:06.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:13:07.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 12, 56), 10.17, 49.49, 0.0, 23.64, 12.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:13:07.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:12:56
2025-09-29T12:13:07.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:13:07.772 [DEBUG] [Thread-155492] [transport.py] [_log()] starting thread (client mode): 0x2b96bf10
2025-09-29T12:13:07.772 [DEBUG] [Thread-155492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:07.792 [DEBUG] [Thread-155492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:13:07.792 [INFO] [Thread-155492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:13:07.794 [DEBUG] [Thread-155492] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:07.794 [DEBUG] [Thread-155492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:13:07.794 [DEBUG] [Thread-155492] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:07.794 [DEBUG] [Thread-155492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] Compression: none
2025-09-29T12:13:07.795 [DEBUG] [Thread-155492] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:07.804 [DEBUG] [Thread-155492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:07.804 [DEBUG] [Thread-155492] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:07.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:13:07.805 [DEBUG] [Thread-155492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:13:07.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:07.807 [DEBUG] [Thread-155492] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:07.808 [DEBUG] [Thread-155492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:07.808 [DEBUG] [Thread-155492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:07.808 [DEBUG] [Thread-155492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:13:07.808 [DEBUG] [Thread-155492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:07.826 [INFO] [Thread-155492] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:07.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:13:08.456 [DEBUG] [Thread-155492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:13:08.456 [DEBUG] [Thread-155492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:13:08.456 [DEBUG] [Thread-155492] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:13:08.497 [DEBUG] [Thread-155492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:13:08.498 [DEBUG] [Thread-155492] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:13:08.501 [DEBUG] [Thread-155492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:13:08.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:13:08.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:13:08.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:13:08.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:13:08.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:13:08.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:13:08.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:13:08.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:13:08.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:13:08.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.425418 -999.00  +12.50   9.96     53   +3.20 1 1 1 1 1   888    0 9.99 19.07 ----- 7.5 10.0 150.4 18.7 21.1 -24.4 20.2 -24.6 20.2 -24.4 21.4 -24.5
2025-09-29T12:13:08.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:13:08.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:13:08.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.425418
2025-09-29T12:13:08.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:13:08.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:13:08.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:13:08.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:13:08.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:13:08.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:12:56', tmtdew=10.17, humidity=49.49, cloud=0.0, wind=23.64, temperature=12.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:12:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:13:08.528 [DEBUG] [Thread-155492] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:13:08.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:13:08.626 [DEBUG] [Thread-155495] [transport.py] [_log()] starting thread (client mode): 0x2b96df60
2025-09-29T12:13:08.627 [DEBUG] [Thread-155495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:08.642 [DEBUG] [Thread-155495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:13:08.642 [INFO] [Thread-155495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:13:08.650 [DEBUG] [Thread-155495] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:08.650 [DEBUG] [Thread-155495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] Compression: none
2025-09-29T12:13:08.651 [DEBUG] [Thread-155495] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:08.706 [DEBUG] [Thread-155495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:08.706 [DEBUG] [Thread-155495] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:08.706 [DEBUG] [Thread-155495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:13:08.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:13:08.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:08.766 [DEBUG] [Thread-155495] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:08.766 [DEBUG] [Thread-155495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:08.766 [DEBUG] [Thread-155495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:08.766 [DEBUG] [Thread-155495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:13:08.766 [DEBUG] [Thread-155495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:08.780 [INFO] [Thread-155495] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:08.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:13:08.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:13:09.753 [DEBUG] [Thread-155495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:13:09.753 [DEBUG] [Thread-155495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:13:09.801 [DEBUG] [Thread-155495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:13:09.801 [DEBUG] [Thread-155495] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:13:09.809 [DEBUG] [Thread-155495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:13:09.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:13:09.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:13:09.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:13:09.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:13:09.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:13:09.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:13:09.841 [DEBUG] [Thread-155495] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:13:12.719 [DEBUG] [Thread-155497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:13:19.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:13:19.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:13:19.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:13:20.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 12, 56), 10.17, 49.49, 0.0, 23.64, 12.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:13:20.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:12:56
2025-09-29T12:13:20.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:13:20.733 [DEBUG] [Thread-155498] [transport.py] [_log()] starting thread (client mode): 0x2e349f30
2025-09-29T12:13:20.733 [DEBUG] [Thread-155498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:20.753 [DEBUG] [Thread-155498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:13:20.753 [INFO] [Thread-155498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:13:20.756 [DEBUG] [Thread-155498] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:20.756 [DEBUG] [Thread-155498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:13:20.756 [DEBUG] [Thread-155498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:20.756 [DEBUG] [Thread-155498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] Compression: none
2025-09-29T12:13:20.757 [DEBUG] [Thread-155498] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:20.773 [DEBUG] [Thread-155498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:20.773 [DEBUG] [Thread-155498] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:20.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:13:20.773 [DEBUG] [Thread-155498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:13:20.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:20.774 [DEBUG] [Thread-155498] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:20.774 [DEBUG] [Thread-155498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:20.774 [DEBUG] [Thread-155498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:20.774 [DEBUG] [Thread-155498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:13:20.774 [DEBUG] [Thread-155498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:20.787 [INFO] [Thread-155498] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:20.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:13:21.422 [DEBUG] [Thread-155498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:13:21.422 [DEBUG] [Thread-155498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:13:21.422 [DEBUG] [Thread-155498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:13:21.463 [DEBUG] [Thread-155498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:13:21.463 [DEBUG] [Thread-155498] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:13:21.465 [DEBUG] [Thread-155498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:13:21.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:13:21.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:13:21.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:13:21.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:13:21.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:13:21.484 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:13:21.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:13:21.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.425418 -999.00  +12.50   9.96     53   +3.20 1 1 1 1 1   888    0 9.99 19.07 ----- 7.5 10.0 150.4 18.7 21.1 -24.4 20.2 -24.6 20.2 -24.4 21.4 -24.5
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.425418
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:13:21.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:12:56', tmtdew=10.17, humidity=49.49, cloud=0.0, wind=23.64, temperature=12.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:12:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:13:21.486 [DEBUG] [Thread-155498] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:13:21.560 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:13:21.569 [DEBUG] [Thread-155501] [transport.py] [_log()] starting thread (client mode): 0x2e3c35e0
2025-09-29T12:13:21.569 [DEBUG] [Thread-155501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:21.584 [DEBUG] [Thread-155501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:13:21.584 [INFO] [Thread-155501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:13:21.591 [DEBUG] [Thread-155501] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] Compression: none
2025-09-29T12:13:21.592 [DEBUG] [Thread-155501] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:21.649 [DEBUG] [Thread-155501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:21.649 [DEBUG] [Thread-155501] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:21.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:13:21.649 [DEBUG] [Thread-155501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:13:21.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:21.706 [DEBUG] [Thread-155501] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:21.706 [DEBUG] [Thread-155501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:21.706 [DEBUG] [Thread-155501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:21.706 [DEBUG] [Thread-155501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:13:21.706 [DEBUG] [Thread-155501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:21.720 [INFO] [Thread-155501] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:21.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:13:21.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:13:22.663 [DEBUG] [Thread-155501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:13:22.663 [DEBUG] [Thread-155501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:13:22.711 [DEBUG] [Thread-155501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:13:22.711 [DEBUG] [Thread-155501] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:13:22.719 [DEBUG] [Thread-155501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:13:22.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:13:22.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:13:22.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:13:22.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:13:22.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:13:22.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:13:22.751 [DEBUG] [Thread-155501] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:13:27.767 [DEBUG] [Thread-155503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:13:32.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:13:32.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:13:32.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:13:33.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 13, 28), 10.52, 48.35, 0.0, 19.41, 12.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:13:33.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:13:28
2025-09-29T12:13:33.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:13:33.608 [DEBUG] [Thread-155504] [transport.py] [_log()] starting thread (client mode): 0x2e3c0eb0
2025-09-29T12:13:33.608 [DEBUG] [Thread-155504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:33.629 [DEBUG] [Thread-155504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:13:33.629 [INFO] [Thread-155504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:13:33.632 [DEBUG] [Thread-155504] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:33.633 [DEBUG] [Thread-155504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:33.634 [DEBUG] [Thread-155504] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:33.634 [DEBUG] [Thread-155504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:33.634 [DEBUG] [Thread-155504] [transport.py] [_log()] Compression: none
2025-09-29T12:13:33.634 [DEBUG] [Thread-155504] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:33.652 [DEBUG] [Thread-155504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:33.652 [DEBUG] [Thread-155504] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:33.653 [DEBUG] [Thread-155504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:13:33.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:13:33.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:33.655 [DEBUG] [Thread-155504] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:33.655 [DEBUG] [Thread-155504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:33.656 [DEBUG] [Thread-155504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:33.656 [DEBUG] [Thread-155504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:13:33.656 [DEBUG] [Thread-155504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:33.679 [INFO] [Thread-155504] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:33.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:13:34.355 [DEBUG] [Thread-155504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:13:34.355 [DEBUG] [Thread-155504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:13:34.356 [DEBUG] [Thread-155504] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:13:34.396 [DEBUG] [Thread-155504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:13:34.396 [DEBUG] [Thread-155504] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:13:34.400 [DEBUG] [Thread-155504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:13:34.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:13:34.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:13:34.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:13:34.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:13:34.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:13:34.420 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:13:34.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:13:34.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:13:34.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:13:34.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.425418 -999.00  +12.50   9.96     53   +3.20 1 1 1 1 1   888    0 9.99 19.07 ----- 7.5 10.0 150.4 18.7 21.1 -24.4 20.2 -24.6 20.2 -24.4 21.4 -24.5
2025-09-29T12:13:34.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:13:34.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:13:34.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.425418
2025-09-29T12:13:34.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:13:34.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:13:34.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:13:34.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:13:34.422 [DEBUG] [Thread-155504] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:13:34.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:13:34.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:13:28', tmtdew=10.52, humidity=48.35, cloud=0.0, wind=19.41, temperature=12.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:12:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:13:34.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:13:34.515 [DEBUG] [Thread-155507] [transport.py] [_log()] starting thread (client mode): 0x2e34a2f0
2025-09-29T12:13:34.516 [DEBUG] [Thread-155507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:34.530 [DEBUG] [Thread-155507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:13:34.530 [INFO] [Thread-155507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:34.538 [DEBUG] [Thread-155507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:34.539 [DEBUG] [Thread-155507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:34.539 [DEBUG] [Thread-155507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:34.539 [DEBUG] [Thread-155507] [transport.py] [_log()] Compression: none
2025-09-29T12:13:34.539 [DEBUG] [Thread-155507] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:34.600 [DEBUG] [Thread-155507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:34.600 [DEBUG] [Thread-155507] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:34.601 [DEBUG] [Thread-155507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:13:34.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:13:34.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:34.658 [DEBUG] [Thread-155507] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:34.659 [DEBUG] [Thread-155507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:34.659 [DEBUG] [Thread-155507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:34.659 [DEBUG] [Thread-155507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:13:34.659 [DEBUG] [Thread-155507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:34.681 [INFO] [Thread-155507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:34.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:13:34.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:13:35.675 [DEBUG] [Thread-155507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:13:35.675 [DEBUG] [Thread-155507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:13:35.726 [DEBUG] [Thread-155507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:13:35.726 [DEBUG] [Thread-155507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:13:35.739 [DEBUG] [Thread-155507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:13:35.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:13:35.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:13:35.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:13:35.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:13:35.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:13:35.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:13:35.784 [DEBUG] [Thread-155507] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:13:38.343 [DEBUG] [Thread-155509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:13:42.793 [DEBUG] [Thread-155510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:13:45.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:13:45.179 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:13:45.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:13:45.785 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:13:45.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:13:46.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 13, 28), 10.52, 48.35, 0.0, 19.41, 12.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:13:46.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:13:28
2025-09-29T12:13:46.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:13:46.635 [DEBUG] [Thread-155511] [transport.py] [_log()] starting thread (client mode): 0x2e348280
2025-09-29T12:13:46.635 [DEBUG] [Thread-155511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:46.656 [DEBUG] [Thread-155511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:13:46.656 [INFO] [Thread-155511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] Compression: none
2025-09-29T12:13:46.660 [DEBUG] [Thread-155511] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:46.679 [DEBUG] [Thread-155511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:46.679 [DEBUG] [Thread-155511] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:46.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:13:46.680 [DEBUG] [Thread-155511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:13:46.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:46.682 [DEBUG] [Thread-155511] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:46.683 [DEBUG] [Thread-155511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:46.683 [DEBUG] [Thread-155511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:46.683 [DEBUG] [Thread-155511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:13:46.683 [DEBUG] [Thread-155511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:46.706 [INFO] [Thread-155511] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:46.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:13:47.362 [DEBUG] [Thread-155511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:13:47.363 [DEBUG] [Thread-155511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:13:47.363 [DEBUG] [Thread-155511] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:13:47.403 [DEBUG] [Thread-155511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:13:47.404 [DEBUG] [Thread-155511] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:13:47.406 [DEBUG] [Thread-155511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:13:47.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:13:47.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:13:47.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:13:47.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:13:47.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:13:47.429 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:13:47.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:13:47.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:13:47.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:13:47.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.425765 -999.00  +12.50   6.55     53   +3.20 1 1 1 1 1   888    0 9.79 16.81 ----- 11.1 6.5 159.7 12.7 21.4 -23.9 20.2 -23.9 20.2 -25.6 21.4 -26.8
2025-09-29T12:13:47.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:13:47.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:13:47.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.425765
2025-09-29T12:13:47.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:13:47.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:13:47.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:13:47.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:13:47.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:13:47.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:13:28', tmtdew=10.52, humidity=48.35, cloud=0.0, wind=19.41, temperature=12.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:13:06.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:13:47.432 [DEBUG] [Thread-155511] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:13:47.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:13:47.529 [DEBUG] [Thread-155514] [transport.py] [_log()] starting thread (client mode): 0x2e3c0a60
2025-09-29T12:13:47.529 [DEBUG] [Thread-155514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:47.543 [DEBUG] [Thread-155514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:13:47.543 [INFO] [Thread-155514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:13:47.550 [DEBUG] [Thread-155514] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] Compression: none
2025-09-29T12:13:47.551 [DEBUG] [Thread-155514] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:47.610 [DEBUG] [Thread-155514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:47.611 [DEBUG] [Thread-155514] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:47.611 [DEBUG] [Thread-155514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:13:47.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:13:47.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:47.667 [DEBUG] [Thread-155514] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:47.667 [DEBUG] [Thread-155514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:47.667 [DEBUG] [Thread-155514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:47.667 [DEBUG] [Thread-155514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:13:47.667 [DEBUG] [Thread-155514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:47.686 [INFO] [Thread-155514] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:47.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:13:47.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:13:48.626 [DEBUG] [Thread-155514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:13:48.626 [DEBUG] [Thread-155514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:13:48.674 [DEBUG] [Thread-155514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:13:48.674 [DEBUG] [Thread-155514] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:13:48.683 [DEBUG] [Thread-155514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:13:48.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:13:48.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:13:48.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:13:48.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:13:48.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:13:48.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:13:48.720 [DEBUG] [Thread-155514] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:13:57.837 [DEBUG] [Thread-155516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:13:58.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:13:58.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:13:58.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:13:59.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 13, 28), 10.52, 48.35, 0.0, 19.41, 12.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:13:59.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:13:28
2025-09-29T12:13:59.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:13:59.603 [DEBUG] [Thread-155517] [transport.py] [_log()] starting thread (client mode): 0x2e3c3e50
2025-09-29T12:13:59.603 [DEBUG] [Thread-155517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:13:59.625 [DEBUG] [Thread-155517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:13:59.625 [INFO] [Thread-155517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] client lang: <none>
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] server lang: <none>
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] kex follows: False
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:13:59.628 [DEBUG] [Thread-155517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:13:59.629 [DEBUG] [Thread-155517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:13:59.629 [DEBUG] [Thread-155517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:13:59.629 [DEBUG] [Thread-155517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:13:59.629 [DEBUG] [Thread-155517] [transport.py] [_log()] Compression: none
2025-09-29T12:13:59.629 [DEBUG] [Thread-155517] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:13:59.643 [DEBUG] [Thread-155517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:13:59.643 [DEBUG] [Thread-155517] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:13:59.643 [DEBUG] [Thread-155517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:13:59.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:13:59.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:13:59.644 [DEBUG] [Thread-155517] [transport.py] [_log()] userauth is OK
2025-09-29T12:13:59.644 [DEBUG] [Thread-155517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:13:59.644 [DEBUG] [Thread-155517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:13:59.644 [DEBUG] [Thread-155517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:13:59.644 [DEBUG] [Thread-155517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:13:59.653 [INFO] [Thread-155517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:13:59.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:14:00.253 [DEBUG] [Thread-155517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:14:00.253 [DEBUG] [Thread-155517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:14:00.253 [DEBUG] [Thread-155517] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:14:00.294 [DEBUG] [Thread-155517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:14:00.294 [DEBUG] [Thread-155517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:14:00.296 [DEBUG] [Thread-155517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:14:00.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:14:00.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:14:00.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:14:00.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:14:00.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:14:00.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:14:00.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.425765 -999.00  +12.50   6.55     53   +3.20 1 1 1 1 1   888    0 9.79 16.81 ----- 11.1 6.5 159.7 12.7 21.4 -23.9 20.2 -23.9 20.2 -25.6 21.4 -26.8
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.425765
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:14:00.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:13:28', tmtdew=10.52, humidity=48.35, cloud=0.0, wind=19.41, temperature=12.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:13:06.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:14:00.314 [DEBUG] [Thread-155517] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:14:00.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:14:00.396 [DEBUG] [Thread-155520] [transport.py] [_log()] starting thread (client mode): 0x2b91cca0
2025-09-29T12:14:00.396 [DEBUG] [Thread-155520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:14:00.411 [DEBUG] [Thread-155520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:14:00.411 [INFO] [Thread-155520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] client lang: <none>
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] server lang: <none>
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] kex follows: False
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:14:00.419 [DEBUG] [Thread-155520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:14:00.420 [DEBUG] [Thread-155520] [transport.py] [_log()] Compression: none
2025-09-29T12:14:00.420 [DEBUG] [Thread-155520] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:14:00.477 [DEBUG] [Thread-155520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:14:00.477 [DEBUG] [Thread-155520] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:14:00.478 [DEBUG] [Thread-155520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:14:00.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:14:00.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:14:00.535 [DEBUG] [Thread-155520] [transport.py] [_log()] userauth is OK
2025-09-29T12:14:00.535 [DEBUG] [Thread-155520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:14:00.535 [DEBUG] [Thread-155520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:14:00.535 [DEBUG] [Thread-155520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:14:00.535 [DEBUG] [Thread-155520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:14:00.549 [INFO] [Thread-155520] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:14:00.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:14:00.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:14:01.510 [DEBUG] [Thread-155520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:14:01.510 [DEBUG] [Thread-155520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:14:01.560 [DEBUG] [Thread-155520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:14:01.560 [DEBUG] [Thread-155520] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:14:01.571 [DEBUG] [Thread-155520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:14:01.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:14:01.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:14:01.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:14:01.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:14:01.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:14:01.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:14:01.604 [DEBUG] [Thread-155520] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:14:11.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:14:11.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:14:11.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:14:12.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 14), 10.54, 48.82, 0.0, 17.96, 12.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:14:12.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:14:00
2025-09-29T12:14:12.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:14:12.455 [DEBUG] [Thread-155522] [transport.py] [_log()] starting thread (client mode): 0x2e3c0c40
2025-09-29T12:14:12.455 [DEBUG] [Thread-155522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:14:12.476 [DEBUG] [Thread-155522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:14:12.476 [INFO] [Thread-155522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:14:12.479 [DEBUG] [Thread-155522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:14:12.479 [DEBUG] [Thread-155522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:14:12.479 [DEBUG] [Thread-155522] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:14:12.479 [DEBUG] [Thread-155522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:14:12.479 [DEBUG] [Thread-155522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] client lang: <none>
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] server lang: <none>
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] kex follows: False
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] Compression: none
2025-09-29T12:14:12.480 [DEBUG] [Thread-155522] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:14:12.492 [DEBUG] [Thread-155522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:14:12.492 [DEBUG] [Thread-155522] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:14:12.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:14:12.493 [DEBUG] [Thread-155522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:14:12.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:14:12.495 [DEBUG] [Thread-155522] [transport.py] [_log()] userauth is OK
2025-09-29T12:14:12.495 [DEBUG] [Thread-155522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:14:12.495 [DEBUG] [Thread-155522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:14:12.495 [DEBUG] [Thread-155522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:14:12.496 [DEBUG] [Thread-155522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:14:12.531 [INFO] [Thread-155522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:14:12.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:14:12.871 [DEBUG] [Thread-155524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:14:13.178 [DEBUG] [Thread-155522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:14:13.179 [DEBUG] [Thread-155522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:14:13.179 [DEBUG] [Thread-155522] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:14:13.219 [DEBUG] [Thread-155522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:14:13.220 [DEBUG] [Thread-155522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:14:13.222 [DEBUG] [Thread-155522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:14:13.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:14:13.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:14:13.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:14:13.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:14:13.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:14:13.240 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:14:13.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:14:13.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:14:13.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:14:13.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.426460 -999.00  +12.50  16.83     53   +3.20 1 1 1 1 1   888    0 9.72 15.07 ----- 14.7 16.8 126.0 19.6 21.4 -25.2 20.3 -23.5 20.2 -24.8 21.5 -26.0
2025-09-29T12:14:13.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:14:13.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:14:13.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.426460
2025-09-29T12:14:13.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:14:13.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:14:13.242 [DEBUG] [Thread-155522] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:14:13.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:14:13.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:14:13.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:14:13.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:14:00', tmtdew=10.54, humidity=48.82, cloud=0.0, wind=17.96, temperature=12.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:14:06.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:14:13.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:14:13.336 [DEBUG] [Thread-155526] [transport.py] [_log()] starting thread (client mode): 0x2e34aaa0
2025-09-29T12:14:13.336 [DEBUG] [Thread-155526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:14:13.351 [DEBUG] [Thread-155526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:14:13.351 [INFO] [Thread-155526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:14:13.359 [DEBUG] [Thread-155526] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:14:13.359 [DEBUG] [Thread-155526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:14:13.359 [DEBUG] [Thread-155526] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:14:13.359 [DEBUG] [Thread-155526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:14:13.359 [DEBUG] [Thread-155526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] client lang: <none>
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] server lang: <none>
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] kex follows: False
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] Compression: none
2025-09-29T12:14:13.360 [DEBUG] [Thread-155526] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:14:13.418 [DEBUG] [Thread-155526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:14:13.419 [DEBUG] [Thread-155526] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:14:13.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:14:13.420 [DEBUG] [Thread-155526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:14:13.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:14:13.475 [DEBUG] [Thread-155526] [transport.py] [_log()] userauth is OK
2025-09-29T12:14:13.475 [DEBUG] [Thread-155526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:14:13.475 [DEBUG] [Thread-155526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:14:13.475 [DEBUG] [Thread-155526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:14:13.475 [DEBUG] [Thread-155526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:14:13.495 [INFO] [Thread-155526] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:14:13.495 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:14:13.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:14:14.451 [DEBUG] [Thread-155526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:14:14.452 [DEBUG] [Thread-155526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:14:14.499 [DEBUG] [Thread-155526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:14:14.500 [DEBUG] [Thread-155526] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:14:14.509 [DEBUG] [Thread-155526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:14:14.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:14:14.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:14:14.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:14:14.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:14:14.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:14:14.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:14:14.543 [DEBUG] [Thread-155526] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:14:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:14:24.546 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:14:24.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:14:25.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 14), 10.54, 48.82, 0.0, 17.96, 12.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:14:25.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:14:00
2025-09-29T12:14:25.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:14:25.394 [DEBUG] [Thread-155528] [transport.py] [_log()] starting thread (client mode): 0x2b91d900
2025-09-29T12:14:25.394 [DEBUG] [Thread-155528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:14:25.415 [DEBUG] [Thread-155528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:14:25.415 [INFO] [Thread-155528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] client lang: <none>
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] server lang: <none>
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] kex follows: False
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:14:25.418 [DEBUG] [Thread-155528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:14:25.419 [DEBUG] [Thread-155528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:14:25.419 [DEBUG] [Thread-155528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:14:25.419 [DEBUG] [Thread-155528] [transport.py] [_log()] Compression: none
2025-09-29T12:14:25.419 [DEBUG] [Thread-155528] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:14:25.437 [DEBUG] [Thread-155528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:14:25.437 [DEBUG] [Thread-155528] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:14:25.438 [DEBUG] [Thread-155528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:14:25.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:14:25.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:14:25.440 [DEBUG] [Thread-155528] [transport.py] [_log()] userauth is OK
2025-09-29T12:14:25.440 [DEBUG] [Thread-155528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:14:25.440 [DEBUG] [Thread-155528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:14:25.440 [DEBUG] [Thread-155528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:14:25.440 [DEBUG] [Thread-155528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:14:25.464 [INFO] [Thread-155528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:14:25.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:14:26.124 [DEBUG] [Thread-155528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:14:26.124 [DEBUG] [Thread-155528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:14:26.125 [DEBUG] [Thread-155528] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:14:26.165 [DEBUG] [Thread-155528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:14:26.166 [DEBUG] [Thread-155528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:14:26.168 [DEBUG] [Thread-155528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:14:26.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:14:26.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:14:26.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:14:26.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:14:26.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:14:26.191 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:14:26.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:14:26.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:14:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:14:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.426460 -999.00  +12.50  16.83     53   +3.20 1 1 1 1 1   888    0 9.72 15.07 ----- 14.7 16.8 126.0 19.6 21.4 -25.2 20.3 -23.5 20.2 -24.8 21.5 -26.0
2025-09-29T12:14:26.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:14:26.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:14:26.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.426460
2025-09-29T12:14:26.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:14:26.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:14:26.193 [DEBUG] [Thread-155528] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:14:26.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:14:26.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:14:26.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:14:26.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:14:00', tmtdew=10.54, humidity=48.82, cloud=0.0, wind=17.96, temperature=12.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:14:06.144', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:14:26.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:14:27.902 [DEBUG] [Thread-155531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:14:38.386 [DEBUG] [Thread-155532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:14:42.945 [DEBUG] [Thread-155533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:14:45.321 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:14:45.322 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:14:57.976 [DEBUG] [Thread-155534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:15:13.009 [DEBUG] [Thread-155535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:15:28.036 [DEBUG] [Thread-155536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:15:38.432 [DEBUG] [Thread-155537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:15:43.064 [DEBUG] [Thread-155538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:15:45.466 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:15:45.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:15:58.094 [DEBUG] [Thread-155539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:16:13.125 [DEBUG] [Thread-155540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:16:28.154 [DEBUG] [Thread-155541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:16:38.330 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T12:16:38.483 [DEBUG] [Thread-155542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:16:43.186 [DEBUG] [Thread-155543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:16:45.609 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:16:45.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:16:48.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:16:48.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:16:48.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:16:48.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 16, 40), 10.7, 48.05, 0.0, 12.51, 12.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:16:48.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:16:40
2025-09-29T12:16:49.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:16:49.218 [DEBUG] [Thread-155544] [transport.py] [_log()] starting thread (client mode): 0x2b96e0e0
2025-09-29T12:16:49.219 [DEBUG] [Thread-155544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:16:49.238 [DEBUG] [Thread-155544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:16:49.239 [INFO] [Thread-155544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:16:49.242 [DEBUG] [Thread-155544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] client lang: <none>
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] server lang: <none>
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] kex follows: False
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] Compression: none
2025-09-29T12:16:49.243 [DEBUG] [Thread-155544] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:16:49.261 [DEBUG] [Thread-155544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:16:49.261 [DEBUG] [Thread-155544] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:16:49.262 [DEBUG] [Thread-155544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:16:49.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:16:49.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:16:49.264 [DEBUG] [Thread-155544] [transport.py] [_log()] userauth is OK
2025-09-29T12:16:49.264 [DEBUG] [Thread-155544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:16:49.264 [DEBUG] [Thread-155544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:16:49.264 [DEBUG] [Thread-155544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:16:49.264 [DEBUG] [Thread-155544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:16:49.287 [INFO] [Thread-155544] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:16:49.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:16:49.952 [DEBUG] [Thread-155544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:16:49.952 [DEBUG] [Thread-155544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:16:49.953 [DEBUG] [Thread-155544] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:16:49.993 [DEBUG] [Thread-155544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:16:49.993 [DEBUG] [Thread-155544] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:16:49.996 [DEBUG] [Thread-155544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:16:50.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:16:50.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:16:50.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:16:50.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:16:50.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:16:50.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:16:50.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:16:50.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:16:50.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:16:50.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.427848 -999.00  +13.20  13.26     51   +3.40 1 1 1 1 1   888    0 9.65 14.90 ----- 10.7 13.3 109.3 15.1 21.4 -25.1 20.6 -24.2 20.6 -24.9 21.8 -24.9
2025-09-29T12:16:50.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:16:50.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:16:50.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.427848
2025-09-29T12:16:50.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:16:50.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:16:50.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:16:50.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:16:50.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:16:50.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:16:40', tmtdew=10.7, humidity=48.05, cloud=0.0, wind=12.51, temperature=12.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:16:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:16:50.022 [DEBUG] [Thread-155544] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:16:50.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:16:50.117 [DEBUG] [Thread-155547] [transport.py] [_log()] starting thread (client mode): 0x2e3c3b20
2025-09-29T12:16:50.118 [DEBUG] [Thread-155547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:16:50.137 [DEBUG] [Thread-155547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:16:50.137 [INFO] [Thread-155547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:16:50.144 [DEBUG] [Thread-155547] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:16:50.145 [DEBUG] [Thread-155547] [transport.py] [_log()] client lang: <none>
2025-09-29T12:16:50.146 [DEBUG] [Thread-155547] [transport.py] [_log()] server lang: <none>
2025-09-29T12:16:50.146 [DEBUG] [Thread-155547] [transport.py] [_log()] kex follows: False
2025-09-29T12:16:50.146 [DEBUG] [Thread-155547] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:16:50.146 [DEBUG] [Thread-155547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:16:50.146 [DEBUG] [Thread-155547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:16:50.146 [DEBUG] [Thread-155547] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:16:50.146 [DEBUG] [Thread-155547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:16:50.146 [DEBUG] [Thread-155547] [transport.py] [_log()] Compression: none
2025-09-29T12:16:50.147 [DEBUG] [Thread-155547] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:16:50.204 [DEBUG] [Thread-155547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:16:50.204 [DEBUG] [Thread-155547] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:16:50.205 [DEBUG] [Thread-155547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:16:50.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:16:50.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:16:50.259 [DEBUG] [Thread-155547] [transport.py] [_log()] userauth is OK
2025-09-29T12:16:50.259 [DEBUG] [Thread-155547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:16:50.260 [DEBUG] [Thread-155547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:16:50.260 [DEBUG] [Thread-155547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:16:50.260 [DEBUG] [Thread-155547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:16:50.282 [INFO] [Thread-155547] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:16:50.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:16:50.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:16:51.217 [DEBUG] [Thread-155547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:16:51.218 [DEBUG] [Thread-155547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:16:51.265 [DEBUG] [Thread-155547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:16:51.266 [DEBUG] [Thread-155547] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:16:51.275 [DEBUG] [Thread-155547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:16:51.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:16:51.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:16:51.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:16:51.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:16:51.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:16:51.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:16:51.309 [DEBUG] [Thread-155547] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:16:58.219 [DEBUG] [Thread-155549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:17:01.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:17:01.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:17:01.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:17:01.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 16, 40), 10.7, 48.05, 0.0, 12.51, 12.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:17:01.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:16:40
2025-09-29T12:17:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:17:02.171 [DEBUG] [Thread-155550] [transport.py] [_log()] starting thread (client mode): 0x2e3c3970
2025-09-29T12:17:02.171 [DEBUG] [Thread-155550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:02.191 [DEBUG] [Thread-155550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:17:02.191 [INFO] [Thread-155550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:02.194 [DEBUG] [Thread-155550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:02.195 [DEBUG] [Thread-155550] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:02.195 [DEBUG] [Thread-155550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:02.195 [DEBUG] [Thread-155550] [transport.py] [_log()] Compression: none
2025-09-29T12:17:02.195 [DEBUG] [Thread-155550] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:02.211 [DEBUG] [Thread-155550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:02.212 [DEBUG] [Thread-155550] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:02.212 [DEBUG] [Thread-155550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:17:02.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:17:02.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:02.256 [DEBUG] [Thread-155550] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:02.256 [DEBUG] [Thread-155550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:02.256 [DEBUG] [Thread-155550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:02.256 [DEBUG] [Thread-155550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:17:02.256 [DEBUG] [Thread-155550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:02.271 [INFO] [Thread-155550] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:02.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:02.894 [DEBUG] [Thread-155550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:02.894 [DEBUG] [Thread-155550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:02.894 [DEBUG] [Thread-155550] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:17:02.935 [DEBUG] [Thread-155550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:02.935 [DEBUG] [Thread-155550] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:02.939 [DEBUG] [Thread-155550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:02.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:02.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:17:02.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:17:02.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:17:02.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:02.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:17:02.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:02.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:02.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:17:02.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.428196 -999.00  +12.80  13.70     51   +3.10 1 1 1 1 1   888    0 9.91 15.48 ----- 13.8 13.7 131.4 17.5 21.6 -25.3 20.7 -24.9 20.6 -24.8 21.9 -25.2
2025-09-29T12:17:02.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:17:02.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:17:02.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.428196
2025-09-29T12:17:02.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:17:02.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:17:02.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:17:02.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:17:02.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:17:02.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:16:40', tmtdew=10.7, humidity=48.05, cloud=0.0, wind=12.51, temperature=12.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:16:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:17:02.970 [DEBUG] [Thread-155550] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:03.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:17:03.064 [DEBUG] [Thread-155552] [transport.py] [_log()] starting thread (client mode): 0x2b91ded0
2025-09-29T12:17:03.064 [DEBUG] [Thread-155552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:03.079 [DEBUG] [Thread-155552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:17:03.079 [INFO] [Thread-155552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:17:03.087 [DEBUG] [Thread-155552] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:03.087 [DEBUG] [Thread-155552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:17:03.087 [DEBUG] [Thread-155552] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] Compression: none
2025-09-29T12:17:03.088 [DEBUG] [Thread-155552] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:03.148 [DEBUG] [Thread-155552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:03.148 [DEBUG] [Thread-155552] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:03.148 [DEBUG] [Thread-155552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:17:03.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:17:03.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:03.214 [DEBUG] [Thread-155552] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:03.214 [DEBUG] [Thread-155552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:03.214 [DEBUG] [Thread-155552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:03.214 [DEBUG] [Thread-155552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:17:03.214 [DEBUG] [Thread-155552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:03.233 [INFO] [Thread-155552] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:03.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:17:03.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:04.165 [DEBUG] [Thread-155552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:04.166 [DEBUG] [Thread-155552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:04.213 [DEBUG] [Thread-155552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:04.213 [DEBUG] [Thread-155552] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:04.222 [DEBUG] [Thread-155552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:04.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:04.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:17:04.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:17:04.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:04.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:04.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:04.256 [DEBUG] [Thread-155552] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:13.267 [DEBUG] [Thread-155554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:17:14.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:17:14.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:17:14.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:17:14.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 17, 12), 10.78, 47.76, 0.0, 12.86, 12.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:17:14.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:17:12
2025-09-29T12:17:14.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:17:15.119 [DEBUG] [Thread-155555] [transport.py] [_log()] starting thread (client mode): 0x2b955bd0
2025-09-29T12:17:15.119 [DEBUG] [Thread-155555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:15.140 [DEBUG] [Thread-155555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:17:15.140 [INFO] [Thread-155555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:17:15.143 [DEBUG] [Thread-155555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:15.143 [DEBUG] [Thread-155555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:17:15.143 [DEBUG] [Thread-155555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:15.143 [DEBUG] [Thread-155555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:15.143 [DEBUG] [Thread-155555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:15.143 [DEBUG] [Thread-155555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:15.143 [DEBUG] [Thread-155555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] Compression: none
2025-09-29T12:17:15.144 [DEBUG] [Thread-155555] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:15.161 [DEBUG] [Thread-155555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:15.161 [DEBUG] [Thread-155555] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:15.162 [DEBUG] [Thread-155555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:17:15.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:17:15.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:15.164 [DEBUG] [Thread-155555] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:15.164 [DEBUG] [Thread-155555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:15.165 [DEBUG] [Thread-155555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:15.165 [DEBUG] [Thread-155555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:17:15.165 [DEBUG] [Thread-155555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:15.201 [INFO] [Thread-155555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:15.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:15.842 [DEBUG] [Thread-155555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:15.843 [DEBUG] [Thread-155555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:15.843 [DEBUG] [Thread-155555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:17:15.883 [DEBUG] [Thread-155555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:15.883 [DEBUG] [Thread-155555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:15.886 [DEBUG] [Thread-155555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:15.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:15.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:17:15.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:17:15.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:17:15.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:15.906 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:17:15.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:15.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:17:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.428196 -999.00  +12.80  13.70     51   +3.10 1 1 1 1 1   888    0 9.91 15.48 ----- 13.8 13.7 131.4 17.5 21.6 -25.3 20.7 -24.9 20.6 -24.8 21.9 -25.2
2025-09-29T12:17:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:17:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:17:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.428196
2025-09-29T12:17:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:17:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:17:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:17:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:17:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:17:15.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:17:12', tmtdew=10.78, humidity=47.76, cloud=0.0, wind=12.86, temperature=12.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:16:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:17:15.909 [DEBUG] [Thread-155555] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:15.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:17:16.005 [DEBUG] [Thread-155558] [transport.py] [_log()] starting thread (client mode): 0x2b96c7f0
2025-09-29T12:17:16.005 [DEBUG] [Thread-155558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:16.019 [DEBUG] [Thread-155558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:17:16.020 [INFO] [Thread-155558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:17:16.027 [DEBUG] [Thread-155558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:16.027 [DEBUG] [Thread-155558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:17:16.027 [DEBUG] [Thread-155558] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:16.027 [DEBUG] [Thread-155558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:16.028 [DEBUG] [Thread-155558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:16.029 [DEBUG] [Thread-155558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:16.029 [DEBUG] [Thread-155558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:16.029 [DEBUG] [Thread-155558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:16.029 [DEBUG] [Thread-155558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:16.029 [DEBUG] [Thread-155558] [transport.py] [_log()] Compression: none
2025-09-29T12:17:16.029 [DEBUG] [Thread-155558] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:16.083 [DEBUG] [Thread-155558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:16.083 [DEBUG] [Thread-155558] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:16.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:17:16.084 [DEBUG] [Thread-155558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:17:16.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:16.139 [DEBUG] [Thread-155558] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:16.140 [DEBUG] [Thread-155558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:16.140 [DEBUG] [Thread-155558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:16.140 [DEBUG] [Thread-155558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:17:16.140 [DEBUG] [Thread-155558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:16.159 [INFO] [Thread-155558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:16.159 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:17:16.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:17.114 [DEBUG] [Thread-155558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:17.115 [DEBUG] [Thread-155558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:17.162 [DEBUG] [Thread-155558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:17.162 [DEBUG] [Thread-155558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:17.171 [DEBUG] [Thread-155558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:17.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:17.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:17:17.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:17:17.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:17.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:17.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:17.204 [DEBUG] [Thread-155558] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:27.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:17:27.208 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:17:27.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:17:27.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 17, 12), 10.78, 47.76, 0.0, 12.86, 12.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:17:27.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:17:12
2025-09-29T12:17:27.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:17:28.067 [DEBUG] [Thread-155560] [transport.py] [_log()] starting thread (client mode): 0x2b956590
2025-09-29T12:17:28.068 [DEBUG] [Thread-155560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:28.088 [DEBUG] [Thread-155560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:17:28.088 [INFO] [Thread-155560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] Compression: none
2025-09-29T12:17:28.091 [DEBUG] [Thread-155560] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:28.107 [DEBUG] [Thread-155560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:28.108 [DEBUG] [Thread-155560] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:28.109 [DEBUG] [Thread-155560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:17:28.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:17:28.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:28.110 [DEBUG] [Thread-155560] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:28.111 [DEBUG] [Thread-155560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:28.111 [DEBUG] [Thread-155560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:28.111 [DEBUG] [Thread-155560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:17:28.111 [DEBUG] [Thread-155560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:28.135 [INFO] [Thread-155560] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:28.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:28.309 [DEBUG] [Thread-155562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:17:28.738 [DEBUG] [Thread-155560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:28.739 [DEBUG] [Thread-155560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:28.739 [DEBUG] [Thread-155560] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:17:28.779 [DEBUG] [Thread-155560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:28.779 [DEBUG] [Thread-155560] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:28.782 [DEBUG] [Thread-155560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:28.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:28.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:17:28.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:17:28.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:17:28.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:28.807 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:17:28.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:28.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:28.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:17:28.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.428196 -999.00  +12.80  13.70     51   +3.10 1 1 1 1 1   888    0 9.91 15.48 ----- 13.8 13.7 131.4 17.5 21.6 -25.3 20.7 -24.9 20.6 -24.8 21.9 -25.2
2025-09-29T12:17:28.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:17:28.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:17:28.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.428196
2025-09-29T12:17:28.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:17:28.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:17:28.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:17:28.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:17:28.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:17:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:17:12', tmtdew=10.78, humidity=47.76, cloud=0.0, wind=12.86, temperature=12.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:16:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:17:28.810 [DEBUG] [Thread-155560] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:28.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:17:28.904 [DEBUG] [Thread-155564] [transport.py] [_log()] starting thread (client mode): 0x2b955090
2025-09-29T12:17:28.904 [DEBUG] [Thread-155564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:28.918 [DEBUG] [Thread-155564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:17:28.918 [INFO] [Thread-155564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:17:28.925 [DEBUG] [Thread-155564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:28.925 [DEBUG] [Thread-155564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:17:28.925 [DEBUG] [Thread-155564] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] Compression: none
2025-09-29T12:17:28.926 [DEBUG] [Thread-155564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:28.987 [DEBUG] [Thread-155564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:28.988 [DEBUG] [Thread-155564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:28.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:17:28.989 [DEBUG] [Thread-155564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:17:28.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:29.044 [DEBUG] [Thread-155564] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:29.044 [DEBUG] [Thread-155564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:29.044 [DEBUG] [Thread-155564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:29.044 [DEBUG] [Thread-155564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:17:29.044 [DEBUG] [Thread-155564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:29.063 [INFO] [Thread-155564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:29.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:17:29.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:30.009 [DEBUG] [Thread-155564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:30.009 [DEBUG] [Thread-155564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:30.057 [DEBUG] [Thread-155564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:30.057 [DEBUG] [Thread-155564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:30.065 [DEBUG] [Thread-155564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:30.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:30.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:17:30.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:17:30.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:30.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:30.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:30.100 [DEBUG] [Thread-155564] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:38.542 [DEBUG] [Thread-155566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:17:40.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:17:40.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:17:40.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:17:40.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 17, 12), 10.78, 47.76, 0.0, 12.86, 12.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:17:40.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:17:12
2025-09-29T12:17:40.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:17:40.960 [DEBUG] [Thread-155567] [transport.py] [_log()] starting thread (client mode): 0x2e3c1840
2025-09-29T12:17:40.960 [DEBUG] [Thread-155567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:40.981 [DEBUG] [Thread-155567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:17:40.981 [INFO] [Thread-155567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:40.984 [DEBUG] [Thread-155567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:40.985 [DEBUG] [Thread-155567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:40.985 [DEBUG] [Thread-155567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:40.985 [DEBUG] [Thread-155567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:40.985 [DEBUG] [Thread-155567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:40.985 [DEBUG] [Thread-155567] [transport.py] [_log()] Compression: none
2025-09-29T12:17:40.985 [DEBUG] [Thread-155567] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:41.002 [DEBUG] [Thread-155567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:41.002 [DEBUG] [Thread-155567] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:41.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:17:41.003 [DEBUG] [Thread-155567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:17:41.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:41.005 [DEBUG] [Thread-155567] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:41.005 [DEBUG] [Thread-155567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:41.005 [DEBUG] [Thread-155567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:41.006 [DEBUG] [Thread-155567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:17:41.006 [DEBUG] [Thread-155567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:41.028 [INFO] [Thread-155567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:41.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:41.685 [DEBUG] [Thread-155567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:41.685 [DEBUG] [Thread-155567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:41.685 [DEBUG] [Thread-155567] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:17:41.726 [DEBUG] [Thread-155567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:41.726 [DEBUG] [Thread-155567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:41.729 [DEBUG] [Thread-155567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:41.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:41.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:17:41.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:17:41.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:17:41.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:41.751 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:17:41.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:41.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:41.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:17:41.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.428543 -999.00  +13.20   9.16     52   +3.70 1 1 1 1 1   888    0 10.03 17.67 ----- 7.7 9.2 120.2 16.4 21.6 -24.5 20.7 -24.2 20.7 -24.6 21.8 -25.1
2025-09-29T12:17:41.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:17:41.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:17:41.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.428543
2025-09-29T12:17:41.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:17:41.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:17:41.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:17:41.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:17:41.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:17:41.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:17:12', tmtdew=10.78, humidity=47.76, cloud=0.0, wind=12.86, temperature=12.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:17:06.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:17:41.755 [DEBUG] [Thread-155567] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:41.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:17:41.859 [DEBUG] [Thread-155570] [transport.py] [_log()] starting thread (client mode): 0x2b91dc60
2025-09-29T12:17:41.859 [DEBUG] [Thread-155570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:41.874 [DEBUG] [Thread-155570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:17:41.874 [INFO] [Thread-155570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:17:41.881 [DEBUG] [Thread-155570] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:41.881 [DEBUG] [Thread-155570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:17:41.881 [DEBUG] [Thread-155570] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:41.881 [DEBUG] [Thread-155570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] Compression: none
2025-09-29T12:17:41.882 [DEBUG] [Thread-155570] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:41.939 [DEBUG] [Thread-155570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:41.940 [DEBUG] [Thread-155570] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:41.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:17:41.940 [DEBUG] [Thread-155570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:17:41.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:41.996 [DEBUG] [Thread-155570] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:41.996 [DEBUG] [Thread-155570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:41.996 [DEBUG] [Thread-155570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:41.996 [DEBUG] [Thread-155570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:17:41.996 [DEBUG] [Thread-155570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:42.015 [INFO] [Thread-155570] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:42.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:17:42.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:42.973 [DEBUG] [Thread-155570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:42.973 [DEBUG] [Thread-155570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:43.021 [DEBUG] [Thread-155570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:43.021 [DEBUG] [Thread-155570] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:43.030 [DEBUG] [Thread-155570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:43.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:43.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:17:43.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:17:43.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:43.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:43.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:43.066 [DEBUG] [Thread-155570] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:43.361 [DEBUG] [Thread-155572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:17:45.751 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:17:45.752 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:17:53.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:17:53.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:17:53.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:17:53.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 17, 43), 10.61, 48.53, 0.0, 18.25, 12.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:17:53.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:17:43
2025-09-29T12:17:53.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:17:53.944 [DEBUG] [Thread-155573] [transport.py] [_log()] starting thread (client mode): 0x2e3c03d0
2025-09-29T12:17:53.944 [DEBUG] [Thread-155573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:53.971 [DEBUG] [Thread-155573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:17:53.971 [INFO] [Thread-155573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:17:53.975 [DEBUG] [Thread-155573] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:53.975 [DEBUG] [Thread-155573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:17:53.975 [DEBUG] [Thread-155573] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] Compression: none
2025-09-29T12:17:53.976 [DEBUG] [Thread-155573] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:53.994 [DEBUG] [Thread-155573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:53.995 [DEBUG] [Thread-155573] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:53.995 [DEBUG] [Thread-155573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:17:53.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:17:53.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:53.997 [DEBUG] [Thread-155573] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:53.998 [DEBUG] [Thread-155573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:53.998 [DEBUG] [Thread-155573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:53.998 [DEBUG] [Thread-155573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:17:53.998 [DEBUG] [Thread-155573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:54.021 [INFO] [Thread-155573] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:54.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:54.675 [DEBUG] [Thread-155573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:54.675 [DEBUG] [Thread-155573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:54.675 [DEBUG] [Thread-155573] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:17:54.715 [DEBUG] [Thread-155573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:54.715 [DEBUG] [Thread-155573] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:54.718 [DEBUG] [Thread-155573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:54.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:54.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:17:54.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:17:54.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:17:54.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:54.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:17:54.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:54.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:54.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:17:54.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.428543 -999.00  +13.20   9.16     52   +3.70 1 1 1 1 1   888    0 10.03 17.67 ----- 7.7 9.2 120.2 16.4 21.6 -24.5 20.7 -24.2 20.7 -24.6 21.8 -25.1
2025-09-29T12:17:54.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:17:54.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:17:54.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.428543
2025-09-29T12:17:54.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:17:54.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:17:54.741 [DEBUG] [Thread-155573] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:54.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:17:54.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:17:54.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:17:54.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:17:43', tmtdew=10.61, humidity=48.53, cloud=0.0, wind=18.25, temperature=12.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:17:06.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:17:54.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:17:54.836 [DEBUG] [Thread-155576] [transport.py] [_log()] starting thread (client mode): 0x2b9afac0
2025-09-29T12:17:54.836 [DEBUG] [Thread-155576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:17:54.851 [DEBUG] [Thread-155576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:17:54.851 [INFO] [Thread-155576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:17:54.859 [DEBUG] [Thread-155576] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:17:54.859 [DEBUG] [Thread-155576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:17:54.859 [DEBUG] [Thread-155576] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:17:54.859 [DEBUG] [Thread-155576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:54.859 [DEBUG] [Thread-155576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:17:54.859 [DEBUG] [Thread-155576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:54.859 [DEBUG] [Thread-155576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] client lang: <none>
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] server lang: <none>
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] kex follows: False
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] Compression: none
2025-09-29T12:17:54.860 [DEBUG] [Thread-155576] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:17:54.916 [DEBUG] [Thread-155576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:17:54.917 [DEBUG] [Thread-155576] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:17:54.917 [DEBUG] [Thread-155576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:17:54.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:17:54.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:17:54.972 [DEBUG] [Thread-155576] [transport.py] [_log()] userauth is OK
2025-09-29T12:17:54.972 [DEBUG] [Thread-155576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:17:54.972 [DEBUG] [Thread-155576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:17:54.972 [DEBUG] [Thread-155576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:17:54.972 [DEBUG] [Thread-155576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:17:54.990 [INFO] [Thread-155576] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:17:54.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:17:54.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:17:55.919 [DEBUG] [Thread-155576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:17:55.920 [DEBUG] [Thread-155576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:17:55.967 [DEBUG] [Thread-155576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:17:55.967 [DEBUG] [Thread-155576] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:17:55.976 [DEBUG] [Thread-155576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:17:55.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:17:55.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:17:55.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:17:56.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:17:56.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:17:56.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:17:56.011 [DEBUG] [Thread-155576] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:17:58.408 [DEBUG] [Thread-155578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:18:06.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:18:06.014 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:18:06.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:18:06.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 17, 43), 10.61, 48.53, 0.0, 18.25, 12.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:18:06.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:17:43
2025-09-29T12:18:06.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:18:06.881 [DEBUG] [Thread-155579] [transport.py] [_log()] starting thread (client mode): 0x2b91fd00
2025-09-29T12:18:06.881 [DEBUG] [Thread-155579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:06.901 [DEBUG] [Thread-155579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:18:06.901 [INFO] [Thread-155579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:18:06.904 [DEBUG] [Thread-155579] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:06.905 [DEBUG] [Thread-155579] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:06.906 [DEBUG] [Thread-155579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:06.906 [DEBUG] [Thread-155579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:06.906 [DEBUG] [Thread-155579] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:06.906 [DEBUG] [Thread-155579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:06.906 [DEBUG] [Thread-155579] [transport.py] [_log()] Compression: none
2025-09-29T12:18:06.906 [DEBUG] [Thread-155579] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:06.925 [DEBUG] [Thread-155579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:06.925 [DEBUG] [Thread-155579] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:06.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:18:06.926 [DEBUG] [Thread-155579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:18:06.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:06.928 [DEBUG] [Thread-155579] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:06.928 [DEBUG] [Thread-155579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:06.928 [DEBUG] [Thread-155579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:06.928 [DEBUG] [Thread-155579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:18:06.928 [DEBUG] [Thread-155579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:06.951 [INFO] [Thread-155579] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:06.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:07.584 [DEBUG] [Thread-155579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:07.584 [DEBUG] [Thread-155579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:07.585 [DEBUG] [Thread-155579] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:18:07.625 [DEBUG] [Thread-155579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:07.625 [DEBUG] [Thread-155579] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:07.628 [DEBUG] [Thread-155579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:07.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:07.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:18:07.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:18:07.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:18:07.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:07.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:18:07.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:07.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:07.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:18:07.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.428543 -999.00  +13.20   9.16     52   +3.70 1 1 1 1 1   888    0 10.03 17.67 ----- 7.7 9.2 120.2 16.4 21.6 -24.5 20.7 -24.2 20.7 -24.6 21.8 -25.1
2025-09-29T12:18:07.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:18:07.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:18:07.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.428543
2025-09-29T12:18:07.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:18:07.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:18:07.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:18:07.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:18:07.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:18:07.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:17:43', tmtdew=10.61, humidity=48.53, cloud=0.0, wind=18.25, temperature=12.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:17:06.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:18:07.654 [DEBUG] [Thread-155579] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:07.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:18:07.743 [DEBUG] [Thread-155582] [transport.py] [_log()] starting thread (client mode): 0x2b91ed10
2025-09-29T12:18:07.744 [DEBUG] [Thread-155582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:07.758 [DEBUG] [Thread-155582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:18:07.758 [INFO] [Thread-155582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] Compression: none
2025-09-29T12:18:07.766 [DEBUG] [Thread-155582] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:07.823 [DEBUG] [Thread-155582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:07.823 [DEBUG] [Thread-155582] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:07.824 [DEBUG] [Thread-155582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:18:07.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:18:07.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:07.880 [DEBUG] [Thread-155582] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:07.880 [DEBUG] [Thread-155582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:07.880 [DEBUG] [Thread-155582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:07.880 [DEBUG] [Thread-155582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:18:07.880 [DEBUG] [Thread-155582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:07.902 [INFO] [Thread-155582] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:07.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:18:07.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:08.867 [DEBUG] [Thread-155582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:08.868 [DEBUG] [Thread-155582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:08.915 [DEBUG] [Thread-155582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:08.915 [DEBUG] [Thread-155582] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:08.924 [DEBUG] [Thread-155582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:08.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:08.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:18:08.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:18:08.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:08.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:08.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:08.959 [DEBUG] [Thread-155582] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:13.453 [DEBUG] [Thread-155584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:18:18.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:18:18.962 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:18:18.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:18:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 18, 15), 10.66, 48.38, 0.0, 18.46, 12.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:18:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:18:15
2025-09-29T12:18:19.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:18:19.824 [DEBUG] [Thread-155585] [transport.py] [_log()] starting thread (client mode): 0x2e348bb0
2025-09-29T12:18:19.824 [DEBUG] [Thread-155585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:19.844 [DEBUG] [Thread-155585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:18:19.844 [INFO] [Thread-155585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:18:19.847 [DEBUG] [Thread-155585] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:19.847 [DEBUG] [Thread-155585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:18:19.847 [DEBUG] [Thread-155585] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:19.847 [DEBUG] [Thread-155585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] Compression: none
2025-09-29T12:18:19.848 [DEBUG] [Thread-155585] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:19.867 [DEBUG] [Thread-155585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:19.867 [DEBUG] [Thread-155585] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:19.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:18:19.868 [DEBUG] [Thread-155585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:18:19.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:19.870 [DEBUG] [Thread-155585] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:19.870 [DEBUG] [Thread-155585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:19.871 [DEBUG] [Thread-155585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:19.871 [DEBUG] [Thread-155585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:18:19.871 [DEBUG] [Thread-155585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:19.906 [INFO] [Thread-155585] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:19.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:20.528 [DEBUG] [Thread-155585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:20.528 [DEBUG] [Thread-155585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:20.528 [DEBUG] [Thread-155585] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:18:20.569 [DEBUG] [Thread-155585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:20.569 [DEBUG] [Thread-155585] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:20.572 [DEBUG] [Thread-155585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:20.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:20.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:18:20.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:18:20.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:18:20.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:20.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:18:20.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:20.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:20.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:18:20.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.429237 -999.00  +13.50  12.48     51   +3.60 1 1 1 1 1   888    0 9.68 19.99 ----- 9.8 12.5 136.0 19.3 21.9 -25.3 20.6 -24.8 20.8 -25.0 21.9 -26.0
2025-09-29T12:18:20.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:18:20.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:18:20.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.429237
2025-09-29T12:18:20.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:18:20.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:18:20.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:18:20.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:18:20.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:18:20.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:18:15', tmtdew=10.66, humidity=48.38, cloud=0.0, wind=18.46, temperature=12.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:18:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:18:20.597 [DEBUG] [Thread-155585] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:20.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:18:20.692 [DEBUG] [Thread-155588] [transport.py] [_log()] starting thread (client mode): 0x2e3c1de0
2025-09-29T12:18:20.692 [DEBUG] [Thread-155588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:20.707 [DEBUG] [Thread-155588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:18:20.707 [INFO] [Thread-155588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:20.715 [DEBUG] [Thread-155588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:20.716 [DEBUG] [Thread-155588] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:20.716 [DEBUG] [Thread-155588] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:20.716 [DEBUG] [Thread-155588] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:20.716 [DEBUG] [Thread-155588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:20.716 [DEBUG] [Thread-155588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:20.716 [DEBUG] [Thread-155588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:20.716 [DEBUG] [Thread-155588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:20.716 [DEBUG] [Thread-155588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:20.717 [DEBUG] [Thread-155588] [transport.py] [_log()] Compression: none
2025-09-29T12:18:20.717 [DEBUG] [Thread-155588] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:20.771 [DEBUG] [Thread-155588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:20.772 [DEBUG] [Thread-155588] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:20.773 [DEBUG] [Thread-155588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:18:20.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:18:20.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:20.828 [DEBUG] [Thread-155588] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:20.828 [DEBUG] [Thread-155588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:20.828 [DEBUG] [Thread-155588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:20.828 [DEBUG] [Thread-155588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:18:20.828 [DEBUG] [Thread-155588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:20.847 [INFO] [Thread-155588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:20.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:18:20.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:21.809 [DEBUG] [Thread-155588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:21.809 [DEBUG] [Thread-155588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:21.857 [DEBUG] [Thread-155588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:21.858 [DEBUG] [Thread-155588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:21.867 [DEBUG] [Thread-155588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:21.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:21.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:18:21.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:18:21.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:21.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:21.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:21.902 [DEBUG] [Thread-155588] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:28.477 [DEBUG] [Thread-155590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:18:31.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:18:31.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:18:31.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:18:32.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 18, 15), 10.66, 48.38, 0.0, 18.46, 12.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:18:32.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:18:15
2025-09-29T12:18:32.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:18:32.759 [DEBUG] [Thread-155591] [transport.py] [_log()] starting thread (client mode): 0x2b954730
2025-09-29T12:18:32.759 [DEBUG] [Thread-155591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:32.780 [DEBUG] [Thread-155591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:18:32.780 [INFO] [Thread-155591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:18:32.781 [DEBUG] [Thread-155591] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:32.781 [DEBUG] [Thread-155591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:18:32.781 [DEBUG] [Thread-155591] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:32.781 [DEBUG] [Thread-155591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:32.781 [DEBUG] [Thread-155591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] Compression: none
2025-09-29T12:18:32.782 [DEBUG] [Thread-155591] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:32.792 [DEBUG] [Thread-155591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:32.793 [DEBUG] [Thread-155591] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:32.793 [DEBUG] [Thread-155591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:18:32.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:18:32.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:32.795 [DEBUG] [Thread-155591] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:32.795 [DEBUG] [Thread-155591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:32.796 [DEBUG] [Thread-155591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:32.796 [DEBUG] [Thread-155591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:18:32.796 [DEBUG] [Thread-155591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:32.827 [INFO] [Thread-155591] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:32.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:33.430 [DEBUG] [Thread-155591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:33.430 [DEBUG] [Thread-155591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:33.430 [DEBUG] [Thread-155591] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:18:33.470 [DEBUG] [Thread-155591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:33.470 [DEBUG] [Thread-155591] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:33.473 [DEBUG] [Thread-155591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:33.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:33.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:18:33.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:18:33.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:18:33.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:33.495 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:18:33.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:33.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:33.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:18:33.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.429237 -999.00  +13.50  12.48     51   +3.60 1 1 1 1 1   888    0 9.68 19.99 ----- 9.8 12.5 136.0 19.3 21.9 -25.3 20.6 -24.8 20.8 -25.0 21.9 -26.0
2025-09-29T12:18:33.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:18:33.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:18:33.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.429237
2025-09-29T12:18:33.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:18:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:18:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:18:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:18:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:18:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:18:15', tmtdew=10.66, humidity=48.38, cloud=0.0, wind=18.46, temperature=12.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:18:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:18:33.498 [DEBUG] [Thread-155591] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:33.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:18:33.592 [DEBUG] [Thread-155594] [transport.py] [_log()] starting thread (client mode): 0x2b957c40
2025-09-29T12:18:33.593 [DEBUG] [Thread-155594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:33.607 [DEBUG] [Thread-155594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:18:33.607 [INFO] [Thread-155594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:18:33.615 [DEBUG] [Thread-155594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:33.615 [DEBUG] [Thread-155594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:18:33.615 [DEBUG] [Thread-155594] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:33.615 [DEBUG] [Thread-155594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:33.615 [DEBUG] [Thread-155594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:33.615 [DEBUG] [Thread-155594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:33.615 [DEBUG] [Thread-155594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:33.615 [DEBUG] [Thread-155594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:33.616 [DEBUG] [Thread-155594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:33.616 [DEBUG] [Thread-155594] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:33.616 [DEBUG] [Thread-155594] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:33.616 [DEBUG] [Thread-155594] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:33.616 [DEBUG] [Thread-155594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:33.616 [DEBUG] [Thread-155594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:33.616 [DEBUG] [Thread-155594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:33.616 [DEBUG] [Thread-155594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:33.617 [DEBUG] [Thread-155594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:33.617 [DEBUG] [Thread-155594] [transport.py] [_log()] Compression: none
2025-09-29T12:18:33.617 [DEBUG] [Thread-155594] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:33.672 [DEBUG] [Thread-155594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:33.673 [DEBUG] [Thread-155594] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:33.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:18:33.674 [DEBUG] [Thread-155594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:18:33.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:33.728 [DEBUG] [Thread-155594] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:33.728 [DEBUG] [Thread-155594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:33.728 [DEBUG] [Thread-155594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:33.728 [DEBUG] [Thread-155594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:18:33.728 [DEBUG] [Thread-155594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:33.747 [INFO] [Thread-155594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:33.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:18:33.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:34.677 [DEBUG] [Thread-155594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:34.677 [DEBUG] [Thread-155594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:34.725 [DEBUG] [Thread-155594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:34.725 [DEBUG] [Thread-155594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:34.734 [DEBUG] [Thread-155594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:34.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:34.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:18:34.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:18:34.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:34.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:34.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:34.768 [DEBUG] [Thread-155594] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:38.595 [DEBUG] [Thread-155596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:18:43.510 [DEBUG] [Thread-155597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:18:44.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:18:44.771 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:18:44.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:18:45.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 18, 15), 10.66, 48.38, 0.0, 18.46, 12.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:18:45.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:18:15
2025-09-29T12:18:45.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:18:45.628 [DEBUG] [Thread-155598] [transport.py] [_log()] starting thread (client mode): 0x2e38f3d0
2025-09-29T12:18:45.628 [DEBUG] [Thread-155598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:45.647 [DEBUG] [Thread-155598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:18:45.647 [INFO] [Thread-155598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:18:45.650 [DEBUG] [Thread-155598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:45.650 [DEBUG] [Thread-155598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:45.651 [DEBUG] [Thread-155598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:45.652 [DEBUG] [Thread-155598] [transport.py] [_log()] Compression: none
2025-09-29T12:18:45.652 [DEBUG] [Thread-155598] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:45.669 [DEBUG] [Thread-155598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:45.669 [DEBUG] [Thread-155598] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:45.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:18:45.670 [DEBUG] [Thread-155598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:18:45.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:45.672 [DEBUG] [Thread-155598] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:45.673 [DEBUG] [Thread-155598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:45.673 [DEBUG] [Thread-155598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:45.673 [DEBUG] [Thread-155598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:18:45.673 [DEBUG] [Thread-155598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:45.690 [INFO] [Thread-155598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:45.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:45.898 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:18:45.900 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:18:46.298 [DEBUG] [Thread-155598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:46.298 [DEBUG] [Thread-155598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:46.299 [DEBUG] [Thread-155598] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:18:46.340 [DEBUG] [Thread-155598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:46.340 [DEBUG] [Thread-155598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:46.344 [DEBUG] [Thread-155598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:46.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:46.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:18:46.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:18:46.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:18:46.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:46.367 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:18:46.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:46.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:46.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:18:46.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.429584 -999.00  +13.50  12.28     50   +3.50 1 1 1 1 1   888    0 9.85 20.86 ----- 10.9 12.3 151.6 17.3 21.9 -25.8 20.7 -25.4 20.8 -25.0 22.0 -25.9
2025-09-29T12:18:46.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:18:46.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:18:46.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.429584
2025-09-29T12:18:46.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:18:46.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:18:46.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:18:46.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:18:46.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:18:46.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:18:15', tmtdew=10.66, humidity=48.38, cloud=0.0, wind=18.46, temperature=12.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:18:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:18:46.369 [DEBUG] [Thread-155598] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:46.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:18:46.467 [DEBUG] [Thread-155601] [transport.py] [_log()] starting thread (client mode): 0x2e38cc40
2025-09-29T12:18:46.467 [DEBUG] [Thread-155601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:46.483 [DEBUG] [Thread-155601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:18:46.483 [INFO] [Thread-155601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:18:46.490 [DEBUG] [Thread-155601] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:46.491 [DEBUG] [Thread-155601] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:46.492 [DEBUG] [Thread-155601] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:46.492 [DEBUG] [Thread-155601] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:46.492 [DEBUG] [Thread-155601] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:46.492 [DEBUG] [Thread-155601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:46.492 [DEBUG] [Thread-155601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:46.493 [DEBUG] [Thread-155601] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:46.493 [DEBUG] [Thread-155601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:46.493 [DEBUG] [Thread-155601] [transport.py] [_log()] Compression: none
2025-09-29T12:18:46.493 [DEBUG] [Thread-155601] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:46.549 [DEBUG] [Thread-155601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:46.549 [DEBUG] [Thread-155601] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:46.550 [DEBUG] [Thread-155601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:18:46.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:18:46.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:46.604 [DEBUG] [Thread-155601] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:46.604 [DEBUG] [Thread-155601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:46.604 [DEBUG] [Thread-155601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:46.604 [DEBUG] [Thread-155601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:18:46.604 [DEBUG] [Thread-155601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:46.623 [INFO] [Thread-155601] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:46.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:18:46.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:47.580 [DEBUG] [Thread-155601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:47.580 [DEBUG] [Thread-155601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:47.627 [DEBUG] [Thread-155601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:47.627 [DEBUG] [Thread-155601] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:47.637 [DEBUG] [Thread-155601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:47.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:47.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:18:47.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:18:47.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:47.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:47.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:47.672 [DEBUG] [Thread-155601] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:57.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:18:57.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:18:57.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:18:58.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 18, 47), 10.83, 47.87, 0.0, 17.84, 12.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:18:58.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:18:47
2025-09-29T12:18:58.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:18:58.519 [DEBUG] [Thread-155603] [transport.py] [_log()] starting thread (client mode): 0x28706ec0
2025-09-29T12:18:58.520 [DEBUG] [Thread-155603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:58.539 [DEBUG] [Thread-155604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:18:58.540 [DEBUG] [Thread-155603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:18:58.540 [INFO] [Thread-155603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:18:58.543 [DEBUG] [Thread-155603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:58.544 [DEBUG] [Thread-155603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:58.545 [DEBUG] [Thread-155603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:58.545 [DEBUG] [Thread-155603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:58.545 [DEBUG] [Thread-155603] [transport.py] [_log()] Compression: none
2025-09-29T12:18:58.545 [DEBUG] [Thread-155603] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:58.565 [DEBUG] [Thread-155603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:58.566 [DEBUG] [Thread-155603] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:58.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:18:58.567 [DEBUG] [Thread-155603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:18:58.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:58.569 [DEBUG] [Thread-155603] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:58.569 [DEBUG] [Thread-155603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:58.569 [DEBUG] [Thread-155603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:58.569 [DEBUG] [Thread-155603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:18:58.569 [DEBUG] [Thread-155603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:58.607 [INFO] [Thread-155603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:58.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:18:59.249 [DEBUG] [Thread-155603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:18:59.249 [DEBUG] [Thread-155603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:18:59.249 [DEBUG] [Thread-155603] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:18:59.290 [DEBUG] [Thread-155603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:18:59.291 [DEBUG] [Thread-155603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:18:59.294 [DEBUG] [Thread-155603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:18:59.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:18:59.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:18:59.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:18:59.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:18:59.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:18:59.321 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:18:59.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:18:59.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:18:59.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:18:59.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.429584 -999.00  +13.50  12.28     50   +3.50 1 1 1 1 1   888    0 9.85 20.86 ----- 10.9 12.3 151.6 17.3 21.9 -25.8 20.7 -25.4 20.8 -25.0 22.0 -25.9
2025-09-29T12:18:59.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:18:59.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:18:59.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.429584
2025-09-29T12:18:59.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:18:59.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:18:59.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:18:59.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:18:59.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:18:59.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:18:47', tmtdew=10.83, humidity=47.87, cloud=0.0, wind=17.84, temperature=12.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:18:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:18:59.324 [DEBUG] [Thread-155603] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:18:59.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:18:59.419 [DEBUG] [Thread-155607] [transport.py] [_log()] starting thread (client mode): 0x28706590
2025-09-29T12:18:59.419 [DEBUG] [Thread-155607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:18:59.434 [DEBUG] [Thread-155607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:18:59.434 [INFO] [Thread-155607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] client lang: <none>
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] server lang: <none>
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] kex follows: False
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:18:59.442 [DEBUG] [Thread-155607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:18:59.443 [DEBUG] [Thread-155607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:18:59.443 [DEBUG] [Thread-155607] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:18:59.443 [DEBUG] [Thread-155607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:18:59.443 [DEBUG] [Thread-155607] [transport.py] [_log()] Compression: none
2025-09-29T12:18:59.443 [DEBUG] [Thread-155607] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:18:59.500 [DEBUG] [Thread-155607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:18:59.500 [DEBUG] [Thread-155607] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:18:59.501 [DEBUG] [Thread-155607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:18:59.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:18:59.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:18:59.556 [DEBUG] [Thread-155607] [transport.py] [_log()] userauth is OK
2025-09-29T12:18:59.556 [DEBUG] [Thread-155607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:18:59.556 [DEBUG] [Thread-155607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:18:59.556 [DEBUG] [Thread-155607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:18:59.556 [DEBUG] [Thread-155607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:18:59.576 [INFO] [Thread-155607] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:18:59.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:18:59.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:00.505 [DEBUG] [Thread-155607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:00.506 [DEBUG] [Thread-155607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:00.553 [DEBUG] [Thread-155607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:00.553 [DEBUG] [Thread-155607] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:00.563 [DEBUG] [Thread-155607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:00.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:00.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:19:00.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:19:00.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:00.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:00.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:00.600 [DEBUG] [Thread-155607] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:10.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:19:10.590 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:19:10.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:19:11.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 18, 47), 10.83, 47.87, 0.0, 17.84, 12.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:19:11.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:18:47
2025-09-29T12:19:11.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:19:11.430 [DEBUG] [Thread-155609] [transport.py] [_log()] starting thread (client mode): 0x2e38d750
2025-09-29T12:19:11.430 [DEBUG] [Thread-155609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:19:11.452 [DEBUG] [Thread-155609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:19:11.452 [INFO] [Thread-155609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] client lang: <none>
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] server lang: <none>
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] kex follows: False
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] Compression: none
2025-09-29T12:19:11.456 [DEBUG] [Thread-155609] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:19:11.473 [DEBUG] [Thread-155609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:19:11.474 [DEBUG] [Thread-155609] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:19:11.474 [DEBUG] [Thread-155609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:19:11.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:19:11.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:19:11.476 [DEBUG] [Thread-155609] [transport.py] [_log()] userauth is OK
2025-09-29T12:19:11.477 [DEBUG] [Thread-155609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:19:11.477 [DEBUG] [Thread-155609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:19:11.477 [DEBUG] [Thread-155609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:19:11.477 [DEBUG] [Thread-155609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:19:11.500 [INFO] [Thread-155609] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:19:11.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:12.167 [DEBUG] [Thread-155609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:12.167 [DEBUG] [Thread-155609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:12.167 [DEBUG] [Thread-155609] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:19:12.208 [DEBUG] [Thread-155609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:12.208 [DEBUG] [Thread-155609] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:12.211 [DEBUG] [Thread-155609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:12.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:12.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:19:12.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:19:12.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:19:12.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:12.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:19:12.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:12.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:12.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:19:12.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.429584 -999.00  +13.50  12.28     50   +3.50 1 1 1 1 1   888    0 9.85 20.86 ----- 10.9 12.3 151.6 17.3 21.9 -25.8 20.7 -25.4 20.8 -25.0 22.0 -25.9
2025-09-29T12:19:12.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:19:12.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:19:12.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.429584
2025-09-29T12:19:12.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:19:12.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:19:12.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:19:12.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:19:12.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:19:12.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:18:47', tmtdew=10.83, humidity=47.87, cloud=0.0, wind=17.84, temperature=12.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:18:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:19:12.236 [DEBUG] [Thread-155609] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:12.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:19:12.332 [DEBUG] [Thread-155612] [transport.py] [_log()] starting thread (client mode): 0x2b955480
2025-09-29T12:19:12.332 [DEBUG] [Thread-155612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:19:12.347 [DEBUG] [Thread-155612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:19:12.347 [INFO] [Thread-155612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] client lang: <none>
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] server lang: <none>
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] kex follows: False
2025-09-29T12:19:12.354 [DEBUG] [Thread-155612] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:19:12.355 [DEBUG] [Thread-155612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:19:12.355 [DEBUG] [Thread-155612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:19:12.355 [DEBUG] [Thread-155612] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:19:12.355 [DEBUG] [Thread-155612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:19:12.355 [DEBUG] [Thread-155612] [transport.py] [_log()] Compression: none
2025-09-29T12:19:12.355 [DEBUG] [Thread-155612] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:19:12.411 [DEBUG] [Thread-155612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:19:12.412 [DEBUG] [Thread-155612] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:19:12.412 [DEBUG] [Thread-155612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:19:12.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:19:12.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:19:12.468 [DEBUG] [Thread-155612] [transport.py] [_log()] userauth is OK
2025-09-29T12:19:12.468 [DEBUG] [Thread-155612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:19:12.468 [DEBUG] [Thread-155612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:19:12.468 [DEBUG] [Thread-155612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:19:12.468 [DEBUG] [Thread-155612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:19:12.487 [INFO] [Thread-155612] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:19:12.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:19:12.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:13.454 [DEBUG] [Thread-155612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:13.454 [DEBUG] [Thread-155612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:13.501 [DEBUG] [Thread-155612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:13.501 [DEBUG] [Thread-155612] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:13.510 [DEBUG] [Thread-155612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:13.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:13.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:19:13.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:19:13.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:13.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:13.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:13.545 [DEBUG] [Thread-155612] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:13.575 [DEBUG] [Thread-155614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:19:23.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:19:23.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:19:23.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:19:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 19, 19), 10.9, 47.62, 0.0, 16.92, 12.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:19:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:19:19
2025-09-29T12:19:24.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:19:24.403 [DEBUG] [Thread-155615] [transport.py] [_log()] starting thread (client mode): 0x2b96b730
2025-09-29T12:19:24.403 [DEBUG] [Thread-155615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:19:24.424 [DEBUG] [Thread-155615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:19:24.424 [INFO] [Thread-155615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:19:24.426 [DEBUG] [Thread-155615] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:19:24.426 [DEBUG] [Thread-155615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:19:24.426 [DEBUG] [Thread-155615] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:19:24.426 [DEBUG] [Thread-155615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:24.426 [DEBUG] [Thread-155615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:24.426 [DEBUG] [Thread-155615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] client lang: <none>
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] server lang: <none>
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] kex follows: False
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] Compression: none
2025-09-29T12:19:24.427 [DEBUG] [Thread-155615] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:19:24.445 [DEBUG] [Thread-155615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:19:24.445 [DEBUG] [Thread-155615] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:19:24.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:19:24.446 [DEBUG] [Thread-155615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:19:24.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:19:24.448 [DEBUG] [Thread-155615] [transport.py] [_log()] userauth is OK
2025-09-29T12:19:24.449 [DEBUG] [Thread-155615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:19:24.449 [DEBUG] [Thread-155615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:19:24.449 [DEBUG] [Thread-155615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:19:24.449 [DEBUG] [Thread-155615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:19:24.472 [INFO] [Thread-155615] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:19:24.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:25.103 [DEBUG] [Thread-155615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:25.103 [DEBUG] [Thread-155615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:25.103 [DEBUG] [Thread-155615] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:19:25.143 [DEBUG] [Thread-155615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:25.143 [DEBUG] [Thread-155615] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:25.146 [DEBUG] [Thread-155615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:25.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:25.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:19:25.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:19:25.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:19:25.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:25.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:19:25.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:25.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:19:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.429932 -999.00  +13.80  10.63     51   +3.80 1 1 1 1 1   888    0 10.05 22.88 ----- 16.5 10.6 163.4 18.9 21.9 -26.1 20.6 -24.6 20.8 -24.4 22.0 -26.3
2025-09-29T12:19:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:19:25.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:19:25.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.429932
2025-09-29T12:19:25.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:19:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:19:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:19:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:19:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:19:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:19:19', tmtdew=10.9, humidity=47.62, cloud=0.0, wind=16.92, temperature=12.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:19:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:19:25.170 [DEBUG] [Thread-155615] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:25.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:19:25.264 [DEBUG] [Thread-155618] [transport.py] [_log()] starting thread (client mode): 0x2b956650
2025-09-29T12:19:25.264 [DEBUG] [Thread-155618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:19:25.278 [DEBUG] [Thread-155618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:19:25.279 [INFO] [Thread-155618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:19:25.286 [DEBUG] [Thread-155618] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:19:25.286 [DEBUG] [Thread-155618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:19:25.286 [DEBUG] [Thread-155618] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:19:25.286 [DEBUG] [Thread-155618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] client lang: <none>
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] server lang: <none>
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] kex follows: False
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] Compression: none
2025-09-29T12:19:25.287 [DEBUG] [Thread-155618] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:19:25.343 [DEBUG] [Thread-155618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:19:25.344 [DEBUG] [Thread-155618] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:19:25.344 [DEBUG] [Thread-155618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:19:25.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:19:25.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:19:25.400 [DEBUG] [Thread-155618] [transport.py] [_log()] userauth is OK
2025-09-29T12:19:25.400 [DEBUG] [Thread-155618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:19:25.400 [DEBUG] [Thread-155618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:19:25.400 [DEBUG] [Thread-155618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:19:25.401 [DEBUG] [Thread-155618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:19:25.421 [INFO] [Thread-155618] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:19:25.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:19:25.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:26.441 [DEBUG] [Thread-155618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:26.441 [DEBUG] [Thread-155618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:26.489 [DEBUG] [Thread-155618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:26.489 [DEBUG] [Thread-155618] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:26.498 [DEBUG] [Thread-155618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:26.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:26.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:19:26.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:19:26.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:26.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:26.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:26.535 [DEBUG] [Thread-155618] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:28.627 [DEBUG] [Thread-155620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:19:36.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:19:36.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:19:36.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:19:37.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 19, 19), 10.9, 47.62, 0.0, 16.92, 12.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:19:37.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:19:19
2025-09-29T12:19:37.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:19:37.390 [DEBUG] [Thread-155621] [transport.py] [_log()] starting thread (client mode): 0x2b9ae9b0
2025-09-29T12:19:37.390 [DEBUG] [Thread-155621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:19:37.410 [DEBUG] [Thread-155621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:19:37.410 [INFO] [Thread-155621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:19:37.413 [DEBUG] [Thread-155621] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:19:37.413 [DEBUG] [Thread-155621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:19:37.413 [DEBUG] [Thread-155621] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] client lang: <none>
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] server lang: <none>
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] kex follows: False
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:19:37.414 [DEBUG] [Thread-155621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:19:37.415 [DEBUG] [Thread-155621] [transport.py] [_log()] Compression: none
2025-09-29T12:19:37.415 [DEBUG] [Thread-155621] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:19:37.432 [DEBUG] [Thread-155621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:19:37.432 [DEBUG] [Thread-155621] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:19:37.433 [DEBUG] [Thread-155621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:19:37.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:19:37.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:19:37.435 [DEBUG] [Thread-155621] [transport.py] [_log()] userauth is OK
2025-09-29T12:19:37.435 [DEBUG] [Thread-155621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:19:37.435 [DEBUG] [Thread-155621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:19:37.435 [DEBUG] [Thread-155621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:19:37.435 [DEBUG] [Thread-155621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:19:37.460 [INFO] [Thread-155621] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:19:37.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:38.076 [DEBUG] [Thread-155621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:38.076 [DEBUG] [Thread-155621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:38.076 [DEBUG] [Thread-155621] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:19:38.117 [DEBUG] [Thread-155621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:38.117 [DEBUG] [Thread-155621] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:38.120 [DEBUG] [Thread-155621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:38.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:38.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:19:38.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:19:38.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:19:38.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:38.143 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:19:38.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:38.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:38.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:19:38.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.429932 -999.00  +13.80  10.63     51   +3.80 1 1 1 1 1   888    0 10.05 22.88 ----- 16.5 10.6 163.4 18.9 21.9 -26.1 20.6 -24.6 20.8 -24.4 22.0 -26.3
2025-09-29T12:19:38.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:19:38.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:19:38.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.429932
2025-09-29T12:19:38.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:19:38.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:19:38.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:19:38.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:19:38.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:19:38.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:19:19', tmtdew=10.9, humidity=47.62, cloud=0.0, wind=16.92, temperature=12.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:19:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:19:38.146 [DEBUG] [Thread-155621] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:38.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:19:38.243 [DEBUG] [Thread-155624] [transport.py] [_log()] starting thread (client mode): 0x2e38d750
2025-09-29T12:19:38.243 [DEBUG] [Thread-155624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:19:38.257 [DEBUG] [Thread-155624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:19:38.257 [INFO] [Thread-155624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:19:38.265 [DEBUG] [Thread-155624] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:19:38.265 [DEBUG] [Thread-155624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:19:38.265 [DEBUG] [Thread-155624] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:19:38.265 [DEBUG] [Thread-155624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:38.265 [DEBUG] [Thread-155624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:38.265 [DEBUG] [Thread-155624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:38.265 [DEBUG] [Thread-155624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] client lang: <none>
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] server lang: <none>
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] kex follows: False
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:19:38.266 [DEBUG] [Thread-155624] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:19:38.267 [DEBUG] [Thread-155624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:19:38.267 [DEBUG] [Thread-155624] [transport.py] [_log()] Compression: none
2025-09-29T12:19:38.267 [DEBUG] [Thread-155624] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:19:38.324 [DEBUG] [Thread-155624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:19:38.324 [DEBUG] [Thread-155624] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:19:38.325 [DEBUG] [Thread-155624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:19:38.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:19:38.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:19:38.380 [DEBUG] [Thread-155624] [transport.py] [_log()] userauth is OK
2025-09-29T12:19:38.380 [DEBUG] [Thread-155624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:19:38.380 [DEBUG] [Thread-155624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:19:38.380 [DEBUG] [Thread-155624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:19:38.380 [DEBUG] [Thread-155624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:19:38.398 [INFO] [Thread-155624] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:19:38.408 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:19:38.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:38.648 [DEBUG] [Thread-155626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:19:39.344 [DEBUG] [Thread-155624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:39.345 [DEBUG] [Thread-155624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:39.392 [DEBUG] [Thread-155624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:39.392 [DEBUG] [Thread-155624] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:39.402 [DEBUG] [Thread-155624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:39.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:39.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:19:39.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:19:39.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:39.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:39.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:39.436 [DEBUG] [Thread-155624] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:43.667 [DEBUG] [Thread-155627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:19:46.042 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:19:46.043 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:19:49.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:19:49.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:19:49.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:19:50.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 19, 19), 10.9, 47.62, 0.0, 16.92, 12.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:19:50.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:19:19
2025-09-29T12:19:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:19:50.288 [DEBUG] [Thread-155628] [transport.py] [_log()] starting thread (client mode): 0x2b9695d0
2025-09-29T12:19:50.288 [DEBUG] [Thread-155628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:19:50.308 [DEBUG] [Thread-155628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:19:50.308 [INFO] [Thread-155628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:19:50.312 [DEBUG] [Thread-155628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:19:50.312 [DEBUG] [Thread-155628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] client lang: <none>
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] server lang: <none>
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] kex follows: False
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] Compression: none
2025-09-29T12:19:50.313 [DEBUG] [Thread-155628] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:19:50.335 [DEBUG] [Thread-155628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:19:50.336 [DEBUG] [Thread-155628] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:19:50.336 [DEBUG] [Thread-155628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:19:50.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:19:50.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:19:50.339 [DEBUG] [Thread-155628] [transport.py] [_log()] userauth is OK
2025-09-29T12:19:50.339 [DEBUG] [Thread-155628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:19:50.339 [DEBUG] [Thread-155628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:19:50.339 [DEBUG] [Thread-155628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:19:50.339 [DEBUG] [Thread-155628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:19:50.374 [INFO] [Thread-155628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:19:50.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:50.994 [DEBUG] [Thread-155628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:50.995 [DEBUG] [Thread-155628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:50.995 [DEBUG] [Thread-155628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:19:51.035 [DEBUG] [Thread-155628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:51.036 [DEBUG] [Thread-155628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:51.039 [DEBUG] [Thread-155628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:51.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:51.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:19:51.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:19:51.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:19:51.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:51.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:19:51.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:51.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:51.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:19:51.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.429932 -999.00  +13.80  10.63     51   +3.80 1 1 1 1 1   888    0 10.05 22.88 ----- 16.5 10.6 163.4 18.9 21.9 -26.1 20.6 -24.6 20.8 -24.4 22.0 -26.3
2025-09-29T12:19:51.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:19:51.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:19:51.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.429932
2025-09-29T12:19:51.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:19:51.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:19:51.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:19:51.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:19:51.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:19:51.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:19:19', tmtdew=10.9, humidity=47.62, cloud=0.0, wind=16.92, temperature=12.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:19:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:19:51.063 [DEBUG] [Thread-155628] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:51.161 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:19:51.171 [DEBUG] [Thread-155631] [transport.py] [_log()] starting thread (client mode): 0x2b9688e0
2025-09-29T12:19:51.171 [DEBUG] [Thread-155631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:19:51.188 [DEBUG] [Thread-155631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:19:51.188 [INFO] [Thread-155631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:19:51.195 [DEBUG] [Thread-155631] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:19:51.195 [DEBUG] [Thread-155631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:19:51.195 [DEBUG] [Thread-155631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] client lang: <none>
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] server lang: <none>
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] kex follows: False
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] Compression: none
2025-09-29T12:19:51.196 [DEBUG] [Thread-155631] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:19:51.251 [DEBUG] [Thread-155631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:19:51.252 [DEBUG] [Thread-155631] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:19:51.252 [DEBUG] [Thread-155631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:19:51.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:19:51.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:19:51.308 [DEBUG] [Thread-155631] [transport.py] [_log()] userauth is OK
2025-09-29T12:19:51.308 [DEBUG] [Thread-155631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:19:51.308 [DEBUG] [Thread-155631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:19:51.308 [DEBUG] [Thread-155631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:19:51.308 [DEBUG] [Thread-155631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:19:51.327 [INFO] [Thread-155631] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:19:51.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:19:51.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:19:52.348 [DEBUG] [Thread-155631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:19:52.348 [DEBUG] [Thread-155631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:19:52.396 [DEBUG] [Thread-155631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:19:52.396 [DEBUG] [Thread-155631] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:19:52.404 [DEBUG] [Thread-155631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:19:52.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:19:52.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:19:52.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:19:52.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:19:52.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:19:52.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:19:52.435 [DEBUG] [Thread-155631] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:19:58.693 [DEBUG] [Thread-155633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:20:02.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:20:02.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:20:02.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:20:03.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 19, 51), 10.59, 48.6, 0.0, 15.41, 12.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:20:03.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:19:51
2025-09-29T12:20:03.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:20:03.279 [DEBUG] [Thread-155634] [transport.py] [_log()] starting thread (client mode): 0x2b96a0e0
2025-09-29T12:20:03.279 [DEBUG] [Thread-155634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:03.301 [DEBUG] [Thread-155634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:20:03.301 [INFO] [Thread-155634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:03.305 [DEBUG] [Thread-155634] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] Compression: none
2025-09-29T12:20:03.306 [DEBUG] [Thread-155634] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:03.322 [DEBUG] [Thread-155634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:03.322 [DEBUG] [Thread-155634] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:03.323 [DEBUG] [Thread-155634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:20:03.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:20:03.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:03.324 [DEBUG] [Thread-155634] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:03.325 [DEBUG] [Thread-155634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:03.325 [DEBUG] [Thread-155634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:03.325 [DEBUG] [Thread-155634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:20:03.325 [DEBUG] [Thread-155634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:03.349 [INFO] [Thread-155634] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:03.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:06.142 [DEBUG] [Thread-155634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:06.142 [DEBUG] [Thread-155634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:06.143 [DEBUG] [Thread-155634] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:20:06.183 [DEBUG] [Thread-155634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:06.183 [DEBUG] [Thread-155634] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:06.186 [DEBUG] [Thread-155634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:06.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:06.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:20:06.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:20:06.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:20:06.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:06.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:20:06.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:06.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:20:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.430279 -999.00  +13.80  16.34     50   +3.50 1 1 1 1 1   888    0 10.42 26.86 ----- 17.6 16.3 163.0 22.9 21.8 -26.2 20.2 -30.9 20.6 -26.4 21.9 -27.8
2025-09-29T12:20:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:20:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:20:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.430279
2025-09-29T12:20:06.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:20:06.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:20:06.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:20:06.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:20:06.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:20:06.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:19:51', tmtdew=10.59, humidity=48.6, cloud=0.0, wind=15.41, temperature=12.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:19:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:20:06.333 [DEBUG] [Thread-155634] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:06.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:20:06.429 [DEBUG] [Thread-155637] [transport.py] [_log()] starting thread (client mode): 0x2b9ae260
2025-09-29T12:20:06.429 [DEBUG] [Thread-155637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:06.444 [DEBUG] [Thread-155637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:20:06.444 [INFO] [Thread-155637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:20:06.451 [DEBUG] [Thread-155637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:06.452 [DEBUG] [Thread-155637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:20:06.452 [DEBUG] [Thread-155637] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:06.452 [DEBUG] [Thread-155637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:06.452 [DEBUG] [Thread-155637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:06.452 [DEBUG] [Thread-155637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:06.452 [DEBUG] [Thread-155637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:06.452 [DEBUG] [Thread-155637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:06.452 [DEBUG] [Thread-155637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:06.453 [DEBUG] [Thread-155637] [transport.py] [_log()] Compression: none
2025-09-29T12:20:06.454 [DEBUG] [Thread-155637] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:06.508 [DEBUG] [Thread-155637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:06.509 [DEBUG] [Thread-155637] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:06.510 [DEBUG] [Thread-155637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:20:06.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:20:06.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:06.564 [DEBUG] [Thread-155637] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:06.565 [DEBUG] [Thread-155637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:06.565 [DEBUG] [Thread-155637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:06.565 [DEBUG] [Thread-155637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:20:06.565 [DEBUG] [Thread-155637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:06.585 [INFO] [Thread-155637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:06.585 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:20:06.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:07.532 [DEBUG] [Thread-155637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:07.532 [DEBUG] [Thread-155637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:07.580 [DEBUG] [Thread-155637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:07.580 [DEBUG] [Thread-155637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:07.589 [DEBUG] [Thread-155637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:07.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:07.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:20:07.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:20:07.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:07.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:07.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:07.624 [DEBUG] [Thread-155637] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:13.728 [DEBUG] [Thread-155639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:20:17.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:20:17.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:20:17.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:20:18.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 19, 51), 10.59, 48.6, 0.0, 15.41, 12.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:20:18.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:19:51
2025-09-29T12:20:18.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:20:18.473 [DEBUG] [Thread-155640] [transport.py] [_log()] starting thread (client mode): 0x2e38ec20
2025-09-29T12:20:18.473 [DEBUG] [Thread-155640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:18.493 [DEBUG] [Thread-155640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:20:18.493 [INFO] [Thread-155640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:20:18.496 [DEBUG] [Thread-155640] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:18.497 [DEBUG] [Thread-155640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:18.498 [DEBUG] [Thread-155640] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:18.498 [DEBUG] [Thread-155640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:18.498 [DEBUG] [Thread-155640] [transport.py] [_log()] Compression: none
2025-09-29T12:20:18.498 [DEBUG] [Thread-155640] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:18.515 [DEBUG] [Thread-155640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:18.516 [DEBUG] [Thread-155640] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:18.516 [DEBUG] [Thread-155640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:20:18.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:20:18.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:18.518 [DEBUG] [Thread-155640] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:18.518 [DEBUG] [Thread-155640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:18.518 [DEBUG] [Thread-155640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:18.518 [DEBUG] [Thread-155640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:20:18.518 [DEBUG] [Thread-155640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:18.543 [INFO] [Thread-155640] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:18.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:19.218 [DEBUG] [Thread-155640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:19.218 [DEBUG] [Thread-155640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:19.218 [DEBUG] [Thread-155640] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:20:19.259 [DEBUG] [Thread-155640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:19.259 [DEBUG] [Thread-155640] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:19.261 [DEBUG] [Thread-155640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:19.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:19.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:20:19.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:20:19.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:20:19.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:19.278 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:20:19.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.430279 -999.00  +13.80  16.34     50   +3.50 1 1 1 1 1   888    0 10.42 26.86 ----- 17.6 16.3 163.0 22.9 21.8 -26.2 20.2 -30.9 20.6 -26.4 21.9 -27.8
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.430279
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:20:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:19:51', tmtdew=10.59, humidity=48.6, cloud=0.0, wind=15.41, temperature=12.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:19:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:20:19.279 [DEBUG] [Thread-155640] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:19.356 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:20:19.366 [DEBUG] [Thread-155643] [transport.py] [_log()] starting thread (client mode): 0x2e38f4c0
2025-09-29T12:20:19.366 [DEBUG] [Thread-155643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:19.383 [DEBUG] [Thread-155643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:20:19.383 [INFO] [Thread-155643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] Compression: none
2025-09-29T12:20:19.391 [DEBUG] [Thread-155643] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:19.446 [DEBUG] [Thread-155643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:19.446 [DEBUG] [Thread-155643] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:19.446 [DEBUG] [Thread-155643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:20:19.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:20:19.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:19.503 [DEBUG] [Thread-155643] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:19.503 [DEBUG] [Thread-155643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:19.504 [DEBUG] [Thread-155643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:19.504 [DEBUG] [Thread-155643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:20:19.504 [DEBUG] [Thread-155643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:19.517 [INFO] [Thread-155643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:19.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:20:19.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:20.422 [DEBUG] [Thread-155643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:20.422 [DEBUG] [Thread-155643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:20.470 [DEBUG] [Thread-155643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:20.470 [DEBUG] [Thread-155643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:20.478 [DEBUG] [Thread-155643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:20.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:20.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:20:20.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:20:20.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:20.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:20.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:20.510 [DEBUG] [Thread-155643] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:28.769 [DEBUG] [Thread-155645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:20:30.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:20:30.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:20:30.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:20:31.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 20, 23), 10.57, 48.7, 0.0, 18.16, 12.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:20:31.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:20:23
2025-09-29T12:20:31.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:20:31.355 [DEBUG] [Thread-155646] [transport.py] [_log()] starting thread (client mode): 0x2b96b4c0
2025-09-29T12:20:31.355 [DEBUG] [Thread-155646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:31.377 [DEBUG] [Thread-155646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:20:31.377 [INFO] [Thread-155646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:20:31.381 [DEBUG] [Thread-155646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:31.381 [DEBUG] [Thread-155646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:20:31.381 [DEBUG] [Thread-155646] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:31.381 [DEBUG] [Thread-155646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:31.382 [DEBUG] [Thread-155646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:31.383 [DEBUG] [Thread-155646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:31.383 [DEBUG] [Thread-155646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:31.383 [DEBUG] [Thread-155646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:31.383 [DEBUG] [Thread-155646] [transport.py] [_log()] Compression: none
2025-09-29T12:20:31.383 [DEBUG] [Thread-155646] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:31.401 [DEBUG] [Thread-155646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:31.401 [DEBUG] [Thread-155646] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:31.402 [DEBUG] [Thread-155646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:20:31.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:20:31.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:31.404 [DEBUG] [Thread-155646] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:31.404 [DEBUG] [Thread-155646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:31.404 [DEBUG] [Thread-155646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:31.404 [DEBUG] [Thread-155646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:20:31.404 [DEBUG] [Thread-155646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:31.427 [INFO] [Thread-155646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:31.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:32.099 [DEBUG] [Thread-155646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:32.099 [DEBUG] [Thread-155646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:32.099 [DEBUG] [Thread-155646] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:20:32.140 [DEBUG] [Thread-155646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:32.140 [DEBUG] [Thread-155646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:32.143 [DEBUG] [Thread-155646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:32.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:32.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:20:32.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:20:32.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:20:32.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:32.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:20:32.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:32.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:32.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:20:32.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.430626 -999.00  +13.00   9.43     51   +3.10 1 1 1 1 1   888    0 10.52 29.42 ----- 10.8 9.4 113.8 24.9 21.5 -25.5 20.4 -25.7 20.6 -25.6 21.8 -27.3
2025-09-29T12:20:32.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:20:32.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:20:32.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.430626
2025-09-29T12:20:32.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:20:32.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:20:32.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:20:32.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:20:32.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:20:32.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:20:23', tmtdew=10.57, humidity=48.7, cloud=0.0, wind=18.16, temperature=12.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:20:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:20:32.169 [DEBUG] [Thread-155646] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:32.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:20:32.268 [DEBUG] [Thread-155649] [transport.py] [_log()] starting thread (client mode): 0x2b96a980
2025-09-29T12:20:32.268 [DEBUG] [Thread-155649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:32.283 [DEBUG] [Thread-155649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:20:32.283 [INFO] [Thread-155649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:20:32.290 [DEBUG] [Thread-155649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:32.290 [DEBUG] [Thread-155649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] Compression: none
2025-09-29T12:20:32.291 [DEBUG] [Thread-155649] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:32.347 [DEBUG] [Thread-155649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:32.347 [DEBUG] [Thread-155649] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:32.347 [DEBUG] [Thread-155649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:20:32.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:20:32.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:32.404 [DEBUG] [Thread-155649] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:32.404 [DEBUG] [Thread-155649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:32.404 [DEBUG] [Thread-155649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:32.404 [DEBUG] [Thread-155649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:20:32.404 [DEBUG] [Thread-155649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:32.418 [INFO] [Thread-155649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:32.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:20:32.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:33.359 [DEBUG] [Thread-155649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:33.359 [DEBUG] [Thread-155649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:33.407 [DEBUG] [Thread-155649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:33.407 [DEBUG] [Thread-155649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:33.417 [DEBUG] [Thread-155649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:33.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:33.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:20:33.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:20:33.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:33.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:33.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:33.453 [DEBUG] [Thread-155649] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:38.696 [DEBUG] [Thread-155651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:20:43.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:20:43.456 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:20:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:20:43.798 [DEBUG] [Thread-155652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:20:44.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 20, 23), 10.57, 48.7, 0.0, 18.16, 12.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:20:44.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:20:23
2025-09-29T12:20:44.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:20:44.310 [DEBUG] [Thread-155653] [transport.py] [_log()] starting thread (client mode): 0x2b96a1d0
2025-09-29T12:20:44.310 [DEBUG] [Thread-155653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:44.331 [DEBUG] [Thread-155653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:20:44.331 [INFO] [Thread-155653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:20:44.334 [DEBUG] [Thread-155653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:44.334 [DEBUG] [Thread-155653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:20:44.334 [DEBUG] [Thread-155653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:44.334 [DEBUG] [Thread-155653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:44.334 [DEBUG] [Thread-155653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:44.334 [DEBUG] [Thread-155653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:44.334 [DEBUG] [Thread-155653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:44.334 [DEBUG] [Thread-155653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] Compression: none
2025-09-29T12:20:44.335 [DEBUG] [Thread-155653] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:44.351 [DEBUG] [Thread-155653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:44.352 [DEBUG] [Thread-155653] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:44.352 [DEBUG] [Thread-155653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:20:44.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:20:44.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:44.354 [DEBUG] [Thread-155653] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:44.354 [DEBUG] [Thread-155653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:44.355 [DEBUG] [Thread-155653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:44.355 [DEBUG] [Thread-155653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:20:44.355 [DEBUG] [Thread-155653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:44.369 [INFO] [Thread-155653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:44.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:45.034 [DEBUG] [Thread-155653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:45.034 [DEBUG] [Thread-155653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:45.034 [DEBUG] [Thread-155653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:20:45.075 [DEBUG] [Thread-155653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:45.075 [DEBUG] [Thread-155653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:45.078 [DEBUG] [Thread-155653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:45.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:45.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:20:45.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:20:45.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:20:45.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:45.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:20:45.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.430626 -999.00  +13.00   9.43     51   +3.10 1 1 1 1 1   888    0 10.52 29.42 ----- 10.8 9.4 113.8 24.9 21.5 -25.5 20.4 -25.7 20.6 -25.6 21.8 -27.3
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.430626
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:20:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:20:23', tmtdew=10.57, humidity=48.7, cloud=0.0, wind=18.16, temperature=12.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:20:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:20:45.097 [DEBUG] [Thread-155653] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:45.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:20:45.181 [DEBUG] [Thread-155656] [transport.py] [_log()] starting thread (client mode): 0x2e38f0d0
2025-09-29T12:20:45.181 [DEBUG] [Thread-155656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:45.195 [DEBUG] [Thread-155656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:20:45.196 [INFO] [Thread-155656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:20:45.203 [DEBUG] [Thread-155656] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:45.203 [DEBUG] [Thread-155656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:20:45.203 [DEBUG] [Thread-155656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:45.203 [DEBUG] [Thread-155656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:45.204 [DEBUG] [Thread-155656] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:45.205 [DEBUG] [Thread-155656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:45.205 [DEBUG] [Thread-155656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:45.205 [DEBUG] [Thread-155656] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:45.205 [DEBUG] [Thread-155656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:45.205 [DEBUG] [Thread-155656] [transport.py] [_log()] Compression: none
2025-09-29T12:20:45.205 [DEBUG] [Thread-155656] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:45.260 [DEBUG] [Thread-155656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:45.260 [DEBUG] [Thread-155656] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:45.261 [DEBUG] [Thread-155656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:20:45.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:20:45.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:45.320 [DEBUG] [Thread-155656] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:45.320 [DEBUG] [Thread-155656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:45.321 [DEBUG] [Thread-155656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:45.321 [DEBUG] [Thread-155656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:20:45.321 [DEBUG] [Thread-155656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:45.340 [INFO] [Thread-155656] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:45.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:20:45.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:46.184 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:20:46.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:20:46.285 [DEBUG] [Thread-155656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:46.285 [DEBUG] [Thread-155656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:46.333 [DEBUG] [Thread-155656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:46.333 [DEBUG] [Thread-155656] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:46.343 [DEBUG] [Thread-155656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:46.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:46.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:20:46.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:20:46.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:46.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:46.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:46.378 [DEBUG] [Thread-155656] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:20:56.378 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:20:56.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:20:56.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 20, 23), 10.57, 48.7, 0.0, 18.16, 12.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:20:56.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:20:23
2025-09-29T12:20:57.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:20:57.273 [DEBUG] [Thread-155658] [transport.py] [_log()] starting thread (client mode): 0x2b9aee00
2025-09-29T12:20:57.273 [DEBUG] [Thread-155658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:57.296 [DEBUG] [Thread-155658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:20:57.296 [INFO] [Thread-155658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] Compression: none
2025-09-29T12:20:57.300 [DEBUG] [Thread-155658] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:57.317 [DEBUG] [Thread-155658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:57.317 [DEBUG] [Thread-155658] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:57.317 [DEBUG] [Thread-155658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:20:57.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:20:57.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:57.318 [DEBUG] [Thread-155658] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:57.318 [DEBUG] [Thread-155658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:57.318 [DEBUG] [Thread-155658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:57.318 [DEBUG] [Thread-155658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:20:57.318 [DEBUG] [Thread-155658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:57.327 [INFO] [Thread-155658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:57.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:58.003 [DEBUG] [Thread-155658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:58.003 [DEBUG] [Thread-155658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:58.003 [DEBUG] [Thread-155658] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:20:58.044 [DEBUG] [Thread-155658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:58.044 [DEBUG] [Thread-155658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:58.046 [DEBUG] [Thread-155658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:58.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:58.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:20:58.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:20:58.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:20:58.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:58.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:20:58.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.430626 -999.00  +13.00   9.43     51   +3.10 1 1 1 1 1   888    0 10.52 29.42 ----- 10.8 9.4 113.8 24.9 21.5 -25.5 20.4 -25.7 20.6 -25.6 21.8 -27.3
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.430626
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:20:58.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:20:23', tmtdew=10.57, humidity=48.7, cloud=0.0, wind=18.16, temperature=12.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:20:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:20:58.067 [DEBUG] [Thread-155658] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:20:58.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:20:58.150 [DEBUG] [Thread-155661] [transport.py] [_log()] starting thread (client mode): 0x2e38f460
2025-09-29T12:20:58.151 [DEBUG] [Thread-155661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:20:58.165 [DEBUG] [Thread-155661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:20:58.165 [INFO] [Thread-155661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] client lang: <none>
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] server lang: <none>
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] kex follows: False
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] Compression: none
2025-09-29T12:20:58.173 [DEBUG] [Thread-155661] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:20:58.230 [DEBUG] [Thread-155661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:20:58.231 [DEBUG] [Thread-155661] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:20:58.231 [DEBUG] [Thread-155661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:20:58.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:20:58.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:20:58.288 [DEBUG] [Thread-155661] [transport.py] [_log()] userauth is OK
2025-09-29T12:20:58.288 [DEBUG] [Thread-155661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:20:58.288 [DEBUG] [Thread-155661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:20:58.288 [DEBUG] [Thread-155661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:20:58.288 [DEBUG] [Thread-155661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:20:58.303 [INFO] [Thread-155661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:20:58.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:20:58.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:20:58.828 [DEBUG] [Thread-155663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:20:59.229 [DEBUG] [Thread-155661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:20:59.229 [DEBUG] [Thread-155661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:20:59.277 [DEBUG] [Thread-155661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:20:59.277 [DEBUG] [Thread-155661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:20:59.285 [DEBUG] [Thread-155661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:20:59.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:20:59.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:20:59.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:20:59.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:20:59.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:20:59.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:20:59.319 [DEBUG] [Thread-155661] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:09.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:21:09.315 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:21:09.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:21:09.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 20, 55), 10.33, 49.21, 0.0, 13.22, 12.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:21:09.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:20:55
2025-09-29T12:21:10.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:21:10.152 [DEBUG] [Thread-155664] [transport.py] [_log()] starting thread (client mode): 0x2b91e2f0
2025-09-29T12:21:10.152 [DEBUG] [Thread-155664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:21:10.171 [DEBUG] [Thread-155664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:21:10.171 [INFO] [Thread-155664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] client lang: <none>
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] server lang: <none>
2025-09-29T12:21:10.174 [DEBUG] [Thread-155664] [transport.py] [_log()] kex follows: False
2025-09-29T12:21:10.175 [DEBUG] [Thread-155664] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:21:10.175 [DEBUG] [Thread-155664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:21:10.175 [DEBUG] [Thread-155664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:21:10.175 [DEBUG] [Thread-155664] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:21:10.175 [DEBUG] [Thread-155664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:21:10.175 [DEBUG] [Thread-155664] [transport.py] [_log()] Compression: none
2025-09-29T12:21:10.175 [DEBUG] [Thread-155664] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:21:10.191 [DEBUG] [Thread-155664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:21:10.191 [DEBUG] [Thread-155664] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:21:10.192 [DEBUG] [Thread-155664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:21:10.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:21:10.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:21:10.194 [DEBUG] [Thread-155664] [transport.py] [_log()] userauth is OK
2025-09-29T12:21:10.194 [DEBUG] [Thread-155664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:21:10.194 [DEBUG] [Thread-155664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:21:10.194 [DEBUG] [Thread-155664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:21:10.194 [DEBUG] [Thread-155664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:21:10.204 [INFO] [Thread-155664] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:21:10.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:21:10.809 [DEBUG] [Thread-155664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:21:10.809 [DEBUG] [Thread-155664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:21:10.809 [DEBUG] [Thread-155664] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:21:10.850 [DEBUG] [Thread-155664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:21:10.851 [DEBUG] [Thread-155664] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:21:10.853 [DEBUG] [Thread-155664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:21:10.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:21:10.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:21:10.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:21:10.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:21:10.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:21:10.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:21:10.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:21:10.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:21:10.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:21:10.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.430973 -999.00  +12.90   9.39     52   +3.40 1 1 1 1 1   888    0 10.33 29.44 ----- 9.9 9.4 133.7 17.2 21.7 -24.5 20.6 -25.1 20.6 -26.2 22.0 -26.2
2025-09-29T12:21:10.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:21:10.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:21:10.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.430973
2025-09-29T12:21:10.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:21:10.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:21:10.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:21:10.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:21:10.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:21:10.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:20:55', tmtdew=10.33, humidity=49.21, cloud=0.0, wind=13.22, temperature=12.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:20:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:21:10.880 [DEBUG] [Thread-155664] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:10.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:21:10.977 [DEBUG] [Thread-155667] [transport.py] [_log()] starting thread (client mode): 0x2b96f3a0
2025-09-29T12:21:10.977 [DEBUG] [Thread-155667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:21:10.992 [DEBUG] [Thread-155667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:21:10.992 [INFO] [Thread-155667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] client lang: <none>
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] server lang: <none>
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] kex follows: False
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:21:11.000 [DEBUG] [Thread-155667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:21:11.001 [DEBUG] [Thread-155667] [transport.py] [_log()] Compression: none
2025-09-29T12:21:11.001 [DEBUG] [Thread-155667] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:21:11.066 [DEBUG] [Thread-155667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:21:11.066 [DEBUG] [Thread-155667] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:21:11.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:21:11.067 [DEBUG] [Thread-155667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:21:11.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:21:11.125 [DEBUG] [Thread-155667] [transport.py] [_log()] userauth is OK
2025-09-29T12:21:11.125 [DEBUG] [Thread-155667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:21:11.125 [DEBUG] [Thread-155667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:21:11.126 [DEBUG] [Thread-155667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:21:11.126 [DEBUG] [Thread-155667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:21:11.145 [INFO] [Thread-155667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:21:11.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:21:11.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:21:12.085 [DEBUG] [Thread-155667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:21:12.085 [DEBUG] [Thread-155667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:21:12.133 [DEBUG] [Thread-155667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:21:12.133 [DEBUG] [Thread-155667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:21:12.142 [DEBUG] [Thread-155667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:21:12.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:21:12.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:21:12.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:21:12.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:21:12.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:21:12.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:21:12.176 [DEBUG] [Thread-155667] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:13.860 [DEBUG] [Thread-155669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:21:22.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:21:22.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:21:22.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:21:22.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 20, 55), 10.33, 49.21, 0.0, 13.22, 12.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:21:22.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:20:55
2025-09-29T12:21:22.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:21:23.008 [DEBUG] [Thread-155670] [transport.py] [_log()] starting thread (client mode): 0x2e38f910
2025-09-29T12:21:23.009 [DEBUG] [Thread-155670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:21:23.028 [DEBUG] [Thread-155670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:21:23.028 [INFO] [Thread-155670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] client lang: <none>
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] server lang: <none>
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] kex follows: False
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] Compression: none
2025-09-29T12:21:23.030 [DEBUG] [Thread-155670] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:21:23.038 [DEBUG] [Thread-155670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:21:23.038 [DEBUG] [Thread-155670] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:21:23.038 [DEBUG] [Thread-155670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:21:23.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:21:23.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:21:23.040 [DEBUG] [Thread-155670] [transport.py] [_log()] userauth is OK
2025-09-29T12:21:23.040 [DEBUG] [Thread-155670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:21:23.040 [DEBUG] [Thread-155670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:21:23.040 [DEBUG] [Thread-155670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:21:23.040 [DEBUG] [Thread-155670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:21:23.056 [INFO] [Thread-155670] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:21:23.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:21:23.782 [DEBUG] [Thread-155670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:21:23.782 [DEBUG] [Thread-155670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:21:23.782 [DEBUG] [Thread-155670] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:21:23.823 [DEBUG] [Thread-155670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:21:23.824 [DEBUG] [Thread-155670] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:21:23.826 [DEBUG] [Thread-155670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:21:23.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:21:23.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:21:23.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:21:23.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:21:23.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:21:23.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:21:23.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:21:23.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:21:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:21:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.430973 -999.00  +12.90   9.39     52   +3.40 1 1 1 1 1   888    0 10.33 29.44 ----- 9.9 9.4 133.7 17.2 21.7 -24.5 20.6 -25.1 20.6 -26.2 22.0 -26.2
2025-09-29T12:21:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:21:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:21:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.430973
2025-09-29T12:21:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:21:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:21:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:21:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:21:23.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:21:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:20:55', tmtdew=10.33, humidity=49.21, cloud=0.0, wind=13.22, temperature=12.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:20:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:21:23.850 [DEBUG] [Thread-155670] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:23.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:21:23.944 [DEBUG] [Thread-155673] [transport.py] [_log()] starting thread (client mode): 0x2b91e020
2025-09-29T12:21:23.944 [DEBUG] [Thread-155673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:21:23.958 [DEBUG] [Thread-155673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:21:23.958 [INFO] [Thread-155673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:21:23.966 [DEBUG] [Thread-155673] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:21:23.966 [DEBUG] [Thread-155673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:21:23.966 [DEBUG] [Thread-155673] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] client lang: <none>
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] server lang: <none>
2025-09-29T12:21:23.967 [DEBUG] [Thread-155673] [transport.py] [_log()] kex follows: False
2025-09-29T12:21:23.968 [DEBUG] [Thread-155673] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:21:23.968 [DEBUG] [Thread-155673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:21:23.968 [DEBUG] [Thread-155673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:21:23.968 [DEBUG] [Thread-155673] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:21:23.968 [DEBUG] [Thread-155673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:21:23.968 [DEBUG] [Thread-155673] [transport.py] [_log()] Compression: none
2025-09-29T12:21:23.968 [DEBUG] [Thread-155673] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:21:24.023 [DEBUG] [Thread-155673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:21:24.024 [DEBUG] [Thread-155673] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:21:24.024 [DEBUG] [Thread-155673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:21:24.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:21:24.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:21:24.080 [DEBUG] [Thread-155673] [transport.py] [_log()] userauth is OK
2025-09-29T12:21:24.080 [DEBUG] [Thread-155673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:21:24.080 [DEBUG] [Thread-155673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:21:24.080 [DEBUG] [Thread-155673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:21:24.080 [DEBUG] [Thread-155673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:21:24.104 [INFO] [Thread-155673] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:21:24.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:21:24.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:21:25.045 [DEBUG] [Thread-155673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:21:25.045 [DEBUG] [Thread-155673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:21:25.093 [DEBUG] [Thread-155673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:21:25.093 [DEBUG] [Thread-155673] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:21:25.102 [DEBUG] [Thread-155673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:21:25.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:21:25.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:21:25.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:21:25.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:21:25.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:21:25.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:21:25.137 [DEBUG] [Thread-155673] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:28.912 [DEBUG] [Thread-155675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:21:35.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:21:35.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:21:35.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:21:35.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 21, 27), 10.72, 48.0, 0.0, 16.96, 12.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:21:35.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:21:27
2025-09-29T12:21:35.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:21:35.971 [DEBUG] [Thread-155676] [transport.py] [_log()] starting thread (client mode): 0x2b91cc40
2025-09-29T12:21:35.971 [DEBUG] [Thread-155676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:21:35.992 [DEBUG] [Thread-155676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:21:35.992 [INFO] [Thread-155676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:21:35.995 [DEBUG] [Thread-155676] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:21:35.995 [DEBUG] [Thread-155676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] client lang: <none>
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] server lang: <none>
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] kex follows: False
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] Compression: none
2025-09-29T12:21:35.996 [DEBUG] [Thread-155676] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:21:36.010 [DEBUG] [Thread-155676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:21:36.011 [DEBUG] [Thread-155676] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:21:36.011 [DEBUG] [Thread-155676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:21:36.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:21:36.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:21:36.013 [DEBUG] [Thread-155676] [transport.py] [_log()] userauth is OK
2025-09-29T12:21:36.014 [DEBUG] [Thread-155676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:21:36.014 [DEBUG] [Thread-155676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:21:36.014 [DEBUG] [Thread-155676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:21:36.014 [DEBUG] [Thread-155676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:21:36.037 [INFO] [Thread-155676] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:21:36.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:21:36.641 [DEBUG] [Thread-155676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:21:36.641 [DEBUG] [Thread-155676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:21:36.641 [DEBUG] [Thread-155676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:21:36.682 [DEBUG] [Thread-155676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:21:36.682 [DEBUG] [Thread-155676] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:21:36.684 [DEBUG] [Thread-155676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:21:36.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:21:36.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:21:36.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:21:36.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:21:36.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:21:36.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:21:36.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.431321 -999.00  +13.40  10.72     51   +3.70 1 1 1 1 1   888    0 10.64 31.20 ----- 11.7 10.7 161.8 17.2 21.8 -25.5 20.7 -24.7 20.8 -24.4 22.1 -25.9
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.431321
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:21:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:21:27', tmtdew=10.72, humidity=48.0, cloud=0.0, wind=16.96, temperature=12.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:21:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:21:36.706 [DEBUG] [Thread-155676] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:36.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:21:36.793 [DEBUG] [Thread-155679] [transport.py] [_log()] starting thread (client mode): 0x2e38e2c0
2025-09-29T12:21:36.793 [DEBUG] [Thread-155679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:21:36.810 [DEBUG] [Thread-155679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:21:36.810 [INFO] [Thread-155679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] client lang: <none>
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] server lang: <none>
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] kex follows: False
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] Compression: none
2025-09-29T12:21:36.817 [DEBUG] [Thread-155679] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:21:36.874 [DEBUG] [Thread-155679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:21:36.874 [DEBUG] [Thread-155679] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:21:36.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:21:36.875 [DEBUG] [Thread-155679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:21:36.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:21:36.932 [DEBUG] [Thread-155679] [transport.py] [_log()] userauth is OK
2025-09-29T12:21:36.932 [DEBUG] [Thread-155679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:21:36.932 [DEBUG] [Thread-155679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:21:36.932 [DEBUG] [Thread-155679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:21:36.932 [DEBUG] [Thread-155679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:21:36.945 [INFO] [Thread-155679] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:21:36.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:21:36.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:21:37.883 [DEBUG] [Thread-155679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:21:37.883 [DEBUG] [Thread-155679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:21:37.931 [DEBUG] [Thread-155679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:21:37.931 [DEBUG] [Thread-155679] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:21:37.939 [DEBUG] [Thread-155679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:21:37.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:21:37.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:21:37.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:21:37.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:21:37.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:21:37.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:21:37.971 [DEBUG] [Thread-155679] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:38.743 [DEBUG] [Thread-155681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:21:43.935 [DEBUG] [Thread-155682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:21:46.329 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:21:46.330 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:21:47.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:21:47.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:21:47.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:21:48.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 21, 27), 10.72, 48.0, 0.0, 16.96, 12.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:21:48.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:21:27
2025-09-29T12:21:48.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:21:48.796 [DEBUG] [Thread-155683] [transport.py] [_log()] starting thread (client mode): 0x2b91e860
2025-09-29T12:21:48.796 [DEBUG] [Thread-155683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:21:48.816 [DEBUG] [Thread-155683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:21:48.816 [INFO] [Thread-155683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:21:48.820 [DEBUG] [Thread-155683] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:21:48.820 [DEBUG] [Thread-155683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:21:48.820 [DEBUG] [Thread-155683] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:21:48.820 [DEBUG] [Thread-155683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] client lang: <none>
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] server lang: <none>
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] kex follows: False
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] Compression: none
2025-09-29T12:21:48.821 [DEBUG] [Thread-155683] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:21:48.838 [DEBUG] [Thread-155683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:21:48.839 [DEBUG] [Thread-155683] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:21:48.839 [DEBUG] [Thread-155683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:21:48.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:21:48.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:21:48.842 [DEBUG] [Thread-155683] [transport.py] [_log()] userauth is OK
2025-09-29T12:21:48.842 [DEBUG] [Thread-155683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:21:48.842 [DEBUG] [Thread-155683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:21:48.842 [DEBUG] [Thread-155683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:21:48.842 [DEBUG] [Thread-155683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:21:48.860 [INFO] [Thread-155683] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:21:48.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:21:49.688 [DEBUG] [Thread-155683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:21:49.688 [DEBUG] [Thread-155683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:21:49.688 [DEBUG] [Thread-155683] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:21:49.729 [DEBUG] [Thread-155683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:21:49.729 [DEBUG] [Thread-155683] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:21:49.732 [DEBUG] [Thread-155683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:21:49.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:21:49.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:21:49.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:21:49.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:21:49.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:21:49.754 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:21:49.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:21:49.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:21:49.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:21:49.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.431321 -999.00  +13.40  10.72     51   +3.70 1 1 1 1 1   888    0 10.64 31.20 ----- 11.7 10.7 161.8 17.2 21.8 -25.5 20.7 -24.7 20.8 -24.4 22.1 -25.9
2025-09-29T12:21:49.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:21:49.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:21:49.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.431321
2025-09-29T12:21:49.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:21:49.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:21:49.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:21:49.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:21:49.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:21:49.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:21:27', tmtdew=10.72, humidity=48.0, cloud=0.0, wind=16.96, temperature=12.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:21:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:21:49.757 [DEBUG] [Thread-155683] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:49.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:21:49.850 [DEBUG] [Thread-155686] [transport.py] [_log()] starting thread (client mode): 0x2b91cee0
2025-09-29T12:21:49.850 [DEBUG] [Thread-155686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:21:49.865 [DEBUG] [Thread-155686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:21:49.865 [INFO] [Thread-155686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:21:49.873 [DEBUG] [Thread-155686] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:21:49.873 [DEBUG] [Thread-155686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:21:49.873 [DEBUG] [Thread-155686] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:21:49.873 [DEBUG] [Thread-155686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:49.873 [DEBUG] [Thread-155686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:21:49.873 [DEBUG] [Thread-155686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:49.873 [DEBUG] [Thread-155686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:21:49.873 [DEBUG] [Thread-155686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] client lang: <none>
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] server lang: <none>
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] kex follows: False
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:21:49.874 [DEBUG] [Thread-155686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:21:49.875 [DEBUG] [Thread-155686] [transport.py] [_log()] Compression: none
2025-09-29T12:21:49.875 [DEBUG] [Thread-155686] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:21:49.932 [DEBUG] [Thread-155686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:21:49.932 [DEBUG] [Thread-155686] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:21:49.933 [DEBUG] [Thread-155686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:21:49.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:21:49.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:21:49.988 [DEBUG] [Thread-155686] [transport.py] [_log()] userauth is OK
2025-09-29T12:21:49.988 [DEBUG] [Thread-155686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:21:49.988 [DEBUG] [Thread-155686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:21:49.988 [DEBUG] [Thread-155686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:21:49.988 [DEBUG] [Thread-155686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:21:50.008 [INFO] [Thread-155686] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:21:50.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:21:50.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:21:51.072 [DEBUG] [Thread-155686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:21:51.072 [DEBUG] [Thread-155686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:21:51.120 [DEBUG] [Thread-155686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:21:51.120 [DEBUG] [Thread-155686] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:21:51.128 [DEBUG] [Thread-155686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:21:51.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:21:51.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:21:51.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:21:51.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:21:51.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:21:51.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:21:51.160 [DEBUG] [Thread-155686] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:21:58.986 [DEBUG] [Thread-155688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:22:01.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:22:01.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:22:01.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:22:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 21, 27), 10.72, 48.0, 0.0, 16.96, 12.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:22:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:21:27
2025-09-29T12:22:01.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:22:02.025 [DEBUG] [Thread-155689] [transport.py] [_log()] starting thread (client mode): 0x28707f70
2025-09-29T12:22:02.025 [DEBUG] [Thread-155689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:02.045 [DEBUG] [Thread-155689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:22:02.045 [INFO] [Thread-155689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:22:02.048 [DEBUG] [Thread-155689] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:02.048 [DEBUG] [Thread-155689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:22:02.048 [DEBUG] [Thread-155689] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:02.048 [DEBUG] [Thread-155689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] Compression: none
2025-09-29T12:22:02.049 [DEBUG] [Thread-155689] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:02.066 [DEBUG] [Thread-155689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:02.066 [DEBUG] [Thread-155689] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:02.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:22:02.067 [DEBUG] [Thread-155689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:22:02.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:02.069 [DEBUG] [Thread-155689] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:02.069 [DEBUG] [Thread-155689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:02.069 [DEBUG] [Thread-155689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:02.069 [DEBUG] [Thread-155689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:22:02.069 [DEBUG] [Thread-155689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:02.089 [INFO] [Thread-155689] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:02.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:02.889 [DEBUG] [Thread-155689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:02.890 [DEBUG] [Thread-155689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:02.890 [DEBUG] [Thread-155689] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:22:02.930 [DEBUG] [Thread-155689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:02.931 [DEBUG] [Thread-155689] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:02.936 [DEBUG] [Thread-155689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:02.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:02.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:22:02.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:22:02.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:22:02.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:02.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:22:02.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:02.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:02.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:22:02.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.431321 -999.00  +13.40  10.72     51   +3.70 1 1 1 1 1   888    0 10.64 31.20 ----- 11.7 10.7 161.8 17.2 21.8 -25.5 20.7 -24.7 20.8 -24.4 22.1 -25.9
2025-09-29T12:22:02.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:22:02.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:22:02.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.431321
2025-09-29T12:22:02.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:22:02.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:22:02.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:22:02.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:22:02.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:22:02.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:21:27', tmtdew=10.72, humidity=48.0, cloud=0.0, wind=16.96, temperature=12.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:21:06.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:22:02.960 [DEBUG] [Thread-155689] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:03.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:22:03.064 [DEBUG] [Thread-155692] [transport.py] [_log()] starting thread (client mode): 0x2b91c670
2025-09-29T12:22:03.064 [DEBUG] [Thread-155692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:03.079 [DEBUG] [Thread-155692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:22:03.079 [INFO] [Thread-155692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:03.087 [DEBUG] [Thread-155692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:03.088 [DEBUG] [Thread-155692] [transport.py] [_log()] Compression: none
2025-09-29T12:22:03.088 [DEBUG] [Thread-155692] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:03.144 [DEBUG] [Thread-155692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:03.144 [DEBUG] [Thread-155692] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:03.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:22:03.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:03.146 [DEBUG] [Thread-155692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:22:03.200 [DEBUG] [Thread-155692] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:03.200 [DEBUG] [Thread-155692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:03.201 [DEBUG] [Thread-155692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:03.201 [DEBUG] [Thread-155692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:22:03.201 [DEBUG] [Thread-155692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:03.221 [INFO] [Thread-155692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:03.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:22:03.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:04.229 [DEBUG] [Thread-155692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:04.230 [DEBUG] [Thread-155692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:04.277 [DEBUG] [Thread-155692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:04.278 [DEBUG] [Thread-155692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:04.287 [DEBUG] [Thread-155692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:04.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:04.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:22:04.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:22:04.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:04.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:04.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:04.321 [DEBUG] [Thread-155692] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:14.020 [DEBUG] [Thread-155694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:22:14.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:22:14.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:22:14.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:22:14.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 21, 59), 10.97, 47.47, 0.0, 20.45, 12.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:22:14.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:21:59
2025-09-29T12:22:15.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:22:15.202 [DEBUG] [Thread-155695] [transport.py] [_log()] starting thread (client mode): 0x2e38cb20
2025-09-29T12:22:15.202 [DEBUG] [Thread-155695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:15.225 [DEBUG] [Thread-155695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:22:15.225 [INFO] [Thread-155695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:15.229 [DEBUG] [Thread-155695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:15.230 [DEBUG] [Thread-155695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:15.230 [DEBUG] [Thread-155695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:15.230 [DEBUG] [Thread-155695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:15.230 [DEBUG] [Thread-155695] [transport.py] [_log()] Compression: none
2025-09-29T12:22:15.230 [DEBUG] [Thread-155695] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:15.249 [DEBUG] [Thread-155695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:15.250 [DEBUG] [Thread-155695] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:15.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:22:15.250 [DEBUG] [Thread-155695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:22:15.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:15.251 [DEBUG] [Thread-155695] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:15.251 [DEBUG] [Thread-155695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:15.251 [DEBUG] [Thread-155695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:15.251 [DEBUG] [Thread-155695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:22:15.251 [DEBUG] [Thread-155695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:15.265 [INFO] [Thread-155695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:15.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:15.923 [DEBUG] [Thread-155695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:15.923 [DEBUG] [Thread-155695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:15.923 [DEBUG] [Thread-155695] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:22:15.964 [DEBUG] [Thread-155695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:15.964 [DEBUG] [Thread-155695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:15.966 [DEBUG] [Thread-155695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:15.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:15.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:22:15.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:22:15.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:22:15.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:15.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:22:15.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.431668 -999.00  +13.60  15.60     50   +3.50 1 1 1 1 1   888    0 10.47 33.19 ----- 13.8 15.6 171.6 18.2 21.9 -26.6 20.5 -25.2 20.8 -25.8 22.1 -27.3
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.431668
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:22:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:21:59', tmtdew=10.97, humidity=47.47, cloud=0.0, wind=20.45, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:21:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:22:15.989 [DEBUG] [Thread-155695] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:16.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:22:16.071 [DEBUG] [Thread-155698] [transport.py] [_log()] starting thread (client mode): 0x2e38e6b0
2025-09-29T12:22:16.071 [DEBUG] [Thread-155698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:16.086 [DEBUG] [Thread-155698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:22:16.086 [INFO] [Thread-155698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:22:16.093 [DEBUG] [Thread-155698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:16.093 [DEBUG] [Thread-155698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:22:16.093 [DEBUG] [Thread-155698] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:16.093 [DEBUG] [Thread-155698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:16.093 [DEBUG] [Thread-155698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:16.093 [DEBUG] [Thread-155698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] Compression: none
2025-09-29T12:22:16.094 [DEBUG] [Thread-155698] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:16.151 [DEBUG] [Thread-155698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:16.151 [DEBUG] [Thread-155698] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:16.151 [DEBUG] [Thread-155698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:22:16.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:22:16.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:16.207 [DEBUG] [Thread-155698] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:16.207 [DEBUG] [Thread-155698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:16.207 [DEBUG] [Thread-155698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:16.208 [DEBUG] [Thread-155698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:22:16.208 [DEBUG] [Thread-155698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:16.221 [INFO] [Thread-155698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:16.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:22:16.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:17.192 [DEBUG] [Thread-155698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:17.192 [DEBUG] [Thread-155698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:17.240 [DEBUG] [Thread-155698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:17.240 [DEBUG] [Thread-155698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:17.249 [DEBUG] [Thread-155698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:17.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:17.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:22:17.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:22:17.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:17.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:17.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:17.281 [DEBUG] [Thread-155698] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:27.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:22:27.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:22:27.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:22:27.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 21, 59), 10.97, 47.47, 0.0, 20.45, 12.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:22:27.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:21:59
2025-09-29T12:22:27.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:22:28.115 [DEBUG] [Thread-155700] [transport.py] [_log()] starting thread (client mode): 0x2b91cd00
2025-09-29T12:22:28.115 [DEBUG] [Thread-155700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:28.135 [DEBUG] [Thread-155700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:22:28.136 [INFO] [Thread-155700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:28.139 [DEBUG] [Thread-155700] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:28.140 [DEBUG] [Thread-155700] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:28.140 [DEBUG] [Thread-155700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:28.140 [DEBUG] [Thread-155700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:28.140 [DEBUG] [Thread-155700] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:28.140 [DEBUG] [Thread-155700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:28.140 [DEBUG] [Thread-155700] [transport.py] [_log()] Compression: none
2025-09-29T12:22:28.140 [DEBUG] [Thread-155700] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:28.158 [DEBUG] [Thread-155700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:28.159 [DEBUG] [Thread-155700] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:28.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:22:28.159 [DEBUG] [Thread-155700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:22:28.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:28.161 [DEBUG] [Thread-155700] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:28.161 [DEBUG] [Thread-155700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:28.161 [DEBUG] [Thread-155700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:28.161 [DEBUG] [Thread-155700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:22:28.161 [DEBUG] [Thread-155700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:28.178 [INFO] [Thread-155700] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:28.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:28.937 [DEBUG] [Thread-155700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:28.937 [DEBUG] [Thread-155700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:28.938 [DEBUG] [Thread-155700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:22:28.978 [DEBUG] [Thread-155700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:28.978 [DEBUG] [Thread-155700] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:28.981 [DEBUG] [Thread-155700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:28.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:28.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:22:28.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:22:29.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:22:29.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:29.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:22:29.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:29.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:29.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:22:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.431668 -999.00  +13.60  15.60     50   +3.50 1 1 1 1 1   888    0 10.47 33.19 ----- 13.8 15.6 171.6 18.2 21.9 -26.6 20.5 -25.2 20.8 -25.8 22.1 -27.3
2025-09-29T12:22:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:22:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:22:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.431668
2025-09-29T12:22:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:22:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:22:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:22:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:22:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:22:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:21:59', tmtdew=10.97, humidity=47.47, cloud=0.0, wind=20.45, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:21:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:22:29.010 [DEBUG] [Thread-155700] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:29.049 [DEBUG] [Thread-155703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:22:29.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:22:29.104 [DEBUG] [Thread-155704] [transport.py] [_log()] starting thread (client mode): 0x2e38e7a0
2025-09-29T12:22:29.105 [DEBUG] [Thread-155704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:29.120 [DEBUG] [Thread-155704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:22:29.120 [INFO] [Thread-155704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:29.127 [DEBUG] [Thread-155704] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:29.128 [DEBUG] [Thread-155704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:29.128 [DEBUG] [Thread-155704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:29.128 [DEBUG] [Thread-155704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:29.128 [DEBUG] [Thread-155704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:29.128 [DEBUG] [Thread-155704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:29.128 [DEBUG] [Thread-155704] [transport.py] [_log()] Compression: none
2025-09-29T12:22:29.128 [DEBUG] [Thread-155704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:29.184 [DEBUG] [Thread-155704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:29.184 [DEBUG] [Thread-155704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:29.185 [DEBUG] [Thread-155704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:22:29.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:22:29.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:29.240 [DEBUG] [Thread-155704] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:29.240 [DEBUG] [Thread-155704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:29.240 [DEBUG] [Thread-155704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:29.240 [DEBUG] [Thread-155704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:22:29.240 [DEBUG] [Thread-155704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:29.260 [INFO] [Thread-155704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:29.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:22:29.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:30.243 [DEBUG] [Thread-155704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:30.243 [DEBUG] [Thread-155704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:30.291 [DEBUG] [Thread-155704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:30.292 [DEBUG] [Thread-155704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:30.301 [DEBUG] [Thread-155704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:30.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:30.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:22:30.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:22:30.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:30.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:30.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:30.340 [DEBUG] [Thread-155704] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:38.789 [DEBUG] [Thread-155706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:22:40.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:22:40.342 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:22:40.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:22:40.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 22, 31), 11.01, 47.35, 0.0, 13.99, 12.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:22:40.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:22:31
2025-09-29T12:22:41.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:22:41.166 [DEBUG] [Thread-155707] [transport.py] [_log()] starting thread (client mode): 0x2b955fc0
2025-09-29T12:22:41.166 [DEBUG] [Thread-155707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:41.185 [DEBUG] [Thread-155707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:22:41.185 [INFO] [Thread-155707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] Compression: none
2025-09-29T12:22:41.189 [DEBUG] [Thread-155707] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:41.207 [DEBUG] [Thread-155707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:41.207 [DEBUG] [Thread-155707] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:41.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:22:41.208 [DEBUG] [Thread-155707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:22:41.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:41.210 [DEBUG] [Thread-155707] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:41.210 [DEBUG] [Thread-155707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:41.210 [DEBUG] [Thread-155707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:41.210 [DEBUG] [Thread-155707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:22:41.210 [DEBUG] [Thread-155707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:41.228 [INFO] [Thread-155707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:41.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:42.018 [DEBUG] [Thread-155707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:42.019 [DEBUG] [Thread-155707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:42.019 [DEBUG] [Thread-155707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:22:42.059 [DEBUG] [Thread-155707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:42.060 [DEBUG] [Thread-155707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:42.062 [DEBUG] [Thread-155707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:42.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:42.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:22:42.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:22:42.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:22:42.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:42.077 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:22:42.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:42.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:42.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:22:42.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.431668 -999.00  +13.60  15.60     50   +3.50 1 1 1 1 1   888    0 10.47 33.19 ----- 13.8 15.6 171.6 18.2 21.9 -26.6 20.5 -25.2 20.8 -25.8 22.1 -27.3
2025-09-29T12:22:42.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:22:42.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:22:42.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.431668
2025-09-29T12:22:42.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:22:42.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:22:42.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:22:42.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:22:42.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:22:42.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:22:31', tmtdew=11.01, humidity=47.35, cloud=0.0, wind=13.99, temperature=12.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:21:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:22:42.080 [DEBUG] [Thread-155707] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:42.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:22:42.176 [DEBUG] [Thread-155710] [transport.py] [_log()] starting thread (client mode): 0x2b969960
2025-09-29T12:22:42.176 [DEBUG] [Thread-155710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:42.190 [DEBUG] [Thread-155710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:22:42.190 [INFO] [Thread-155710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:42.198 [DEBUG] [Thread-155710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] Compression: none
2025-09-29T12:22:42.199 [DEBUG] [Thread-155710] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:42.255 [DEBUG] [Thread-155710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:42.256 [DEBUG] [Thread-155710] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:42.256 [DEBUG] [Thread-155710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:22:42.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:22:42.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:42.313 [DEBUG] [Thread-155710] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:42.313 [DEBUG] [Thread-155710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:42.313 [DEBUG] [Thread-155710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:42.313 [DEBUG] [Thread-155710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:22:42.314 [DEBUG] [Thread-155710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:42.332 [INFO] [Thread-155710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:42.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:22:42.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:43.267 [DEBUG] [Thread-155710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:43.268 [DEBUG] [Thread-155710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:43.315 [DEBUG] [Thread-155710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:43.315 [DEBUG] [Thread-155710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:43.324 [DEBUG] [Thread-155710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:43.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:43.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:22:43.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:22:43.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:43.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:43.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:43.360 [DEBUG] [Thread-155710] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:44.084 [DEBUG] [Thread-155712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:22:46.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:22:46.471 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:22:53.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:22:53.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:22:53.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:22:53.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 22, 31), 11.01, 47.35, 0.0, 13.99, 12.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:22:53.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:22:31
2025-09-29T12:22:54.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:22:54.233 [DEBUG] [Thread-155713] [transport.py] [_log()] starting thread (client mode): 0x2b954910
2025-09-29T12:22:54.233 [DEBUG] [Thread-155713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:54.256 [DEBUG] [Thread-155713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:22:54.256 [INFO] [Thread-155713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:22:54.259 [DEBUG] [Thread-155713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] Compression: none
2025-09-29T12:22:54.260 [DEBUG] [Thread-155713] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:54.273 [DEBUG] [Thread-155713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:54.273 [DEBUG] [Thread-155713] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:54.273 [DEBUG] [Thread-155713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:22:54.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:22:54.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:54.274 [DEBUG] [Thread-155713] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:54.274 [DEBUG] [Thread-155713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:54.274 [DEBUG] [Thread-155713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:54.274 [DEBUG] [Thread-155713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:22:54.274 [DEBUG] [Thread-155713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:54.293 [INFO] [Thread-155713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:54.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:54.933 [DEBUG] [Thread-155713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:54.933 [DEBUG] [Thread-155713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:54.933 [DEBUG] [Thread-155713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:22:54.974 [DEBUG] [Thread-155713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:54.974 [DEBUG] [Thread-155713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:54.976 [DEBUG] [Thread-155713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:54.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:54.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:22:54.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:22:54.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:22:54.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:54.994 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:22:54.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:54.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:54.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:22:54.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.432362 -999.00  +13.70  12.07     50   +3.60 1 1 1 1 1   888    0 10.42 30.74 ----- 11.6 12.1 141.8 14.7 22.0 -25.7 20.6 -24.5 20.9 -24.7 22.2 -25.7
2025-09-29T12:22:54.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:22:54.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:22:54.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.432362
2025-09-29T12:22:54.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:22:54.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:22:54.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:22:54.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:22:54.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:22:54.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:22:31', tmtdew=11.01, humidity=47.35, cloud=0.0, wind=13.99, temperature=12.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:22:36.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:22:54.995 [DEBUG] [Thread-155713] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:55.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:22:55.079 [DEBUG] [Thread-155716] [transport.py] [_log()] starting thread (client mode): 0x2b91f940
2025-09-29T12:22:55.080 [DEBUG] [Thread-155716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:22:55.096 [DEBUG] [Thread-155716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:22:55.096 [INFO] [Thread-155716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:22:55.103 [DEBUG] [Thread-155716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:22:55.103 [DEBUG] [Thread-155716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:22:55.103 [DEBUG] [Thread-155716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:22:55.103 [DEBUG] [Thread-155716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] client lang: <none>
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] server lang: <none>
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] kex follows: False
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] Compression: none
2025-09-29T12:22:55.104 [DEBUG] [Thread-155716] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:22:55.162 [DEBUG] [Thread-155716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:22:55.162 [DEBUG] [Thread-155716] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:22:55.162 [DEBUG] [Thread-155716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:22:55.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:22:55.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:22:55.220 [DEBUG] [Thread-155716] [transport.py] [_log()] userauth is OK
2025-09-29T12:22:55.220 [DEBUG] [Thread-155716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:22:55.220 [DEBUG] [Thread-155716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:22:55.220 [DEBUG] [Thread-155716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:22:55.220 [DEBUG] [Thread-155716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:22:55.238 [INFO] [Thread-155716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:22:55.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:22:55.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:22:56.195 [DEBUG] [Thread-155716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:22:56.196 [DEBUG] [Thread-155716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:22:56.244 [DEBUG] [Thread-155716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:22:56.244 [DEBUG] [Thread-155716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:22:56.252 [DEBUG] [Thread-155716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:22:56.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:22:56.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:22:56.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:22:56.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:22:56.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:22:56.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:22:56.285 [DEBUG] [Thread-155716] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:22:59.129 [DEBUG] [Thread-155718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:23:06.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:23:06.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:23:06.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:23:06.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 23, 3), 10.97, 47.45, 0.0, 11.17, 12.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:23:06.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:23:03
2025-09-29T12:23:06.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:23:07.127 [DEBUG] [Thread-155719] [transport.py] [_log()] starting thread (client mode): 0x2b969c60
2025-09-29T12:23:07.127 [DEBUG] [Thread-155719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:07.147 [DEBUG] [Thread-155719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:23:07.147 [INFO] [Thread-155719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:23:07.150 [DEBUG] [Thread-155719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:07.150 [DEBUG] [Thread-155719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:23:07.150 [DEBUG] [Thread-155719] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:07.150 [DEBUG] [Thread-155719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:07.150 [DEBUG] [Thread-155719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:07.150 [DEBUG] [Thread-155719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:07.150 [DEBUG] [Thread-155719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:07.150 [DEBUG] [Thread-155719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] Compression: none
2025-09-29T12:23:07.151 [DEBUG] [Thread-155719] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:07.166 [DEBUG] [Thread-155719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:07.166 [DEBUG] [Thread-155719] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:07.167 [DEBUG] [Thread-155719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:23:07.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:23:07.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:07.168 [DEBUG] [Thread-155719] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:07.169 [DEBUG] [Thread-155719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:07.169 [DEBUG] [Thread-155719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:07.169 [DEBUG] [Thread-155719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:23:07.169 [DEBUG] [Thread-155719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:07.191 [INFO] [Thread-155719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:07.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:23:08.034 [DEBUG] [Thread-155719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:23:08.034 [DEBUG] [Thread-155719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:23:08.034 [DEBUG] [Thread-155719] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:23:08.075 [DEBUG] [Thread-155719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:23:08.076 [DEBUG] [Thread-155719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:23:08.078 [DEBUG] [Thread-155719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:23:08.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:23:08.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:23:08.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:23:08.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:23:08.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:23:08.101 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:23:08.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:23:08.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:23:08.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:23:08.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.432362 -999.00  +13.70  12.07     50   +3.60 1 1 1 1 1   888    0 10.42 30.74 ----- 11.6 12.1 141.8 14.7 22.0 -25.7 20.6 -24.5 20.9 -24.7 22.2 -25.7
2025-09-29T12:23:08.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:23:08.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:23:08.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.432362
2025-09-29T12:23:08.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:23:08.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:23:08.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:23:08.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:23:08.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:23:08.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:23:03', tmtdew=10.97, humidity=47.45, cloud=0.0, wind=11.17, temperature=12.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:22:36.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:23:08.103 [DEBUG] [Thread-155719] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:23:08.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:23:08.199 [DEBUG] [Thread-155722] [transport.py] [_log()] starting thread (client mode): 0x2e38f0a0
2025-09-29T12:23:08.199 [DEBUG] [Thread-155722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:08.215 [DEBUG] [Thread-155722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:23:08.215 [INFO] [Thread-155722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:23:08.222 [DEBUG] [Thread-155722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:08.222 [DEBUG] [Thread-155722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:23:08.222 [DEBUG] [Thread-155722] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:08.222 [DEBUG] [Thread-155722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:08.222 [DEBUG] [Thread-155722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:08.222 [DEBUG] [Thread-155722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] Compression: none
2025-09-29T12:23:08.223 [DEBUG] [Thread-155722] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:08.280 [DEBUG] [Thread-155722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:08.280 [DEBUG] [Thread-155722] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:08.281 [DEBUG] [Thread-155722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:23:08.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:23:08.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:08.336 [DEBUG] [Thread-155722] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:08.336 [DEBUG] [Thread-155722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:08.337 [DEBUG] [Thread-155722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:08.337 [DEBUG] [Thread-155722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:23:08.337 [DEBUG] [Thread-155722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:08.357 [INFO] [Thread-155722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:08.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:23:08.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:23:09.336 [DEBUG] [Thread-155722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:23:09.337 [DEBUG] [Thread-155722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:23:09.384 [DEBUG] [Thread-155722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:23:09.384 [DEBUG] [Thread-155722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:23:09.393 [DEBUG] [Thread-155722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:23:09.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:23:09.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:23:09.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:23:09.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:23:09.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:23:09.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:23:09.430 [DEBUG] [Thread-155722] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:23:14.179 [DEBUG] [Thread-155724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:23:19.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:23:19.432 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:23:19.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:23:20.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 23, 3), 10.97, 47.45, 0.0, 11.17, 12.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:23:20.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:23:03
2025-09-29T12:23:20.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:23:20.262 [DEBUG] [Thread-155725] [transport.py] [_log()] starting thread (client mode): 0x2b9540d0
2025-09-29T12:23:20.262 [DEBUG] [Thread-155725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:20.282 [DEBUG] [Thread-155725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:23:20.282 [INFO] [Thread-155725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:23:20.285 [DEBUG] [Thread-155725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:20.285 [DEBUG] [Thread-155725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:23:20.285 [DEBUG] [Thread-155725] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] Compression: none
2025-09-29T12:23:20.286 [DEBUG] [Thread-155725] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:20.305 [DEBUG] [Thread-155725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:20.305 [DEBUG] [Thread-155725] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:20.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:23:20.306 [DEBUG] [Thread-155725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:23:20.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:20.308 [DEBUG] [Thread-155725] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:20.308 [DEBUG] [Thread-155725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:20.308 [DEBUG] [Thread-155725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:20.308 [DEBUG] [Thread-155725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:23:20.308 [DEBUG] [Thread-155725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:20.340 [INFO] [Thread-155725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:20.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:23:21.018 [DEBUG] [Thread-155725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:23:21.019 [DEBUG] [Thread-155725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:23:21.019 [DEBUG] [Thread-155725] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:23:21.059 [DEBUG] [Thread-155725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:23:21.059 [DEBUG] [Thread-155725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:23:21.062 [DEBUG] [Thread-155725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:23:21.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:23:21.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:23:21.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:23:21.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:23:21.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:23:21.085 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:23:21.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:23:21.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:23:21.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:23:21.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.432709 -999.00  +13.80  14.04     50   +3.80 1 1 1 1 1   888    0 10.51 32.18 ----- 17.2 14.0 170.6 17.6 22.1 -26.0 20.7 -24.7 21.0 -24.6 22.3 -26.5
2025-09-29T12:23:21.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:23:21.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:23:21.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.432709
2025-09-29T12:23:21.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:23:21.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:23:21.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:23:21.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:23:21.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:23:21.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:23:03', tmtdew=10.97, humidity=47.45, cloud=0.0, wind=11.17, temperature=12.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:23:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:23:21.087 [DEBUG] [Thread-155725] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:23:21.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:23:21.181 [DEBUG] [Thread-155728] [transport.py] [_log()] starting thread (client mode): 0x2e3c1a20
2025-09-29T12:23:21.181 [DEBUG] [Thread-155728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:21.196 [DEBUG] [Thread-155728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:23:21.196 [INFO] [Thread-155728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:23:21.203 [DEBUG] [Thread-155728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:21.203 [DEBUG] [Thread-155728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:23:21.203 [DEBUG] [Thread-155728] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:21.203 [DEBUG] [Thread-155728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] Compression: none
2025-09-29T12:23:21.204 [DEBUG] [Thread-155728] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:21.259 [DEBUG] [Thread-155728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:21.260 [DEBUG] [Thread-155728] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:21.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:23:21.261 [DEBUG] [Thread-155728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:23:21.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:21.316 [DEBUG] [Thread-155728] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:21.316 [DEBUG] [Thread-155728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:21.316 [DEBUG] [Thread-155728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:21.316 [DEBUG] [Thread-155728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:23:21.317 [DEBUG] [Thread-155728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:21.336 [INFO] [Thread-155728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:21.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:23:21.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:23:22.266 [DEBUG] [Thread-155728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:23:22.266 [DEBUG] [Thread-155728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:23:22.314 [DEBUG] [Thread-155728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:23:22.314 [DEBUG] [Thread-155728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:23:22.322 [DEBUG] [Thread-155728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:23:22.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:23:22.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:23:22.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:23:22.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:23:22.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:23:22.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:23:22.353 [DEBUG] [Thread-155728] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:23:29.224 [DEBUG] [Thread-155730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:23:32.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:23:32.346 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:23:32.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:23:32.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 23, 3), 10.97, 47.45, 0.0, 11.17, 12.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:23:32.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:23:03
2025-09-29T12:23:33.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:23:33.187 [DEBUG] [Thread-155731] [transport.py] [_log()] starting thread (client mode): 0x2e34a740
2025-09-29T12:23:33.187 [DEBUG] [Thread-155731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:33.208 [DEBUG] [Thread-155731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:23:33.208 [INFO] [Thread-155731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] Compression: none
2025-09-29T12:23:33.212 [DEBUG] [Thread-155731] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:33.228 [DEBUG] [Thread-155731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:33.228 [DEBUG] [Thread-155731] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:33.228 [DEBUG] [Thread-155731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:23:33.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:23:33.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:33.229 [DEBUG] [Thread-155731] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:33.229 [DEBUG] [Thread-155731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:33.229 [DEBUG] [Thread-155731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:33.229 [DEBUG] [Thread-155731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:23:33.229 [DEBUG] [Thread-155731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:33.256 [INFO] [Thread-155731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:33.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:23:34.114 [DEBUG] [Thread-155731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:23:34.114 [DEBUG] [Thread-155731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:23:34.114 [DEBUG] [Thread-155731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:23:34.155 [DEBUG] [Thread-155731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:23:34.155 [DEBUG] [Thread-155731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:23:34.157 [DEBUG] [Thread-155731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:23:34.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:23:34.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:23:34.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:23:34.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:23:34.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:23:34.176 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:23:34.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:23:34.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:23:34.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:23:34.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.432709 -999.00  +13.80  14.04     50   +3.80 1 1 1 1 1   888    0 10.51 32.18 ----- 17.2 14.0 170.6 17.6 22.1 -26.0 20.7 -24.7 21.0 -24.6 22.3 -26.5
2025-09-29T12:23:34.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:23:34.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:23:34.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.432709
2025-09-29T12:23:34.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:23:34.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:23:34.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:23:34.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:23:34.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:23:34.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:23:03', tmtdew=10.97, humidity=47.45, cloud=0.0, wind=11.17, temperature=12.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:23:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:23:34.177 [DEBUG] [Thread-155731] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:23:34.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:23:34.260 [DEBUG] [Thread-155734] [transport.py] [_log()] starting thread (client mode): 0x2b91e9b0
2025-09-29T12:23:34.260 [DEBUG] [Thread-155734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:34.276 [DEBUG] [Thread-155734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:23:34.277 [INFO] [Thread-155734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:34.284 [DEBUG] [Thread-155734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:34.285 [DEBUG] [Thread-155734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:34.285 [DEBUG] [Thread-155734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:34.285 [DEBUG] [Thread-155734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:34.285 [DEBUG] [Thread-155734] [transport.py] [_log()] Compression: none
2025-09-29T12:23:34.285 [DEBUG] [Thread-155734] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:34.342 [DEBUG] [Thread-155734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:34.342 [DEBUG] [Thread-155734] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:34.342 [DEBUG] [Thread-155734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:23:34.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:23:34.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:34.400 [DEBUG] [Thread-155734] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:34.400 [DEBUG] [Thread-155734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:34.400 [DEBUG] [Thread-155734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:34.400 [DEBUG] [Thread-155734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:23:34.400 [DEBUG] [Thread-155734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:34.413 [INFO] [Thread-155734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:34.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:23:34.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:23:35.366 [DEBUG] [Thread-155734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:23:35.367 [DEBUG] [Thread-155734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:23:35.415 [DEBUG] [Thread-155734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:23:35.415 [DEBUG] [Thread-155734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:23:35.423 [DEBUG] [Thread-155734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:23:35.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:23:35.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:23:35.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:23:35.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:23:35.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:23:35.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:23:35.454 [DEBUG] [Thread-155734] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:23:38.848 [DEBUG] [Thread-155736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:23:44.265 [DEBUG] [Thread-155737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:23:45.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:23:45.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:23:45.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:23:46.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 23, 35), 11.05, 47.14, 0.0, 24.45, 13.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:23:46.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:23:35
2025-09-29T12:23:46.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:23:46.291 [DEBUG] [Thread-155738] [transport.py] [_log()] starting thread (client mode): 0x2e34b820
2025-09-29T12:23:46.292 [DEBUG] [Thread-155738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:46.313 [DEBUG] [Thread-155738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:23:46.313 [INFO] [Thread-155738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:23:46.316 [DEBUG] [Thread-155738] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:46.316 [DEBUG] [Thread-155738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] Compression: none
2025-09-29T12:23:46.317 [DEBUG] [Thread-155738] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:46.334 [DEBUG] [Thread-155738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:46.334 [DEBUG] [Thread-155738] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:46.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:23:46.335 [DEBUG] [Thread-155738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:23:46.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:46.337 [DEBUG] [Thread-155738] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:46.337 [DEBUG] [Thread-155738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:46.337 [DEBUG] [Thread-155738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:46.337 [DEBUG] [Thread-155738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:23:46.337 [DEBUG] [Thread-155738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:46.360 [INFO] [Thread-155738] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:46.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:23:46.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:23:46.613 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:23:47.192 [DEBUG] [Thread-155738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:23:47.192 [DEBUG] [Thread-155738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:23:47.192 [DEBUG] [Thread-155738] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:23:47.232 [DEBUG] [Thread-155738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:23:47.233 [DEBUG] [Thread-155738] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:23:47.236 [DEBUG] [Thread-155738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:23:47.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:23:47.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:23:47.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:23:47.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:23:47.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:23:47.260 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:23:47.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:23:47.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:23:47.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:23:47.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.432709 -999.00  +13.80  14.04     50   +3.80 1 1 1 1 1   888    0 10.51 32.18 ----- 17.2 14.0 170.6 17.6 22.1 -26.0 20.7 -24.7 21.0 -24.6 22.3 -26.5
2025-09-29T12:23:47.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:23:47.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:23:47.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.432709
2025-09-29T12:23:47.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:23:47.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:23:47.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:23:47.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:23:47.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:23:47.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:23:35', tmtdew=11.05, humidity=47.14, cloud=0.0, wind=24.45, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:23:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:23:47.263 [DEBUG] [Thread-155738] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:23:47.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:23:47.359 [DEBUG] [Thread-155741] [transport.py] [_log()] starting thread (client mode): 0x2b96d600
2025-09-29T12:23:47.359 [DEBUG] [Thread-155741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:47.374 [DEBUG] [Thread-155741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:23:47.374 [INFO] [Thread-155741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] Compression: none
2025-09-29T12:23:47.383 [DEBUG] [Thread-155741] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:47.440 [DEBUG] [Thread-155741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:47.440 [DEBUG] [Thread-155741] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:47.441 [DEBUG] [Thread-155741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:23:47.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:23:47.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:47.496 [DEBUG] [Thread-155741] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:47.496 [DEBUG] [Thread-155741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:47.496 [DEBUG] [Thread-155741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:47.496 [DEBUG] [Thread-155741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:23:47.496 [DEBUG] [Thread-155741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:47.514 [INFO] [Thread-155741] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:47.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:23:47.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:23:48.465 [DEBUG] [Thread-155741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:23:48.465 [DEBUG] [Thread-155741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:23:48.516 [DEBUG] [Thread-155741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:23:48.516 [DEBUG] [Thread-155741] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:23:48.525 [DEBUG] [Thread-155741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:23:48.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:23:48.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:23:48.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:23:48.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:23:48.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:23:48.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:23:48.561 [DEBUG] [Thread-155741] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:23:58.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:23:58.564 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:23:58.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:23:59.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 23, 35), 11.05, 47.14, 0.0, 24.45, 13.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:23:59.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:23:35
2025-09-29T12:23:59.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:23:59.290 [DEBUG] [Thread-155743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:23:59.400 [DEBUG] [Thread-155744] [transport.py] [_log()] starting thread (client mode): 0x2b954910
2025-09-29T12:23:59.401 [DEBUG] [Thread-155744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:23:59.421 [DEBUG] [Thread-155744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:23:59.421 [INFO] [Thread-155744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:23:59.425 [DEBUG] [Thread-155744] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:23:59.425 [DEBUG] [Thread-155744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:23:59.425 [DEBUG] [Thread-155744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:23:59.425 [DEBUG] [Thread-155744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:59.425 [DEBUG] [Thread-155744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:23:59.425 [DEBUG] [Thread-155744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:59.425 [DEBUG] [Thread-155744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:23:59.425 [DEBUG] [Thread-155744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] client lang: <none>
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] server lang: <none>
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] kex follows: False
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] Compression: none
2025-09-29T12:23:59.426 [DEBUG] [Thread-155744] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:23:59.443 [DEBUG] [Thread-155744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:23:59.443 [DEBUG] [Thread-155744] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:23:59.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:23:59.444 [DEBUG] [Thread-155744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:23:59.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:23:59.446 [DEBUG] [Thread-155744] [transport.py] [_log()] userauth is OK
2025-09-29T12:23:59.446 [DEBUG] [Thread-155744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:23:59.446 [DEBUG] [Thread-155744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:23:59.447 [DEBUG] [Thread-155744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:23:59.447 [DEBUG] [Thread-155744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:23:59.470 [INFO] [Thread-155744] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:23:59.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:00.108 [DEBUG] [Thread-155744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:00.108 [DEBUG] [Thread-155744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:00.109 [DEBUG] [Thread-155744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:24:00.150 [DEBUG] [Thread-155744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:00.151 [DEBUG] [Thread-155744] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:00.154 [DEBUG] [Thread-155744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:00.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:00.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:24:00.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:24:00.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:24:00.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:00.178 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:24:00.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:00.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:00.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:24:00.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.433057 -999.00  +13.80  19.12     49   +3.50 1 1 1 1 1   888    0 10.47 32.84 ----- 19.9 19.1 139.7 30.6 21.9 -27.1 20.7 -27.0 20.9 -26.4 22.3 -28.2
2025-09-29T12:24:00.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:24:00.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:24:00.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.433057
2025-09-29T12:24:00.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:24:00.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:24:00.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:24:00.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:24:00.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:24:00.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:23:35', tmtdew=11.05, humidity=47.14, cloud=0.0, wind=24.45, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:23:36.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:24:00.181 [DEBUG] [Thread-155744] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:00.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:24:00.275 [DEBUG] [Thread-155747] [transport.py] [_log()] starting thread (client mode): 0x2e348460
2025-09-29T12:24:00.275 [DEBUG] [Thread-155747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:00.290 [DEBUG] [Thread-155747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:24:00.291 [INFO] [Thread-155747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:24:00.298 [DEBUG] [Thread-155747] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:00.298 [DEBUG] [Thread-155747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:00.299 [DEBUG] [Thread-155747] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:00.300 [DEBUG] [Thread-155747] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:00.300 [DEBUG] [Thread-155747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:00.300 [DEBUG] [Thread-155747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:00.300 [DEBUG] [Thread-155747] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:00.300 [DEBUG] [Thread-155747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:00.300 [DEBUG] [Thread-155747] [transport.py] [_log()] Compression: none
2025-09-29T12:24:00.300 [DEBUG] [Thread-155747] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:00.356 [DEBUG] [Thread-155747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:00.357 [DEBUG] [Thread-155747] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:00.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:24:00.358 [DEBUG] [Thread-155747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:24:00.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:00.412 [DEBUG] [Thread-155747] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:00.412 [DEBUG] [Thread-155747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:00.412 [DEBUG] [Thread-155747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:00.413 [DEBUG] [Thread-155747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:24:00.413 [DEBUG] [Thread-155747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:00.447 [INFO] [Thread-155747] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:00.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:24:00.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:01.396 [DEBUG] [Thread-155747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:01.397 [DEBUG] [Thread-155747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:01.444 [DEBUG] [Thread-155747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:01.444 [DEBUG] [Thread-155747] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:01.453 [DEBUG] [Thread-155747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:01.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:01.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:24:01.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:24:01.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:01.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:01.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:01.488 [DEBUG] [Thread-155747] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:11.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:24:11.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:24:11.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:24:12.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 24, 7), 11.04, 47.22, 0.0, 22.02, 13.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:24:12.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:24:07
2025-09-29T12:24:12.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:24:12.339 [DEBUG] [Thread-155749] [transport.py] [_log()] starting thread (client mode): 0x2e3c0c70
2025-09-29T12:24:12.339 [DEBUG] [Thread-155749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:12.358 [DEBUG] [Thread-155749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:24:12.358 [INFO] [Thread-155749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] Compression: none
2025-09-29T12:24:12.360 [DEBUG] [Thread-155749] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:12.371 [DEBUG] [Thread-155749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:12.371 [DEBUG] [Thread-155749] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:12.372 [DEBUG] [Thread-155749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:24:12.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:24:12.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:12.372 [DEBUG] [Thread-155749] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:12.372 [DEBUG] [Thread-155749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:12.372 [DEBUG] [Thread-155749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:12.372 [DEBUG] [Thread-155749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:24:12.372 [DEBUG] [Thread-155749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:12.391 [INFO] [Thread-155749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:12.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:13.200 [DEBUG] [Thread-155749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:13.200 [DEBUG] [Thread-155749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:13.200 [DEBUG] [Thread-155749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:24:13.241 [DEBUG] [Thread-155749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:13.241 [DEBUG] [Thread-155749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:13.243 [DEBUG] [Thread-155749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:13.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:13.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:24:13.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:24:13.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:24:13.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:13.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:24:13.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.433057 -999.00  +13.80  19.12     49   +3.50 1 1 1 1 1   888    0 10.47 32.84 ----- 19.9 19.1 139.7 30.6 21.9 -27.1 20.7 -27.0 20.9 -26.4 22.3 -28.2
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.433057
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:24:13.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:24:07', tmtdew=11.04, humidity=47.22, cloud=0.0, wind=22.02, temperature=13.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:23:36.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:24:13.262 [DEBUG] [Thread-155749] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:13.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:24:13.346 [DEBUG] [Thread-155752] [transport.py] [_log()] starting thread (client mode): 0x2e34b610
2025-09-29T12:24:13.346 [DEBUG] [Thread-155752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:13.360 [DEBUG] [Thread-155752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:24:13.360 [INFO] [Thread-155752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:24:13.367 [DEBUG] [Thread-155752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:13.367 [DEBUG] [Thread-155752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:24:13.367 [DEBUG] [Thread-155752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:13.367 [DEBUG] [Thread-155752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] Compression: none
2025-09-29T12:24:13.368 [DEBUG] [Thread-155752] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:13.422 [DEBUG] [Thread-155752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:13.422 [DEBUG] [Thread-155752] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:13.423 [DEBUG] [Thread-155752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:24:13.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:24:13.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:13.480 [DEBUG] [Thread-155752] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:13.480 [DEBUG] [Thread-155752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:13.480 [DEBUG] [Thread-155752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:13.480 [DEBUG] [Thread-155752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:24:13.480 [DEBUG] [Thread-155752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:13.494 [INFO] [Thread-155752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:13.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:24:13.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:14.329 [DEBUG] [Thread-155754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:24:14.449 [DEBUG] [Thread-155752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:14.450 [DEBUG] [Thread-155752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:14.497 [DEBUG] [Thread-155752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:14.497 [DEBUG] [Thread-155752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:14.506 [DEBUG] [Thread-155752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:14.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:14.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:24:14.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:24:14.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:14.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:14.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:14.541 [DEBUG] [Thread-155752] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:24.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:24:24.544 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:24:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:24:25.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 24, 7), 11.04, 47.22, 0.0, 22.02, 13.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:24:25.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:24:07
2025-09-29T12:24:25.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:24:25.384 [DEBUG] [Thread-155755] [transport.py] [_log()] starting thread (client mode): 0x2e3c2350
2025-09-29T12:24:25.384 [DEBUG] [Thread-155755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:25.404 [DEBUG] [Thread-155755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:24:25.404 [INFO] [Thread-155755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] Compression: none
2025-09-29T12:24:25.408 [DEBUG] [Thread-155755] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:25.424 [DEBUG] [Thread-155755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:25.424 [DEBUG] [Thread-155755] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:25.425 [DEBUG] [Thread-155755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:24:25.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:24:25.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:25.427 [DEBUG] [Thread-155755] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:25.427 [DEBUG] [Thread-155755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:25.427 [DEBUG] [Thread-155755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:25.427 [DEBUG] [Thread-155755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:24:25.427 [DEBUG] [Thread-155755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:25.441 [INFO] [Thread-155755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:25.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:26.106 [DEBUG] [Thread-155755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:26.106 [DEBUG] [Thread-155755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:26.106 [DEBUG] [Thread-155755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:24:26.147 [DEBUG] [Thread-155755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:26.147 [DEBUG] [Thread-155755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:26.150 [DEBUG] [Thread-155755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:26.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:26.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:24:26.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:24:26.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:24:26.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:26.172 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:24:26.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:26.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:24:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.433404 -999.00  +13.70  19.25     49   +3.30 1 1 1 1 1   888    0 10.80 33.69 ----- 14.8 19.2 140.0 24.8 21.8 -26.1 20.6 -27.7 20.7 -27.1 22.1 -28.3
2025-09-29T12:24:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:24:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:24:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.433404
2025-09-29T12:24:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:24:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:24:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:24:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:24:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:24:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:24:07', tmtdew=11.04, humidity=47.22, cloud=0.0, wind=22.02, temperature=13.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:24:06.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:24:26.175 [DEBUG] [Thread-155755] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:26.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:24:26.270 [DEBUG] [Thread-155758] [transport.py] [_log()] starting thread (client mode): 0x2b96dff0
2025-09-29T12:24:26.270 [DEBUG] [Thread-155758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:26.286 [DEBUG] [Thread-155758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:24:26.286 [INFO] [Thread-155758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:26.294 [DEBUG] [Thread-155758] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:26.295 [DEBUG] [Thread-155758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:26.295 [DEBUG] [Thread-155758] [transport.py] [_log()] Compression: none
2025-09-29T12:24:26.295 [DEBUG] [Thread-155758] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:26.351 [DEBUG] [Thread-155758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:26.351 [DEBUG] [Thread-155758] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:26.352 [DEBUG] [Thread-155758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:24:26.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:24:26.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:26.408 [DEBUG] [Thread-155758] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:26.408 [DEBUG] [Thread-155758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:26.408 [DEBUG] [Thread-155758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:26.408 [DEBUG] [Thread-155758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:24:26.409 [DEBUG] [Thread-155758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:26.428 [INFO] [Thread-155758] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:26.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:24:26.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:27.409 [DEBUG] [Thread-155758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:27.409 [DEBUG] [Thread-155758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:27.457 [DEBUG] [Thread-155758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:27.457 [DEBUG] [Thread-155758] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:27.466 [DEBUG] [Thread-155758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:27.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:27.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:24:27.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:24:27.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:27.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:27.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:27.500 [DEBUG] [Thread-155758] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:29.377 [DEBUG] [Thread-155760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:24:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:24:37.503 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:24:37.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:24:38.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 24, 7), 11.04, 47.22, 0.0, 22.02, 13.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:24:38.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:24:07
2025-09-29T12:24:38.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:24:38.346 [DEBUG] [Thread-155761] [transport.py] [_log()] starting thread (client mode): 0x2b96f100
2025-09-29T12:24:38.346 [DEBUG] [Thread-155761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:38.366 [DEBUG] [Thread-155761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:24:38.366 [INFO] [Thread-155761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] Compression: none
2025-09-29T12:24:38.371 [DEBUG] [Thread-155761] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:38.391 [DEBUG] [Thread-155761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:38.391 [DEBUG] [Thread-155761] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:38.392 [DEBUG] [Thread-155761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:24:38.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:24:38.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:38.394 [DEBUG] [Thread-155761] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:38.394 [DEBUG] [Thread-155761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:38.394 [DEBUG] [Thread-155761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:38.394 [DEBUG] [Thread-155761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:24:38.394 [DEBUG] [Thread-155761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:38.429 [INFO] [Thread-155761] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:38.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:38.904 [DEBUG] [Thread-155763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:24:39.216 [DEBUG] [Thread-155761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:39.216 [DEBUG] [Thread-155761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:39.217 [DEBUG] [Thread-155761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:24:39.257 [DEBUG] [Thread-155761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:39.258 [DEBUG] [Thread-155761] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:39.260 [DEBUG] [Thread-155761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:39.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:39.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:24:39.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:24:39.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:24:39.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:39.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:24:39.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:39.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:39.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:24:39.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.433404 -999.00  +13.70  19.25     49   +3.30 1 1 1 1 1   888    0 10.80 33.69 ----- 14.8 19.2 140.0 24.8 21.8 -26.1 20.6 -27.7 20.7 -27.1 22.1 -28.3
2025-09-29T12:24:39.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:24:39.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:24:39.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.433404
2025-09-29T12:24:39.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:24:39.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:24:39.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:24:39.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:24:39.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:24:39.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:24:07', tmtdew=11.04, humidity=47.22, cloud=0.0, wind=22.02, temperature=13.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:24:06.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:24:39.287 [DEBUG] [Thread-155761] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:39.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:24:39.384 [DEBUG] [Thread-155765] [transport.py] [_log()] starting thread (client mode): 0x2b9c11b0
2025-09-29T12:24:39.385 [DEBUG] [Thread-155765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:39.400 [DEBUG] [Thread-155765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:24:39.400 [INFO] [Thread-155765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:24:39.407 [DEBUG] [Thread-155765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:39.408 [DEBUG] [Thread-155765] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] Compression: none
2025-09-29T12:24:39.409 [DEBUG] [Thread-155765] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:39.464 [DEBUG] [Thread-155765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:39.464 [DEBUG] [Thread-155765] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:39.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:24:39.465 [DEBUG] [Thread-155765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:24:39.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:39.520 [DEBUG] [Thread-155765] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:39.520 [DEBUG] [Thread-155765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:39.520 [DEBUG] [Thread-155765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:39.520 [DEBUG] [Thread-155765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:24:39.520 [DEBUG] [Thread-155765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:39.540 [INFO] [Thread-155765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:39.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:24:39.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:40.468 [DEBUG] [Thread-155765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:40.468 [DEBUG] [Thread-155765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:40.516 [DEBUG] [Thread-155765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:40.516 [DEBUG] [Thread-155765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:40.524 [DEBUG] [Thread-155765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:40.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:40.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:24:40.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:24:40.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:40.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:40.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:40.555 [DEBUG] [Thread-155765] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:44.421 [DEBUG] [Thread-155767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:24:46.753 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:24:46.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:24:50.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:24:50.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:24:50.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:24:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 24, 39), 11.31, 46.06, 0.0, 23.68, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:24:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:24:39
2025-09-29T12:24:51.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:24:51.417 [DEBUG] [Thread-155768] [transport.py] [_log()] starting thread (client mode): 0x2b957ca0
2025-09-29T12:24:51.417 [DEBUG] [Thread-155768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:51.439 [DEBUG] [Thread-155768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:24:51.439 [INFO] [Thread-155768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] Compression: none
2025-09-29T12:24:51.443 [DEBUG] [Thread-155768] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:51.458 [DEBUG] [Thread-155768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:51.458 [DEBUG] [Thread-155768] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:51.458 [DEBUG] [Thread-155768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:24:51.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:24:51.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:51.458 [DEBUG] [Thread-155768] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:51.458 [DEBUG] [Thread-155768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:51.459 [DEBUG] [Thread-155768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:51.459 [DEBUG] [Thread-155768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:24:51.459 [DEBUG] [Thread-155768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:51.467 [INFO] [Thread-155768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:51.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:52.274 [DEBUG] [Thread-155768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:52.274 [DEBUG] [Thread-155768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:52.274 [DEBUG] [Thread-155768] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:24:52.315 [DEBUG] [Thread-155768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:52.315 [DEBUG] [Thread-155768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:52.317 [DEBUG] [Thread-155768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:52.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:52.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:24:52.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:24:52.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:24:52.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:52.339 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:24:52.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:52.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:52.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:24:52.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.433404 -999.00  +13.70  19.25     49   +3.30 1 1 1 1 1   888    0 10.80 33.69 ----- 14.8 19.2 140.0 24.8 21.8 -26.1 20.6 -27.7 20.7 -27.1 22.1 -28.3
2025-09-29T12:24:52.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:24:52.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:24:52.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.433404
2025-09-29T12:24:52.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:24:52.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:24:52.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:24:52.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:24:52.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:24:52.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:24:39', tmtdew=11.31, humidity=46.06, cloud=0.0, wind=23.68, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:24:06.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:24:52.342 [DEBUG] [Thread-155768] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:52.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:24:52.439 [DEBUG] [Thread-155771] [transport.py] [_log()] starting thread (client mode): 0x2b956f80
2025-09-29T12:24:52.439 [DEBUG] [Thread-155771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:24:52.455 [DEBUG] [Thread-155771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:24:52.455 [INFO] [Thread-155771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] client lang: <none>
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] server lang: <none>
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] kex follows: False
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:24:52.465 [DEBUG] [Thread-155771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:24:52.466 [DEBUG] [Thread-155771] [transport.py] [_log()] Compression: none
2025-09-29T12:24:52.466 [DEBUG] [Thread-155771] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:24:52.523 [DEBUG] [Thread-155771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:24:52.524 [DEBUG] [Thread-155771] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:24:52.524 [DEBUG] [Thread-155771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:24:52.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:24:52.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:24:52.580 [DEBUG] [Thread-155771] [transport.py] [_log()] userauth is OK
2025-09-29T12:24:52.580 [DEBUG] [Thread-155771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:24:52.580 [DEBUG] [Thread-155771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:24:52.580 [DEBUG] [Thread-155771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:24:52.581 [DEBUG] [Thread-155771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:24:52.599 [INFO] [Thread-155771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:24:52.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:24:52.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:24:53.663 [DEBUG] [Thread-155771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:24:53.663 [DEBUG] [Thread-155771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:24:53.710 [DEBUG] [Thread-155771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:24:53.710 [DEBUG] [Thread-155771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:24:53.719 [DEBUG] [Thread-155771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:24:53.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:24:53.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:24:53.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:24:53.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:24:53.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:24:53.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:24:53.754 [DEBUG] [Thread-155771] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:24:59.449 [DEBUG] [Thread-155773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:25:03.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:25:03.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:25:03.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:25:04.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 24, 39), 11.31, 46.06, 0.0, 23.68, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:25:04.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:24:39
2025-09-29T12:25:04.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:25:04.608 [DEBUG] [Thread-155774] [transport.py] [_log()] starting thread (client mode): 0x2b9562c0
2025-09-29T12:25:04.608 [DEBUG] [Thread-155774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:25:04.629 [DEBUG] [Thread-155774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:25:04.629 [INFO] [Thread-155774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] client lang: <none>
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] server lang: <none>
2025-09-29T12:25:04.632 [DEBUG] [Thread-155774] [transport.py] [_log()] kex follows: False
2025-09-29T12:25:04.633 [DEBUG] [Thread-155774] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:25:04.633 [DEBUG] [Thread-155774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:25:04.633 [DEBUG] [Thread-155774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:25:04.633 [DEBUG] [Thread-155774] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:25:04.633 [DEBUG] [Thread-155774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:25:04.633 [DEBUG] [Thread-155774] [transport.py] [_log()] Compression: none
2025-09-29T12:25:04.633 [DEBUG] [Thread-155774] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:25:04.649 [DEBUG] [Thread-155774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:25:04.649 [DEBUG] [Thread-155774] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:25:04.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:25:04.650 [DEBUG] [Thread-155774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:25:04.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:25:04.652 [DEBUG] [Thread-155774] [transport.py] [_log()] userauth is OK
2025-09-29T12:25:04.652 [DEBUG] [Thread-155774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:25:04.652 [DEBUG] [Thread-155774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:25:04.653 [DEBUG] [Thread-155774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:25:04.653 [DEBUG] [Thread-155774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:25:04.677 [INFO] [Thread-155774] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:25:04.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:25:12.690 [DEBUG] [Thread-155774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:25:12.690 [DEBUG] [Thread-155774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:25:12.690 [DEBUG] [Thread-155774] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:25:12.731 [DEBUG] [Thread-155774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:25:12.731 [DEBUG] [Thread-155774] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:25:12.734 [DEBUG] [Thread-155774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:25:12.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:25:12.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:25:12.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:25:12.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:25:12.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:25:12.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:25:12.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:25:12.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:25:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:25:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.433751 -999.00  +13.80  13.29     49   +3.50 1 1 1 1 1   888    0 10.56 32.41 ----- 24.3 13.3 133.7 23.3 21.8 -26.0 20.6 -26.0 20.9 -25.4 22.1 -26.2
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.433751
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:25:12.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:24:39', tmtdew=11.31, humidity=46.06, cloud=0.0, wind=23.68, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:24:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:25:12.887 [DEBUG] [Thread-155774] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:25:12.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:25:12.974 [DEBUG] [Thread-155777] [transport.py] [_log()] starting thread (client mode): 0x2e349f30
2025-09-29T12:25:12.974 [DEBUG] [Thread-155777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:25:12.989 [DEBUG] [Thread-155777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:25:12.989 [INFO] [Thread-155777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] client lang: <none>
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] server lang: <none>
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] kex follows: False
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:25:12.996 [DEBUG] [Thread-155777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:25:12.997 [DEBUG] [Thread-155777] [transport.py] [_log()] Compression: none
2025-09-29T12:25:12.997 [DEBUG] [Thread-155777] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:25:13.054 [DEBUG] [Thread-155777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:25:13.054 [DEBUG] [Thread-155777] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:25:13.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:25:13.054 [DEBUG] [Thread-155777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:25:13.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:25:13.111 [DEBUG] [Thread-155777] [transport.py] [_log()] userauth is OK
2025-09-29T12:25:13.111 [DEBUG] [Thread-155777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:25:13.111 [DEBUG] [Thread-155777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:25:13.111 [DEBUG] [Thread-155777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:25:13.111 [DEBUG] [Thread-155777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:25:13.125 [INFO] [Thread-155777] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:25:13.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:25:13.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:25:14.072 [DEBUG] [Thread-155777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:25:14.072 [DEBUG] [Thread-155777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:25:14.119 [DEBUG] [Thread-155777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:25:14.119 [DEBUG] [Thread-155777] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:25:14.128 [DEBUG] [Thread-155777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:25:14.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:25:14.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:25:14.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:25:14.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:25:14.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:25:14.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:25:14.162 [DEBUG] [Thread-155777] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:25:14.493 [DEBUG] [Thread-155779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:25:24.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:25:24.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:25:24.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:25:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 25, 11), 11.52, 45.48, 0.0, 22.78, 13.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:25:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:25:11
2025-09-29T12:25:24.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:25:25.008 [DEBUG] [Thread-155780] [transport.py] [_log()] starting thread (client mode): 0x2b9c2e90
2025-09-29T12:25:25.008 [DEBUG] [Thread-155780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:25:25.029 [DEBUG] [Thread-155780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:25:25.029 [INFO] [Thread-155780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:25:25.032 [DEBUG] [Thread-155780] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:25:25.032 [DEBUG] [Thread-155780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:25:25.032 [DEBUG] [Thread-155780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] client lang: <none>
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] server lang: <none>
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] kex follows: False
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] Compression: none
2025-09-29T12:25:25.033 [DEBUG] [Thread-155780] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:25:25.046 [DEBUG] [Thread-155780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:25:25.047 [DEBUG] [Thread-155780] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:25:25.047 [DEBUG] [Thread-155780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:25:25.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:25:25.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:25:25.048 [DEBUG] [Thread-155780] [transport.py] [_log()] userauth is OK
2025-09-29T12:25:25.048 [DEBUG] [Thread-155780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:25:25.048 [DEBUG] [Thread-155780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:25:25.048 [DEBUG] [Thread-155780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:25:25.048 [DEBUG] [Thread-155780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:25:25.061 [INFO] [Thread-155780] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:25:25.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:25:27.081 [DEBUG] [Thread-155780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:25:27.081 [DEBUG] [Thread-155780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:25:27.081 [DEBUG] [Thread-155780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:25:27.122 [DEBUG] [Thread-155780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:25:27.122 [DEBUG] [Thread-155780] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:25:27.124 [DEBUG] [Thread-155780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:25:27.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:25:27.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:25:27.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:25:27.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:25:27.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:25:27.142 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:25:27.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:25:27.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.433751 -999.00  +13.80  13.29     49   +3.50 1 1 1 1 1   888    0 10.56 32.41 ----- 24.3 13.3 133.7 23.3 21.8 -26.0 20.6 -26.0 20.9 -25.4 22.1 -26.2
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.433751
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:25:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:25:11', tmtdew=11.52, humidity=45.48, cloud=0.0, wind=22.78, temperature=13.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:24:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:25:27.144 [DEBUG] [Thread-155780] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:25:27.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:25:27.230 [DEBUG] [Thread-155783] [transport.py] [_log()] starting thread (client mode): 0x2b96cfd0
2025-09-29T12:25:27.230 [DEBUG] [Thread-155783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:25:27.244 [DEBUG] [Thread-155783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:25:27.244 [INFO] [Thread-155783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] client lang: <none>
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] server lang: <none>
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] kex follows: False
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] Compression: none
2025-09-29T12:25:27.252 [DEBUG] [Thread-155783] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:25:27.311 [DEBUG] [Thread-155783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:25:27.311 [DEBUG] [Thread-155783] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:25:27.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:25:27.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:25:27.311 [DEBUG] [Thread-155783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:25:27.367 [DEBUG] [Thread-155783] [transport.py] [_log()] userauth is OK
2025-09-29T12:25:27.368 [DEBUG] [Thread-155783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:25:27.368 [DEBUG] [Thread-155783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:25:27.368 [DEBUG] [Thread-155783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:25:27.368 [DEBUG] [Thread-155783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:25:27.382 [INFO] [Thread-155783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:25:27.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:25:27.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:25:28.371 [DEBUG] [Thread-155783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:25:28.371 [DEBUG] [Thread-155783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:25:28.419 [DEBUG] [Thread-155783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:25:28.419 [DEBUG] [Thread-155783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:25:28.427 [DEBUG] [Thread-155783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:25:28.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:25:28.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:25:28.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:25:28.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:25:28.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:25:28.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:25:28.461 [DEBUG] [Thread-155783] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:25:29.531 [DEBUG] [Thread-155785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:25:38.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:25:38.464 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:25:38.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:25:38.962 [DEBUG] [Thread-155786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:25:39.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 25, 11), 11.52, 45.48, 0.0, 22.78, 13.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:25:39.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:25:11
2025-09-29T12:25:39.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:25:39.303 [DEBUG] [Thread-155787] [transport.py] [_log()] starting thread (client mode): 0x2e34add0
2025-09-29T12:25:39.303 [DEBUG] [Thread-155787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:25:39.325 [DEBUG] [Thread-155787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:25:39.325 [INFO] [Thread-155787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:25:39.328 [DEBUG] [Thread-155787] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] client lang: <none>
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] server lang: <none>
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] kex follows: False
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] Compression: none
2025-09-29T12:25:39.329 [DEBUG] [Thread-155787] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:25:39.347 [DEBUG] [Thread-155787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:25:39.347 [DEBUG] [Thread-155787] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:25:39.348 [DEBUG] [Thread-155787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:25:39.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:25:39.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:25:39.350 [DEBUG] [Thread-155787] [transport.py] [_log()] userauth is OK
2025-09-29T12:25:39.350 [DEBUG] [Thread-155787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:25:39.350 [DEBUG] [Thread-155787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:25:39.351 [DEBUG] [Thread-155787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:25:39.351 [DEBUG] [Thread-155787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:25:39.373 [INFO] [Thread-155787] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:25:39.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:25:39.946 [DEBUG] [Thread-155787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:25:39.946 [DEBUG] [Thread-155787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:25:39.947 [DEBUG] [Thread-155787] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:25:39.987 [DEBUG] [Thread-155787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:25:39.987 [DEBUG] [Thread-155787] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:25:39.991 [DEBUG] [Thread-155787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:25:40.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:25:40.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:25:40.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:25:40.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:25:40.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:25:40.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:25:40.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:25:40.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:25:40.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:25:40.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.434098 -999.00  +14.40  25.29     48   +3.60 1 1 1 1 1   888    0 10.53 33.06 ----- 22.5 25.3 131.8 27.9 21.8 -25.4 20.6 -25.3 20.7 -26.3 22.0 -27.9
2025-09-29T12:25:40.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:25:40.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:25:40.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.434098
2025-09-29T12:25:40.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:25:40.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:25:40.012 [DEBUG] [Thread-155787] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:25:40.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:25:40.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:25:40.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:25:40.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:25:11', tmtdew=11.52, humidity=45.48, cloud=0.0, wind=22.78, temperature=13.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:25:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:25:40.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:25:40.108 [DEBUG] [Thread-155790] [transport.py] [_log()] starting thread (client mode): 0x28707a90
2025-09-29T12:25:40.108 [DEBUG] [Thread-155790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:25:40.123 [DEBUG] [Thread-155790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:25:40.123 [INFO] [Thread-155790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:25:40.131 [DEBUG] [Thread-155790] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:25:40.131 [DEBUG] [Thread-155790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] client lang: <none>
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] server lang: <none>
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] kex follows: False
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] Compression: none
2025-09-29T12:25:40.132 [DEBUG] [Thread-155790] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:25:40.187 [DEBUG] [Thread-155790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:25:40.188 [DEBUG] [Thread-155790] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:25:40.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:25:40.189 [DEBUG] [Thread-155790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:25:40.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:25:40.243 [DEBUG] [Thread-155790] [transport.py] [_log()] userauth is OK
2025-09-29T12:25:40.244 [DEBUG] [Thread-155790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:25:40.244 [DEBUG] [Thread-155790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:25:40.244 [DEBUG] [Thread-155790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:25:40.244 [DEBUG] [Thread-155790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:25:40.264 [INFO] [Thread-155790] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:25:40.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:25:40.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:25:41.200 [DEBUG] [Thread-155790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:25:41.201 [DEBUG] [Thread-155790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:25:41.248 [DEBUG] [Thread-155790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:25:41.248 [DEBUG] [Thread-155790] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:25:41.257 [DEBUG] [Thread-155790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:25:41.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:25:41.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:25:41.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:25:41.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:25:41.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:25:41.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:25:41.291 [DEBUG] [Thread-155790] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:25:44.562 [DEBUG] [Thread-155792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:25:46.897 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:25:46.897 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:25:51.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:25:51.294 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:25:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:25:51.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 25, 43), 12.14, 43.46, 0.0, 24.93, 13.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:25:51.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:25:43
2025-09-29T12:25:51.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:25:52.121 [DEBUG] [Thread-155793] [transport.py] [_log()] starting thread (client mode): 0x2b9c0e80
2025-09-29T12:25:52.122 [DEBUG] [Thread-155793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:25:52.141 [DEBUG] [Thread-155793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:25:52.141 [INFO] [Thread-155793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:25:52.144 [DEBUG] [Thread-155793] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:25:52.144 [DEBUG] [Thread-155793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:25:52.144 [DEBUG] [Thread-155793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:25:52.144 [DEBUG] [Thread-155793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:52.144 [DEBUG] [Thread-155793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] client lang: <none>
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] server lang: <none>
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] kex follows: False
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] Compression: none
2025-09-29T12:25:52.145 [DEBUG] [Thread-155793] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:25:52.163 [DEBUG] [Thread-155793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:25:52.164 [DEBUG] [Thread-155793] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:25:52.164 [DEBUG] [Thread-155793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:25:52.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:25:52.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:25:52.166 [DEBUG] [Thread-155793] [transport.py] [_log()] userauth is OK
2025-09-29T12:25:52.166 [DEBUG] [Thread-155793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:25:52.166 [DEBUG] [Thread-155793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:25:52.166 [DEBUG] [Thread-155793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:25:52.167 [DEBUG] [Thread-155793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:25:52.188 [INFO] [Thread-155793] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:25:52.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:25:52.993 [DEBUG] [Thread-155793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:25:52.993 [DEBUG] [Thread-155793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:25:52.993 [DEBUG] [Thread-155793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:25:53.034 [DEBUG] [Thread-155793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:25:53.034 [DEBUG] [Thread-155793] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:25:53.037 [DEBUG] [Thread-155793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:25:53.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:25:53.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:25:53.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:25:53.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:25:53.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:25:53.061 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:25:53.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:25:53.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:25:53.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:25:53.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.434098 -999.00  +14.40  25.29     48   +3.60 1 1 1 1 1   888    0 10.53 33.06 ----- 22.5 25.3 131.8 27.9 21.8 -25.4 20.6 -25.3 20.7 -26.3 22.0 -27.9
2025-09-29T12:25:53.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:25:53.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:25:53.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.434098
2025-09-29T12:25:53.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:25:53.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:25:53.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:25:53.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:25:53.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:25:53.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:25:43', tmtdew=12.14, humidity=43.46, cloud=0.0, wind=24.93, temperature=13.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:25:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:25:53.064 [DEBUG] [Thread-155793] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:25:53.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:25:53.161 [DEBUG] [Thread-155796] [transport.py] [_log()] starting thread (client mode): 0x2b96d8d0
2025-09-29T12:25:53.161 [DEBUG] [Thread-155796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:25:53.175 [DEBUG] [Thread-155796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:25:53.175 [INFO] [Thread-155796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:25:53.183 [DEBUG] [Thread-155796] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:25:53.183 [DEBUG] [Thread-155796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:25:53.183 [DEBUG] [Thread-155796] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:25:53.183 [DEBUG] [Thread-155796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:53.183 [DEBUG] [Thread-155796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:25:53.183 [DEBUG] [Thread-155796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:53.183 [DEBUG] [Thread-155796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] client lang: <none>
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] server lang: <none>
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] kex follows: False
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:25:53.184 [DEBUG] [Thread-155796] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:25:53.185 [DEBUG] [Thread-155796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:25:53.185 [DEBUG] [Thread-155796] [transport.py] [_log()] Compression: none
2025-09-29T12:25:53.185 [DEBUG] [Thread-155796] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:25:53.239 [DEBUG] [Thread-155796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:25:53.239 [DEBUG] [Thread-155796] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:25:53.240 [DEBUG] [Thread-155796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:25:53.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:25:53.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:25:53.295 [DEBUG] [Thread-155796] [transport.py] [_log()] userauth is OK
2025-09-29T12:25:53.295 [DEBUG] [Thread-155796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:25:53.295 [DEBUG] [Thread-155796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:25:53.295 [DEBUG] [Thread-155796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:25:53.295 [DEBUG] [Thread-155796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:25:53.309 [INFO] [Thread-155796] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:25:53.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:25:53.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:25:54.293 [DEBUG] [Thread-155796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:25:54.293 [DEBUG] [Thread-155796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:25:54.340 [DEBUG] [Thread-155796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:25:54.340 [DEBUG] [Thread-155796] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:25:54.350 [DEBUG] [Thread-155796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:25:54.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:25:54.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:25:54.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:25:54.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:25:54.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:25:54.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:25:54.384 [DEBUG] [Thread-155796] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:25:59.593 [DEBUG] [Thread-155798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:26:04.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:26:04.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:26:04.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:26:04.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 25, 43), 12.14, 43.46, 0.0, 24.93, 13.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:26:04.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:25:43
2025-09-29T12:26:05.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:26:05.248 [DEBUG] [Thread-155799] [transport.py] [_log()] starting thread (client mode): 0x2b954f40
2025-09-29T12:26:05.249 [DEBUG] [Thread-155799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:05.269 [DEBUG] [Thread-155799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:26:05.269 [INFO] [Thread-155799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:26:05.272 [DEBUG] [Thread-155799] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:05.272 [DEBUG] [Thread-155799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] Compression: none
2025-09-29T12:26:05.273 [DEBUG] [Thread-155799] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:05.289 [DEBUG] [Thread-155799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:05.289 [DEBUG] [Thread-155799] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:05.289 [DEBUG] [Thread-155799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:26:05.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:26:05.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:05.290 [DEBUG] [Thread-155799] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:05.290 [DEBUG] [Thread-155799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:05.291 [DEBUG] [Thread-155799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:05.291 [DEBUG] [Thread-155799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:26:05.291 [DEBUG] [Thread-155799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:05.301 [INFO] [Thread-155799] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:05.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:06.093 [DEBUG] [Thread-155799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:06.093 [DEBUG] [Thread-155799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:06.093 [DEBUG] [Thread-155799] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:26:06.134 [DEBUG] [Thread-155799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:06.134 [DEBUG] [Thread-155799] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:06.136 [DEBUG] [Thread-155799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:06.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:06.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:26:06.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:26:06.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:26:06.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:06.155 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:26:06.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.434098 -999.00  +14.40  25.29     48   +3.60 1 1 1 1 1   888    0 10.53 33.06 ----- 22.5 25.3 131.8 27.9 21.8 -25.4 20.6 -25.3 20.7 -26.3 22.0 -27.9
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.434098
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:26:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:25:43', tmtdew=12.14, humidity=43.46, cloud=0.0, wind=24.93, temperature=13.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:25:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:26:06.156 [DEBUG] [Thread-155799] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:06.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:26:06.241 [DEBUG] [Thread-155802] [transport.py] [_log()] starting thread (client mode): 0x2b957970
2025-09-29T12:26:06.241 [DEBUG] [Thread-155802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:06.255 [DEBUG] [Thread-155802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:26:06.255 [INFO] [Thread-155802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:06.263 [DEBUG] [Thread-155802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:06.264 [DEBUG] [Thread-155802] [transport.py] [_log()] Compression: none
2025-09-29T12:26:06.264 [DEBUG] [Thread-155802] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:06.318 [DEBUG] [Thread-155802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:06.318 [DEBUG] [Thread-155802] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:06.318 [DEBUG] [Thread-155802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:26:06.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:26:06.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:06.375 [DEBUG] [Thread-155802] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:06.375 [DEBUG] [Thread-155802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:06.376 [DEBUG] [Thread-155802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:06.376 [DEBUG] [Thread-155802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:26:06.376 [DEBUG] [Thread-155802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:06.393 [INFO] [Thread-155802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:06.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:26:06.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:07.464 [DEBUG] [Thread-155802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:07.464 [DEBUG] [Thread-155802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:07.512 [DEBUG] [Thread-155802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:07.512 [DEBUG] [Thread-155802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:07.521 [DEBUG] [Thread-155802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:07.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:07.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:26:07.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:26:07.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:07.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:07.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:07.553 [DEBUG] [Thread-155802] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:14.630 [DEBUG] [Thread-155804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:26:17.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:26:17.555 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:26:17.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:26:18.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 26, 15), 12.21, 43.21, 0.0, 22.13, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:26:18.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:26:15
2025-09-29T12:26:18.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:26:18.396 [DEBUG] [Thread-155805] [transport.py] [_log()] starting thread (client mode): 0x2b9c2e90
2025-09-29T12:26:18.396 [DEBUG] [Thread-155805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:18.417 [DEBUG] [Thread-155805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:26:18.417 [INFO] [Thread-155805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:26:18.420 [DEBUG] [Thread-155805] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] Compression: none
2025-09-29T12:26:18.421 [DEBUG] [Thread-155805] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:18.436 [DEBUG] [Thread-155805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:18.436 [DEBUG] [Thread-155805] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:18.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:26:18.436 [DEBUG] [Thread-155805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:26:18.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:18.437 [DEBUG] [Thread-155805] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:18.437 [DEBUG] [Thread-155805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:18.437 [DEBUG] [Thread-155805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:18.437 [DEBUG] [Thread-155805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:26:18.437 [DEBUG] [Thread-155805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:18.456 [INFO] [Thread-155805] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:18.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:19.083 [DEBUG] [Thread-155805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:19.083 [DEBUG] [Thread-155805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:19.084 [DEBUG] [Thread-155805] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:26:19.124 [DEBUG] [Thread-155805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:19.124 [DEBUG] [Thread-155805] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:19.127 [DEBUG] [Thread-155805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:19.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:19.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:26:19.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:26:19.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:26:19.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:19.146 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:26:19.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:19.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:19.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:26:19.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.434446 -999.00  +14.50  15.41     47   +3.40 1 1 1 1 1   888    0 10.73 36.32 ----- 19.9 15.4 126.6 25.2 21.8 -25.5 20.7 -25.5 20.9 -25.5 22.1 -25.9
2025-09-29T12:26:19.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:26:19.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:26:19.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.434446
2025-09-29T12:26:19.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:26:19.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:26:19.149 [DEBUG] [Thread-155805] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:19.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:26:19.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:26:19.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:26:19.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:26:15', tmtdew=12.21, humidity=43.21, cloud=0.0, wind=22.13, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:25:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:26:19.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:26:19.242 [DEBUG] [Thread-155808] [transport.py] [_log()] starting thread (client mode): 0x2b955360
2025-09-29T12:26:19.242 [DEBUG] [Thread-155808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:19.257 [DEBUG] [Thread-155808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:26:19.257 [INFO] [Thread-155808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:19.265 [DEBUG] [Thread-155808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:19.266 [DEBUG] [Thread-155808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:19.266 [DEBUG] [Thread-155808] [transport.py] [_log()] Compression: none
2025-09-29T12:26:19.266 [DEBUG] [Thread-155808] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:19.323 [DEBUG] [Thread-155808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:19.323 [DEBUG] [Thread-155808] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:19.324 [DEBUG] [Thread-155808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:26:19.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:26:19.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:19.380 [DEBUG] [Thread-155808] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:19.380 [DEBUG] [Thread-155808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:19.380 [DEBUG] [Thread-155808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:19.380 [DEBUG] [Thread-155808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:26:19.380 [DEBUG] [Thread-155808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:19.400 [INFO] [Thread-155808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:19.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:26:19.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:20.342 [DEBUG] [Thread-155808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:20.342 [DEBUG] [Thread-155808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:20.390 [DEBUG] [Thread-155808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:20.390 [DEBUG] [Thread-155808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:20.399 [DEBUG] [Thread-155808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:20.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:20.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:26:20.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:26:20.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:20.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:20.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:20.436 [DEBUG] [Thread-155808] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:29.665 [DEBUG] [Thread-155810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:26:30.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:26:30.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:26:30.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:26:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 26, 15), 12.21, 43.21, 0.0, 22.13, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:26:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:26:15
2025-09-29T12:26:31.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:26:31.266 [DEBUG] [Thread-155811] [transport.py] [_log()] starting thread (client mode): 0x2b96df60
2025-09-29T12:26:31.267 [DEBUG] [Thread-155811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:31.287 [DEBUG] [Thread-155811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:26:31.287 [INFO] [Thread-155811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:26:31.288 [DEBUG] [Thread-155811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:31.288 [DEBUG] [Thread-155811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:26:31.288 [DEBUG] [Thread-155811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:31.288 [DEBUG] [Thread-155811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] Compression: none
2025-09-29T12:26:31.289 [DEBUG] [Thread-155811] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:31.307 [DEBUG] [Thread-155811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:31.308 [DEBUG] [Thread-155811] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:31.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:26:31.309 [DEBUG] [Thread-155811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:26:31.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:31.311 [DEBUG] [Thread-155811] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:31.311 [DEBUG] [Thread-155811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:31.312 [DEBUG] [Thread-155811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:31.312 [DEBUG] [Thread-155811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:26:31.312 [DEBUG] [Thread-155811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:31.346 [INFO] [Thread-155811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:31.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:32.169 [DEBUG] [Thread-155811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:32.170 [DEBUG] [Thread-155811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:32.170 [DEBUG] [Thread-155811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:26:32.210 [DEBUG] [Thread-155811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:32.210 [DEBUG] [Thread-155811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:32.213 [DEBUG] [Thread-155811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:32.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:32.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:26:32.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:26:32.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:26:32.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:32.235 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:26:32.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:32.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:32.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:26:32.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.434446 -999.00  +14.50  15.41     47   +3.40 1 1 1 1 1   888    0 10.73 36.32 ----- 19.9 15.4 126.6 25.2 21.8 -25.5 20.7 -25.5 20.9 -25.5 22.1 -25.9
2025-09-29T12:26:32.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:26:32.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:26:32.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.434446
2025-09-29T12:26:32.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:26:32.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:26:32.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:26:32.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:26:32.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:26:32.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:26:15', tmtdew=12.21, humidity=43.21, cloud=0.0, wind=22.13, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:25:36.134', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:26:32.238 [DEBUG] [Thread-155811] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:32.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:26:32.333 [DEBUG] [Thread-155814] [transport.py] [_log()] starting thread (client mode): 0x287041f0
2025-09-29T12:26:32.333 [DEBUG] [Thread-155814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:32.355 [DEBUG] [Thread-155814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:26:32.355 [INFO] [Thread-155814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:26:32.362 [DEBUG] [Thread-155814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] Compression: none
2025-09-29T12:26:32.363 [DEBUG] [Thread-155814] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:32.419 [DEBUG] [Thread-155814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:32.420 [DEBUG] [Thread-155814] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:32.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:26:32.421 [DEBUG] [Thread-155814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:26:32.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:32.476 [DEBUG] [Thread-155814] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:32.476 [DEBUG] [Thread-155814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:32.476 [DEBUG] [Thread-155814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:32.476 [DEBUG] [Thread-155814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:26:32.476 [DEBUG] [Thread-155814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:32.495 [INFO] [Thread-155814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:32.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:26:32.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:33.462 [DEBUG] [Thread-155814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:33.462 [DEBUG] [Thread-155814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:33.510 [DEBUG] [Thread-155814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:33.510 [DEBUG] [Thread-155814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:33.519 [DEBUG] [Thread-155814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:33.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:33.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:26:33.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:26:33.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:33.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:33.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:33.554 [DEBUG] [Thread-155814] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:39.015 [DEBUG] [Thread-155816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:26:43.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:26:43.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:26:43.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:26:44.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 26, 15), 12.21, 43.21, 0.0, 22.13, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:26:44.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:26:15
2025-09-29T12:26:44.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:26:44.392 [DEBUG] [Thread-155817] [transport.py] [_log()] starting thread (client mode): 0x28707460
2025-09-29T12:26:44.392 [DEBUG] [Thread-155817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:44.407 [DEBUG] [Thread-155817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:26:44.407 [INFO] [Thread-155817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:26:44.408 [DEBUG] [Thread-155817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:44.408 [DEBUG] [Thread-155817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:26:44.408 [DEBUG] [Thread-155817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:44.408 [DEBUG] [Thread-155817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:44.408 [DEBUG] [Thread-155817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] Compression: none
2025-09-29T12:26:44.409 [DEBUG] [Thread-155817] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:44.420 [DEBUG] [Thread-155817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:44.421 [DEBUG] [Thread-155817] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:44.421 [DEBUG] [Thread-155817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:26:44.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:26:44.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:44.422 [DEBUG] [Thread-155817] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:44.422 [DEBUG] [Thread-155817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:44.423 [DEBUG] [Thread-155817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:44.423 [DEBUG] [Thread-155817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:26:44.423 [DEBUG] [Thread-155817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:44.440 [INFO] [Thread-155817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:44.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:44.714 [DEBUG] [Thread-155819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:26:45.045 [DEBUG] [Thread-155817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:45.045 [DEBUG] [Thread-155817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:45.046 [DEBUG] [Thread-155817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:26:45.086 [DEBUG] [Thread-155817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:45.087 [DEBUG] [Thread-155817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:45.090 [DEBUG] [Thread-155817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:45.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:45.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:26:45.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:26:45.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:26:45.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:45.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:26:45.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:45.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:45.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:26:45.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.435140 -999.00  +13.50  11.57     49   +3.00 1 1 1 1 1   888    0 11.30 51.59 ----- 13.0 11.6 149.0 17.9 21.6 -26.3 20.8 -25.8 20.9 -26.0 22.1 -26.5
2025-09-29T12:26:45.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:26:45.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:26:45.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.435140
2025-09-29T12:26:45.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:26:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:26:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:26:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:26:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:26:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:26:15', tmtdew=12.21, humidity=43.21, cloud=0.0, wind=22.13, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:26:36.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:26:45.118 [DEBUG] [Thread-155817] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:45.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:26:45.215 [DEBUG] [Thread-155821] [transport.py] [_log()] starting thread (client mode): 0x2e349450
2025-09-29T12:26:45.215 [DEBUG] [Thread-155821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:45.230 [DEBUG] [Thread-155821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:26:45.231 [INFO] [Thread-155821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:26:45.238 [DEBUG] [Thread-155821] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:45.238 [DEBUG] [Thread-155821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:26:45.238 [DEBUG] [Thread-155821] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:45.238 [DEBUG] [Thread-155821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:45.238 [DEBUG] [Thread-155821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:45.238 [DEBUG] [Thread-155821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] Compression: none
2025-09-29T12:26:45.239 [DEBUG] [Thread-155821] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:45.296 [DEBUG] [Thread-155821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:45.296 [DEBUG] [Thread-155821] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:45.296 [DEBUG] [Thread-155821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:26:45.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:26:45.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:45.356 [DEBUG] [Thread-155821] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:45.357 [DEBUG] [Thread-155821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:45.357 [DEBUG] [Thread-155821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:45.357 [DEBUG] [Thread-155821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:26:45.357 [DEBUG] [Thread-155821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:45.376 [INFO] [Thread-155821] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:45.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:26:45.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:46.423 [DEBUG] [Thread-155821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:46.423 [DEBUG] [Thread-155821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:46.471 [DEBUG] [Thread-155821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:46.471 [DEBUG] [Thread-155821] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:46.479 [DEBUG] [Thread-155821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:46.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:46.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:26:46.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:26:46.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:46.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:46.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:46.511 [DEBUG] [Thread-155821] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:47.039 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:26:47.040 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:26:56.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:26:56.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:26:56.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:26:57.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 26, 47), 11.46, 45.84, 0.0, 15.05, 12.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:26:57.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:26:47
2025-09-29T12:26:57.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:26:57.344 [DEBUG] [Thread-155823] [transport.py] [_log()] starting thread (client mode): 0x2b969000
2025-09-29T12:26:57.344 [DEBUG] [Thread-155823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:57.366 [DEBUG] [Thread-155823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:26:57.366 [INFO] [Thread-155823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:26:57.369 [DEBUG] [Thread-155823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] Compression: none
2025-09-29T12:26:57.370 [DEBUG] [Thread-155823] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:57.386 [DEBUG] [Thread-155823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:57.387 [DEBUG] [Thread-155823] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:57.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:26:57.388 [DEBUG] [Thread-155823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:26:57.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:57.390 [DEBUG] [Thread-155823] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:57.390 [DEBUG] [Thread-155823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:57.390 [DEBUG] [Thread-155823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:57.390 [DEBUG] [Thread-155823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:26:57.390 [DEBUG] [Thread-155823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:57.426 [INFO] [Thread-155823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:57.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:58.177 [DEBUG] [Thread-155823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:58.178 [DEBUG] [Thread-155823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:58.178 [DEBUG] [Thread-155823] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:26:58.218 [DEBUG] [Thread-155823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:58.218 [DEBUG] [Thread-155823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:58.221 [DEBUG] [Thread-155823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:58.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:58.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:26:58.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:26:58.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:26:58.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:58.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:26:58.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:58.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:26:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.435140 -999.00  +13.50  11.57     49   +3.00 1 1 1 1 1   888    0 11.30 51.59 ----- 13.0 11.6 149.0 17.9 21.6 -26.3 20.8 -25.8 20.9 -26.0 22.1 -26.5
2025-09-29T12:26:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:26:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:26:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.435140
2025-09-29T12:26:58.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:26:58.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:26:58.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:26:58.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:26:58.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:26:58.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:26:47', tmtdew=11.46, humidity=45.84, cloud=0.0, wind=15.05, temperature=12.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:26:36.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:26:58.260 [DEBUG] [Thread-155823] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:58.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:26:58.350 [DEBUG] [Thread-155826] [transport.py] [_log()] starting thread (client mode): 0x2b968580
2025-09-29T12:26:58.350 [DEBUG] [Thread-155826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:26:58.365 [DEBUG] [Thread-155826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:26:58.365 [INFO] [Thread-155826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:26:58.372 [DEBUG] [Thread-155826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:26:58.373 [DEBUG] [Thread-155826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:26:58.373 [DEBUG] [Thread-155826] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:26:58.373 [DEBUG] [Thread-155826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:58.373 [DEBUG] [Thread-155826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:26:58.373 [DEBUG] [Thread-155826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:58.373 [DEBUG] [Thread-155826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:26:58.373 [DEBUG] [Thread-155826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] client lang: <none>
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] server lang: <none>
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] kex follows: False
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] Compression: none
2025-09-29T12:26:58.374 [DEBUG] [Thread-155826] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:26:58.432 [DEBUG] [Thread-155826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:26:58.432 [DEBUG] [Thread-155826] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:26:58.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:26:58.433 [DEBUG] [Thread-155826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:26:58.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:26:58.488 [DEBUG] [Thread-155826] [transport.py] [_log()] userauth is OK
2025-09-29T12:26:58.488 [DEBUG] [Thread-155826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:26:58.488 [DEBUG] [Thread-155826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:26:58.488 [DEBUG] [Thread-155826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:26:58.488 [DEBUG] [Thread-155826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:26:58.507 [INFO] [Thread-155826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:26:58.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:26:58.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:26:59.454 [DEBUG] [Thread-155826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:26:59.454 [DEBUG] [Thread-155826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:26:59.502 [DEBUG] [Thread-155826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:26:59.502 [DEBUG] [Thread-155826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:26:59.510 [DEBUG] [Thread-155826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:26:59.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:26:59.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:26:59.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:26:59.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:26:59.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:26:59.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:26:59.542 [DEBUG] [Thread-155826] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:26:59.748 [DEBUG] [Thread-155828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:27:09.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:27:09.537 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:27:09.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:27:10.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 26, 47), 11.46, 45.84, 0.0, 15.05, 12.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:27:10.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:26:47
2025-09-29T12:27:10.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:27:10.357 [DEBUG] [Thread-155829] [transport.py] [_log()] starting thread (client mode): 0x2b91e170
2025-09-29T12:27:10.357 [DEBUG] [Thread-155829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:27:10.379 [DEBUG] [Thread-155829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:27:10.379 [INFO] [Thread-155829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] client lang: <none>
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] server lang: <none>
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] kex follows: False
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:27:10.381 [DEBUG] [Thread-155829] [transport.py] [_log()] Compression: none
2025-09-29T12:27:10.382 [DEBUG] [Thread-155829] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:27:10.395 [DEBUG] [Thread-155829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:27:10.396 [DEBUG] [Thread-155829] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:27:10.396 [DEBUG] [Thread-155829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:27:10.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:27:10.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:27:10.398 [DEBUG] [Thread-155829] [transport.py] [_log()] userauth is OK
2025-09-29T12:27:10.398 [DEBUG] [Thread-155829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:27:10.399 [DEBUG] [Thread-155829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:27:10.399 [DEBUG] [Thread-155829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:27:10.399 [DEBUG] [Thread-155829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:27:10.432 [INFO] [Thread-155829] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:27:10.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:27:11.331 [DEBUG] [Thread-155829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:27:11.332 [DEBUG] [Thread-155829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:27:11.332 [DEBUG] [Thread-155829] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:27:11.372 [DEBUG] [Thread-155829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:27:11.372 [DEBUG] [Thread-155829] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:27:11.375 [DEBUG] [Thread-155829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:27:11.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:27:11.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:27:11.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:27:11.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:27:11.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:27:11.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:27:11.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:27:11.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:27:11.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:27:11.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.435140 -999.00  +13.50  11.57     49   +3.00 1 1 1 1 1   888    0 11.30 51.59 ----- 13.0 11.6 149.0 17.9 21.6 -26.3 20.8 -25.8 20.9 -26.0 22.1 -26.5
2025-09-29T12:27:11.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:27:11.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:27:11.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.435140
2025-09-29T12:27:11.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:27:11.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:27:11.398 [DEBUG] [Thread-155829] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:27:11.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:27:11.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:27:11.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:27:11.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:26:47', tmtdew=11.46, humidity=45.84, cloud=0.0, wind=15.05, temperature=12.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:26:36.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:27:11.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:27:11.495 [DEBUG] [Thread-155832] [transport.py] [_log()] starting thread (client mode): 0x28704d90
2025-09-29T12:27:11.496 [DEBUG] [Thread-155832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:27:11.510 [DEBUG] [Thread-155832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:27:11.510 [INFO] [Thread-155832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:27:11.518 [DEBUG] [Thread-155832] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:27:11.519 [DEBUG] [Thread-155832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:27:11.519 [DEBUG] [Thread-155832] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:27:11.519 [DEBUG] [Thread-155832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:11.519 [DEBUG] [Thread-155832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:11.519 [DEBUG] [Thread-155832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:11.519 [DEBUG] [Thread-155832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:11.519 [DEBUG] [Thread-155832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:27:11.519 [DEBUG] [Thread-155832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:27:11.520 [DEBUG] [Thread-155832] [transport.py] [_log()] client lang: <none>
2025-09-29T12:27:11.520 [DEBUG] [Thread-155832] [transport.py] [_log()] server lang: <none>
2025-09-29T12:27:11.520 [DEBUG] [Thread-155832] [transport.py] [_log()] kex follows: False
2025-09-29T12:27:11.520 [DEBUG] [Thread-155832] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:27:11.520 [DEBUG] [Thread-155832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:27:11.520 [DEBUG] [Thread-155832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:27:11.521 [DEBUG] [Thread-155832] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:27:11.521 [DEBUG] [Thread-155832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:27:11.521 [DEBUG] [Thread-155832] [transport.py] [_log()] Compression: none
2025-09-29T12:27:11.521 [DEBUG] [Thread-155832] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:27:11.575 [DEBUG] [Thread-155832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:27:11.576 [DEBUG] [Thread-155832] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:27:11.576 [DEBUG] [Thread-155832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:27:11.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:27:11.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:27:11.631 [DEBUG] [Thread-155832] [transport.py] [_log()] userauth is OK
2025-09-29T12:27:11.632 [DEBUG] [Thread-155832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:27:11.632 [DEBUG] [Thread-155832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:27:11.632 [DEBUG] [Thread-155832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:27:11.632 [DEBUG] [Thread-155832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:27:11.651 [INFO] [Thread-155832] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:27:11.651 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:27:11.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:27:12.620 [DEBUG] [Thread-155832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:27:12.621 [DEBUG] [Thread-155832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:27:12.668 [DEBUG] [Thread-155832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:27:12.668 [DEBUG] [Thread-155832] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:27:12.677 [DEBUG] [Thread-155832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:27:12.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:27:12.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:27:12.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:27:12.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:27:12.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:27:12.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:27:12.715 [DEBUG] [Thread-155832] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:27:14.796 [DEBUG] [Thread-155834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:27:22.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:27:22.717 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:27:22.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:27:23.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 26, 47), 11.46, 45.84, 0.0, 15.05, 12.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:27:23.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:26:47
2025-09-29T12:27:23.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:27:23.556 [DEBUG] [Thread-155835] [transport.py] [_log()] starting thread (client mode): 0x2e38c520
2025-09-29T12:27:23.557 [DEBUG] [Thread-155835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:27:23.577 [DEBUG] [Thread-155835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:27:23.577 [INFO] [Thread-155835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:27:23.580 [DEBUG] [Thread-155835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] client lang: <none>
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] server lang: <none>
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] kex follows: False
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] Compression: none
2025-09-29T12:27:23.581 [DEBUG] [Thread-155835] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:27:23.597 [DEBUG] [Thread-155835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:27:23.597 [DEBUG] [Thread-155835] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:27:23.598 [DEBUG] [Thread-155835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:27:23.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:27:23.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:27:23.600 [DEBUG] [Thread-155835] [transport.py] [_log()] userauth is OK
2025-09-29T12:27:23.600 [DEBUG] [Thread-155835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:27:23.600 [DEBUG] [Thread-155835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:27:23.600 [DEBUG] [Thread-155835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:27:23.600 [DEBUG] [Thread-155835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:27:23.618 [INFO] [Thread-155835] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:27:23.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:27:24.270 [DEBUG] [Thread-155835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:27:24.270 [DEBUG] [Thread-155835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:27:24.270 [DEBUG] [Thread-155835] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:27:24.312 [DEBUG] [Thread-155835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:27:24.312 [DEBUG] [Thread-155835] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:27:24.314 [DEBUG] [Thread-155835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:27:24.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:27:24.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:27:24.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:27:24.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:27:24.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:27:24.331 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:27:24.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:27:24.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.435487 -999.00  +13.60  14.39     49   +3.20 1 1 1 1 1   888    0 11.25 52.54 ----- 18.9 14.4 166.2 17.6 21.7 -26.9 20.8 -24.7 20.9 -25.0 22.1 -25.3
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.435487
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:27:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:26:47', tmtdew=11.46, humidity=45.84, cloud=0.0, wind=15.05, temperature=12.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:27:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:27:24.332 [DEBUG] [Thread-155835] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:27:24.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:27:24.416 [DEBUG] [Thread-155838] [transport.py] [_log()] starting thread (client mode): 0x2b96b7c0
2025-09-29T12:27:24.416 [DEBUG] [Thread-155838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:27:24.431 [DEBUG] [Thread-155838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:27:24.431 [INFO] [Thread-155838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] client lang: <none>
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] server lang: <none>
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] kex follows: False
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] Compression: none
2025-09-29T12:27:24.439 [DEBUG] [Thread-155838] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:27:24.494 [DEBUG] [Thread-155838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:27:24.494 [DEBUG] [Thread-155838] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:27:24.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:27:24.494 [DEBUG] [Thread-155838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:27:24.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:27:24.551 [DEBUG] [Thread-155838] [transport.py] [_log()] userauth is OK
2025-09-29T12:27:24.551 [DEBUG] [Thread-155838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:27:24.551 [DEBUG] [Thread-155838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:27:24.551 [DEBUG] [Thread-155838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:27:24.551 [DEBUG] [Thread-155838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:27:24.565 [INFO] [Thread-155838] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:27:24.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:27:24.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:27:25.510 [DEBUG] [Thread-155838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:27:25.511 [DEBUG] [Thread-155838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:27:25.559 [DEBUG] [Thread-155838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:27:25.559 [DEBUG] [Thread-155838] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:27:25.567 [DEBUG] [Thread-155838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:27:25.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:27:25.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:27:25.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:27:25.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:27:25.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:27:25.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:27:25.598 [DEBUG] [Thread-155838] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:27:29.826 [DEBUG] [Thread-155840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:27:35.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:27:35.601 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:27:35.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:27:36.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 27, 19), 11.4, 46.02, 0.0, 18.12, 12.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:27:36.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:27:19
2025-09-29T12:27:36.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:27:36.442 [DEBUG] [Thread-155841] [transport.py] [_log()] starting thread (client mode): 0x2e3c1630
2025-09-29T12:27:36.442 [DEBUG] [Thread-155841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:27:36.463 [DEBUG] [Thread-155841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:27:36.463 [INFO] [Thread-155841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:27:36.466 [DEBUG] [Thread-155841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] client lang: <none>
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] server lang: <none>
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] kex follows: False
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] Compression: none
2025-09-29T12:27:36.467 [DEBUG] [Thread-155841] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:27:36.486 [DEBUG] [Thread-155841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:27:36.486 [DEBUG] [Thread-155841] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:27:36.487 [DEBUG] [Thread-155841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:27:36.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:27:36.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:27:36.488 [DEBUG] [Thread-155841] [transport.py] [_log()] userauth is OK
2025-09-29T12:27:36.489 [DEBUG] [Thread-155841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:27:36.489 [DEBUG] [Thread-155841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:27:36.489 [DEBUG] [Thread-155841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:27:36.489 [DEBUG] [Thread-155841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:27:36.510 [INFO] [Thread-155841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:27:36.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:27:37.329 [DEBUG] [Thread-155841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:27:37.329 [DEBUG] [Thread-155841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:27:37.330 [DEBUG] [Thread-155841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:27:37.370 [DEBUG] [Thread-155841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:27:37.371 [DEBUG] [Thread-155841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:27:37.373 [DEBUG] [Thread-155841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:27:37.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:27:37.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:27:37.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:27:37.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:27:37.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:27:37.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:27:37.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:27:37.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:27:37.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:27:37.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.435487 -999.00  +13.60  14.39     49   +3.20 1 1 1 1 1   888    0 11.25 52.54 ----- 18.9 14.4 166.2 17.6 21.7 -26.9 20.8 -24.7 20.9 -25.0 22.1 -25.3
2025-09-29T12:27:37.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:27:37.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:27:37.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.435487
2025-09-29T12:27:37.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:27:37.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:27:37.397 [DEBUG] [Thread-155841] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:27:37.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:27:37.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:27:37.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:27:37.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:27:19', tmtdew=11.4, humidity=46.02, cloud=0.0, wind=18.12, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:27:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:27:37.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:27:37.491 [DEBUG] [Thread-155844] [transport.py] [_log()] starting thread (client mode): 0x2b968880
2025-09-29T12:27:37.491 [DEBUG] [Thread-155844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:27:37.507 [DEBUG] [Thread-155844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:27:37.507 [INFO] [Thread-155844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:27:37.514 [DEBUG] [Thread-155844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:27:37.514 [DEBUG] [Thread-155844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] client lang: <none>
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] server lang: <none>
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] kex follows: False
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] Compression: none
2025-09-29T12:27:37.515 [DEBUG] [Thread-155844] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:27:37.571 [DEBUG] [Thread-155844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:27:37.571 [DEBUG] [Thread-155844] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:27:37.572 [DEBUG] [Thread-155844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:27:37.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:27:37.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:27:37.627 [DEBUG] [Thread-155844] [transport.py] [_log()] userauth is OK
2025-09-29T12:27:37.627 [DEBUG] [Thread-155844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:27:37.628 [DEBUG] [Thread-155844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:27:37.628 [DEBUG] [Thread-155844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:27:37.628 [DEBUG] [Thread-155844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:27:37.646 [INFO] [Thread-155844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:27:37.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:27:37.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:27:38.624 [DEBUG] [Thread-155844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:27:38.624 [DEBUG] [Thread-155844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:27:38.672 [DEBUG] [Thread-155844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:27:38.672 [DEBUG] [Thread-155844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:27:38.681 [DEBUG] [Thread-155844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:27:38.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:27:38.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:27:38.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:27:38.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:27:38.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:27:38.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:27:38.715 [DEBUG] [Thread-155844] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:27:39.066 [DEBUG] [Thread-155846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:27:44.878 [DEBUG] [Thread-155847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:27:47.180 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:27:47.182 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:27:48.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:27:48.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:27:48.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:27:49.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 27, 19), 11.4, 46.02, 0.0, 18.12, 12.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:27:49.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:27:19
2025-09-29T12:27:49.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:27:49.561 [DEBUG] [Thread-155848] [transport.py] [_log()] starting thread (client mode): 0x2b96b5b0
2025-09-29T12:27:49.561 [DEBUG] [Thread-155848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:27:49.579 [DEBUG] [Thread-155848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:27:49.579 [INFO] [Thread-155848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:27:49.582 [DEBUG] [Thread-155848] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:27:49.582 [DEBUG] [Thread-155848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:27:49.582 [DEBUG] [Thread-155848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:27:49.582 [DEBUG] [Thread-155848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:49.582 [DEBUG] [Thread-155848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:49.582 [DEBUG] [Thread-155848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:49.582 [DEBUG] [Thread-155848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:49.582 [DEBUG] [Thread-155848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] client lang: <none>
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] server lang: <none>
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] kex follows: False
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] Compression: none
2025-09-29T12:27:49.583 [DEBUG] [Thread-155848] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:27:49.598 [DEBUG] [Thread-155848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:27:49.599 [DEBUG] [Thread-155848] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:27:49.599 [DEBUG] [Thread-155848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:27:49.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:27:49.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:27:49.601 [DEBUG] [Thread-155848] [transport.py] [_log()] userauth is OK
2025-09-29T12:27:49.601 [DEBUG] [Thread-155848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:27:49.601 [DEBUG] [Thread-155848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:27:49.601 [DEBUG] [Thread-155848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:27:49.601 [DEBUG] [Thread-155848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:27:49.622 [INFO] [Thread-155848] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:27:49.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:27:50.287 [DEBUG] [Thread-155848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:27:50.287 [DEBUG] [Thread-155848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:27:50.287 [DEBUG] [Thread-155848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:27:50.328 [DEBUG] [Thread-155848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:27:50.329 [DEBUG] [Thread-155848] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:27:50.332 [DEBUG] [Thread-155848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:27:50.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:27:50.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:27:50.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:27:50.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:27:50.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:27:50.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:27:50.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:27:50.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:27:50.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:27:50.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.435834 -999.00  +13.30  12.66     49   +3.00 1 1 1 1 1   888    0 11.54 54.88 ----- 11.7 12.7 172.6 18.0 21.9 -25.8 20.6 -24.8 20.9 -25.7 22.1 -26.3
2025-09-29T12:27:50.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:27:50.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:27:50.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.435834
2025-09-29T12:27:50.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:27:50.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:27:50.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:27:50.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:27:50.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:27:50.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:27:19', tmtdew=11.4, humidity=46.02, cloud=0.0, wind=18.12, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:27:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:27:50.358 [DEBUG] [Thread-155848] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:27:50.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:27:50.459 [DEBUG] [Thread-155851] [transport.py] [_log()] starting thread (client mode): 0x28704d90
2025-09-29T12:27:50.459 [DEBUG] [Thread-155851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:27:50.476 [DEBUG] [Thread-155851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:27:50.477 [INFO] [Thread-155851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:27:50.484 [DEBUG] [Thread-155851] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:27:50.484 [DEBUG] [Thread-155851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:27:50.484 [DEBUG] [Thread-155851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] client lang: <none>
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] server lang: <none>
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] kex follows: False
2025-09-29T12:27:50.485 [DEBUG] [Thread-155851] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:27:50.486 [DEBUG] [Thread-155851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:27:50.486 [DEBUG] [Thread-155851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:27:50.486 [DEBUG] [Thread-155851] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:27:50.486 [DEBUG] [Thread-155851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:27:50.486 [DEBUG] [Thread-155851] [transport.py] [_log()] Compression: none
2025-09-29T12:27:50.486 [DEBUG] [Thread-155851] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:27:50.543 [DEBUG] [Thread-155851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:27:50.544 [DEBUG] [Thread-155851] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:27:50.544 [DEBUG] [Thread-155851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:27:50.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:27:50.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:27:50.599 [DEBUG] [Thread-155851] [transport.py] [_log()] userauth is OK
2025-09-29T12:27:50.600 [DEBUG] [Thread-155851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:27:50.600 [DEBUG] [Thread-155851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:27:50.600 [DEBUG] [Thread-155851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:27:50.600 [DEBUG] [Thread-155851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:27:50.619 [INFO] [Thread-155851] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:27:50.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:27:50.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:27:51.607 [DEBUG] [Thread-155851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:27:51.607 [DEBUG] [Thread-155851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:27:51.655 [DEBUG] [Thread-155851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:27:51.655 [DEBUG] [Thread-155851] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:27:51.664 [DEBUG] [Thread-155851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:27:51.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:27:51.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:27:51.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:27:51.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:27:51.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:27:51.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:27:51.698 [DEBUG] [Thread-155851] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:27:59.919 [DEBUG] [Thread-155853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:28:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:28:01.700 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:28:01.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:28:02.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 27, 52), 11.31, 46.29, 0.0, 15.67, 12.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:28:02.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:27:52
2025-09-29T12:28:02.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:28:02.567 [DEBUG] [Thread-155854] [transport.py] [_log()] starting thread (client mode): 0x2b9af280
2025-09-29T12:28:02.568 [DEBUG] [Thread-155854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:02.589 [DEBUG] [Thread-155854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:28:02.589 [INFO] [Thread-155854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:02.592 [DEBUG] [Thread-155854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:02.593 [DEBUG] [Thread-155854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:02.593 [DEBUG] [Thread-155854] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:02.593 [DEBUG] [Thread-155854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:02.593 [DEBUG] [Thread-155854] [transport.py] [_log()] Compression: none
2025-09-29T12:28:02.593 [DEBUG] [Thread-155854] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:02.608 [DEBUG] [Thread-155854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:02.608 [DEBUG] [Thread-155854] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:02.608 [DEBUG] [Thread-155854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:28:02.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:28:02.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:02.609 [DEBUG] [Thread-155854] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:02.609 [DEBUG] [Thread-155854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:02.609 [DEBUG] [Thread-155854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:02.609 [DEBUG] [Thread-155854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:28:02.609 [DEBUG] [Thread-155854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:02.635 [INFO] [Thread-155854] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:02.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:03.474 [DEBUG] [Thread-155854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:03.474 [DEBUG] [Thread-155854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:03.474 [DEBUG] [Thread-155854] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:28:03.515 [DEBUG] [Thread-155854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:03.515 [DEBUG] [Thread-155854] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:03.517 [DEBUG] [Thread-155854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:03.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:03.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:28:03.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:28:03.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:28:03.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:03.533 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:28:03.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:03.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:03.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:28:03.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.435834 -999.00  +13.30  12.66     49   +3.00 1 1 1 1 1   888    0 11.54 54.88 ----- 11.7 12.7 172.6 18.0 21.9 -25.8 20.6 -24.8 20.9 -25.7 22.1 -26.3
2025-09-29T12:28:03.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:28:03.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:28:03.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.435834
2025-09-29T12:28:03.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:28:03.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:28:03.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:28:03.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:28:03.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:28:03.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:27:52', tmtdew=11.31, humidity=46.29, cloud=0.0, wind=15.67, temperature=12.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:27:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:28:03.535 [DEBUG] [Thread-155854] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:03.609 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:28:03.620 [DEBUG] [Thread-155857] [transport.py] [_log()] starting thread (client mode): 0x2b96bd00
2025-09-29T12:28:03.620 [DEBUG] [Thread-155857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:03.637 [DEBUG] [Thread-155857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:28:03.637 [INFO] [Thread-155857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:28:03.644 [DEBUG] [Thread-155857] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] Compression: none
2025-09-29T12:28:03.645 [DEBUG] [Thread-155857] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:03.703 [DEBUG] [Thread-155857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:03.704 [DEBUG] [Thread-155857] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:03.704 [DEBUG] [Thread-155857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:28:03.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:28:03.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:03.759 [DEBUG] [Thread-155857] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:03.760 [DEBUG] [Thread-155857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:03.760 [DEBUG] [Thread-155857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:03.760 [DEBUG] [Thread-155857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:28:03.760 [DEBUG] [Thread-155857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:03.773 [INFO] [Thread-155857] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:03.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:28:03.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:04.741 [DEBUG] [Thread-155857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:04.741 [DEBUG] [Thread-155857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:04.789 [DEBUG] [Thread-155857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:04.789 [DEBUG] [Thread-155857] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:04.797 [DEBUG] [Thread-155857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:04.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:04.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:28:04.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:28:04.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:04.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:04.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:04.830 [DEBUG] [Thread-155857] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:14.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:28:14.832 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:28:14.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:28:14.961 [DEBUG] [Thread-155859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:28:15.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 27, 52), 11.31, 46.29, 0.0, 15.67, 12.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:28:15.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:27:52
2025-09-29T12:28:15.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:28:15.655 [DEBUG] [Thread-155860] [transport.py] [_log()] starting thread (client mode): 0x2e34acb0
2025-09-29T12:28:15.656 [DEBUG] [Thread-155860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:15.677 [DEBUG] [Thread-155860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:28:15.677 [INFO] [Thread-155860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:28:15.680 [DEBUG] [Thread-155860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:15.680 [DEBUG] [Thread-155860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:28:15.680 [DEBUG] [Thread-155860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:15.680 [DEBUG] [Thread-155860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:15.680 [DEBUG] [Thread-155860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] Compression: none
2025-09-29T12:28:15.681 [DEBUG] [Thread-155860] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:15.699 [DEBUG] [Thread-155860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:15.699 [DEBUG] [Thread-155860] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:15.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:28:15.700 [DEBUG] [Thread-155860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:28:15.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:15.702 [DEBUG] [Thread-155860] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:15.702 [DEBUG] [Thread-155860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:15.703 [DEBUG] [Thread-155860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:15.703 [DEBUG] [Thread-155860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:28:15.703 [DEBUG] [Thread-155860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:15.737 [INFO] [Thread-155860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:15.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:16.613 [DEBUG] [Thread-155860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:16.614 [DEBUG] [Thread-155860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:16.614 [DEBUG] [Thread-155860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:28:16.654 [DEBUG] [Thread-155860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:16.654 [DEBUG] [Thread-155860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:16.657 [DEBUG] [Thread-155860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:16.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:16.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:28:16.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:28:16.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:28:16.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:16.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:28:16.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:16.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:16.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:28:16.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.435834 -999.00  +13.30  12.66     49   +3.00 1 1 1 1 1   888    0 11.54 54.88 ----- 11.7 12.7 172.6 18.0 21.9 -25.8 20.6 -24.8 20.9 -25.7 22.1 -26.3
2025-09-29T12:28:16.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:28:16.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:28:16.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.435834
2025-09-29T12:28:16.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:28:16.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:28:16.685 [DEBUG] [Thread-155860] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:16.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:28:16.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:28:16.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:28:16.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:27:52', tmtdew=11.31, humidity=46.29, cloud=0.0, wind=15.67, temperature=12.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:27:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:28:16.762 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:28:16.771 [DEBUG] [Thread-155863] [transport.py] [_log()] starting thread (client mode): 0x2b91cb80
2025-09-29T12:28:16.771 [DEBUG] [Thread-155863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:16.786 [DEBUG] [Thread-155863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:28:16.786 [INFO] [Thread-155863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:16.794 [DEBUG] [Thread-155863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] Compression: none
2025-09-29T12:28:16.795 [DEBUG] [Thread-155863] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:16.851 [DEBUG] [Thread-155863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:16.852 [DEBUG] [Thread-155863] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:16.852 [DEBUG] [Thread-155863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:28:16.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:28:16.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:16.907 [DEBUG] [Thread-155863] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:16.907 [DEBUG] [Thread-155863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:16.907 [DEBUG] [Thread-155863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:16.907 [DEBUG] [Thread-155863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:28:16.907 [DEBUG] [Thread-155863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:16.927 [INFO] [Thread-155863] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:16.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:28:16.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:17.883 [DEBUG] [Thread-155863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:17.883 [DEBUG] [Thread-155863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:17.931 [DEBUG] [Thread-155863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:17.931 [DEBUG] [Thread-155863] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:17.941 [DEBUG] [Thread-155863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:17.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:17.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:28:17.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:28:17.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:17.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:17.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:17.976 [DEBUG] [Thread-155863] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:27.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:28:27.979 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:28:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:28:28.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 28, 24), 11.26, 46.47, 0.0, 14.36, 12.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:28:28.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:28:24
2025-09-29T12:28:28.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:28:28.809 [DEBUG] [Thread-155865] [transport.py] [_log()] starting thread (client mode): 0x2b955390
2025-09-29T12:28:28.809 [DEBUG] [Thread-155865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:28.828 [DEBUG] [Thread-155865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:28:28.828 [INFO] [Thread-155865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:28.832 [DEBUG] [Thread-155865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:28.833 [DEBUG] [Thread-155865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:28.833 [DEBUG] [Thread-155865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:28.833 [DEBUG] [Thread-155865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:28.833 [DEBUG] [Thread-155865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:28.833 [DEBUG] [Thread-155865] [transport.py] [_log()] Compression: none
2025-09-29T12:28:28.833 [DEBUG] [Thread-155865] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:28.850 [DEBUG] [Thread-155865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:28.851 [DEBUG] [Thread-155865] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:28.852 [DEBUG] [Thread-155865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:28:28.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:28:28.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:28.854 [DEBUG] [Thread-155865] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:28.855 [DEBUG] [Thread-155865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:28.855 [DEBUG] [Thread-155865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:28.855 [DEBUG] [Thread-155865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:28:28.855 [DEBUG] [Thread-155865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:28.889 [INFO] [Thread-155865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:28.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:29.525 [DEBUG] [Thread-155865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:29.525 [DEBUG] [Thread-155865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:29.525 [DEBUG] [Thread-155865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:28:29.566 [DEBUG] [Thread-155865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:29.566 [DEBUG] [Thread-155865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:29.569 [DEBUG] [Thread-155865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:29.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:29.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:28:29.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:28:29.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:28:29.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:29.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:28:29.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:29.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:29.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:28:29.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.436182 -999.00  +13.20  16.74     49   +3.00 1 1 1 1 1   888    0 11.44 59.53 ----- 21.6 16.7 147.9 26.4 21.7 -26.6 20.6 -25.6 20.9 -26.8 22.2 -26.5
2025-09-29T12:28:29.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:28:29.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:28:29.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.436182
2025-09-29T12:28:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:28:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:28:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:28:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:28:29.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:28:29.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:28:24', tmtdew=11.26, humidity=46.47, cloud=0.0, wind=14.36, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:28:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:28:29.595 [DEBUG] [Thread-155865] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:29.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:28:29.690 [DEBUG] [Thread-155868] [transport.py] [_log()] starting thread (client mode): 0x2b9ac8b0
2025-09-29T12:28:29.690 [DEBUG] [Thread-155868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:29.704 [DEBUG] [Thread-155868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:28:29.704 [INFO] [Thread-155868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:29.712 [DEBUG] [Thread-155868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:29.713 [DEBUG] [Thread-155868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:29.713 [DEBUG] [Thread-155868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:29.713 [DEBUG] [Thread-155868] [transport.py] [_log()] Compression: none
2025-09-29T12:28:29.713 [DEBUG] [Thread-155868] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:29.775 [DEBUG] [Thread-155868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:29.776 [DEBUG] [Thread-155868] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:29.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:28:29.777 [DEBUG] [Thread-155868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:28:29.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:29.831 [DEBUG] [Thread-155868] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:29.831 [DEBUG] [Thread-155868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:29.832 [DEBUG] [Thread-155868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:29.832 [DEBUG] [Thread-155868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:28:29.832 [DEBUG] [Thread-155868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:29.850 [INFO] [Thread-155868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:29.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:28:29.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:29.995 [DEBUG] [Thread-155870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:28:30.786 [DEBUG] [Thread-155868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:30.786 [DEBUG] [Thread-155868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:30.834 [DEBUG] [Thread-155868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:30.834 [DEBUG] [Thread-155868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:30.843 [DEBUG] [Thread-155868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:30.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:30.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:28:30.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:28:30.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:30.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:30.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:30.878 [DEBUG] [Thread-155868] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:39.125 [DEBUG] [Thread-155871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:28:40.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:28:40.872 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:28:40.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:28:41.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 28, 24), 11.26, 46.47, 0.0, 14.36, 12.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:28:41.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:28:24
2025-09-29T12:28:41.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:28:41.738 [DEBUG] [Thread-155872] [transport.py] [_log()] starting thread (client mode): 0x2b96f790
2025-09-29T12:28:41.738 [DEBUG] [Thread-155872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:41.758 [DEBUG] [Thread-155872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:28:41.758 [INFO] [Thread-155872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:28:41.761 [DEBUG] [Thread-155872] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:41.761 [DEBUG] [Thread-155872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:28:41.761 [DEBUG] [Thread-155872] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:41.761 [DEBUG] [Thread-155872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:41.761 [DEBUG] [Thread-155872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] Compression: none
2025-09-29T12:28:41.762 [DEBUG] [Thread-155872] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:41.778 [DEBUG] [Thread-155872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:41.778 [DEBUG] [Thread-155872] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:41.778 [DEBUG] [Thread-155872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:28:41.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:28:41.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:41.779 [DEBUG] [Thread-155872] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:41.779 [DEBUG] [Thread-155872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:41.779 [DEBUG] [Thread-155872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:41.779 [DEBUG] [Thread-155872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:28:41.779 [DEBUG] [Thread-155872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:41.807 [INFO] [Thread-155872] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:41.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:42.612 [DEBUG] [Thread-155872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:42.612 [DEBUG] [Thread-155872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:42.612 [DEBUG] [Thread-155872] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:28:42.653 [DEBUG] [Thread-155872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:42.653 [DEBUG] [Thread-155872] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:42.655 [DEBUG] [Thread-155872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:42.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:42.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:28:42.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:28:42.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:28:42.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:42.675 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:28:42.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:42.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:28:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.436182 -999.00  +13.20  16.74     49   +3.00 1 1 1 1 1   888    0 11.44 59.53 ----- 21.6 16.7 147.9 26.4 21.7 -26.6 20.6 -25.6 20.9 -26.8 22.2 -26.5
2025-09-29T12:28:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:28:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:28:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.436182
2025-09-29T12:28:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:28:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:28:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:28:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:28:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:28:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:28:24', tmtdew=11.26, humidity=46.47, cloud=0.0, wind=14.36, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:28:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:28:42.676 [DEBUG] [Thread-155872] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:42.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:28:42.763 [DEBUG] [Thread-155875] [transport.py] [_log()] starting thread (client mode): 0x2b9ae560
2025-09-29T12:28:42.763 [DEBUG] [Thread-155875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:42.779 [DEBUG] [Thread-155875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:28:42.779 [INFO] [Thread-155875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:28:42.786 [DEBUG] [Thread-155875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] Compression: none
2025-09-29T12:28:42.787 [DEBUG] [Thread-155875] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:42.842 [DEBUG] [Thread-155875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:42.842 [DEBUG] [Thread-155875] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:42.843 [DEBUG] [Thread-155875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:28:42.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:28:42.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:42.899 [DEBUG] [Thread-155875] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:42.899 [DEBUG] [Thread-155875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:42.899 [DEBUG] [Thread-155875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:42.899 [DEBUG] [Thread-155875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:28:42.899 [DEBUG] [Thread-155875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:42.913 [INFO] [Thread-155875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:42.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:28:42.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:43.861 [DEBUG] [Thread-155875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:43.861 [DEBUG] [Thread-155875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:43.909 [DEBUG] [Thread-155875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:43.909 [DEBUG] [Thread-155875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:43.917 [DEBUG] [Thread-155875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:43.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:43.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:28:43.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:28:43.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:43.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:43.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:43.948 [DEBUG] [Thread-155875] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:45.035 [DEBUG] [Thread-155877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:28:47.324 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:28:47.325 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:28:53.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:28:53.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:28:53.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:28:54.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 28, 24), 11.26, 46.47, 0.0, 14.36, 12.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:28:54.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:28:24
2025-09-29T12:28:54.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:28:54.788 [DEBUG] [Thread-155878] [transport.py] [_log()] starting thread (client mode): 0x2b9aecb0
2025-09-29T12:28:54.788 [DEBUG] [Thread-155878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:54.809 [DEBUG] [Thread-155878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:28:54.809 [INFO] [Thread-155878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] Compression: none
2025-09-29T12:28:54.812 [DEBUG] [Thread-155878] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:54.830 [DEBUG] [Thread-155878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:54.830 [DEBUG] [Thread-155878] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:54.830 [DEBUG] [Thread-155878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:28:54.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:28:54.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:54.832 [DEBUG] [Thread-155878] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:54.833 [DEBUG] [Thread-155878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:54.833 [DEBUG] [Thread-155878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:54.833 [DEBUG] [Thread-155878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:28:54.833 [DEBUG] [Thread-155878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:54.868 [INFO] [Thread-155878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:54.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:55.673 [DEBUG] [Thread-155878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:55.673 [DEBUG] [Thread-155878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:55.674 [DEBUG] [Thread-155878] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:28:55.714 [DEBUG] [Thread-155878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:55.714 [DEBUG] [Thread-155878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:55.717 [DEBUG] [Thread-155878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:55.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:55.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:28:55.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:28:55.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:28:55.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:55.740 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:28:55.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:55.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:55.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:28:55.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.436182 -999.00  +13.20  16.74     49   +3.00 1 1 1 1 1   888    0 11.44 59.53 ----- 21.6 16.7 147.9 26.4 21.7 -26.6 20.6 -25.6 20.9 -26.8 22.2 -26.5
2025-09-29T12:28:55.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:28:55.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:28:55.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.436182
2025-09-29T12:28:55.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:28:55.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:28:55.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:28:55.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:28:55.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:28:55.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:28:24', tmtdew=11.26, humidity=46.47, cloud=0.0, wind=14.36, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:28:06.125', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:28:55.743 [DEBUG] [Thread-155878] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:28:55.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:28:55.839 [DEBUG] [Thread-155881] [transport.py] [_log()] starting thread (client mode): 0x2e3c3670
2025-09-29T12:28:55.839 [DEBUG] [Thread-155881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:28:55.854 [DEBUG] [Thread-155881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:28:55.854 [INFO] [Thread-155881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] client lang: <none>
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] server lang: <none>
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] kex follows: False
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] Compression: none
2025-09-29T12:28:55.862 [DEBUG] [Thread-155881] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:28:55.920 [DEBUG] [Thread-155881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:28:55.920 [DEBUG] [Thread-155881] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:28:55.920 [DEBUG] [Thread-155881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:28:55.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:28:55.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:28:55.979 [DEBUG] [Thread-155881] [transport.py] [_log()] userauth is OK
2025-09-29T12:28:55.979 [DEBUG] [Thread-155881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:28:55.979 [DEBUG] [Thread-155881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:28:55.979 [DEBUG] [Thread-155881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:28:55.979 [DEBUG] [Thread-155881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:28:55.997 [INFO] [Thread-155881] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:28:55.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:28:55.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:28:56.972 [DEBUG] [Thread-155881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:28:56.973 [DEBUG] [Thread-155881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:28:57.021 [DEBUG] [Thread-155881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:28:57.021 [DEBUG] [Thread-155881] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:28:57.029 [DEBUG] [Thread-155881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:28:57.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:28:57.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:28:57.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:28:57.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:28:57.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:28:57.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:28:57.061 [DEBUG] [Thread-155881] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:00.064 [DEBUG] [Thread-155883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:29:07.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:29:07.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:29:07.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:29:07.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 28, 56), 11.19, 46.66, 0.0, 19.02, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:29:07.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:28:56
2025-09-29T12:29:07.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:29:07.878 [DEBUG] [Thread-155884] [transport.py] [_log()] starting thread (client mode): 0x2b91e7d0
2025-09-29T12:29:07.878 [DEBUG] [Thread-155884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:07.898 [DEBUG] [Thread-155884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:29:07.898 [INFO] [Thread-155884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:29:07.902 [DEBUG] [Thread-155884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:07.902 [DEBUG] [Thread-155884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:29:07.902 [DEBUG] [Thread-155884] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:07.902 [DEBUG] [Thread-155884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:07.903 [DEBUG] [Thread-155884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:07.904 [DEBUG] [Thread-155884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:07.904 [DEBUG] [Thread-155884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:07.904 [DEBUG] [Thread-155884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:07.904 [DEBUG] [Thread-155884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:07.904 [DEBUG] [Thread-155884] [transport.py] [_log()] Compression: none
2025-09-29T12:29:07.905 [DEBUG] [Thread-155884] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:07.925 [DEBUG] [Thread-155884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:07.925 [DEBUG] [Thread-155884] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:07.926 [DEBUG] [Thread-155884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:29:07.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:29:07.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:07.928 [DEBUG] [Thread-155884] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:07.928 [DEBUG] [Thread-155884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:07.928 [DEBUG] [Thread-155884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:07.928 [DEBUG] [Thread-155884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:29:07.928 [DEBUG] [Thread-155884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:07.962 [INFO] [Thread-155884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:07.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:29:08.620 [DEBUG] [Thread-155884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:29:08.620 [DEBUG] [Thread-155884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:29:08.621 [DEBUG] [Thread-155884] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:29:08.661 [DEBUG] [Thread-155884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:29:08.661 [DEBUG] [Thread-155884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:29:08.665 [DEBUG] [Thread-155884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:29:08.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:29:08.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:29:08.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:29:08.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:29:08.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:29:08.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:29:08.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:29:08.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:29:08.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:29:08.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.436529 -999.00  +12.90  20.97     50   +2.90 1 1 1 1 1   888    0 11.98 67.92 ----- 15.5 21.0 119.7 31.5 21.6 -26.6 20.5 -25.7 20.7 -26.8 22.0 -28.2
2025-09-29T12:29:08.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:29:08.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:29:08.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.436529
2025-09-29T12:29:08.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:29:08.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:29:08.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:29:08.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:29:08.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:29:08.691 [DEBUG] [Thread-155884] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:08.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:28:56', tmtdew=11.19, humidity=46.66, cloud=0.0, wind=19.02, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:28:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:29:08.775 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:29:08.788 [DEBUG] [Thread-155887] [transport.py] [_log()] starting thread (client mode): 0x2b91d270
2025-09-29T12:29:08.788 [DEBUG] [Thread-155887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:08.802 [DEBUG] [Thread-155887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:29:08.802 [INFO] [Thread-155887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:29:08.810 [DEBUG] [Thread-155887] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:08.810 [DEBUG] [Thread-155887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:29:08.810 [DEBUG] [Thread-155887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] Compression: none
2025-09-29T12:29:08.811 [DEBUG] [Thread-155887] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:08.868 [DEBUG] [Thread-155887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:08.868 [DEBUG] [Thread-155887] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:08.869 [DEBUG] [Thread-155887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:29:08.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:29:08.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:08.923 [DEBUG] [Thread-155887] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:08.923 [DEBUG] [Thread-155887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:08.924 [DEBUG] [Thread-155887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:08.924 [DEBUG] [Thread-155887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:29:08.924 [DEBUG] [Thread-155887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:08.943 [INFO] [Thread-155887] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:08.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:29:08.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:29:09.893 [DEBUG] [Thread-155887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:29:09.893 [DEBUG] [Thread-155887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:29:09.941 [DEBUG] [Thread-155887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:29:09.941 [DEBUG] [Thread-155887] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:29:09.951 [DEBUG] [Thread-155887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:29:09.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:29:09.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:29:09.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:29:09.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:29:09.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:29:09.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:29:09.983 [DEBUG] [Thread-155887] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:15.095 [DEBUG] [Thread-155889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:29:19.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:29:19.985 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:29:19.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:29:20.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 28, 56), 11.19, 46.66, 0.0, 19.02, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:29:20.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:28:56
2025-09-29T12:29:20.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:29:20.831 [DEBUG] [Thread-155890] [transport.py] [_log()] starting thread (client mode): 0x2b96fc70
2025-09-29T12:29:20.832 [DEBUG] [Thread-155890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:20.847 [DEBUG] [Thread-155890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:29:20.847 [INFO] [Thread-155890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:20.849 [DEBUG] [Thread-155890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:20.850 [DEBUG] [Thread-155890] [transport.py] [_log()] Compression: none
2025-09-29T12:29:20.850 [DEBUG] [Thread-155890] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:20.867 [DEBUG] [Thread-155890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:20.867 [DEBUG] [Thread-155890] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:20.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:29:20.868 [DEBUG] [Thread-155890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:29:20.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:20.869 [DEBUG] [Thread-155890] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:20.869 [DEBUG] [Thread-155890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:20.869 [DEBUG] [Thread-155890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:20.869 [DEBUG] [Thread-155890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:29:20.869 [DEBUG] [Thread-155890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:20.887 [INFO] [Thread-155890] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:20.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:29:21.700 [DEBUG] [Thread-155890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:29:21.700 [DEBUG] [Thread-155890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:29:21.700 [DEBUG] [Thread-155890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:29:21.742 [DEBUG] [Thread-155890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:29:21.742 [DEBUG] [Thread-155890] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:29:21.745 [DEBUG] [Thread-155890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:29:21.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:29:21.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:29:21.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:29:21.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:29:21.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:29:21.763 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:29:21.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:29:21.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:29:21.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:29:21.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.436529 -999.00  +12.90  20.97     50   +2.90 1 1 1 1 1   888    0 11.98 67.92 ----- 15.5 21.0 119.7 31.5 21.6 -26.6 20.5 -25.7 20.7 -26.8 22.0 -28.2
2025-09-29T12:29:21.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:29:21.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:29:21.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.436529
2025-09-29T12:29:21.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:29:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:29:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:29:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:29:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:29:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:28:56', tmtdew=11.19, humidity=46.66, cloud=0.0, wind=19.02, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:28:36.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:29:21.764 [DEBUG] [Thread-155890] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:21.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:29:21.847 [DEBUG] [Thread-155893] [transport.py] [_log()] starting thread (client mode): 0x2b96a140
2025-09-29T12:29:21.847 [DEBUG] [Thread-155893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:21.862 [DEBUG] [Thread-155893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:29:21.862 [INFO] [Thread-155893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:29:21.869 [DEBUG] [Thread-155893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:21.869 [DEBUG] [Thread-155893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:29:21.869 [DEBUG] [Thread-155893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:21.869 [DEBUG] [Thread-155893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] Compression: none
2025-09-29T12:29:21.870 [DEBUG] [Thread-155893] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:21.926 [DEBUG] [Thread-155893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:21.926 [DEBUG] [Thread-155893] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:21.926 [DEBUG] [Thread-155893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:29:21.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:29:21.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:21.983 [DEBUG] [Thread-155893] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:21.983 [DEBUG] [Thread-155893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:21.983 [DEBUG] [Thread-155893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:21.983 [DEBUG] [Thread-155893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:29:21.983 [DEBUG] [Thread-155893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:21.996 [INFO] [Thread-155893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:21.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:29:21.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:29:22.950 [DEBUG] [Thread-155893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:29:22.950 [DEBUG] [Thread-155893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:29:22.998 [DEBUG] [Thread-155893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:29:22.998 [DEBUG] [Thread-155893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:29:23.006 [DEBUG] [Thread-155893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:29:23.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:29:23.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:29:23.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:29:23.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:29:23.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:29:23.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:29:23.038 [DEBUG] [Thread-155893] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:30.137 [DEBUG] [Thread-155895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:29:33.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:29:33.031 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:29:33.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:29:33.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 29, 28), 11.47, 45.83, 0.0, 19.3, 13.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:29:33.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:29:28
2025-09-29T12:29:33.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:29:33.860 [DEBUG] [Thread-155896] [transport.py] [_log()] starting thread (client mode): 0x2b9ae710
2025-09-29T12:29:33.860 [DEBUG] [Thread-155896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:33.874 [DEBUG] [Thread-155896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:29:33.874 [INFO] [Thread-155896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] Compression: none
2025-09-29T12:29:33.877 [DEBUG] [Thread-155896] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:33.893 [DEBUG] [Thread-155896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:33.894 [DEBUG] [Thread-155896] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:33.894 [DEBUG] [Thread-155896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:29:33.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:29:33.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:33.896 [DEBUG] [Thread-155896] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:33.897 [DEBUG] [Thread-155896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:33.897 [DEBUG] [Thread-155896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:33.897 [DEBUG] [Thread-155896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:29:33.897 [DEBUG] [Thread-155896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:33.910 [INFO] [Thread-155896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:33.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:29:34.574 [DEBUG] [Thread-155896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:29:34.574 [DEBUG] [Thread-155896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:29:34.575 [DEBUG] [Thread-155896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:29:34.615 [DEBUG] [Thread-155896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:29:34.615 [DEBUG] [Thread-155896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:29:34.618 [DEBUG] [Thread-155896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:29:34.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:29:34.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:29:34.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:29:34.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:29:34.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:29:34.640 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:29:34.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:29:34.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:29:34.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:29:34.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.436876 -999.00  +13.10  23.31     50   +2.90 1 1 1 1 1   888    0 12.10 75.97 ----- 19.5 23.3 170.6 26.7 21.5 -26.3 20.3 -27.7 20.7 -26.1 21.9 -27.4
2025-09-29T12:29:34.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:29:34.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:29:34.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.436876
2025-09-29T12:29:34.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:29:34.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:29:34.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:29:34.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:29:34.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:29:34.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:29:28', tmtdew=11.47, humidity=45.83, cloud=0.0, wind=19.3, temperature=13.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:29:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:29:34.643 [DEBUG] [Thread-155896] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:34.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:29:34.743 [DEBUG] [Thread-155899] [transport.py] [_log()] starting thread (client mode): 0x2b91f7c0
2025-09-29T12:29:34.744 [DEBUG] [Thread-155899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:34.758 [DEBUG] [Thread-155899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:29:34.758 [INFO] [Thread-155899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:29:34.765 [DEBUG] [Thread-155899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:34.765 [DEBUG] [Thread-155899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:29:34.765 [DEBUG] [Thread-155899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:34.765 [DEBUG] [Thread-155899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:34.765 [DEBUG] [Thread-155899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:34.765 [DEBUG] [Thread-155899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] Compression: none
2025-09-29T12:29:34.766 [DEBUG] [Thread-155899] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:34.822 [DEBUG] [Thread-155899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:34.823 [DEBUG] [Thread-155899] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:34.823 [DEBUG] [Thread-155899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:29:34.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:29:34.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:34.880 [DEBUG] [Thread-155899] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:34.880 [DEBUG] [Thread-155899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:34.880 [DEBUG] [Thread-155899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:34.880 [DEBUG] [Thread-155899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:29:34.880 [DEBUG] [Thread-155899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:34.899 [INFO] [Thread-155899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:34.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:29:34.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:29:35.867 [DEBUG] [Thread-155899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:29:35.867 [DEBUG] [Thread-155899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:29:35.915 [DEBUG] [Thread-155899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:29:35.915 [DEBUG] [Thread-155899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:29:35.924 [DEBUG] [Thread-155899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:29:35.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:29:35.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:29:35.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:29:35.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:29:35.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:29:35.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:29:35.958 [DEBUG] [Thread-155899] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:39.187 [DEBUG] [Thread-155901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:29:45.165 [DEBUG] [Thread-155902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:29:45.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:29:45.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:29:45.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:29:46.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 29, 28), 11.47, 45.83, 0.0, 19.3, 13.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:29:46.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:29:28
2025-09-29T12:29:46.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:29:46.794 [DEBUG] [Thread-155903] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e90
2025-09-29T12:29:46.794 [DEBUG] [Thread-155903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:46.816 [DEBUG] [Thread-155903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:29:46.816 [INFO] [Thread-155903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:29:46.819 [DEBUG] [Thread-155903] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:46.819 [DEBUG] [Thread-155903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:29:46.819 [DEBUG] [Thread-155903] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:46.819 [DEBUG] [Thread-155903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:46.819 [DEBUG] [Thread-155903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] Compression: none
2025-09-29T12:29:46.820 [DEBUG] [Thread-155903] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:46.836 [DEBUG] [Thread-155903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:46.837 [DEBUG] [Thread-155903] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:46.837 [DEBUG] [Thread-155903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:29:46.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:29:46.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:46.839 [DEBUG] [Thread-155903] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:46.840 [DEBUG] [Thread-155903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:46.840 [DEBUG] [Thread-155903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:46.840 [DEBUG] [Thread-155903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:29:46.840 [DEBUG] [Thread-155903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:46.864 [INFO] [Thread-155903] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:46.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:29:47.467 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:29:47.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:29:47.525 [DEBUG] [Thread-155903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:29:47.526 [DEBUG] [Thread-155903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:29:47.526 [DEBUG] [Thread-155903] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:29:47.566 [DEBUG] [Thread-155903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:29:47.566 [DEBUG] [Thread-155903] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:29:47.569 [DEBUG] [Thread-155903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:29:47.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:29:47.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:29:47.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:29:47.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:29:47.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:29:47.594 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:29:47.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:29:47.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:29:47.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:29:47.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.436876 -999.00  +13.10  23.31     50   +2.90 1 1 1 1 1   888    0 12.10 75.97 ----- 19.5 23.3 170.6 26.7 21.5 -26.3 20.3 -27.7 20.7 -26.1 21.9 -27.4
2025-09-29T12:29:47.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:29:47.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:29:47.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.436876
2025-09-29T12:29:47.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:29:47.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:29:47.597 [DEBUG] [Thread-155903] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:47.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:29:47.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:29:47.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:29:47.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:29:28', tmtdew=11.47, humidity=45.83, cloud=0.0, wind=19.3, temperature=13.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:29:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:29:47.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:29:47.691 [DEBUG] [Thread-155906] [transport.py] [_log()] starting thread (client mode): 0x2b91d150
2025-09-29T12:29:47.691 [DEBUG] [Thread-155906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:47.706 [DEBUG] [Thread-155906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:29:47.706 [INFO] [Thread-155906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:29:47.714 [DEBUG] [Thread-155906] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:47.714 [DEBUG] [Thread-155906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:29:47.714 [DEBUG] [Thread-155906] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:47.714 [DEBUG] [Thread-155906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:47.714 [DEBUG] [Thread-155906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:47.714 [DEBUG] [Thread-155906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:47.714 [DEBUG] [Thread-155906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:47.714 [DEBUG] [Thread-155906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:47.715 [DEBUG] [Thread-155906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:47.715 [DEBUG] [Thread-155906] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:47.715 [DEBUG] [Thread-155906] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:47.715 [DEBUG] [Thread-155906] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:47.715 [DEBUG] [Thread-155906] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:47.715 [DEBUG] [Thread-155906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:47.715 [DEBUG] [Thread-155906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:47.715 [DEBUG] [Thread-155906] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:47.716 [DEBUG] [Thread-155906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:47.716 [DEBUG] [Thread-155906] [transport.py] [_log()] Compression: none
2025-09-29T12:29:47.716 [DEBUG] [Thread-155906] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:47.771 [DEBUG] [Thread-155906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:47.772 [DEBUG] [Thread-155906] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:47.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:29:47.773 [DEBUG] [Thread-155906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:29:47.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:47.827 [DEBUG] [Thread-155906] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:47.827 [DEBUG] [Thread-155906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:47.827 [DEBUG] [Thread-155906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:47.827 [DEBUG] [Thread-155906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:29:47.827 [DEBUG] [Thread-155906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:47.846 [INFO] [Thread-155906] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:47.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:29:47.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:29:48.788 [DEBUG] [Thread-155906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:29:48.788 [DEBUG] [Thread-155906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:29:48.836 [DEBUG] [Thread-155906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:29:48.837 [DEBUG] [Thread-155906] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:29:48.845 [DEBUG] [Thread-155906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:29:48.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:29:48.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:29:48.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:29:48.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:29:48.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:29:48.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:29:48.881 [DEBUG] [Thread-155906] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:29:58.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:29:58.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:29:58.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:29:59.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 29, 28), 11.47, 45.83, 0.0, 19.3, 13.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:29:59.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:29:28
2025-09-29T12:29:59.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:29:59.740 [DEBUG] [Thread-155908] [transport.py] [_log()] starting thread (client mode): 0x2b91eb90
2025-09-29T12:29:59.740 [DEBUG] [Thread-155908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:29:59.759 [DEBUG] [Thread-155908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:29:59.759 [INFO] [Thread-155908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] client lang: <none>
2025-09-29T12:29:59.762 [DEBUG] [Thread-155908] [transport.py] [_log()] server lang: <none>
2025-09-29T12:29:59.763 [DEBUG] [Thread-155908] [transport.py] [_log()] kex follows: False
2025-09-29T12:29:59.763 [DEBUG] [Thread-155908] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:29:59.763 [DEBUG] [Thread-155908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:29:59.763 [DEBUG] [Thread-155908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:29:59.763 [DEBUG] [Thread-155908] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:29:59.763 [DEBUG] [Thread-155908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:29:59.763 [DEBUG] [Thread-155908] [transport.py] [_log()] Compression: none
2025-09-29T12:29:59.763 [DEBUG] [Thread-155908] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:29:59.778 [DEBUG] [Thread-155908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:29:59.778 [DEBUG] [Thread-155908] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:29:59.778 [DEBUG] [Thread-155908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:29:59.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:29:59.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:29:59.779 [DEBUG] [Thread-155908] [transport.py] [_log()] userauth is OK
2025-09-29T12:29:59.779 [DEBUG] [Thread-155908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:29:59.779 [DEBUG] [Thread-155908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:29:59.779 [DEBUG] [Thread-155908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:29:59.779 [DEBUG] [Thread-155908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:29:59.791 [INFO] [Thread-155908] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:29:59.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:00.215 [DEBUG] [Thread-155910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:30:00.426 [DEBUG] [Thread-155908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:00.426 [DEBUG] [Thread-155908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:00.426 [DEBUG] [Thread-155908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:30:00.467 [DEBUG] [Thread-155908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:00.467 [DEBUG] [Thread-155908] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:00.469 [DEBUG] [Thread-155908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:00.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:00.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:30:00.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:30:00.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:30:00.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:00.480 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:30:00.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:00.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:00.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:30:00.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.436876 -999.00  +13.10  23.31     50   +2.90 1 1 1 1 1   888    0 12.10 75.97 ----- 19.5 23.3 170.6 26.7 21.5 -26.3 20.3 -27.7 20.7 -26.1 21.9 -27.4
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.436876
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:30:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:29:28', tmtdew=11.47, humidity=45.83, cloud=0.0, wind=19.3, temperature=13.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:29:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:30:00.482 [DEBUG] [Thread-155908] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:00.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:30:00.565 [DEBUG] [Thread-155912] [transport.py] [_log()] starting thread (client mode): 0x2e38e170
2025-09-29T12:30:00.565 [DEBUG] [Thread-155912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:30:00.581 [DEBUG] [Thread-155912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:30:00.581 [INFO] [Thread-155912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:30:00.588 [DEBUG] [Thread-155912] [transport.py] [_log()] client lang: <none>
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] server lang: <none>
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] kex follows: False
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] Compression: none
2025-09-29T12:30:00.589 [DEBUG] [Thread-155912] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:30:00.650 [DEBUG] [Thread-155912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:30:00.650 [DEBUG] [Thread-155912] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:30:00.650 [DEBUG] [Thread-155912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:30:00.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:30:00.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:30:00.707 [DEBUG] [Thread-155912] [transport.py] [_log()] userauth is OK
2025-09-29T12:30:00.707 [DEBUG] [Thread-155912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:30:00.707 [DEBUG] [Thread-155912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:30:00.707 [DEBUG] [Thread-155912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:30:00.707 [DEBUG] [Thread-155912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:30:00.725 [INFO] [Thread-155912] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:30:00.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:30:00.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:01.696 [DEBUG] [Thread-155912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:01.697 [DEBUG] [Thread-155912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:01.745 [DEBUG] [Thread-155912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:01.745 [DEBUG] [Thread-155912] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:01.753 [DEBUG] [Thread-155912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:01.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:01.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:30:01.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:30:01.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:01.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:01.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:01.785 [DEBUG] [Thread-155912] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:11.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:30:11.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:30:11.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:30:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 30), 11.88, 44.29, 0.0, 17.68, 13.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:30:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:30:00
2025-09-29T12:30:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:30:12.629 [DEBUG] [Thread-155914] [transport.py] [_log()] starting thread (client mode): 0x2e38d780
2025-09-29T12:30:12.629 [DEBUG] [Thread-155914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:30:12.650 [DEBUG] [Thread-155914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:30:12.650 [INFO] [Thread-155914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:30:12.653 [DEBUG] [Thread-155914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] client lang: <none>
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] server lang: <none>
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] kex follows: False
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] Compression: none
2025-09-29T12:30:12.654 [DEBUG] [Thread-155914] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:30:12.672 [DEBUG] [Thread-155914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:30:12.672 [DEBUG] [Thread-155914] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:30:12.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:30:12.673 [DEBUG] [Thread-155914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:30:12.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:30:12.675 [DEBUG] [Thread-155914] [transport.py] [_log()] userauth is OK
2025-09-29T12:30:12.676 [DEBUG] [Thread-155914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:30:12.676 [DEBUG] [Thread-155914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:30:12.676 [DEBUG] [Thread-155914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:30:12.676 [DEBUG] [Thread-155914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:30:12.693 [INFO] [Thread-155914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:30:12.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:14.585 [DEBUG] [Thread-155914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:14.585 [DEBUG] [Thread-155914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:14.585 [DEBUG] [Thread-155914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:30:14.626 [DEBUG] [Thread-155914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:14.626 [DEBUG] [Thread-155914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:14.628 [DEBUG] [Thread-155914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:14.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:14.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:30:14.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:30:14.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:30:14.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:14.643 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:30:14.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.437223 -999.00  +13.00  15.88     50   +2.80 1 1 1 1 1   888    0 12.34 79.07 ----- 11.4 15.9 185.4 20.3 21.4 -26.4 19.9 -32.0 20.6 -25.5 21.9 -26.5
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.437223
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:30:14.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:30:00', tmtdew=11.88, humidity=44.29, cloud=0.0, wind=17.68, temperature=13.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:29:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:30:14.644 [DEBUG] [Thread-155914] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:14.716 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:30:14.727 [DEBUG] [Thread-155917] [transport.py] [_log()] starting thread (client mode): 0x2b91c490
2025-09-29T12:30:14.727 [DEBUG] [Thread-155917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:30:14.741 [DEBUG] [Thread-155917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:30:14.742 [INFO] [Thread-155917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:30:14.749 [DEBUG] [Thread-155917] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] client lang: <none>
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] server lang: <none>
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] kex follows: False
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] Compression: none
2025-09-29T12:30:14.750 [DEBUG] [Thread-155917] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:30:14.808 [DEBUG] [Thread-155917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:30:14.809 [DEBUG] [Thread-155917] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:30:14.809 [DEBUG] [Thread-155917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:30:14.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:30:14.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:30:14.867 [DEBUG] [Thread-155917] [transport.py] [_log()] userauth is OK
2025-09-29T12:30:14.867 [DEBUG] [Thread-155917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:30:14.867 [DEBUG] [Thread-155917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:30:14.867 [DEBUG] [Thread-155917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:30:14.867 [DEBUG] [Thread-155917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:30:14.887 [INFO] [Thread-155917] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:30:14.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:30:14.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:15.242 [DEBUG] [Thread-155919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:30:15.911 [DEBUG] [Thread-155917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:15.912 [DEBUG] [Thread-155917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:15.959 [DEBUG] [Thread-155917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:15.959 [DEBUG] [Thread-155917] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:15.968 [DEBUG] [Thread-155917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:15.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:15.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:30:15.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:30:16.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:16.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:16.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:16.010 [DEBUG] [Thread-155917] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:26.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:30:26.007 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:30:26.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:30:26.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 30), 11.88, 44.29, 0.0, 17.68, 13.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:30:26.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:30:00
2025-09-29T12:30:26.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:30:26.833 [DEBUG] [Thread-155920] [transport.py] [_log()] starting thread (client mode): 0x2b91e170
2025-09-29T12:30:26.833 [DEBUG] [Thread-155920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:30:26.852 [DEBUG] [Thread-155920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:30:26.852 [INFO] [Thread-155920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:30:26.855 [DEBUG] [Thread-155920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] client lang: <none>
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] server lang: <none>
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] kex follows: False
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:30:26.856 [DEBUG] [Thread-155920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:30:26.857 [DEBUG] [Thread-155920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:30:26.857 [DEBUG] [Thread-155920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:30:26.857 [DEBUG] [Thread-155920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:30:26.857 [DEBUG] [Thread-155920] [transport.py] [_log()] Compression: none
2025-09-29T12:30:26.857 [DEBUG] [Thread-155920] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:30:26.869 [DEBUG] [Thread-155920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:30:26.869 [DEBUG] [Thread-155920] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:30:26.869 [DEBUG] [Thread-155920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:30:26.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:30:26.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:30:26.871 [DEBUG] [Thread-155920] [transport.py] [_log()] userauth is OK
2025-09-29T12:30:26.871 [DEBUG] [Thread-155920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:30:26.871 [DEBUG] [Thread-155920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:30:26.871 [DEBUG] [Thread-155920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:30:26.871 [DEBUG] [Thread-155920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:30:26.905 [INFO] [Thread-155920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:30:26.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:27.561 [DEBUG] [Thread-155920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:27.561 [DEBUG] [Thread-155920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:27.561 [DEBUG] [Thread-155920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:30:27.602 [DEBUG] [Thread-155920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:27.603 [DEBUG] [Thread-155920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:27.606 [DEBUG] [Thread-155920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:27.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:27.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:30:27.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:30:27.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:30:27.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:27.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:30:27.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:27.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:30:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.437223 -999.00  +13.00  15.88     50   +2.80 1 1 1 1 1   888    0 12.34 79.07 ----- 11.4 15.9 185.4 20.3 21.4 -26.4 19.9 -32.0 20.6 -25.5 21.9 -26.5
2025-09-29T12:30:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:30:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:30:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.437223
2025-09-29T12:30:27.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:30:27.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:30:27.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:30:27.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:30:27.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:30:27.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:30:00', tmtdew=11.88, humidity=44.29, cloud=0.0, wind=17.68, temperature=13.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:29:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:30:27.634 [DEBUG] [Thread-155920] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:27.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:30:27.729 [DEBUG] [Thread-155923] [transport.py] [_log()] starting thread (client mode): 0x2b9c2920
2025-09-29T12:30:27.729 [DEBUG] [Thread-155923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:30:27.744 [DEBUG] [Thread-155923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:30:27.744 [INFO] [Thread-155923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:30:27.751 [DEBUG] [Thread-155923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:30:27.751 [DEBUG] [Thread-155923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] client lang: <none>
2025-09-29T12:30:27.752 [DEBUG] [Thread-155923] [transport.py] [_log()] server lang: <none>
2025-09-29T12:30:27.753 [DEBUG] [Thread-155923] [transport.py] [_log()] kex follows: False
2025-09-29T12:30:27.753 [DEBUG] [Thread-155923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:30:27.753 [DEBUG] [Thread-155923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:30:27.753 [DEBUG] [Thread-155923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:30:27.753 [DEBUG] [Thread-155923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:30:27.753 [DEBUG] [Thread-155923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:30:27.753 [DEBUG] [Thread-155923] [transport.py] [_log()] Compression: none
2025-09-29T12:30:27.753 [DEBUG] [Thread-155923] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:30:27.810 [DEBUG] [Thread-155923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:30:27.811 [DEBUG] [Thread-155923] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:30:27.811 [DEBUG] [Thread-155923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:30:27.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:30:27.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:30:27.867 [DEBUG] [Thread-155923] [transport.py] [_log()] userauth is OK
2025-09-29T12:30:27.867 [DEBUG] [Thread-155923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:30:27.867 [DEBUG] [Thread-155923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:30:27.867 [DEBUG] [Thread-155923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:30:27.867 [DEBUG] [Thread-155923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:30:27.886 [INFO] [Thread-155923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:30:27.886 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:30:27.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:28.843 [DEBUG] [Thread-155923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:28.843 [DEBUG] [Thread-155923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:28.891 [DEBUG] [Thread-155923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:28.891 [DEBUG] [Thread-155923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:28.900 [DEBUG] [Thread-155923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:28.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:28.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:30:28.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:30:28.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:28.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:28.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:28.935 [DEBUG] [Thread-155923] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:30.296 [DEBUG] [Thread-155925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:30:38.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:30:38.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:30:38.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:30:39.238 [DEBUG] [Thread-155926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:30:39.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 30, 32), 11.87, 44.31, 0.0, 16.15, 13.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:30:39.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:30:32
2025-09-29T12:30:39.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:30:39.806 [DEBUG] [Thread-155927] [transport.py] [_log()] starting thread (client mode): 0x2b9c14e0
2025-09-29T12:30:39.806 [DEBUG] [Thread-155927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:30:39.819 [DEBUG] [Thread-155927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:30:39.819 [INFO] [Thread-155927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] client lang: <none>
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] server lang: <none>
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] kex follows: False
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] Compression: none
2025-09-29T12:30:39.822 [DEBUG] [Thread-155927] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:30:39.837 [DEBUG] [Thread-155927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:30:39.838 [DEBUG] [Thread-155927] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:30:39.838 [DEBUG] [Thread-155927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:30:39.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:30:39.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:30:39.839 [DEBUG] [Thread-155927] [transport.py] [_log()] userauth is OK
2025-09-29T12:30:39.839 [DEBUG] [Thread-155927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:30:39.839 [DEBUG] [Thread-155927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:30:39.839 [DEBUG] [Thread-155927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:30:39.839 [DEBUG] [Thread-155927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:30:39.855 [INFO] [Thread-155927] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:30:39.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:41.404 [DEBUG] [Thread-155927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:41.404 [DEBUG] [Thread-155927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:41.413 [DEBUG] [Thread-155927] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:30:41.445 [DEBUG] [Thread-155927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:41.445 [DEBUG] [Thread-155927] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:41.448 [DEBUG] [Thread-155927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:41.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:41.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:30:41.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:30:41.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:30:41.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:41.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:30:41.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:41.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:41.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:30:41.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.437223 -999.00  +13.00  15.88     50   +2.80 1 1 1 1 1   888    0 12.34 79.07 ----- 11.4 15.9 185.4 20.3 21.4 -26.4 19.9 -32.0 20.6 -25.5 21.9 -26.5
2025-09-29T12:30:41.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:30:41.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:30:41.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.437223
2025-09-29T12:30:41.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:30:41.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:30:41.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:30:41.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:30:41.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:30:41.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:30:32', tmtdew=11.87, humidity=44.31, cloud=0.0, wind=16.15, temperature=13.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:29:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:30:41.474 [DEBUG] [Thread-155927] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:41.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:30:41.571 [DEBUG] [Thread-155930] [transport.py] [_log()] starting thread (client mode): 0x2b9689d0
2025-09-29T12:30:41.571 [DEBUG] [Thread-155930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:30:41.586 [DEBUG] [Thread-155930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:30:41.586 [INFO] [Thread-155930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:30:41.593 [DEBUG] [Thread-155930] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:30:41.593 [DEBUG] [Thread-155930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:30:41.593 [DEBUG] [Thread-155930] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:30:41.593 [DEBUG] [Thread-155930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] client lang: <none>
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] server lang: <none>
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] kex follows: False
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] Compression: none
2025-09-29T12:30:41.594 [DEBUG] [Thread-155930] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:30:41.650 [DEBUG] [Thread-155930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:30:41.651 [DEBUG] [Thread-155930] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:30:41.651 [DEBUG] [Thread-155930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:30:41.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:30:41.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:30:41.707 [DEBUG] [Thread-155930] [transport.py] [_log()] userauth is OK
2025-09-29T12:30:41.707 [DEBUG] [Thread-155930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:30:41.707 [DEBUG] [Thread-155930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:30:41.707 [DEBUG] [Thread-155930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:30:41.707 [DEBUG] [Thread-155930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:30:41.726 [INFO] [Thread-155930] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:30:41.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:30:41.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:42.638 [DEBUG] [Thread-155930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:42.639 [DEBUG] [Thread-155930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:42.686 [DEBUG] [Thread-155930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:42.686 [DEBUG] [Thread-155930] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:42.695 [DEBUG] [Thread-155930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:42.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:42.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:30:42.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:30:42.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:42.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:42.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:42.730 [DEBUG] [Thread-155930] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:45.323 [DEBUG] [Thread-155932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:30:47.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:30:47.613 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:30:52.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:30:52.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:30:52.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:30:53.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 30, 32), 11.87, 44.31, 0.0, 16.15, 13.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:30:53.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:30:32
2025-09-29T12:30:53.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:30:53.565 [DEBUG] [Thread-155933] [transport.py] [_log()] starting thread (client mode): 0x2b96ed10
2025-09-29T12:30:53.565 [DEBUG] [Thread-155933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:30:53.585 [DEBUG] [Thread-155933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:30:53.585 [INFO] [Thread-155933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:30:53.588 [DEBUG] [Thread-155933] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:30:53.588 [DEBUG] [Thread-155933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:30:53.588 [DEBUG] [Thread-155933] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:30:53.588 [DEBUG] [Thread-155933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:53.588 [DEBUG] [Thread-155933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] client lang: <none>
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] server lang: <none>
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] kex follows: False
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] Compression: none
2025-09-29T12:30:53.589 [DEBUG] [Thread-155933] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:30:53.604 [DEBUG] [Thread-155933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:30:53.604 [DEBUG] [Thread-155933] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:30:53.604 [DEBUG] [Thread-155933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:30:53.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:30:53.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:30:53.607 [DEBUG] [Thread-155933] [transport.py] [_log()] userauth is OK
2025-09-29T12:30:53.607 [DEBUG] [Thread-155933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:30:53.607 [DEBUG] [Thread-155933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:30:53.607 [DEBUG] [Thread-155933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:30:53.607 [DEBUG] [Thread-155933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:30:53.619 [INFO] [Thread-155933] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:30:53.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:30:54.252 [DEBUG] [Thread-155933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:30:54.252 [DEBUG] [Thread-155933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:30:54.253 [DEBUG] [Thread-155933] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:30:54.293 [DEBUG] [Thread-155933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:30:54.294 [DEBUG] [Thread-155933] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:30:54.297 [DEBUG] [Thread-155933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:30:54.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:30:54.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:30:54.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:30:54.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:30:54.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:30:54.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:30:54.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:30:54.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:30:54.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:30:54.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.437918 -999.00  +12.90  12.58     50   +2.90 1 1 1 1 1   888    0 12.28 82.86 ----- 7.9 12.6 208.0 16.1 21.4 -25.8 19.7 -25.3 20.4 -26.1 21.8 -27.7
2025-09-29T12:30:54.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:30:54.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:30:54.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.437918
2025-09-29T12:30:54.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:30:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:30:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:30:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:30:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:30:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:30:32', tmtdew=11.87, humidity=44.31, cloud=0.0, wind=16.15, temperature=13.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:30:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:30:54.322 [DEBUG] [Thread-155933] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:30:54.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:31:00.364 [DEBUG] [Thread-155936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:31:15.405 [DEBUG] [Thread-155937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:31:30.435 [DEBUG] [Thread-155938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:31:39.288 [DEBUG] [Thread-155939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:31:45.465 [DEBUG] [Thread-155940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:31:47.753 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:31:47.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:32:00.495 [DEBUG] [Thread-155941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:32:15.521 [DEBUG] [Thread-155942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:32:30.552 [DEBUG] [Thread-155943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:32:39.336 [DEBUG] [Thread-155944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:32:45.578 [DEBUG] [Thread-155945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:32:47.894 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:32:47.896 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:33:00.609 [DEBUG] [Thread-155946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:33:09.563 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T12:33:15.639 [DEBUG] [Thread-155947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:33:19.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:33:19.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:33:19.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:33:20.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 33, 12), 11.85, 44.54, 0.0, 12.0, 12.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:33:20.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:33:12
2025-09-29T12:33:20.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:33:20.450 [DEBUG] [Thread-155948] [transport.py] [_log()] starting thread (client mode): 0x2b96be20
2025-09-29T12:33:20.450 [DEBUG] [Thread-155948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:33:20.470 [DEBUG] [Thread-155948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:33:20.470 [INFO] [Thread-155948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] client lang: <none>
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] server lang: <none>
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] kex follows: False
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] Compression: none
2025-09-29T12:33:20.472 [DEBUG] [Thread-155948] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:33:20.484 [DEBUG] [Thread-155948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:33:20.484 [DEBUG] [Thread-155948] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:33:20.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:33:20.484 [DEBUG] [Thread-155948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:33:20.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:33:20.485 [DEBUG] [Thread-155948] [transport.py] [_log()] userauth is OK
2025-09-29T12:33:20.485 [DEBUG] [Thread-155948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:33:20.485 [DEBUG] [Thread-155948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:33:20.485 [DEBUG] [Thread-155948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:33:20.485 [DEBUG] [Thread-155948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:33:20.495 [INFO] [Thread-155948] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:33:20.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:33:21.243 [DEBUG] [Thread-155948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:33:21.243 [DEBUG] [Thread-155948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:33:21.243 [DEBUG] [Thread-155948] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:33:21.284 [DEBUG] [Thread-155948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:33:21.284 [DEBUG] [Thread-155948] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:33:21.286 [DEBUG] [Thread-155948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:33:21.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:33:21.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:33:21.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:33:21.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:33:21.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:33:21.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:33:21.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.439306 -999.00  +13.00  14.72     50   +2.90 1 1 1 1 1   888    0 12.32 79.08 ----- 16.0 14.7 162.9 20.7 21.4 -25.7 19.8 -26.8 20.4 -25.0 21.8 -26.4
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.439306
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:33:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:33:12', tmtdew=11.85, humidity=44.54, cloud=0.0, wind=12.0, temperature=12.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:32:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:33:21.304 [DEBUG] [Thread-155948] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:33:21.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:33:21.390 [DEBUG] [Thread-155951] [transport.py] [_log()] starting thread (client mode): 0x2e38ca30
2025-09-29T12:33:21.390 [DEBUG] [Thread-155951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:33:21.405 [DEBUG] [Thread-155951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:33:21.405 [INFO] [Thread-155951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] client lang: <none>
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] server lang: <none>
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] kex follows: False
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:33:21.412 [DEBUG] [Thread-155951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:33:21.413 [DEBUG] [Thread-155951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:33:21.413 [DEBUG] [Thread-155951] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:33:21.413 [DEBUG] [Thread-155951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:33:21.413 [DEBUG] [Thread-155951] [transport.py] [_log()] Compression: none
2025-09-29T12:33:21.413 [DEBUG] [Thread-155951] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:33:21.473 [DEBUG] [Thread-155951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:33:21.474 [DEBUG] [Thread-155951] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:33:21.474 [DEBUG] [Thread-155951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:33:21.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:33:21.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:33:21.530 [DEBUG] [Thread-155951] [transport.py] [_log()] userauth is OK
2025-09-29T12:33:21.530 [DEBUG] [Thread-155951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:33:21.530 [DEBUG] [Thread-155951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:33:21.530 [DEBUG] [Thread-155951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:33:21.530 [DEBUG] [Thread-155951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:33:21.545 [INFO] [Thread-155951] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:33:21.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:33:21.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:33:22.479 [DEBUG] [Thread-155951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:33:22.479 [DEBUG] [Thread-155951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:33:22.527 [DEBUG] [Thread-155951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:33:22.527 [DEBUG] [Thread-155951] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:33:22.535 [DEBUG] [Thread-155951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:33:22.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:33:22.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:33:22.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:33:22.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:33:22.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:33:22.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:33:22.566 [DEBUG] [Thread-155951] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:33:30.672 [DEBUG] [Thread-155953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:33:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:33:32.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:33:32.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:33:33.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 33, 12), 11.85, 44.54, 0.0, 12.0, 12.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:33:33.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:33:12
2025-09-29T12:33:33.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:33:33.440 [DEBUG] [Thread-155954] [transport.py] [_log()] starting thread (client mode): 0x2e3494e0
2025-09-29T12:33:33.440 [DEBUG] [Thread-155954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:33:33.463 [DEBUG] [Thread-155954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:33:33.463 [INFO] [Thread-155954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:33:33.466 [DEBUG] [Thread-155954] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] client lang: <none>
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] server lang: <none>
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] kex follows: False
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] Compression: none
2025-09-29T12:33:33.467 [DEBUG] [Thread-155954] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:33:33.482 [DEBUG] [Thread-155954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:33:33.483 [DEBUG] [Thread-155954] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:33:33.483 [DEBUG] [Thread-155954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:33:33.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:33:33.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:33:33.485 [DEBUG] [Thread-155954] [transport.py] [_log()] userauth is OK
2025-09-29T12:33:33.486 [DEBUG] [Thread-155954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:33:33.486 [DEBUG] [Thread-155954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:33:33.486 [DEBUG] [Thread-155954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:33:33.486 [DEBUG] [Thread-155954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:33:33.508 [INFO] [Thread-155954] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:33:33.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:33:34.254 [DEBUG] [Thread-155954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:33:34.255 [DEBUG] [Thread-155954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:33:34.255 [DEBUG] [Thread-155954] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:33:34.295 [DEBUG] [Thread-155954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:33:34.295 [DEBUG] [Thread-155954] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:33:34.299 [DEBUG] [Thread-155954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:33:34.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:33:34.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:33:34.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:33:34.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:33:34.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:33:34.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:33:34.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:33:34.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:33:34.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:33:34.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.439306 -999.00  +13.00  14.72     50   +2.90 1 1 1 1 1   888    0 12.32 79.08 ----- 16.0 14.7 162.9 20.7 21.4 -25.7 19.8 -26.8 20.4 -25.0 21.8 -26.4
2025-09-29T12:33:34.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:33:34.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:33:34.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.439306
2025-09-29T12:33:34.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:33:34.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:33:34.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:33:34.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:33:34.326 [DEBUG] [Thread-155954] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:33:34.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:33:34.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:33:12', tmtdew=11.85, humidity=44.54, cloud=0.0, wind=12.0, temperature=12.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:32:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:33:34.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:33:34.420 [DEBUG] [Thread-155957] [transport.py] [_log()] starting thread (client mode): 0x2e3c0e20
2025-09-29T12:33:34.420 [DEBUG] [Thread-155957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:33:34.436 [DEBUG] [Thread-155957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:33:34.436 [INFO] [Thread-155957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:33:34.444 [DEBUG] [Thread-155957] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:33:34.444 [DEBUG] [Thread-155957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:33:34.444 [DEBUG] [Thread-155957] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:33:34.444 [DEBUG] [Thread-155957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:34.444 [DEBUG] [Thread-155957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:34.444 [DEBUG] [Thread-155957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] client lang: <none>
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] server lang: <none>
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] kex follows: False
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] Compression: none
2025-09-29T12:33:34.445 [DEBUG] [Thread-155957] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:33:34.502 [DEBUG] [Thread-155957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:33:34.502 [DEBUG] [Thread-155957] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:33:34.503 [DEBUG] [Thread-155957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:33:34.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:33:34.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:33:34.558 [DEBUG] [Thread-155957] [transport.py] [_log()] userauth is OK
2025-09-29T12:33:34.559 [DEBUG] [Thread-155957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:33:34.559 [DEBUG] [Thread-155957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:33:34.559 [DEBUG] [Thread-155957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:33:34.559 [DEBUG] [Thread-155957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:33:34.579 [INFO] [Thread-155957] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:33:34.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:33:34.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:33:35.528 [DEBUG] [Thread-155957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:33:35.528 [DEBUG] [Thread-155957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:33:35.576 [DEBUG] [Thread-155957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:33:35.576 [DEBUG] [Thread-155957] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:33:35.585 [DEBUG] [Thread-155957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:33:35.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:33:35.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:33:35.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:33:35.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:33:35.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:33:35.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:33:35.620 [DEBUG] [Thread-155957] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:33:39.386 [DEBUG] [Thread-155959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:33:45.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:33:45.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:33:45.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:33:45.717 [DEBUG] [Thread-155960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:33:46.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 33, 12), 11.85, 44.54, 0.0, 12.0, 12.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:33:46.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:33:12
2025-09-29T12:33:46.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:33:46.518 [DEBUG] [Thread-155961] [transport.py] [_log()] starting thread (client mode): 0x2e348bb0
2025-09-29T12:33:46.518 [DEBUG] [Thread-155961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:33:46.538 [DEBUG] [Thread-155961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:33:46.538 [INFO] [Thread-155961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:33:46.541 [DEBUG] [Thread-155961] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] client lang: <none>
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] server lang: <none>
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] kex follows: False
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] Compression: none
2025-09-29T12:33:46.542 [DEBUG] [Thread-155961] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:33:46.560 [DEBUG] [Thread-155961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:33:46.561 [DEBUG] [Thread-155961] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:33:46.561 [DEBUG] [Thread-155961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:33:46.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:33:46.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:33:46.563 [DEBUG] [Thread-155961] [transport.py] [_log()] userauth is OK
2025-09-29T12:33:46.563 [DEBUG] [Thread-155961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:33:46.563 [DEBUG] [Thread-155961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:33:46.563 [DEBUG] [Thread-155961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:33:46.563 [DEBUG] [Thread-155961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:33:46.587 [INFO] [Thread-155961] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:33:46.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:33:47.184 [DEBUG] [Thread-155961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:33:47.185 [DEBUG] [Thread-155961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:33:47.185 [DEBUG] [Thread-155961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:33:47.225 [DEBUG] [Thread-155961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:33:47.226 [DEBUG] [Thread-155961] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:33:47.229 [DEBUG] [Thread-155961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:33:47.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:33:47.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:33:47.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:33:47.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:33:47.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:33:47.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:33:47.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:33:47.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:33:47.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:33:47.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.439654 -999.00  +12.90  12.20     50   +2.80 1 1 1 1 1   888    0 11.91 70.03 ----- 9.9 12.2 194.6 21.5 21.4 -25.3 19.6 -25.7 20.3 -26.4 21.7 -28.9
2025-09-29T12:33:47.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:33:47.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:33:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.439654
2025-09-29T12:33:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:33:47.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:33:47.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:33:47.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:33:47.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:33:47.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:33:12', tmtdew=11.85, humidity=44.54, cloud=0.0, wind=12.0, temperature=12.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:33:06.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:33:47.255 [DEBUG] [Thread-155961] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:33:47.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:33:47.354 [DEBUG] [Thread-155964] [transport.py] [_log()] starting thread (client mode): 0x2e38e7a0
2025-09-29T12:33:47.354 [DEBUG] [Thread-155964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:33:47.369 [DEBUG] [Thread-155964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:33:47.369 [INFO] [Thread-155964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:33:47.376 [DEBUG] [Thread-155964] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:33:47.376 [DEBUG] [Thread-155964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] client lang: <none>
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] server lang: <none>
2025-09-29T12:33:47.377 [DEBUG] [Thread-155964] [transport.py] [_log()] kex follows: False
2025-09-29T12:33:47.378 [DEBUG] [Thread-155964] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:33:47.378 [DEBUG] [Thread-155964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:33:47.378 [DEBUG] [Thread-155964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:33:47.378 [DEBUG] [Thread-155964] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:33:47.378 [DEBUG] [Thread-155964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:33:47.378 [DEBUG] [Thread-155964] [transport.py] [_log()] Compression: none
2025-09-29T12:33:47.379 [DEBUG] [Thread-155964] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:33:47.434 [DEBUG] [Thread-155964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:33:47.434 [DEBUG] [Thread-155964] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:33:47.435 [DEBUG] [Thread-155964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:33:47.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:33:47.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:33:47.490 [DEBUG] [Thread-155964] [transport.py] [_log()] userauth is OK
2025-09-29T12:33:47.490 [DEBUG] [Thread-155964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:33:47.491 [DEBUG] [Thread-155964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:33:47.491 [DEBUG] [Thread-155964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:33:47.491 [DEBUG] [Thread-155964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:33:47.510 [INFO] [Thread-155964] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:33:47.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:33:47.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:33:48.039 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:33:48.040 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:33:48.472 [DEBUG] [Thread-155964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:33:48.472 [DEBUG] [Thread-155964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:33:48.521 [DEBUG] [Thread-155964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:33:48.521 [DEBUG] [Thread-155964] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:33:48.529 [DEBUG] [Thread-155964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:33:48.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:33:48.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:33:48.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:33:48.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:33:48.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:33:48.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:33:48.562 [DEBUG] [Thread-155964] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:33:58.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:33:58.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:33:58.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:33:59.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 33, 44), 11.76, 44.66, 0.0, 15.81, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:33:59.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:33:44
2025-09-29T12:33:59.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:33:59.472 [DEBUG] [Thread-155966] [transport.py] [_log()] starting thread (client mode): 0x2e3c3850
2025-09-29T12:33:59.472 [DEBUG] [Thread-155966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:33:59.494 [DEBUG] [Thread-155966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:33:59.494 [INFO] [Thread-155966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] client lang: <none>
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] server lang: <none>
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] kex follows: False
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] Compression: none
2025-09-29T12:33:59.498 [DEBUG] [Thread-155966] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:33:59.513 [DEBUG] [Thread-155966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:33:59.514 [DEBUG] [Thread-155966] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:33:59.514 [DEBUG] [Thread-155966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:33:59.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:33:59.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:33:59.514 [DEBUG] [Thread-155966] [transport.py] [_log()] userauth is OK
2025-09-29T12:33:59.514 [DEBUG] [Thread-155966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:33:59.514 [DEBUG] [Thread-155966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:33:59.514 [DEBUG] [Thread-155966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:33:59.514 [DEBUG] [Thread-155966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:33:59.540 [INFO] [Thread-155966] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:33:59.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:00.319 [DEBUG] [Thread-155966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:00.319 [DEBUG] [Thread-155966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:00.319 [DEBUG] [Thread-155966] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:34:00.360 [DEBUG] [Thread-155966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:00.360 [DEBUG] [Thread-155966] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:00.361 [DEBUG] [Thread-155966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:00.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:00.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:34:00.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:34:00.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:34:00.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:00.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:34:00.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:00.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:00.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:34:00.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.439654 -999.00  +12.90  12.20     50   +2.80 1 1 1 1 1   888    0 11.91 70.03 ----- 9.9 12.2 194.6 21.5 21.4 -25.3 19.6 -25.7 20.3 -26.4 21.7 -28.9
2025-09-29T12:34:00.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:34:00.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:34:00.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.439654
2025-09-29T12:34:00.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:34:00.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:34:00.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:34:00.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:34:00.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:34:00.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:33:44', tmtdew=11.76, humidity=44.66, cloud=0.0, wind=15.81, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:33:06.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:34:00.374 [DEBUG] [Thread-155966] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:00.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:34:00.459 [DEBUG] [Thread-155969] [transport.py] [_log()] starting thread (client mode): 0x28706890
2025-09-29T12:34:00.459 [DEBUG] [Thread-155969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:00.474 [DEBUG] [Thread-155969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:34:00.474 [INFO] [Thread-155969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:34:00.484 [DEBUG] [Thread-155969] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:00.484 [DEBUG] [Thread-155969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:34:00.484 [DEBUG] [Thread-155969] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:00.484 [DEBUG] [Thread-155969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:00.484 [DEBUG] [Thread-155969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:00.484 [DEBUG] [Thread-155969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:00.484 [DEBUG] [Thread-155969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:00.484 [DEBUG] [Thread-155969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] Compression: none
2025-09-29T12:34:00.485 [DEBUG] [Thread-155969] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:00.541 [DEBUG] [Thread-155969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:00.542 [DEBUG] [Thread-155969] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:00.542 [DEBUG] [Thread-155969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:34:00.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:34:00.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:00.599 [DEBUG] [Thread-155969] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:00.599 [DEBUG] [Thread-155969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:00.599 [DEBUG] [Thread-155969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:00.599 [DEBUG] [Thread-155969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:34:00.599 [DEBUG] [Thread-155969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:00.614 [INFO] [Thread-155969] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:00.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:34:00.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:00.741 [DEBUG] [Thread-155971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:34:01.540 [DEBUG] [Thread-155969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:01.540 [DEBUG] [Thread-155969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:01.588 [DEBUG] [Thread-155969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:01.588 [DEBUG] [Thread-155969] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:01.596 [DEBUG] [Thread-155969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:01.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:01.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:34:01.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:34:01.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:01.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:01.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:01.627 [DEBUG] [Thread-155969] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:11.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:34:11.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:34:11.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:34:12.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 33, 44), 11.76, 44.66, 0.0, 15.81, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:34:12.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:33:44
2025-09-29T12:34:12.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:34:12.501 [DEBUG] [Thread-155972] [transport.py] [_log()] starting thread (client mode): 0x2b956e60
2025-09-29T12:34:12.501 [DEBUG] [Thread-155972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:12.520 [DEBUG] [Thread-155972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:34:12.521 [INFO] [Thread-155972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:12.523 [DEBUG] [Thread-155972] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] Compression: none
2025-09-29T12:34:12.524 [DEBUG] [Thread-155972] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:12.532 [DEBUG] [Thread-155972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:12.532 [DEBUG] [Thread-155972] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:12.533 [DEBUG] [Thread-155972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:34:12.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:34:12.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:12.534 [DEBUG] [Thread-155972] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:12.535 [DEBUG] [Thread-155972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:12.535 [DEBUG] [Thread-155972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:12.535 [DEBUG] [Thread-155972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:34:12.535 [DEBUG] [Thread-155972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:12.558 [INFO] [Thread-155972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:12.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:13.194 [DEBUG] [Thread-155972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:13.195 [DEBUG] [Thread-155972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:13.195 [DEBUG] [Thread-155972] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:34:13.235 [DEBUG] [Thread-155972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:13.235 [DEBUG] [Thread-155972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:13.237 [DEBUG] [Thread-155972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:13.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:13.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:34:13.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:34:13.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:34:13.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:13.256 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:34:13.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:13.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:13.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:34:13.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.440348 -999.00  +12.90  18.50     49   +2.70 1 1 1 1 1   888    0 12.28 71.64 ----- 14.9 18.5 179.0 20.1 21.2 -27.1 19.6 -29.5 20.3 -25.5 21.7 -27.3
2025-09-29T12:34:13.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:34:13.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:34:13.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.440348
2025-09-29T12:34:13.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:34:13.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:34:13.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:34:13.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:34:13.258 [DEBUG] [Thread-155972] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:13.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:34:13.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:33:44', tmtdew=11.76, humidity=44.66, cloud=0.0, wind=15.81, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:34:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:34:13.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:34:13.355 [DEBUG] [Thread-155975] [transport.py] [_log()] starting thread (client mode): 0x2b9c0130
2025-09-29T12:34:13.355 [DEBUG] [Thread-155975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:13.370 [DEBUG] [Thread-155975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:34:13.370 [INFO] [Thread-155975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:13.377 [DEBUG] [Thread-155975] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:13.378 [DEBUG] [Thread-155975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:13.378 [DEBUG] [Thread-155975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:13.378 [DEBUG] [Thread-155975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:13.378 [DEBUG] [Thread-155975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:13.378 [DEBUG] [Thread-155975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:13.378 [DEBUG] [Thread-155975] [transport.py] [_log()] Compression: none
2025-09-29T12:34:13.378 [DEBUG] [Thread-155975] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:13.433 [DEBUG] [Thread-155975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:13.433 [DEBUG] [Thread-155975] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:13.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:34:13.434 [DEBUG] [Thread-155975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:34:13.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:13.490 [DEBUG] [Thread-155975] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:13.490 [DEBUG] [Thread-155975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:13.491 [DEBUG] [Thread-155975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:13.491 [DEBUG] [Thread-155975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:34:13.491 [DEBUG] [Thread-155975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:13.510 [INFO] [Thread-155975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:13.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:34:13.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:14.451 [DEBUG] [Thread-155975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:14.451 [DEBUG] [Thread-155975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:14.499 [DEBUG] [Thread-155975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:14.499 [DEBUG] [Thread-155975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:14.508 [DEBUG] [Thread-155975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:14.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:14.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:34:14.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:34:14.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:14.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:14.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:14.542 [DEBUG] [Thread-155975] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:15.779 [DEBUG] [Thread-155977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:34:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:34:24.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:34:24.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:34:25.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 34, 16), 11.97, 44.03, 0.0, 16.96, 13.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:34:25.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:34:16
2025-09-29T12:34:25.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:34:25.409 [DEBUG] [Thread-155978] [transport.py] [_log()] starting thread (client mode): 0x2b954ee0
2025-09-29T12:34:25.409 [DEBUG] [Thread-155978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:25.430 [DEBUG] [Thread-155978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:34:25.430 [INFO] [Thread-155978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:25.433 [DEBUG] [Thread-155978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] Compression: none
2025-09-29T12:34:25.434 [DEBUG] [Thread-155978] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:25.452 [DEBUG] [Thread-155978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:25.452 [DEBUG] [Thread-155978] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:25.453 [DEBUG] [Thread-155978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:34:25.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:34:25.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:25.454 [DEBUG] [Thread-155978] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:25.455 [DEBUG] [Thread-155978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:25.455 [DEBUG] [Thread-155978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:25.455 [DEBUG] [Thread-155978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:34:25.455 [DEBUG] [Thread-155978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:25.479 [INFO] [Thread-155978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:25.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:26.106 [DEBUG] [Thread-155978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:26.107 [DEBUG] [Thread-155978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:26.107 [DEBUG] [Thread-155978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:34:26.147 [DEBUG] [Thread-155978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:26.147 [DEBUG] [Thread-155978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:26.150 [DEBUG] [Thread-155978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:26.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:26.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:34:26.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:34:26.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:34:26.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:26.173 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:34:26.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:26.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:34:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.440348 -999.00  +12.90  18.50     49   +2.70 1 1 1 1 1   888    0 12.28 71.64 ----- 14.9 18.5 179.0 20.1 21.2 -27.1 19.6 -29.5 20.3 -25.5 21.7 -27.3
2025-09-29T12:34:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:34:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:34:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.440348
2025-09-29T12:34:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:34:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:34:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:34:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:34:26.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:34:26.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:34:16', tmtdew=11.97, humidity=44.03, cloud=0.0, wind=16.96, temperature=13.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:34:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:34:26.177 [DEBUG] [Thread-155978] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:26.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:34:26.271 [DEBUG] [Thread-155981] [transport.py] [_log()] starting thread (client mode): 0x2b954a90
2025-09-29T12:34:26.271 [DEBUG] [Thread-155981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:26.286 [DEBUG] [Thread-155981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:34:26.286 [INFO] [Thread-155981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] Compression: none
2025-09-29T12:34:26.294 [DEBUG] [Thread-155981] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:26.349 [DEBUG] [Thread-155981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:26.349 [DEBUG] [Thread-155981] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:26.349 [DEBUG] [Thread-155981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:34:26.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:34:26.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:26.406 [DEBUG] [Thread-155981] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:26.406 [DEBUG] [Thread-155981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:26.407 [DEBUG] [Thread-155981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:26.407 [DEBUG] [Thread-155981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:34:26.407 [DEBUG] [Thread-155981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:26.425 [INFO] [Thread-155981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:26.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:34:26.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:27.445 [DEBUG] [Thread-155981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:27.445 [DEBUG] [Thread-155981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:27.493 [DEBUG] [Thread-155981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:27.493 [DEBUG] [Thread-155981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:27.502 [DEBUG] [Thread-155981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:27.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:27.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:34:27.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:34:27.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:27.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:27.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:27.537 [DEBUG] [Thread-155981] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:30.825 [DEBUG] [Thread-155983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:34:37.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:34:37.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:34:37.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:34:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 34, 16), 11.97, 44.03, 0.0, 16.96, 13.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:34:38.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:34:16
2025-09-29T12:34:38.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:34:38.434 [DEBUG] [Thread-155984] [transport.py] [_log()] starting thread (client mode): 0x28706770
2025-09-29T12:34:38.435 [DEBUG] [Thread-155984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:38.454 [DEBUG] [Thread-155984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:34:38.455 [INFO] [Thread-155984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:34:38.458 [DEBUG] [Thread-155984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:38.458 [DEBUG] [Thread-155984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:34:38.458 [DEBUG] [Thread-155984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:38.458 [DEBUG] [Thread-155984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:38.458 [DEBUG] [Thread-155984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] Compression: none
2025-09-29T12:34:38.459 [DEBUG] [Thread-155984] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:38.475 [DEBUG] [Thread-155984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:38.475 [DEBUG] [Thread-155984] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:38.475 [DEBUG] [Thread-155984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:34:38.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:34:38.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:38.476 [DEBUG] [Thread-155984] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:38.476 [DEBUG] [Thread-155984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:38.476 [DEBUG] [Thread-155984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:38.476 [DEBUG] [Thread-155984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:34:38.476 [DEBUG] [Thread-155984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:38.486 [INFO] [Thread-155984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:38.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:39.297 [DEBUG] [Thread-155984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:39.297 [DEBUG] [Thread-155984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:39.298 [DEBUG] [Thread-155984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:34:39.339 [DEBUG] [Thread-155984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:39.339 [DEBUG] [Thread-155984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:39.340 [DEBUG] [Thread-155984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:39.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:39.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:34:39.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:34:39.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:34:39.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:39.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:34:39.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:39.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:39.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:34:39.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.440348 -999.00  +12.90  18.50     49   +2.70 1 1 1 1 1   888    0 12.28 71.64 ----- 14.9 18.5 179.0 20.1 21.2 -27.1 19.6 -29.5 20.3 -25.5 21.7 -27.3
2025-09-29T12:34:39.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:34:39.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:34:39.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.440348
2025-09-29T12:34:39.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:34:39.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:34:39.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:34:39.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:34:39.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:34:39.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:34:16', tmtdew=11.97, humidity=44.03, cloud=0.0, wind=16.96, temperature=13.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:34:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:34:39.357 [DEBUG] [Thread-155984] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:39.429 [DEBUG] [Thread-155987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:34:39.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:34:39.443 [DEBUG] [Thread-155988] [transport.py] [_log()] starting thread (client mode): 0x28707490
2025-09-29T12:34:39.443 [DEBUG] [Thread-155988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:39.458 [DEBUG] [Thread-155988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:34:39.458 [INFO] [Thread-155988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] Compression: none
2025-09-29T12:34:39.465 [DEBUG] [Thread-155988] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:39.520 [DEBUG] [Thread-155988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:39.520 [DEBUG] [Thread-155988] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:39.520 [DEBUG] [Thread-155988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:34:39.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:34:39.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:39.578 [DEBUG] [Thread-155988] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:39.578 [DEBUG] [Thread-155988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:39.578 [DEBUG] [Thread-155988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:39.578 [DEBUG] [Thread-155988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:34:39.578 [DEBUG] [Thread-155988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:39.592 [INFO] [Thread-155988] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:39.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:34:39.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:40.508 [DEBUG] [Thread-155988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:40.508 [DEBUG] [Thread-155988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:40.556 [DEBUG] [Thread-155988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:40.556 [DEBUG] [Thread-155988] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:40.565 [DEBUG] [Thread-155988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:40.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:40.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:34:40.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:34:40.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:40.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:40.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:40.597 [DEBUG] [Thread-155988] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:45.869 [DEBUG] [Thread-155990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:34:48.182 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:34:48.183 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:34:50.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:34:50.599 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:34:50.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:34:51.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 34, 47), 12.01, 44.04, 0.0, 14.33, 13.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:34:51.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:34:47
2025-09-29T12:34:51.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:34:51.465 [DEBUG] [Thread-155991] [transport.py] [_log()] starting thread (client mode): 0x2b957850
2025-09-29T12:34:51.466 [DEBUG] [Thread-155991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:51.489 [DEBUG] [Thread-155991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:34:51.489 [INFO] [Thread-155991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] Compression: none
2025-09-29T12:34:51.493 [DEBUG] [Thread-155991] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:51.510 [DEBUG] [Thread-155991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:51.510 [DEBUG] [Thread-155991] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:51.510 [DEBUG] [Thread-155991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:34:51.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:34:51.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:51.511 [DEBUG] [Thread-155991] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:51.511 [DEBUG] [Thread-155991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:51.511 [DEBUG] [Thread-155991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:51.511 [DEBUG] [Thread-155991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:34:51.511 [DEBUG] [Thread-155991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:51.540 [INFO] [Thread-155991] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:51.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:52.225 [DEBUG] [Thread-155991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:52.225 [DEBUG] [Thread-155991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:52.226 [DEBUG] [Thread-155991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:34:52.266 [DEBUG] [Thread-155991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:52.266 [DEBUG] [Thread-155991] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:52.270 [DEBUG] [Thread-155991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:52.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:52.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:34:52.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:34:52.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:34:52.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:52.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:34:52.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:52.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:52.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:34:52.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.440695 -999.00  +12.80  12.48     50   +2.70 1 1 1 1 1   888    0 12.00 72.25 ----- 9.8 12.5 193.0 18.2 21.3 -24.9 19.4 -31.7 20.3 -24.8 21.7 -26.3
2025-09-29T12:34:52.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:34:52.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:34:52.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.440695
2025-09-29T12:34:52.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:34:52.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:34:52.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:34:52.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:34:52.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:34:52.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:34:47', tmtdew=12.01, humidity=44.04, cloud=0.0, wind=14.33, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:34:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:34:52.296 [DEBUG] [Thread-155991] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:34:52.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:34:52.390 [DEBUG] [Thread-155994] [transport.py] [_log()] starting thread (client mode): 0x2b9c3f10
2025-09-29T12:34:52.391 [DEBUG] [Thread-155994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:34:52.404 [DEBUG] [Thread-155994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:34:52.404 [INFO] [Thread-155994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:34:52.411 [DEBUG] [Thread-155994] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:34:52.412 [DEBUG] [Thread-155994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:34:52.412 [DEBUG] [Thread-155994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:34:52.412 [DEBUG] [Thread-155994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:52.412 [DEBUG] [Thread-155994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:34:52.412 [DEBUG] [Thread-155994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:52.412 [DEBUG] [Thread-155994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:34:52.412 [DEBUG] [Thread-155994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] client lang: <none>
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] server lang: <none>
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] kex follows: False
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] Compression: none
2025-09-29T12:34:52.413 [DEBUG] [Thread-155994] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:34:52.469 [DEBUG] [Thread-155994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:34:52.470 [DEBUG] [Thread-155994] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:34:52.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:34:52.471 [DEBUG] [Thread-155994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:34:52.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:34:52.526 [DEBUG] [Thread-155994] [transport.py] [_log()] userauth is OK
2025-09-29T12:34:52.526 [DEBUG] [Thread-155994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:34:52.526 [DEBUG] [Thread-155994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:34:52.526 [DEBUG] [Thread-155994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:34:52.526 [DEBUG] [Thread-155994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:34:52.546 [INFO] [Thread-155994] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:34:52.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:34:52.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:34:53.511 [DEBUG] [Thread-155994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:34:53.512 [DEBUG] [Thread-155994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:34:53.560 [DEBUG] [Thread-155994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:34:53.560 [DEBUG] [Thread-155994] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:34:53.568 [DEBUG] [Thread-155994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:34:53.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:34:53.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:34:53.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:34:53.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:34:53.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:34:53.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:34:53.601 [DEBUG] [Thread-155994] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:35:00.897 [DEBUG] [Thread-155996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:35:03.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:35:03.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:35:03.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:35:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 34, 47), 12.01, 44.04, 0.0, 14.33, 13.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:35:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:34:47
2025-09-29T12:35:04.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:35:04.482 [DEBUG] [Thread-155997] [transport.py] [_log()] starting thread (client mode): 0x2b9c1990
2025-09-29T12:35:04.483 [DEBUG] [Thread-155997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:35:04.504 [DEBUG] [Thread-155997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:35:04.504 [INFO] [Thread-155997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:35:04.508 [DEBUG] [Thread-155997] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:35:04.508 [DEBUG] [Thread-155997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:35:04.508 [DEBUG] [Thread-155997] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:35:04.508 [DEBUG] [Thread-155997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:04.508 [DEBUG] [Thread-155997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] client lang: <none>
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] server lang: <none>
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] kex follows: False
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] Compression: none
2025-09-29T12:35:04.509 [DEBUG] [Thread-155997] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:35:04.526 [DEBUG] [Thread-155997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:35:04.526 [DEBUG] [Thread-155997] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:35:04.527 [DEBUG] [Thread-155997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:35:04.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:35:04.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:35:04.529 [DEBUG] [Thread-155997] [transport.py] [_log()] userauth is OK
2025-09-29T12:35:04.529 [DEBUG] [Thread-155997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:35:04.529 [DEBUG] [Thread-155997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:35:04.529 [DEBUG] [Thread-155997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:35:04.529 [DEBUG] [Thread-155997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:35:04.548 [INFO] [Thread-155997] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:35:04.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:35:12.702 [DEBUG] [Thread-155997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:35:12.702 [DEBUG] [Thread-155997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:35:12.703 [DEBUG] [Thread-155997] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:35:12.743 [DEBUG] [Thread-155997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:35:12.743 [DEBUG] [Thread-155997] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:35:12.746 [DEBUG] [Thread-155997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:35:13.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:35:13.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:35:13.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:35:13.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:35:13.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:35:13.388 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:35:13.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:35:13.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:35:13.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:35:13.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.440695 -999.00  +12.80  12.48     50   +2.70 1 1 1 1 1   888    0 12.00 72.25 ----- 9.8 12.5 193.0 18.2 21.3 -24.9 19.4 -31.7 20.3 -24.8 21.7 -26.3
2025-09-29T12:35:13.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:35:13.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:35:13.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.440695
2025-09-29T12:35:13.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:35:13.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:35:13.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:35:13.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:35:13.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:35:13.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:34:47', tmtdew=12.01, humidity=44.04, cloud=0.0, wind=14.33, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:34:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:35:13.389 [DEBUG] [Thread-155997] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:35:13.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:35:13.473 [DEBUG] [Thread-156000] [transport.py] [_log()] starting thread (client mode): 0x28707b80
2025-09-29T12:35:13.473 [DEBUG] [Thread-156000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:35:13.488 [DEBUG] [Thread-156000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:35:13.488 [INFO] [Thread-156000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] client lang: <none>
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] server lang: <none>
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] kex follows: False
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] Compression: none
2025-09-29T12:35:13.496 [DEBUG] [Thread-156000] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:35:13.554 [DEBUG] [Thread-156000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:35:13.555 [DEBUG] [Thread-156000] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:35:13.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:35:13.556 [DEBUG] [Thread-156000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:35:13.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:35:13.610 [DEBUG] [Thread-156000] [transport.py] [_log()] userauth is OK
2025-09-29T12:35:13.610 [DEBUG] [Thread-156000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:35:13.610 [DEBUG] [Thread-156000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:35:13.610 [DEBUG] [Thread-156000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:35:13.611 [DEBUG] [Thread-156000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:35:13.629 [INFO] [Thread-156000] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:35:13.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:35:13.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:35:14.667 [DEBUG] [Thread-156000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:35:14.667 [DEBUG] [Thread-156000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:35:14.716 [DEBUG] [Thread-156000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:35:14.716 [DEBUG] [Thread-156000] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:35:14.725 [DEBUG] [Thread-156000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:35:14.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:35:14.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:35:14.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:35:14.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:35:14.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:35:14.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:35:14.759 [DEBUG] [Thread-156000] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:35:15.934 [DEBUG] [Thread-156002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:35:24.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:35:24.761 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:35:24.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:35:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 35, 19), 11.83, 44.61, 0.0, 13.55, 12.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:35:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:35:19
2025-09-29T12:35:25.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:35:25.598 [DEBUG] [Thread-156003] [transport.py] [_log()] starting thread (client mode): 0x2b91ccd0
2025-09-29T12:35:25.598 [DEBUG] [Thread-156003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:35:25.619 [DEBUG] [Thread-156003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:35:25.619 [INFO] [Thread-156003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:35:25.622 [DEBUG] [Thread-156003] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:35:25.622 [DEBUG] [Thread-156003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:35:25.622 [DEBUG] [Thread-156003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:35:25.622 [DEBUG] [Thread-156003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:25.622 [DEBUG] [Thread-156003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:25.622 [DEBUG] [Thread-156003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] client lang: <none>
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] server lang: <none>
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] kex follows: False
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] Compression: none
2025-09-29T12:35:25.623 [DEBUG] [Thread-156003] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:35:25.640 [DEBUG] [Thread-156003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:35:25.640 [DEBUG] [Thread-156003] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:35:25.641 [DEBUG] [Thread-156003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:35:25.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:35:25.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:35:25.642 [DEBUG] [Thread-156003] [transport.py] [_log()] userauth is OK
2025-09-29T12:35:25.643 [DEBUG] [Thread-156003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:35:25.643 [DEBUG] [Thread-156003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:35:25.643 [DEBUG] [Thread-156003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:35:25.643 [DEBUG] [Thread-156003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:35:25.666 [INFO] [Thread-156003] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:35:25.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:35:26.301 [DEBUG] [Thread-156003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:35:26.301 [DEBUG] [Thread-156003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:35:26.301 [DEBUG] [Thread-156003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:35:26.341 [DEBUG] [Thread-156003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:35:26.341 [DEBUG] [Thread-156003] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:35:26.343 [DEBUG] [Thread-156003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:35:26.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:35:26.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:35:26.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:35:26.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:35:26.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:35:26.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:35:26.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:35:26.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:35:26.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:35:26.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.441042 -999.00  +13.00  15.14     50   +3.00 1 1 1 1 1   888    0 11.73 64.04 ----- 12.6 15.1 188.2 21.3 21.2 -25.6 19.8 -25.9 20.4 -23.7 21.8 -24.5
2025-09-29T12:35:26.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:35:26.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:35:26.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.441042
2025-09-29T12:35:26.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:35:26.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:35:26.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:35:26.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:35:26.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:35:26.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:35:19', tmtdew=11.83, humidity=44.61, cloud=0.0, wind=13.55, temperature=12.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:35:06.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:35:26.365 [DEBUG] [Thread-156003] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:35:26.448 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:35:26.457 [DEBUG] [Thread-156006] [transport.py] [_log()] starting thread (client mode): 0x2b9ca860
2025-09-29T12:35:26.457 [DEBUG] [Thread-156006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:35:26.471 [DEBUG] [Thread-156006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:35:26.472 [INFO] [Thread-156006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:35:26.479 [DEBUG] [Thread-156006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:35:26.479 [DEBUG] [Thread-156006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:35:26.479 [DEBUG] [Thread-156006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] client lang: <none>
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] server lang: <none>
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] kex follows: False
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] Compression: none
2025-09-29T12:35:26.480 [DEBUG] [Thread-156006] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:35:26.537 [DEBUG] [Thread-156006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:35:26.538 [DEBUG] [Thread-156006] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:35:26.538 [DEBUG] [Thread-156006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:35:26.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:35:26.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:35:26.594 [DEBUG] [Thread-156006] [transport.py] [_log()] userauth is OK
2025-09-29T12:35:26.594 [DEBUG] [Thread-156006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:35:26.594 [DEBUG] [Thread-156006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:35:26.594 [DEBUG] [Thread-156006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:35:26.594 [DEBUG] [Thread-156006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:35:26.614 [INFO] [Thread-156006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:35:26.614 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:35:26.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:35:27.551 [DEBUG] [Thread-156006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:35:27.552 [DEBUG] [Thread-156006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:35:27.599 [DEBUG] [Thread-156006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:35:27.599 [DEBUG] [Thread-156006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:35:27.608 [DEBUG] [Thread-156006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:35:27.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:35:27.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:35:27.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:35:27.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:35:27.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:35:27.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:35:27.643 [DEBUG] [Thread-156006] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:35:30.962 [DEBUG] [Thread-156008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:35:37.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:35:37.646 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:35:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:35:38.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 35, 19), 11.83, 44.61, 0.0, 13.55, 12.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:35:38.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:35:19
2025-09-29T12:35:38.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:35:38.494 [DEBUG] [Thread-156009] [transport.py] [_log()] starting thread (client mode): 0x2b9c8c40
2025-09-29T12:35:38.494 [DEBUG] [Thread-156009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:35:38.515 [DEBUG] [Thread-156009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:35:38.515 [INFO] [Thread-156009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:35:38.519 [DEBUG] [Thread-156009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:35:38.519 [DEBUG] [Thread-156009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:35:38.519 [DEBUG] [Thread-156009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:35:38.519 [DEBUG] [Thread-156009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:38.519 [DEBUG] [Thread-156009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] client lang: <none>
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] server lang: <none>
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] kex follows: False
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] Compression: none
2025-09-29T12:35:38.520 [DEBUG] [Thread-156009] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:35:38.538 [DEBUG] [Thread-156009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:35:38.539 [DEBUG] [Thread-156009] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:35:38.539 [DEBUG] [Thread-156009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:35:38.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:35:38.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:35:38.539 [DEBUG] [Thread-156009] [transport.py] [_log()] userauth is OK
2025-09-29T12:35:38.539 [DEBUG] [Thread-156009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:35:38.539 [DEBUG] [Thread-156009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:35:38.539 [DEBUG] [Thread-156009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:35:38.539 [DEBUG] [Thread-156009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:35:38.563 [INFO] [Thread-156009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:35:38.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:35:39.364 [DEBUG] [Thread-156009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:35:39.364 [DEBUG] [Thread-156009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:35:39.364 [DEBUG] [Thread-156009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:35:39.405 [DEBUG] [Thread-156009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:35:39.405 [DEBUG] [Thread-156009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:35:39.407 [DEBUG] [Thread-156009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:35:39.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:35:39.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:35:39.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:35:39.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:35:39.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:35:39.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:35:39.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:35:39.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:35:39.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:35:39.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.441042 -999.00  +13.00  15.14     50   +3.00 1 1 1 1 1   888    0 11.73 64.04 ----- 12.6 15.1 188.2 21.3 21.2 -25.6 19.8 -25.9 20.4 -23.7 21.8 -24.5
2025-09-29T12:35:39.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:35:39.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:35:39.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.441042
2025-09-29T12:35:39.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:35:39.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:35:39.430 [DEBUG] [Thread-156009] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:35:39.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:35:39.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:35:39.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:35:39.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:35:19', tmtdew=11.83, humidity=44.61, cloud=0.0, wind=13.55, temperature=12.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:35:06.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:35:39.477 [DEBUG] [Thread-156012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:35:39.515 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:35:39.527 [DEBUG] [Thread-156013] [transport.py] [_log()] starting thread (client mode): 0x2b9c9960
2025-09-29T12:35:39.527 [DEBUG] [Thread-156013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:35:39.543 [DEBUG] [Thread-156013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:35:39.543 [INFO] [Thread-156013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:35:39.550 [DEBUG] [Thread-156013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:35:39.550 [DEBUG] [Thread-156013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:35:39.550 [DEBUG] [Thread-156013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] client lang: <none>
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] server lang: <none>
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] kex follows: False
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] Compression: none
2025-09-29T12:35:39.551 [DEBUG] [Thread-156013] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:35:39.609 [DEBUG] [Thread-156013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:35:39.610 [DEBUG] [Thread-156013] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:35:39.610 [DEBUG] [Thread-156013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:35:39.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:35:39.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:35:39.666 [DEBUG] [Thread-156013] [transport.py] [_log()] userauth is OK
2025-09-29T12:35:39.666 [DEBUG] [Thread-156013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:35:39.666 [DEBUG] [Thread-156013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:35:39.666 [DEBUG] [Thread-156013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:35:39.666 [DEBUG] [Thread-156013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:35:39.686 [INFO] [Thread-156013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:35:39.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:35:39.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:35:40.641 [DEBUG] [Thread-156013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:35:40.642 [DEBUG] [Thread-156013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:35:40.689 [DEBUG] [Thread-156013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:35:40.689 [DEBUG] [Thread-156013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:35:40.699 [DEBUG] [Thread-156013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:35:40.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:35:40.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:35:40.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:35:40.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:35:40.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:35:40.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:35:40.734 [DEBUG] [Thread-156013] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:35:46.007 [DEBUG] [Thread-156015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:35:48.325 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:35:48.326 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:35:50.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:35:50.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:35:50.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:35:51.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 35, 19), 11.83, 44.61, 0.0, 13.55, 12.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:35:51.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:35:19
2025-09-29T12:35:51.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:35:51.596 [DEBUG] [Thread-156016] [transport.py] [_log()] starting thread (client mode): 0x2b9c9450
2025-09-29T12:35:51.596 [DEBUG] [Thread-156016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:35:51.616 [DEBUG] [Thread-156016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:35:51.617 [INFO] [Thread-156016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] client lang: <none>
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] server lang: <none>
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] kex follows: False
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:35:51.620 [DEBUG] [Thread-156016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:35:51.621 [DEBUG] [Thread-156016] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:35:51.621 [DEBUG] [Thread-156016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:35:51.621 [DEBUG] [Thread-156016] [transport.py] [_log()] Compression: none
2025-09-29T12:35:51.621 [DEBUG] [Thread-156016] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:35:51.638 [DEBUG] [Thread-156016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:35:51.638 [DEBUG] [Thread-156016] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:35:51.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:35:51.639 [DEBUG] [Thread-156016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:35:51.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:35:51.641 [DEBUG] [Thread-156016] [transport.py] [_log()] userauth is OK
2025-09-29T12:35:51.641 [DEBUG] [Thread-156016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:35:51.642 [DEBUG] [Thread-156016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:35:51.642 [DEBUG] [Thread-156016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:35:51.642 [DEBUG] [Thread-156016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:35:51.665 [INFO] [Thread-156016] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:35:51.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:35:52.451 [DEBUG] [Thread-156016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:35:52.451 [DEBUG] [Thread-156016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:35:52.451 [DEBUG] [Thread-156016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:35:52.492 [DEBUG] [Thread-156016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:35:52.492 [DEBUG] [Thread-156016] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:35:52.494 [DEBUG] [Thread-156016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:35:52.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:35:52.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:35:52.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:35:52.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:35:52.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:35:52.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:35:52.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:35:52.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:35:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:35:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.441042 -999.00  +13.00  15.14     50   +3.00 1 1 1 1 1   888    0 11.73 64.04 ----- 12.6 15.1 188.2 21.3 21.2 -25.6 19.8 -25.9 20.4 -23.7 21.8 -24.5
2025-09-29T12:35:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:35:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:35:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.441042
2025-09-29T12:35:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:35:52.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:35:52.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:35:52.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:35:52.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:35:52.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:35:19', tmtdew=11.83, humidity=44.61, cloud=0.0, wind=13.55, temperature=12.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:35:06.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:35:52.511 [DEBUG] [Thread-156016] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:35:52.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:35:52.603 [DEBUG] [Thread-156019] [transport.py] [_log()] starting thread (client mode): 0x2b9cab30
2025-09-29T12:35:52.603 [DEBUG] [Thread-156019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:35:52.618 [DEBUG] [Thread-156019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:35:52.618 [INFO] [Thread-156019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] client lang: <none>
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] server lang: <none>
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] kex follows: False
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] Compression: none
2025-09-29T12:35:52.626 [DEBUG] [Thread-156019] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:35:52.685 [DEBUG] [Thread-156019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:35:52.685 [DEBUG] [Thread-156019] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:35:52.685 [DEBUG] [Thread-156019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:35:52.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:35:52.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:35:52.742 [DEBUG] [Thread-156019] [transport.py] [_log()] userauth is OK
2025-09-29T12:35:52.742 [DEBUG] [Thread-156019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:35:52.742 [DEBUG] [Thread-156019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:35:52.742 [DEBUG] [Thread-156019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:35:52.742 [DEBUG] [Thread-156019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:35:52.758 [INFO] [Thread-156019] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:35:52.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:35:52.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:35:53.728 [DEBUG] [Thread-156019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:35:53.728 [DEBUG] [Thread-156019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:35:53.776 [DEBUG] [Thread-156019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:35:53.776 [DEBUG] [Thread-156019] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:35:53.784 [DEBUG] [Thread-156019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:35:53.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:35:53.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:35:53.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:35:53.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:35:53.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:35:53.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:35:53.816 [DEBUG] [Thread-156019] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:01.034 [DEBUG] [Thread-156021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:36:03.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:36:03.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:36:03.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:36:04.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 35, 51), 11.71, 45.06, 0.0, 15.05, 13.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:36:04.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:35:51
2025-09-29T12:36:04.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:36:04.683 [DEBUG] [Thread-156022] [transport.py] [_log()] starting thread (client mode): 0x2b9c8640
2025-09-29T12:36:04.683 [DEBUG] [Thread-156022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:04.709 [DEBUG] [Thread-156022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:36:04.710 [INFO] [Thread-156022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:36:04.713 [DEBUG] [Thread-156022] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:04.713 [DEBUG] [Thread-156022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] Compression: none
2025-09-29T12:36:04.714 [DEBUG] [Thread-156022] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:04.731 [DEBUG] [Thread-156022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:04.731 [DEBUG] [Thread-156022] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:04.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:36:04.732 [DEBUG] [Thread-156022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:36:04.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:04.734 [DEBUG] [Thread-156022] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:04.735 [DEBUG] [Thread-156022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:04.735 [DEBUG] [Thread-156022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:04.735 [DEBUG] [Thread-156022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:36:04.735 [DEBUG] [Thread-156022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:04.770 [INFO] [Thread-156022] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:04.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:05.409 [DEBUG] [Thread-156022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:05.410 [DEBUG] [Thread-156022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:05.410 [DEBUG] [Thread-156022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:36:05.450 [DEBUG] [Thread-156022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:05.450 [DEBUG] [Thread-156022] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:05.452 [DEBUG] [Thread-156022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:05.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:05.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:36:05.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:36:05.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:36:05.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:05.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:36:05.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:05.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:05.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:36:05.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.441390 -999.00  +13.20  10.97     50   +3.10 1 1 1 1 1   888    0 11.54 54.86 ----- 11.7 11.0 179.6 18.3 21.4 -24.8 19.6 -29.4 20.4 -25.5 21.7 -26.7
2025-09-29T12:36:05.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:36:05.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:36:05.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.441390
2025-09-29T12:36:05.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:36:05.478 [DEBUG] [Thread-156022] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:05.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:36:05.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:36:05.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:36:05.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:36:05.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:35:51', tmtdew=11.71, humidity=45.06, cloud=0.0, wind=15.05, temperature=13.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:35:36.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:36:05.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:36:05.573 [DEBUG] [Thread-156025] [transport.py] [_log()] starting thread (client mode): 0x2b9c84c0
2025-09-29T12:36:05.573 [DEBUG] [Thread-156025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:05.588 [DEBUG] [Thread-156025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:36:05.588 [INFO] [Thread-156025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:36:05.596 [DEBUG] [Thread-156025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:05.597 [DEBUG] [Thread-156025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:36:05.597 [DEBUG] [Thread-156025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:05.597 [DEBUG] [Thread-156025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:05.597 [DEBUG] [Thread-156025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:05.597 [DEBUG] [Thread-156025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:05.597 [DEBUG] [Thread-156025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:05.597 [DEBUG] [Thread-156025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:05.598 [DEBUG] [Thread-156025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:05.599 [DEBUG] [Thread-156025] [transport.py] [_log()] Compression: none
2025-09-29T12:36:05.599 [DEBUG] [Thread-156025] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:05.654 [DEBUG] [Thread-156025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:05.655 [DEBUG] [Thread-156025] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:05.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:36:05.656 [DEBUG] [Thread-156025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:36:05.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:05.710 [DEBUG] [Thread-156025] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:05.710 [DEBUG] [Thread-156025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:05.710 [DEBUG] [Thread-156025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:05.710 [DEBUG] [Thread-156025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:36:05.710 [DEBUG] [Thread-156025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:05.729 [INFO] [Thread-156025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:05.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:36:05.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:06.701 [DEBUG] [Thread-156025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:06.702 [DEBUG] [Thread-156025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:06.750 [DEBUG] [Thread-156025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:06.750 [DEBUG] [Thread-156025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:06.758 [DEBUG] [Thread-156025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:06.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:06.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:36:06.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:36:06.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:06.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:06.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:06.793 [DEBUG] [Thread-156025] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:16.063 [DEBUG] [Thread-156027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:36:16.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:36:16.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:36:16.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:36:17.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 35, 51), 11.71, 45.06, 0.0, 15.05, 13.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:36:17.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:35:51
2025-09-29T12:36:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:36:17.650 [DEBUG] [Thread-156028] [transport.py] [_log()] starting thread (client mode): 0x2b9cb9a0
2025-09-29T12:36:17.650 [DEBUG] [Thread-156028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:17.672 [DEBUG] [Thread-156028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:36:17.672 [INFO] [Thread-156028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:36:17.676 [DEBUG] [Thread-156028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:17.676 [DEBUG] [Thread-156028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:36:17.676 [DEBUG] [Thread-156028] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] Compression: none
2025-09-29T12:36:17.677 [DEBUG] [Thread-156028] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:17.699 [DEBUG] [Thread-156028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:17.700 [DEBUG] [Thread-156028] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:17.700 [DEBUG] [Thread-156028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:36:17.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:36:17.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:17.702 [DEBUG] [Thread-156028] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:17.702 [DEBUG] [Thread-156028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:17.702 [DEBUG] [Thread-156028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:17.702 [DEBUG] [Thread-156028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:36:17.703 [DEBUG] [Thread-156028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:17.726 [INFO] [Thread-156028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:17.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:18.473 [DEBUG] [Thread-156028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:18.473 [DEBUG] [Thread-156028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:18.473 [DEBUG] [Thread-156028] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:36:18.514 [DEBUG] [Thread-156028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:18.514 [DEBUG] [Thread-156028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:18.516 [DEBUG] [Thread-156028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:18.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:18.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:36:18.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:36:18.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:36:18.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:18.535 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:36:18.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:18.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:18.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:36:18.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.441390 -999.00  +13.20  10.97     50   +3.10 1 1 1 1 1   888    0 11.54 54.86 ----- 11.7 11.0 179.6 18.3 21.4 -24.8 19.6 -29.4 20.4 -25.5 21.7 -26.7
2025-09-29T12:36:18.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:36:18.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:36:18.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.441390
2025-09-29T12:36:18.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:36:18.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:36:18.536 [DEBUG] [Thread-156028] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:18.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:36:18.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:36:18.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:36:18.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:35:51', tmtdew=11.71, humidity=45.06, cloud=0.0, wind=15.05, temperature=13.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:35:36.096', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:36:18.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:36:18.632 [DEBUG] [Thread-156031] [transport.py] [_log()] starting thread (client mode): 0x2b9c9db0
2025-09-29T12:36:18.632 [DEBUG] [Thread-156031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:18.646 [DEBUG] [Thread-156031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:36:18.646 [INFO] [Thread-156031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] Compression: none
2025-09-29T12:36:18.654 [DEBUG] [Thread-156031] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:18.713 [DEBUG] [Thread-156031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:18.714 [DEBUG] [Thread-156031] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:18.714 [DEBUG] [Thread-156031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:36:18.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:36:18.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:18.770 [DEBUG] [Thread-156031] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:18.770 [DEBUG] [Thread-156031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:18.770 [DEBUG] [Thread-156031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:18.770 [DEBUG] [Thread-156031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:36:18.770 [DEBUG] [Thread-156031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:18.788 [INFO] [Thread-156031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:18.788 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:36:18.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:19.734 [DEBUG] [Thread-156031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:19.735 [DEBUG] [Thread-156031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:19.782 [DEBUG] [Thread-156031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:19.782 [DEBUG] [Thread-156031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:19.790 [DEBUG] [Thread-156031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:19.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:19.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:36:19.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:36:19.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:19.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:19.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:19.824 [DEBUG] [Thread-156031] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:29.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:36:29.827 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:36:29.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:36:30.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 36, 23), 12.01, 44.23, 0.0, 16.27, 13.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:36:30.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:36:23
2025-09-29T12:36:30.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:36:30.705 [DEBUG] [Thread-156033] [transport.py] [_log()] starting thread (client mode): 0x2b9c9ab0
2025-09-29T12:36:30.705 [DEBUG] [Thread-156033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:30.724 [DEBUG] [Thread-156033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:36:30.724 [INFO] [Thread-156033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] Compression: none
2025-09-29T12:36:30.727 [DEBUG] [Thread-156033] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:30.740 [DEBUG] [Thread-156033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:30.740 [DEBUG] [Thread-156033] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:30.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:36:30.741 [DEBUG] [Thread-156033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:36:30.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:30.741 [DEBUG] [Thread-156033] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:30.741 [DEBUG] [Thread-156033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:30.741 [DEBUG] [Thread-156033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:30.741 [DEBUG] [Thread-156033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:36:30.741 [DEBUG] [Thread-156033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:30.750 [INFO] [Thread-156033] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:30.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:31.103 [DEBUG] [Thread-156035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:36:31.327 [DEBUG] [Thread-156033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:31.327 [DEBUG] [Thread-156033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:31.327 [DEBUG] [Thread-156033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:36:31.368 [DEBUG] [Thread-156033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:31.368 [DEBUG] [Thread-156033] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:31.369 [DEBUG] [Thread-156033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:31.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:31.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:36:31.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:36:31.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:36:31.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:31.385 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:36:31.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:31.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:31.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:36:31.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.441737 -999.00  +13.50   7.39     49   +3.20 1 1 1 1 1   888    0 11.61 50.77 ----- 11.7 7.4 190.2 13.8 21.4 -24.8 19.9 -24.7 20.5 -24.7 21.9 -25.9
2025-09-29T12:36:31.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:36:31.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:36:31.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.441737
2025-09-29T12:36:31.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:36:31.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:36:31.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:36:31.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:36:31.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:36:31.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:36:23', tmtdew=12.01, humidity=44.23, cloud=0.0, wind=16.27, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:36:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:36:31.386 [DEBUG] [Thread-156033] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:31.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:36:31.472 [DEBUG] [Thread-156037] [transport.py] [_log()] starting thread (client mode): 0x28707610
2025-09-29T12:36:31.472 [DEBUG] [Thread-156037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:31.487 [DEBUG] [Thread-156037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:36:31.487 [INFO] [Thread-156037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:31.494 [DEBUG] [Thread-156037] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:31.495 [DEBUG] [Thread-156037] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:31.495 [DEBUG] [Thread-156037] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:31.495 [DEBUG] [Thread-156037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:31.495 [DEBUG] [Thread-156037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:31.495 [DEBUG] [Thread-156037] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:31.495 [DEBUG] [Thread-156037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:31.495 [DEBUG] [Thread-156037] [transport.py] [_log()] Compression: none
2025-09-29T12:36:31.495 [DEBUG] [Thread-156037] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:31.553 [DEBUG] [Thread-156037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:31.553 [DEBUG] [Thread-156037] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:31.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:36:31.554 [DEBUG] [Thread-156037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:36:31.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:31.609 [DEBUG] [Thread-156037] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:31.609 [DEBUG] [Thread-156037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:31.609 [DEBUG] [Thread-156037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:31.610 [DEBUG] [Thread-156037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:36:31.610 [DEBUG] [Thread-156037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:31.624 [INFO] [Thread-156037] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:31.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:36:31.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:32.602 [DEBUG] [Thread-156037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:32.602 [DEBUG] [Thread-156037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:32.649 [DEBUG] [Thread-156037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:32.650 [DEBUG] [Thread-156037] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:32.658 [DEBUG] [Thread-156037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:32.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:32.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:36:32.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:36:32.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:32.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:32.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:32.689 [DEBUG] [Thread-156037] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:39.532 [DEBUG] [Thread-156039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:36:42.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:36:42.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:36:42.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:36:43.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 36, 23), 12.01, 44.23, 0.0, 16.27, 13.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:36:43.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:36:23
2025-09-29T12:36:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:36:43.541 [DEBUG] [Thread-156040] [transport.py] [_log()] starting thread (client mode): 0x2b9569b0
2025-09-29T12:36:43.542 [DEBUG] [Thread-156040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:43.561 [DEBUG] [Thread-156040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:36:43.562 [INFO] [Thread-156040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:43.565 [DEBUG] [Thread-156040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:43.566 [DEBUG] [Thread-156040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:43.566 [DEBUG] [Thread-156040] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:43.566 [DEBUG] [Thread-156040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:43.566 [DEBUG] [Thread-156040] [transport.py] [_log()] Compression: none
2025-09-29T12:36:43.566 [DEBUG] [Thread-156040] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:43.583 [DEBUG] [Thread-156040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:43.584 [DEBUG] [Thread-156040] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:43.584 [DEBUG] [Thread-156040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:36:43.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:36:43.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:43.586 [DEBUG] [Thread-156040] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:43.586 [DEBUG] [Thread-156040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:43.586 [DEBUG] [Thread-156040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:43.586 [DEBUG] [Thread-156040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:36:43.587 [DEBUG] [Thread-156040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:43.621 [INFO] [Thread-156040] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:43.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:44.432 [DEBUG] [Thread-156040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:44.432 [DEBUG] [Thread-156040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:44.433 [DEBUG] [Thread-156040] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:36:44.473 [DEBUG] [Thread-156040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:44.473 [DEBUG] [Thread-156040] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:44.478 [DEBUG] [Thread-156040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:44.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:44.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:36:44.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:36:44.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:36:44.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:44.503 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:36:44.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:44.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:36:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.441737 -999.00  +13.50   7.39     49   +3.20 1 1 1 1 1   888    0 11.61 50.77 ----- 11.7 7.4 190.2 13.8 21.4 -24.8 19.9 -24.7 20.5 -24.7 21.9 -25.9
2025-09-29T12:36:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:36:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:36:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.441737
2025-09-29T12:36:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:36:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:36:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:36:44.505 [DEBUG] [Thread-156040] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:36:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:36:44.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:36:23', tmtdew=12.01, humidity=44.23, cloud=0.0, wind=16.27, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:36:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:36:44.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:36:44.603 [DEBUG] [Thread-156043] [transport.py] [_log()] starting thread (client mode): 0x2b955390
2025-09-29T12:36:44.603 [DEBUG] [Thread-156043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:44.618 [DEBUG] [Thread-156043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:36:44.618 [INFO] [Thread-156043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:36:44.625 [DEBUG] [Thread-156043] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] Compression: none
2025-09-29T12:36:44.626 [DEBUG] [Thread-156043] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:44.684 [DEBUG] [Thread-156043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:44.684 [DEBUG] [Thread-156043] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:44.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:36:44.684 [DEBUG] [Thread-156043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:36:44.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:44.741 [DEBUG] [Thread-156043] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:44.741 [DEBUG] [Thread-156043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:44.741 [DEBUG] [Thread-156043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:44.741 [DEBUG] [Thread-156043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:36:44.741 [DEBUG] [Thread-156043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:44.755 [INFO] [Thread-156043] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:44.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:36:44.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:45.675 [DEBUG] [Thread-156043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:45.676 [DEBUG] [Thread-156043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:45.723 [DEBUG] [Thread-156043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:45.723 [DEBUG] [Thread-156043] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:45.732 [DEBUG] [Thread-156043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:45.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:45.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:36:45.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:36:45.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:45.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:45.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:45.767 [DEBUG] [Thread-156043] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:46.130 [DEBUG] [Thread-156045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:36:48.466 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:36:48.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:36:55.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:36:55.770 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:36:55.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:36:56.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 36, 23), 12.01, 44.23, 0.0, 16.27, 13.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:36:56.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:36:23
2025-09-29T12:36:56.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:36:56.671 [DEBUG] [Thread-156046] [transport.py] [_log()] starting thread (client mode): 0x2b9c3160
2025-09-29T12:36:56.672 [DEBUG] [Thread-156046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:56.692 [DEBUG] [Thread-156046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:36:56.692 [INFO] [Thread-156046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:56.695 [DEBUG] [Thread-156046] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:56.696 [DEBUG] [Thread-156046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:56.696 [DEBUG] [Thread-156046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:56.696 [DEBUG] [Thread-156046] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:56.696 [DEBUG] [Thread-156046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:56.696 [DEBUG] [Thread-156046] [transport.py] [_log()] Compression: none
2025-09-29T12:36:56.696 [DEBUG] [Thread-156046] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:56.710 [DEBUG] [Thread-156046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:56.711 [DEBUG] [Thread-156046] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:56.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:36:56.711 [DEBUG] [Thread-156046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:36:56.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:56.711 [DEBUG] [Thread-156046] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:56.712 [DEBUG] [Thread-156046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:56.712 [DEBUG] [Thread-156046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:56.712 [DEBUG] [Thread-156046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:36:56.712 [DEBUG] [Thread-156046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:56.721 [INFO] [Thread-156046] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:56.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:57.501 [DEBUG] [Thread-156046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:57.501 [DEBUG] [Thread-156046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:57.501 [DEBUG] [Thread-156046] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:36:57.542 [DEBUG] [Thread-156046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:57.542 [DEBUG] [Thread-156046] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:57.544 [DEBUG] [Thread-156046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:57.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:57.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:36:57.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:36:57.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:36:57.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:57.561 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:36:57.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:57.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:57.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:36:57.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.441737 -999.00  +13.50   7.39     49   +3.20 1 1 1 1 1   888    0 11.61 50.77 ----- 11.7 7.4 190.2 13.8 21.4 -24.8 19.9 -24.7 20.5 -24.7 21.9 -25.9
2025-09-29T12:36:57.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:36:57.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:36:57.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.441737
2025-09-29T12:36:57.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:36:57.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:36:57.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:36:57.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:36:57.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:36:57.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:36:23', tmtdew=12.01, humidity=44.23, cloud=0.0, wind=16.27, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:36:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:36:57.562 [DEBUG] [Thread-156046] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:36:57.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:36:57.646 [DEBUG] [Thread-156049] [transport.py] [_log()] starting thread (client mode): 0x2b9c0ac0
2025-09-29T12:36:57.646 [DEBUG] [Thread-156049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:36:57.660 [DEBUG] [Thread-156049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:36:57.660 [INFO] [Thread-156049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] client lang: <none>
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] server lang: <none>
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] kex follows: False
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] Compression: none
2025-09-29T12:36:57.668 [DEBUG] [Thread-156049] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:36:57.724 [DEBUG] [Thread-156049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:36:57.725 [DEBUG] [Thread-156049] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:36:57.725 [DEBUG] [Thread-156049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:36:57.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:36:57.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:36:57.781 [DEBUG] [Thread-156049] [transport.py] [_log()] userauth is OK
2025-09-29T12:36:57.782 [DEBUG] [Thread-156049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:36:57.782 [DEBUG] [Thread-156049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:36:57.782 [DEBUG] [Thread-156049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:36:57.782 [DEBUG] [Thread-156049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:36:57.797 [INFO] [Thread-156049] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:36:57.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:36:57.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:36:58.700 [DEBUG] [Thread-156049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:36:58.701 [DEBUG] [Thread-156049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:36:58.749 [DEBUG] [Thread-156049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:36:58.749 [DEBUG] [Thread-156049] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:36:58.758 [DEBUG] [Thread-156049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:36:58.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:36:58.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:36:58.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:36:58.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:36:58.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:36:58.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:36:58.795 [DEBUG] [Thread-156049] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:37:01.184 [DEBUG] [Thread-156051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:37:08.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:37:08.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:37:08.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:37:09.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 36, 55), 12.13, 43.71, 0.0, 17.5, 13.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:37:09.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:36:55
2025-09-29T12:37:09.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:37:09.671 [DEBUG] [Thread-156052] [transport.py] [_log()] starting thread (client mode): 0x2b955db0
2025-09-29T12:37:09.672 [DEBUG] [Thread-156052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:37:09.692 [DEBUG] [Thread-156052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:37:09.692 [INFO] [Thread-156052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] client lang: <none>
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] server lang: <none>
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] kex follows: False
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] Compression: none
2025-09-29T12:37:09.695 [DEBUG] [Thread-156052] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:37:09.714 [DEBUG] [Thread-156052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:37:09.714 [DEBUG] [Thread-156052] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:37:09.714 [DEBUG] [Thread-156052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:37:09.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:37:09.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:37:09.714 [DEBUG] [Thread-156052] [transport.py] [_log()] userauth is OK
2025-09-29T12:37:09.714 [DEBUG] [Thread-156052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:37:09.714 [DEBUG] [Thread-156052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:37:09.714 [DEBUG] [Thread-156052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:37:09.714 [DEBUG] [Thread-156052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:37:09.725 [INFO] [Thread-156052] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:37:09.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:37:10.406 [DEBUG] [Thread-156052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:37:10.406 [DEBUG] [Thread-156052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:37:10.407 [DEBUG] [Thread-156052] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:37:10.448 [DEBUG] [Thread-156052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:37:10.448 [DEBUG] [Thread-156052] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:37:10.450 [DEBUG] [Thread-156052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:37:10.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:37:10.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:37:10.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:37:10.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:37:10.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:37:10.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:37:10.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.442084 -999.00  +13.70  16.65     49   +3.30 1 1 1 1 1   888    0 11.55 49.98 ----- 17.9 16.6 142.4 22.3 21.4 -25.8 19.8 -26.8 20.4 -24.7 21.9 -25.9
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.442084
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:37:10.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:36:55', tmtdew=12.13, humidity=43.71, cloud=0.0, wind=17.5, temperature=13.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:36:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:37:10.469 [DEBUG] [Thread-156052] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:37:10.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:37:10.554 [DEBUG] [Thread-156055] [transport.py] [_log()] starting thread (client mode): 0x2b955660
2025-09-29T12:37:10.554 [DEBUG] [Thread-156055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:37:10.570 [DEBUG] [Thread-156055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:37:10.570 [INFO] [Thread-156055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:37:10.577 [DEBUG] [Thread-156055] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:37:10.577 [DEBUG] [Thread-156055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:37:10.577 [DEBUG] [Thread-156055] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:37:10.577 [DEBUG] [Thread-156055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] client lang: <none>
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] server lang: <none>
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] kex follows: False
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] Compression: none
2025-09-29T12:37:10.578 [DEBUG] [Thread-156055] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:37:10.632 [DEBUG] [Thread-156055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:37:10.633 [DEBUG] [Thread-156055] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:37:10.633 [DEBUG] [Thread-156055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:37:10.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:37:10.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:37:10.689 [DEBUG] [Thread-156055] [transport.py] [_log()] userauth is OK
2025-09-29T12:37:10.689 [DEBUG] [Thread-156055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:37:10.689 [DEBUG] [Thread-156055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:37:10.689 [DEBUG] [Thread-156055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:37:10.689 [DEBUG] [Thread-156055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:37:10.703 [INFO] [Thread-156055] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:37:10.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:37:10.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:37:11.702 [DEBUG] [Thread-156055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:37:11.702 [DEBUG] [Thread-156055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:37:11.751 [DEBUG] [Thread-156055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:37:11.751 [DEBUG] [Thread-156055] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:37:11.759 [DEBUG] [Thread-156055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:37:11.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:37:11.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:37:11.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:37:11.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:37:11.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:37:11.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:37:11.791 [DEBUG] [Thread-156055] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:37:16.213 [DEBUG] [Thread-156057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:37:21.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:37:21.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:37:21.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:37:22.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 36, 55), 12.13, 43.71, 0.0, 17.5, 13.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:37:22.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:36:55
2025-09-29T12:37:22.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:37:22.634 [DEBUG] [Thread-156058] [transport.py] [_log()] starting thread (client mode): 0x2e34a830
2025-09-29T12:37:22.634 [DEBUG] [Thread-156058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:37:22.655 [DEBUG] [Thread-156058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:37:22.655 [INFO] [Thread-156058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:37:22.658 [DEBUG] [Thread-156058] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] client lang: <none>
2025-09-29T12:37:22.659 [DEBUG] [Thread-156058] [transport.py] [_log()] server lang: <none>
2025-09-29T12:37:22.660 [DEBUG] [Thread-156058] [transport.py] [_log()] kex follows: False
2025-09-29T12:37:22.660 [DEBUG] [Thread-156058] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:37:22.660 [DEBUG] [Thread-156058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:37:22.660 [DEBUG] [Thread-156058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:37:22.660 [DEBUG] [Thread-156058] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:37:22.660 [DEBUG] [Thread-156058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:37:22.660 [DEBUG] [Thread-156058] [transport.py] [_log()] Compression: none
2025-09-29T12:37:22.660 [DEBUG] [Thread-156058] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:37:22.677 [DEBUG] [Thread-156058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:37:22.678 [DEBUG] [Thread-156058] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:37:22.678 [DEBUG] [Thread-156058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:37:22.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:37:22.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:37:22.680 [DEBUG] [Thread-156058] [transport.py] [_log()] userauth is OK
2025-09-29T12:37:22.680 [DEBUG] [Thread-156058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:37:22.681 [DEBUG] [Thread-156058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:37:22.681 [DEBUG] [Thread-156058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:37:22.681 [DEBUG] [Thread-156058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:37:22.706 [INFO] [Thread-156058] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:37:22.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:37:23.522 [DEBUG] [Thread-156058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:37:23.522 [DEBUG] [Thread-156058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:37:23.523 [DEBUG] [Thread-156058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:37:23.563 [DEBUG] [Thread-156058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:37:23.563 [DEBUG] [Thread-156058] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:37:23.566 [DEBUG] [Thread-156058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:37:23.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:37:23.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:37:23.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:37:23.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:37:23.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:37:23.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:37:23.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:37:23.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:37:23.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:37:23.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.442084 -999.00  +13.70  16.65     49   +3.30 1 1 1 1 1   888    0 11.55 49.98 ----- 17.9 16.6 142.4 22.3 21.4 -25.8 19.8 -26.8 20.4 -24.7 21.9 -25.9
2025-09-29T12:37:23.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:37:23.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:37:23.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.442084
2025-09-29T12:37:23.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:37:23.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:37:23.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:37:23.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:37:23.594 [DEBUG] [Thread-156058] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:37:23.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:37:23.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:36:55', tmtdew=12.13, humidity=43.71, cloud=0.0, wind=17.5, temperature=13.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:36:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:37:23.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:37:23.689 [DEBUG] [Thread-156061] [transport.py] [_log()] starting thread (client mode): 0x28705db0
2025-09-29T12:37:23.689 [DEBUG] [Thread-156061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:37:23.704 [DEBUG] [Thread-156061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:37:23.704 [INFO] [Thread-156061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:37:23.711 [DEBUG] [Thread-156061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:37:23.712 [DEBUG] [Thread-156061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:37:23.712 [DEBUG] [Thread-156061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:37:23.712 [DEBUG] [Thread-156061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:23.712 [DEBUG] [Thread-156061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:23.712 [DEBUG] [Thread-156061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:23.712 [DEBUG] [Thread-156061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:23.712 [DEBUG] [Thread-156061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:37:23.712 [DEBUG] [Thread-156061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] client lang: <none>
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] server lang: <none>
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] kex follows: False
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] Compression: none
2025-09-29T12:37:23.713 [DEBUG] [Thread-156061] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:37:23.769 [DEBUG] [Thread-156061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:37:23.770 [DEBUG] [Thread-156061] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:37:23.770 [DEBUG] [Thread-156061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:37:23.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:37:23.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:37:23.825 [DEBUG] [Thread-156061] [transport.py] [_log()] userauth is OK
2025-09-29T12:37:23.826 [DEBUG] [Thread-156061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:37:23.826 [DEBUG] [Thread-156061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:37:23.826 [DEBUG] [Thread-156061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:37:23.826 [DEBUG] [Thread-156061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:37:23.846 [INFO] [Thread-156061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:37:23.846 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:37:23.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:37:24.798 [DEBUG] [Thread-156061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:37:24.798 [DEBUG] [Thread-156061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:37:24.846 [DEBUG] [Thread-156061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:37:24.846 [DEBUG] [Thread-156061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:37:24.855 [DEBUG] [Thread-156061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:37:24.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:37:24.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:37:24.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:37:24.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:37:24.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:37:24.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:37:24.889 [DEBUG] [Thread-156061] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:37:31.248 [DEBUG] [Thread-156063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:37:34.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:37:34.892 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:37:34.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:37:35.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 37, 27), 12.08, 43.8, 0.0, 15.35, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:37:35.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:37:27
2025-09-29T12:37:35.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:37:35.740 [DEBUG] [Thread-156064] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-29T12:37:35.740 [DEBUG] [Thread-156064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:37:35.759 [DEBUG] [Thread-156064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:37:35.759 [INFO] [Thread-156064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] client lang: <none>
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] server lang: <none>
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] kex follows: False
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] Compression: none
2025-09-29T12:37:35.762 [DEBUG] [Thread-156064] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:37:35.770 [DEBUG] [Thread-156064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:37:35.770 [DEBUG] [Thread-156064] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:37:35.770 [DEBUG] [Thread-156064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:37:35.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:37:35.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:37:35.771 [DEBUG] [Thread-156064] [transport.py] [_log()] userauth is OK
2025-09-29T12:37:35.772 [DEBUG] [Thread-156064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:37:35.772 [DEBUG] [Thread-156064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:37:35.772 [DEBUG] [Thread-156064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:37:35.772 [DEBUG] [Thread-156064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:37:35.801 [INFO] [Thread-156064] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:37:35.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:37:36.571 [DEBUG] [Thread-156064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:37:36.571 [DEBUG] [Thread-156064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:37:36.571 [DEBUG] [Thread-156064] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:37:36.612 [DEBUG] [Thread-156064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:37:36.613 [DEBUG] [Thread-156064] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:37:36.615 [DEBUG] [Thread-156064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:37:36.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:37:36.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:37:36.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:37:36.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:37:36.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:37:36.637 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:37:36.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:37:36.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:37:36.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:37:36.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.442431 -999.00  +13.70  19.45     48   +3.10 1 1 1 1 1   888    0 11.32 50.41 ----- 16.7 19.4 140.0 20.1 21.5 -25.1 20.1 -24.7 20.5 -25.2 21.9 -25.9
2025-09-29T12:37:36.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:37:36.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:37:36.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.442431
2025-09-29T12:37:36.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:37:36.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:37:36.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:37:36.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:37:36.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:37:36.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:37:27', tmtdew=12.08, humidity=43.8, cloud=0.0, wind=15.35, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:37:06.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:37:36.648 [DEBUG] [Thread-156064] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:37:36.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:37:36.747 [DEBUG] [Thread-156067] [transport.py] [_log()] starting thread (client mode): 0x2b91dde0
2025-09-29T12:37:36.747 [DEBUG] [Thread-156067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:37:36.761 [DEBUG] [Thread-156067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:37:36.762 [INFO] [Thread-156067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] client lang: <none>
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] server lang: <none>
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] kex follows: False
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:37:36.769 [DEBUG] [Thread-156067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:37:36.770 [DEBUG] [Thread-156067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:37:36.770 [DEBUG] [Thread-156067] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:37:36.770 [DEBUG] [Thread-156067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:37:36.770 [DEBUG] [Thread-156067] [transport.py] [_log()] Compression: none
2025-09-29T12:37:36.770 [DEBUG] [Thread-156067] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:37:36.824 [DEBUG] [Thread-156067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:37:36.824 [DEBUG] [Thread-156067] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:37:36.824 [DEBUG] [Thread-156067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:37:36.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:37:36.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:37:36.881 [DEBUG] [Thread-156067] [transport.py] [_log()] userauth is OK
2025-09-29T12:37:36.882 [DEBUG] [Thread-156067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:37:36.882 [DEBUG] [Thread-156067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:37:36.882 [DEBUG] [Thread-156067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:37:36.882 [DEBUG] [Thread-156067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:37:36.902 [INFO] [Thread-156067] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:37:36.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:37:36.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:37:37.838 [DEBUG] [Thread-156067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:37:37.839 [DEBUG] [Thread-156067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:37:37.886 [DEBUG] [Thread-156067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:37:37.886 [DEBUG] [Thread-156067] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:37:37.895 [DEBUG] [Thread-156067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:37:37.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:37:37.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:37:37.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:37:37.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:37:37.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:37:37.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:37:37.930 [DEBUG] [Thread-156067] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:37:39.584 [DEBUG] [Thread-156069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:37:46.279 [DEBUG] [Thread-156070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:37:47.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:37:47.932 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:37:47.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:37:48.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 37, 27), 12.08, 43.8, 0.0, 15.35, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:37:48.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:37:27
2025-09-29T12:37:48.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:37:48.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:37:48.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:37:48.803 [DEBUG] [Thread-156071] [transport.py] [_log()] starting thread (client mode): 0x2e349150
2025-09-29T12:37:48.803 [DEBUG] [Thread-156071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:37:48.826 [DEBUG] [Thread-156071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:37:48.826 [INFO] [Thread-156071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:37:48.830 [DEBUG] [Thread-156071] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:37:48.830 [DEBUG] [Thread-156071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:37:48.830 [DEBUG] [Thread-156071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:37:48.830 [DEBUG] [Thread-156071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:48.830 [DEBUG] [Thread-156071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:48.830 [DEBUG] [Thread-156071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:48.830 [DEBUG] [Thread-156071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:48.830 [DEBUG] [Thread-156071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] client lang: <none>
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] server lang: <none>
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] kex follows: False
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] Compression: none
2025-09-29T12:37:48.831 [DEBUG] [Thread-156071] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:37:48.846 [DEBUG] [Thread-156071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:37:48.847 [DEBUG] [Thread-156071] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:37:48.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:37:48.847 [DEBUG] [Thread-156071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:37:48.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:37:48.848 [DEBUG] [Thread-156071] [transport.py] [_log()] userauth is OK
2025-09-29T12:37:48.848 [DEBUG] [Thread-156071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:37:48.848 [DEBUG] [Thread-156071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:37:48.848 [DEBUG] [Thread-156071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:37:48.848 [DEBUG] [Thread-156071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:37:48.857 [INFO] [Thread-156071] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:37:48.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:37:49.533 [DEBUG] [Thread-156071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:37:49.533 [DEBUG] [Thread-156071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:37:49.533 [DEBUG] [Thread-156071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:37:49.574 [DEBUG] [Thread-156071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:37:49.574 [DEBUG] [Thread-156071] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:37:49.576 [DEBUG] [Thread-156071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:37:49.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:37:49.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:37:49.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:37:49.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:37:49.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:37:49.594 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:37:49.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.442431 -999.00  +13.70  19.45     48   +3.10 1 1 1 1 1   888    0 11.32 50.41 ----- 16.7 19.4 140.0 20.1 21.5 -25.1 20.1 -24.7 20.5 -25.2 21.9 -25.9
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.442431
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:37:49.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:37:27', tmtdew=12.08, humidity=43.8, cloud=0.0, wind=15.35, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:37:06.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:37:49.595 [DEBUG] [Thread-156071] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:37:49.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:37:49.679 [DEBUG] [Thread-156074] [transport.py] [_log()] starting thread (client mode): 0x28706a40
2025-09-29T12:37:49.679 [DEBUG] [Thread-156074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:37:49.694 [DEBUG] [Thread-156074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:37:49.694 [INFO] [Thread-156074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] client lang: <none>
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] server lang: <none>
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] kex follows: False
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] Compression: none
2025-09-29T12:37:49.702 [DEBUG] [Thread-156074] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:37:49.760 [DEBUG] [Thread-156074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:37:49.761 [DEBUG] [Thread-156074] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:37:49.761 [DEBUG] [Thread-156074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:37:49.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:37:49.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:37:49.817 [DEBUG] [Thread-156074] [transport.py] [_log()] userauth is OK
2025-09-29T12:37:49.817 [DEBUG] [Thread-156074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:37:49.817 [DEBUG] [Thread-156074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:37:49.817 [DEBUG] [Thread-156074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:37:49.817 [DEBUG] [Thread-156074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:37:49.831 [INFO] [Thread-156074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:37:49.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:37:49.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:37:50.814 [DEBUG] [Thread-156074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:37:50.814 [DEBUG] [Thread-156074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:37:50.862 [DEBUG] [Thread-156074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:37:50.862 [DEBUG] [Thread-156074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:37:50.870 [DEBUG] [Thread-156074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:37:50.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:37:50.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:37:50.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:37:50.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:37:50.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:37:50.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:37:50.902 [DEBUG] [Thread-156074] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:00.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:38:00.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:38:00.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:38:01.314 [DEBUG] [Thread-156076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:38:01.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 37, 27), 12.08, 43.8, 0.0, 15.35, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:38:01.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:37:27
2025-09-29T12:38:01.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:38:01.793 [DEBUG] [Thread-156077] [transport.py] [_log()] starting thread (client mode): 0x287049d0
2025-09-29T12:38:01.793 [DEBUG] [Thread-156077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:01.813 [DEBUG] [Thread-156077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:38:01.813 [INFO] [Thread-156077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:01.815 [DEBUG] [Thread-156077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:01.816 [DEBUG] [Thread-156077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:01.816 [DEBUG] [Thread-156077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:01.816 [DEBUG] [Thread-156077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:01.816 [DEBUG] [Thread-156077] [transport.py] [_log()] Compression: none
2025-09-29T12:38:01.816 [DEBUG] [Thread-156077] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:01.827 [DEBUG] [Thread-156077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:01.827 [DEBUG] [Thread-156077] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:01.828 [DEBUG] [Thread-156077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:38:01.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:38:01.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:01.829 [DEBUG] [Thread-156077] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:01.829 [DEBUG] [Thread-156077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:01.829 [DEBUG] [Thread-156077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:01.830 [DEBUG] [Thread-156077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:38:01.830 [DEBUG] [Thread-156077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:01.843 [INFO] [Thread-156077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:01.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:02.644 [DEBUG] [Thread-156077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:02.644 [DEBUG] [Thread-156077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:02.645 [DEBUG] [Thread-156077] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:38:02.685 [DEBUG] [Thread-156077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:02.686 [DEBUG] [Thread-156077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:02.688 [DEBUG] [Thread-156077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:02.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:02.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:38:02.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:38:02.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:38:02.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:02.710 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:38:02.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:02.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:02.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:38:02.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.442431 -999.00  +13.70  19.45     48   +3.10 1 1 1 1 1   888    0 11.32 50.41 ----- 16.7 19.4 140.0 20.1 21.5 -25.1 20.1 -24.7 20.5 -25.2 21.9 -25.9
2025-09-29T12:38:02.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:38:02.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:38:02.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.442431
2025-09-29T12:38:02.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:38:02.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:38:02.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:38:02.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:38:02.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:38:02.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:37:27', tmtdew=12.08, humidity=43.8, cloud=0.0, wind=15.35, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:37:06.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:38:02.713 [DEBUG] [Thread-156077] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:02.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:38:02.808 [DEBUG] [Thread-156080] [transport.py] [_log()] starting thread (client mode): 0x2b9af250
2025-09-29T12:38:02.809 [DEBUG] [Thread-156080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:02.823 [DEBUG] [Thread-156080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:38:02.823 [INFO] [Thread-156080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] Compression: none
2025-09-29T12:38:02.831 [DEBUG] [Thread-156080] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:02.889 [DEBUG] [Thread-156080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:02.889 [DEBUG] [Thread-156080] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:02.890 [DEBUG] [Thread-156080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:38:02.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:38:02.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:02.945 [DEBUG] [Thread-156080] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:02.945 [DEBUG] [Thread-156080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:02.945 [DEBUG] [Thread-156080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:02.946 [DEBUG] [Thread-156080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:38:02.946 [DEBUG] [Thread-156080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:02.968 [INFO] [Thread-156080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:02.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:38:02.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:03.912 [DEBUG] [Thread-156080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:03.913 [DEBUG] [Thread-156080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:03.960 [DEBUG] [Thread-156080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:03.960 [DEBUG] [Thread-156080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:03.968 [DEBUG] [Thread-156080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:03.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:03.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:38:03.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:38:03.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:03.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:03.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:04.001 [DEBUG] [Thread-156080] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:38:14.004 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:38:14.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:38:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 37, 59), 11.69, 44.84, 0.0, 13.41, 13.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:38:14.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:37:59
2025-09-29T12:38:14.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:38:14.856 [DEBUG] [Thread-156082] [transport.py] [_log()] starting thread (client mode): 0x2b9c8df0
2025-09-29T12:38:14.856 [DEBUG] [Thread-156082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:14.876 [DEBUG] [Thread-156082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:38:14.877 [INFO] [Thread-156082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:38:14.880 [DEBUG] [Thread-156082] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:14.880 [DEBUG] [Thread-156082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:38:14.880 [DEBUG] [Thread-156082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:14.880 [DEBUG] [Thread-156082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:14.880 [DEBUG] [Thread-156082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:14.880 [DEBUG] [Thread-156082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:14.880 [DEBUG] [Thread-156082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:14.880 [DEBUG] [Thread-156082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] Compression: none
2025-09-29T12:38:14.881 [DEBUG] [Thread-156082] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:14.899 [DEBUG] [Thread-156082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:14.900 [DEBUG] [Thread-156082] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:14.900 [DEBUG] [Thread-156082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:38:14.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:38:14.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:14.902 [DEBUG] [Thread-156082] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:14.902 [DEBUG] [Thread-156082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:14.902 [DEBUG] [Thread-156082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:14.903 [DEBUG] [Thread-156082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:38:14.903 [DEBUG] [Thread-156082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:14.922 [INFO] [Thread-156082] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:14.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:15.591 [DEBUG] [Thread-156082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:15.591 [DEBUG] [Thread-156082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:15.591 [DEBUG] [Thread-156082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:38:15.632 [DEBUG] [Thread-156082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:15.632 [DEBUG] [Thread-156082] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:15.635 [DEBUG] [Thread-156082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:15.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:15.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:38:15.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:38:15.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:38:15.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:15.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:38:15.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:15.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:38:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.443126 -999.00  +13.10   6.95     51   +3.20 1 1 1 1 1   888    0 11.28 43.01 ----- 9.4 7.0 182.3 12.8 21.4 -25.2 20.4 -24.1 20.6 -24.1 21.9 -25.6
2025-09-29T12:38:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:38:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:38:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.443126
2025-09-29T12:38:15.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:38:15.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:38:15.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:38:15.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:38:15.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:38:15.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:37:59', tmtdew=11.69, humidity=44.84, cloud=0.0, wind=13.41, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:38:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:38:15.662 [DEBUG] [Thread-156082] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:15.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:38:15.756 [DEBUG] [Thread-156085] [transport.py] [_log()] starting thread (client mode): 0x2b9ae440
2025-09-29T12:38:15.756 [DEBUG] [Thread-156085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:15.774 [DEBUG] [Thread-156085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:38:15.774 [INFO] [Thread-156085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:38:15.782 [DEBUG] [Thread-156085] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:15.782 [DEBUG] [Thread-156085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] Compression: none
2025-09-29T12:38:15.783 [DEBUG] [Thread-156085] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:15.841 [DEBUG] [Thread-156085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:15.841 [DEBUG] [Thread-156085] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:15.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:38:15.842 [DEBUG] [Thread-156085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:38:15.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:15.897 [DEBUG] [Thread-156085] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:15.897 [DEBUG] [Thread-156085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:15.897 [DEBUG] [Thread-156085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:15.897 [DEBUG] [Thread-156085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:38:15.897 [DEBUG] [Thread-156085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:15.910 [INFO] [Thread-156085] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:15.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:38:15.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:16.343 [DEBUG] [Thread-156087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:38:16.852 [DEBUG] [Thread-156085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:16.852 [DEBUG] [Thread-156085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:16.902 [DEBUG] [Thread-156085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:16.902 [DEBUG] [Thread-156085] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:16.911 [DEBUG] [Thread-156085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:16.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:16.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:38:16.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:38:16.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:16.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:16.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:16.945 [DEBUG] [Thread-156085] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:26.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:38:26.948 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:38:26.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:38:27.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 37, 59), 11.69, 44.84, 0.0, 13.41, 13.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:38:27.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:37:59
2025-09-29T12:38:27.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:38:27.827 [DEBUG] [Thread-156088] [transport.py] [_log()] starting thread (client mode): 0x2e34a2f0
2025-09-29T12:38:27.827 [DEBUG] [Thread-156088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:27.847 [DEBUG] [Thread-156088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:38:27.847 [INFO] [Thread-156088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] Compression: none
2025-09-29T12:38:27.850 [DEBUG] [Thread-156088] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:27.858 [DEBUG] [Thread-156088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:27.858 [DEBUG] [Thread-156088] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:27.858 [DEBUG] [Thread-156088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:38:27.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:38:27.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:27.900 [DEBUG] [Thread-156088] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:27.900 [DEBUG] [Thread-156088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:27.900 [DEBUG] [Thread-156088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:27.900 [DEBUG] [Thread-156088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:38:27.900 [DEBUG] [Thread-156088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:27.919 [INFO] [Thread-156088] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:27.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:28.738 [DEBUG] [Thread-156088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:28.738 [DEBUG] [Thread-156088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:28.739 [DEBUG] [Thread-156088] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:38:28.780 [DEBUG] [Thread-156088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:28.780 [DEBUG] [Thread-156088] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:28.782 [DEBUG] [Thread-156088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:28.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:28.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:38:28.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:38:28.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:38:28.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:28.799 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:38:28.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.443126 -999.00  +13.10   6.95     51   +3.20 1 1 1 1 1   888    0 11.28 43.01 ----- 9.4 7.0 182.3 12.8 21.4 -25.2 20.4 -24.1 20.6 -24.1 21.9 -25.6
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.443126
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:38:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:37:59', tmtdew=11.69, humidity=44.84, cloud=0.0, wind=13.41, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:38:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:38:28.800 [DEBUG] [Thread-156088] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:28.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:38:28.886 [DEBUG] [Thread-156091] [transport.py] [_log()] starting thread (client mode): 0x2b9c3d90
2025-09-29T12:38:28.886 [DEBUG] [Thread-156091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:28.900 [DEBUG] [Thread-156091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:38:28.900 [INFO] [Thread-156091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] Compression: none
2025-09-29T12:38:28.908 [DEBUG] [Thread-156091] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:28.963 [DEBUG] [Thread-156091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:28.963 [DEBUG] [Thread-156091] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:28.963 [DEBUG] [Thread-156091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:38:28.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:38:28.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:29.021 [DEBUG] [Thread-156091] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:29.021 [DEBUG] [Thread-156091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:29.021 [DEBUG] [Thread-156091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:29.021 [DEBUG] [Thread-156091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:38:29.021 [DEBUG] [Thread-156091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:29.034 [INFO] [Thread-156091] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:29.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:38:29.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:30.044 [DEBUG] [Thread-156091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:30.044 [DEBUG] [Thread-156091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:30.091 [DEBUG] [Thread-156091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:30.091 [DEBUG] [Thread-156091] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:30.099 [DEBUG] [Thread-156091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:30.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:30.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:38:30.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:38:30.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:30.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:30.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:30.130 [DEBUG] [Thread-156091] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:31.384 [DEBUG] [Thread-156093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:38:39.637 [DEBUG] [Thread-156094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:38:40.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:38:40.133 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:38:40.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:38:40.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 38, 31), 11.43, 45.59, 0.0, 12.39, 12.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:38:40.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:38:31
2025-09-29T12:38:40.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:38:40.985 [DEBUG] [Thread-156095] [transport.py] [_log()] starting thread (client mode): 0x2b9aeb60
2025-09-29T12:38:40.985 [DEBUG] [Thread-156095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:41.005 [DEBUG] [Thread-156095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:38:41.005 [INFO] [Thread-156095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:38:41.008 [DEBUG] [Thread-156095] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:41.008 [DEBUG] [Thread-156095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:38:41.008 [DEBUG] [Thread-156095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:41.009 [DEBUG] [Thread-156095] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:41.010 [DEBUG] [Thread-156095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:41.010 [DEBUG] [Thread-156095] [transport.py] [_log()] Compression: none
2025-09-29T12:38:41.010 [DEBUG] [Thread-156095] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:41.026 [DEBUG] [Thread-156095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:41.026 [DEBUG] [Thread-156095] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:41.026 [DEBUG] [Thread-156095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:38:41.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:38:41.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:41.027 [DEBUG] [Thread-156095] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:41.027 [DEBUG] [Thread-156095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:41.027 [DEBUG] [Thread-156095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:41.027 [DEBUG] [Thread-156095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:38:41.027 [DEBUG] [Thread-156095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:41.036 [INFO] [Thread-156095] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:41.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:41.856 [DEBUG] [Thread-156095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:41.856 [DEBUG] [Thread-156095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:41.857 [DEBUG] [Thread-156095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:38:41.897 [DEBUG] [Thread-156095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:41.897 [DEBUG] [Thread-156095] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:41.900 [DEBUG] [Thread-156095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:41.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:41.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:38:41.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:38:41.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:38:41.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:41.923 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:38:41.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:41.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:41.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:38:41.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.443126 -999.00  +13.10   6.95     51   +3.20 1 1 1 1 1   888    0 11.28 43.01 ----- 9.4 7.0 182.3 12.8 21.4 -25.2 20.4 -24.1 20.6 -24.1 21.9 -25.6
2025-09-29T12:38:41.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:38:41.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:38:41.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.443126
2025-09-29T12:38:41.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:38:41.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:38:41.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:38:41.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:38:41.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:38:41.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:38:31', tmtdew=11.43, humidity=45.59, cloud=0.0, wind=12.39, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:38:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:38:41.926 [DEBUG] [Thread-156095] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:42.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:38:42.032 [DEBUG] [Thread-156098] [transport.py] [_log()] starting thread (client mode): 0x2e38f910
2025-09-29T12:38:42.032 [DEBUG] [Thread-156098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:42.047 [DEBUG] [Thread-156098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:38:42.047 [INFO] [Thread-156098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:38:42.055 [DEBUG] [Thread-156098] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:42.055 [DEBUG] [Thread-156098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:38:42.055 [DEBUG] [Thread-156098] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:42.055 [DEBUG] [Thread-156098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:42.055 [DEBUG] [Thread-156098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] Compression: none
2025-09-29T12:38:42.056 [DEBUG] [Thread-156098] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:42.113 [DEBUG] [Thread-156098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:42.113 [DEBUG] [Thread-156098] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:42.114 [DEBUG] [Thread-156098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:38:42.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:38:42.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:42.169 [DEBUG] [Thread-156098] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:42.170 [DEBUG] [Thread-156098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:42.170 [DEBUG] [Thread-156098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:42.170 [DEBUG] [Thread-156098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:38:42.170 [DEBUG] [Thread-156098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:42.190 [INFO] [Thread-156098] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:42.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:38:42.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:43.202 [DEBUG] [Thread-156098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:43.203 [DEBUG] [Thread-156098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:43.250 [DEBUG] [Thread-156098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:43.250 [DEBUG] [Thread-156098] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:43.259 [DEBUG] [Thread-156098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:43.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:43.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:38:43.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:38:43.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:43.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:43.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:43.294 [DEBUG] [Thread-156098] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:46.413 [DEBUG] [Thread-156100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:38:48.749 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:38:48.751 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:38:53.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:38:53.297 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:38:53.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:38:53.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 38, 31), 11.43, 45.59, 0.0, 12.39, 12.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:38:53.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:38:31
2025-09-29T12:38:54.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:38:54.161 [DEBUG] [Thread-156101] [transport.py] [_log()] starting thread (client mode): 0x2b9559f0
2025-09-29T12:38:54.162 [DEBUG] [Thread-156101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:54.181 [DEBUG] [Thread-156101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:38:54.182 [INFO] [Thread-156101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:38:54.185 [DEBUG] [Thread-156101] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:54.185 [DEBUG] [Thread-156101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:38:54.185 [DEBUG] [Thread-156101] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] Compression: none
2025-09-29T12:38:54.186 [DEBUG] [Thread-156101] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:54.204 [DEBUG] [Thread-156101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:54.205 [DEBUG] [Thread-156101] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:54.205 [DEBUG] [Thread-156101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:38:54.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:38:54.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:54.207 [DEBUG] [Thread-156101] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:54.207 [DEBUG] [Thread-156101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:54.207 [DEBUG] [Thread-156101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:54.208 [DEBUG] [Thread-156101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:38:54.208 [DEBUG] [Thread-156101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:54.225 [INFO] [Thread-156101] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:54.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:54.875 [DEBUG] [Thread-156101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:54.875 [DEBUG] [Thread-156101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:54.876 [DEBUG] [Thread-156101] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:38:54.916 [DEBUG] [Thread-156101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:54.916 [DEBUG] [Thread-156101] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:54.919 [DEBUG] [Thread-156101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:54.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:54.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:38:54.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:38:54.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:38:54.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:54.942 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:38:54.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:54.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:54.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:38:54.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.443473 -999.00  +13.20   5.96     50   +3.30 1 1 1 1 1   888    0 11.35 41.09 ----- 6.7 6.0 179.6 9.1 21.6 -24.2 20.5 -23.5 20.8 -24.0 22.1 -24.5
2025-09-29T12:38:54.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:38:54.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:38:54.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.443473
2025-09-29T12:38:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:38:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:38:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:38:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:38:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:38:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:38:31', tmtdew=11.43, humidity=45.59, cloud=0.0, wind=12.39, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:38:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:38:54.944 [DEBUG] [Thread-156101] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:38:55.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:38:55.041 [DEBUG] [Thread-156104] [transport.py] [_log()] starting thread (client mode): 0x2e34a2f0
2025-09-29T12:38:55.041 [DEBUG] [Thread-156104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:38:55.056 [DEBUG] [Thread-156104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:38:55.056 [INFO] [Thread-156104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:38:55.067 [DEBUG] [Thread-156104] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:38:55.067 [DEBUG] [Thread-156104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] client lang: <none>
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] server lang: <none>
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] kex follows: False
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:38:55.068 [DEBUG] [Thread-156104] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:38:55.069 [DEBUG] [Thread-156104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:38:55.069 [DEBUG] [Thread-156104] [transport.py] [_log()] Compression: none
2025-09-29T12:38:55.069 [DEBUG] [Thread-156104] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:38:55.125 [DEBUG] [Thread-156104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:38:55.126 [DEBUG] [Thread-156104] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:38:55.126 [DEBUG] [Thread-156104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:38:55.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:38:55.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:38:55.181 [DEBUG] [Thread-156104] [transport.py] [_log()] userauth is OK
2025-09-29T12:38:55.182 [DEBUG] [Thread-156104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:38:55.182 [DEBUG] [Thread-156104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:38:55.182 [DEBUG] [Thread-156104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:38:55.182 [DEBUG] [Thread-156104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:38:55.200 [INFO] [Thread-156104] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:38:55.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:38:55.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:38:56.130 [DEBUG] [Thread-156104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:38:56.130 [DEBUG] [Thread-156104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:38:56.178 [DEBUG] [Thread-156104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:38:56.178 [DEBUG] [Thread-156104] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:38:56.187 [DEBUG] [Thread-156104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:38:56.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:38:56.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:38:56.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:38:56.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:38:56.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:38:56.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:38:56.222 [DEBUG] [Thread-156104] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:01.460 [DEBUG] [Thread-156106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:39:06.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:39:06.223 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:39:06.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:39:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 39, 3), 11.18, 46.35, 0.0, 13.73, 12.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:39:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:39:03
2025-09-29T12:39:06.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:39:07.109 [DEBUG] [Thread-156107] [transport.py] [_log()] starting thread (client mode): 0x2e38dff0
2025-09-29T12:39:07.109 [DEBUG] [Thread-156107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:07.130 [DEBUG] [Thread-156107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:39:07.130 [INFO] [Thread-156107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] Compression: none
2025-09-29T12:39:07.134 [DEBUG] [Thread-156107] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:07.150 [DEBUG] [Thread-156107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:07.150 [DEBUG] [Thread-156107] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:07.151 [DEBUG] [Thread-156107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:39:07.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:39:07.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:07.151 [DEBUG] [Thread-156107] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:07.152 [DEBUG] [Thread-156107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:07.152 [DEBUG] [Thread-156107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:07.152 [DEBUG] [Thread-156107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:39:07.152 [DEBUG] [Thread-156107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:07.160 [INFO] [Thread-156107] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:07.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:08.000 [DEBUG] [Thread-156107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:08.000 [DEBUG] [Thread-156107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:08.000 [DEBUG] [Thread-156107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:39:08.041 [DEBUG] [Thread-156107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:08.041 [DEBUG] [Thread-156107] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:08.043 [DEBUG] [Thread-156107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:08.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:08.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:39:08.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:39:08.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:39:08.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:08.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:39:08.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.443473 -999.00  +13.20   5.96     50   +3.30 1 1 1 1 1   888    0 11.35 41.09 ----- 6.7 6.0 179.6 9.1 21.6 -24.2 20.5 -23.5 20.8 -24.0 22.1 -24.5
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.443473
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:39:08.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:39:03', tmtdew=11.18, humidity=46.35, cloud=0.0, wind=13.73, temperature=12.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:38:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:39:08.061 [DEBUG] [Thread-156107] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:08.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:39:08.146 [DEBUG] [Thread-156110] [transport.py] [_log()] starting thread (client mode): 0x2b96ba60
2025-09-29T12:39:08.146 [DEBUG] [Thread-156110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:08.161 [DEBUG] [Thread-156110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:39:08.161 [INFO] [Thread-156110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:39:08.168 [DEBUG] [Thread-156110] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:08.168 [DEBUG] [Thread-156110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:39:08.168 [DEBUG] [Thread-156110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:08.168 [DEBUG] [Thread-156110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:08.168 [DEBUG] [Thread-156110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:08.168 [DEBUG] [Thread-156110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:08.168 [DEBUG] [Thread-156110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] Compression: none
2025-09-29T12:39:08.169 [DEBUG] [Thread-156110] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:08.228 [DEBUG] [Thread-156110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:08.228 [DEBUG] [Thread-156110] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:08.228 [DEBUG] [Thread-156110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:39:08.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:39:08.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:08.285 [DEBUG] [Thread-156110] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:08.285 [DEBUG] [Thread-156110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:08.286 [DEBUG] [Thread-156110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:08.286 [DEBUG] [Thread-156110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:39:08.286 [DEBUG] [Thread-156110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:08.300 [INFO] [Thread-156110] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:08.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:39:08.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:09.332 [DEBUG] [Thread-156110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:09.333 [DEBUG] [Thread-156110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:09.381 [DEBUG] [Thread-156110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:09.381 [DEBUG] [Thread-156110] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:09.389 [DEBUG] [Thread-156110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:09.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:09.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:39:09.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:39:09.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:09.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:09.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:09.422 [DEBUG] [Thread-156110] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:16.502 [DEBUG] [Thread-156112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:39:19.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:39:19.425 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:39:19.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:39:20.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 39, 3), 11.18, 46.35, 0.0, 13.73, 12.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:39:20.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:39:03
2025-09-29T12:39:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:39:20.265 [DEBUG] [Thread-156113] [transport.py] [_log()] starting thread (client mode): 0x28707610
2025-09-29T12:39:20.266 [DEBUG] [Thread-156113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:20.285 [DEBUG] [Thread-156113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:39:20.285 [INFO] [Thread-156113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:20.287 [DEBUG] [Thread-156113] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:20.288 [DEBUG] [Thread-156113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:20.288 [DEBUG] [Thread-156113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:20.288 [DEBUG] [Thread-156113] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:20.288 [DEBUG] [Thread-156113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:20.288 [DEBUG] [Thread-156113] [transport.py] [_log()] Compression: none
2025-09-29T12:39:20.288 [DEBUG] [Thread-156113] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:20.300 [DEBUG] [Thread-156113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:20.301 [DEBUG] [Thread-156113] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:20.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:39:20.303 [DEBUG] [Thread-156113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:39:20.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:20.304 [DEBUG] [Thread-156113] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:20.305 [DEBUG] [Thread-156113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:20.305 [DEBUG] [Thread-156113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:20.305 [DEBUG] [Thread-156113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:39:20.305 [DEBUG] [Thread-156113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:20.327 [INFO] [Thread-156113] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:20.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:20.934 [DEBUG] [Thread-156113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:20.934 [DEBUG] [Thread-156113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:20.935 [DEBUG] [Thread-156113] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:39:20.975 [DEBUG] [Thread-156113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:20.975 [DEBUG] [Thread-156113] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:20.980 [DEBUG] [Thread-156113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:20.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:20.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:39:20.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:39:21.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:39:21.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:21.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:39:21.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:21.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:21.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:39:21.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.443820 -999.00  +13.40  10.71     50   +3.30 1 1 1 1 1   888    0 11.30 39.16 ----- 11.1 10.7 128.3 14.3 21.8 -24.4 20.5 -24.2 20.8 -23.9 22.2 -25.5
2025-09-29T12:39:21.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:39:21.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:39:21.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.443820
2025-09-29T12:39:21.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:39:21.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:39:21.016 [DEBUG] [Thread-156113] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:21.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:39:21.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:39:21.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:39:21.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:39:03', tmtdew=11.18, humidity=46.35, cloud=0.0, wind=13.73, temperature=12.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:39:06.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:39:21.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:39:21.111 [DEBUG] [Thread-156116] [transport.py] [_log()] starting thread (client mode): 0x2b91dde0
2025-09-29T12:39:21.111 [DEBUG] [Thread-156116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:21.126 [DEBUG] [Thread-156116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:39:21.126 [INFO] [Thread-156116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:21.134 [DEBUG] [Thread-156116] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:21.135 [DEBUG] [Thread-156116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:21.135 [DEBUG] [Thread-156116] [transport.py] [_log()] Compression: none
2025-09-29T12:39:21.135 [DEBUG] [Thread-156116] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:21.190 [DEBUG] [Thread-156116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:21.190 [DEBUG] [Thread-156116] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:21.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:39:21.191 [DEBUG] [Thread-156116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:39:21.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:21.246 [DEBUG] [Thread-156116] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:21.246 [DEBUG] [Thread-156116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:21.247 [DEBUG] [Thread-156116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:21.247 [DEBUG] [Thread-156116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:39:21.247 [DEBUG] [Thread-156116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:21.266 [INFO] [Thread-156116] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:21.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:39:21.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:22.186 [DEBUG] [Thread-156116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:22.187 [DEBUG] [Thread-156116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:22.234 [DEBUG] [Thread-156116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:22.235 [DEBUG] [Thread-156116] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:22.243 [DEBUG] [Thread-156116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:22.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:22.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:39:22.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:39:22.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:22.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:22.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:22.282 [DEBUG] [Thread-156116] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:31.546 [DEBUG] [Thread-156118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:39:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:39:32.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:39:32.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:39:32.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 39, 3), 11.18, 46.35, 0.0, 13.73, 12.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:39:32.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:39:03
2025-09-29T12:39:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:39:33.120 [DEBUG] [Thread-156119] [transport.py] [_log()] starting thread (client mode): 0x2b9559f0
2025-09-29T12:39:33.121 [DEBUG] [Thread-156119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:33.150 [DEBUG] [Thread-156119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:39:33.150 [INFO] [Thread-156119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:39:33.151 [DEBUG] [Thread-156119] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:33.151 [DEBUG] [Thread-156119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:39:33.151 [DEBUG] [Thread-156119] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:33.151 [DEBUG] [Thread-156119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:33.151 [DEBUG] [Thread-156119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:33.151 [DEBUG] [Thread-156119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] Compression: none
2025-09-29T12:39:33.152 [DEBUG] [Thread-156119] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:33.161 [DEBUG] [Thread-156119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:33.162 [DEBUG] [Thread-156119] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:33.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:39:33.163 [DEBUG] [Thread-156119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:39:33.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:33.165 [DEBUG] [Thread-156119] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:33.165 [DEBUG] [Thread-156119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:33.165 [DEBUG] [Thread-156119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:33.165 [DEBUG] [Thread-156119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:39:33.165 [DEBUG] [Thread-156119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:33.188 [INFO] [Thread-156119] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:33.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:33.997 [DEBUG] [Thread-156119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:33.997 [DEBUG] [Thread-156119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:33.997 [DEBUG] [Thread-156119] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:39:34.038 [DEBUG] [Thread-156119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:34.039 [DEBUG] [Thread-156119] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:34.042 [DEBUG] [Thread-156119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:34.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:34.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:39:34.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:39:34.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:39:34.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:34.066 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:39:34.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:34.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:34.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:39:34.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.443820 -999.00  +13.40  10.71     50   +3.30 1 1 1 1 1   888    0 11.30 39.16 ----- 11.1 10.7 128.3 14.3 21.8 -24.4 20.5 -24.2 20.8 -23.9 22.2 -25.5
2025-09-29T12:39:34.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:39:34.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:39:34.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.443820
2025-09-29T12:39:34.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:39:34.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:39:34.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:39:34.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:39:34.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:39:34.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:39:03', tmtdew=11.18, humidity=46.35, cloud=0.0, wind=13.73, temperature=12.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:39:06.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:39:34.069 [DEBUG] [Thread-156119] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:34.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:39:34.164 [DEBUG] [Thread-156122] [transport.py] [_log()] starting thread (client mode): 0x2e38f9d0
2025-09-29T12:39:34.164 [DEBUG] [Thread-156122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:34.183 [DEBUG] [Thread-156122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:39:34.183 [INFO] [Thread-156122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:39:34.191 [DEBUG] [Thread-156122] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:34.191 [DEBUG] [Thread-156122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:39:34.191 [DEBUG] [Thread-156122] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:34.191 [DEBUG] [Thread-156122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:34.191 [DEBUG] [Thread-156122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:34.192 [DEBUG] [Thread-156122] [transport.py] [_log()] Compression: none
2025-09-29T12:39:34.193 [DEBUG] [Thread-156122] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:34.249 [DEBUG] [Thread-156122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:34.250 [DEBUG] [Thread-156122] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:34.251 [DEBUG] [Thread-156122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:39:34.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:39:34.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:34.306 [DEBUG] [Thread-156122] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:34.306 [DEBUG] [Thread-156122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:34.307 [DEBUG] [Thread-156122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:34.307 [DEBUG] [Thread-156122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:39:34.307 [DEBUG] [Thread-156122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:34.339 [INFO] [Thread-156122] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:34.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:39:34.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:35.306 [DEBUG] [Thread-156122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:35.306 [DEBUG] [Thread-156122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:35.354 [DEBUG] [Thread-156122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:35.354 [DEBUG] [Thread-156122] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:35.363 [DEBUG] [Thread-156122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:35.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:35.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:39:35.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:39:35.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:35.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:35.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:35.398 [DEBUG] [Thread-156122] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:39.691 [DEBUG] [Thread-156124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:39:45.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:39:45.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:39:45.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:39:46.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 39, 35), 11.05, 46.83, 0.0, 21.46, 12.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:39:46.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:39:35
2025-09-29T12:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:39:46.280 [DEBUG] [Thread-156125] [transport.py] [_log()] starting thread (client mode): 0x28707610
2025-09-29T12:39:46.280 [DEBUG] [Thread-156125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:46.301 [DEBUG] [Thread-156125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:39:46.301 [INFO] [Thread-156125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] Compression: none
2025-09-29T12:39:46.305 [DEBUG] [Thread-156125] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:46.320 [DEBUG] [Thread-156125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:46.320 [DEBUG] [Thread-156125] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:46.320 [DEBUG] [Thread-156125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:39:46.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:39:46.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:46.321 [DEBUG] [Thread-156125] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:46.321 [DEBUG] [Thread-156125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:46.321 [DEBUG] [Thread-156125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:46.321 [DEBUG] [Thread-156125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:39:46.321 [DEBUG] [Thread-156125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:46.332 [INFO] [Thread-156125] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:46.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:46.579 [DEBUG] [Thread-156127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:39:47.005 [DEBUG] [Thread-156125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:47.005 [DEBUG] [Thread-156125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:47.006 [DEBUG] [Thread-156125] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:39:47.046 [DEBUG] [Thread-156125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:47.046 [DEBUG] [Thread-156125] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:47.049 [DEBUG] [Thread-156125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:47.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:47.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:39:47.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:39:47.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:39:47.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:47.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:39:47.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.443820 -999.00  +13.40  10.71     50   +3.30 1 1 1 1 1   888    0 11.30 39.16 ----- 11.1 10.7 128.3 14.3 21.8 -24.4 20.5 -24.2 20.8 -23.9 22.2 -25.5
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.443820
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:39:47.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:39:35', tmtdew=11.05, humidity=46.83, cloud=0.0, wind=21.46, temperature=12.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:39:06.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:39:47.065 [DEBUG] [Thread-156125] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:47.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:39:47.151 [DEBUG] [Thread-156129] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e90
2025-09-29T12:39:47.151 [DEBUG] [Thread-156129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:47.170 [DEBUG] [Thread-156129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:39:47.170 [INFO] [Thread-156129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:39:47.177 [DEBUG] [Thread-156129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:47.177 [DEBUG] [Thread-156129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:39:47.177 [DEBUG] [Thread-156129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:47.177 [DEBUG] [Thread-156129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:47.177 [DEBUG] [Thread-156129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] Compression: none
2025-09-29T12:39:47.178 [DEBUG] [Thread-156129] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:47.233 [DEBUG] [Thread-156129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:47.233 [DEBUG] [Thread-156129] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:47.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:39:47.233 [DEBUG] [Thread-156129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:39:47.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:47.294 [DEBUG] [Thread-156129] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:47.294 [DEBUG] [Thread-156129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:47.294 [DEBUG] [Thread-156129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:47.295 [DEBUG] [Thread-156129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:39:47.295 [DEBUG] [Thread-156129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:47.311 [INFO] [Thread-156129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:47.312 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:39:47.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:48.249 [DEBUG] [Thread-156129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:48.249 [DEBUG] [Thread-156129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:48.301 [DEBUG] [Thread-156129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:48.301 [DEBUG] [Thread-156129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:48.310 [DEBUG] [Thread-156129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:48.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:48.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:39:48.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:39:48.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:48.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:48.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:48.345 [DEBUG] [Thread-156129] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:39:48.893 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:39:48.894 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:39:58.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:39:58.348 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:39:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:39:58.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 39, 35), 11.05, 46.83, 0.0, 21.46, 12.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:39:58.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:39:35
2025-09-29T12:39:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:39:59.194 [DEBUG] [Thread-156131] [transport.py] [_log()] starting thread (client mode): 0x2b96b9a0
2025-09-29T12:39:59.194 [DEBUG] [Thread-156131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:39:59.214 [DEBUG] [Thread-156131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:39:59.214 [INFO] [Thread-156131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:39:59.217 [DEBUG] [Thread-156131] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:39:59.217 [DEBUG] [Thread-156131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] client lang: <none>
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] server lang: <none>
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] kex follows: False
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] Compression: none
2025-09-29T12:39:59.218 [DEBUG] [Thread-156131] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:39:59.235 [DEBUG] [Thread-156131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:39:59.236 [DEBUG] [Thread-156131] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:39:59.236 [DEBUG] [Thread-156131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:39:59.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:39:59.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:39:59.238 [DEBUG] [Thread-156131] [transport.py] [_log()] userauth is OK
2025-09-29T12:39:59.238 [DEBUG] [Thread-156131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:39:59.239 [DEBUG] [Thread-156131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:39:59.239 [DEBUG] [Thread-156131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:39:59.239 [DEBUG] [Thread-156131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:39:59.274 [INFO] [Thread-156131] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:39:59.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:39:59.900 [DEBUG] [Thread-156131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:39:59.900 [DEBUG] [Thread-156131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:39:59.900 [DEBUG] [Thread-156131] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:39:59.941 [DEBUG] [Thread-156131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:39:59.942 [DEBUG] [Thread-156131] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:39:59.944 [DEBUG] [Thread-156131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:39:59.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:39:59.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:39:59.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:39:59.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:39:59.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:39:59.963 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:39:59.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:39:59.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:39:59.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:39:59.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.444168 -999.00  +13.50  12.43     49   +3.20 1 1 1 1 1   888    0 11.16 37.50 ----- 15.8 12.4 151.8 27.5 21.8 -25.2 20.5 -24.9 20.8 -24.7 22.1 -25.7
2025-09-29T12:39:59.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:39:59.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:39:59.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.444168
2025-09-29T12:39:59.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:39:59.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:39:59.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:39:59.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:39:59.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:39:59.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:39:35', tmtdew=11.05, humidity=46.83, cloud=0.0, wind=21.46, temperature=12.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:39:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:39:59.965 [DEBUG] [Thread-156131] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:00.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:40:00.051 [DEBUG] [Thread-156134] [transport.py] [_log()] starting thread (client mode): 0x2b96b7c0
2025-09-29T12:40:00.051 [DEBUG] [Thread-156134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:00.066 [DEBUG] [Thread-156134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:40:00.066 [INFO] [Thread-156134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:40:00.074 [DEBUG] [Thread-156134] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:00.074 [DEBUG] [Thread-156134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:40:00.074 [DEBUG] [Thread-156134] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] Compression: none
2025-09-29T12:40:00.075 [DEBUG] [Thread-156134] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:00.129 [DEBUG] [Thread-156134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:00.130 [DEBUG] [Thread-156134] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:00.130 [DEBUG] [Thread-156134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:40:00.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:40:00.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:00.187 [DEBUG] [Thread-156134] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:00.187 [DEBUG] [Thread-156134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:00.187 [DEBUG] [Thread-156134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:00.187 [DEBUG] [Thread-156134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:40:00.187 [DEBUG] [Thread-156134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:00.207 [INFO] [Thread-156134] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:00.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:40:00.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:01.148 [DEBUG] [Thread-156134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:01.148 [DEBUG] [Thread-156134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:40:01.196 [DEBUG] [Thread-156134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:40:01.196 [DEBUG] [Thread-156134] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:40:01.205 [DEBUG] [Thread-156134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:40:01.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:40:01.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:40:01.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:40:01.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:40:01.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:40:01.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:40:01.243 [DEBUG] [Thread-156134] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:01.605 [DEBUG] [Thread-156136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:40:11.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:40:11.246 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:40:11.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:40:11.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 40, 7), 11.58, 45.28, 0.0, 21.62, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:40:11.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:40:07
2025-09-29T12:40:11.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:40:12.084 [DEBUG] [Thread-156137] [transport.py] [_log()] starting thread (client mode): 0x2b96b640
2025-09-29T12:40:12.084 [DEBUG] [Thread-156137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:12.100 [DEBUG] [Thread-156137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:40:12.100 [INFO] [Thread-156137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:40:12.103 [DEBUG] [Thread-156137] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] Compression: none
2025-09-29T12:40:12.104 [DEBUG] [Thread-156137] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:12.119 [DEBUG] [Thread-156137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:12.119 [DEBUG] [Thread-156137] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:12.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:40:12.120 [DEBUG] [Thread-156137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:40:12.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:12.122 [DEBUG] [Thread-156137] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:12.123 [DEBUG] [Thread-156137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:12.123 [DEBUG] [Thread-156137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:12.123 [DEBUG] [Thread-156137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:40:12.123 [DEBUG] [Thread-156137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:12.148 [INFO] [Thread-156137] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:12.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:16.653 [DEBUG] [Thread-156139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:40:18.592 [DEBUG] [Thread-156137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:18.592 [DEBUG] [Thread-156137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:40:18.592 [DEBUG] [Thread-156137] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:40:18.632 [DEBUG] [Thread-156137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:40:18.632 [DEBUG] [Thread-156137] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:40:18.635 [DEBUG] [Thread-156137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:40:18.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:40:18.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:40:18.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:40:18.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:40:18.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:40:18.753 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:40:18.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:40:18.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.444168 -999.00  +13.50  12.43     49   +3.20 1 1 1 1 1   888    0 11.16 37.50 ----- 15.8 12.4 151.8 27.5 21.8 -25.2 20.5 -24.9 20.8 -24.7 22.1 -25.7
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.444168
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:40:18.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:40:07', tmtdew=11.58, humidity=45.28, cloud=0.0, wind=21.62, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:39:36.115', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:40:18.755 [DEBUG] [Thread-156137] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:18.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:40:18.844 [DEBUG] [Thread-156141] [transport.py] [_log()] starting thread (client mode): 0x2e38d240
2025-09-29T12:40:18.844 [DEBUG] [Thread-156141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:18.859 [DEBUG] [Thread-156141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:40:18.859 [INFO] [Thread-156141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:40:18.867 [DEBUG] [Thread-156141] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:18.867 [DEBUG] [Thread-156141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:40:18.867 [DEBUG] [Thread-156141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:18.867 [DEBUG] [Thread-156141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:18.867 [DEBUG] [Thread-156141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] Compression: none
2025-09-29T12:40:18.868 [DEBUG] [Thread-156141] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:18.926 [DEBUG] [Thread-156141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:18.927 [DEBUG] [Thread-156141] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:18.927 [DEBUG] [Thread-156141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:40:18.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:40:18.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:18.983 [DEBUG] [Thread-156141] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:18.983 [DEBUG] [Thread-156141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:18.983 [DEBUG] [Thread-156141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:18.983 [DEBUG] [Thread-156141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:40:18.983 [DEBUG] [Thread-156141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:19.003 [INFO] [Thread-156141] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:19.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:40:19.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:19.950 [DEBUG] [Thread-156141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:19.950 [DEBUG] [Thread-156141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:40:19.999 [DEBUG] [Thread-156141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:40:19.999 [DEBUG] [Thread-156141] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:40:20.008 [DEBUG] [Thread-156141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:40:20.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:40:20.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:40:20.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:40:20.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:40:20.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:40:20.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:40:20.043 [DEBUG] [Thread-156141] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:30.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:40:30.046 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:40:30.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:40:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 40, 7), 11.58, 45.28, 0.0, 21.62, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:40:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:40:07
2025-09-29T12:40:30.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:40:30.891 [DEBUG] [Thread-156143] [transport.py] [_log()] starting thread (client mode): 0x2e38e6e0
2025-09-29T12:40:30.891 [DEBUG] [Thread-156143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:30.910 [DEBUG] [Thread-156143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:40:30.910 [INFO] [Thread-156143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:40:30.913 [DEBUG] [Thread-156143] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:30.913 [DEBUG] [Thread-156143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:40:30.913 [DEBUG] [Thread-156143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] Compression: none
2025-09-29T12:40:30.914 [DEBUG] [Thread-156143] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:30.932 [DEBUG] [Thread-156143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:30.933 [DEBUG] [Thread-156143] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:30.933 [DEBUG] [Thread-156143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:40:30.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:40:30.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:30.935 [DEBUG] [Thread-156143] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:30.935 [DEBUG] [Thread-156143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:30.935 [DEBUG] [Thread-156143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:30.935 [DEBUG] [Thread-156143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:40:30.936 [DEBUG] [Thread-156143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:30.959 [INFO] [Thread-156143] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:30.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:31.585 [DEBUG] [Thread-156143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:31.585 [DEBUG] [Thread-156143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:40:31.585 [DEBUG] [Thread-156143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:40:31.626 [DEBUG] [Thread-156143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:40:31.626 [DEBUG] [Thread-156143] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:40:31.629 [DEBUG] [Thread-156143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:40:31.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:40:31.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:40:31.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:40:31.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:40:31.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:40:31.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:40:31.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:40:31.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:40:31.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:40:31.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.444514 -999.00  +13.40  14.64     50   +3.20 1 1 1 1 1   888    0 11.25 37.63 ----- 14.8 14.6 150.4 19.3 21.7 -25.1 20.4 -24.2 20.8 -25.2 22.1 -26.2
2025-09-29T12:40:31.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:40:31.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:40:31.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.444514
2025-09-29T12:40:31.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:40:31.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:40:31.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:40:31.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:40:31.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:40:31.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:40:07', tmtdew=11.58, humidity=45.28, cloud=0.0, wind=21.62, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:40:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:40:31.653 [DEBUG] [Thread-156143] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:31.683 [DEBUG] [Thread-156146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:40:31.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:40:31.750 [DEBUG] [Thread-156147] [transport.py] [_log()] starting thread (client mode): 0x2b969180
2025-09-29T12:40:31.750 [DEBUG] [Thread-156147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:31.764 [DEBUG] [Thread-156147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:40:31.764 [INFO] [Thread-156147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:40:31.771 [DEBUG] [Thread-156147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] Compression: none
2025-09-29T12:40:31.772 [DEBUG] [Thread-156147] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:31.830 [DEBUG] [Thread-156147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:31.831 [DEBUG] [Thread-156147] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:31.831 [DEBUG] [Thread-156147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:40:31.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:40:31.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:31.887 [DEBUG] [Thread-156147] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:31.887 [DEBUG] [Thread-156147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:31.887 [DEBUG] [Thread-156147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:31.887 [DEBUG] [Thread-156147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:40:31.887 [DEBUG] [Thread-156147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:31.906 [INFO] [Thread-156147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:31.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:40:31.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:32.890 [DEBUG] [Thread-156147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:32.890 [DEBUG] [Thread-156147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:40:32.938 [DEBUG] [Thread-156147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:40:32.938 [DEBUG] [Thread-156147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:40:32.948 [DEBUG] [Thread-156147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:40:32.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:40:32.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:40:32.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:40:32.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:40:32.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:40:32.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:40:32.982 [DEBUG] [Thread-156147] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:39.738 [DEBUG] [Thread-156149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:40:42.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:40:42.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:40:42.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:40:43.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 40, 39), 11.56, 45.22, 0.0, 17.82, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:40:43.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:40:39
2025-09-29T12:40:43.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:40:43.822 [DEBUG] [Thread-156150] [transport.py] [_log()] starting thread (client mode): 0x2e3c09a0
2025-09-29T12:40:43.823 [DEBUG] [Thread-156150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:43.843 [DEBUG] [Thread-156150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:40:43.843 [INFO] [Thread-156150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] Compression: none
2025-09-29T12:40:43.845 [DEBUG] [Thread-156150] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:43.853 [DEBUG] [Thread-156150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:43.853 [DEBUG] [Thread-156150] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:43.853 [DEBUG] [Thread-156150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:40:43.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:40:43.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:43.854 [DEBUG] [Thread-156150] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:43.854 [DEBUG] [Thread-156150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:43.854 [DEBUG] [Thread-156150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:43.854 [DEBUG] [Thread-156150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:40:43.854 [DEBUG] [Thread-156150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:43.864 [INFO] [Thread-156150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:43.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:45.669 [DEBUG] [Thread-156150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:45.669 [DEBUG] [Thread-156150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:40:45.670 [DEBUG] [Thread-156150] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:40:45.710 [DEBUG] [Thread-156150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:40:45.711 [DEBUG] [Thread-156150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:40:45.713 [DEBUG] [Thread-156150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:40:45.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:40:45.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:40:45.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:40:45.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:40:45.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:40:45.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:40:45.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:40:45.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:40:45.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:40:45.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.444514 -999.00  +13.40  14.64     50   +3.20 1 1 1 1 1   888    0 11.25 37.63 ----- 14.8 14.6 150.4 19.3 21.7 -25.1 20.4 -24.2 20.8 -25.2 22.1 -26.2
2025-09-29T12:40:45.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:40:45.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:40:45.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.444514
2025-09-29T12:40:45.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:40:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:40:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:40:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:40:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:40:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:40:39', tmtdew=11.56, humidity=45.22, cloud=0.0, wind=17.82, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:40:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:40:45.740 [DEBUG] [Thread-156150] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:45.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:40:45.837 [DEBUG] [Thread-156153] [transport.py] [_log()] starting thread (client mode): 0x2e3c3580
2025-09-29T12:40:45.837 [DEBUG] [Thread-156153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:45.852 [DEBUG] [Thread-156153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:40:45.852 [INFO] [Thread-156153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:40:45.860 [DEBUG] [Thread-156153] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:45.860 [DEBUG] [Thread-156153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:40:45.860 [DEBUG] [Thread-156153] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] Compression: none
2025-09-29T12:40:45.861 [DEBUG] [Thread-156153] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:45.919 [DEBUG] [Thread-156153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:45.919 [DEBUG] [Thread-156153] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:45.920 [DEBUG] [Thread-156153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:40:45.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:40:45.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:45.975 [DEBUG] [Thread-156153] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:45.975 [DEBUG] [Thread-156153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:45.975 [DEBUG] [Thread-156153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:45.976 [DEBUG] [Thread-156153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:40:45.976 [DEBUG] [Thread-156153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:45.994 [INFO] [Thread-156153] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:45.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:40:45.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:46.718 [DEBUG] [Thread-156155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:40:46.941 [DEBUG] [Thread-156153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:46.941 [DEBUG] [Thread-156153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:40:46.989 [DEBUG] [Thread-156153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:40:46.989 [DEBUG] [Thread-156153] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:40:46.997 [DEBUG] [Thread-156153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:40:47.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:40:47.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:40:47.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:40:47.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:40:47.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:40:47.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:40:47.029 [DEBUG] [Thread-156153] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:49.035 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:40:49.036 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:40:57.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:40:57.031 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:40:57.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:40:57.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 40, 39), 11.56, 45.22, 0.0, 17.82, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:40:57.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:40:39
2025-09-29T12:40:57.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:40:57.867 [DEBUG] [Thread-156156] [transport.py] [_log()] starting thread (client mode): 0x2b96a1d0
2025-09-29T12:40:57.867 [DEBUG] [Thread-156156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:57.884 [DEBUG] [Thread-156156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:40:57.884 [INFO] [Thread-156156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:40:57.887 [DEBUG] [Thread-156156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:57.887 [DEBUG] [Thread-156156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:40:57.887 [DEBUG] [Thread-156156] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:57.887 [DEBUG] [Thread-156156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] Compression: none
2025-09-29T12:40:57.888 [DEBUG] [Thread-156156] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:57.906 [DEBUG] [Thread-156156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:57.906 [DEBUG] [Thread-156156] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:57.907 [DEBUG] [Thread-156156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:40:57.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:40:57.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:57.909 [DEBUG] [Thread-156156] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:57.909 [DEBUG] [Thread-156156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:57.909 [DEBUG] [Thread-156156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:57.909 [DEBUG] [Thread-156156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:40:57.909 [DEBUG] [Thread-156156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:57.933 [INFO] [Thread-156156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:57.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:58.734 [DEBUG] [Thread-156156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:58.734 [DEBUG] [Thread-156156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:40:58.734 [DEBUG] [Thread-156156] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:40:58.775 [DEBUG] [Thread-156156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:40:58.775 [DEBUG] [Thread-156156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:40:58.778 [DEBUG] [Thread-156156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:40:58.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:40:58.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:40:58.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:40:58.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:40:58.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:40:58.795 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:40:58.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.444514 -999.00  +13.40  14.64     50   +3.20 1 1 1 1 1   888    0 11.25 37.63 ----- 14.8 14.6 150.4 19.3 21.7 -25.1 20.4 -24.2 20.8 -25.2 22.1 -26.2
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.444514
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:40:58.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:40:58.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:40:39', tmtdew=11.56, humidity=45.22, cloud=0.0, wind=17.82, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:40:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:40:58.796 [DEBUG] [Thread-156156] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:40:58.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:40:58.879 [DEBUG] [Thread-156159] [transport.py] [_log()] starting thread (client mode): 0x2b9acb50
2025-09-29T12:40:58.880 [DEBUG] [Thread-156159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:40:58.895 [DEBUG] [Thread-156159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:40:58.895 [INFO] [Thread-156159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] client lang: <none>
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] server lang: <none>
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] kex follows: False
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] Compression: none
2025-09-29T12:40:58.903 [DEBUG] [Thread-156159] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:40:58.960 [DEBUG] [Thread-156159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:40:58.961 [DEBUG] [Thread-156159] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:40:58.961 [DEBUG] [Thread-156159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:40:58.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:40:58.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:40:59.020 [DEBUG] [Thread-156159] [transport.py] [_log()] userauth is OK
2025-09-29T12:40:59.020 [DEBUG] [Thread-156159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:40:59.020 [DEBUG] [Thread-156159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:40:59.020 [DEBUG] [Thread-156159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:40:59.020 [DEBUG] [Thread-156159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:40:59.034 [INFO] [Thread-156159] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:40:59.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:40:59.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:40:59.980 [DEBUG] [Thread-156159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:40:59.980 [DEBUG] [Thread-156159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:00.028 [DEBUG] [Thread-156159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:00.028 [DEBUG] [Thread-156159] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:00.036 [DEBUG] [Thread-156159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:00.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:00.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:41:00.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:41:00.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:00.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:00.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:00.079 [DEBUG] [Thread-156159] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:41:01.769 [DEBUG] [Thread-156161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:41:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:41:10.077 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:41:10.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:41:10.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 40, 39), 11.56, 45.22, 0.0, 17.82, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:41:10.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:40:39
2025-09-29T12:41:10.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:41:10.925 [DEBUG] [Thread-156162] [transport.py] [_log()] starting thread (client mode): 0x2e3c34f0
2025-09-29T12:41:10.925 [DEBUG] [Thread-156162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:41:10.945 [DEBUG] [Thread-156162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:41:10.945 [INFO] [Thread-156162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:41:10.948 [DEBUG] [Thread-156162] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:41:10.948 [DEBUG] [Thread-156162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] client lang: <none>
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] server lang: <none>
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] kex follows: False
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] Compression: none
2025-09-29T12:41:10.949 [DEBUG] [Thread-156162] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:41:10.964 [DEBUG] [Thread-156162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:41:10.964 [DEBUG] [Thread-156162] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:41:10.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:41:10.965 [DEBUG] [Thread-156162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:41:10.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:41:10.967 [DEBUG] [Thread-156162] [transport.py] [_log()] userauth is OK
2025-09-29T12:41:10.967 [DEBUG] [Thread-156162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:41:10.968 [DEBUG] [Thread-156162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:41:10.968 [DEBUG] [Thread-156162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:41:10.968 [DEBUG] [Thread-156162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:41:10.985 [INFO] [Thread-156162] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:41:10.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:41:11.620 [DEBUG] [Thread-156162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:41:11.620 [DEBUG] [Thread-156162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:11.620 [DEBUG] [Thread-156162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:41:11.661 [DEBUG] [Thread-156162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:11.661 [DEBUG] [Thread-156162] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:11.663 [DEBUG] [Thread-156162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:11.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:11.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:41:11.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:41:11.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:41:11.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:11.679 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:41:11.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:11.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:11.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:41:11.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.444862 -999.00  +13.50  17.22     49   +3.20 1 1 1 1 1   888    0 11.22 36.16 ----- 21.5 17.2 124.8 21.8 21.7 -25.7 20.4 -24.8 20.7 -25.2 22.1 -25.8
2025-09-29T12:41:11.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:41:11.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:41:11.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.444862
2025-09-29T12:41:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:41:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:41:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:41:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:41:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:41:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:40:39', tmtdew=11.56, humidity=45.22, cloud=0.0, wind=17.82, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:40:36.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:41:11.680 [DEBUG] [Thread-156162] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:41:11.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:41:11.767 [DEBUG] [Thread-156165] [transport.py] [_log()] starting thread (client mode): 0x2e38dae0
2025-09-29T12:41:11.767 [DEBUG] [Thread-156165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:41:11.781 [DEBUG] [Thread-156165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:41:11.781 [INFO] [Thread-156165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] client lang: <none>
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] server lang: <none>
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] kex follows: False
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:41:11.789 [DEBUG] [Thread-156165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:41:11.790 [DEBUG] [Thread-156165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:41:11.790 [DEBUG] [Thread-156165] [transport.py] [_log()] Compression: none
2025-09-29T12:41:11.790 [DEBUG] [Thread-156165] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:41:11.846 [DEBUG] [Thread-156165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:41:11.846 [DEBUG] [Thread-156165] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:41:11.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:41:11.847 [DEBUG] [Thread-156165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:41:11.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:41:11.908 [DEBUG] [Thread-156165] [transport.py] [_log()] userauth is OK
2025-09-29T12:41:11.908 [DEBUG] [Thread-156165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:41:11.908 [DEBUG] [Thread-156165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:41:11.908 [DEBUG] [Thread-156165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:41:11.908 [DEBUG] [Thread-156165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:41:11.924 [INFO] [Thread-156165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:41:11.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:41:11.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:41:12.862 [DEBUG] [Thread-156165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:41:12.862 [DEBUG] [Thread-156165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:12.912 [DEBUG] [Thread-156165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:12.912 [DEBUG] [Thread-156165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:12.924 [DEBUG] [Thread-156165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:12.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:12.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:41:12.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:41:12.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:12.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:12.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:12.956 [DEBUG] [Thread-156165] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:41:16.796 [DEBUG] [Thread-156167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:41:22.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:41:22.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:41:22.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:41:23.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 41, 11), 11.59, 45.14, 0.0, 14.95, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:41:23.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:41:11
2025-09-29T12:41:23.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:41:23.786 [DEBUG] [Thread-156168] [transport.py] [_log()] starting thread (client mode): 0x2b9af070
2025-09-29T12:41:23.786 [DEBUG] [Thread-156168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:41:23.806 [DEBUG] [Thread-156168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:41:23.806 [INFO] [Thread-156168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:41:23.809 [DEBUG] [Thread-156168] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] client lang: <none>
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] server lang: <none>
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] kex follows: False
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:41:23.810 [DEBUG] [Thread-156168] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:41:23.811 [DEBUG] [Thread-156168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:41:23.811 [DEBUG] [Thread-156168] [transport.py] [_log()] Compression: none
2025-09-29T12:41:23.811 [DEBUG] [Thread-156168] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:41:23.828 [DEBUG] [Thread-156168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:41:23.828 [DEBUG] [Thread-156168] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:41:23.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:41:23.829 [DEBUG] [Thread-156168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:41:23.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:41:23.831 [DEBUG] [Thread-156168] [transport.py] [_log()] userauth is OK
2025-09-29T12:41:23.832 [DEBUG] [Thread-156168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:41:23.832 [DEBUG] [Thread-156168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:41:23.832 [DEBUG] [Thread-156168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:41:23.832 [DEBUG] [Thread-156168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:41:23.849 [INFO] [Thread-156168] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:41:23.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:41:24.593 [DEBUG] [Thread-156168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:41:24.593 [DEBUG] [Thread-156168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:24.593 [DEBUG] [Thread-156168] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:41:24.634 [DEBUG] [Thread-156168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:24.634 [DEBUG] [Thread-156168] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:24.637 [DEBUG] [Thread-156168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:24.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:24.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:41:24.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:41:24.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:41:24.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:24.657 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:41:24.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:24.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:24.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:41:24.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.444862 -999.00  +13.50  17.22     49   +3.20 1 1 1 1 1   888    0 11.22 36.16 ----- 21.5 17.2 124.8 21.8 21.7 -25.7 20.4 -24.8 20.7 -25.2 22.1 -25.8
2025-09-29T12:41:24.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:41:24.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:41:24.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.444862
2025-09-29T12:41:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:41:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:41:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:41:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:41:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:41:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:41:11', tmtdew=11.59, humidity=45.14, cloud=0.0, wind=14.95, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:40:36.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:41:24.660 [DEBUG] [Thread-156168] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:41:24.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:41:24.754 [DEBUG] [Thread-156171] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-29T12:41:24.754 [DEBUG] [Thread-156171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:41:24.768 [DEBUG] [Thread-156171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:41:24.768 [INFO] [Thread-156171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:41:24.775 [DEBUG] [Thread-156171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] client lang: <none>
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] server lang: <none>
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] kex follows: False
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] Compression: none
2025-09-29T12:41:24.776 [DEBUG] [Thread-156171] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:41:24.830 [DEBUG] [Thread-156171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:41:24.831 [DEBUG] [Thread-156171] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:41:24.831 [DEBUG] [Thread-156171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:41:24.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:41:24.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:41:24.887 [DEBUG] [Thread-156171] [transport.py] [_log()] userauth is OK
2025-09-29T12:41:24.888 [DEBUG] [Thread-156171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:41:24.888 [DEBUG] [Thread-156171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:41:24.888 [DEBUG] [Thread-156171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:41:24.888 [DEBUG] [Thread-156171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:41:24.907 [INFO] [Thread-156171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:41:24.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:41:24.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:41:25.837 [DEBUG] [Thread-156171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:41:25.837 [DEBUG] [Thread-156171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:25.885 [DEBUG] [Thread-156171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:25.885 [DEBUG] [Thread-156171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:25.894 [DEBUG] [Thread-156171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:25.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:25.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:41:25.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:41:25.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:25.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:25.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:25.928 [DEBUG] [Thread-156171] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:41:31.848 [DEBUG] [Thread-156173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:41:35.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:41:35.931 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:41:35.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:41:36.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 41, 11), 11.59, 45.14, 0.0, 14.95, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:41:36.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:41:11
2025-09-29T12:41:36.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:41:36.787 [DEBUG] [Thread-156174] [transport.py] [_log()] starting thread (client mode): 0x2b969cf0
2025-09-29T12:41:36.787 [DEBUG] [Thread-156174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:41:36.808 [DEBUG] [Thread-156174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:41:36.808 [INFO] [Thread-156174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] client lang: <none>
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] server lang: <none>
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] kex follows: False
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] Compression: none
2025-09-29T12:41:36.811 [DEBUG] [Thread-156174] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:41:36.830 [DEBUG] [Thread-156174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:41:36.830 [DEBUG] [Thread-156174] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:41:36.830 [DEBUG] [Thread-156174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:41:36.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:41:36.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:41:36.831 [DEBUG] [Thread-156174] [transport.py] [_log()] userauth is OK
2025-09-29T12:41:36.831 [DEBUG] [Thread-156174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:41:36.831 [DEBUG] [Thread-156174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:41:36.831 [DEBUG] [Thread-156174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:41:36.831 [DEBUG] [Thread-156174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:41:36.850 [INFO] [Thread-156174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:41:36.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:41:37.501 [DEBUG] [Thread-156174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:41:37.501 [DEBUG] [Thread-156174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:37.501 [DEBUG] [Thread-156174] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:41:37.542 [DEBUG] [Thread-156174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:37.542 [DEBUG] [Thread-156174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:37.544 [DEBUG] [Thread-156174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:37.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:37.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:41:37.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:41:37.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:41:37.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:37.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:41:37.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.445209 -999.00  +13.00  14.76     50   +3.00 1 1 1 1 1   888    0 10.95 34.66 ----- 14.0 14.8 115.2 24.9 21.5 -27.4 20.5 -25.0 20.8 -25.4 22.1 -26.8
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.445209
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:41:37.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:41:11', tmtdew=11.59, humidity=45.14, cloud=0.0, wind=14.95, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:41:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:41:37.564 [DEBUG] [Thread-156174] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:41:37.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:41:37.651 [DEBUG] [Thread-156177] [transport.py] [_log()] starting thread (client mode): 0x2e3c1390
2025-09-29T12:41:37.651 [DEBUG] [Thread-156177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:41:37.666 [DEBUG] [Thread-156177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:41:37.666 [INFO] [Thread-156177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] client lang: <none>
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] server lang: <none>
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] kex follows: False
2025-09-29T12:41:37.673 [DEBUG] [Thread-156177] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:41:37.674 [DEBUG] [Thread-156177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:41:37.674 [DEBUG] [Thread-156177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:41:37.674 [DEBUG] [Thread-156177] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:41:37.674 [DEBUG] [Thread-156177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:41:37.674 [DEBUG] [Thread-156177] [transport.py] [_log()] Compression: none
2025-09-29T12:41:37.674 [DEBUG] [Thread-156177] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:41:37.730 [DEBUG] [Thread-156177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:41:37.730 [DEBUG] [Thread-156177] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:41:37.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:41:37.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:41:37.731 [DEBUG] [Thread-156177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:41:37.788 [DEBUG] [Thread-156177] [transport.py] [_log()] userauth is OK
2025-09-29T12:41:37.788 [DEBUG] [Thread-156177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:41:37.788 [DEBUG] [Thread-156177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:41:37.788 [DEBUG] [Thread-156177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:41:37.788 [DEBUG] [Thread-156177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:41:37.802 [INFO] [Thread-156177] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:41:37.802 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:41:37.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:41:38.743 [DEBUG] [Thread-156177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:41:38.743 [DEBUG] [Thread-156177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:38.791 [DEBUG] [Thread-156177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:38.791 [DEBUG] [Thread-156177] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:38.800 [DEBUG] [Thread-156177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:38.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:38.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:41:38.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:41:38.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:38.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:38.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:38.831 [DEBUG] [Thread-156177] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:41:39.786 [DEBUG] [Thread-156179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:41:46.889 [DEBUG] [Thread-156180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:41:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:41:48.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:41:48.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:41:49.177 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:41:49.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:41:49.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 41, 43), 11.59, 45.04, 0.0, 10.34, 12.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:41:49.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:41:43
2025-09-29T12:41:49.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:41:49.673 [DEBUG] [Thread-156181] [transport.py] [_log()] starting thread (client mode): 0x2b96c7f0
2025-09-29T12:41:49.673 [DEBUG] [Thread-156181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:41:49.692 [DEBUG] [Thread-156181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:41:49.693 [INFO] [Thread-156181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:41:49.696 [DEBUG] [Thread-156181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] client lang: <none>
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] server lang: <none>
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] kex follows: False
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] Compression: none
2025-09-29T12:41:49.697 [DEBUG] [Thread-156181] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:41:49.715 [DEBUG] [Thread-156181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:41:49.715 [DEBUG] [Thread-156181] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:41:49.715 [DEBUG] [Thread-156181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:41:49.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:41:49.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:41:49.717 [DEBUG] [Thread-156181] [transport.py] [_log()] userauth is OK
2025-09-29T12:41:49.717 [DEBUG] [Thread-156181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:41:49.717 [DEBUG] [Thread-156181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:41:49.717 [DEBUG] [Thread-156181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:41:49.717 [DEBUG] [Thread-156181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:41:49.734 [INFO] [Thread-156181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:41:49.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:41:50.559 [DEBUG] [Thread-156181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:41:50.559 [DEBUG] [Thread-156181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:50.560 [DEBUG] [Thread-156181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:41:50.600 [DEBUG] [Thread-156181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:50.600 [DEBUG] [Thread-156181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:50.603 [DEBUG] [Thread-156181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:50.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:50.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:41:50.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:41:50.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:41:50.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:50.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:41:50.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:50.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:50.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:41:50.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.445209 -999.00  +13.00  14.76     50   +3.00 1 1 1 1 1   888    0 10.95 34.66 ----- 14.0 14.8 115.2 24.9 21.5 -27.4 20.5 -25.0 20.8 -25.4 22.1 -26.8
2025-09-29T12:41:50.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:41:50.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:41:50.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.445209
2025-09-29T12:41:50.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:41:50.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:41:50.627 [DEBUG] [Thread-156181] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:41:50.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:41:50.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:41:50.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:41:50.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:41:43', tmtdew=11.59, humidity=45.04, cloud=0.0, wind=10.34, temperature=12.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:41:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:41:50.709 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:41:50.719 [DEBUG] [Thread-156184] [transport.py] [_log()] starting thread (client mode): 0x2e3c08b0
2025-09-29T12:41:50.719 [DEBUG] [Thread-156184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:41:50.734 [DEBUG] [Thread-156184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:41:50.734 [INFO] [Thread-156184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:41:50.742 [DEBUG] [Thread-156184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:41:50.742 [DEBUG] [Thread-156184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:41:50.742 [DEBUG] [Thread-156184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:41:50.742 [DEBUG] [Thread-156184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:50.742 [DEBUG] [Thread-156184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:41:50.742 [DEBUG] [Thread-156184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:50.742 [DEBUG] [Thread-156184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] client lang: <none>
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] server lang: <none>
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] kex follows: False
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] Compression: none
2025-09-29T12:41:50.743 [DEBUG] [Thread-156184] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:41:50.800 [DEBUG] [Thread-156184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:41:50.800 [DEBUG] [Thread-156184] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:41:50.801 [DEBUG] [Thread-156184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:41:50.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:41:50.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:41:50.856 [DEBUG] [Thread-156184] [transport.py] [_log()] userauth is OK
2025-09-29T12:41:50.857 [DEBUG] [Thread-156184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:41:50.857 [DEBUG] [Thread-156184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:41:50.857 [DEBUG] [Thread-156184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:41:50.857 [DEBUG] [Thread-156184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:41:50.876 [INFO] [Thread-156184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:41:50.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:41:50.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:41:51.815 [DEBUG] [Thread-156184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:41:51.815 [DEBUG] [Thread-156184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:41:51.863 [DEBUG] [Thread-156184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:41:51.863 [DEBUG] [Thread-156184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:41:51.872 [DEBUG] [Thread-156184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:41:51.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:41:51.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:41:51.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:41:51.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:41:51.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:41:51.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:41:51.907 [DEBUG] [Thread-156184] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:01.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:42:01.910 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:42:01.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:42:01.921 [DEBUG] [Thread-156186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:42:02.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 41, 43), 11.59, 45.04, 0.0, 10.34, 12.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:42:02.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:41:43
2025-09-29T12:42:02.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:42:02.736 [DEBUG] [Thread-156187] [transport.py] [_log()] starting thread (client mode): 0x2b9aeda0
2025-09-29T12:42:02.736 [DEBUG] [Thread-156187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:02.755 [DEBUG] [Thread-156187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:42:02.756 [INFO] [Thread-156187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:02.759 [DEBUG] [Thread-156187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:02.760 [DEBUG] [Thread-156187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:02.760 [DEBUG] [Thread-156187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:02.760 [DEBUG] [Thread-156187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:02.760 [DEBUG] [Thread-156187] [transport.py] [_log()] Compression: none
2025-09-29T12:42:02.760 [DEBUG] [Thread-156187] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:02.769 [DEBUG] [Thread-156187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:02.770 [DEBUG] [Thread-156187] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:02.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:42:02.771 [DEBUG] [Thread-156187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:42:02.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:02.773 [DEBUG] [Thread-156187] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:02.773 [DEBUG] [Thread-156187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:02.773 [DEBUG] [Thread-156187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:02.773 [DEBUG] [Thread-156187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:42:02.773 [DEBUG] [Thread-156187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:02.799 [INFO] [Thread-156187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:02.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:03.596 [DEBUG] [Thread-156187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:03.596 [DEBUG] [Thread-156187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:03.597 [DEBUG] [Thread-156187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:42:03.637 [DEBUG] [Thread-156187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:03.637 [DEBUG] [Thread-156187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:03.640 [DEBUG] [Thread-156187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:03.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:03.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:42:03.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:42:03.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:42:03.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:03.665 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:42:03.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:03.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:03.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:42:03.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.445209 -999.00  +13.00  14.76     50   +3.00 1 1 1 1 1   888    0 10.95 34.66 ----- 14.0 14.8 115.2 24.9 21.5 -27.4 20.5 -25.0 20.8 -25.4 22.1 -26.8
2025-09-29T12:42:03.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:42:03.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:42:03.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.445209
2025-09-29T12:42:03.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:42:03.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:42:03.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:42:03.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:42:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:42:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:41:43', tmtdew=11.59, humidity=45.04, cloud=0.0, wind=10.34, temperature=12.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:41:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:42:03.667 [DEBUG] [Thread-156187] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:03.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:42:03.764 [DEBUG] [Thread-156190] [transport.py] [_log()] starting thread (client mode): 0x28704550
2025-09-29T12:42:03.764 [DEBUG] [Thread-156190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:03.780 [DEBUG] [Thread-156190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:42:03.780 [INFO] [Thread-156190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:42:03.787 [DEBUG] [Thread-156190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:03.788 [DEBUG] [Thread-156190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:03.789 [DEBUG] [Thread-156190] [transport.py] [_log()] Compression: none
2025-09-29T12:42:03.789 [DEBUG] [Thread-156190] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:03.843 [DEBUG] [Thread-156190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:03.843 [DEBUG] [Thread-156190] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:03.843 [DEBUG] [Thread-156190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:42:03.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:42:03.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:03.900 [DEBUG] [Thread-156190] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:03.900 [DEBUG] [Thread-156190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:03.900 [DEBUG] [Thread-156190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:03.900 [DEBUG] [Thread-156190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:42:03.901 [DEBUG] [Thread-156190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:03.919 [INFO] [Thread-156190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:03.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:42:03.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:04.836 [DEBUG] [Thread-156190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:04.836 [DEBUG] [Thread-156190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:04.889 [DEBUG] [Thread-156190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:04.890 [DEBUG] [Thread-156190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:04.899 [DEBUG] [Thread-156190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:04.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:04.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:42:04.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:42:04.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:04.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:04.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:04.933 [DEBUG] [Thread-156190] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:14.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:42:14.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:42:14.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:42:15.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 41, 43), 11.59, 45.04, 0.0, 10.34, 12.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:42:15.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:41:43
2025-09-29T12:42:15.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:42:15.817 [DEBUG] [Thread-156192] [transport.py] [_log()] starting thread (client mode): 0x2e38f1f0
2025-09-29T12:42:15.817 [DEBUG] [Thread-156192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:15.839 [DEBUG] [Thread-156192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:42:15.839 [INFO] [Thread-156192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] Compression: none
2025-09-29T12:42:15.844 [DEBUG] [Thread-156192] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:15.860 [DEBUG] [Thread-156192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:15.860 [DEBUG] [Thread-156192] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:15.861 [DEBUG] [Thread-156192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:42:15.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:42:15.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:15.862 [DEBUG] [Thread-156192] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:15.862 [DEBUG] [Thread-156192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:15.862 [DEBUG] [Thread-156192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:15.862 [DEBUG] [Thread-156192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:42:15.862 [DEBUG] [Thread-156192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:15.883 [INFO] [Thread-156192] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:15.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:16.485 [DEBUG] [Thread-156192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:16.486 [DEBUG] [Thread-156192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:16.486 [DEBUG] [Thread-156192] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:42:16.528 [DEBUG] [Thread-156192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:16.528 [DEBUG] [Thread-156192] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:16.531 [DEBUG] [Thread-156192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:16.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:16.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:42:16.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:42:16.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:42:16.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:16.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:42:16.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.445904 -999.00  +12.60  18.33     52   +3.00 1 1 1 1 1   888    0 10.86 24.14 ----- 16.1 18.3 107.0 19.9 21.2 -32.5 20.6 -25.3 20.8 -25.4 22.0 -25.7
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.445904
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:42:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:42:16.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:42:16.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:42:16.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:41:43', tmtdew=11.59, humidity=45.04, cloud=0.0, wind=10.34, temperature=12.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:42:06.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:42:16.550 [DEBUG] [Thread-156192] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:16.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:42:16.634 [DEBUG] [Thread-156195] [transport.py] [_log()] starting thread (client mode): 0x2b91c130
2025-09-29T12:42:16.634 [DEBUG] [Thread-156195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:16.651 [DEBUG] [Thread-156195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:42:16.651 [INFO] [Thread-156195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] Compression: none
2025-09-29T12:42:16.659 [DEBUG] [Thread-156195] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:16.715 [DEBUG] [Thread-156195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:16.715 [DEBUG] [Thread-156195] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:16.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:42:16.715 [DEBUG] [Thread-156195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:42:16.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:16.772 [DEBUG] [Thread-156195] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:16.772 [DEBUG] [Thread-156195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:16.772 [DEBUG] [Thread-156195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:16.772 [DEBUG] [Thread-156195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:42:16.772 [DEBUG] [Thread-156195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:16.791 [INFO] [Thread-156195] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:16.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:42:16.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:16.954 [DEBUG] [Thread-156197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:42:17.775 [DEBUG] [Thread-156195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:17.775 [DEBUG] [Thread-156195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:17.823 [DEBUG] [Thread-156195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:17.823 [DEBUG] [Thread-156195] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:17.831 [DEBUG] [Thread-156195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:17.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:17.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:42:17.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:42:17.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:17.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:17.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:17.864 [DEBUG] [Thread-156195] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:27.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:42:27.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:42:27.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:42:28.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 42, 15), 11.54, 45.19, 0.0, 8.98, 12.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:42:28.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:42:15
2025-09-29T12:42:28.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:42:28.686 [DEBUG] [Thread-156198] [transport.py] [_log()] starting thread (client mode): 0x2b91f130
2025-09-29T12:42:28.686 [DEBUG] [Thread-156198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:28.706 [DEBUG] [Thread-156198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:42:28.706 [INFO] [Thread-156198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:42:28.712 [DEBUG] [Thread-156198] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:28.713 [DEBUG] [Thread-156198] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:28.714 [DEBUG] [Thread-156198] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:28.714 [DEBUG] [Thread-156198] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:28.714 [DEBUG] [Thread-156198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:28.714 [DEBUG] [Thread-156198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:28.714 [DEBUG] [Thread-156198] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:28.714 [DEBUG] [Thread-156198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:28.714 [DEBUG] [Thread-156198] [transport.py] [_log()] Compression: none
2025-09-29T12:42:28.715 [DEBUG] [Thread-156198] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:28.731 [DEBUG] [Thread-156198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:28.731 [DEBUG] [Thread-156198] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:28.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:42:28.732 [DEBUG] [Thread-156198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:42:28.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:28.734 [DEBUG] [Thread-156198] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:28.734 [DEBUG] [Thread-156198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:28.734 [DEBUG] [Thread-156198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:28.734 [DEBUG] [Thread-156198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:42:28.734 [DEBUG] [Thread-156198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:28.770 [INFO] [Thread-156198] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:28.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:29.601 [DEBUG] [Thread-156198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:29.601 [DEBUG] [Thread-156198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:29.601 [DEBUG] [Thread-156198] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:42:29.642 [DEBUG] [Thread-156198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:29.642 [DEBUG] [Thread-156198] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:29.645 [DEBUG] [Thread-156198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:29.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:29.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:42:29.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:42:29.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:42:29.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:29.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:42:29.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:29.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:29.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:42:29.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.445904 -999.00  +12.60  18.33     52   +3.00 1 1 1 1 1   888    0 10.86 24.14 ----- 16.1 18.3 107.0 19.9 21.2 -32.5 20.6 -25.3 20.8 -25.4 22.0 -25.7
2025-09-29T12:42:29.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:42:29.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:42:29.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.445904
2025-09-29T12:42:29.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:42:29.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:42:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:42:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:42:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:42:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:42:15', tmtdew=11.54, humidity=45.19, cloud=0.0, wind=8.98, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:42:06.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:42:29.670 [DEBUG] [Thread-156198] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:29.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:42:29.766 [DEBUG] [Thread-156201] [transport.py] [_log()] starting thread (client mode): 0x2b96e0e0
2025-09-29T12:42:29.766 [DEBUG] [Thread-156201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:29.781 [DEBUG] [Thread-156201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:42:29.781 [INFO] [Thread-156201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:29.788 [DEBUG] [Thread-156201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] Compression: none
2025-09-29T12:42:29.789 [DEBUG] [Thread-156201] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:29.848 [DEBUG] [Thread-156201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:29.849 [DEBUG] [Thread-156201] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:29.849 [DEBUG] [Thread-156201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:42:29.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:42:29.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:29.904 [DEBUG] [Thread-156201] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:29.905 [DEBUG] [Thread-156201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:29.905 [DEBUG] [Thread-156201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:29.905 [DEBUG] [Thread-156201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:42:29.905 [DEBUG] [Thread-156201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:29.924 [INFO] [Thread-156201] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:29.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:42:29.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:30.896 [DEBUG] [Thread-156201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:30.896 [DEBUG] [Thread-156201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:30.944 [DEBUG] [Thread-156201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:30.944 [DEBUG] [Thread-156201] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:30.953 [DEBUG] [Thread-156201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:30.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:30.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:42:30.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:42:30.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:30.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:30.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:30.988 [DEBUG] [Thread-156201] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:31.988 [DEBUG] [Thread-156203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:42:39.837 [DEBUG] [Thread-156204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:42:40.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:42:40.991 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:42:40.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:42:41.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 42, 15), 11.54, 45.19, 0.0, 8.98, 12.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:42:41.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:42:15
2025-09-29T12:42:41.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:42:41.832 [DEBUG] [Thread-156205] [transport.py] [_log()] starting thread (client mode): 0x2e34acb0
2025-09-29T12:42:41.832 [DEBUG] [Thread-156205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:41.851 [DEBUG] [Thread-156205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:42:41.852 [INFO] [Thread-156205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:41.855 [DEBUG] [Thread-156205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:41.856 [DEBUG] [Thread-156205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:41.856 [DEBUG] [Thread-156205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:41.856 [DEBUG] [Thread-156205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:41.856 [DEBUG] [Thread-156205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:41.856 [DEBUG] [Thread-156205] [transport.py] [_log()] Compression: none
2025-09-29T12:42:41.856 [DEBUG] [Thread-156205] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:41.875 [DEBUG] [Thread-156205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:41.875 [DEBUG] [Thread-156205] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:41.876 [DEBUG] [Thread-156205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:42:41.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:42:41.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:41.877 [DEBUG] [Thread-156205] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:41.878 [DEBUG] [Thread-156205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:41.878 [DEBUG] [Thread-156205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:41.878 [DEBUG] [Thread-156205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:42:41.878 [DEBUG] [Thread-156205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:41.903 [INFO] [Thread-156205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:41.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:42.749 [DEBUG] [Thread-156205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:42.749 [DEBUG] [Thread-156205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:42.750 [DEBUG] [Thread-156205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:42:42.790 [DEBUG] [Thread-156205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:42.790 [DEBUG] [Thread-156205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:42.793 [DEBUG] [Thread-156205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:42.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:42.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:42:42.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:42:42.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:42:42.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:42.815 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:42:42.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:42.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:42:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.445904 -999.00  +12.60  18.33     52   +3.00 1 1 1 1 1   888    0 10.86 24.14 ----- 16.1 18.3 107.0 19.9 21.2 -32.5 20.6 -25.3 20.8 -25.4 22.0 -25.7
2025-09-29T12:42:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:42:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:42:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.445904
2025-09-29T12:42:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:42:42.816 [DEBUG] [Thread-156205] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:42.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:42:42.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:42:42.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:42:42.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:42:42.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:42:15', tmtdew=11.54, humidity=45.19, cloud=0.0, wind=8.98, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:42:06.106', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:42:42.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:42:42.911 [DEBUG] [Thread-156208] [transport.py] [_log()] starting thread (client mode): 0x2b9c3ac0
2025-09-29T12:42:42.911 [DEBUG] [Thread-156208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:42.926 [DEBUG] [Thread-156208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:42:42.926 [INFO] [Thread-156208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:42:42.933 [DEBUG] [Thread-156208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:42.933 [DEBUG] [Thread-156208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:42:42.933 [DEBUG] [Thread-156208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:42.933 [DEBUG] [Thread-156208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:42.933 [DEBUG] [Thread-156208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:42.933 [DEBUG] [Thread-156208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:42.933 [DEBUG] [Thread-156208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:42.933 [DEBUG] [Thread-156208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] Compression: none
2025-09-29T12:42:42.934 [DEBUG] [Thread-156208] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:42.992 [DEBUG] [Thread-156208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:42.992 [DEBUG] [Thread-156208] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:42.993 [DEBUG] [Thread-156208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:42:42.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:42:42.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:43.048 [DEBUG] [Thread-156208] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:43.049 [DEBUG] [Thread-156208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:43.049 [DEBUG] [Thread-156208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:43.049 [DEBUG] [Thread-156208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:42:43.049 [DEBUG] [Thread-156208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:43.069 [INFO] [Thread-156208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:43.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:42:43.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:44.051 [DEBUG] [Thread-156208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:44.051 [DEBUG] [Thread-156208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:44.099 [DEBUG] [Thread-156208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:44.099 [DEBUG] [Thread-156208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:44.108 [DEBUG] [Thread-156208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:44.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:44.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:42:44.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:42:44.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:44.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:44.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:44.151 [DEBUG] [Thread-156208] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:47.043 [DEBUG] [Thread-156210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:42:49.320 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:42:49.321 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:42:54.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:42:54.152 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:42:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:42:54.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 42, 47), 11.2, 46.62, 0.0, 13.66, 12.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:42:54.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:42:47
2025-09-29T12:42:54.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:42:55.019 [DEBUG] [Thread-156211] [transport.py] [_log()] starting thread (client mode): 0x2b969150
2025-09-29T12:42:55.020 [DEBUG] [Thread-156211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:55.040 [DEBUG] [Thread-156211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:42:55.040 [INFO] [Thread-156211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] Compression: none
2025-09-29T12:42:55.044 [DEBUG] [Thread-156211] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:55.051 [DEBUG] [Thread-156211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:55.051 [DEBUG] [Thread-156211] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:55.051 [DEBUG] [Thread-156211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:42:55.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:42:55.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:55.052 [DEBUG] [Thread-156211] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:55.052 [DEBUG] [Thread-156211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:55.052 [DEBUG] [Thread-156211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:55.052 [DEBUG] [Thread-156211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:42:55.052 [DEBUG] [Thread-156211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:55.062 [INFO] [Thread-156211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:55.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:55.657 [DEBUG] [Thread-156211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:55.657 [DEBUG] [Thread-156211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:55.657 [DEBUG] [Thread-156211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:42:55.698 [DEBUG] [Thread-156211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:55.698 [DEBUG] [Thread-156211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:55.700 [DEBUG] [Thread-156211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:55.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:55.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:42:55.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:42:55.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:42:55.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:55.718 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:42:55.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.446251 -999.00  +12.90  16.76     51   +3.20 1 1 1 1 1   888    0 10.83 19.82 ----- 16.7 16.8 112.3 23.6 21.1 -31.8 20.6 -25.1 20.9 -26.0 22.0 -25.5
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.446251
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:42:55.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:42:47', tmtdew=11.2, humidity=46.62, cloud=0.0, wind=13.66, temperature=12.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:42:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:42:55.719 [DEBUG] [Thread-156211] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:42:55.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:42:55.803 [DEBUG] [Thread-156214] [transport.py] [_log()] starting thread (client mode): 0x2b9692d0
2025-09-29T12:42:55.803 [DEBUG] [Thread-156214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:42:55.817 [DEBUG] [Thread-156214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:42:55.817 [INFO] [Thread-156214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] client lang: <none>
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] server lang: <none>
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] kex follows: False
2025-09-29T12:42:55.824 [DEBUG] [Thread-156214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:42:55.825 [DEBUG] [Thread-156214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:42:55.825 [DEBUG] [Thread-156214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:42:55.825 [DEBUG] [Thread-156214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:42:55.825 [DEBUG] [Thread-156214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:42:55.825 [DEBUG] [Thread-156214] [transport.py] [_log()] Compression: none
2025-09-29T12:42:55.825 [DEBUG] [Thread-156214] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:42:55.882 [DEBUG] [Thread-156214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:42:55.882 [DEBUG] [Thread-156214] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:42:55.882 [DEBUG] [Thread-156214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:42:55.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:42:55.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:42:55.940 [DEBUG] [Thread-156214] [transport.py] [_log()] userauth is OK
2025-09-29T12:42:55.940 [DEBUG] [Thread-156214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:42:55.940 [DEBUG] [Thread-156214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:42:55.940 [DEBUG] [Thread-156214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:42:55.940 [DEBUG] [Thread-156214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:42:55.954 [INFO] [Thread-156214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:42:55.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:42:55.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:42:56.893 [DEBUG] [Thread-156214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:42:56.893 [DEBUG] [Thread-156214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:42:56.945 [DEBUG] [Thread-156214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:42:56.945 [DEBUG] [Thread-156214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:42:56.953 [DEBUG] [Thread-156214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:42:56.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:42:56.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:42:56.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:42:56.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:42:56.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:42:56.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:42:56.985 [DEBUG] [Thread-156214] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:43:02.077 [DEBUG] [Thread-156216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:43:06.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:43:06.988 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:43:06.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:43:07.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 42, 47), 11.2, 46.62, 0.0, 13.66, 12.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:43:07.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:42:47
2025-09-29T12:43:07.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:43:07.820 [DEBUG] [Thread-156217] [transport.py] [_log()] starting thread (client mode): 0x2b9c0400
2025-09-29T12:43:07.820 [DEBUG] [Thread-156217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:43:07.841 [DEBUG] [Thread-156217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:43:07.841 [INFO] [Thread-156217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:43:07.845 [DEBUG] [Thread-156217] [transport.py] [_log()] client lang: <none>
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] server lang: <none>
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] kex follows: False
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] Compression: none
2025-09-29T12:43:07.846 [DEBUG] [Thread-156217] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:43:07.865 [DEBUG] [Thread-156217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:43:07.866 [DEBUG] [Thread-156217] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:43:07.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:43:07.867 [DEBUG] [Thread-156217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:43:07.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:43:07.868 [DEBUG] [Thread-156217] [transport.py] [_log()] userauth is OK
2025-09-29T12:43:07.868 [DEBUG] [Thread-156217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:43:07.869 [DEBUG] [Thread-156217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:43:07.869 [DEBUG] [Thread-156217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:43:07.869 [DEBUG] [Thread-156217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:43:07.892 [INFO] [Thread-156217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:43:07.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:43:08.690 [DEBUG] [Thread-156217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:43:08.690 [DEBUG] [Thread-156217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:43:08.690 [DEBUG] [Thread-156217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:43:08.731 [DEBUG] [Thread-156217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:43:08.731 [DEBUG] [Thread-156217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:43:08.734 [DEBUG] [Thread-156217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:43:08.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:43:08.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:43:08.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:43:08.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:43:08.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:43:08.751 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:43:08.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:43:08.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:43:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:43:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.446251 -999.00  +12.90  16.76     51   +3.20 1 1 1 1 1   888    0 10.83 19.82 ----- 16.7 16.8 112.3 23.6 21.1 -31.8 20.6 -25.1 20.9 -26.0 22.0 -25.5
2025-09-29T12:43:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:43:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:43:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.446251
2025-09-29T12:43:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:43:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:43:08.753 [DEBUG] [Thread-156217] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:43:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:43:08.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:43:08.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:43:08.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:42:47', tmtdew=11.2, humidity=46.62, cloud=0.0, wind=13.66, temperature=12.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:42:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:43:08.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:43:17.131 [DEBUG] [Thread-156220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:43:32.159 [DEBUG] [Thread-156221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:43:39.895 [DEBUG] [Thread-156222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:43:47.186 [DEBUG] [Thread-156223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:43:49.462 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:43:49.463 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:44:02.215 [DEBUG] [Thread-156224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:44:17.243 [DEBUG] [Thread-156225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:44:32.276 [DEBUG] [Thread-156226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:44:39.960 [DEBUG] [Thread-156227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:44:47.305 [DEBUG] [Thread-156228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:44:49.615 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:44:49.616 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:45:02.332 [DEBUG] [Thread-156229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:45:17.360 [DEBUG] [Thread-156230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:45:22.747 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T12:45:32.394 [DEBUG] [Thread-156231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:45:32.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:45:32.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:45:32.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:45:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 45, 26), 11.29, 45.95, 0.0, 10.24, 12.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:45:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:45:26
2025-09-29T12:45:33.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:45:33.627 [DEBUG] [Thread-156232] [transport.py] [_log()] starting thread (client mode): 0x2b91f7f0
2025-09-29T12:45:33.627 [DEBUG] [Thread-156232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:45:33.639 [DEBUG] [Thread-156232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:45:33.639 [INFO] [Thread-156232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] client lang: <none>
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] server lang: <none>
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] kex follows: False
2025-09-29T12:45:33.642 [DEBUG] [Thread-156232] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:45:33.643 [DEBUG] [Thread-156232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:45:33.643 [DEBUG] [Thread-156232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:45:33.643 [DEBUG] [Thread-156232] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:45:33.643 [DEBUG] [Thread-156232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:45:33.643 [DEBUG] [Thread-156232] [transport.py] [_log()] Compression: none
2025-09-29T12:45:33.643 [DEBUG] [Thread-156232] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:45:33.654 [DEBUG] [Thread-156232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:45:33.654 [DEBUG] [Thread-156232] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:45:33.655 [DEBUG] [Thread-156232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:45:33.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:45:33.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:45:33.696 [DEBUG] [Thread-156232] [transport.py] [_log()] userauth is OK
2025-09-29T12:45:33.697 [DEBUG] [Thread-156232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:45:33.697 [DEBUG] [Thread-156232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:45:33.697 [DEBUG] [Thread-156232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:45:33.697 [DEBUG] [Thread-156232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:45:33.733 [INFO] [Thread-156232] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:45:33.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:45:34.322 [DEBUG] [Thread-156232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:45:34.322 [DEBUG] [Thread-156232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:45:34.323 [DEBUG] [Thread-156232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:45:34.363 [DEBUG] [Thread-156232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:45:34.363 [DEBUG] [Thread-156232] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:45:34.368 [DEBUG] [Thread-156232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:45:34.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:45:34.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:45:34.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:45:34.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:45:34.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:45:34.390 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:45:34.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:45:34.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:45:34.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:45:34.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.447986 -999.00  +13.40   3.02     49   +3.00 1 1 1 1 1   888    0 10.53 11.41 ----- 6.2 3.0 179.3 10.9 21.9 -25.6 20.5 -26.8 21.2 -26.0 22.4 -26.7
2025-09-29T12:45:34.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:45:34.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:45:34.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.447986
2025-09-29T12:45:34.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:45:34.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:45:34.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:45:34.392 [DEBUG] [Thread-156232] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:45:34.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:45:34.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:45:34.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:45:26', tmtdew=11.29, humidity=45.95, cloud=0.0, wind=10.24, temperature=12.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:45:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:45:34.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:45:34.486 [DEBUG] [Thread-156235] [transport.py] [_log()] starting thread (client mode): 0x28705c00
2025-09-29T12:45:34.486 [DEBUG] [Thread-156235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:45:34.501 [DEBUG] [Thread-156235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:45:34.501 [INFO] [Thread-156235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:45:34.508 [DEBUG] [Thread-156235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:45:34.508 [DEBUG] [Thread-156235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] client lang: <none>
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] server lang: <none>
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] kex follows: False
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] Compression: none
2025-09-29T12:45:34.509 [DEBUG] [Thread-156235] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:45:34.566 [DEBUG] [Thread-156235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:45:34.566 [DEBUG] [Thread-156235] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:45:34.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:45:34.567 [DEBUG] [Thread-156235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:45:34.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:45:34.623 [DEBUG] [Thread-156235] [transport.py] [_log()] userauth is OK
2025-09-29T12:45:34.623 [DEBUG] [Thread-156235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:45:34.623 [DEBUG] [Thread-156235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:45:34.623 [DEBUG] [Thread-156235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:45:34.623 [DEBUG] [Thread-156235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:45:34.641 [INFO] [Thread-156235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:45:34.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:45:34.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:45:35.594 [DEBUG] [Thread-156235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:45:35.594 [DEBUG] [Thread-156235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:45:35.643 [DEBUG] [Thread-156235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:45:35.643 [DEBUG] [Thread-156235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:45:35.652 [DEBUG] [Thread-156235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:45:35.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:45:35.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:45:35.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:45:35.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:45:35.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:45:35.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:45:35.685 [DEBUG] [Thread-156235] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:45:40.010 [DEBUG] [Thread-156237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:45:45.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:45:45.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:45:45.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:45:46.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 45, 26), 11.29, 45.95, 0.0, 10.24, 12.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:45:46.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:45:26
2025-09-29T12:45:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:45:46.540 [DEBUG] [Thread-156238] [transport.py] [_log()] starting thread (client mode): 0x2b96cac0
2025-09-29T12:45:46.540 [DEBUG] [Thread-156238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:45:46.561 [DEBUG] [Thread-156238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:45:46.561 [INFO] [Thread-156238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:45:46.565 [DEBUG] [Thread-156238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] client lang: <none>
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] server lang: <none>
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] kex follows: False
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] Compression: none
2025-09-29T12:45:46.566 [DEBUG] [Thread-156238] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:45:46.585 [DEBUG] [Thread-156238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:45:46.586 [DEBUG] [Thread-156238] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:45:46.586 [DEBUG] [Thread-156238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:45:46.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:45:46.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:45:46.588 [DEBUG] [Thread-156238] [transport.py] [_log()] userauth is OK
2025-09-29T12:45:46.588 [DEBUG] [Thread-156238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:45:46.589 [DEBUG] [Thread-156238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:45:46.589 [DEBUG] [Thread-156238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:45:46.589 [DEBUG] [Thread-156238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:45:46.613 [INFO] [Thread-156238] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:45:46.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:45:47.259 [DEBUG] [Thread-156238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:45:47.260 [DEBUG] [Thread-156238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:45:47.260 [DEBUG] [Thread-156238] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:45:47.300 [DEBUG] [Thread-156238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:45:47.301 [DEBUG] [Thread-156238] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:45:47.304 [DEBUG] [Thread-156238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:45:47.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:45:47.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:45:47.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:45:47.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:45:47.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:45:47.326 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:45:47.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:45:47.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:45:47.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:45:47.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.447986 -999.00  +13.40   3.02     49   +3.00 1 1 1 1 1   888    0 10.53 11.41 ----- 6.2 3.0 179.3 10.9 21.9 -25.6 20.5 -26.8 21.2 -26.0 22.4 -26.7
2025-09-29T12:45:47.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:45:47.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:45:47.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.447986
2025-09-29T12:45:47.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:45:47.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:45:47.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:45:47.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:45:47.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:45:47.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:45:26', tmtdew=11.29, humidity=45.95, cloud=0.0, wind=10.24, temperature=12.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:45:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:45:47.330 [DEBUG] [Thread-156238] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:45:47.415 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:45:47.422 [DEBUG] [Thread-156241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:45:47.427 [DEBUG] [Thread-156242] [transport.py] [_log()] starting thread (client mode): 0x2e38fbe0
2025-09-29T12:45:47.427 [DEBUG] [Thread-156242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:45:47.441 [DEBUG] [Thread-156242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:45:47.442 [INFO] [Thread-156242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:45:47.449 [DEBUG] [Thread-156242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:45:47.449 [DEBUG] [Thread-156242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:45:47.449 [DEBUG] [Thread-156242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:45:47.449 [DEBUG] [Thread-156242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:47.449 [DEBUG] [Thread-156242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] client lang: <none>
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] server lang: <none>
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] kex follows: False
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:45:47.450 [DEBUG] [Thread-156242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:45:47.451 [DEBUG] [Thread-156242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:45:47.451 [DEBUG] [Thread-156242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:45:47.451 [DEBUG] [Thread-156242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:45:47.451 [DEBUG] [Thread-156242] [transport.py] [_log()] Compression: none
2025-09-29T12:45:47.451 [DEBUG] [Thread-156242] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:45:47.510 [DEBUG] [Thread-156242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:45:47.511 [DEBUG] [Thread-156242] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:45:47.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:45:47.512 [DEBUG] [Thread-156242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:45:47.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:45:47.566 [DEBUG] [Thread-156242] [transport.py] [_log()] userauth is OK
2025-09-29T12:45:47.566 [DEBUG] [Thread-156242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:45:47.566 [DEBUG] [Thread-156242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:45:47.566 [DEBUG] [Thread-156242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:45:47.566 [DEBUG] [Thread-156242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:45:47.585 [INFO] [Thread-156242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:45:47.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:45:47.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:45:48.565 [DEBUG] [Thread-156242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:45:48.565 [DEBUG] [Thread-156242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:45:48.615 [DEBUG] [Thread-156242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:45:48.615 [DEBUG] [Thread-156242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:45:48.624 [DEBUG] [Thread-156242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:45:48.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:45:48.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:45:48.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:45:48.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:45:48.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:45:48.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:45:48.657 [DEBUG] [Thread-156242] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:45:49.757 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:45:49.759 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:45:58.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:45:58.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:45:58.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:45:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 45, 26), 11.29, 45.95, 0.0, 10.24, 12.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:45:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:45:26
2025-09-29T12:45:59.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:45:59.571 [DEBUG] [Thread-156244] [transport.py] [_log()] starting thread (client mode): 0x2e38e050
2025-09-29T12:45:59.571 [DEBUG] [Thread-156244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:45:59.591 [DEBUG] [Thread-156244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:45:59.591 [INFO] [Thread-156244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] client lang: <none>
2025-09-29T12:45:59.594 [DEBUG] [Thread-156244] [transport.py] [_log()] server lang: <none>
2025-09-29T12:45:59.595 [DEBUG] [Thread-156244] [transport.py] [_log()] kex follows: False
2025-09-29T12:45:59.595 [DEBUG] [Thread-156244] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:45:59.595 [DEBUG] [Thread-156244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:45:59.595 [DEBUG] [Thread-156244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:45:59.595 [DEBUG] [Thread-156244] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:45:59.595 [DEBUG] [Thread-156244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:45:59.595 [DEBUG] [Thread-156244] [transport.py] [_log()] Compression: none
2025-09-29T12:45:59.595 [DEBUG] [Thread-156244] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:45:59.612 [DEBUG] [Thread-156244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:45:59.613 [DEBUG] [Thread-156244] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:45:59.613 [DEBUG] [Thread-156244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:45:59.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:45:59.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:45:59.656 [DEBUG] [Thread-156244] [transport.py] [_log()] userauth is OK
2025-09-29T12:45:59.656 [DEBUG] [Thread-156244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:45:59.656 [DEBUG] [Thread-156244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:45:59.656 [DEBUG] [Thread-156244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:45:59.656 [DEBUG] [Thread-156244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:45:59.683 [INFO] [Thread-156244] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:45:59.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:00.331 [DEBUG] [Thread-156244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:00.331 [DEBUG] [Thread-156244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:00.331 [DEBUG] [Thread-156244] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:46:00.372 [DEBUG] [Thread-156244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:00.372 [DEBUG] [Thread-156244] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:00.374 [DEBUG] [Thread-156244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:00.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:00.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:46:00.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:46:00.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:46:00.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:00.392 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:46:00.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.447986 -999.00  +13.40   3.02     49   +3.00 1 1 1 1 1   888    0 10.53 11.41 ----- 6.2 3.0 179.3 10.9 21.9 -25.6 20.5 -26.8 21.2 -26.0 22.4 -26.7
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.447986
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:46:00.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:45:26', tmtdew=11.29, humidity=45.95, cloud=0.0, wind=10.24, temperature=12.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:45:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:46:00.393 [DEBUG] [Thread-156244] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:00.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:46:00.477 [DEBUG] [Thread-156247] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d70
2025-09-29T12:46:00.477 [DEBUG] [Thread-156247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:00.492 [DEBUG] [Thread-156247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:46:00.492 [INFO] [Thread-156247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:46:00.500 [DEBUG] [Thread-156247] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:00.500 [DEBUG] [Thread-156247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] Compression: none
2025-09-29T12:46:00.501 [DEBUG] [Thread-156247] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:00.557 [DEBUG] [Thread-156247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:00.557 [DEBUG] [Thread-156247] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:00.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:46:00.557 [DEBUG] [Thread-156247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:46:00.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:00.614 [DEBUG] [Thread-156247] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:00.614 [DEBUG] [Thread-156247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:00.614 [DEBUG] [Thread-156247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:00.614 [DEBUG] [Thread-156247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:46:00.614 [DEBUG] [Thread-156247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:00.630 [INFO] [Thread-156247] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:00.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:46:00.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:01.635 [DEBUG] [Thread-156247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:01.644 [DEBUG] [Thread-156247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:01.683 [DEBUG] [Thread-156247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:01.683 [DEBUG] [Thread-156247] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:01.692 [DEBUG] [Thread-156247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:01.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:01.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:46:01.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:46:01.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:01.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:01.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:01.728 [DEBUG] [Thread-156247] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:02.459 [DEBUG] [Thread-156249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:46:11.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:46:11.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:46:11.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:46:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 45, 58), 11.2, 46.75, 0.0, 10.77, 12.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:46:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:45:58
2025-09-29T12:46:12.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:46:12.588 [DEBUG] [Thread-156250] [transport.py] [_log()] starting thread (client mode): 0x2b9cb2e0
2025-09-29T12:46:12.589 [DEBUG] [Thread-156250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:12.609 [DEBUG] [Thread-156250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:46:12.609 [INFO] [Thread-156250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:12.612 [DEBUG] [Thread-156250] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:12.613 [DEBUG] [Thread-156250] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:12.613 [DEBUG] [Thread-156250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:12.613 [DEBUG] [Thread-156250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:12.613 [DEBUG] [Thread-156250] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:12.613 [DEBUG] [Thread-156250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:12.613 [DEBUG] [Thread-156250] [transport.py] [_log()] Compression: none
2025-09-29T12:46:12.613 [DEBUG] [Thread-156250] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:12.630 [DEBUG] [Thread-156250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:12.631 [DEBUG] [Thread-156250] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:12.631 [DEBUG] [Thread-156250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:46:12.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:46:12.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:12.633 [DEBUG] [Thread-156250] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:12.633 [DEBUG] [Thread-156250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:12.633 [DEBUG] [Thread-156250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:12.633 [DEBUG] [Thread-156250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:46:12.634 [DEBUG] [Thread-156250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:12.651 [INFO] [Thread-156250] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:12.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:13.306 [DEBUG] [Thread-156250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:13.306 [DEBUG] [Thread-156250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:13.307 [DEBUG] [Thread-156250] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:46:13.347 [DEBUG] [Thread-156250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:13.347 [DEBUG] [Thread-156250] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:13.350 [DEBUG] [Thread-156250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:13.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:13.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:46:13.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:46:13.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:46:13.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:13.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:46:13.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:13.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:13.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:46:13.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.448334 -999.00  +13.80  10.40     49   +3.40 1 1 1 1 1   888    0 10.68 11.84 ----- 13.6 10.4 123.4 16.1 21.9 -25.5 20.9 -25.1 21.4 -24.5 22.6 -25.4
2025-09-29T12:46:13.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:46:13.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:46:13.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.448334
2025-09-29T12:46:13.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:46:13.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:46:13.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:46:13.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:46:13.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:46:13.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:45:58', tmtdew=11.2, humidity=46.75, cloud=0.0, wind=10.77, temperature=12.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:45:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:46:13.376 [DEBUG] [Thread-156250] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:13.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:46:13.472 [DEBUG] [Thread-156253] [transport.py] [_log()] starting thread (client mode): 0x2b954940
2025-09-29T12:46:13.472 [DEBUG] [Thread-156253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:13.487 [DEBUG] [Thread-156253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:46:13.487 [INFO] [Thread-156253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:46:13.495 [DEBUG] [Thread-156253] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:13.495 [DEBUG] [Thread-156253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:46:13.495 [DEBUG] [Thread-156253] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:13.495 [DEBUG] [Thread-156253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:13.495 [DEBUG] [Thread-156253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:13.496 [DEBUG] [Thread-156253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:13.497 [DEBUG] [Thread-156253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:13.497 [DEBUG] [Thread-156253] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:13.497 [DEBUG] [Thread-156253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:13.497 [DEBUG] [Thread-156253] [transport.py] [_log()] Compression: none
2025-09-29T12:46:13.497 [DEBUG] [Thread-156253] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:13.554 [DEBUG] [Thread-156253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:13.554 [DEBUG] [Thread-156253] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:13.555 [DEBUG] [Thread-156253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:46:13.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:46:13.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:13.610 [DEBUG] [Thread-156253] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:13.611 [DEBUG] [Thread-156253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:13.611 [DEBUG] [Thread-156253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:13.611 [DEBUG] [Thread-156253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:46:13.611 [DEBUG] [Thread-156253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:13.633 [INFO] [Thread-156253] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:13.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:46:13.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:14.547 [DEBUG] [Thread-156253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:14.547 [DEBUG] [Thread-156253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:14.595 [DEBUG] [Thread-156253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:14.595 [DEBUG] [Thread-156253] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:14.604 [DEBUG] [Thread-156253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:14.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:14.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:46:14.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:46:14.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:14.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:14.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:14.638 [DEBUG] [Thread-156253] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:17.487 [DEBUG] [Thread-156255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:46:24.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:46:24.635 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:46:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:46:25.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 45, 58), 11.2, 46.75, 0.0, 10.77, 12.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:46:25.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:45:58
2025-09-29T12:46:25.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:46:25.499 [DEBUG] [Thread-156256] [transport.py] [_log()] starting thread (client mode): 0x2b9c98a0
2025-09-29T12:46:25.499 [DEBUG] [Thread-156256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:25.518 [DEBUG] [Thread-156256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:46:25.518 [INFO] [Thread-156256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:46:25.520 [DEBUG] [Thread-156256] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:25.520 [DEBUG] [Thread-156256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:46:25.520 [DEBUG] [Thread-156256] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:25.520 [DEBUG] [Thread-156256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] Compression: none
2025-09-29T12:46:25.521 [DEBUG] [Thread-156256] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:25.529 [DEBUG] [Thread-156256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:25.529 [DEBUG] [Thread-156256] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:25.530 [DEBUG] [Thread-156256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:46:25.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:46:25.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:25.532 [DEBUG] [Thread-156256] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:25.532 [DEBUG] [Thread-156256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:25.532 [DEBUG] [Thread-156256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:25.532 [DEBUG] [Thread-156256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:46:25.532 [DEBUG] [Thread-156256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:25.555 [INFO] [Thread-156256] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:25.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:26.191 [DEBUG] [Thread-156256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:26.191 [DEBUG] [Thread-156256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:26.191 [DEBUG] [Thread-156256] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:46:26.231 [DEBUG] [Thread-156256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:26.232 [DEBUG] [Thread-156256] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:26.235 [DEBUG] [Thread-156256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:26.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:26.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:46:26.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:46:26.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:46:26.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:26.259 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:46:26.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:26.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:26.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:46:26.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.448334 -999.00  +13.80  10.40     49   +3.40 1 1 1 1 1   888    0 10.68 11.84 ----- 13.6 10.4 123.4 16.1 21.9 -25.5 20.9 -25.1 21.4 -24.5 22.6 -25.4
2025-09-29T12:46:26.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:46:26.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:46:26.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.448334
2025-09-29T12:46:26.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:46:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:46:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:46:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:46:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:46:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:45:58', tmtdew=11.2, humidity=46.75, cloud=0.0, wind=10.77, temperature=12.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:45:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:46:26.261 [DEBUG] [Thread-156256] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:26.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:46:26.354 [DEBUG] [Thread-156259] [transport.py] [_log()] starting thread (client mode): 0x2b9c86a0
2025-09-29T12:46:26.354 [DEBUG] [Thread-156259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:26.368 [DEBUG] [Thread-156259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:46:26.368 [INFO] [Thread-156259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:46:26.375 [DEBUG] [Thread-156259] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:26.376 [DEBUG] [Thread-156259] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] Compression: none
2025-09-29T12:46:26.377 [DEBUG] [Thread-156259] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:26.434 [DEBUG] [Thread-156259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:26.435 [DEBUG] [Thread-156259] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:26.435 [DEBUG] [Thread-156259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:46:26.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:46:26.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:26.490 [DEBUG] [Thread-156259] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:26.490 [DEBUG] [Thread-156259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:26.491 [DEBUG] [Thread-156259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:26.491 [DEBUG] [Thread-156259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:46:26.491 [DEBUG] [Thread-156259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:26.509 [INFO] [Thread-156259] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:26.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:46:26.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:27.529 [DEBUG] [Thread-156259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:27.529 [DEBUG] [Thread-156259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:27.577 [DEBUG] [Thread-156259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:27.577 [DEBUG] [Thread-156259] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:27.586 [DEBUG] [Thread-156259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:27.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:27.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:46:27.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:46:27.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:27.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:27.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:27.620 [DEBUG] [Thread-156259] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:32.531 [DEBUG] [Thread-156261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:46:37.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:46:37.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:46:37.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:46:38.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 46, 30), 11.13, 46.97, 0.0, 14.65, 12.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:46:38.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:46:30
2025-09-29T12:46:38.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:46:38.499 [DEBUG] [Thread-156262] [transport.py] [_log()] starting thread (client mode): 0x2e349c90
2025-09-29T12:46:38.499 [DEBUG] [Thread-156262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:38.519 [DEBUG] [Thread-156262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:46:38.519 [INFO] [Thread-156262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:46:38.522 [DEBUG] [Thread-156262] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:38.522 [DEBUG] [Thread-156262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:46:38.522 [DEBUG] [Thread-156262] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:38.522 [DEBUG] [Thread-156262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:38.522 [DEBUG] [Thread-156262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:38.522 [DEBUG] [Thread-156262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:38.522 [DEBUG] [Thread-156262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] Compression: none
2025-09-29T12:46:38.523 [DEBUG] [Thread-156262] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:38.538 [DEBUG] [Thread-156262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:38.539 [DEBUG] [Thread-156262] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:38.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:46:38.540 [DEBUG] [Thread-156262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:46:38.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:38.580 [DEBUG] [Thread-156262] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:38.581 [DEBUG] [Thread-156262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:38.581 [DEBUG] [Thread-156262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:38.581 [DEBUG] [Thread-156262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:46:38.581 [DEBUG] [Thread-156262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:38.616 [INFO] [Thread-156262] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:38.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:39.281 [DEBUG] [Thread-156262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:39.281 [DEBUG] [Thread-156262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:39.281 [DEBUG] [Thread-156262] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:46:39.322 [DEBUG] [Thread-156262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:39.323 [DEBUG] [Thread-156262] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:39.326 [DEBUG] [Thread-156262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:39.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:39.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:46:39.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:46:39.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:46:39.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:39.349 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:46:39.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:39.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:39.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:46:39.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.448334 -999.00  +13.80  10.40     49   +3.40 1 1 1 1 1   888    0 10.68 11.84 ----- 13.6 10.4 123.4 16.1 21.9 -25.5 20.9 -25.1 21.4 -24.5 22.6 -25.4
2025-09-29T12:46:39.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:46:39.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:46:39.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.448334
2025-09-29T12:46:39.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:46:39.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:46:39.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:46:39.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:46:39.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:46:39.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:46:30', tmtdew=11.13, humidity=46.97, cloud=0.0, wind=14.65, temperature=12.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:45:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:46:39.352 [DEBUG] [Thread-156262] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:39.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:46:39.449 [DEBUG] [Thread-156265] [transport.py] [_log()] starting thread (client mode): 0x2e3489a0
2025-09-29T12:46:39.449 [DEBUG] [Thread-156265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:39.463 [DEBUG] [Thread-156265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:46:39.464 [INFO] [Thread-156265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:46:39.471 [DEBUG] [Thread-156265] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:39.471 [DEBUG] [Thread-156265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:46:39.471 [DEBUG] [Thread-156265] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:39.472 [DEBUG] [Thread-156265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:39.472 [DEBUG] [Thread-156265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:39.472 [DEBUG] [Thread-156265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:39.472 [DEBUG] [Thread-156265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:39.472 [DEBUG] [Thread-156265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:39.472 [DEBUG] [Thread-156265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:39.472 [DEBUG] [Thread-156265] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:39.472 [DEBUG] [Thread-156265] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:39.473 [DEBUG] [Thread-156265] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:39.473 [DEBUG] [Thread-156265] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:39.473 [DEBUG] [Thread-156265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:39.473 [DEBUG] [Thread-156265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:39.473 [DEBUG] [Thread-156265] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:39.473 [DEBUG] [Thread-156265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:39.473 [DEBUG] [Thread-156265] [transport.py] [_log()] Compression: none
2025-09-29T12:46:39.474 [DEBUG] [Thread-156265] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:39.531 [DEBUG] [Thread-156265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:39.532 [DEBUG] [Thread-156265] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:39.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:46:39.533 [DEBUG] [Thread-156265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:46:39.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:39.586 [DEBUG] [Thread-156265] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:39.586 [DEBUG] [Thread-156265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:39.586 [DEBUG] [Thread-156265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:39.586 [DEBUG] [Thread-156265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:46:39.586 [DEBUG] [Thread-156265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:39.600 [INFO] [Thread-156265] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:39.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:46:39.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:40.057 [DEBUG] [Thread-156267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:46:40.593 [DEBUG] [Thread-156265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:40.593 [DEBUG] [Thread-156265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:40.641 [DEBUG] [Thread-156265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:40.641 [DEBUG] [Thread-156265] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:40.650 [DEBUG] [Thread-156265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:40.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:40.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:46:40.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:46:40.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:40.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:40.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:40.689 [DEBUG] [Thread-156265] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:47.556 [DEBUG] [Thread-156268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:46:49.901 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:46:49.902 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:46:50.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:46:50.683 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:46:50.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:46:51.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 46, 30), 11.13, 46.97, 0.0, 14.65, 12.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:46:51.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:46:30
2025-09-29T12:46:51.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:46:51.543 [DEBUG] [Thread-156269] [transport.py] [_log()] starting thread (client mode): 0x2b954610
2025-09-29T12:46:51.543 [DEBUG] [Thread-156269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:51.565 [DEBUG] [Thread-156269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:46:51.565 [INFO] [Thread-156269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:46:51.568 [DEBUG] [Thread-156269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] Compression: none
2025-09-29T12:46:51.569 [DEBUG] [Thread-156269] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:51.586 [DEBUG] [Thread-156269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:51.587 [DEBUG] [Thread-156269] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:51.587 [DEBUG] [Thread-156269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:46:51.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:46:51.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:51.589 [DEBUG] [Thread-156269] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:51.590 [DEBUG] [Thread-156269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:51.590 [DEBUG] [Thread-156269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:51.590 [DEBUG] [Thread-156269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:46:51.590 [DEBUG] [Thread-156269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:51.612 [INFO] [Thread-156269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:51.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:52.267 [DEBUG] [Thread-156269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:52.267 [DEBUG] [Thread-156269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:52.267 [DEBUG] [Thread-156269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:46:52.308 [DEBUG] [Thread-156269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:52.309 [DEBUG] [Thread-156269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:52.311 [DEBUG] [Thread-156269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:52.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:52.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:46:52.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:46:52.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:46:52.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:52.334 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:46:52.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:52.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:52.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:46:52.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.449028 -999.00  +13.30  17.15     49   +2.90 1 1 1 1 1   888    0 10.41 11.54 ----- 15.5 17.1 145.2 23.1 22.0 -25.8 20.9 -26.7 21.2 -27.2 22.5 -29.0
2025-09-29T12:46:52.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:46:52.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:46:52.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.449028
2025-09-29T12:46:52.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:46:52.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:46:52.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:46:52.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:46:52.336 [DEBUG] [Thread-156269] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:46:52.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:46:52.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:46:30', tmtdew=11.13, humidity=46.97, cloud=0.0, wind=14.65, temperature=12.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:46:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:46:52.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:46:52.432 [DEBUG] [Thread-156272] [transport.py] [_log()] starting thread (client mode): 0x2e348400
2025-09-29T12:46:52.432 [DEBUG] [Thread-156272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:46:52.448 [DEBUG] [Thread-156272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:46:52.448 [INFO] [Thread-156272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] client lang: <none>
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] server lang: <none>
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] kex follows: False
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] Compression: none
2025-09-29T12:46:52.456 [DEBUG] [Thread-156272] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:46:52.518 [DEBUG] [Thread-156272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:46:52.519 [DEBUG] [Thread-156272] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:46:52.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:46:52.520 [DEBUG] [Thread-156272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:46:52.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:46:52.574 [DEBUG] [Thread-156272] [transport.py] [_log()] userauth is OK
2025-09-29T12:46:52.574 [DEBUG] [Thread-156272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:46:52.575 [DEBUG] [Thread-156272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:46:52.575 [DEBUG] [Thread-156272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:46:52.575 [DEBUG] [Thread-156272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:46:52.594 [INFO] [Thread-156272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:46:52.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:46:52.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:46:53.597 [DEBUG] [Thread-156272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:46:53.597 [DEBUG] [Thread-156272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:46:53.645 [DEBUG] [Thread-156272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:46:53.645 [DEBUG] [Thread-156272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:46:53.655 [DEBUG] [Thread-156272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:46:53.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:46:53.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:46:53.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:46:53.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:46:53.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:46:53.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:46:53.687 [DEBUG] [Thread-156272] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:02.592 [DEBUG] [Thread-156274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:47:03.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:47:03.687 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:47:03.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:47:04.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 46, 30), 11.13, 46.97, 0.0, 14.65, 12.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:47:04.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:46:30
2025-09-29T12:47:04.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:47:04.603 [DEBUG] [Thread-156275] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-29T12:47:04.603 [DEBUG] [Thread-156275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:04.623 [DEBUG] [Thread-156275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:47:04.623 [INFO] [Thread-156275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] Compression: none
2025-09-29T12:47:04.627 [DEBUG] [Thread-156275] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:04.642 [DEBUG] [Thread-156275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:04.643 [DEBUG] [Thread-156275] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:04.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:47:04.644 [DEBUG] [Thread-156275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:47:04.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:04.646 [DEBUG] [Thread-156275] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:04.646 [DEBUG] [Thread-156275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:04.646 [DEBUG] [Thread-156275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:04.646 [DEBUG] [Thread-156275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:47:04.646 [DEBUG] [Thread-156275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:04.671 [INFO] [Thread-156275] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:04.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:05.314 [DEBUG] [Thread-156275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:05.314 [DEBUG] [Thread-156275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:05.314 [DEBUG] [Thread-156275] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:47:05.355 [DEBUG] [Thread-156275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:05.355 [DEBUG] [Thread-156275] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:05.359 [DEBUG] [Thread-156275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:05.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:05.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:47:05.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:47:05.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:47:05.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:05.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:47:05.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:05.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:05.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:47:05.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.449028 -999.00  +13.30  17.15     49   +2.90 1 1 1 1 1   888    0 10.41 11.54 ----- 15.5 17.1 145.2 23.1 22.0 -25.8 20.9 -26.7 21.2 -27.2 22.5 -29.0
2025-09-29T12:47:05.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:47:05.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:47:05.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.449028
2025-09-29T12:47:05.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:47:05.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:47:05.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:47:05.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:47:05.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:47:05.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:46:30', tmtdew=11.13, humidity=46.97, cloud=0.0, wind=14.65, temperature=12.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:46:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:47:05.384 [DEBUG] [Thread-156275] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:05.471 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:47:05.482 [DEBUG] [Thread-156278] [transport.py] [_log()] starting thread (client mode): 0x2b9540a0
2025-09-29T12:47:05.482 [DEBUG] [Thread-156278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:05.497 [DEBUG] [Thread-156278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:47:05.497 [INFO] [Thread-156278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:47:05.504 [DEBUG] [Thread-156278] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:05.505 [DEBUG] [Thread-156278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:47:05.505 [DEBUG] [Thread-156278] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:05.505 [DEBUG] [Thread-156278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:05.505 [DEBUG] [Thread-156278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:05.505 [DEBUG] [Thread-156278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:05.505 [DEBUG] [Thread-156278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:05.505 [DEBUG] [Thread-156278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:05.505 [DEBUG] [Thread-156278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:05.506 [DEBUG] [Thread-156278] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:05.506 [DEBUG] [Thread-156278] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:05.506 [DEBUG] [Thread-156278] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:05.506 [DEBUG] [Thread-156278] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:05.506 [DEBUG] [Thread-156278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:05.506 [DEBUG] [Thread-156278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:05.506 [DEBUG] [Thread-156278] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:05.506 [DEBUG] [Thread-156278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:05.507 [DEBUG] [Thread-156278] [transport.py] [_log()] Compression: none
2025-09-29T12:47:05.507 [DEBUG] [Thread-156278] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:05.563 [DEBUG] [Thread-156278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:05.564 [DEBUG] [Thread-156278] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:05.564 [DEBUG] [Thread-156278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:47:05.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:47:05.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:05.623 [DEBUG] [Thread-156278] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:05.623 [DEBUG] [Thread-156278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:05.623 [DEBUG] [Thread-156278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:05.623 [DEBUG] [Thread-156278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:47:05.623 [DEBUG] [Thread-156278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:05.644 [INFO] [Thread-156278] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:05.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:47:05.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:06.590 [DEBUG] [Thread-156278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:06.591 [DEBUG] [Thread-156278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:06.639 [DEBUG] [Thread-156278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:06.639 [DEBUG] [Thread-156278] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:06.648 [DEBUG] [Thread-156278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:06.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:06.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:47:06.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:47:06.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:06.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:06.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:06.682 [DEBUG] [Thread-156278] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:16.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:47:16.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:47:16.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:47:17.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 47, 2), 11.18, 46.88, 0.0, 13.98, 12.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:47:17.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:47:02
2025-09-29T12:47:17.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:47:17.537 [DEBUG] [Thread-156280] [transport.py] [_log()] starting thread (client mode): 0x2b9c90c0
2025-09-29T12:47:17.537 [DEBUG] [Thread-156280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:17.556 [DEBUG] [Thread-156280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:47:17.556 [INFO] [Thread-156280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:47:17.559 [DEBUG] [Thread-156280] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:17.559 [DEBUG] [Thread-156280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:47:17.559 [DEBUG] [Thread-156280] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:17.559 [DEBUG] [Thread-156280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:17.559 [DEBUG] [Thread-156280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:17.559 [DEBUG] [Thread-156280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:17.559 [DEBUG] [Thread-156280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] Compression: none
2025-09-29T12:47:17.560 [DEBUG] [Thread-156280] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:17.571 [DEBUG] [Thread-156280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:17.572 [DEBUG] [Thread-156280] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:17.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:47:17.572 [DEBUG] [Thread-156280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:47:17.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:17.574 [DEBUG] [Thread-156280] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:17.575 [DEBUG] [Thread-156280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:17.575 [DEBUG] [Thread-156280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:17.575 [DEBUG] [Thread-156280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:47:17.575 [DEBUG] [Thread-156280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:17.599 [INFO] [Thread-156280] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:17.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:17.628 [DEBUG] [Thread-156282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:47:18.196 [DEBUG] [Thread-156280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:18.196 [DEBUG] [Thread-156280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:18.197 [DEBUG] [Thread-156280] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:47:18.237 [DEBUG] [Thread-156280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:18.237 [DEBUG] [Thread-156280] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:18.240 [DEBUG] [Thread-156280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:18.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:18.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:47:18.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:47:18.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:47:18.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:18.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:47:18.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:18.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:18.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:47:18.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.449376 -999.00  +13.30  14.10     49   +3.10 1 1 1 1 1   888    0 10.44 10.27 ----- 12.5 14.1 119.4 21.0 21.9 -25.7 21.0 -25.1 21.3 -25.4 22.5 -26.3
2025-09-29T12:47:18.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:47:18.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:47:18.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.449376
2025-09-29T12:47:18.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:47:18.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:47:18.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:47:18.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:47:18.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:47:18.267 [DEBUG] [Thread-156280] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:18.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:47:02', tmtdew=11.18, humidity=46.88, cloud=0.0, wind=13.98, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:47:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:47:18.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:47:18.362 [DEBUG] [Thread-156284] [transport.py] [_log()] starting thread (client mode): 0x2b9ca770
2025-09-29T12:47:18.362 [DEBUG] [Thread-156284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:18.378 [DEBUG] [Thread-156284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:47:18.378 [INFO] [Thread-156284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:47:18.385 [DEBUG] [Thread-156284] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:18.385 [DEBUG] [Thread-156284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:47:18.385 [DEBUG] [Thread-156284] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:18.385 [DEBUG] [Thread-156284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:18.385 [DEBUG] [Thread-156284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] Compression: none
2025-09-29T12:47:18.386 [DEBUG] [Thread-156284] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:18.442 [DEBUG] [Thread-156284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:18.443 [DEBUG] [Thread-156284] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:18.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:47:18.443 [DEBUG] [Thread-156284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:47:18.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:18.498 [DEBUG] [Thread-156284] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:18.499 [DEBUG] [Thread-156284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:18.499 [DEBUG] [Thread-156284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:18.499 [DEBUG] [Thread-156284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:47:18.499 [DEBUG] [Thread-156284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:18.517 [INFO] [Thread-156284] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:18.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:47:18.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:19.475 [DEBUG] [Thread-156284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:19.475 [DEBUG] [Thread-156284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:19.523 [DEBUG] [Thread-156284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:19.523 [DEBUG] [Thread-156284] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:19.532 [DEBUG] [Thread-156284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:19.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:19.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:47:19.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:47:19.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:19.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:19.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:19.567 [DEBUG] [Thread-156284] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:29.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:47:29.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:47:29.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:47:30.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 47, 2), 11.18, 46.88, 0.0, 13.98, 12.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:47:30.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:47:02
2025-09-29T12:47:30.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:47:30.426 [DEBUG] [Thread-156286] [transport.py] [_log()] starting thread (client mode): 0x2b9564a0
2025-09-29T12:47:30.426 [DEBUG] [Thread-156286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:30.446 [DEBUG] [Thread-156286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:47:30.446 [INFO] [Thread-156286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:47:30.449 [DEBUG] [Thread-156286] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:30.449 [DEBUG] [Thread-156286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:47:30.449 [DEBUG] [Thread-156286] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:30.449 [DEBUG] [Thread-156286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:30.449 [DEBUG] [Thread-156286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:30.449 [DEBUG] [Thread-156286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:30.449 [DEBUG] [Thread-156286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:30.449 [DEBUG] [Thread-156286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] Compression: none
2025-09-29T12:47:30.450 [DEBUG] [Thread-156286] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:30.468 [DEBUG] [Thread-156286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:30.468 [DEBUG] [Thread-156286] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:30.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:47:30.469 [DEBUG] [Thread-156286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:47:30.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:30.470 [DEBUG] [Thread-156286] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:30.471 [DEBUG] [Thread-156286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:30.471 [DEBUG] [Thread-156286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:30.471 [DEBUG] [Thread-156286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:47:30.471 [DEBUG] [Thread-156286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:30.490 [INFO] [Thread-156286] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:30.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:31.139 [DEBUG] [Thread-156286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:31.139 [DEBUG] [Thread-156286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:31.140 [DEBUG] [Thread-156286] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:47:31.180 [DEBUG] [Thread-156286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:31.180 [DEBUG] [Thread-156286] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:31.183 [DEBUG] [Thread-156286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:31.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:31.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:47:31.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:47:31.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:47:31.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:31.206 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:47:31.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:31.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:31.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:47:31.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.449376 -999.00  +13.30  14.10     49   +3.10 1 1 1 1 1   888    0 10.44 10.27 ----- 12.5 14.1 119.4 21.0 21.9 -25.7 21.0 -25.1 21.3 -25.4 22.5 -26.3
2025-09-29T12:47:31.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:47:31.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:47:31.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.449376
2025-09-29T12:47:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:47:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:47:31.208 [DEBUG] [Thread-156286] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:31.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:47:31.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:47:31.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:47:31.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:47:02', tmtdew=11.18, humidity=46.88, cloud=0.0, wind=13.98, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:47:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:47:31.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:47:31.303 [DEBUG] [Thread-156289] [transport.py] [_log()] starting thread (client mode): 0x2e34a080
2025-09-29T12:47:31.304 [DEBUG] [Thread-156289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:31.318 [DEBUG] [Thread-156289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:47:31.318 [INFO] [Thread-156289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:31.326 [DEBUG] [Thread-156289] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] Compression: none
2025-09-29T12:47:31.327 [DEBUG] [Thread-156289] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:31.384 [DEBUG] [Thread-156289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:31.384 [DEBUG] [Thread-156289] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:31.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:47:31.385 [DEBUG] [Thread-156289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:47:31.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:31.442 [DEBUG] [Thread-156289] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:31.443 [DEBUG] [Thread-156289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:31.443 [DEBUG] [Thread-156289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:31.443 [DEBUG] [Thread-156289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:47:31.443 [DEBUG] [Thread-156289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:31.463 [INFO] [Thread-156289] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:31.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:47:31.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:32.425 [DEBUG] [Thread-156289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:32.425 [DEBUG] [Thread-156289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:32.473 [DEBUG] [Thread-156289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:32.473 [DEBUG] [Thread-156289] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:32.483 [DEBUG] [Thread-156289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:32.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:32.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:47:32.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:47:32.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:32.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:32.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:32.520 [DEBUG] [Thread-156289] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:32.657 [DEBUG] [Thread-156291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:47:40.091 [DEBUG] [Thread-156292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:47:42.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:47:42.520 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:47:42.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:47:43.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 47, 34), 11.38, 45.8, 0.0, 14.29, 12.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:47:43.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:47:34
2025-09-29T12:47:43.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:47:43.372 [DEBUG] [Thread-156293] [transport.py] [_log()] starting thread (client mode): 0x2e349150
2025-09-29T12:47:43.372 [DEBUG] [Thread-156293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:43.393 [DEBUG] [Thread-156293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:47:43.393 [INFO] [Thread-156293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:47:43.397 [DEBUG] [Thread-156293] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:43.397 [DEBUG] [Thread-156293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:47:43.397 [DEBUG] [Thread-156293] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:43.397 [DEBUG] [Thread-156293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:43.397 [DEBUG] [Thread-156293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:43.397 [DEBUG] [Thread-156293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:43.397 [DEBUG] [Thread-156293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] Compression: none
2025-09-29T12:47:43.398 [DEBUG] [Thread-156293] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:43.421 [DEBUG] [Thread-156293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:43.421 [DEBUG] [Thread-156293] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:43.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:47:43.422 [DEBUG] [Thread-156293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:47:43.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:43.424 [DEBUG] [Thread-156293] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:43.424 [DEBUG] [Thread-156293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:43.424 [DEBUG] [Thread-156293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:43.424 [DEBUG] [Thread-156293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:47:43.424 [DEBUG] [Thread-156293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:43.458 [INFO] [Thread-156293] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:43.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:44.067 [DEBUG] [Thread-156293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:44.067 [DEBUG] [Thread-156293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:44.067 [DEBUG] [Thread-156293] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:47:44.107 [DEBUG] [Thread-156293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:44.108 [DEBUG] [Thread-156293] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:44.111 [DEBUG] [Thread-156293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:44.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:44.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:47:44.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:47:44.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:47:44.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:44.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:47:44.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:44.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:44.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:47:44.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.449376 -999.00  +13.30  14.10     49   +3.10 1 1 1 1 1   888    0 10.44 10.27 ----- 12.5 14.1 119.4 21.0 21.9 -25.7 21.0 -25.1 21.3 -25.4 22.5 -26.3
2025-09-29T12:47:44.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:47:44.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:47:44.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.449376
2025-09-29T12:47:44.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:47:44.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:47:44.139 [DEBUG] [Thread-156293] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:44.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:47:44.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:47:44.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:47:44.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:47:34', tmtdew=11.38, humidity=45.8, cloud=0.0, wind=14.29, temperature=12.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:47:06.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:47:44.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:47:44.235 [DEBUG] [Thread-156296] [transport.py] [_log()] starting thread (client mode): 0x2b956260
2025-09-29T12:47:44.235 [DEBUG] [Thread-156296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:44.250 [DEBUG] [Thread-156296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:47:44.251 [INFO] [Thread-156296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:47:44.258 [DEBUG] [Thread-156296] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:44.258 [DEBUG] [Thread-156296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] Compression: none
2025-09-29T12:47:44.259 [DEBUG] [Thread-156296] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:44.314 [DEBUG] [Thread-156296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:44.314 [DEBUG] [Thread-156296] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:44.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:47:44.315 [DEBUG] [Thread-156296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:47:44.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:44.370 [DEBUG] [Thread-156296] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:44.371 [DEBUG] [Thread-156296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:44.371 [DEBUG] [Thread-156296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:44.371 [DEBUG] [Thread-156296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:47:44.371 [DEBUG] [Thread-156296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:44.393 [INFO] [Thread-156296] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:44.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:47:44.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:45.321 [DEBUG] [Thread-156296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:45.321 [DEBUG] [Thread-156296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:45.369 [DEBUG] [Thread-156296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:45.369 [DEBUG] [Thread-156296] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:45.378 [DEBUG] [Thread-156296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:45.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:45.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:47:45.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:47:45.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:45.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:45.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:45.412 [DEBUG] [Thread-156296] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:47.700 [DEBUG] [Thread-156298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:47:50.041 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:47:50.042 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:47:55.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:47:55.415 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:47:55.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:47:56.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 47, 34), 11.38, 45.8, 0.0, 14.29, 12.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:47:56.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:47:34
2025-09-29T12:47:56.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:47:56.265 [DEBUG] [Thread-156299] [transport.py] [_log()] starting thread (client mode): 0x2e34b0a0
2025-09-29T12:47:56.266 [DEBUG] [Thread-156299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:56.285 [DEBUG] [Thread-156299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:47:56.285 [INFO] [Thread-156299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:47:56.289 [DEBUG] [Thread-156299] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:56.289 [DEBUG] [Thread-156299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:47:56.289 [DEBUG] [Thread-156299] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:56.289 [DEBUG] [Thread-156299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:56.289 [DEBUG] [Thread-156299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:56.289 [DEBUG] [Thread-156299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:56.289 [DEBUG] [Thread-156299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] Compression: none
2025-09-29T12:47:56.290 [DEBUG] [Thread-156299] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:56.306 [DEBUG] [Thread-156299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:56.306 [DEBUG] [Thread-156299] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:56.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:47:56.307 [DEBUG] [Thread-156299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:47:56.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:56.309 [DEBUG] [Thread-156299] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:56.310 [DEBUG] [Thread-156299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:56.310 [DEBUG] [Thread-156299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:56.310 [DEBUG] [Thread-156299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:47:56.310 [DEBUG] [Thread-156299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:56.325 [INFO] [Thread-156299] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:56.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:56.988 [DEBUG] [Thread-156299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:56.989 [DEBUG] [Thread-156299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:56.989 [DEBUG] [Thread-156299] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:47:57.029 [DEBUG] [Thread-156299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:57.029 [DEBUG] [Thread-156299] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:57.032 [DEBUG] [Thread-156299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:57.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:57.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:47:57.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:47:57.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:47:57.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:57.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:47:57.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:57.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:47:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.449723 -999.00  +13.30   9.93     49   +3.00 1 1 1 1 1   888    0 10.67 8.09 ----- 8.6 9.9 118.2 17.5 21.9 -25.8 21.1 -25.8 21.4 -26.2 22.6 -27.3
2025-09-29T12:47:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:47:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:47:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.449723
2025-09-29T12:47:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:47:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:47:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:47:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:47:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:47:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:47:34', tmtdew=11.38, humidity=45.8, cloud=0.0, wind=14.29, temperature=12.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:47:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:47:57.055 [DEBUG] [Thread-156299] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:47:57.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:47:57.150 [DEBUG] [Thread-156302] [transport.py] [_log()] starting thread (client mode): 0x2e3c08b0
2025-09-29T12:47:57.150 [DEBUG] [Thread-156302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:47:57.170 [DEBUG] [Thread-156302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:47:57.171 [INFO] [Thread-156302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:47:57.178 [DEBUG] [Thread-156302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] client lang: <none>
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] server lang: <none>
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] kex follows: False
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] Compression: none
2025-09-29T12:47:57.179 [DEBUG] [Thread-156302] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:47:57.235 [DEBUG] [Thread-156302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:47:57.235 [DEBUG] [Thread-156302] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:47:57.235 [DEBUG] [Thread-156302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:47:57.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:47:57.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:47:57.291 [DEBUG] [Thread-156302] [transport.py] [_log()] userauth is OK
2025-09-29T12:47:57.291 [DEBUG] [Thread-156302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:47:57.291 [DEBUG] [Thread-156302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:47:57.291 [DEBUG] [Thread-156302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:47:57.291 [DEBUG] [Thread-156302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:47:57.315 [INFO] [Thread-156302] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:47:57.315 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:47:57.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:47:58.283 [DEBUG] [Thread-156302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:47:58.284 [DEBUG] [Thread-156302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:47:58.332 [DEBUG] [Thread-156302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:47:58.332 [DEBUG] [Thread-156302] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:47:58.340 [DEBUG] [Thread-156302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:47:58.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:47:58.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:47:58.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:47:58.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:47:58.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:47:58.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:47:58.372 [DEBUG] [Thread-156302] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:02.742 [DEBUG] [Thread-156304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:48:08.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:48:08.374 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:48:08.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:48:08.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 48, 6), 11.6, 45.14, 0.0, 13.41, 12.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:48:08.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:48:06
2025-09-29T12:48:09.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:48:09.236 [DEBUG] [Thread-156305] [transport.py] [_log()] starting thread (client mode): 0x2e34a8f0
2025-09-29T12:48:09.236 [DEBUG] [Thread-156305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:48:09.255 [DEBUG] [Thread-156305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:48:09.255 [INFO] [Thread-156305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:48:09.258 [DEBUG] [Thread-156305] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] client lang: <none>
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] server lang: <none>
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] kex follows: False
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] Compression: none
2025-09-29T12:48:09.259 [DEBUG] [Thread-156305] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:48:09.275 [DEBUG] [Thread-156305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:48:09.275 [DEBUG] [Thread-156305] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:48:09.276 [DEBUG] [Thread-156305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:48:09.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:48:09.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:48:09.278 [DEBUG] [Thread-156305] [transport.py] [_log()] userauth is OK
2025-09-29T12:48:09.278 [DEBUG] [Thread-156305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:48:09.278 [DEBUG] [Thread-156305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:48:09.278 [DEBUG] [Thread-156305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:48:09.278 [DEBUG] [Thread-156305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:48:09.302 [INFO] [Thread-156305] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:48:09.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:48:09.941 [DEBUG] [Thread-156305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:48:09.941 [DEBUG] [Thread-156305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:48:09.942 [DEBUG] [Thread-156305] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:48:09.982 [DEBUG] [Thread-156305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:48:09.983 [DEBUG] [Thread-156305] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:48:09.985 [DEBUG] [Thread-156305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:48:09.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:48:09.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:48:10.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:48:10.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:48:10.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:48:10.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:48:10.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:48:10.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:48:10.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:48:10.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.449723 -999.00  +13.30   9.93     49   +3.00 1 1 1 1 1   888    0 10.67 8.09 ----- 8.6 9.9 118.2 17.5 21.9 -25.8 21.1 -25.8 21.4 -26.2 22.6 -27.3
2025-09-29T12:48:10.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:48:10.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:48:10.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.449723
2025-09-29T12:48:10.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:48:10.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:48:10.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:48:10.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:48:10.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:48:10.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:48:06', tmtdew=11.6, humidity=45.14, cloud=0.0, wind=13.41, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:47:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:48:10.011 [DEBUG] [Thread-156305] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:10.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:48:10.109 [DEBUG] [Thread-156308] [transport.py] [_log()] starting thread (client mode): 0x2b9cb340
2025-09-29T12:48:10.110 [DEBUG] [Thread-156308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:48:10.124 [DEBUG] [Thread-156308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:48:10.124 [INFO] [Thread-156308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] client lang: <none>
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] server lang: <none>
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] kex follows: False
2025-09-29T12:48:10.132 [DEBUG] [Thread-156308] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:48:10.133 [DEBUG] [Thread-156308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:48:10.133 [DEBUG] [Thread-156308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:48:10.133 [DEBUG] [Thread-156308] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:48:10.133 [DEBUG] [Thread-156308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:48:10.133 [DEBUG] [Thread-156308] [transport.py] [_log()] Compression: none
2025-09-29T12:48:10.133 [DEBUG] [Thread-156308] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:48:10.195 [DEBUG] [Thread-156308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:48:10.195 [DEBUG] [Thread-156308] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:48:10.196 [DEBUG] [Thread-156308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:48:10.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:48:10.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:48:10.251 [DEBUG] [Thread-156308] [transport.py] [_log()] userauth is OK
2025-09-29T12:48:10.251 [DEBUG] [Thread-156308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:48:10.251 [DEBUG] [Thread-156308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:48:10.251 [DEBUG] [Thread-156308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:48:10.251 [DEBUG] [Thread-156308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:48:10.270 [INFO] [Thread-156308] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:48:10.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:48:10.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:48:11.221 [DEBUG] [Thread-156308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:48:11.222 [DEBUG] [Thread-156308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:48:11.269 [DEBUG] [Thread-156308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:48:11.269 [DEBUG] [Thread-156308] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:48:11.278 [DEBUG] [Thread-156308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:48:11.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:48:11.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:48:11.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:48:11.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:48:11.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:48:11.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:48:11.313 [DEBUG] [Thread-156308] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:17.777 [DEBUG] [Thread-156310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:48:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:48:21.316 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:48:21.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:48:21.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 48, 6), 11.6, 45.14, 0.0, 13.41, 12.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:48:21.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:48:06
2025-09-29T12:48:22.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:48:22.177 [DEBUG] [Thread-156311] [transport.py] [_log()] starting thread (client mode): 0x2b9c8160
2025-09-29T12:48:22.178 [DEBUG] [Thread-156311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:48:22.197 [DEBUG] [Thread-156311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:48:22.197 [INFO] [Thread-156311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:48:22.201 [DEBUG] [Thread-156311] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:48:22.201 [DEBUG] [Thread-156311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:48:22.201 [DEBUG] [Thread-156311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:48:22.201 [DEBUG] [Thread-156311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:22.201 [DEBUG] [Thread-156311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:22.201 [DEBUG] [Thread-156311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:22.201 [DEBUG] [Thread-156311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] client lang: <none>
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] server lang: <none>
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] kex follows: False
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] Compression: none
2025-09-29T12:48:22.202 [DEBUG] [Thread-156311] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:48:22.222 [DEBUG] [Thread-156311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:48:22.222 [DEBUG] [Thread-156311] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:48:22.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:48:22.223 [DEBUG] [Thread-156311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:48:22.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:48:22.226 [DEBUG] [Thread-156311] [transport.py] [_log()] userauth is OK
2025-09-29T12:48:22.226 [DEBUG] [Thread-156311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:48:22.226 [DEBUG] [Thread-156311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:48:22.226 [DEBUG] [Thread-156311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:48:22.226 [DEBUG] [Thread-156311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:48:22.261 [INFO] [Thread-156311] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:48:22.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:48:22.839 [DEBUG] [Thread-156311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:48:22.839 [DEBUG] [Thread-156311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:48:22.840 [DEBUG] [Thread-156311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:48:22.880 [DEBUG] [Thread-156311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:48:22.880 [DEBUG] [Thread-156311] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:48:22.883 [DEBUG] [Thread-156311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:48:22.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:48:22.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:48:22.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:48:22.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:48:22.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:48:22.906 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:48:22.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:48:22.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:48:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:48:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.449723 -999.00  +13.30   9.93     49   +3.00 1 1 1 1 1   888    0 10.67 8.09 ----- 8.6 9.9 118.2 17.5 21.9 -25.8 21.1 -25.8 21.4 -26.2 22.6 -27.3
2025-09-29T12:48:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:48:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:48:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.449723
2025-09-29T12:48:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:48:22.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:48:22.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:48:22.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:48:22.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:48:22.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:48:06', tmtdew=11.6, humidity=45.14, cloud=0.0, wind=13.41, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:47:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:48:22.908 [DEBUG] [Thread-156311] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:22.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:48:23.003 [DEBUG] [Thread-156314] [transport.py] [_log()] starting thread (client mode): 0x2e3480d0
2025-09-29T12:48:23.003 [DEBUG] [Thread-156314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:48:23.017 [DEBUG] [Thread-156314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:48:23.017 [INFO] [Thread-156314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:48:23.025 [DEBUG] [Thread-156314] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:48:23.025 [DEBUG] [Thread-156314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:48:23.025 [DEBUG] [Thread-156314] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] client lang: <none>
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] server lang: <none>
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] kex follows: False
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] Compression: none
2025-09-29T12:48:23.026 [DEBUG] [Thread-156314] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:48:23.082 [DEBUG] [Thread-156314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:48:23.082 [DEBUG] [Thread-156314] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:48:23.083 [DEBUG] [Thread-156314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:48:23.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:48:23.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:48:23.139 [DEBUG] [Thread-156314] [transport.py] [_log()] userauth is OK
2025-09-29T12:48:23.139 [DEBUG] [Thread-156314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:48:23.139 [DEBUG] [Thread-156314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:48:23.139 [DEBUG] [Thread-156314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:48:23.139 [DEBUG] [Thread-156314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:48:23.158 [INFO] [Thread-156314] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:48:23.158 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:48:23.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:48:24.126 [DEBUG] [Thread-156314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:48:24.126 [DEBUG] [Thread-156314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:48:24.176 [DEBUG] [Thread-156314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:48:24.176 [DEBUG] [Thread-156314] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:48:24.187 [DEBUG] [Thread-156314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:48:24.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:48:24.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:48:24.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:48:24.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:48:24.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:48:24.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:48:24.222 [DEBUG] [Thread-156314] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:32.828 [DEBUG] [Thread-156316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:48:34.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:48:34.225 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:48:34.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:48:34.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 48, 6), 11.6, 45.14, 0.0, 13.41, 12.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:48:34.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:48:06
2025-09-29T12:48:34.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:48:35.067 [DEBUG] [Thread-156317] [transport.py] [_log()] starting thread (client mode): 0x2e349150
2025-09-29T12:48:35.067 [DEBUG] [Thread-156317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:48:35.086 [DEBUG] [Thread-156317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:48:35.086 [INFO] [Thread-156317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:48:35.089 [DEBUG] [Thread-156317] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] client lang: <none>
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] server lang: <none>
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] kex follows: False
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] Compression: none
2025-09-29T12:48:35.090 [DEBUG] [Thread-156317] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:48:35.106 [DEBUG] [Thread-156317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:48:35.107 [DEBUG] [Thread-156317] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:48:35.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:48:35.108 [DEBUG] [Thread-156317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:48:35.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:48:35.111 [DEBUG] [Thread-156317] [transport.py] [_log()] userauth is OK
2025-09-29T12:48:35.111 [DEBUG] [Thread-156317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:48:35.111 [DEBUG] [Thread-156317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:48:35.111 [DEBUG] [Thread-156317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:48:35.111 [DEBUG] [Thread-156317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:48:35.134 [INFO] [Thread-156317] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:48:35.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:48:35.800 [DEBUG] [Thread-156317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:48:35.800 [DEBUG] [Thread-156317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:48:35.801 [DEBUG] [Thread-156317] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:48:35.842 [DEBUG] [Thread-156317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:48:35.842 [DEBUG] [Thread-156317] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:48:35.845 [DEBUG] [Thread-156317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:48:35.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:48:35.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:48:35.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:48:35.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:48:35.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:48:35.869 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:48:35.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:48:35.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:48:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:48:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.450070 -999.00  +13.30  10.97     50   +3.10 1 1 1 1 1   888    0 10.43 6.61 ----- 11.7 11.0 113.8 17.4 21.9 -29.1 21.1 -25.8 21.4 -27.5 22.7 -27.0
2025-09-29T12:48:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:48:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:48:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.450070
2025-09-29T12:48:35.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:48:35.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:48:35.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:48:35.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:48:35.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:48:35.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:48:06', tmtdew=11.6, humidity=45.14, cloud=0.0, wind=13.41, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:48:06.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:48:35.872 [DEBUG] [Thread-156317] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:35.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:48:35.967 [DEBUG] [Thread-156320] [transport.py] [_log()] starting thread (client mode): 0x28706710
2025-09-29T12:48:35.968 [DEBUG] [Thread-156320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:48:35.982 [DEBUG] [Thread-156320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:48:35.982 [INFO] [Thread-156320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:48:35.989 [DEBUG] [Thread-156320] [transport.py] [_log()] client lang: <none>
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] server lang: <none>
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] kex follows: False
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] Compression: none
2025-09-29T12:48:35.990 [DEBUG] [Thread-156320] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:48:36.053 [DEBUG] [Thread-156320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:48:36.053 [DEBUG] [Thread-156320] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:48:36.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:48:36.054 [DEBUG] [Thread-156320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:48:36.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:48:36.111 [DEBUG] [Thread-156320] [transport.py] [_log()] userauth is OK
2025-09-29T12:48:36.111 [DEBUG] [Thread-156320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:48:36.112 [DEBUG] [Thread-156320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:48:36.112 [DEBUG] [Thread-156320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:48:36.112 [DEBUG] [Thread-156320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:48:36.130 [INFO] [Thread-156320] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:48:36.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:48:36.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:48:37.076 [DEBUG] [Thread-156320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:48:37.076 [DEBUG] [Thread-156320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:48:37.123 [DEBUG] [Thread-156320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:48:37.123 [DEBUG] [Thread-156320] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:48:37.132 [DEBUG] [Thread-156320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:48:37.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:48:37.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:48:37.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:48:37.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:48:37.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:48:37.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:48:37.167 [DEBUG] [Thread-156320] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:40.132 [DEBUG] [Thread-156322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:48:47.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:48:47.169 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:48:47.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:48:47.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 48, 38), 11.48, 45.71, 0.0, 12.53, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:48:47.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:48:38
2025-09-29T12:48:47.854 [DEBUG] [Thread-156323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:48:47.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:48:48.016 [DEBUG] [Thread-156324] [transport.py] [_log()] starting thread (client mode): 0x28704ca0
2025-09-29T12:48:48.016 [DEBUG] [Thread-156324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:48:48.037 [DEBUG] [Thread-156324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:48:48.037 [INFO] [Thread-156324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:48:48.050 [DEBUG] [Thread-156324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:48:48.051 [DEBUG] [Thread-156324] [transport.py] [_log()] client lang: <none>
2025-09-29T12:48:48.052 [DEBUG] [Thread-156324] [transport.py] [_log()] server lang: <none>
2025-09-29T12:48:48.052 [DEBUG] [Thread-156324] [transport.py] [_log()] kex follows: False
2025-09-29T12:48:48.052 [DEBUG] [Thread-156324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:48:48.052 [DEBUG] [Thread-156324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:48:48.052 [DEBUG] [Thread-156324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:48:48.052 [DEBUG] [Thread-156324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:48:48.052 [DEBUG] [Thread-156324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:48:48.052 [DEBUG] [Thread-156324] [transport.py] [_log()] Compression: none
2025-09-29T12:48:48.053 [DEBUG] [Thread-156324] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:48:48.063 [DEBUG] [Thread-156324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:48:48.064 [DEBUG] [Thread-156324] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:48:48.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:48:48.065 [DEBUG] [Thread-156324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:48:48.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:48:48.066 [DEBUG] [Thread-156324] [transport.py] [_log()] userauth is OK
2025-09-29T12:48:48.066 [DEBUG] [Thread-156324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:48:48.066 [DEBUG] [Thread-156324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:48:48.066 [DEBUG] [Thread-156324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:48:48.066 [DEBUG] [Thread-156324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:48:48.101 [INFO] [Thread-156324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:48:48.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:48:48.758 [DEBUG] [Thread-156324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:48:48.758 [DEBUG] [Thread-156324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:48:48.758 [DEBUG] [Thread-156324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:48:48.799 [DEBUG] [Thread-156324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:48:48.799 [DEBUG] [Thread-156324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:48:48.801 [DEBUG] [Thread-156324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:48:48.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:48:48.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:48:48.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:48:48.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:48:48.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:48:48.817 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:48:48.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:48:48.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:48:48.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:48:48.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.450070 -999.00  +13.30  10.97     50   +3.10 1 1 1 1 1   888    0 10.43 6.61 ----- 11.7 11.0 113.8 17.4 21.9 -29.1 21.1 -25.8 21.4 -27.5 22.7 -27.0
2025-09-29T12:48:48.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:48:48.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:48:48.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.450070
2025-09-29T12:48:48.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:48:48.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:48:48.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:48:48.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:48:48.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:48:48.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:48:38', tmtdew=11.48, humidity=45.71, cloud=0.0, wind=12.53, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:48:06.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:48:48.818 [DEBUG] [Thread-156324] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:48.893 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:48:48.902 [DEBUG] [Thread-156327] [transport.py] [_log()] starting thread (client mode): 0x2b9cad40
2025-09-29T12:48:48.902 [DEBUG] [Thread-156327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:48:48.917 [DEBUG] [Thread-156327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:48:48.917 [INFO] [Thread-156327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:48:48.924 [DEBUG] [Thread-156327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] client lang: <none>
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] server lang: <none>
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] kex follows: False
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] Compression: none
2025-09-29T12:48:48.925 [DEBUG] [Thread-156327] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:48:48.987 [DEBUG] [Thread-156327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:48:48.987 [DEBUG] [Thread-156327] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:48:48.988 [DEBUG] [Thread-156327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:48:48.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:48:48.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:48:49.043 [DEBUG] [Thread-156327] [transport.py] [_log()] userauth is OK
2025-09-29T12:48:49.043 [DEBUG] [Thread-156327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:48:49.043 [DEBUG] [Thread-156327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:48:49.043 [DEBUG] [Thread-156327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:48:49.043 [DEBUG] [Thread-156327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:48:49.062 [INFO] [Thread-156327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:48:49.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:48:49.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:48:50.091 [DEBUG] [Thread-156327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:48:50.091 [DEBUG] [Thread-156327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:48:50.139 [DEBUG] [Thread-156327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:48:50.139 [DEBUG] [Thread-156327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:48:50.147 [DEBUG] [Thread-156327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:48:50.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:48:50.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:48:50.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:48:50.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:48:50.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:48:50.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:48:50.181 [DEBUG] [Thread-156327] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:48:50.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:48:50.186 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:49:00.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:49:00.184 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:49:00.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:49:00.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 48, 38), 11.48, 45.71, 0.0, 12.53, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:49:00.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:48:38
2025-09-29T12:49:00.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:49:01.030 [DEBUG] [Thread-156329] [transport.py] [_log()] starting thread (client mode): 0x2b957fd0
2025-09-29T12:49:01.030 [DEBUG] [Thread-156329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:01.050 [DEBUG] [Thread-156329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:49:01.050 [INFO] [Thread-156329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:49:01.053 [DEBUG] [Thread-156329] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:01.053 [DEBUG] [Thread-156329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:49:01.053 [DEBUG] [Thread-156329] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:01.053 [DEBUG] [Thread-156329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:01.053 [DEBUG] [Thread-156329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:01.053 [DEBUG] [Thread-156329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] Compression: none
2025-09-29T12:49:01.054 [DEBUG] [Thread-156329] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:01.072 [DEBUG] [Thread-156329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:01.073 [DEBUG] [Thread-156329] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:01.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:49:01.074 [DEBUG] [Thread-156329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:49:01.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:01.075 [DEBUG] [Thread-156329] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:01.076 [DEBUG] [Thread-156329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:01.076 [DEBUG] [Thread-156329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:01.076 [DEBUG] [Thread-156329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:49:01.076 [DEBUG] [Thread-156329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:01.112 [INFO] [Thread-156329] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:01.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:01.753 [DEBUG] [Thread-156329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:01.754 [DEBUG] [Thread-156329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:01.754 [DEBUG] [Thread-156329] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:49:01.794 [DEBUG] [Thread-156329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:01.794 [DEBUG] [Thread-156329] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:01.797 [DEBUG] [Thread-156329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:01.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:01.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:49:01.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:49:01.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:49:01.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:01.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:49:01.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:01.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:01.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:49:01.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.450417 -999.00  +13.10  14.03     49   +2.90 1 1 1 1 1   888    0 10.47 5.75 ----- 12.6 14.0 136.8 18.2 21.9 -25.9 21.1 -26.6 21.6 -26.0 22.7 -26.6
2025-09-29T12:49:01.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:49:01.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:49:01.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.450417
2025-09-29T12:49:01.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:49:01.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:49:01.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:49:01.820 [DEBUG] [Thread-156329] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:01.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:49:01.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:49:01.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:48:38', tmtdew=11.48, humidity=45.71, cloud=0.0, wind=12.53, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:48:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:49:01.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:49:01.921 [DEBUG] [Thread-156332] [transport.py] [_log()] starting thread (client mode): 0x2e38ce20
2025-09-29T12:49:01.922 [DEBUG] [Thread-156332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:01.937 [DEBUG] [Thread-156332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:49:01.937 [INFO] [Thread-156332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:49:01.944 [DEBUG] [Thread-156332] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:01.944 [DEBUG] [Thread-156332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] Compression: none
2025-09-29T12:49:01.945 [DEBUG] [Thread-156332] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:02.006 [DEBUG] [Thread-156332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:02.007 [DEBUG] [Thread-156332] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:02.007 [DEBUG] [Thread-156332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:49:02.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:49:02.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:02.063 [DEBUG] [Thread-156332] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:02.063 [DEBUG] [Thread-156332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:02.063 [DEBUG] [Thread-156332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:02.063 [DEBUG] [Thread-156332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:49:02.063 [DEBUG] [Thread-156332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:02.081 [INFO] [Thread-156332] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:02.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:49:02.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:02.892 [DEBUG] [Thread-156334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:49:03.149 [DEBUG] [Thread-156332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:03.149 [DEBUG] [Thread-156332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:03.197 [DEBUG] [Thread-156332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:03.197 [DEBUG] [Thread-156332] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:03.206 [DEBUG] [Thread-156332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:03.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:03.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:49:03.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:49:03.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:03.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:03.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:03.252 [DEBUG] [Thread-156332] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:13.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:49:13.251 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:49:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:49:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 49, 10), 11.69, 45.11, 0.0, 16.66, 13.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:49:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:49:10
2025-09-29T12:49:13.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:49:14.094 [DEBUG] [Thread-156335] [transport.py] [_log()] starting thread (client mode): 0x2e348040
2025-09-29T12:49:14.094 [DEBUG] [Thread-156335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:14.114 [DEBUG] [Thread-156335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:49:14.114 [INFO] [Thread-156335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:49:14.117 [DEBUG] [Thread-156335] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:14.117 [DEBUG] [Thread-156335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] Compression: none
2025-09-29T12:49:14.118 [DEBUG] [Thread-156335] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:14.127 [DEBUG] [Thread-156335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:14.127 [DEBUG] [Thread-156335] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:14.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:49:14.128 [DEBUG] [Thread-156335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:49:14.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:14.130 [DEBUG] [Thread-156335] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:14.130 [DEBUG] [Thread-156335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:14.130 [DEBUG] [Thread-156335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:14.130 [DEBUG] [Thread-156335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:49:14.130 [DEBUG] [Thread-156335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:14.154 [INFO] [Thread-156335] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:14.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:14.815 [DEBUG] [Thread-156335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:14.816 [DEBUG] [Thread-156335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:14.816 [DEBUG] [Thread-156335] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:49:14.856 [DEBUG] [Thread-156335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:14.857 [DEBUG] [Thread-156335] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:14.860 [DEBUG] [Thread-156335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:14.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:14.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:49:14.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:49:14.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:49:14.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:14.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:49:14.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:14.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:14.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:49:14.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.450417 -999.00  +13.10  14.03     49   +2.90 1 1 1 1 1   888    0 10.47 5.75 ----- 12.6 14.0 136.8 18.2 21.9 -25.9 21.1 -26.6 21.6 -26.0 22.7 -26.6
2025-09-29T12:49:14.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:49:14.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:49:14.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.450417
2025-09-29T12:49:14.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:49:14.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:49:14.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:49:14.886 [DEBUG] [Thread-156335] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:14.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:49:14.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:49:14.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:49:10', tmtdew=11.69, humidity=45.11, cloud=0.0, wind=16.66, temperature=13.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:48:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:49:14.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:49:14.982 [DEBUG] [Thread-156338] [transport.py] [_log()] starting thread (client mode): 0x2b91ef20
2025-09-29T12:49:14.982 [DEBUG] [Thread-156338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:14.999 [DEBUG] [Thread-156338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:49:14.999 [INFO] [Thread-156338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:15.006 [DEBUG] [Thread-156338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] Compression: none
2025-09-29T12:49:15.007 [DEBUG] [Thread-156338] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:15.063 [DEBUG] [Thread-156338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:15.063 [DEBUG] [Thread-156338] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:15.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:49:15.064 [DEBUG] [Thread-156338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:49:15.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:15.119 [DEBUG] [Thread-156338] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:15.119 [DEBUG] [Thread-156338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:15.119 [DEBUG] [Thread-156338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:15.119 [DEBUG] [Thread-156338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:49:15.119 [DEBUG] [Thread-156338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:15.139 [INFO] [Thread-156338] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:15.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:49:15.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:16.131 [DEBUG] [Thread-156338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:16.131 [DEBUG] [Thread-156338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:16.179 [DEBUG] [Thread-156338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:16.179 [DEBUG] [Thread-156338] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:16.188 [DEBUG] [Thread-156338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:16.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:16.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:49:16.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:49:16.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:16.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:16.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:16.223 [DEBUG] [Thread-156338] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:17.937 [DEBUG] [Thread-156340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:49:26.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:49:26.226 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:49:26.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:49:26.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 49, 10), 11.69, 45.11, 0.0, 16.66, 13.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:49:26.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:49:10
2025-09-29T12:49:26.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:49:27.062 [DEBUG] [Thread-156341] [transport.py] [_log()] starting thread (client mode): 0x2b91ff40
2025-09-29T12:49:27.062 [DEBUG] [Thread-156341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:27.084 [DEBUG] [Thread-156341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:49:27.084 [INFO] [Thread-156341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:27.087 [DEBUG] [Thread-156341] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:27.088 [DEBUG] [Thread-156341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:27.088 [DEBUG] [Thread-156341] [transport.py] [_log()] Compression: none
2025-09-29T12:49:27.088 [DEBUG] [Thread-156341] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:27.104 [DEBUG] [Thread-156341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:27.104 [DEBUG] [Thread-156341] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:27.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:49:27.105 [DEBUG] [Thread-156341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:49:27.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:27.107 [DEBUG] [Thread-156341] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:27.107 [DEBUG] [Thread-156341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:27.107 [DEBUG] [Thread-156341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:27.107 [DEBUG] [Thread-156341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:49:27.107 [DEBUG] [Thread-156341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:27.121 [INFO] [Thread-156341] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:27.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:27.712 [DEBUG] [Thread-156341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:27.712 [DEBUG] [Thread-156341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:27.712 [DEBUG] [Thread-156341] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:49:27.753 [DEBUG] [Thread-156341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:27.753 [DEBUG] [Thread-156341] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:27.756 [DEBUG] [Thread-156341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:27.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:27.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:49:27.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:49:27.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:49:27.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:27.780 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:49:27.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:27.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:27.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:49:27.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.450417 -999.00  +13.10  14.03     49   +2.90 1 1 1 1 1   888    0 10.47 5.75 ----- 12.6 14.0 136.8 18.2 21.9 -25.9 21.1 -26.6 21.6 -26.0 22.7 -26.6
2025-09-29T12:49:27.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:49:27.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:49:27.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.450417
2025-09-29T12:49:27.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:49:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:49:27.783 [DEBUG] [Thread-156341] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:49:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:49:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:49:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:49:10', tmtdew=11.69, humidity=45.11, cloud=0.0, wind=16.66, temperature=13.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:48:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:49:27.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:49:27.879 [DEBUG] [Thread-156344] [transport.py] [_log()] starting thread (client mode): 0x2b957c70
2025-09-29T12:49:27.879 [DEBUG] [Thread-156344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:27.895 [DEBUG] [Thread-156344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:49:27.895 [INFO] [Thread-156344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:49:27.903 [DEBUG] [Thread-156344] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:27.903 [DEBUG] [Thread-156344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:27.904 [DEBUG] [Thread-156344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:27.905 [DEBUG] [Thread-156344] [transport.py] [_log()] Compression: none
2025-09-29T12:49:27.905 [DEBUG] [Thread-156344] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:27.961 [DEBUG] [Thread-156344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:27.961 [DEBUG] [Thread-156344] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:27.962 [DEBUG] [Thread-156344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:49:27.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:49:27.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:28.022 [DEBUG] [Thread-156344] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:28.022 [DEBUG] [Thread-156344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:28.022 [DEBUG] [Thread-156344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:28.022 [DEBUG] [Thread-156344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:49:28.022 [DEBUG] [Thread-156344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:28.044 [INFO] [Thread-156344] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:28.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:49:28.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:29.061 [DEBUG] [Thread-156344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:29.061 [DEBUG] [Thread-156344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:29.113 [DEBUG] [Thread-156344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:29.113 [DEBUG] [Thread-156344] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:29.125 [DEBUG] [Thread-156344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:29.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:29.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:49:29.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:49:29.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:29.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:29.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:29.172 [DEBUG] [Thread-156344] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:32.972 [DEBUG] [Thread-156346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:49:39.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:49:39.171 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:49:39.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:49:39.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 49, 10), 11.69, 45.11, 0.0, 16.66, 13.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:49:39.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:49:10
2025-09-29T12:49:39.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:49:39.998 [DEBUG] [Thread-156347] [transport.py] [_log()] starting thread (client mode): 0x2b91f670
2025-09-29T12:49:39.998 [DEBUG] [Thread-156347] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:40.019 [DEBUG] [Thread-156347] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:49:40.019 [INFO] [Thread-156347] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:49:40.020 [DEBUG] [Thread-156347] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:40.020 [DEBUG] [Thread-156347] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:49:40.020 [DEBUG] [Thread-156347] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] Compression: none
2025-09-29T12:49:40.021 [DEBUG] [Thread-156347] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:40.029 [DEBUG] [Thread-156347] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:40.029 [DEBUG] [Thread-156347] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:40.030 [DEBUG] [Thread-156347] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:49:40.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:49:40.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:40.031 [DEBUG] [Thread-156347] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:40.031 [DEBUG] [Thread-156347] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:40.031 [DEBUG] [Thread-156347] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:40.031 [DEBUG] [Thread-156347] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:49:40.031 [DEBUG] [Thread-156347] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:40.055 [INFO] [Thread-156347] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:40.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:40.186 [DEBUG] [Thread-156349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:49:40.664 [DEBUG] [Thread-156347] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:40.664 [DEBUG] [Thread-156347] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:40.664 [DEBUG] [Thread-156347] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:49:40.705 [DEBUG] [Thread-156347] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:40.705 [DEBUG] [Thread-156347] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:40.707 [DEBUG] [Thread-156347] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:40.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:40.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:49:40.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:49:40.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:49:40.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:40.727 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:49:40.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:40.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:49:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.450764 -999.00  +13.00  10.32     50   +2.90 1 1 1 1 1   888    0 10.37 3.87 ----- 7.4 10.3 117.0 16.3 21.9 -26.2 21.2 -25.8 21.6 -26.5 22.6 -26.8
2025-09-29T12:49:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:49:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:49:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.450764
2025-09-29T12:49:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:49:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:49:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:49:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:49:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:49:40.729 [DEBUG] [Thread-156347] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:49:10', tmtdew=11.69, humidity=45.11, cloud=0.0, wind=16.66, temperature=13.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:49:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:49:40.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:49:40.826 [DEBUG] [Thread-156351] [transport.py] [_log()] starting thread (client mode): 0x2e3c28f0
2025-09-29T12:49:40.827 [DEBUG] [Thread-156351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:40.841 [DEBUG] [Thread-156351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:49:40.841 [INFO] [Thread-156351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:49:40.849 [DEBUG] [Thread-156351] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:40.849 [DEBUG] [Thread-156351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:49:40.849 [DEBUG] [Thread-156351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:40.849 [DEBUG] [Thread-156351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:40.849 [DEBUG] [Thread-156351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:40.849 [DEBUG] [Thread-156351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:40.849 [DEBUG] [Thread-156351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:40.850 [DEBUG] [Thread-156351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:40.850 [DEBUG] [Thread-156351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:40.850 [DEBUG] [Thread-156351] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:40.850 [DEBUG] [Thread-156351] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:40.850 [DEBUG] [Thread-156351] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:40.850 [DEBUG] [Thread-156351] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:40.850 [DEBUG] [Thread-156351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:40.850 [DEBUG] [Thread-156351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:40.851 [DEBUG] [Thread-156351] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:40.851 [DEBUG] [Thread-156351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:40.851 [DEBUG] [Thread-156351] [transport.py] [_log()] Compression: none
2025-09-29T12:49:40.851 [DEBUG] [Thread-156351] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:40.909 [DEBUG] [Thread-156351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:40.909 [DEBUG] [Thread-156351] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:40.910 [DEBUG] [Thread-156351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:49:40.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:49:40.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:40.967 [DEBUG] [Thread-156351] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:40.967 [DEBUG] [Thread-156351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:40.968 [DEBUG] [Thread-156351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:40.968 [DEBUG] [Thread-156351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:49:40.968 [DEBUG] [Thread-156351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:40.988 [INFO] [Thread-156351] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:40.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:49:40.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:42.092 [DEBUG] [Thread-156351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:42.092 [DEBUG] [Thread-156351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:42.140 [DEBUG] [Thread-156351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:42.140 [DEBUG] [Thread-156351] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:42.149 [DEBUG] [Thread-156351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:42.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:42.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:49:42.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:49:42.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:42.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:42.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:42.184 [DEBUG] [Thread-156351] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:48.005 [DEBUG] [Thread-156353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:49:50.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:49:50.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:49:52.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:49:52.184 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:49:52.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:49:52.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 49, 42), 11.82, 44.76, 0.0, 12.3, 13.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:49:52.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:49:42
2025-09-29T12:49:52.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:49:53.029 [DEBUG] [Thread-156354] [transport.py] [_log()] starting thread (client mode): 0x2e38d0c0
2025-09-29T12:49:53.029 [DEBUG] [Thread-156354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:53.039 [DEBUG] [Thread-156354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:49:53.040 [INFO] [Thread-156354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] Compression: none
2025-09-29T12:49:53.041 [DEBUG] [Thread-156354] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:53.055 [DEBUG] [Thread-156354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:53.055 [DEBUG] [Thread-156354] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:53.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:49:53.055 [DEBUG] [Thread-156354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:49:53.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:53.057 [DEBUG] [Thread-156354] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:53.057 [DEBUG] [Thread-156354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:53.057 [DEBUG] [Thread-156354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:53.057 [DEBUG] [Thread-156354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:49:53.057 [DEBUG] [Thread-156354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:53.072 [INFO] [Thread-156354] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:53.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:53.786 [DEBUG] [Thread-156354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:53.786 [DEBUG] [Thread-156354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:53.787 [DEBUG] [Thread-156354] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:49:53.827 [DEBUG] [Thread-156354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:53.827 [DEBUG] [Thread-156354] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:53.830 [DEBUG] [Thread-156354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:53.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:53.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:49:53.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:49:53.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:49:53.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:53.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:49:53.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:53.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:49:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.450764 -999.00  +13.00  10.32     50   +2.90 1 1 1 1 1   888    0 10.37 3.87 ----- 7.4 10.3 117.0 16.3 21.9 -26.2 21.2 -25.8 21.6 -26.5 22.6 -26.8
2025-09-29T12:49:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:49:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:49:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.450764
2025-09-29T12:49:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:49:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:49:53.852 [DEBUG] [Thread-156354] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:49:53.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:49:53.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:49:53.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:49:53.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:49:42', tmtdew=11.82, humidity=44.76, cloud=0.0, wind=12.3, temperature=13.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:49:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:49:53.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:49:53.945 [DEBUG] [Thread-156357] [transport.py] [_log()] starting thread (client mode): 0x2b91fd30
2025-09-29T12:49:53.945 [DEBUG] [Thread-156357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:49:53.960 [DEBUG] [Thread-156357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:49:53.960 [INFO] [Thread-156357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:49:53.967 [DEBUG] [Thread-156357] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:49:53.968 [DEBUG] [Thread-156357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:49:53.968 [DEBUG] [Thread-156357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:49:53.968 [DEBUG] [Thread-156357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:53.968 [DEBUG] [Thread-156357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:49:53.968 [DEBUG] [Thread-156357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:53.968 [DEBUG] [Thread-156357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:49:53.968 [DEBUG] [Thread-156357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:49:53.968 [DEBUG] [Thread-156357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] client lang: <none>
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] server lang: <none>
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] kex follows: False
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:49:53.969 [DEBUG] [Thread-156357] [transport.py] [_log()] Compression: none
2025-09-29T12:49:53.970 [DEBUG] [Thread-156357] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:49:54.027 [DEBUG] [Thread-156357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:49:54.028 [DEBUG] [Thread-156357] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:49:54.029 [DEBUG] [Thread-156357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:49:54.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:49:54.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:49:54.083 [DEBUG] [Thread-156357] [transport.py] [_log()] userauth is OK
2025-09-29T12:49:54.084 [DEBUG] [Thread-156357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:49:54.084 [DEBUG] [Thread-156357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:49:54.084 [DEBUG] [Thread-156357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:49:54.084 [DEBUG] [Thread-156357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:49:54.102 [INFO] [Thread-156357] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:49:54.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:49:54.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:49:55.024 [DEBUG] [Thread-156357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:49:55.025 [DEBUG] [Thread-156357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:49:55.072 [DEBUG] [Thread-156357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:49:55.072 [DEBUG] [Thread-156357] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:49:55.081 [DEBUG] [Thread-156357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:49:55.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:49:55.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:49:55.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:49:55.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:49:55.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:49:55.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:49:55.115 [DEBUG] [Thread-156357] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:50:03.054 [DEBUG] [Thread-156359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:50:05.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:50:05.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:50:05.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:50:05.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 49, 42), 11.82, 44.76, 0.0, 12.3, 13.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:50:05.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:49:42
2025-09-29T12:50:05.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:50:05.944 [DEBUG] [Thread-156360] [transport.py] [_log()] starting thread (client mode): 0x2b91f4f0
2025-09-29T12:50:05.944 [DEBUG] [Thread-156360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:50:05.964 [DEBUG] [Thread-156360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:50:05.964 [INFO] [Thread-156360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:50:05.966 [DEBUG] [Thread-156360] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:50:05.966 [DEBUG] [Thread-156360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:50:05.966 [DEBUG] [Thread-156360] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:50:05.966 [DEBUG] [Thread-156360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:05.966 [DEBUG] [Thread-156360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:05.966 [DEBUG] [Thread-156360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:05.966 [DEBUG] [Thread-156360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] client lang: <none>
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] server lang: <none>
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] kex follows: False
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] Compression: none
2025-09-29T12:50:05.967 [DEBUG] [Thread-156360] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:50:05.981 [DEBUG] [Thread-156360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:50:05.982 [DEBUG] [Thread-156360] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:50:05.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:50:05.983 [DEBUG] [Thread-156360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:50:05.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:50:05.984 [DEBUG] [Thread-156360] [transport.py] [_log()] userauth is OK
2025-09-29T12:50:05.984 [DEBUG] [Thread-156360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:50:05.984 [DEBUG] [Thread-156360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:50:05.985 [DEBUG] [Thread-156360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:50:05.985 [DEBUG] [Thread-156360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:50:06.002 [INFO] [Thread-156360] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:50:06.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:50:11.026 [DEBUG] [Thread-156360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:50:11.026 [DEBUG] [Thread-156360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:50:11.026 [DEBUG] [Thread-156360] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:50:11.067 [DEBUG] [Thread-156360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:50:11.067 [DEBUG] [Thread-156360] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:50:11.070 [DEBUG] [Thread-156360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:50:11.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:50:11.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:50:11.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:50:11.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:50:11.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:50:11.107 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:50:11.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:50:11.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:50:11.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:50:11.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.450764 -999.00  +13.00  10.32     50   +2.90 1 1 1 1 1   888    0 10.37 3.87 ----- 7.4 10.3 117.0 16.3 21.9 -26.2 21.2 -25.8 21.6 -26.5 22.6 -26.8
2025-09-29T12:50:11.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:50:11.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:50:11.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.450764
2025-09-29T12:50:11.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:50:11.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:50:11.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:50:11.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:50:11.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:50:11.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:49:42', tmtdew=11.82, humidity=44.76, cloud=0.0, wind=12.3, temperature=13.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:49:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:50:11.110 [DEBUG] [Thread-156360] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:50:11.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:50:11.207 [DEBUG] [Thread-156363] [transport.py] [_log()] starting thread (client mode): 0x2b9ae4d0
2025-09-29T12:50:11.207 [DEBUG] [Thread-156363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:50:11.223 [DEBUG] [Thread-156363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:50:11.223 [INFO] [Thread-156363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:50:11.230 [DEBUG] [Thread-156363] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] client lang: <none>
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] server lang: <none>
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] kex follows: False
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] Compression: none
2025-09-29T12:50:11.231 [DEBUG] [Thread-156363] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:50:11.287 [DEBUG] [Thread-156363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:50:11.287 [DEBUG] [Thread-156363] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:50:11.288 [DEBUG] [Thread-156363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:50:11.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:50:11.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:50:11.343 [DEBUG] [Thread-156363] [transport.py] [_log()] userauth is OK
2025-09-29T12:50:11.343 [DEBUG] [Thread-156363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:50:11.344 [DEBUG] [Thread-156363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:50:11.344 [DEBUG] [Thread-156363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:50:11.344 [DEBUG] [Thread-156363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:50:11.363 [INFO] [Thread-156363] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:50:11.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:50:11.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:50:12.398 [DEBUG] [Thread-156363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:50:12.399 [DEBUG] [Thread-156363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:50:12.446 [DEBUG] [Thread-156363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:50:12.446 [DEBUG] [Thread-156363] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:50:12.455 [DEBUG] [Thread-156363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:50:12.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:50:12.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:50:12.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:50:12.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:50:12.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:50:12.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:50:12.490 [DEBUG] [Thread-156363] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:50:18.099 [DEBUG] [Thread-156365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:50:22.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:50:22.494 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:50:22.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:50:23.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 50, 13), 11.7, 45.09, 0.0, 12.65, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:50:23.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:50:13
2025-09-29T12:50:23.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:50:23.336 [DEBUG] [Thread-156366] [transport.py] [_log()] starting thread (client mode): 0x2b91c730
2025-09-29T12:50:23.337 [DEBUG] [Thread-156366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:50:23.352 [DEBUG] [Thread-156366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:50:23.352 [INFO] [Thread-156366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:50:23.355 [DEBUG] [Thread-156366] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] client lang: <none>
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] server lang: <none>
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] kex follows: False
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] Compression: none
2025-09-29T12:50:23.356 [DEBUG] [Thread-156366] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:50:23.368 [DEBUG] [Thread-156366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:50:23.369 [DEBUG] [Thread-156366] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:50:23.369 [DEBUG] [Thread-156366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:50:23.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:50:23.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:50:23.371 [DEBUG] [Thread-156366] [transport.py] [_log()] userauth is OK
2025-09-29T12:50:23.371 [DEBUG] [Thread-156366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:50:23.371 [DEBUG] [Thread-156366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:50:23.371 [DEBUG] [Thread-156366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:50:23.371 [DEBUG] [Thread-156366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:50:23.391 [INFO] [Thread-156366] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:50:23.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:50:23.993 [DEBUG] [Thread-156366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:50:23.993 [DEBUG] [Thread-156366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:50:23.994 [DEBUG] [Thread-156366] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:50:24.034 [DEBUG] [Thread-156366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:50:24.035 [DEBUG] [Thread-156366] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:50:24.038 [DEBUG] [Thread-156366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:50:24.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:50:24.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:50:24.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:50:24.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:50:24.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:50:24.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:50:24.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:50:24.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:50:24.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:50:24.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.451112 -999.00  +13.20   9.78     50   +3.10 1 1 1 1 1   888    0 10.08 3.16 ----- 9.1 9.8 142.6 14.4 22.0 -25.1 21.3 -25.6 21.7 -24.9 22.9 -25.6
2025-09-29T12:50:24.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:50:24.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:50:24.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.451112
2025-09-29T12:50:24.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:50:24.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:50:24.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:50:24.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:50:24.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:50:24.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:50:13', tmtdew=11.7, humidity=45.09, cloud=0.0, wind=12.65, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:49:36.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:50:24.063 [DEBUG] [Thread-156366] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:50:24.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:50:24.157 [DEBUG] [Thread-156369] [transport.py] [_log()] starting thread (client mode): 0x2b91fc40
2025-09-29T12:50:24.157 [DEBUG] [Thread-156369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:50:24.171 [DEBUG] [Thread-156369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:50:24.171 [INFO] [Thread-156369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:50:24.179 [DEBUG] [Thread-156369] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:50:24.179 [DEBUG] [Thread-156369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:50:24.179 [DEBUG] [Thread-156369] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:50:24.179 [DEBUG] [Thread-156369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:24.179 [DEBUG] [Thread-156369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] client lang: <none>
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] server lang: <none>
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] kex follows: False
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:50:24.180 [DEBUG] [Thread-156369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:50:24.181 [DEBUG] [Thread-156369] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:50:24.181 [DEBUG] [Thread-156369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:50:24.181 [DEBUG] [Thread-156369] [transport.py] [_log()] Compression: none
2025-09-29T12:50:24.181 [DEBUG] [Thread-156369] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:50:24.239 [DEBUG] [Thread-156369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:50:24.239 [DEBUG] [Thread-156369] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:50:24.240 [DEBUG] [Thread-156369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:50:24.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:50:24.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:50:24.295 [DEBUG] [Thread-156369] [transport.py] [_log()] userauth is OK
2025-09-29T12:50:24.295 [DEBUG] [Thread-156369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:50:24.295 [DEBUG] [Thread-156369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:50:24.296 [DEBUG] [Thread-156369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:50:24.296 [DEBUG] [Thread-156369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:50:24.319 [INFO] [Thread-156369] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:50:24.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:50:24.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:50:25.239 [DEBUG] [Thread-156369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:50:25.239 [DEBUG] [Thread-156369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:50:25.292 [DEBUG] [Thread-156369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:50:25.292 [DEBUG] [Thread-156369] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:50:25.307 [DEBUG] [Thread-156369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:50:25.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:50:25.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:50:25.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:50:25.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:50:25.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:50:25.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:50:25.349 [DEBUG] [Thread-156369] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:50:33.132 [DEBUG] [Thread-156371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:50:35.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:50:35.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:50:35.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:50:35.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 50, 13), 11.7, 45.09, 0.0, 12.65, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:50:35.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:50:13
2025-09-29T12:50:36.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:50:36.221 [DEBUG] [Thread-156372] [transport.py] [_log()] starting thread (client mode): 0x2e348280
2025-09-29T12:50:36.221 [DEBUG] [Thread-156372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:50:36.240 [DEBUG] [Thread-156372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:50:36.241 [INFO] [Thread-156372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] client lang: <none>
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] server lang: <none>
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] kex follows: False
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] Compression: none
2025-09-29T12:50:36.244 [DEBUG] [Thread-156372] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:50:36.259 [DEBUG] [Thread-156372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:50:36.259 [DEBUG] [Thread-156372] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:50:36.259 [DEBUG] [Thread-156372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:50:36.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:50:36.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:50:36.260 [DEBUG] [Thread-156372] [transport.py] [_log()] userauth is OK
2025-09-29T12:50:36.260 [DEBUG] [Thread-156372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:50:36.260 [DEBUG] [Thread-156372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:50:36.260 [DEBUG] [Thread-156372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:50:36.260 [DEBUG] [Thread-156372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:50:36.269 [INFO] [Thread-156372] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:50:36.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:50:37.032 [DEBUG] [Thread-156372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:50:37.032 [DEBUG] [Thread-156372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:50:37.033 [DEBUG] [Thread-156372] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:50:37.073 [DEBUG] [Thread-156372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:50:37.073 [DEBUG] [Thread-156372] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:50:37.075 [DEBUG] [Thread-156372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:50:37.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:50:37.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:50:37.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:50:37.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:50:37.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:50:37.091 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:50:37.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:50:37.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:50:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:50:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.451112 -999.00  +13.20   9.78     50   +3.10 1 1 1 1 1   888    0 10.08 3.16 ----- 9.1 9.8 142.6 14.4 22.0 -25.1 21.3 -25.6 21.7 -24.9 22.9 -25.6
2025-09-29T12:50:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:50:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:50:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.451112
2025-09-29T12:50:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:50:37.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:50:37.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:50:37.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:50:37.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:50:37.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:50:13', tmtdew=11.7, humidity=45.09, cloud=0.0, wind=12.65, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:49:36.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:50:37.092 [DEBUG] [Thread-156372] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:50:37.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:50:37.178 [DEBUG] [Thread-156375] [transport.py] [_log()] starting thread (client mode): 0x2b954c10
2025-09-29T12:50:37.178 [DEBUG] [Thread-156375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:50:37.193 [DEBUG] [Thread-156375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:50:37.193 [INFO] [Thread-156375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] client lang: <none>
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] server lang: <none>
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] kex follows: False
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] Compression: none
2025-09-29T12:50:37.201 [DEBUG] [Thread-156375] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:50:37.257 [DEBUG] [Thread-156375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:50:37.257 [DEBUG] [Thread-156375] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:50:37.257 [DEBUG] [Thread-156375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:50:37.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:50:37.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:50:37.314 [DEBUG] [Thread-156375] [transport.py] [_log()] userauth is OK
2025-09-29T12:50:37.314 [DEBUG] [Thread-156375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:50:37.314 [DEBUG] [Thread-156375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:50:37.314 [DEBUG] [Thread-156375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:50:37.315 [DEBUG] [Thread-156375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:50:37.328 [INFO] [Thread-156375] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:50:37.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:50:37.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:50:38.274 [DEBUG] [Thread-156375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:50:38.274 [DEBUG] [Thread-156375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:50:38.322 [DEBUG] [Thread-156375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:50:38.322 [DEBUG] [Thread-156375] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:50:38.330 [DEBUG] [Thread-156375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:50:38.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:50:38.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:50:38.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:50:38.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:50:38.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:50:38.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:50:38.363 [DEBUG] [Thread-156375] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:50:40.235 [DEBUG] [Thread-156377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:50:48.196 [DEBUG] [Thread-156378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:50:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:50:48.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:50:48.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:50:48.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 50, 45), 11.67, 44.64, 0.0, 11.79, 12.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:50:48.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:50:45
2025-09-29T12:50:49.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:50:49.193 [DEBUG] [Thread-156379] [transport.py] [_log()] starting thread (client mode): 0x2b91d1e0
2025-09-29T12:50:49.193 [DEBUG] [Thread-156379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:50:49.210 [DEBUG] [Thread-156379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:50:49.210 [INFO] [Thread-156379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:50:49.211 [DEBUG] [Thread-156379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] client lang: <none>
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] server lang: <none>
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] kex follows: False
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] Compression: none
2025-09-29T12:50:49.212 [DEBUG] [Thread-156379] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:50:49.221 [DEBUG] [Thread-156379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:50:49.221 [DEBUG] [Thread-156379] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:50:49.222 [DEBUG] [Thread-156379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:50:49.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:50:49.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:50:49.223 [DEBUG] [Thread-156379] [transport.py] [_log()] userauth is OK
2025-09-29T12:50:49.223 [DEBUG] [Thread-156379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:50:49.223 [DEBUG] [Thread-156379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:50:49.223 [DEBUG] [Thread-156379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:50:49.223 [DEBUG] [Thread-156379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:50:49.243 [INFO] [Thread-156379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:50:49.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:50:49.833 [DEBUG] [Thread-156379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:50:49.833 [DEBUG] [Thread-156379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:50:49.834 [DEBUG] [Thread-156379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:50:49.874 [DEBUG] [Thread-156379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:50:49.874 [DEBUG] [Thread-156379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:50:49.878 [DEBUG] [Thread-156379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:50:49.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:50:49.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:50:49.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:50:49.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:50:49.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:50:49.900 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:50:49.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:50:49.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:50:49.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:50:49.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.451806 -999.00  +13.60   5.59     49   +3.10 1 1 1 1 1   888    0 10.48 2.45 ----- 6.8 5.6 177.6 9.8 22.2 -26.2 21.1 -29.7 21.8 -26.5 23.0 -27.4
2025-09-29T12:50:49.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:50:49.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:50:49.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.451806
2025-09-29T12:50:49.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:50:49.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:50:49.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:50:49.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:50:49.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:50:49.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:50:45', tmtdew=11.67, humidity=44.64, cloud=0.0, wind=11.79, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:50:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:50:49.903 [DEBUG] [Thread-156379] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:50:49.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:50:49.999 [DEBUG] [Thread-156382] [transport.py] [_log()] starting thread (client mode): 0x2b91fa60
2025-09-29T12:50:49.999 [DEBUG] [Thread-156382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:50:50.013 [DEBUG] [Thread-156382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:50:50.013 [INFO] [Thread-156382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:50:50.021 [DEBUG] [Thread-156382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:50:50.021 [DEBUG] [Thread-156382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] client lang: <none>
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] server lang: <none>
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] kex follows: False
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] Compression: none
2025-09-29T12:50:50.022 [DEBUG] [Thread-156382] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:50:50.079 [DEBUG] [Thread-156382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:50:50.079 [DEBUG] [Thread-156382] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:50:50.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:50:50.080 [DEBUG] [Thread-156382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:50:50.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:50:50.137 [DEBUG] [Thread-156382] [transport.py] [_log()] userauth is OK
2025-09-29T12:50:50.137 [DEBUG] [Thread-156382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:50:50.137 [DEBUG] [Thread-156382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:50:50.137 [DEBUG] [Thread-156382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:50:50.137 [DEBUG] [Thread-156382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:50:50.168 [INFO] [Thread-156382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:50:50.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:50:50.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:50:50.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:50:50.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:50:51.101 [DEBUG] [Thread-156382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:50:51.101 [DEBUG] [Thread-156382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:50:51.149 [DEBUG] [Thread-156382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:50:51.149 [DEBUG] [Thread-156382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:50:51.158 [DEBUG] [Thread-156382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:50:51.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:50:51.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:50:51.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:50:51.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:50:51.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:50:51.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:50:51.192 [DEBUG] [Thread-156382] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:01.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:51:01.195 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:51:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:51:01.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 50, 45), 11.67, 44.64, 0.0, 11.79, 12.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:51:01.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:50:45
2025-09-29T12:51:01.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:51:02.029 [DEBUG] [Thread-156384] [transport.py] [_log()] starting thread (client mode): 0x2b96ca00
2025-09-29T12:51:02.029 [DEBUG] [Thread-156384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:02.050 [DEBUG] [Thread-156384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:51:02.050 [INFO] [Thread-156384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:51:02.055 [DEBUG] [Thread-156384] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:02.056 [DEBUG] [Thread-156384] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:02.057 [DEBUG] [Thread-156384] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:02.057 [DEBUG] [Thread-156384] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:02.057 [DEBUG] [Thread-156384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:02.057 [DEBUG] [Thread-156384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:02.057 [DEBUG] [Thread-156384] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:02.057 [DEBUG] [Thread-156384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:02.057 [DEBUG] [Thread-156384] [transport.py] [_log()] Compression: none
2025-09-29T12:51:02.057 [DEBUG] [Thread-156384] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:02.080 [DEBUG] [Thread-156384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:02.080 [DEBUG] [Thread-156384] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:02.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:51:02.081 [DEBUG] [Thread-156384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:51:02.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:02.086 [DEBUG] [Thread-156384] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:02.086 [DEBUG] [Thread-156384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:02.086 [DEBUG] [Thread-156384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:02.086 [DEBUG] [Thread-156384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:51:02.086 [DEBUG] [Thread-156384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:02.112 [INFO] [Thread-156384] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:02.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:02.834 [DEBUG] [Thread-156384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:02.835 [DEBUG] [Thread-156384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:02.835 [DEBUG] [Thread-156384] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:51:02.877 [DEBUG] [Thread-156384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:02.877 [DEBUG] [Thread-156384] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:02.882 [DEBUG] [Thread-156384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:02.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:02.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:51:02.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:51:02.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:51:02.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:02.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:51:02.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:02.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:51:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.451806 -999.00  +13.60   5.59     49   +3.10 1 1 1 1 1   888    0 10.48 2.45 ----- 6.8 5.6 177.6 9.8 22.2 -26.2 21.1 -29.7 21.8 -26.5 23.0 -27.4
2025-09-29T12:51:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:51:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:51:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.451806
2025-09-29T12:51:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:51:02.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:51:02.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:51:02.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:51:02.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:51:02.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:50:45', tmtdew=11.67, humidity=44.64, cloud=0.0, wind=11.79, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:50:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:51:02.921 [DEBUG] [Thread-156384] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:03.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:51:03.018 [DEBUG] [Thread-156387] [transport.py] [_log()] starting thread (client mode): 0x2e348400
2025-09-29T12:51:03.018 [DEBUG] [Thread-156387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:03.035 [DEBUG] [Thread-156387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:51:03.035 [INFO] [Thread-156387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:51:03.043 [DEBUG] [Thread-156387] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:03.043 [DEBUG] [Thread-156387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:51:03.043 [DEBUG] [Thread-156387] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:03.043 [DEBUG] [Thread-156387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:03.043 [DEBUG] [Thread-156387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:03.043 [DEBUG] [Thread-156387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:03.044 [DEBUG] [Thread-156387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:03.044 [DEBUG] [Thread-156387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:03.044 [DEBUG] [Thread-156387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:03.044 [DEBUG] [Thread-156387] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:03.044 [DEBUG] [Thread-156387] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:03.044 [DEBUG] [Thread-156387] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:03.044 [DEBUG] [Thread-156387] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:03.044 [DEBUG] [Thread-156387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:03.045 [DEBUG] [Thread-156387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:03.045 [DEBUG] [Thread-156387] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:03.045 [DEBUG] [Thread-156387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:03.045 [DEBUG] [Thread-156387] [transport.py] [_log()] Compression: none
2025-09-29T12:51:03.045 [DEBUG] [Thread-156387] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:03.100 [DEBUG] [Thread-156387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:03.100 [DEBUG] [Thread-156387] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:03.101 [DEBUG] [Thread-156387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:51:03.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:51:03.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:03.156 [DEBUG] [Thread-156387] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:03.156 [DEBUG] [Thread-156387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:03.156 [DEBUG] [Thread-156387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:03.156 [DEBUG] [Thread-156387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:51:03.156 [DEBUG] [Thread-156387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:03.170 [INFO] [Thread-156387] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:03.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:51:03.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:03.225 [DEBUG] [Thread-156389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:51:04.144 [DEBUG] [Thread-156387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:04.144 [DEBUG] [Thread-156387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:04.195 [DEBUG] [Thread-156387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:04.195 [DEBUG] [Thread-156387] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:04.203 [DEBUG] [Thread-156387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:04.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:04.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:51:04.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:51:04.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:04.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:04.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:04.237 [DEBUG] [Thread-156387] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:14.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:51:14.239 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:51:14.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:51:14.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 50, 45), 11.67, 44.64, 0.0, 11.79, 12.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:51:14.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:50:45
2025-09-29T12:51:14.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:51:15.106 [DEBUG] [Thread-156390] [transport.py] [_log()] starting thread (client mode): 0x2e34bb50
2025-09-29T12:51:15.106 [DEBUG] [Thread-156390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:15.126 [DEBUG] [Thread-156390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:51:15.126 [INFO] [Thread-156390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] Compression: none
2025-09-29T12:51:15.129 [DEBUG] [Thread-156390] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:15.144 [DEBUG] [Thread-156390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:15.144 [DEBUG] [Thread-156390] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:15.144 [DEBUG] [Thread-156390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:51:15.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:51:15.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:15.145 [DEBUG] [Thread-156390] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:15.145 [DEBUG] [Thread-156390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:15.145 [DEBUG] [Thread-156390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:15.145 [DEBUG] [Thread-156390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:51:15.145 [DEBUG] [Thread-156390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:15.155 [INFO] [Thread-156390] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:15.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:15.970 [DEBUG] [Thread-156390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:15.970 [DEBUG] [Thread-156390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:15.970 [DEBUG] [Thread-156390] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:51:16.011 [DEBUG] [Thread-156390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:16.011 [DEBUG] [Thread-156390] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:16.013 [DEBUG] [Thread-156390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:16.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:16.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:51:16.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:51:16.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:51:16.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:16.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:51:16.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.451806 -999.00  +13.60   5.59     49   +3.10 1 1 1 1 1   888    0 10.48 2.45 ----- 6.8 5.6 177.6 9.8 22.2 -26.2 21.1 -29.7 21.8 -26.5 23.0 -27.4
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.451806
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:51:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:50:45', tmtdew=11.67, humidity=44.64, cloud=0.0, wind=11.79, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:50:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:51:16.027 [DEBUG] [Thread-156390] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:16.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:51:16.109 [DEBUG] [Thread-156393] [transport.py] [_log()] starting thread (client mode): 0x2b96fb50
2025-09-29T12:51:16.109 [DEBUG] [Thread-156393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:16.124 [DEBUG] [Thread-156393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:51:16.124 [INFO] [Thread-156393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:16.131 [DEBUG] [Thread-156393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:16.132 [DEBUG] [Thread-156393] [transport.py] [_log()] Compression: none
2025-09-29T12:51:16.132 [DEBUG] [Thread-156393] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:16.193 [DEBUG] [Thread-156393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:16.194 [DEBUG] [Thread-156393] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:16.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:51:16.194 [DEBUG] [Thread-156393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:51:16.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:16.251 [DEBUG] [Thread-156393] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:16.251 [DEBUG] [Thread-156393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:16.251 [DEBUG] [Thread-156393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:16.251 [DEBUG] [Thread-156393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:51:16.251 [DEBUG] [Thread-156393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:16.265 [INFO] [Thread-156393] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:16.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:51:16.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:17.180 [DEBUG] [Thread-156393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:17.180 [DEBUG] [Thread-156393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:17.228 [DEBUG] [Thread-156393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:17.228 [DEBUG] [Thread-156393] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:17.237 [DEBUG] [Thread-156393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:17.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:17.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:51:17.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:51:17.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:17.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:17.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:17.273 [DEBUG] [Thread-156393] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:18.257 [DEBUG] [Thread-156395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:51:27.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:51:27.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:51:27.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:51:27.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 51, 17), 11.63, 44.76, 0.0, 10.59, 12.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:51:27.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:51:17
2025-09-29T12:51:27.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:51:28.105 [DEBUG] [Thread-156396] [transport.py] [_log()] starting thread (client mode): 0x2b96aaa0
2025-09-29T12:51:28.105 [DEBUG] [Thread-156396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:28.125 [DEBUG] [Thread-156396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:51:28.125 [INFO] [Thread-156396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] Compression: none
2025-09-29T12:51:28.129 [DEBUG] [Thread-156396] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:28.146 [DEBUG] [Thread-156396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:28.146 [DEBUG] [Thread-156396] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:28.147 [DEBUG] [Thread-156396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:51:28.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:51:28.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:28.149 [DEBUG] [Thread-156396] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:28.149 [DEBUG] [Thread-156396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:28.149 [DEBUG] [Thread-156396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:28.149 [DEBUG] [Thread-156396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:51:28.149 [DEBUG] [Thread-156396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:28.173 [INFO] [Thread-156396] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:28.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:28.810 [DEBUG] [Thread-156396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:28.810 [DEBUG] [Thread-156396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:28.811 [DEBUG] [Thread-156396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:51:28.851 [DEBUG] [Thread-156396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:28.852 [DEBUG] [Thread-156396] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:28.855 [DEBUG] [Thread-156396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:28.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:28.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:51:28.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:51:28.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:51:28.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:28.880 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:51:28.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:28.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:28.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:51:28.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.452153 -999.00  +13.80  16.55     48   +3.10 1 1 1 1 1   888    0 10.15 0.78 ----- 19.9 16.6 162.2 19.0 22.2 -26.4 21.1 -25.7 21.8 -25.1 23.0 -26.1
2025-09-29T12:51:28.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:51:28.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:51:28.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.452153
2025-09-29T12:51:28.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:51:28.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:51:28.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:51:28.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:51:28.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:51:28.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:51:17', tmtdew=11.63, humidity=44.76, cloud=0.0, wind=10.59, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:51:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:51:28.883 [DEBUG] [Thread-156396] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:28.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:51:28.978 [DEBUG] [Thread-156399] [transport.py] [_log()] starting thread (client mode): 0x2b969390
2025-09-29T12:51:28.979 [DEBUG] [Thread-156399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:28.994 [DEBUG] [Thread-156399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:51:28.994 [INFO] [Thread-156399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:51:29.003 [DEBUG] [Thread-156399] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] Compression: none
2025-09-29T12:51:29.004 [DEBUG] [Thread-156399] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:29.068 [DEBUG] [Thread-156399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:29.068 [DEBUG] [Thread-156399] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:29.069 [DEBUG] [Thread-156399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:51:29.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:51:29.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:29.130 [DEBUG] [Thread-156399] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:29.130 [DEBUG] [Thread-156399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:29.130 [DEBUG] [Thread-156399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:29.130 [DEBUG] [Thread-156399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:51:29.130 [DEBUG] [Thread-156399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:29.152 [INFO] [Thread-156399] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:29.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:51:29.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:30.143 [DEBUG] [Thread-156399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:30.143 [DEBUG] [Thread-156399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:30.191 [DEBUG] [Thread-156399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:30.191 [DEBUG] [Thread-156399] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:30.200 [DEBUG] [Thread-156399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:30.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:30.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:51:30.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:51:30.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:30.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:30.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:30.234 [DEBUG] [Thread-156399] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:33.285 [DEBUG] [Thread-156401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:51:40.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:51:40.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:51:40.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:51:40.284 [DEBUG] [Thread-156402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:51:40.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 51, 17), 11.63, 44.76, 0.0, 10.59, 12.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:51:40.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:51:17
2025-09-29T12:51:40.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:51:41.081 [DEBUG] [Thread-156403] [transport.py] [_log()] starting thread (client mode): 0x2b968f70
2025-09-29T12:51:41.081 [DEBUG] [Thread-156403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:41.102 [DEBUG] [Thread-156403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:51:41.102 [INFO] [Thread-156403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:41.105 [DEBUG] [Thread-156403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] Compression: none
2025-09-29T12:51:41.106 [DEBUG] [Thread-156403] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:41.123 [DEBUG] [Thread-156403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:41.123 [DEBUG] [Thread-156403] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:41.124 [DEBUG] [Thread-156403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:51:41.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:51:41.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:41.126 [DEBUG] [Thread-156403] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:41.127 [DEBUG] [Thread-156403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:41.127 [DEBUG] [Thread-156403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:41.127 [DEBUG] [Thread-156403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:51:41.127 [DEBUG] [Thread-156403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:41.144 [INFO] [Thread-156403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:41.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:41.937 [DEBUG] [Thread-156403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:41.937 [DEBUG] [Thread-156403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:41.937 [DEBUG] [Thread-156403] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:51:41.978 [DEBUG] [Thread-156403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:41.978 [DEBUG] [Thread-156403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:41.979 [DEBUG] [Thread-156403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:41.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:41.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:51:41.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:51:41.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:51:41.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:41.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:51:41.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.452153 -999.00  +13.80  16.55     48   +3.10 1 1 1 1 1   888    0 10.15 0.78 ----- 19.9 16.6 162.2 19.0 22.2 -26.4 21.1 -25.7 21.8 -25.1 23.0 -26.1
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.452153
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:51:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:51:17', tmtdew=11.63, humidity=44.76, cloud=0.0, wind=10.59, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:51:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:51:41.997 [DEBUG] [Thread-156403] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:42.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:51:42.081 [DEBUG] [Thread-156406] [transport.py] [_log()] starting thread (client mode): 0x2b91df90
2025-09-29T12:51:42.081 [DEBUG] [Thread-156406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:42.096 [DEBUG] [Thread-156406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:51:42.096 [INFO] [Thread-156406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:51:42.104 [DEBUG] [Thread-156406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:42.104 [DEBUG] [Thread-156406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:51:42.104 [DEBUG] [Thread-156406] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:42.104 [DEBUG] [Thread-156406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:42.104 [DEBUG] [Thread-156406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:42.104 [DEBUG] [Thread-156406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:42.104 [DEBUG] [Thread-156406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:42.105 [DEBUG] [Thread-156406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:42.105 [DEBUG] [Thread-156406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:42.105 [DEBUG] [Thread-156406] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:42.105 [DEBUG] [Thread-156406] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:42.105 [DEBUG] [Thread-156406] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:42.105 [DEBUG] [Thread-156406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:42.105 [DEBUG] [Thread-156406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:42.105 [DEBUG] [Thread-156406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:42.106 [DEBUG] [Thread-156406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:42.106 [DEBUG] [Thread-156406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:42.106 [DEBUG] [Thread-156406] [transport.py] [_log()] Compression: none
2025-09-29T12:51:42.106 [DEBUG] [Thread-156406] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:42.168 [DEBUG] [Thread-156406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:42.169 [DEBUG] [Thread-156406] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:42.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:51:42.170 [DEBUG] [Thread-156406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:51:42.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:42.223 [DEBUG] [Thread-156406] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:42.224 [DEBUG] [Thread-156406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:42.224 [DEBUG] [Thread-156406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:42.224 [DEBUG] [Thread-156406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:51:42.224 [DEBUG] [Thread-156406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:42.247 [INFO] [Thread-156406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:42.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:51:42.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:43.174 [DEBUG] [Thread-156406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:43.174 [DEBUG] [Thread-156406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:43.222 [DEBUG] [Thread-156406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:43.223 [DEBUG] [Thread-156406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:43.232 [DEBUG] [Thread-156406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:43.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:43.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:51:43.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:51:43.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:43.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:43.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:43.267 [DEBUG] [Thread-156406] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:48.327 [DEBUG] [Thread-156408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:51:50.609 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:51:50.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:51:53.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:51:53.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:51:53.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:51:53.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 51, 49), 11.48, 45.22, 0.0, 10.85, 12.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:51:53.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:51:49
2025-09-29T12:51:53.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:51:54.139 [DEBUG] [Thread-156409] [transport.py] [_log()] starting thread (client mode): 0x2b91f460
2025-09-29T12:51:54.139 [DEBUG] [Thread-156409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:54.158 [DEBUG] [Thread-156409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:51:54.158 [INFO] [Thread-156409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:51:54.161 [DEBUG] [Thread-156409] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] Compression: none
2025-09-29T12:51:54.162 [DEBUG] [Thread-156409] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:54.181 [DEBUG] [Thread-156409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:54.181 [DEBUG] [Thread-156409] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:54.182 [DEBUG] [Thread-156409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:51:54.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:51:54.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:54.182 [DEBUG] [Thread-156409] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:54.182 [DEBUG] [Thread-156409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:54.182 [DEBUG] [Thread-156409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:54.182 [DEBUG] [Thread-156409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:51:54.182 [DEBUG] [Thread-156409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:54.191 [INFO] [Thread-156409] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:54.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:54.786 [DEBUG] [Thread-156409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:54.786 [DEBUG] [Thread-156409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:54.787 [DEBUG] [Thread-156409] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:51:54.828 [DEBUG] [Thread-156409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:54.828 [DEBUG] [Thread-156409] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:54.829 [DEBUG] [Thread-156409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:54.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:54.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:51:54.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:51:54.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:51:54.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:54.844 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:51:54.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.452501 -999.00  +13.30   7.62     49   +2.90 1 1 1 1 1   888    0 10.41 0.35 ----- 8.1 7.6 125.2 18.2 22.2 -25.9 21.2 -25.6 21.7 -26.3 22.9 -26.9
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.452501
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:51:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:51:49', tmtdew=11.48, humidity=45.22, cloud=0.0, wind=10.85, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:51:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:51:54.845 [DEBUG] [Thread-156409] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:51:54.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:51:54.930 [DEBUG] [Thread-156412] [transport.py] [_log()] starting thread (client mode): 0x2b968850
2025-09-29T12:51:54.930 [DEBUG] [Thread-156412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:51:54.945 [DEBUG] [Thread-156412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:51:54.945 [INFO] [Thread-156412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] client lang: <none>
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] server lang: <none>
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] kex follows: False
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] Compression: none
2025-09-29T12:51:54.953 [DEBUG] [Thread-156412] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:51:55.015 [DEBUG] [Thread-156412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:51:55.015 [DEBUG] [Thread-156412] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:51:55.016 [DEBUG] [Thread-156412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:51:55.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:51:55.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:51:55.080 [DEBUG] [Thread-156412] [transport.py] [_log()] userauth is OK
2025-09-29T12:51:55.080 [DEBUG] [Thread-156412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:51:55.080 [DEBUG] [Thread-156412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:51:55.080 [DEBUG] [Thread-156412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:51:55.080 [DEBUG] [Thread-156412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:51:55.101 [INFO] [Thread-156412] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:51:55.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:51:55.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:51:56.053 [DEBUG] [Thread-156412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:51:56.053 [DEBUG] [Thread-156412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:51:56.104 [DEBUG] [Thread-156412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:51:56.104 [DEBUG] [Thread-156412] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:51:56.116 [DEBUG] [Thread-156412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:51:56.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:51:56.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:51:56.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:51:56.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:51:56.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:51:56.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:51:56.177 [DEBUG] [Thread-156412] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:03.356 [DEBUG] [Thread-156414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:52:06.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:52:06.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:52:06.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:52:06.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 51, 49), 11.48, 45.22, 0.0, 10.85, 12.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:52:06.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:51:49
2025-09-29T12:52:06.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:52:06.990 [DEBUG] [Thread-156415] [transport.py] [_log()] starting thread (client mode): 0x2e38f640
2025-09-29T12:52:06.990 [DEBUG] [Thread-156415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:07.010 [DEBUG] [Thread-156415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:52:07.010 [INFO] [Thread-156415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] Compression: none
2025-09-29T12:52:07.014 [DEBUG] [Thread-156415] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:07.031 [DEBUG] [Thread-156415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:07.032 [DEBUG] [Thread-156415] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:07.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:52:07.033 [DEBUG] [Thread-156415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:52:07.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:07.034 [DEBUG] [Thread-156415] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:07.035 [DEBUG] [Thread-156415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:07.035 [DEBUG] [Thread-156415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:07.035 [DEBUG] [Thread-156415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:52:07.035 [DEBUG] [Thread-156415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:07.059 [INFO] [Thread-156415] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:07.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:07.722 [DEBUG] [Thread-156415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:07.722 [DEBUG] [Thread-156415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:07.722 [DEBUG] [Thread-156415] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:52:07.763 [DEBUG] [Thread-156415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:07.763 [DEBUG] [Thread-156415] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:07.766 [DEBUG] [Thread-156415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:07.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:07.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:52:07.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:52:07.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:52:07.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:07.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:52:07.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:07.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:52:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.452501 -999.00  +13.30   7.62     49   +2.90 1 1 1 1 1   888    0 10.41 0.35 ----- 8.1 7.6 125.2 18.2 22.2 -25.9 21.2 -25.6 21.7 -26.3 22.9 -26.9
2025-09-29T12:52:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:52:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:52:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.452501
2025-09-29T12:52:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:52:07.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:52:07.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:52:07.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:52:07.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:52:07.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:51:49', tmtdew=11.48, humidity=45.22, cloud=0.0, wind=10.85, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:51:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:52:07.792 [DEBUG] [Thread-156415] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:07.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:52:07.898 [DEBUG] [Thread-156418] [transport.py] [_log()] starting thread (client mode): 0x2e348400
2025-09-29T12:52:07.899 [DEBUG] [Thread-156418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:07.915 [DEBUG] [Thread-156418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:52:07.915 [INFO] [Thread-156418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:52:07.923 [DEBUG] [Thread-156418] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:07.924 [DEBUG] [Thread-156418] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:07.925 [DEBUG] [Thread-156418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:07.925 [DEBUG] [Thread-156418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:07.925 [DEBUG] [Thread-156418] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:07.925 [DEBUG] [Thread-156418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:07.925 [DEBUG] [Thread-156418] [transport.py] [_log()] Compression: none
2025-09-29T12:52:07.925 [DEBUG] [Thread-156418] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:07.984 [DEBUG] [Thread-156418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:07.984 [DEBUG] [Thread-156418] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:07.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:52:07.985 [DEBUG] [Thread-156418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:52:07.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:08.045 [DEBUG] [Thread-156418] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:08.045 [DEBUG] [Thread-156418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:08.045 [DEBUG] [Thread-156418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:08.046 [DEBUG] [Thread-156418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:52:08.046 [DEBUG] [Thread-156418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:08.067 [INFO] [Thread-156418] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:08.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:52:08.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:09.033 [DEBUG] [Thread-156418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:09.033 [DEBUG] [Thread-156418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:09.080 [DEBUG] [Thread-156418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:09.080 [DEBUG] [Thread-156418] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:09.089 [DEBUG] [Thread-156418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:09.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:09.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:52:09.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:52:09.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:09.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:09.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:09.123 [DEBUG] [Thread-156418] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:18.402 [DEBUG] [Thread-156420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:52:19.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:52:19.126 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:52:19.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:52:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 51, 49), 11.48, 45.22, 0.0, 10.85, 12.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:52:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:51:49
2025-09-29T12:52:19.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:52:19.950 [DEBUG] [Thread-156421] [transport.py] [_log()] starting thread (client mode): 0x2b91c880
2025-09-29T12:52:19.951 [DEBUG] [Thread-156421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:19.971 [DEBUG] [Thread-156421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:52:19.971 [INFO] [Thread-156421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] Compression: none
2025-09-29T12:52:19.975 [DEBUG] [Thread-156421] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:19.992 [DEBUG] [Thread-156421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:19.992 [DEBUG] [Thread-156421] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:19.993 [DEBUG] [Thread-156421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:52:19.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:52:19.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:19.995 [DEBUG] [Thread-156421] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:19.995 [DEBUG] [Thread-156421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:19.995 [DEBUG] [Thread-156421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:19.995 [DEBUG] [Thread-156421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:52:19.995 [DEBUG] [Thread-156421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:20.010 [INFO] [Thread-156421] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:20.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:20.793 [DEBUG] [Thread-156421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:20.793 [DEBUG] [Thread-156421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:20.793 [DEBUG] [Thread-156421] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:52:20.834 [DEBUG] [Thread-156421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:20.835 [DEBUG] [Thread-156421] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:20.837 [DEBUG] [Thread-156421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:20.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:20.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:52:20.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:52:20.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:52:20.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:20.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:52:20.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:20.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:20.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:52:20.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.452501 -999.00  +13.30   7.62     49   +2.90 1 1 1 1 1   888    0 10.41 0.35 ----- 8.1 7.6 125.2 18.2 22.2 -25.9 21.2 -25.6 21.7 -26.3 22.9 -26.9
2025-09-29T12:52:20.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:52:20.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:52:20.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.452501
2025-09-29T12:52:20.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:52:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:52:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:52:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:52:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:52:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:51:49', tmtdew=11.48, humidity=45.22, cloud=0.0, wind=10.85, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:51:36.086', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:52:20.863 [DEBUG] [Thread-156421] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:20.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:52:20.957 [DEBUG] [Thread-156424] [transport.py] [_log()] starting thread (client mode): 0x2b9c3670
2025-09-29T12:52:20.958 [DEBUG] [Thread-156424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:20.972 [DEBUG] [Thread-156424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:52:20.973 [INFO] [Thread-156424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:52:20.980 [DEBUG] [Thread-156424] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:20.980 [DEBUG] [Thread-156424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] Compression: none
2025-09-29T12:52:20.981 [DEBUG] [Thread-156424] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:21.039 [DEBUG] [Thread-156424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:21.040 [DEBUG] [Thread-156424] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:21.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:52:21.041 [DEBUG] [Thread-156424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:52:21.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:21.095 [DEBUG] [Thread-156424] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:21.096 [DEBUG] [Thread-156424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:21.096 [DEBUG] [Thread-156424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:21.096 [DEBUG] [Thread-156424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:52:21.096 [DEBUG] [Thread-156424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:21.115 [INFO] [Thread-156424] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:21.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:52:21.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:22.030 [DEBUG] [Thread-156424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:22.030 [DEBUG] [Thread-156424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:22.078 [DEBUG] [Thread-156424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:22.078 [DEBUG] [Thread-156424] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:22.086 [DEBUG] [Thread-156424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:22.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:22.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:52:22.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:52:22.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:22.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:22.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:22.118 [DEBUG] [Thread-156424] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:32.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:52:32.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:52:32.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:52:32.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 52, 21), 11.4, 45.45, 0.0, 16.67, 12.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:52:32.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:52:21
2025-09-29T12:52:32.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:52:32.984 [DEBUG] [Thread-156426] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d70
2025-09-29T12:52:32.984 [DEBUG] [Thread-156426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:33.005 [DEBUG] [Thread-156426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:52:33.005 [INFO] [Thread-156426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] Compression: none
2025-09-29T12:52:33.009 [DEBUG] [Thread-156426] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:33.025 [DEBUG] [Thread-156426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:33.025 [DEBUG] [Thread-156426] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:33.025 [DEBUG] [Thread-156426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:52:33.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:52:33.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:33.026 [DEBUG] [Thread-156426] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:33.026 [DEBUG] [Thread-156426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:33.026 [DEBUG] [Thread-156426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:33.026 [DEBUG] [Thread-156426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:52:33.026 [DEBUG] [Thread-156426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:33.035 [INFO] [Thread-156426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:33.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:33.428 [DEBUG] [Thread-156428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:52:33.690 [DEBUG] [Thread-156426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:33.690 [DEBUG] [Thread-156426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:33.690 [DEBUG] [Thread-156426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:52:33.731 [DEBUG] [Thread-156426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:33.732 [DEBUG] [Thread-156426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:33.734 [DEBUG] [Thread-156426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:33.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:33.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:52:33.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:52:33.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:52:33.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:33.759 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:52:33.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:33.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:33.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:52:33.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.452848 -999.00  +13.20   8.81     50   +3.00 1 1 1 1 1   888    0 10.00 -0.78 ----- 7.7 8.8 132.0 12.0 22.3 -25.7 21.4 -25.2 21.9 -25.5 23.1 -25.8
2025-09-29T12:52:33.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:52:33.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:52:33.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.452848
2025-09-29T12:52:33.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:52:33.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:52:33.761 [DEBUG] [Thread-156426] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:33.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:52:33.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:52:33.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:52:33.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:52:21', tmtdew=11.4, humidity=45.45, cloud=0.0, wind=16.67, temperature=12.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:52:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:52:33.846 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:52:33.857 [DEBUG] [Thread-156430] [transport.py] [_log()] starting thread (client mode): 0x2b91cd90
2025-09-29T12:52:33.857 [DEBUG] [Thread-156430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:33.872 [DEBUG] [Thread-156430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:52:33.872 [INFO] [Thread-156430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:52:33.880 [DEBUG] [Thread-156430] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:33.880 [DEBUG] [Thread-156430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:52:33.880 [DEBUG] [Thread-156430] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:33.880 [DEBUG] [Thread-156430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:33.881 [DEBUG] [Thread-156430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:33.881 [DEBUG] [Thread-156430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:33.881 [DEBUG] [Thread-156430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:33.881 [DEBUG] [Thread-156430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:33.881 [DEBUG] [Thread-156430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:33.881 [DEBUG] [Thread-156430] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:33.881 [DEBUG] [Thread-156430] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:33.881 [DEBUG] [Thread-156430] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:33.882 [DEBUG] [Thread-156430] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:33.882 [DEBUG] [Thread-156430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:33.882 [DEBUG] [Thread-156430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:33.882 [DEBUG] [Thread-156430] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:33.882 [DEBUG] [Thread-156430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:33.882 [DEBUG] [Thread-156430] [transport.py] [_log()] Compression: none
2025-09-29T12:52:33.882 [DEBUG] [Thread-156430] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:33.944 [DEBUG] [Thread-156430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:33.944 [DEBUG] [Thread-156430] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:33.945 [DEBUG] [Thread-156430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:52:33.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:52:33.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:33.999 [DEBUG] [Thread-156430] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:34.000 [DEBUG] [Thread-156430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:34.000 [DEBUG] [Thread-156430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:34.000 [DEBUG] [Thread-156430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:52:34.000 [DEBUG] [Thread-156430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:34.019 [INFO] [Thread-156430] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:34.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:52:34.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:34.940 [DEBUG] [Thread-156430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:34.940 [DEBUG] [Thread-156430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:34.988 [DEBUG] [Thread-156430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:34.988 [DEBUG] [Thread-156430] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:34.998 [DEBUG] [Thread-156430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:35.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:35.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:52:35.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:52:35.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:35.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:35.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:35.035 [DEBUG] [Thread-156430] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:40.328 [DEBUG] [Thread-156432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:52:45.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:52:45.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:52:45.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:52:45.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 52, 21), 11.4, 45.45, 0.0, 16.67, 12.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:52:45.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:52:21
2025-09-29T12:52:45.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:52:45.883 [DEBUG] [Thread-156433] [transport.py] [_log()] starting thread (client mode): 0x2b9550c0
2025-09-29T12:52:45.883 [DEBUG] [Thread-156433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:45.904 [DEBUG] [Thread-156433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:52:45.904 [INFO] [Thread-156433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:52:45.905 [DEBUG] [Thread-156433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] Compression: none
2025-09-29T12:52:45.906 [DEBUG] [Thread-156433] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:45.915 [DEBUG] [Thread-156433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:45.915 [DEBUG] [Thread-156433] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:45.916 [DEBUG] [Thread-156433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:52:45.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:52:45.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:45.917 [DEBUG] [Thread-156433] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:45.917 [DEBUG] [Thread-156433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:45.918 [DEBUG] [Thread-156433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:45.918 [DEBUG] [Thread-156433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:52:45.918 [DEBUG] [Thread-156433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:45.935 [INFO] [Thread-156433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:45.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:46.730 [DEBUG] [Thread-156433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:46.730 [DEBUG] [Thread-156433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:46.731 [DEBUG] [Thread-156433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:52:46.771 [DEBUG] [Thread-156433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:46.771 [DEBUG] [Thread-156433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:46.774 [DEBUG] [Thread-156433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:46.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:46.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:52:46.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:52:46.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:52:46.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:46.794 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:52:46.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:46.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:46.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:52:46.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.452848 -999.00  +13.20   8.81     50   +3.00 1 1 1 1 1   888    0 10.00 -0.78 ----- 7.7 8.8 132.0 12.0 22.3 -25.7 21.4 -25.2 21.9 -25.5 23.1 -25.8
2025-09-29T12:52:46.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:52:46.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:52:46.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.452848
2025-09-29T12:52:46.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:52:46.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:52:46.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:52:46.796 [DEBUG] [Thread-156433] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:46.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:52:46.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:52:46.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:52:21', tmtdew=11.4, humidity=45.45, cloud=0.0, wind=16.67, temperature=12.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:52:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:52:46.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:52:46.893 [DEBUG] [Thread-156436] [transport.py] [_log()] starting thread (client mode): 0x2b96b3d0
2025-09-29T12:52:46.893 [DEBUG] [Thread-156436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:46.907 [DEBUG] [Thread-156436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:52:46.908 [INFO] [Thread-156436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:52:46.915 [DEBUG] [Thread-156436] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] Compression: none
2025-09-29T12:52:46.916 [DEBUG] [Thread-156436] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:46.975 [DEBUG] [Thread-156436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:46.975 [DEBUG] [Thread-156436] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:46.976 [DEBUG] [Thread-156436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:52:46.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:52:46.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:47.031 [DEBUG] [Thread-156436] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:47.031 [DEBUG] [Thread-156436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:47.032 [DEBUG] [Thread-156436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:47.032 [DEBUG] [Thread-156436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:52:47.032 [DEBUG] [Thread-156436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:47.051 [INFO] [Thread-156436] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:47.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:52:47.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:48.054 [DEBUG] [Thread-156436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:48.054 [DEBUG] [Thread-156436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:48.104 [DEBUG] [Thread-156436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:48.104 [DEBUG] [Thread-156436] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:48.112 [DEBUG] [Thread-156436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:48.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:48.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:52:48.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:52:48.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:48.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:48.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:48.156 [DEBUG] [Thread-156436] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:48.459 [DEBUG] [Thread-156438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:52:50.751 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:52:50.752 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:52:58.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:52:58.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:52:58.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:52:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 52, 53), 11.48, 45.65, 0.0, 15.19, 12.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:52:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:52:53
2025-09-29T12:52:58.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:52:58.984 [DEBUG] [Thread-156439] [transport.py] [_log()] starting thread (client mode): 0x2b9ae380
2025-09-29T12:52:58.984 [DEBUG] [Thread-156439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:52:59.000 [DEBUG] [Thread-156439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:52:59.000 [INFO] [Thread-156439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] client lang: <none>
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] server lang: <none>
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] kex follows: False
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:52:59.004 [DEBUG] [Thread-156439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:52:59.005 [DEBUG] [Thread-156439] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:52:59.005 [DEBUG] [Thread-156439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:52:59.005 [DEBUG] [Thread-156439] [transport.py] [_log()] Compression: none
2025-09-29T12:52:59.005 [DEBUG] [Thread-156439] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:52:59.024 [DEBUG] [Thread-156439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:52:59.025 [DEBUG] [Thread-156439] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:52:59.025 [DEBUG] [Thread-156439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:52:59.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:52:59.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:52:59.027 [DEBUG] [Thread-156439] [transport.py] [_log()] userauth is OK
2025-09-29T12:52:59.027 [DEBUG] [Thread-156439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:52:59.027 [DEBUG] [Thread-156439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:52:59.027 [DEBUG] [Thread-156439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:52:59.027 [DEBUG] [Thread-156439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:52:59.049 [INFO] [Thread-156439] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:52:59.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:52:59.889 [DEBUG] [Thread-156439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:52:59.889 [DEBUG] [Thread-156439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:52:59.890 [DEBUG] [Thread-156439] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:52:59.930 [DEBUG] [Thread-156439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:52:59.931 [DEBUG] [Thread-156439] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:52:59.934 [DEBUG] [Thread-156439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:52:59.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:52:59.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:52:59.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:52:59.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:52:59.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:52:59.960 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:52:59.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:52:59.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:52:59.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:52:59.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.452848 -999.00  +13.20   8.81     50   +3.00 1 1 1 1 1   888    0 10.00 -0.78 ----- 7.7 8.8 132.0 12.0 22.3 -25.7 21.4 -25.2 21.9 -25.5 23.1 -25.8
2025-09-29T12:52:59.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:52:59.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:52:59.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.452848
2025-09-29T12:52:59.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:52:59.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:52:59.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:52:59.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:52:59.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:52:59.963 [DEBUG] [Thread-156439] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:52:59.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:52:53', tmtdew=11.48, humidity=45.65, cloud=0.0, wind=15.19, temperature=12.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:52:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:53:00.049 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:53:00.058 [DEBUG] [Thread-156442] [transport.py] [_log()] starting thread (client mode): 0x2b96d390
2025-09-29T12:53:00.058 [DEBUG] [Thread-156442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:00.075 [DEBUG] [Thread-156442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:53:00.076 [INFO] [Thread-156442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:53:00.083 [DEBUG] [Thread-156442] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:00.083 [DEBUG] [Thread-156442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] Compression: none
2025-09-29T12:53:00.084 [DEBUG] [Thread-156442] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:00.143 [DEBUG] [Thread-156442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:00.144 [DEBUG] [Thread-156442] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:00.144 [DEBUG] [Thread-156442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:53:00.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:53:00.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:00.204 [DEBUG] [Thread-156442] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:00.204 [DEBUG] [Thread-156442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:00.204 [DEBUG] [Thread-156442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:00.204 [DEBUG] [Thread-156442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:53:00.204 [DEBUG] [Thread-156442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:00.224 [INFO] [Thread-156442] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:00.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:53:00.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:01.193 [DEBUG] [Thread-156442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:01.193 [DEBUG] [Thread-156442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:01.241 [DEBUG] [Thread-156442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:01.241 [DEBUG] [Thread-156442] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:01.251 [DEBUG] [Thread-156442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:01.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:01.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:53:01.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:53:01.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:01.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:01.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:01.286 [DEBUG] [Thread-156442] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:53:03.512 [DEBUG] [Thread-156444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:53:11.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:53:11.288 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:53:11.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:53:11.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 52, 53), 11.48, 45.65, 0.0, 15.19, 12.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:53:11.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:52:53
2025-09-29T12:53:11.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:53:12.127 [DEBUG] [Thread-156445] [transport.py] [_log()] starting thread (client mode): 0x2b9c22c0
2025-09-29T12:53:12.127 [DEBUG] [Thread-156445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:12.150 [DEBUG] [Thread-156445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:53:12.150 [INFO] [Thread-156445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:53:12.151 [DEBUG] [Thread-156445] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:12.152 [DEBUG] [Thread-156445] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:12.153 [DEBUG] [Thread-156445] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:12.153 [DEBUG] [Thread-156445] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:12.153 [DEBUG] [Thread-156445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:12.153 [DEBUG] [Thread-156445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:12.153 [DEBUG] [Thread-156445] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:12.153 [DEBUG] [Thread-156445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:12.153 [DEBUG] [Thread-156445] [transport.py] [_log()] Compression: none
2025-09-29T12:53:12.153 [DEBUG] [Thread-156445] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:12.168 [DEBUG] [Thread-156445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:12.169 [DEBUG] [Thread-156445] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:12.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:53:12.170 [DEBUG] [Thread-156445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:53:12.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:12.172 [DEBUG] [Thread-156445] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:12.173 [DEBUG] [Thread-156445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:12.173 [DEBUG] [Thread-156445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:12.173 [DEBUG] [Thread-156445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:53:12.173 [DEBUG] [Thread-156445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:12.209 [INFO] [Thread-156445] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:12.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:12.882 [DEBUG] [Thread-156445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:12.882 [DEBUG] [Thread-156445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:12.883 [DEBUG] [Thread-156445] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:53:12.923 [DEBUG] [Thread-156445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:12.924 [DEBUG] [Thread-156445] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:12.927 [DEBUG] [Thread-156445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:12.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:12.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:53:12.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:53:12.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:53:12.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:12.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:53:12.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:12.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:12.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:53:12.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.453195 -999.00  +13.70   7.68     49   +3.40 1 1 1 1 1   888    0 10.10 -2.21 ----- 12.2 7.7 144.3 11.6 22.4 -25.0 21.5 -25.3 22.0 -25.2 23.3 -25.4
2025-09-29T12:53:12.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:53:12.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:53:12.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.453195
2025-09-29T12:53:12.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:53:12.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:53:12.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:53:12.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:53:12.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:53:12.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:52:53', tmtdew=11.48, humidity=45.65, cloud=0.0, wind=15.19, temperature=12.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:52:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:53:12.953 [DEBUG] [Thread-156445] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:53:13.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:53:13.052 [DEBUG] [Thread-156448] [transport.py] [_log()] starting thread (client mode): 0x2e3489a0
2025-09-29T12:53:13.052 [DEBUG] [Thread-156448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:13.067 [DEBUG] [Thread-156448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:53:13.067 [INFO] [Thread-156448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:13.075 [DEBUG] [Thread-156448] [transport.py] [_log()] Compression: none
2025-09-29T12:53:13.076 [DEBUG] [Thread-156448] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:13.131 [DEBUG] [Thread-156448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:13.132 [DEBUG] [Thread-156448] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:13.132 [DEBUG] [Thread-156448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:53:13.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:53:13.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:13.187 [DEBUG] [Thread-156448] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:13.187 [DEBUG] [Thread-156448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:13.187 [DEBUG] [Thread-156448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:13.187 [DEBUG] [Thread-156448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:53:13.187 [DEBUG] [Thread-156448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:13.202 [INFO] [Thread-156448] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:13.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:53:13.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:14.167 [DEBUG] [Thread-156448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:14.167 [DEBUG] [Thread-156448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:14.215 [DEBUG] [Thread-156448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:14.215 [DEBUG] [Thread-156448] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:14.224 [DEBUG] [Thread-156448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:14.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:14.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:53:14.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:53:14.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:14.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:14.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:14.260 [DEBUG] [Thread-156448] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:53:18.555 [DEBUG] [Thread-156450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:53:24.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:53:24.260 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:53:24.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:53:24.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 52, 53), 11.48, 45.65, 0.0, 15.19, 12.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:53:24.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:52:53
2025-09-29T12:53:24.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:53:25.088 [DEBUG] [Thread-156451] [transport.py] [_log()] starting thread (client mode): 0x2b969120
2025-09-29T12:53:25.088 [DEBUG] [Thread-156451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:25.108 [DEBUG] [Thread-156451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:53:25.108 [INFO] [Thread-156451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:53:25.111 [DEBUG] [Thread-156451] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:25.111 [DEBUG] [Thread-156451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] Compression: none
2025-09-29T12:53:25.112 [DEBUG] [Thread-156451] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:25.128 [DEBUG] [Thread-156451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:25.128 [DEBUG] [Thread-156451] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:25.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:53:25.129 [DEBUG] [Thread-156451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:53:25.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:25.131 [DEBUG] [Thread-156451] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:25.132 [DEBUG] [Thread-156451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:25.132 [DEBUG] [Thread-156451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:25.132 [DEBUG] [Thread-156451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:53:25.132 [DEBUG] [Thread-156451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:25.157 [INFO] [Thread-156451] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:25.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:25.950 [DEBUG] [Thread-156451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:25.950 [DEBUG] [Thread-156451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:25.950 [DEBUG] [Thread-156451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:53:25.991 [DEBUG] [Thread-156451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:25.991 [DEBUG] [Thread-156451] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:25.994 [DEBUG] [Thread-156451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:26.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:26.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:53:26.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:53:26.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:53:26.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:26.013 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:53:26.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:26.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:26.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:53:26.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.453195 -999.00  +13.70   7.68     49   +3.40 1 1 1 1 1   888    0 10.10 -2.21 ----- 12.2 7.7 144.3 11.6 22.4 -25.0 21.5 -25.3 22.0 -25.2 23.3 -25.4
2025-09-29T12:53:26.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:53:26.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:53:26.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.453195
2025-09-29T12:53:26.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:53:26.015 [DEBUG] [Thread-156451] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:53:26.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:53:26.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:53:26.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:53:26.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:53:26.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:52:53', tmtdew=11.48, humidity=45.65, cloud=0.0, wind=15.19, temperature=12.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:52:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:53:26.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:53:26.104 [DEBUG] [Thread-156454] [transport.py] [_log()] starting thread (client mode): 0x2b96cdc0
2025-09-29T12:53:26.105 [DEBUG] [Thread-156454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:26.119 [DEBUG] [Thread-156454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:53:26.119 [INFO] [Thread-156454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] Compression: none
2025-09-29T12:53:26.127 [DEBUG] [Thread-156454] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:26.182 [DEBUG] [Thread-156454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:26.182 [DEBUG] [Thread-156454] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:26.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:53:26.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:26.183 [DEBUG] [Thread-156454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:53:26.239 [DEBUG] [Thread-156454] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:26.239 [DEBUG] [Thread-156454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:26.239 [DEBUG] [Thread-156454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:26.239 [DEBUG] [Thread-156454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:53:26.239 [DEBUG] [Thread-156454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:26.257 [INFO] [Thread-156454] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:26.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:53:26.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:27.219 [DEBUG] [Thread-156454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:27.219 [DEBUG] [Thread-156454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:27.267 [DEBUG] [Thread-156454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:27.267 [DEBUG] [Thread-156454] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:27.275 [DEBUG] [Thread-156454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:27.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:27.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:53:27.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:53:27.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:27.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:27.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:27.307 [DEBUG] [Thread-156454] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:53:33.606 [DEBUG] [Thread-156456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:53:37.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:53:37.308 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:53:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:53:37.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 53, 25), 11.29, 46.32, 0.0, 17.34, 12.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:53:37.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:53:25
2025-09-29T12:53:37.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:53:38.146 [DEBUG] [Thread-156457] [transport.py] [_log()] starting thread (client mode): 0x2e34a860
2025-09-29T12:53:38.146 [DEBUG] [Thread-156457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:38.163 [DEBUG] [Thread-156457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:53:38.163 [INFO] [Thread-156457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:53:38.166 [DEBUG] [Thread-156457] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:38.166 [DEBUG] [Thread-156457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:53:38.166 [DEBUG] [Thread-156457] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:38.166 [DEBUG] [Thread-156457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:38.166 [DEBUG] [Thread-156457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] Compression: none
2025-09-29T12:53:38.167 [DEBUG] [Thread-156457] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:38.188 [DEBUG] [Thread-156457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:38.189 [DEBUG] [Thread-156457] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:38.189 [DEBUG] [Thread-156457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:53:38.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:53:38.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:38.192 [DEBUG] [Thread-156457] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:38.192 [DEBUG] [Thread-156457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:38.192 [DEBUG] [Thread-156457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:38.192 [DEBUG] [Thread-156457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:53:38.193 [DEBUG] [Thread-156457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:38.209 [INFO] [Thread-156457] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:38.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:38.796 [DEBUG] [Thread-156457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:38.796 [DEBUG] [Thread-156457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:38.796 [DEBUG] [Thread-156457] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:53:38.837 [DEBUG] [Thread-156457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:38.837 [DEBUG] [Thread-156457] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:38.839 [DEBUG] [Thread-156457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:38.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:38.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:53:38.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:53:38.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:53:38.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:38.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:53:38.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:38.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:53:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.453542 -999.00  +14.30  16.33     48   +3.50 1 1 1 1 1   888    0 10.25 -1.41 ----- 15.1 16.3 134.4 22.0 22.6 -26.6 21.6 -25.7 22.0 -26.4 23.3 -26.9
2025-09-29T12:53:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:53:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:53:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.453542
2025-09-29T12:53:38.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:53:38.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:53:38.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:53:38.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:53:38.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:53:38.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:53:25', tmtdew=11.29, humidity=46.32, cloud=0.0, wind=17.34, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:53:06.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:53:38.861 [DEBUG] [Thread-156457] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:53:38.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:53:38.969 [DEBUG] [Thread-156460] [transport.py] [_log()] starting thread (client mode): 0x2b956770
2025-09-29T12:53:38.969 [DEBUG] [Thread-156460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:38.984 [DEBUG] [Thread-156460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:53:38.984 [INFO] [Thread-156460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:53:38.991 [DEBUG] [Thread-156460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:38.992 [DEBUG] [Thread-156460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:53:38.992 [DEBUG] [Thread-156460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:38.992 [DEBUG] [Thread-156460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:38.992 [DEBUG] [Thread-156460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:38.992 [DEBUG] [Thread-156460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:38.992 [DEBUG] [Thread-156460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:38.992 [DEBUG] [Thread-156460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:38.992 [DEBUG] [Thread-156460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:38.993 [DEBUG] [Thread-156460] [transport.py] [_log()] Compression: none
2025-09-29T12:53:38.994 [DEBUG] [Thread-156460] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:39.055 [DEBUG] [Thread-156460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:39.056 [DEBUG] [Thread-156460] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:39.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:53:39.057 [DEBUG] [Thread-156460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:53:39.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:39.112 [DEBUG] [Thread-156460] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:39.112 [DEBUG] [Thread-156460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:39.112 [DEBUG] [Thread-156460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:39.112 [DEBUG] [Thread-156460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:53:39.112 [DEBUG] [Thread-156460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:39.131 [INFO] [Thread-156460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:39.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:53:39.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:40.082 [DEBUG] [Thread-156460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:40.082 [DEBUG] [Thread-156460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:40.130 [DEBUG] [Thread-156460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:40.130 [DEBUG] [Thread-156460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:40.139 [DEBUG] [Thread-156460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:40.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:40.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:53:40.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:53:40.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:40.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:40.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:40.172 [DEBUG] [Thread-156460] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:53:40.399 [DEBUG] [Thread-156462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:53:48.634 [DEBUG] [Thread-156463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:53:50.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:53:50.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:53:50.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:53:50.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 53, 25), 11.29, 46.32, 0.0, 17.34, 12.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:53:50.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:53:25
2025-09-29T12:53:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:53:50.895 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:53:50.895 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:53:51.004 [DEBUG] [Thread-156464] [transport.py] [_log()] starting thread (client mode): 0x2b9559c0
2025-09-29T12:53:51.004 [DEBUG] [Thread-156464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:51.026 [DEBUG] [Thread-156464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:53:51.026 [INFO] [Thread-156464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:53:51.030 [DEBUG] [Thread-156464] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:51.030 [DEBUG] [Thread-156464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:53:51.030 [DEBUG] [Thread-156464] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:51.030 [DEBUG] [Thread-156464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:51.030 [DEBUG] [Thread-156464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:51.030 [DEBUG] [Thread-156464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] Compression: none
2025-09-29T12:53:51.031 [DEBUG] [Thread-156464] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:51.048 [DEBUG] [Thread-156464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:51.049 [DEBUG] [Thread-156464] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:51.049 [DEBUG] [Thread-156464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:53:51.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:53:51.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:51.050 [DEBUG] [Thread-156464] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:51.050 [DEBUG] [Thread-156464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:51.050 [DEBUG] [Thread-156464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:51.050 [DEBUG] [Thread-156464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:53:51.050 [DEBUG] [Thread-156464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:51.066 [INFO] [Thread-156464] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:51.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:51.741 [DEBUG] [Thread-156464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:51.741 [DEBUG] [Thread-156464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:51.741 [DEBUG] [Thread-156464] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:53:51.782 [DEBUG] [Thread-156464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:51.783 [DEBUG] [Thread-156464] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:51.786 [DEBUG] [Thread-156464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:51.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:51.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:53:51.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:53:51.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:53:51.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:51.811 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:53:51.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:51.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:51.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:53:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.453542 -999.00  +14.30  16.33     48   +3.50 1 1 1 1 1   888    0 10.25 -1.41 ----- 15.1 16.3 134.4 22.0 22.6 -26.6 21.6 -25.7 22.0 -26.4 23.3 -26.9
2025-09-29T12:53:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:53:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:53:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.453542
2025-09-29T12:53:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:53:51.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:53:51.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:53:51.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:53:51.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:53:51.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:53:25', tmtdew=11.29, humidity=46.32, cloud=0.0, wind=17.34, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:53:06.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:53:51.813 [DEBUG] [Thread-156464] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:53:51.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:53:51.907 [DEBUG] [Thread-156467] [transport.py] [_log()] starting thread (client mode): 0x2b91f460
2025-09-29T12:53:51.907 [DEBUG] [Thread-156467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:53:51.922 [DEBUG] [Thread-156467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:53:51.922 [INFO] [Thread-156467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] client lang: <none>
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] server lang: <none>
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] kex follows: False
2025-09-29T12:53:51.930 [DEBUG] [Thread-156467] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:53:51.931 [DEBUG] [Thread-156467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:53:51.931 [DEBUG] [Thread-156467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:53:51.931 [DEBUG] [Thread-156467] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:53:51.931 [DEBUG] [Thread-156467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:53:51.931 [DEBUG] [Thread-156467] [transport.py] [_log()] Compression: none
2025-09-29T12:53:51.931 [DEBUG] [Thread-156467] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:53:51.991 [DEBUG] [Thread-156467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:53:51.992 [DEBUG] [Thread-156467] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:53:51.992 [DEBUG] [Thread-156467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:53:51.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:53:51.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:53:52.051 [DEBUG] [Thread-156467] [transport.py] [_log()] userauth is OK
2025-09-29T12:53:52.052 [DEBUG] [Thread-156467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:53:52.052 [DEBUG] [Thread-156467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:53:52.052 [DEBUG] [Thread-156467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:53:52.052 [DEBUG] [Thread-156467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:53:52.072 [INFO] [Thread-156467] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:53:52.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:53:52.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:53:52.998 [DEBUG] [Thread-156467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:53:52.998 [DEBUG] [Thread-156467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:53:53.046 [DEBUG] [Thread-156467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:53:53.046 [DEBUG] [Thread-156467] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:53:53.055 [DEBUG] [Thread-156467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:53:53.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:53:53.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:53:53.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:53:53.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:53:53.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:53:53.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:53:53.090 [DEBUG] [Thread-156467] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:54:03.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:54:03.089 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:54:03.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:54:03.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 53, 57), 11.58, 45.12, 0.0, 16.11, 13.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:54:03.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:53:57
2025-09-29T12:54:03.673 [DEBUG] [Thread-156469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:54:03.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:54:03.923 [DEBUG] [Thread-156470] [transport.py] [_log()] starting thread (client mode): 0x2b96a140
2025-09-29T12:54:03.923 [DEBUG] [Thread-156470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:54:03.943 [DEBUG] [Thread-156470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:54:03.943 [INFO] [Thread-156470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:54:03.946 [DEBUG] [Thread-156470] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:54:03.946 [DEBUG] [Thread-156470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:54:03.946 [DEBUG] [Thread-156470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:54:03.946 [DEBUG] [Thread-156470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:03.946 [DEBUG] [Thread-156470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:03.946 [DEBUG] [Thread-156470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:03.947 [DEBUG] [Thread-156470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:03.947 [DEBUG] [Thread-156470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:54:03.947 [DEBUG] [Thread-156470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:54:03.947 [DEBUG] [Thread-156470] [transport.py] [_log()] client lang: <none>
2025-09-29T12:54:03.947 [DEBUG] [Thread-156470] [transport.py] [_log()] server lang: <none>
2025-09-29T12:54:03.947 [DEBUG] [Thread-156470] [transport.py] [_log()] kex follows: False
2025-09-29T12:54:03.948 [DEBUG] [Thread-156470] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:54:03.948 [DEBUG] [Thread-156470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:54:03.948 [DEBUG] [Thread-156470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:54:03.948 [DEBUG] [Thread-156470] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:54:03.948 [DEBUG] [Thread-156470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:54:03.948 [DEBUG] [Thread-156470] [transport.py] [_log()] Compression: none
2025-09-29T12:54:03.948 [DEBUG] [Thread-156470] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:54:03.964 [DEBUG] [Thread-156470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:54:03.964 [DEBUG] [Thread-156470] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:54:03.965 [DEBUG] [Thread-156470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:54:03.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:54:03.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:54:04.008 [DEBUG] [Thread-156470] [transport.py] [_log()] userauth is OK
2025-09-29T12:54:04.009 [DEBUG] [Thread-156470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:54:04.009 [DEBUG] [Thread-156470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:54:04.009 [DEBUG] [Thread-156470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:54:04.009 [DEBUG] [Thread-156470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:54:04.042 [INFO] [Thread-156470] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:54:04.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:54:04.694 [DEBUG] [Thread-156470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:54:04.695 [DEBUG] [Thread-156470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:54:04.695 [DEBUG] [Thread-156470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:54:04.735 [DEBUG] [Thread-156470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:54:04.736 [DEBUG] [Thread-156470] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:54:04.739 [DEBUG] [Thread-156470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:54:04.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:54:04.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:54:04.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:54:04.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:54:04.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:54:04.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:54:04.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:54:04.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:54:04.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:54:04.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.453542 -999.00  +14.30  16.33     48   +3.50 1 1 1 1 1   888    0 10.25 -1.41 ----- 15.1 16.3 134.4 22.0 22.6 -26.6 21.6 -25.7 22.0 -26.4 23.3 -26.9
2025-09-29T12:54:04.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:54:04.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:54:04.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.453542
2025-09-29T12:54:04.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:54:04.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:54:04.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:54:04.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:54:04.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:54:04.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:53:57', tmtdew=11.58, humidity=45.12, cloud=0.0, wind=16.11, temperature=13.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:53:06.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:54:04.764 [DEBUG] [Thread-156470] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:54:04.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:54:04.860 [DEBUG] [Thread-156473] [transport.py] [_log()] starting thread (client mode): 0x2b954d90
2025-09-29T12:54:04.860 [DEBUG] [Thread-156473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:54:04.877 [DEBUG] [Thread-156473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:54:04.877 [INFO] [Thread-156473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:54:04.886 [DEBUG] [Thread-156473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:54:04.886 [DEBUG] [Thread-156473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:54:04.886 [DEBUG] [Thread-156473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:54:04.886 [DEBUG] [Thread-156473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:04.886 [DEBUG] [Thread-156473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] client lang: <none>
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] server lang: <none>
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] kex follows: False
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] Compression: none
2025-09-29T12:54:04.887 [DEBUG] [Thread-156473] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:54:04.944 [DEBUG] [Thread-156473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:54:04.945 [DEBUG] [Thread-156473] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:54:04.945 [DEBUG] [Thread-156473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:54:04.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:54:04.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:54:05.000 [DEBUG] [Thread-156473] [transport.py] [_log()] userauth is OK
2025-09-29T12:54:05.001 [DEBUG] [Thread-156473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:54:05.001 [DEBUG] [Thread-156473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:54:05.001 [DEBUG] [Thread-156473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:54:05.001 [DEBUG] [Thread-156473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:54:05.020 [INFO] [Thread-156473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:54:05.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:54:05.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:54:05.934 [DEBUG] [Thread-156473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:54:05.934 [DEBUG] [Thread-156473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:54:05.982 [DEBUG] [Thread-156473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:54:05.982 [DEBUG] [Thread-156473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:54:05.991 [DEBUG] [Thread-156473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:54:06.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:54:06.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:54:06.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:54:06.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:54:06.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:54:06.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:54:06.027 [DEBUG] [Thread-156473] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:54:16.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:54:16.030 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:54:16.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:54:16.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 53, 57), 11.58, 45.12, 0.0, 16.11, 13.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:54:16.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:53:57
2025-09-29T12:54:16.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:54:16.856 [DEBUG] [Thread-156475] [transport.py] [_log()] starting thread (client mode): 0x2e34a830
2025-09-29T12:54:16.856 [DEBUG] [Thread-156475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:54:16.876 [DEBUG] [Thread-156475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:54:16.876 [INFO] [Thread-156475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:54:16.879 [DEBUG] [Thread-156475] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] client lang: <none>
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] server lang: <none>
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] kex follows: False
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] Compression: none
2025-09-29T12:54:16.880 [DEBUG] [Thread-156475] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:54:16.888 [DEBUG] [Thread-156475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:54:16.888 [DEBUG] [Thread-156475] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:54:16.889 [DEBUG] [Thread-156475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:54:16.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:54:16.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:54:16.898 [DEBUG] [Thread-156475] [transport.py] [_log()] userauth is OK
2025-09-29T12:54:16.898 [DEBUG] [Thread-156475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:54:16.898 [DEBUG] [Thread-156475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:54:16.898 [DEBUG] [Thread-156475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:54:16.898 [DEBUG] [Thread-156475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:54:16.920 [INFO] [Thread-156475] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:54:16.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:54:17.597 [DEBUG] [Thread-156475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:54:17.597 [DEBUG] [Thread-156475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:54:17.598 [DEBUG] [Thread-156475] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:54:17.638 [DEBUG] [Thread-156475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:54:17.638 [DEBUG] [Thread-156475] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:54:17.641 [DEBUG] [Thread-156475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:54:17.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:54:17.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:54:17.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:54:17.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:54:17.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:54:17.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:54:17.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:54:17.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:54:17.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:54:17.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.454237 -999.00  +13.80  15.80     48   +3.00 1 1 1 1 1   888    0 10.45 6.86 ----- 16.3 15.8 125.6 19.5 22.4 -25.8 21.6 -25.9 22.0 -26.6 23.1 -27.9
2025-09-29T12:54:17.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:54:17.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:54:17.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.454237
2025-09-29T12:54:17.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:54:17.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:54:17.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:54:17.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:54:17.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:54:17.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:53:57', tmtdew=11.58, humidity=45.12, cloud=0.0, wind=16.11, temperature=13.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:54:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:54:17.665 [DEBUG] [Thread-156475] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:54:17.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:54:17.759 [DEBUG] [Thread-156478] [transport.py] [_log()] starting thread (client mode): 0x2b91d720
2025-09-29T12:54:17.759 [DEBUG] [Thread-156478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:54:17.774 [DEBUG] [Thread-156478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:54:17.774 [INFO] [Thread-156478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] client lang: <none>
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] server lang: <none>
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] kex follows: False
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] Compression: none
2025-09-29T12:54:17.782 [DEBUG] [Thread-156478] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:54:17.839 [DEBUG] [Thread-156478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:54:17.839 [DEBUG] [Thread-156478] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:54:17.840 [DEBUG] [Thread-156478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:54:17.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:54:17.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:54:17.895 [DEBUG] [Thread-156478] [transport.py] [_log()] userauth is OK
2025-09-29T12:54:17.896 [DEBUG] [Thread-156478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:54:17.896 [DEBUG] [Thread-156478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:54:17.896 [DEBUG] [Thread-156478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:54:17.896 [DEBUG] [Thread-156478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:54:17.915 [INFO] [Thread-156478] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:54:17.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:54:17.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:54:18.702 [DEBUG] [Thread-156480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:54:18.896 [DEBUG] [Thread-156478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:54:18.897 [DEBUG] [Thread-156478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:54:18.944 [DEBUG] [Thread-156478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:54:18.944 [DEBUG] [Thread-156478] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:54:18.953 [DEBUG] [Thread-156478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:54:18.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:54:18.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:54:18.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:54:18.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:54:18.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:54:18.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:54:18.988 [DEBUG] [Thread-156478] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:54:28.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:54:28.991 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:54:28.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:54:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 53, 57), 11.58, 45.12, 0.0, 16.11, 13.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:54:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:53:57
2025-09-29T12:54:29.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:54:29.807 [DEBUG] [Thread-156481] [transport.py] [_log()] starting thread (client mode): 0x2b91e3b0
2025-09-29T12:54:29.807 [DEBUG] [Thread-156481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:54:29.827 [DEBUG] [Thread-156481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:54:29.827 [INFO] [Thread-156481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:54:29.830 [DEBUG] [Thread-156481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] client lang: <none>
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] server lang: <none>
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] kex follows: False
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:54:29.831 [DEBUG] [Thread-156481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:54:29.832 [DEBUG] [Thread-156481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:54:29.832 [DEBUG] [Thread-156481] [transport.py] [_log()] Compression: none
2025-09-29T12:54:29.832 [DEBUG] [Thread-156481] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:54:29.849 [DEBUG] [Thread-156481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:54:29.850 [DEBUG] [Thread-156481] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:54:29.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:54:29.851 [DEBUG] [Thread-156481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:54:29.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:54:29.892 [DEBUG] [Thread-156481] [transport.py] [_log()] userauth is OK
2025-09-29T12:54:29.892 [DEBUG] [Thread-156481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:54:29.892 [DEBUG] [Thread-156481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:54:29.892 [DEBUG] [Thread-156481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:54:29.892 [DEBUG] [Thread-156481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:54:29.919 [INFO] [Thread-156481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:54:29.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:54:30.572 [DEBUG] [Thread-156481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:54:30.573 [DEBUG] [Thread-156481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:54:30.573 [DEBUG] [Thread-156481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:54:30.614 [DEBUG] [Thread-156481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:54:30.614 [DEBUG] [Thread-156481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:54:30.616 [DEBUG] [Thread-156481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:54:30.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:54:30.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:54:30.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:54:30.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:54:30.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:54:30.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:54:30.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:54:30.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:54:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:54:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.454237 -999.00  +13.80  15.80     48   +3.00 1 1 1 1 1   888    0 10.45 6.86 ----- 16.3 15.8 125.6 19.5 22.4 -25.8 21.6 -25.9 22.0 -26.6 23.1 -27.9
2025-09-29T12:54:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:54:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:54:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.454237
2025-09-29T12:54:30.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:54:30.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:54:30.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:54:30.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:54:30.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:54:30.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:53:57', tmtdew=11.58, humidity=45.12, cloud=0.0, wind=16.11, temperature=13.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:54:06.077', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:54:30.633 [DEBUG] [Thread-156481] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:54:30.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:54:33.752 [DEBUG] [Thread-156484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:54:40.451 [DEBUG] [Thread-156485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:54:48.781 [DEBUG] [Thread-156486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:54:51.034 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:54:51.035 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:55:03.808 [DEBUG] [Thread-156487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:55:18.836 [DEBUG] [Thread-156488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:55:33.865 [DEBUG] [Thread-156489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:55:40.479 [DEBUG] [Thread-156490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:55:48.887 [DEBUG] [Thread-156491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:55:51.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:55:51.186 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:56:03.910 [DEBUG] [Thread-156492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:56:18.937 [DEBUG] [Thread-156493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:56:33.964 [DEBUG] [Thread-156494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:56:40.514 [DEBUG] [Thread-156495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:56:42.682 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T12:56:48.999 [DEBUG] [Thread-156496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:56:51.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:56:51.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:56:52.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:56:52.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:56:52.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:56:53.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 56, 37), 11.98, 44.24, 0.0, 13.91, 13.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:56:53.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:56:37
2025-09-29T12:56:53.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:56:53.564 [DEBUG] [Thread-156497] [transport.py] [_log()] starting thread (client mode): 0x2b969a50
2025-09-29T12:56:53.565 [DEBUG] [Thread-156497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:56:53.586 [DEBUG] [Thread-156497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:56:53.586 [INFO] [Thread-156497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:56:53.589 [DEBUG] [Thread-156497] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:56:53.590 [DEBUG] [Thread-156497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] client lang: <none>
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] server lang: <none>
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] kex follows: False
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] Compression: none
2025-09-29T12:56:53.591 [DEBUG] [Thread-156497] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:56:53.607 [DEBUG] [Thread-156497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:56:53.607 [DEBUG] [Thread-156497] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:56:53.608 [DEBUG] [Thread-156497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:56:53.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:56:53.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:56:53.609 [DEBUG] [Thread-156497] [transport.py] [_log()] userauth is OK
2025-09-29T12:56:53.609 [DEBUG] [Thread-156497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:56:53.609 [DEBUG] [Thread-156497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:56:53.609 [DEBUG] [Thread-156497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:56:53.609 [DEBUG] [Thread-156497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:56:53.618 [INFO] [Thread-156497] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:56:53.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:56:54.243 [DEBUG] [Thread-156497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:56:54.243 [DEBUG] [Thread-156497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:56:54.244 [DEBUG] [Thread-156497] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:56:54.284 [DEBUG] [Thread-156497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:56:54.284 [DEBUG] [Thread-156497] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:56:54.287 [DEBUG] [Thread-156497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:56:54.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:56:54.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:56:54.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:56:54.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:56:54.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:56:54.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:56:54.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:56:54.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:56:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:56:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.454584 -999.00  +13.50  14.13     48   +3.00 1 1 1 1 1   888    0 10.76 8.94 ----- 10.5 14.1 106.2 17.1 22.3 -27.1 21.6 -26.5 22.0 -26.8 23.2 -26.9
2025-09-29T12:56:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:56:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:56:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.454584
2025-09-29T12:56:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:56:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:56:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:56:54.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:56:54.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:56:54.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:56:37', tmtdew=11.98, humidity=44.24, cloud=0.0, wind=13.91, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:54:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:56:54.313 [DEBUG] [Thread-156497] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:56:54.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:56:54.409 [DEBUG] [Thread-156500] [transport.py] [_log()] starting thread (client mode): 0x2e34a2f0
2025-09-29T12:56:54.409 [DEBUG] [Thread-156500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:56:54.427 [DEBUG] [Thread-156500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:56:54.427 [INFO] [Thread-156500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] client lang: <none>
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] server lang: <none>
2025-09-29T12:56:54.435 [DEBUG] [Thread-156500] [transport.py] [_log()] kex follows: False
2025-09-29T12:56:54.436 [DEBUG] [Thread-156500] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:56:54.436 [DEBUG] [Thread-156500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:56:54.436 [DEBUG] [Thread-156500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:56:54.436 [DEBUG] [Thread-156500] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:56:54.436 [DEBUG] [Thread-156500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:56:54.436 [DEBUG] [Thread-156500] [transport.py] [_log()] Compression: none
2025-09-29T12:56:54.436 [DEBUG] [Thread-156500] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:56:54.491 [DEBUG] [Thread-156500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:56:54.491 [DEBUG] [Thread-156500] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:56:54.492 [DEBUG] [Thread-156500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:56:54.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:56:54.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:56:54.548 [DEBUG] [Thread-156500] [transport.py] [_log()] userauth is OK
2025-09-29T12:56:54.548 [DEBUG] [Thread-156500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:56:54.548 [DEBUG] [Thread-156500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:56:54.548 [DEBUG] [Thread-156500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:56:54.548 [DEBUG] [Thread-156500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:56:54.567 [INFO] [Thread-156500] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:56:54.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:56:54.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:56:55.528 [DEBUG] [Thread-156500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:56:55.528 [DEBUG] [Thread-156500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:56:55.576 [DEBUG] [Thread-156500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:56:55.576 [DEBUG] [Thread-156500] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:56:55.584 [DEBUG] [Thread-156500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:56:55.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:56:55.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:56:55.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:56:55.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:56:55.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:56:55.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:56:55.616 [DEBUG] [Thread-156500] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:57:04.030 [DEBUG] [Thread-156502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:57:05.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:57:05.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:57:05.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:57:06.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 56, 37), 11.98, 44.24, 0.0, 13.91, 13.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:57:06.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:56:37
2025-09-29T12:57:06.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:57:06.476 [DEBUG] [Thread-156503] [transport.py] [_log()] starting thread (client mode): 0x2b9695a0
2025-09-29T12:57:06.476 [DEBUG] [Thread-156503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:57:06.499 [DEBUG] [Thread-156503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:57:06.499 [INFO] [Thread-156503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:57:06.500 [DEBUG] [Thread-156503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:57:06.500 [DEBUG] [Thread-156503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] client lang: <none>
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] server lang: <none>
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] kex follows: False
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] Compression: none
2025-09-29T12:57:06.501 [DEBUG] [Thread-156503] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:57:06.513 [DEBUG] [Thread-156503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:57:06.513 [DEBUG] [Thread-156503] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:57:06.514 [DEBUG] [Thread-156503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:57:06.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:57:06.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:57:06.516 [DEBUG] [Thread-156503] [transport.py] [_log()] userauth is OK
2025-09-29T12:57:06.516 [DEBUG] [Thread-156503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:57:06.516 [DEBUG] [Thread-156503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:57:06.516 [DEBUG] [Thread-156503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:57:06.516 [DEBUG] [Thread-156503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:57:06.534 [INFO] [Thread-156503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:57:06.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:57:07.130 [DEBUG] [Thread-156503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:57:07.130 [DEBUG] [Thread-156503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:57:07.131 [DEBUG] [Thread-156503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:57:07.171 [DEBUG] [Thread-156503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:57:07.172 [DEBUG] [Thread-156503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:57:07.175 [DEBUG] [Thread-156503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:57:07.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:57:07.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:57:07.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:57:07.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:57:07.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:57:07.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:57:07.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:57:07.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:57:07.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:57:07.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.454584 -999.00  +13.50  14.13     48   +3.00 1 1 1 1 1   888    0 10.76 8.94 ----- 10.5 14.1 106.2 17.1 22.3 -27.1 21.6 -26.5 22.0 -26.8 23.2 -26.9
2025-09-29T12:57:07.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:57:07.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:57:07.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.454584
2025-09-29T12:57:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:57:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:57:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:57:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:57:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:57:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:56:37', tmtdew=11.98, humidity=44.24, cloud=0.0, wind=13.91, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:54:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:57:07.200 [DEBUG] [Thread-156503] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:57:07.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:57:07.294 [DEBUG] [Thread-156506] [transport.py] [_log()] starting thread (client mode): 0x2b90c430
2025-09-29T12:57:07.294 [DEBUG] [Thread-156506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:57:07.309 [DEBUG] [Thread-156506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:57:07.309 [INFO] [Thread-156506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:57:07.316 [DEBUG] [Thread-156506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] client lang: <none>
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] server lang: <none>
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] kex follows: False
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] Compression: none
2025-09-29T12:57:07.317 [DEBUG] [Thread-156506] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:57:07.376 [DEBUG] [Thread-156506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:57:07.376 [DEBUG] [Thread-156506] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:57:07.377 [DEBUG] [Thread-156506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:57:07.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:57:07.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:57:07.431 [DEBUG] [Thread-156506] [transport.py] [_log()] userauth is OK
2025-09-29T12:57:07.432 [DEBUG] [Thread-156506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:57:07.432 [DEBUG] [Thread-156506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:57:07.432 [DEBUG] [Thread-156506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:57:07.432 [DEBUG] [Thread-156506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:57:07.454 [INFO] [Thread-156506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:57:07.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:57:07.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:57:08.392 [DEBUG] [Thread-156506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:57:08.392 [DEBUG] [Thread-156506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:57:08.440 [DEBUG] [Thread-156506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:57:08.440 [DEBUG] [Thread-156506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:57:08.449 [DEBUG] [Thread-156506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:57:08.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:57:08.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:57:08.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:57:08.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:57:08.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:57:08.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:57:08.484 [DEBUG] [Thread-156506] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:57:18.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:57:18.487 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:57:18.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:57:19.081 [DEBUG] [Thread-156508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:57:19.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 57, 9), 12.0, 44.21, 0.0, 15.55, 13.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:57:19.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:57:09
2025-09-29T12:57:19.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:57:19.345 [DEBUG] [Thread-156509] [transport.py] [_log()] starting thread (client mode): 0x2b9c0130
2025-09-29T12:57:19.345 [DEBUG] [Thread-156509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:57:19.364 [DEBUG] [Thread-156509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:57:19.365 [INFO] [Thread-156509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:57:19.368 [DEBUG] [Thread-156509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] client lang: <none>
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] server lang: <none>
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] kex follows: False
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] Compression: none
2025-09-29T12:57:19.369 [DEBUG] [Thread-156509] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:57:19.377 [DEBUG] [Thread-156509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:57:19.378 [DEBUG] [Thread-156509] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:57:19.378 [DEBUG] [Thread-156509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:57:19.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:57:19.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:57:19.380 [DEBUG] [Thread-156509] [transport.py] [_log()] userauth is OK
2025-09-29T12:57:19.380 [DEBUG] [Thread-156509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:57:19.380 [DEBUG] [Thread-156509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:57:19.380 [DEBUG] [Thread-156509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:57:19.380 [DEBUG] [Thread-156509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:57:19.397 [INFO] [Thread-156509] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:57:19.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:57:20.041 [DEBUG] [Thread-156509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:57:20.050 [DEBUG] [Thread-156509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:57:20.050 [DEBUG] [Thread-156509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:57:20.082 [DEBUG] [Thread-156509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:57:20.082 [DEBUG] [Thread-156509] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:57:20.085 [DEBUG] [Thread-156509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:57:20.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:57:20.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:57:20.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:57:20.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:57:20.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:57:20.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:57:20.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:57:20.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:57:20.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:57:20.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.454584 -999.00  +13.50  14.13     48   +3.00 1 1 1 1 1   888    0 10.76 8.94 ----- 10.5 14.1 106.2 17.1 22.3 -27.1 21.6 -26.5 22.0 -26.8 23.2 -26.9
2025-09-29T12:57:20.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:57:20.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:57:20.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.454584
2025-09-29T12:57:20.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:57:20.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:57:20.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:57:20.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:57:20.108 [DEBUG] [Thread-156509] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:57:20.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:57:20.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:57:09', tmtdew=12.0, humidity=44.21, cloud=0.0, wind=15.55, temperature=13.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:54:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:57:20.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:57:20.204 [DEBUG] [Thread-156512] [transport.py] [_log()] starting thread (client mode): 0x28707eb0
2025-09-29T12:57:20.204 [DEBUG] [Thread-156512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:57:20.219 [DEBUG] [Thread-156512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:57:20.219 [INFO] [Thread-156512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:57:20.235 [DEBUG] [Thread-156512] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:57:20.235 [DEBUG] [Thread-156512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:57:20.235 [DEBUG] [Thread-156512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] client lang: <none>
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] server lang: <none>
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] kex follows: False
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] Compression: none
2025-09-29T12:57:20.236 [DEBUG] [Thread-156512] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:57:20.283 [DEBUG] [Thread-156512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:57:20.283 [DEBUG] [Thread-156512] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:57:20.284 [DEBUG] [Thread-156512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:57:20.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:57:20.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:57:20.340 [DEBUG] [Thread-156512] [transport.py] [_log()] userauth is OK
2025-09-29T12:57:20.340 [DEBUG] [Thread-156512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:57:20.340 [DEBUG] [Thread-156512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:57:20.340 [DEBUG] [Thread-156512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:57:20.340 [DEBUG] [Thread-156512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:57:20.359 [INFO] [Thread-156512] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:57:20.359 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:57:20.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:57:21.316 [DEBUG] [Thread-156512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:57:21.316 [DEBUG] [Thread-156512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:57:21.364 [DEBUG] [Thread-156512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:57:21.364 [DEBUG] [Thread-156512] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:57:21.373 [DEBUG] [Thread-156512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:57:21.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:57:21.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:57:21.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:57:21.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:57:21.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:57:21.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:57:21.408 [DEBUG] [Thread-156512] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:57:31.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:57:31.410 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:57:31.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:57:32.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 57, 9), 12.0, 44.21, 0.0, 15.55, 13.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:57:32.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:57:09
2025-09-29T12:57:32.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:57:32.279 [DEBUG] [Thread-156514] [transport.py] [_log()] starting thread (client mode): 0x2b9cabc0
2025-09-29T12:57:32.279 [DEBUG] [Thread-156514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:57:32.298 [DEBUG] [Thread-156514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:57:32.298 [INFO] [Thread-156514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:57:32.301 [DEBUG] [Thread-156514] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:57:32.301 [DEBUG] [Thread-156514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:57:32.301 [DEBUG] [Thread-156514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] client lang: <none>
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] server lang: <none>
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] kex follows: False
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] Compression: none
2025-09-29T12:57:32.302 [DEBUG] [Thread-156514] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:57:32.317 [DEBUG] [Thread-156514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:57:32.317 [DEBUG] [Thread-156514] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:57:32.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:57:32.318 [DEBUG] [Thread-156514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:57:32.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:57:32.320 [DEBUG] [Thread-156514] [transport.py] [_log()] userauth is OK
2025-09-29T12:57:32.320 [DEBUG] [Thread-156514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:57:32.320 [DEBUG] [Thread-156514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:57:32.320 [DEBUG] [Thread-156514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:57:32.320 [DEBUG] [Thread-156514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:57:32.335 [INFO] [Thread-156514] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:57:32.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:57:32.927 [DEBUG] [Thread-156514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:57:32.928 [DEBUG] [Thread-156514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:57:32.928 [DEBUG] [Thread-156514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:57:32.969 [DEBUG] [Thread-156514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:57:32.969 [DEBUG] [Thread-156514] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:57:32.972 [DEBUG] [Thread-156514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:57:32.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:57:32.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:57:32.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:57:32.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:57:32.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:57:32.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:57:32.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:57:32.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:57:32.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:57:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.454584 -999.00  +13.50  14.13     48   +3.00 1 1 1 1 1   888    0 10.76 8.94 ----- 10.5 14.1 106.2 17.1 22.3 -27.1 21.6 -26.5 22.0 -26.8 23.2 -26.9
2025-09-29T12:57:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:57:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:57:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.454584
2025-09-29T12:57:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:57:32.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:57:32.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:57:32.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:57:32.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:57:32.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:57:09', tmtdew=12.0, humidity=44.21, cloud=0.0, wind=15.55, temperature=13.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:54:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:57:32.995 [DEBUG] [Thread-156514] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:57:33.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:57:33.089 [DEBUG] [Thread-156517] [transport.py] [_log()] starting thread (client mode): 0x2b90ef20
2025-09-29T12:57:33.089 [DEBUG] [Thread-156517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:57:33.103 [DEBUG] [Thread-156517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T12:57:33.103 [INFO] [Thread-156517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] client lang: <none>
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] server lang: <none>
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] kex follows: False
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] Compression: none
2025-09-29T12:57:33.111 [DEBUG] [Thread-156517] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:57:33.167 [DEBUG] [Thread-156517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:57:33.167 [DEBUG] [Thread-156517] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:57:33.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T12:57:33.168 [DEBUG] [Thread-156517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T12:57:33.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:57:33.223 [DEBUG] [Thread-156517] [transport.py] [_log()] userauth is OK
2025-09-29T12:57:33.224 [DEBUG] [Thread-156517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:57:33.224 [DEBUG] [Thread-156517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:57:33.224 [DEBUG] [Thread-156517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T12:57:33.224 [DEBUG] [Thread-156517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:57:33.242 [INFO] [Thread-156517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:57:33.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T12:57:33.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:57:34.107 [DEBUG] [Thread-156519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:57:34.167 [DEBUG] [Thread-156517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:57:34.167 [DEBUG] [Thread-156517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:57:34.214 [DEBUG] [Thread-156517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:57:34.215 [DEBUG] [Thread-156517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:57:34.222 [DEBUG] [Thread-156517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:57:34.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:57:34.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T12:57:34.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T12:57:34.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:57:34.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:57:34.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:57:34.253 [DEBUG] [Thread-156517] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:57:40.565 [DEBUG] [Thread-156520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:57:44.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T12:57:44.256 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T12:57:44.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T12:57:44.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 57, 41), 12.08, 43.93, 0.0, 13.06, 13.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T12:57:44.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:57:41
2025-09-29T12:57:44.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T12:57:45.111 [DEBUG] [Thread-156521] [transport.py] [_log()] starting thread (client mode): 0x2b9c88e0
2025-09-29T12:57:45.111 [DEBUG] [Thread-156521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T12:57:45.132 [DEBUG] [Thread-156521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T12:57:45.132 [INFO] [Thread-156521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] client lang: <none>
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] server lang: <none>
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] kex follows: False
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] Compression: none
2025-09-29T12:57:45.136 [DEBUG] [Thread-156521] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T12:57:45.152 [DEBUG] [Thread-156521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T12:57:45.153 [DEBUG] [Thread-156521] [transport.py] [_log()] Switch to new keys ...
2025-09-29T12:57:45.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T12:57:45.154 [DEBUG] [Thread-156521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T12:57:45.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T12:57:45.156 [DEBUG] [Thread-156521] [transport.py] [_log()] userauth is OK
2025-09-29T12:57:45.156 [DEBUG] [Thread-156521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T12:57:45.156 [DEBUG] [Thread-156521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T12:57:45.156 [DEBUG] [Thread-156521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T12:57:45.156 [DEBUG] [Thread-156521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T12:57:45.179 [INFO] [Thread-156521] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T12:57:45.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T12:57:45.945 [DEBUG] [Thread-156521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T12:57:45.945 [DEBUG] [Thread-156521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T12:57:45.945 [DEBUG] [Thread-156521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T12:57:45.986 [DEBUG] [Thread-156521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T12:57:45.986 [DEBUG] [Thread-156521] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T12:57:45.989 [DEBUG] [Thread-156521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T12:57:46.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T12:57:46.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T12:57:46.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T12:57:46.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T12:57:46.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T12:57:46.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T12:57:46.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T12:57:46.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T12:57:46.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T12:57:46.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.454584 -999.00  +13.50  14.13     48   +3.00 1 1 1 1 1   888    0 10.76 8.94 ----- 10.5 14.1 106.2 17.1 22.3 -27.1 21.6 -26.5 22.0 -26.8 23.2 -26.9
2025-09-29T12:57:46.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T12:57:46.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T12:57:46.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.454584
2025-09-29T12:57:46.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T12:57:46.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T12:57:46.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T12:57:46.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T12:57:46.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T12:57:46.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:57:41', tmtdew=12.08, humidity=43.93, cloud=0.0, wind=13.06, temperature=13.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:54:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T12:57:46.017 [DEBUG] [Thread-156521] [transport.py] [_log()] EOF in transport thread
2025-09-29T12:57:46.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T12:57:49.152 [DEBUG] [Thread-156524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:57:51.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:57:51.471 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:58:04.205 [DEBUG] [Thread-156525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:58:19.238 [DEBUG] [Thread-156526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:58:34.273 [DEBUG] [Thread-156527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:58:40.619 [DEBUG] [Thread-156528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:58:49.309 [DEBUG] [Thread-156529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:58:51.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:58:51.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:59:04.340 [DEBUG] [Thread-156530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:59:19.375 [DEBUG] [Thread-156531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:59:34.405 [DEBUG] [Thread-156532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:59:40.671 [DEBUG] [Thread-156533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:59:49.433 [DEBUG] [Thread-156534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:59:51.753 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:59:51.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T12:59:59.291 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T13:00:04.463 [DEBUG] [Thread-156535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:00:09.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:00:09.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:00:09.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:00:09.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 12, 59, 48), 12.16, 43.34, 0.0, 13.99, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:00:09.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 12:59:48
2025-09-29T13:00:10.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:00:10.198 [DEBUG] [Thread-156536] [transport.py] [_log()] starting thread (client mode): 0x2b9cbd00
2025-09-29T13:00:10.198 [DEBUG] [Thread-156536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:00:10.210 [DEBUG] [Thread-156536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:00:10.210 [INFO] [Thread-156536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:00:10.212 [DEBUG] [Thread-156536] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:00:10.212 [DEBUG] [Thread-156536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:00:10.212 [DEBUG] [Thread-156536] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] client lang: <none>
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] server lang: <none>
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] kex follows: False
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] Compression: none
2025-09-29T13:00:10.213 [DEBUG] [Thread-156536] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:00:10.223 [DEBUG] [Thread-156536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:00:10.224 [DEBUG] [Thread-156536] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:00:10.224 [DEBUG] [Thread-156536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:00:10.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:00:10.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:00:10.225 [DEBUG] [Thread-156536] [transport.py] [_log()] userauth is OK
2025-09-29T13:00:10.225 [DEBUG] [Thread-156536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:00:10.225 [DEBUG] [Thread-156536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:00:10.225 [DEBUG] [Thread-156536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:00:10.225 [DEBUG] [Thread-156536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:00:10.234 [INFO] [Thread-156536] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:00:10.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:00:15.991 [DEBUG] [Thread-156536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:00:15.991 [DEBUG] [Thread-156536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:00:15.992 [DEBUG] [Thread-156536] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:00:16.032 [DEBUG] [Thread-156536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:00:16.032 [DEBUG] [Thread-156536] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:00:16.035 [DEBUG] [Thread-156536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:00:16.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:00:16.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:00:16.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:00:16.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:00:16.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:00:16.059 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:00:16.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:00:16.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:00:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:00:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.454584 -999.00  +13.50  14.13     48   +3.00 1 1 1 1 1   888    0 10.76 8.94 ----- 10.5 14.1 106.2 17.1 22.3 -27.1 21.6 -26.5 22.0 -26.8 23.2 -26.9
2025-09-29T13:00:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:00:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:00:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.454584
2025-09-29T13:00:16.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:00:16.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:00:16.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:00:16.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:00:16.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:00:16.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T12:59:48', tmtdew=12.16, humidity=43.34, cloud=0.0, wind=13.99, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T10:54:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:00:16.062 [DEBUG] [Thread-156536] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:00:16.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:00:16.159 [DEBUG] [Thread-156539] [transport.py] [_log()] starting thread (client mode): 0x28704e50
2025-09-29T13:00:16.159 [DEBUG] [Thread-156539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:00:16.174 [DEBUG] [Thread-156539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:00:16.174 [INFO] [Thread-156539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:00:16.181 [DEBUG] [Thread-156539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] client lang: <none>
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] server lang: <none>
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] kex follows: False
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:00:16.182 [DEBUG] [Thread-156539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:00:16.183 [DEBUG] [Thread-156539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:00:16.183 [DEBUG] [Thread-156539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:00:16.183 [DEBUG] [Thread-156539] [transport.py] [_log()] Compression: none
2025-09-29T13:00:16.183 [DEBUG] [Thread-156539] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:00:16.239 [DEBUG] [Thread-156539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:00:16.239 [DEBUG] [Thread-156539] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:00:16.240 [DEBUG] [Thread-156539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:00:16.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:00:16.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:00:16.295 [DEBUG] [Thread-156539] [transport.py] [_log()] userauth is OK
2025-09-29T13:00:16.295 [DEBUG] [Thread-156539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:00:16.295 [DEBUG] [Thread-156539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:00:16.295 [DEBUG] [Thread-156539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:00:16.296 [DEBUG] [Thread-156539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:00:16.314 [INFO] [Thread-156539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:00:16.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:00:16.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:00:17.299 [DEBUG] [Thread-156539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:00:17.299 [DEBUG] [Thread-156539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:00:17.347 [DEBUG] [Thread-156539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:00:17.347 [DEBUG] [Thread-156539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:00:17.356 [DEBUG] [Thread-156539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:00:17.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:00:17.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:00:17.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:00:17.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:00:17.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:00:17.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:00:17.390 [DEBUG] [Thread-156539] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:00:19.492 [DEBUG] [Thread-156541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:00:27.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:00:27.393 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:00:27.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:00:28.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 0, 20), 12.19, 43.28, 0.0, 14.95, 13.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:00:28.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:00:20
2025-09-29T13:00:28.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:00:28.258 [DEBUG] [Thread-156542] [transport.py] [_log()] starting thread (client mode): 0x2b9c8070
2025-09-29T13:00:28.258 [DEBUG] [Thread-156542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:00:28.279 [DEBUG] [Thread-156542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:00:28.279 [INFO] [Thread-156542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:00:28.282 [DEBUG] [Thread-156542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:00:28.282 [DEBUG] [Thread-156542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:00:28.282 [DEBUG] [Thread-156542] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:00:28.282 [DEBUG] [Thread-156542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:28.282 [DEBUG] [Thread-156542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:28.282 [DEBUG] [Thread-156542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] client lang: <none>
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] server lang: <none>
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] kex follows: False
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] Compression: none
2025-09-29T13:00:28.283 [DEBUG] [Thread-156542] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:00:28.302 [DEBUG] [Thread-156542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:00:28.303 [DEBUG] [Thread-156542] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:00:28.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:00:28.304 [DEBUG] [Thread-156542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:00:28.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:00:28.306 [DEBUG] [Thread-156542] [transport.py] [_log()] userauth is OK
2025-09-29T13:00:28.306 [DEBUG] [Thread-156542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:00:28.306 [DEBUG] [Thread-156542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:00:28.306 [DEBUG] [Thread-156542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:00:28.306 [DEBUG] [Thread-156542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:00:28.323 [INFO] [Thread-156542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:00:28.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:00:29.003 [DEBUG] [Thread-156542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:00:29.003 [DEBUG] [Thread-156542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:00:29.004 [DEBUG] [Thread-156542] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:00:29.044 [DEBUG] [Thread-156542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:00:29.044 [DEBUG] [Thread-156542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:00:29.047 [DEBUG] [Thread-156542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:00:29.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:00:29.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:00:29.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:00:29.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:00:29.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:00:29.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:00:29.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:00:29.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:00:29.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:00:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.458403 -999.00  +13.30   7.18     49   +2.80 1 1 1 1 1   888    0 11.19 24.83 NA 7.9 7.2 85.7 16.3 21.8 -26.7 21.6 -26.3 22.1 -26.6 23.2 -26.3
2025-09-29T13:00:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:00:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:00:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.458403
2025-09-29T13:00:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:00:29.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:00:29.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:00:29.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:00:29.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:00:29.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:00:20', tmtdew=12.19, humidity=43.28, cloud=0.0, wind=14.95, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:00:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:00:29.072 [DEBUG] [Thread-156542] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:00:29.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:00:29.166 [DEBUG] [Thread-156545] [transport.py] [_log()] starting thread (client mode): 0x2b9cb370
2025-09-29T13:00:29.167 [DEBUG] [Thread-156545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:00:29.180 [DEBUG] [Thread-156545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:00:29.180 [INFO] [Thread-156545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:00:29.188 [DEBUG] [Thread-156545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:00:29.188 [DEBUG] [Thread-156545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:00:29.188 [DEBUG] [Thread-156545] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:00:29.188 [DEBUG] [Thread-156545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:29.188 [DEBUG] [Thread-156545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] client lang: <none>
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] server lang: <none>
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] kex follows: False
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:00:29.189 [DEBUG] [Thread-156545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:00:29.190 [DEBUG] [Thread-156545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:00:29.190 [DEBUG] [Thread-156545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:00:29.190 [DEBUG] [Thread-156545] [transport.py] [_log()] Compression: none
2025-09-29T13:00:29.190 [DEBUG] [Thread-156545] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:00:29.247 [DEBUG] [Thread-156545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:00:29.248 [DEBUG] [Thread-156545] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:00:29.248 [DEBUG] [Thread-156545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:00:29.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:00:29.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:00:29.304 [DEBUG] [Thread-156545] [transport.py] [_log()] userauth is OK
2025-09-29T13:00:29.304 [DEBUG] [Thread-156545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:00:29.304 [DEBUG] [Thread-156545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:00:29.304 [DEBUG] [Thread-156545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:00:29.304 [DEBUG] [Thread-156545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:00:29.323 [INFO] [Thread-156545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:00:29.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:00:29.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:00:30.259 [DEBUG] [Thread-156545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:00:30.260 [DEBUG] [Thread-156545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:00:30.307 [DEBUG] [Thread-156545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:00:30.307 [DEBUG] [Thread-156545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:00:30.316 [DEBUG] [Thread-156545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:00:30.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:00:30.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:00:30.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:00:30.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:00:30.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:00:30.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:00:30.349 [DEBUG] [Thread-156545] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:00:34.541 [DEBUG] [Thread-156547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:00:40.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:00:40.352 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:00:40.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:00:40.721 [DEBUG] [Thread-156548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:00:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 0, 20), 12.19, 43.28, 0.0, 14.95, 13.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:00:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:00:20
2025-09-29T13:00:41.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:00:41.218 [DEBUG] [Thread-156549] [transport.py] [_log()] starting thread (client mode): 0x2b9c9210
2025-09-29T13:00:41.219 [DEBUG] [Thread-156549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:00:41.233 [DEBUG] [Thread-156549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:00:41.233 [INFO] [Thread-156549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] client lang: <none>
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] server lang: <none>
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] kex follows: False
2025-09-29T13:00:41.237 [DEBUG] [Thread-156549] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:00:41.238 [DEBUG] [Thread-156549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:00:41.238 [DEBUG] [Thread-156549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:00:41.238 [DEBUG] [Thread-156549] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:00:41.238 [DEBUG] [Thread-156549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:00:41.238 [DEBUG] [Thread-156549] [transport.py] [_log()] Compression: none
2025-09-29T13:00:41.238 [DEBUG] [Thread-156549] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:00:41.257 [DEBUG] [Thread-156549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:00:41.258 [DEBUG] [Thread-156549] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:00:41.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:00:41.259 [DEBUG] [Thread-156549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:00:41.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:00:41.262 [DEBUG] [Thread-156549] [transport.py] [_log()] userauth is OK
2025-09-29T13:00:41.262 [DEBUG] [Thread-156549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:00:41.262 [DEBUG] [Thread-156549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:00:41.262 [DEBUG] [Thread-156549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:00:41.262 [DEBUG] [Thread-156549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:00:41.286 [INFO] [Thread-156549] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:00:41.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:00:41.997 [DEBUG] [Thread-156549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:00:41.997 [DEBUG] [Thread-156549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:00:41.997 [DEBUG] [Thread-156549] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:00:42.038 [DEBUG] [Thread-156549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:00:42.038 [DEBUG] [Thread-156549] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:00:42.040 [DEBUG] [Thread-156549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:00:42.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:00:42.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:00:42.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:00:42.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:00:42.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:00:42.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:00:42.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:00:42.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:00:42.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:00:42.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.458403 -999.00  +13.30   7.18     49   +2.80 1 1 1 1 1   888    0 11.19 24.83 NA 7.9 7.2 85.7 16.3 21.8 -26.7 21.6 -26.3 22.1 -26.6 23.2 -26.3
2025-09-29T13:00:42.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:00:42.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:00:42.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.458403
2025-09-29T13:00:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:00:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:00:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:00:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:00:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:00:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:00:20', tmtdew=12.19, humidity=43.28, cloud=0.0, wind=14.95, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:00:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:00:42.053 [DEBUG] [Thread-156549] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:00:42.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:00:42.143 [DEBUG] [Thread-156552] [transport.py] [_log()] starting thread (client mode): 0x2b9cb4c0
2025-09-29T13:00:42.143 [DEBUG] [Thread-156552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:00:42.157 [DEBUG] [Thread-156552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:00:42.158 [INFO] [Thread-156552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:00:42.169 [DEBUG] [Thread-156552] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:00:42.169 [DEBUG] [Thread-156552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:00:42.169 [DEBUG] [Thread-156552] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:00:42.169 [DEBUG] [Thread-156552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:42.169 [DEBUG] [Thread-156552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] client lang: <none>
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] server lang: <none>
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] kex follows: False
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] Compression: none
2025-09-29T13:00:42.170 [DEBUG] [Thread-156552] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:00:42.227 [DEBUG] [Thread-156552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:00:42.227 [DEBUG] [Thread-156552] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:00:42.228 [DEBUG] [Thread-156552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:00:42.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:00:42.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:00:42.287 [DEBUG] [Thread-156552] [transport.py] [_log()] userauth is OK
2025-09-29T13:00:42.287 [DEBUG] [Thread-156552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:00:42.288 [DEBUG] [Thread-156552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:00:42.288 [DEBUG] [Thread-156552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:00:42.288 [DEBUG] [Thread-156552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:00:42.306 [INFO] [Thread-156552] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:00:42.307 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:00:42.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:00:43.243 [DEBUG] [Thread-156552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:00:43.243 [DEBUG] [Thread-156552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:00:43.291 [DEBUG] [Thread-156552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:00:43.291 [DEBUG] [Thread-156552] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:00:43.300 [DEBUG] [Thread-156552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:00:43.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:00:43.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:00:43.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:00:43.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:00:43.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:00:43.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:00:43.335 [DEBUG] [Thread-156552] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:00:49.582 [DEBUG] [Thread-156554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:00:51.895 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:00:51.896 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:00:53.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:00:53.338 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:00:53.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:00:53.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 0, 20), 12.19, 43.28, 0.0, 14.95, 13.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:00:53.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:00:20
2025-09-29T13:00:54.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:00:54.248 [DEBUG] [Thread-156555] [transport.py] [_log()] starting thread (client mode): 0x2b9caec0
2025-09-29T13:00:54.248 [DEBUG] [Thread-156555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:00:54.269 [DEBUG] [Thread-156555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:00:54.269 [INFO] [Thread-156555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] client lang: <none>
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] server lang: <none>
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] kex follows: False
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] Compression: none
2025-09-29T13:00:54.272 [DEBUG] [Thread-156555] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:00:54.289 [DEBUG] [Thread-156555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:00:54.289 [DEBUG] [Thread-156555] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:00:54.290 [DEBUG] [Thread-156555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:00:54.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:00:54.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:00:54.290 [DEBUG] [Thread-156555] [transport.py] [_log()] userauth is OK
2025-09-29T13:00:54.290 [DEBUG] [Thread-156555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:00:54.290 [DEBUG] [Thread-156555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:00:54.291 [DEBUG] [Thread-156555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:00:54.291 [DEBUG] [Thread-156555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:00:54.300 [INFO] [Thread-156555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:00:54.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:00:54.908 [DEBUG] [Thread-156555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:00:54.909 [DEBUG] [Thread-156555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:00:54.909 [DEBUG] [Thread-156555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:00:54.950 [DEBUG] [Thread-156555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:00:54.950 [DEBUG] [Thread-156555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:00:54.951 [DEBUG] [Thread-156555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:00:54.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:00:54.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:00:54.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:00:54.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:00:54.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:00:54.968 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:00:54.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:00:54.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.458750 -999.00  +13.50   8.52     48   +2.70 1 1 1 1 1   888    0 11.02 25.21 NA 6.1 8.5 151.0 14.6 22.2 -25.7 21.6 -26.8 22.2 -26.8 23.2 -26.8
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.458750
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:00:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:00:20', tmtdew=12.19, humidity=43.28, cloud=0.0, wind=14.95, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:00:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:00:54.970 [DEBUG] [Thread-156555] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:00:55.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:00:55.053 [DEBUG] [Thread-156558] [transport.py] [_log()] starting thread (client mode): 0x28704190
2025-09-29T13:00:55.053 [DEBUG] [Thread-156558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:00:55.067 [DEBUG] [Thread-156558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:00:55.067 [INFO] [Thread-156558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] client lang: <none>
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] server lang: <none>
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] kex follows: False
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] Compression: none
2025-09-29T13:00:55.075 [DEBUG] [Thread-156558] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:00:55.130 [DEBUG] [Thread-156558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:00:55.130 [DEBUG] [Thread-156558] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:00:55.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:00:55.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:00:55.131 [DEBUG] [Thread-156558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:00:55.187 [DEBUG] [Thread-156558] [transport.py] [_log()] userauth is OK
2025-09-29T13:00:55.187 [DEBUG] [Thread-156558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:00:55.187 [DEBUG] [Thread-156558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:00:55.187 [DEBUG] [Thread-156558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:00:55.187 [DEBUG] [Thread-156558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:00:55.201 [INFO] [Thread-156558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:00:55.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:00:55.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:00:56.137 [DEBUG] [Thread-156558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:00:56.137 [DEBUG] [Thread-156558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:00:56.185 [DEBUG] [Thread-156558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:00:56.185 [DEBUG] [Thread-156558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:00:56.194 [DEBUG] [Thread-156558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:00:56.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:00:56.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:00:56.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:00:56.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:00:56.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:00:56.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:00:56.230 [DEBUG] [Thread-156558] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:01:04.612 [DEBUG] [Thread-156560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:01:06.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:01:06.224 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:01:06.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:01:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 0, 53), 12.39, 42.63, 0.0, 15.3, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:01:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:00:53
2025-09-29T13:01:06.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:01:07.080 [DEBUG] [Thread-156561] [transport.py] [_log()] starting thread (client mode): 0x2b90c6a0
2025-09-29T13:01:07.081 [DEBUG] [Thread-156561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:01:07.100 [DEBUG] [Thread-156561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:01:07.100 [INFO] [Thread-156561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:01:07.104 [DEBUG] [Thread-156561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:01:07.104 [DEBUG] [Thread-156561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:01:07.104 [DEBUG] [Thread-156561] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:01:07.104 [DEBUG] [Thread-156561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] client lang: <none>
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] server lang: <none>
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] kex follows: False
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] Compression: none
2025-09-29T13:01:07.105 [DEBUG] [Thread-156561] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:01:07.122 [DEBUG] [Thread-156561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:01:07.122 [DEBUG] [Thread-156561] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:01:07.123 [DEBUG] [Thread-156561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:01:07.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:01:07.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:01:07.125 [DEBUG] [Thread-156561] [transport.py] [_log()] userauth is OK
2025-09-29T13:01:07.125 [DEBUG] [Thread-156561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:01:07.125 [DEBUG] [Thread-156561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:01:07.125 [DEBUG] [Thread-156561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:01:07.125 [DEBUG] [Thread-156561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:01:07.151 [INFO] [Thread-156561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:01:07.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:01:07.916 [DEBUG] [Thread-156561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:01:07.916 [DEBUG] [Thread-156561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:01:07.917 [DEBUG] [Thread-156561] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:01:07.957 [DEBUG] [Thread-156561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:01:07.957 [DEBUG] [Thread-156561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:01:07.959 [DEBUG] [Thread-156561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:01:07.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:01:07.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:01:07.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:01:07.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:01:07.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:01:07.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:01:07.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.458750 -999.00  +13.50   8.52     48   +2.70 1 1 1 1 1   888    0 11.02 25.21 NA 6.1 8.5 151.0 14.6 22.2 -25.7 21.6 -26.8 22.2 -26.8 23.2 -26.8
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.458750
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:01:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:00:53', tmtdew=12.39, humidity=42.63, cloud=0.0, wind=15.3, temperature=13.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:00:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:01:07.979 [DEBUG] [Thread-156561] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:01:08.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:01:08.063 [DEBUG] [Thread-156564] [transport.py] [_log()] starting thread (client mode): 0x2b9cb070
2025-09-29T13:01:08.063 [DEBUG] [Thread-156564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:01:08.081 [DEBUG] [Thread-156564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:01:08.081 [INFO] [Thread-156564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] client lang: <none>
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] server lang: <none>
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] kex follows: False
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] Compression: none
2025-09-29T13:01:08.089 [DEBUG] [Thread-156564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:01:08.151 [DEBUG] [Thread-156564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:01:08.151 [DEBUG] [Thread-156564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:01:08.151 [DEBUG] [Thread-156564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:01:08.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:01:08.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:01:08.207 [DEBUG] [Thread-156564] [transport.py] [_log()] userauth is OK
2025-09-29T13:01:08.208 [DEBUG] [Thread-156564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:01:08.208 [DEBUG] [Thread-156564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:01:08.208 [DEBUG] [Thread-156564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:01:08.208 [DEBUG] [Thread-156564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:01:08.229 [INFO] [Thread-156564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:01:08.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:01:08.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:01:09.268 [DEBUG] [Thread-156564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:01:09.268 [DEBUG] [Thread-156564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:01:09.316 [DEBUG] [Thread-156564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:01:09.316 [DEBUG] [Thread-156564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:01:09.325 [DEBUG] [Thread-156564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:01:09.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:01:09.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:01:09.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:01:09.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:01:09.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:01:09.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:01:09.360 [DEBUG] [Thread-156564] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:01:19.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:01:19.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:01:19.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:01:19.655 [DEBUG] [Thread-156566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:01:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 0, 53), 12.39, 42.63, 0.0, 15.3, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:01:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:00:53
2025-09-29T13:01:20.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:01:20.214 [DEBUG] [Thread-156567] [transport.py] [_log()] starting thread (client mode): 0x28705720
2025-09-29T13:01:20.214 [DEBUG] [Thread-156567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:01:20.234 [DEBUG] [Thread-156567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:01:20.235 [INFO] [Thread-156567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:01:20.236 [DEBUG] [Thread-156567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:01:20.236 [DEBUG] [Thread-156567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:01:20.236 [DEBUG] [Thread-156567] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:01:20.236 [DEBUG] [Thread-156567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:20.236 [DEBUG] [Thread-156567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:20.236 [DEBUG] [Thread-156567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:20.236 [DEBUG] [Thread-156567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] client lang: <none>
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] server lang: <none>
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] kex follows: False
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] Compression: none
2025-09-29T13:01:20.237 [DEBUG] [Thread-156567] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:01:20.251 [DEBUG] [Thread-156567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:01:20.251 [DEBUG] [Thread-156567] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:01:20.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:01:20.253 [DEBUG] [Thread-156567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:01:20.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:01:20.255 [DEBUG] [Thread-156567] [transport.py] [_log()] userauth is OK
2025-09-29T13:01:20.255 [DEBUG] [Thread-156567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:01:20.255 [DEBUG] [Thread-156567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:01:20.255 [DEBUG] [Thread-156567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:01:20.255 [DEBUG] [Thread-156567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:01:20.274 [INFO] [Thread-156567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:01:20.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:01:21.014 [DEBUG] [Thread-156567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:01:21.015 [DEBUG] [Thread-156567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:01:21.015 [DEBUG] [Thread-156567] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:01:21.055 [DEBUG] [Thread-156567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:01:21.056 [DEBUG] [Thread-156567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:01:21.059 [DEBUG] [Thread-156567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:01:21.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:01:21.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:01:21.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:01:21.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:01:21.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:01:21.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:01:21.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:01:21.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:01:21.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:01:21.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.458750 -999.00  +13.50   8.52     48   +2.70 1 1 1 1 1   888    0 11.02 25.21 NA 6.1 8.5 151.0 14.6 22.2 -25.7 21.6 -26.8 22.2 -26.8 23.2 -26.8
2025-09-29T13:01:21.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:01:21.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:01:21.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.458750
2025-09-29T13:01:21.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:01:21.083 [DEBUG] [Thread-156567] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:01:21.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:01:21.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:01:21.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:01:21.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:01:21.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:00:53', tmtdew=12.39, humidity=42.63, cloud=0.0, wind=15.3, temperature=13.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:00:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:01:21.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:01:21.181 [DEBUG] [Thread-156570] [transport.py] [_log()] starting thread (client mode): 0x287040d0
2025-09-29T13:01:21.181 [DEBUG] [Thread-156570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:01:21.196 [DEBUG] [Thread-156570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:01:21.196 [INFO] [Thread-156570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:01:21.204 [DEBUG] [Thread-156570] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:01:21.204 [DEBUG] [Thread-156570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:01:21.204 [DEBUG] [Thread-156570] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:01:21.204 [DEBUG] [Thread-156570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:21.204 [DEBUG] [Thread-156570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] client lang: <none>
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] server lang: <none>
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] kex follows: False
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] Compression: none
2025-09-29T13:01:21.205 [DEBUG] [Thread-156570] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:01:21.263 [DEBUG] [Thread-156570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:01:21.264 [DEBUG] [Thread-156570] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:01:21.264 [DEBUG] [Thread-156570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:01:21.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:01:21.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:01:21.320 [DEBUG] [Thread-156570] [transport.py] [_log()] userauth is OK
2025-09-29T13:01:21.320 [DEBUG] [Thread-156570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:01:21.320 [DEBUG] [Thread-156570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:01:21.320 [DEBUG] [Thread-156570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:01:21.320 [DEBUG] [Thread-156570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:01:21.341 [INFO] [Thread-156570] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:01:21.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:01:21.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:01:22.244 [DEBUG] [Thread-156570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:01:22.244 [DEBUG] [Thread-156570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:01:22.292 [DEBUG] [Thread-156570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:01:22.292 [DEBUG] [Thread-156570] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:01:22.302 [DEBUG] [Thread-156570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:01:22.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:01:22.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:01:22.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:01:22.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:01:22.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:01:22.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:01:22.337 [DEBUG] [Thread-156570] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:01:32.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:01:32.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:01:32.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:01:32.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 1, 25), 12.5, 42.35, 0.0, 12.69, 13.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:01:32.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:01:25
2025-09-29T13:01:33.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:01:33.396 [DEBUG] [Thread-156572] [transport.py] [_log()] starting thread (client mode): 0x2b954d90
2025-09-29T13:01:33.396 [DEBUG] [Thread-156572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:01:33.418 [DEBUG] [Thread-156572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:01:33.418 [INFO] [Thread-156572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] client lang: <none>
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] server lang: <none>
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] kex follows: False
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] Compression: none
2025-09-29T13:01:33.421 [DEBUG] [Thread-156572] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:01:33.439 [DEBUG] [Thread-156572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:01:33.439 [DEBUG] [Thread-156572] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:01:33.439 [DEBUG] [Thread-156572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:01:33.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:01:33.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:01:33.439 [DEBUG] [Thread-156572] [transport.py] [_log()] userauth is OK
2025-09-29T13:01:33.440 [DEBUG] [Thread-156572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:01:33.440 [DEBUG] [Thread-156572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:01:33.440 [DEBUG] [Thread-156572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:01:33.440 [DEBUG] [Thread-156572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:01:33.448 [INFO] [Thread-156572] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:01:33.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:01:34.039 [DEBUG] [Thread-156572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:01:34.039 [DEBUG] [Thread-156572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:01:34.040 [DEBUG] [Thread-156572] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:01:34.080 [DEBUG] [Thread-156572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:01:34.081 [DEBUG] [Thread-156572] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:01:34.084 [DEBUG] [Thread-156572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:01:34.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:01:34.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:01:34.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:01:34.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:01:34.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:01:34.107 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:01:34.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:01:34.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:01:34.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:01:34.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.459098 -999.00  +13.40  10.72     48   +2.60 1 1 1 1 1   888    0 11.18 24.94 ----- 11.2 10.7 128.8 12.6 22.4 -25.4 21.8 -26.3 22.4 -26.4 23.4 -27.5
2025-09-29T13:01:34.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:01:34.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:01:34.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.459098
2025-09-29T13:01:34.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:01:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:01:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:01:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:01:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:01:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:01:25', tmtdew=12.5, humidity=42.35, cloud=0.0, wind=12.69, temperature=13.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:01:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:01:34.110 [DEBUG] [Thread-156572] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:01:34.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:01:34.212 [DEBUG] [Thread-156575] [transport.py] [_log()] starting thread (client mode): 0x2b956230
2025-09-29T13:01:34.212 [DEBUG] [Thread-156575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:01:34.226 [DEBUG] [Thread-156575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:01:34.226 [INFO] [Thread-156575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] client lang: <none>
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] server lang: <none>
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] kex follows: False
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:01:34.234 [DEBUG] [Thread-156575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:01:34.235 [DEBUG] [Thread-156575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:01:34.235 [DEBUG] [Thread-156575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:01:34.235 [DEBUG] [Thread-156575] [transport.py] [_log()] Compression: none
2025-09-29T13:01:34.235 [DEBUG] [Thread-156575] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:01:34.291 [DEBUG] [Thread-156575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:01:34.292 [DEBUG] [Thread-156575] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:01:34.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:01:34.293 [DEBUG] [Thread-156575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:01:34.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:01:34.347 [DEBUG] [Thread-156575] [transport.py] [_log()] userauth is OK
2025-09-29T13:01:34.348 [DEBUG] [Thread-156575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:01:34.348 [DEBUG] [Thread-156575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:01:34.348 [DEBUG] [Thread-156575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:01:34.348 [DEBUG] [Thread-156575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:01:34.366 [INFO] [Thread-156575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:01:34.367 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:01:34.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:01:34.702 [DEBUG] [Thread-156577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:01:35.303 [DEBUG] [Thread-156575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:01:35.303 [DEBUG] [Thread-156575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:01:35.351 [DEBUG] [Thread-156575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:01:35.351 [DEBUG] [Thread-156575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:01:35.360 [DEBUG] [Thread-156575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:01:35.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:01:35.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:01:35.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:01:35.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:01:35.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:01:35.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:01:35.402 [DEBUG] [Thread-156575] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:01:40.756 [DEBUG] [Thread-156578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:01:45.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:01:45.401 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:01:45.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:01:45.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 1, 25), 12.5, 42.35, 0.0, 12.69, 13.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:01:45.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:01:25
2025-09-29T13:01:46.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:01:46.258 [DEBUG] [Thread-156579] [transport.py] [_log()] starting thread (client mode): 0x2b9572b0
2025-09-29T13:01:46.258 [DEBUG] [Thread-156579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:01:46.279 [DEBUG] [Thread-156579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:01:46.279 [INFO] [Thread-156579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:01:46.283 [DEBUG] [Thread-156579] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:01:46.283 [DEBUG] [Thread-156579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:01:46.283 [DEBUG] [Thread-156579] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:01:46.283 [DEBUG] [Thread-156579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:46.283 [DEBUG] [Thread-156579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:01:46.283 [DEBUG] [Thread-156579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] client lang: <none>
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] server lang: <none>
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] kex follows: False
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] Compression: none
2025-09-29T13:01:46.284 [DEBUG] [Thread-156579] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:01:46.300 [DEBUG] [Thread-156579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:01:46.301 [DEBUG] [Thread-156579] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:01:46.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:01:46.302 [DEBUG] [Thread-156579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:01:46.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:01:46.304 [DEBUG] [Thread-156579] [transport.py] [_log()] userauth is OK
2025-09-29T13:01:46.304 [DEBUG] [Thread-156579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:01:46.304 [DEBUG] [Thread-156579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:01:46.304 [DEBUG] [Thread-156579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:01:46.304 [DEBUG] [Thread-156579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:01:46.338 [INFO] [Thread-156579] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:01:46.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:01:47.036 [DEBUG] [Thread-156579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:01:47.036 [DEBUG] [Thread-156579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:01:47.036 [DEBUG] [Thread-156579] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:01:47.077 [DEBUG] [Thread-156579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:01:47.077 [DEBUG] [Thread-156579] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:01:47.080 [DEBUG] [Thread-156579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:01:47.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:01:47.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:01:47.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:01:47.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:01:47.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:01:47.103 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:01:47.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:01:47.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:01:47.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:01:47.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.459098 -999.00  +13.40  10.72     48   +2.60 1 1 1 1 1   888    0 11.18 24.94 ----- 11.2 10.7 128.8 12.6 22.4 -25.4 21.8 -26.3 22.4 -26.4 23.4 -27.5
2025-09-29T13:01:47.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:01:47.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:01:47.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.459098
2025-09-29T13:01:47.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:01:47.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:01:47.105 [DEBUG] [Thread-156579] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:01:47.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:01:47.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:01:47.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:01:47.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:01:25', tmtdew=12.5, humidity=42.35, cloud=0.0, wind=12.69, temperature=13.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:01:06.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:01:47.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:01:49.749 [DEBUG] [Thread-156582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:01:52.037 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:01:52.038 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:02:04.781 [DEBUG] [Thread-156583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:02:19.808 [DEBUG] [Thread-156584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:02:34.840 [DEBUG] [Thread-156585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:02:40.806 [DEBUG] [Thread-156586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:02:49.869 [DEBUG] [Thread-156587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:02:52.180 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:02:52.180 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:03:04.899 [DEBUG] [Thread-156588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:03:19.929 [DEBUG] [Thread-156589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:03:34.963 [DEBUG] [Thread-156590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:03:40.862 [DEBUG] [Thread-156591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:03:49.995 [DEBUG] [Thread-156592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:03:52.322 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:03:52.324 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:04:00.954 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T13:04:05.019 [DEBUG] [Thread-156593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:04:10.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:04:10.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:04:10.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:04:11.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 4, 4), 12.29, 43.28, 0.0, 8.95, 13.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:04:11.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:04:04
2025-09-29T13:04:11.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:04:11.838 [DEBUG] [Thread-156594] [transport.py] [_log()] starting thread (client mode): 0x2b9ca980
2025-09-29T13:04:11.838 [DEBUG] [Thread-156594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:04:11.857 [DEBUG] [Thread-156594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:04:11.857 [INFO] [Thread-156594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:04:11.859 [DEBUG] [Thread-156594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:04:11.859 [DEBUG] [Thread-156594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:04:11.859 [DEBUG] [Thread-156594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] client lang: <none>
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] server lang: <none>
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] kex follows: False
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] Compression: none
2025-09-29T13:04:11.860 [DEBUG] [Thread-156594] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:04:11.873 [DEBUG] [Thread-156594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:04:11.873 [DEBUG] [Thread-156594] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:04:11.873 [DEBUG] [Thread-156594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:04:11.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:04:11.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:04:11.875 [DEBUG] [Thread-156594] [transport.py] [_log()] userauth is OK
2025-09-29T13:04:11.876 [DEBUG] [Thread-156594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:04:11.876 [DEBUG] [Thread-156594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:04:11.876 [DEBUG] [Thread-156594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:04:11.876 [DEBUG] [Thread-156594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:04:11.894 [INFO] [Thread-156594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:04:11.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:04:12.530 [DEBUG] [Thread-156594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:04:12.530 [DEBUG] [Thread-156594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:04:12.530 [DEBUG] [Thread-156594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:04:12.571 [DEBUG] [Thread-156594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:04:12.571 [DEBUG] [Thread-156594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:04:12.574 [DEBUG] [Thread-156594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:04:12.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:04:12.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:04:12.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:04:12.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:04:12.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:04:12.594 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:04:12.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:04:12.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:04:12.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:04:12.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.460834 -999.00  +14.20   3.52     46   +2.80 1 1 1 1 1   888    0 11.46 38.30 ----- 5.2 3.5 137.7 8.0 22.9 -25.5 21.8 -25.5 22.5 -26.1 23.9 -26.8
2025-09-29T13:04:12.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:04:12.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:04:12.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.460834
2025-09-29T13:04:12.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:04:12.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:04:12.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:04:12.596 [DEBUG] [Thread-156594] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:04:12.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:04:12.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:04:12.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:04:04', tmtdew=12.29, humidity=43.28, cloud=0.0, wind=8.95, temperature=13.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:03:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:04:12.680 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:04:12.692 [DEBUG] [Thread-156597] [transport.py] [_log()] starting thread (client mode): 0x2b9cab30
2025-09-29T13:04:12.692 [DEBUG] [Thread-156597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:04:12.706 [DEBUG] [Thread-156597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:04:12.706 [INFO] [Thread-156597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] client lang: <none>
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] server lang: <none>
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] kex follows: False
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:04:12.714 [DEBUG] [Thread-156597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:04:12.715 [DEBUG] [Thread-156597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:04:12.715 [DEBUG] [Thread-156597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:04:12.715 [DEBUG] [Thread-156597] [transport.py] [_log()] Compression: none
2025-09-29T13:04:12.715 [DEBUG] [Thread-156597] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:04:12.773 [DEBUG] [Thread-156597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:04:12.773 [DEBUG] [Thread-156597] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:04:12.774 [DEBUG] [Thread-156597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:04:12.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:04:12.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:04:12.831 [DEBUG] [Thread-156597] [transport.py] [_log()] userauth is OK
2025-09-29T13:04:12.831 [DEBUG] [Thread-156597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:04:12.831 [DEBUG] [Thread-156597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:04:12.832 [DEBUG] [Thread-156597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:04:12.832 [DEBUG] [Thread-156597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:04:12.850 [INFO] [Thread-156597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:04:12.850 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:04:12.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:04:13.785 [DEBUG] [Thread-156597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:04:13.785 [DEBUG] [Thread-156597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:04:13.833 [DEBUG] [Thread-156597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:04:13.833 [DEBUG] [Thread-156597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:04:13.842 [DEBUG] [Thread-156597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:04:13.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:04:13.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:04:13.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:04:13.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:04:13.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:04:13.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:04:13.877 [DEBUG] [Thread-156597] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:04:20.046 [DEBUG] [Thread-156599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:04:23.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:04:23.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:04:23.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:04:24.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 4, 4), 12.29, 43.28, 0.0, 8.95, 13.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:04:24.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:04:04
2025-09-29T13:04:24.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:04:24.746 [DEBUG] [Thread-156600] [transport.py] [_log()] starting thread (client mode): 0x2e3c35e0
2025-09-29T13:04:24.746 [DEBUG] [Thread-156600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:04:24.766 [DEBUG] [Thread-156600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:04:24.766 [INFO] [Thread-156600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:04:24.769 [DEBUG] [Thread-156600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] client lang: <none>
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] server lang: <none>
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] kex follows: False
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] Compression: none
2025-09-29T13:04:24.770 [DEBUG] [Thread-156600] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:04:24.779 [DEBUG] [Thread-156600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:04:24.779 [DEBUG] [Thread-156600] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:04:24.780 [DEBUG] [Thread-156600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:04:24.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:04:24.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:04:24.781 [DEBUG] [Thread-156600] [transport.py] [_log()] userauth is OK
2025-09-29T13:04:24.782 [DEBUG] [Thread-156600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:04:24.782 [DEBUG] [Thread-156600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:04:24.782 [DEBUG] [Thread-156600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:04:24.782 [DEBUG] [Thread-156600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:04:24.806 [INFO] [Thread-156600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:04:24.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:04:25.382 [DEBUG] [Thread-156600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:04:25.382 [DEBUG] [Thread-156600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:04:25.383 [DEBUG] [Thread-156600] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:04:25.423 [DEBUG] [Thread-156600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:04:25.423 [DEBUG] [Thread-156600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:04:25.426 [DEBUG] [Thread-156600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:04:25.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:04:25.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:04:25.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:04:25.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:04:25.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:04:25.447 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:04:25.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:04:25.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:04:25.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:04:25.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.460834 -999.00  +14.20   3.52     46   +2.80 1 1 1 1 1   888    0 11.46 38.30 ----- 5.2 3.5 137.7 8.0 22.9 -25.5 21.8 -25.5 22.5 -26.1 23.9 -26.8
2025-09-29T13:04:25.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:04:25.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:04:25.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.460834
2025-09-29T13:04:25.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:04:25.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:04:25.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:04:25.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:04:25.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:04:25.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:04:04', tmtdew=12.29, humidity=43.28, cloud=0.0, wind=8.95, temperature=13.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:03:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:04:25.449 [DEBUG] [Thread-156600] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:04:25.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:04:25.544 [DEBUG] [Thread-156603] [transport.py] [_log()] starting thread (client mode): 0x2b90d5a0
2025-09-29T13:04:25.545 [DEBUG] [Thread-156603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:04:25.559 [DEBUG] [Thread-156603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:04:25.559 [INFO] [Thread-156603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:04:25.566 [DEBUG] [Thread-156603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:04:25.566 [DEBUG] [Thread-156603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:04:25.566 [DEBUG] [Thread-156603] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] client lang: <none>
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] server lang: <none>
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] kex follows: False
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] Compression: none
2025-09-29T13:04:25.567 [DEBUG] [Thread-156603] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:04:25.624 [DEBUG] [Thread-156603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:04:25.625 [DEBUG] [Thread-156603] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:04:25.625 [DEBUG] [Thread-156603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:04:25.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:04:25.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:04:25.683 [DEBUG] [Thread-156603] [transport.py] [_log()] userauth is OK
2025-09-29T13:04:25.683 [DEBUG] [Thread-156603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:04:25.683 [DEBUG] [Thread-156603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:04:25.684 [DEBUG] [Thread-156603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:04:25.684 [DEBUG] [Thread-156603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:04:25.703 [INFO] [Thread-156603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:04:25.703 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:04:25.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:04:26.687 [DEBUG] [Thread-156603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:04:26.688 [DEBUG] [Thread-156603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:04:26.735 [DEBUG] [Thread-156603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:04:26.735 [DEBUG] [Thread-156603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:04:26.744 [DEBUG] [Thread-156603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:04:26.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:04:26.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:04:26.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:04:26.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:04:26.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:04:26.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:04:26.779 [DEBUG] [Thread-156603] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:04:35.093 [DEBUG] [Thread-156605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:04:36.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:04:36.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:04:36.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:04:37.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 4, 4), 12.29, 43.28, 0.0, 8.95, 13.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:04:37.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:04:04
2025-09-29T13:04:37.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:04:37.728 [DEBUG] [Thread-156606] [transport.py] [_log()] starting thread (client mode): 0x2b955720
2025-09-29T13:04:37.729 [DEBUG] [Thread-156606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:04:37.744 [DEBUG] [Thread-156606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:04:37.744 [INFO] [Thread-156606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] client lang: <none>
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] server lang: <none>
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] kex follows: False
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] Compression: none
2025-09-29T13:04:37.746 [DEBUG] [Thread-156606] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:04:37.755 [DEBUG] [Thread-156606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:04:37.755 [DEBUG] [Thread-156606] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:04:37.755 [DEBUG] [Thread-156606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:04:37.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:04:37.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:04:37.756 [DEBUG] [Thread-156606] [transport.py] [_log()] userauth is OK
2025-09-29T13:04:37.756 [DEBUG] [Thread-156606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:04:37.756 [DEBUG] [Thread-156606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:04:37.756 [DEBUG] [Thread-156606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:04:37.756 [DEBUG] [Thread-156606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:04:37.769 [INFO] [Thread-156606] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:04:37.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:04:38.404 [DEBUG] [Thread-156606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:04:38.404 [DEBUG] [Thread-156606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:04:38.404 [DEBUG] [Thread-156606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:04:38.445 [DEBUG] [Thread-156606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:04:38.445 [DEBUG] [Thread-156606] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:04:38.447 [DEBUG] [Thread-156606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:04:38.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:04:38.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:04:38.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:04:38.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:04:38.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:04:38.465 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:04:38.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:04:38.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:04:38.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:04:38.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.460834 -999.00  +14.20   3.52     46   +2.80 1 1 1 1 1   888    0 11.46 38.30 ----- 5.2 3.5 137.7 8.0 22.9 -25.5 21.8 -25.5 22.5 -26.1 23.9 -26.8
2025-09-29T13:04:38.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:04:38.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:04:38.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.460834
2025-09-29T13:04:38.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:04:38.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:04:38.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:04:38.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:04:38.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:04:38.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:04:04', tmtdew=12.29, humidity=43.28, cloud=0.0, wind=8.95, temperature=13.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:03:36.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:04:38.466 [DEBUG] [Thread-156606] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:04:38.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:04:38.554 [DEBUG] [Thread-156609] [transport.py] [_log()] starting thread (client mode): 0x2b954070
2025-09-29T13:04:38.554 [DEBUG] [Thread-156609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:04:38.572 [DEBUG] [Thread-156609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:04:38.572 [INFO] [Thread-156609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] client lang: <none>
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] server lang: <none>
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] kex follows: False
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] Compression: none
2025-09-29T13:04:38.585 [DEBUG] [Thread-156609] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:04:38.644 [DEBUG] [Thread-156609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:04:38.644 [DEBUG] [Thread-156609] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:04:38.645 [DEBUG] [Thread-156609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:04:38.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:04:38.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:04:38.703 [DEBUG] [Thread-156609] [transport.py] [_log()] userauth is OK
2025-09-29T13:04:38.703 [DEBUG] [Thread-156609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:04:38.703 [DEBUG] [Thread-156609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:04:38.703 [DEBUG] [Thread-156609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:04:38.703 [DEBUG] [Thread-156609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:04:38.721 [INFO] [Thread-156609] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:04:38.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:04:38.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:04:39.696 [DEBUG] [Thread-156609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:04:39.696 [DEBUG] [Thread-156609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:04:39.744 [DEBUG] [Thread-156609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:04:39.744 [DEBUG] [Thread-156609] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:04:39.752 [DEBUG] [Thread-156609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:04:39.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:04:39.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:04:39.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:04:39.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:04:39.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:04:39.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:04:39.784 [DEBUG] [Thread-156609] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:04:40.896 [DEBUG] [Thread-156611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:04:49.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:04:49.786 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:04:49.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:04:50.123 [DEBUG] [Thread-156612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:04:50.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 4, 36), 12.24, 43.16, 0.0, 8.91, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:04:50.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:04:36
2025-09-29T13:04:50.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:04:50.641 [DEBUG] [Thread-156613] [transport.py] [_log()] starting thread (client mode): 0x2b90f580
2025-09-29T13:04:50.642 [DEBUG] [Thread-156613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:04:50.661 [DEBUG] [Thread-156613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:04:50.662 [INFO] [Thread-156613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] client lang: <none>
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] server lang: <none>
2025-09-29T13:04:50.665 [DEBUG] [Thread-156613] [transport.py] [_log()] kex follows: False
2025-09-29T13:04:50.666 [DEBUG] [Thread-156613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:04:50.666 [DEBUG] [Thread-156613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:04:50.666 [DEBUG] [Thread-156613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:04:50.666 [DEBUG] [Thread-156613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:04:50.666 [DEBUG] [Thread-156613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:04:50.666 [DEBUG] [Thread-156613] [transport.py] [_log()] Compression: none
2025-09-29T13:04:50.666 [DEBUG] [Thread-156613] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:04:50.682 [DEBUG] [Thread-156613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:04:50.682 [DEBUG] [Thread-156613] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:04:50.683 [DEBUG] [Thread-156613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:04:50.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:04:50.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:04:50.684 [DEBUG] [Thread-156613] [transport.py] [_log()] userauth is OK
2025-09-29T13:04:50.685 [DEBUG] [Thread-156613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:04:50.685 [DEBUG] [Thread-156613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:04:50.685 [DEBUG] [Thread-156613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:04:50.685 [DEBUG] [Thread-156613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:04:50.703 [INFO] [Thread-156613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:04:50.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:04:51.333 [DEBUG] [Thread-156613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:04:51.333 [DEBUG] [Thread-156613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:04:51.334 [DEBUG] [Thread-156613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:04:51.375 [DEBUG] [Thread-156613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:04:51.375 [DEBUG] [Thread-156613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:04:51.378 [DEBUG] [Thread-156613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:04:51.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:04:51.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:04:51.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:04:51.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:04:51.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:04:51.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:04:51.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:04:51.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:04:51.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:04:51.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.461528 -999.00  +14.00  11.64     46   +2.70 1 1 1 1 1   888    0 11.99 45.43 ----- 12.7 11.6 134.1 14.8 23.1 -26.5 22.1 -26.0 22.7 -26.5 24.0 -27.2
2025-09-29T13:04:51.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:04:51.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:04:51.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.461528
2025-09-29T13:04:51.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:04:51.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:04:51.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:04:51.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:04:51.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:04:51.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:04:36', tmtdew=12.24, humidity=43.16, cloud=0.0, wind=8.91, temperature=13.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:04:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:04:51.404 [DEBUG] [Thread-156613] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:04:51.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:04:51.499 [DEBUG] [Thread-156616] [transport.py] [_log()] starting thread (client mode): 0x2b9afc40
2025-09-29T13:04:51.499 [DEBUG] [Thread-156616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:04:51.514 [DEBUG] [Thread-156616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:04:51.514 [INFO] [Thread-156616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:04:51.521 [DEBUG] [Thread-156616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:04:51.521 [DEBUG] [Thread-156616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:04:51.521 [DEBUG] [Thread-156616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:04:51.521 [DEBUG] [Thread-156616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:51.521 [DEBUG] [Thread-156616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:04:51.521 [DEBUG] [Thread-156616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] client lang: <none>
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] server lang: <none>
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] kex follows: False
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] Compression: none
2025-09-29T13:04:51.522 [DEBUG] [Thread-156616] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:04:51.580 [DEBUG] [Thread-156616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:04:51.580 [DEBUG] [Thread-156616] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:04:51.581 [DEBUG] [Thread-156616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:04:51.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:04:51.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:04:51.635 [DEBUG] [Thread-156616] [transport.py] [_log()] userauth is OK
2025-09-29T13:04:51.635 [DEBUG] [Thread-156616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:04:51.635 [DEBUG] [Thread-156616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:04:51.635 [DEBUG] [Thread-156616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:04:51.636 [DEBUG] [Thread-156616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:04:51.654 [INFO] [Thread-156616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:04:51.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:04:51.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:04:52.464 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:04:52.465 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:04:52.621 [DEBUG] [Thread-156616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:04:52.621 [DEBUG] [Thread-156616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:04:52.669 [DEBUG] [Thread-156616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:04:52.669 [DEBUG] [Thread-156616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:04:52.678 [DEBUG] [Thread-156616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:04:52.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:04:52.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:04:52.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:04:52.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:04:52.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:04:52.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:04:52.712 [DEBUG] [Thread-156616] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:02.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:05:02.715 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:05:02.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:05:03.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 4, 36), 12.24, 43.16, 0.0, 8.91, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:05:03.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:04:36
2025-09-29T13:05:03.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:05:03.568 [DEBUG] [Thread-156618] [transport.py] [_log()] starting thread (client mode): 0x2b96aa70
2025-09-29T13:05:03.569 [DEBUG] [Thread-156618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:03.587 [DEBUG] [Thread-156618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:05:03.587 [INFO] [Thread-156618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] client lang: <none>
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] server lang: <none>
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] kex follows: False
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:05:03.590 [DEBUG] [Thread-156618] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:05:03.591 [DEBUG] [Thread-156618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:05:03.591 [DEBUG] [Thread-156618] [transport.py] [_log()] Compression: none
2025-09-29T13:05:03.591 [DEBUG] [Thread-156618] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:05:03.606 [DEBUG] [Thread-156618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:05:03.606 [DEBUG] [Thread-156618] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:05:03.607 [DEBUG] [Thread-156618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:05:03.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:05:03.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:05:03.609 [DEBUG] [Thread-156618] [transport.py] [_log()] userauth is OK
2025-09-29T13:05:03.609 [DEBUG] [Thread-156618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:05:03.609 [DEBUG] [Thread-156618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:05:03.609 [DEBUG] [Thread-156618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:05:03.609 [DEBUG] [Thread-156618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:05:03.626 [INFO] [Thread-156618] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:05:03.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:05:05.151 [DEBUG] [Thread-156620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:05:08.901 [DEBUG] [Thread-156618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:05:08.901 [DEBUG] [Thread-156618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:05:08.902 [DEBUG] [Thread-156618] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:05:08.943 [DEBUG] [Thread-156618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:05:08.943 [DEBUG] [Thread-156618] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:05:08.945 [DEBUG] [Thread-156618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:05:08.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:05:08.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:05:08.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:05:08.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:05:08.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:05:08.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:05:08.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.461528 -999.00  +14.00  11.64     46   +2.70 1 1 1 1 1   888    0 11.99 45.43 ----- 12.7 11.6 134.1 14.8 23.1 -26.5 22.1 -26.0 22.7 -26.5 24.0 -27.2
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.461528
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:05:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:04:36', tmtdew=12.24, humidity=43.16, cloud=0.0, wind=8.91, temperature=13.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:04:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:05:08.980 [DEBUG] [Thread-156618] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:09.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:05:09.065 [DEBUG] [Thread-156622] [transport.py] [_log()] starting thread (client mode): 0x2b9550c0
2025-09-29T13:05:09.066 [DEBUG] [Thread-156622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:09.081 [DEBUG] [Thread-156622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:05:09.081 [INFO] [Thread-156622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] client lang: <none>
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] server lang: <none>
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] kex follows: False
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] Compression: none
2025-09-29T13:05:09.089 [DEBUG] [Thread-156622] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:05:09.150 [DEBUG] [Thread-156622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:05:09.150 [DEBUG] [Thread-156622] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:05:09.150 [DEBUG] [Thread-156622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:05:09.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:05:09.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:05:09.207 [DEBUG] [Thread-156622] [transport.py] [_log()] userauth is OK
2025-09-29T13:05:09.207 [DEBUG] [Thread-156622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:05:09.207 [DEBUG] [Thread-156622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:05:09.207 [DEBUG] [Thread-156622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:05:09.207 [DEBUG] [Thread-156622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:05:09.225 [INFO] [Thread-156622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:05:09.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:05:09.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:05:10.166 [DEBUG] [Thread-156622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:05:10.166 [DEBUG] [Thread-156622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:05:10.215 [DEBUG] [Thread-156622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:05:10.215 [DEBUG] [Thread-156622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:05:10.224 [DEBUG] [Thread-156622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:05:10.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:05:10.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:05:10.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:05:10.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:05:10.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:05:10.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:05:10.257 [DEBUG] [Thread-156622] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:20.197 [DEBUG] [Thread-156624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:05:20.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:05:20.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:05:20.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:05:20.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 5, 8), 12.54, 42.3, 0.0, 12.4, 13.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:05:20.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:05:08
2025-09-29T13:05:20.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:05:21.114 [DEBUG] [Thread-156625] [transport.py] [_log()] starting thread (client mode): 0x2b9c90c0
2025-09-29T13:05:21.115 [DEBUG] [Thread-156625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:21.135 [DEBUG] [Thread-156625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:05:21.135 [INFO] [Thread-156625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:05:21.136 [DEBUG] [Thread-156625] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:21.136 [DEBUG] [Thread-156625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:05:21.136 [DEBUG] [Thread-156625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:21.136 [DEBUG] [Thread-156625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:21.136 [DEBUG] [Thread-156625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:21.136 [DEBUG] [Thread-156625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] client lang: <none>
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] server lang: <none>
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] kex follows: False
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] Compression: none
2025-09-29T13:05:21.137 [DEBUG] [Thread-156625] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:05:21.151 [DEBUG] [Thread-156625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:05:21.151 [DEBUG] [Thread-156625] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:05:21.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:05:21.153 [DEBUG] [Thread-156625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:05:21.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:05:21.154 [DEBUG] [Thread-156625] [transport.py] [_log()] userauth is OK
2025-09-29T13:05:21.155 [DEBUG] [Thread-156625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:05:21.155 [DEBUG] [Thread-156625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:05:21.155 [DEBUG] [Thread-156625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:05:21.155 [DEBUG] [Thread-156625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:05:21.176 [INFO] [Thread-156625] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:05:21.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:05:21.734 [DEBUG] [Thread-156625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:05:21.734 [DEBUG] [Thread-156625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:05:21.734 [DEBUG] [Thread-156625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:05:21.775 [DEBUG] [Thread-156625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:05:21.775 [DEBUG] [Thread-156625] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:05:21.777 [DEBUG] [Thread-156625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:05:21.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:05:21.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:05:21.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:05:21.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:05:21.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:05:21.799 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:05:21.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:05:21.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:05:21.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:05:21.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.461875 -999.00  +14.20  14.57     46   +2.90 1 1 1 1 1   888    0 11.67 44.45 ----- 14.4 14.6 174.2 15.8 23.2 -25.8 22.2 -26.5 22.7 -27.1 24.1 -28.0
2025-09-29T13:05:21.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:05:21.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:05:21.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.461875
2025-09-29T13:05:21.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:05:21.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:05:21.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:05:21.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:05:21.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:05:21.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:05:08', tmtdew=12.54, humidity=42.3, cloud=0.0, wind=12.4, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:05:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:05:21.801 [DEBUG] [Thread-156625] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:21.885 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:05:21.894 [DEBUG] [Thread-156628] [transport.py] [_log()] starting thread (client mode): 0x2b954910
2025-09-29T13:05:21.894 [DEBUG] [Thread-156628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:21.908 [DEBUG] [Thread-156628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:05:21.908 [INFO] [Thread-156628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:05:21.916 [DEBUG] [Thread-156628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:21.916 [DEBUG] [Thread-156628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:05:21.916 [DEBUG] [Thread-156628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] client lang: <none>
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] server lang: <none>
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] kex follows: False
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] Compression: none
2025-09-29T13:05:21.917 [DEBUG] [Thread-156628] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:05:21.975 [DEBUG] [Thread-156628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:05:21.975 [DEBUG] [Thread-156628] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:05:21.976 [DEBUG] [Thread-156628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:05:21.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:05:21.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:05:22.031 [DEBUG] [Thread-156628] [transport.py] [_log()] userauth is OK
2025-09-29T13:05:22.031 [DEBUG] [Thread-156628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:05:22.031 [DEBUG] [Thread-156628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:05:22.032 [DEBUG] [Thread-156628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:05:22.032 [DEBUG] [Thread-156628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:05:22.050 [INFO] [Thread-156628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:05:22.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:05:22.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:05:23.034 [DEBUG] [Thread-156628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:05:23.035 [DEBUG] [Thread-156628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:05:23.082 [DEBUG] [Thread-156628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:05:23.082 [DEBUG] [Thread-156628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:05:23.091 [DEBUG] [Thread-156628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:05:23.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:05:23.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:05:23.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:05:23.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:05:23.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:05:23.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:05:23.125 [DEBUG] [Thread-156628] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:33.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:05:33.123 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:05:33.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:05:33.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 5, 8), 12.54, 42.3, 0.0, 12.4, 13.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:05:33.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:05:08
2025-09-29T13:05:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:05:33.999 [DEBUG] [Thread-156630] [transport.py] [_log()] starting thread (client mode): 0x2b9c22c0
2025-09-29T13:05:34.000 [DEBUG] [Thread-156630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:34.021 [DEBUG] [Thread-156630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:05:34.021 [INFO] [Thread-156630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] client lang: <none>
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] server lang: <none>
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] kex follows: False
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:05:34.024 [DEBUG] [Thread-156630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:05:34.025 [DEBUG] [Thread-156630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:05:34.025 [DEBUG] [Thread-156630] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:05:34.025 [DEBUG] [Thread-156630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:05:34.025 [DEBUG] [Thread-156630] [transport.py] [_log()] Compression: none
2025-09-29T13:05:34.025 [DEBUG] [Thread-156630] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:05:34.041 [DEBUG] [Thread-156630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:05:34.042 [DEBUG] [Thread-156630] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:05:34.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:05:34.042 [DEBUG] [Thread-156630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:05:34.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:05:34.044 [DEBUG] [Thread-156630] [transport.py] [_log()] userauth is OK
2025-09-29T13:05:34.045 [DEBUG] [Thread-156630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:05:34.045 [DEBUG] [Thread-156630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:05:34.045 [DEBUG] [Thread-156630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:05:34.045 [DEBUG] [Thread-156630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:05:34.080 [INFO] [Thread-156630] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:05:34.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:05:34.815 [DEBUG] [Thread-156630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:05:34.816 [DEBUG] [Thread-156630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:05:34.816 [DEBUG] [Thread-156630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:05:34.856 [DEBUG] [Thread-156630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:05:34.856 [DEBUG] [Thread-156630] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:05:34.859 [DEBUG] [Thread-156630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:05:34.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:05:34.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:05:34.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:05:34.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:05:34.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:05:34.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:05:34.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:05:34.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:05:34.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:05:34.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.461875 -999.00  +14.20  14.57     46   +2.90 1 1 1 1 1   888    0 11.67 44.45 ----- 14.4 14.6 174.2 15.8 23.2 -25.8 22.2 -26.5 22.7 -27.1 24.1 -28.0
2025-09-29T13:05:34.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:05:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:05:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.461875
2025-09-29T13:05:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:05:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:05:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:05:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:05:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:05:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:05:08', tmtdew=12.54, humidity=42.3, cloud=0.0, wind=12.4, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:05:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:05:34.884 [DEBUG] [Thread-156630] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:34.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:05:34.980 [DEBUG] [Thread-156633] [transport.py] [_log()] starting thread (client mode): 0x2b91cc40
2025-09-29T13:05:34.980 [DEBUG] [Thread-156633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:34.996 [DEBUG] [Thread-156633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:05:34.996 [INFO] [Thread-156633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:05:35.003 [DEBUG] [Thread-156633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:35.003 [DEBUG] [Thread-156633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:05:35.003 [DEBUG] [Thread-156633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:35.003 [DEBUG] [Thread-156633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:35.003 [DEBUG] [Thread-156633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:35.003 [DEBUG] [Thread-156633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] client lang: <none>
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] server lang: <none>
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] kex follows: False
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] Compression: none
2025-09-29T13:05:35.004 [DEBUG] [Thread-156633] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:05:35.063 [DEBUG] [Thread-156633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:05:35.063 [DEBUG] [Thread-156633] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:05:35.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:05:35.064 [DEBUG] [Thread-156633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:05:35.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:05:35.119 [DEBUG] [Thread-156633] [transport.py] [_log()] userauth is OK
2025-09-29T13:05:35.119 [DEBUG] [Thread-156633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:05:35.120 [DEBUG] [Thread-156633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:05:35.120 [DEBUG] [Thread-156633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:05:35.120 [DEBUG] [Thread-156633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:05:35.139 [INFO] [Thread-156633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:05:35.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:05:35.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:05:35.224 [DEBUG] [Thread-156635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:05:36.100 [DEBUG] [Thread-156633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:05:36.100 [DEBUG] [Thread-156633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:05:36.148 [DEBUG] [Thread-156633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:05:36.148 [DEBUG] [Thread-156633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:05:36.157 [DEBUG] [Thread-156633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:05:36.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:05:36.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:05:36.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:05:36.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:05:36.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:05:36.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:05:36.195 [DEBUG] [Thread-156633] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:40.947 [DEBUG] [Thread-156636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:05:46.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:05:46.196 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:05:46.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:05:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 5, 40), 12.66, 42.01, 0.0, 17.61, 13.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:05:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:05:40
2025-09-29T13:05:46.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:05:47.074 [DEBUG] [Thread-156637] [transport.py] [_log()] starting thread (client mode): 0x2b9caf80
2025-09-29T13:05:47.074 [DEBUG] [Thread-156637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:47.086 [DEBUG] [Thread-156637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:05:47.086 [INFO] [Thread-156637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:05:47.089 [DEBUG] [Thread-156637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] client lang: <none>
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] server lang: <none>
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] kex follows: False
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] Compression: none
2025-09-29T13:05:47.090 [DEBUG] [Thread-156637] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:05:47.098 [DEBUG] [Thread-156637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:05:47.099 [DEBUG] [Thread-156637] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:05:47.099 [DEBUG] [Thread-156637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:05:47.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:05:47.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:05:47.100 [DEBUG] [Thread-156637] [transport.py] [_log()] userauth is OK
2025-09-29T13:05:47.100 [DEBUG] [Thread-156637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:05:47.100 [DEBUG] [Thread-156637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:05:47.100 [DEBUG] [Thread-156637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:05:47.100 [DEBUG] [Thread-156637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:05:47.120 [INFO] [Thread-156637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:05:47.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:05:47.709 [DEBUG] [Thread-156637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:05:47.710 [DEBUG] [Thread-156637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:05:47.710 [DEBUG] [Thread-156637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:05:47.750 [DEBUG] [Thread-156637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:05:47.751 [DEBUG] [Thread-156637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:05:47.753 [DEBUG] [Thread-156637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:05:47.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:05:47.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:05:47.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:05:47.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:05:47.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:05:47.767 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:05:47.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:05:47.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:05:47.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:05:47.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.462223 -999.00  +14.50  12.60     45   +2.90 1 1 1 1 1   888    0 12.31 52.51 ----- 11.6 12.6 155.6 15.7 23.2 -26.6 22.1 -26.6 22.8 -26.0 24.1 -26.9
2025-09-29T13:05:47.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:05:47.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:05:47.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.462223
2025-09-29T13:05:47.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:05:47.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:05:47.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:05:47.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:05:47.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:05:47.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:05:40', tmtdew=12.66, humidity=42.01, cloud=0.0, wind=17.61, temperature=13.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:05:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:05:47.770 [DEBUG] [Thread-156637] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:47.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:05:47.866 [DEBUG] [Thread-156640] [transport.py] [_log()] starting thread (client mode): 0x2e348730
2025-09-29T13:05:47.866 [DEBUG] [Thread-156640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:47.881 [DEBUG] [Thread-156640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:05:47.882 [INFO] [Thread-156640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:05:47.892 [DEBUG] [Thread-156640] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:47.892 [DEBUG] [Thread-156640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] client lang: <none>
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] server lang: <none>
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] kex follows: False
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:05:47.893 [DEBUG] [Thread-156640] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:05:47.894 [DEBUG] [Thread-156640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:05:47.894 [DEBUG] [Thread-156640] [transport.py] [_log()] Compression: none
2025-09-29T13:05:47.894 [DEBUG] [Thread-156640] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:05:47.950 [DEBUG] [Thread-156640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:05:47.951 [DEBUG] [Thread-156640] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:05:47.951 [DEBUG] [Thread-156640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:05:47.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:05:47.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:05:48.007 [DEBUG] [Thread-156640] [transport.py] [_log()] userauth is OK
2025-09-29T13:05:48.007 [DEBUG] [Thread-156640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:05:48.007 [DEBUG] [Thread-156640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:05:48.008 [DEBUG] [Thread-156640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:05:48.008 [DEBUG] [Thread-156640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:05:48.027 [INFO] [Thread-156640] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:05:48.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:05:48.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:05:49.013 [DEBUG] [Thread-156640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:05:49.013 [DEBUG] [Thread-156640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:05:49.061 [DEBUG] [Thread-156640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:05:49.061 [DEBUG] [Thread-156640] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:05:49.070 [DEBUG] [Thread-156640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:05:49.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:05:49.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:05:49.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:05:49.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:05:49.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:05:49.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:05:49.105 [DEBUG] [Thread-156640] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:05:50.267 [DEBUG] [Thread-156642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:05:52.607 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:05:52.608 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:05:59.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:05:59.107 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:05:59.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:05:59.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 5, 40), 12.66, 42.01, 0.0, 17.61, 13.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:05:59.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:05:40
2025-09-29T13:05:59.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:05:59.975 [DEBUG] [Thread-156643] [transport.py] [_log()] starting thread (client mode): 0x2b91ef50
2025-09-29T13:05:59.975 [DEBUG] [Thread-156643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:05:59.996 [DEBUG] [Thread-156643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:05:59.996 [INFO] [Thread-156643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:05:59.999 [DEBUG] [Thread-156643] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] Compression: none
2025-09-29T13:06:00.000 [DEBUG] [Thread-156643] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:00.016 [DEBUG] [Thread-156643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:00.017 [DEBUG] [Thread-156643] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:00.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:06:00.018 [DEBUG] [Thread-156643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:06:00.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:00.019 [DEBUG] [Thread-156643] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:00.019 [DEBUG] [Thread-156643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:00.020 [DEBUG] [Thread-156643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:00.020 [DEBUG] [Thread-156643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:06:00.020 [DEBUG] [Thread-156643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:00.054 [INFO] [Thread-156643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:00.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:00.631 [DEBUG] [Thread-156643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:00.631 [DEBUG] [Thread-156643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:00.632 [DEBUG] [Thread-156643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:06:00.672 [DEBUG] [Thread-156643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:00.673 [DEBUG] [Thread-156643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:00.676 [DEBUG] [Thread-156643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:00.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:00.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:06:00.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:06:00.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:06:00.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:00.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:06:00.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:00.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:00.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:06:00.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.462223 -999.00  +14.50  12.60     45   +2.90 1 1 1 1 1   888    0 12.31 52.51 ----- 11.6 12.6 155.6 15.7 23.2 -26.6 22.1 -26.6 22.8 -26.0 24.1 -26.9
2025-09-29T13:06:00.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:06:00.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:06:00.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.462223
2025-09-29T13:06:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:06:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:06:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:06:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:06:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:06:00.699 [DEBUG] [Thread-156643] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:00.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:05:40', tmtdew=12.66, humidity=42.01, cloud=0.0, wind=17.61, temperature=13.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:05:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:06:00.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:06:00.792 [DEBUG] [Thread-156646] [transport.py] [_log()] starting thread (client mode): 0x2e38f8e0
2025-09-29T13:06:00.792 [DEBUG] [Thread-156646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:00.806 [DEBUG] [Thread-156646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:06:00.806 [INFO] [Thread-156646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:06:00.814 [DEBUG] [Thread-156646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:00.814 [DEBUG] [Thread-156646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:06:00.814 [DEBUG] [Thread-156646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:00.814 [DEBUG] [Thread-156646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:00.814 [DEBUG] [Thread-156646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] Compression: none
2025-09-29T13:06:00.815 [DEBUG] [Thread-156646] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:00.870 [DEBUG] [Thread-156646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:00.871 [DEBUG] [Thread-156646] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:00.871 [DEBUG] [Thread-156646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:06:00.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:06:00.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:00.926 [DEBUG] [Thread-156646] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:00.927 [DEBUG] [Thread-156646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:00.927 [DEBUG] [Thread-156646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:00.927 [DEBUG] [Thread-156646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:06:00.927 [DEBUG] [Thread-156646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:00.940 [INFO] [Thread-156646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:00.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:06:00.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:01.993 [DEBUG] [Thread-156646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:01.993 [DEBUG] [Thread-156646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:02.041 [DEBUG] [Thread-156646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:02.041 [DEBUG] [Thread-156646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:02.050 [DEBUG] [Thread-156646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:02.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:02.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:06:02.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:06:02.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:02.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:02.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:02.084 [DEBUG] [Thread-156646] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:05.319 [DEBUG] [Thread-156648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:06:12.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:06:12.087 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:06:12.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:06:12.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 5, 40), 12.66, 42.01, 0.0, 17.61, 13.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:06:12.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:05:40
2025-09-29T13:06:12.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:06:12.973 [DEBUG] [Thread-156649] [transport.py] [_log()] starting thread (client mode): 0x2b9570d0
2025-09-29T13:06:12.973 [DEBUG] [Thread-156649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:12.992 [DEBUG] [Thread-156649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:06:12.992 [INFO] [Thread-156649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:06:12.995 [DEBUG] [Thread-156649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:12.995 [DEBUG] [Thread-156649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:06:12.995 [DEBUG] [Thread-156649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:12.995 [DEBUG] [Thread-156649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:12.995 [DEBUG] [Thread-156649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:12.995 [DEBUG] [Thread-156649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:12.995 [DEBUG] [Thread-156649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] Compression: none
2025-09-29T13:06:12.996 [DEBUG] [Thread-156649] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:13.014 [DEBUG] [Thread-156649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:13.014 [DEBUG] [Thread-156649] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:13.015 [DEBUG] [Thread-156649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:06:13.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:06:13.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:13.015 [DEBUG] [Thread-156649] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:13.015 [DEBUG] [Thread-156649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:13.015 [DEBUG] [Thread-156649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:13.015 [DEBUG] [Thread-156649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:06:13.015 [DEBUG] [Thread-156649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:13.031 [INFO] [Thread-156649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:13.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:13.784 [DEBUG] [Thread-156649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:13.784 [DEBUG] [Thread-156649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:13.784 [DEBUG] [Thread-156649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:06:13.825 [DEBUG] [Thread-156649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:13.825 [DEBUG] [Thread-156649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:13.827 [DEBUG] [Thread-156649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:13.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:13.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:06:13.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:06:13.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:06:13.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:13.840 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:06:13.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.462223 -999.00  +14.50  12.60     45   +2.90 1 1 1 1 1   888    0 12.31 52.51 ----- 11.6 12.6 155.6 15.7 23.2 -26.6 22.1 -26.6 22.8 -26.0 24.1 -26.9
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.462223
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:06:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:05:40', tmtdew=12.66, humidity=42.01, cloud=0.0, wind=17.61, temperature=13.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:05:36.067', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:06:13.841 [DEBUG] [Thread-156649] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:13.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:06:13.927 [DEBUG] [Thread-156652] [transport.py] [_log()] starting thread (client mode): 0x2b9c1120
2025-09-29T13:06:13.927 [DEBUG] [Thread-156652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:13.942 [DEBUG] [Thread-156652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:06:13.942 [INFO] [Thread-156652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:13.949 [DEBUG] [Thread-156652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:13.950 [DEBUG] [Thread-156652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:13.950 [DEBUG] [Thread-156652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:13.950 [DEBUG] [Thread-156652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:13.950 [DEBUG] [Thread-156652] [transport.py] [_log()] Compression: none
2025-09-29T13:06:13.950 [DEBUG] [Thread-156652] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:14.014 [DEBUG] [Thread-156652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:14.014 [DEBUG] [Thread-156652] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:14.014 [DEBUG] [Thread-156652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:06:14.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:06:14.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:14.071 [DEBUG] [Thread-156652] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:14.071 [DEBUG] [Thread-156652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:14.071 [DEBUG] [Thread-156652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:14.071 [DEBUG] [Thread-156652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:06:14.071 [DEBUG] [Thread-156652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:14.085 [INFO] [Thread-156652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:14.085 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:06:14.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:15.036 [DEBUG] [Thread-156652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:15.036 [DEBUG] [Thread-156652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:15.086 [DEBUG] [Thread-156652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:15.086 [DEBUG] [Thread-156652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:15.095 [DEBUG] [Thread-156652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:15.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:15.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:06:15.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:06:15.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:15.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:15.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:15.136 [DEBUG] [Thread-156652] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:20.355 [DEBUG] [Thread-156654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:06:25.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:06:25.135 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:06:25.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:06:25.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 6, 12), 12.7, 41.95, 0.0, 17.27, 13.59, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:06:25.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:06:12
2025-09-29T13:06:25.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:06:26.001 [DEBUG] [Thread-156655] [transport.py] [_log()] starting thread (client mode): 0x2b9afb20
2025-09-29T13:06:26.001 [DEBUG] [Thread-156655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:26.022 [DEBUG] [Thread-156655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:06:26.022 [INFO] [Thread-156655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:06:26.025 [DEBUG] [Thread-156655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:26.025 [DEBUG] [Thread-156655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] Compression: none
2025-09-29T13:06:26.026 [DEBUG] [Thread-156655] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:26.042 [DEBUG] [Thread-156655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:26.042 [DEBUG] [Thread-156655] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:26.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:06:26.043 [DEBUG] [Thread-156655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:06:26.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:26.044 [DEBUG] [Thread-156655] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:26.044 [DEBUG] [Thread-156655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:26.044 [DEBUG] [Thread-156655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:26.044 [DEBUG] [Thread-156655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:06:26.044 [DEBUG] [Thread-156655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:26.075 [INFO] [Thread-156655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:26.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:26.640 [DEBUG] [Thread-156655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:26.641 [DEBUG] [Thread-156655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:26.641 [DEBUG] [Thread-156655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:06:26.681 [DEBUG] [Thread-156655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:26.681 [DEBUG] [Thread-156655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:26.684 [DEBUG] [Thread-156655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:26.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:26.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:06:26.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:06:26.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:06:26.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:26.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:06:26.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:26.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:26.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:06:26.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.462570 -999.00  +14.60   9.23     45   +2.80 1 1 1 1 1   888    0 12.26 54.71 ----- 6.8 9.2 154.2 15.5 23.4 -26.6 22.1 -32.9 22.8 -28.1 24.2 -29.5
2025-09-29T13:06:26.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:06:26.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:06:26.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.462570
2025-09-29T13:06:26.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:06:26.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:06:26.707 [DEBUG] [Thread-156655] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:26.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:06:26.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:06:26.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:06:26.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:06:12', tmtdew=12.7, humidity=41.95, cloud=0.0, wind=17.27, temperature=13.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:06:06.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:06:26.790 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:06:26.807 [DEBUG] [Thread-156658] [transport.py] [_log()] starting thread (client mode): 0x2b91e3e0
2025-09-29T13:06:26.807 [DEBUG] [Thread-156658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:26.821 [DEBUG] [Thread-156658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:06:26.822 [INFO] [Thread-156658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:06:26.829 [DEBUG] [Thread-156658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:26.829 [DEBUG] [Thread-156658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:06:26.829 [DEBUG] [Thread-156658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:26.829 [DEBUG] [Thread-156658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] Compression: none
2025-09-29T13:06:26.830 [DEBUG] [Thread-156658] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:26.887 [DEBUG] [Thread-156658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:26.887 [DEBUG] [Thread-156658] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:26.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:06:26.888 [DEBUG] [Thread-156658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:06:26.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:26.943 [DEBUG] [Thread-156658] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:26.943 [DEBUG] [Thread-156658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:26.944 [DEBUG] [Thread-156658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:26.944 [DEBUG] [Thread-156658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:06:26.944 [DEBUG] [Thread-156658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:26.963 [INFO] [Thread-156658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:26.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:06:26.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:27.956 [DEBUG] [Thread-156658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:27.956 [DEBUG] [Thread-156658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:28.005 [DEBUG] [Thread-156658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:28.005 [DEBUG] [Thread-156658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:28.015 [DEBUG] [Thread-156658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:28.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:28.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:06:28.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:06:28.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:28.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:28.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:28.049 [DEBUG] [Thread-156658] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:35.382 [DEBUG] [Thread-156660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:06:38.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:06:38.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:06:38.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:06:38.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 6, 12), 12.7, 41.95, 0.0, 17.27, 13.59, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:06:38.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:06:12
2025-09-29T13:06:38.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:06:38.904 [DEBUG] [Thread-156661] [transport.py] [_log()] starting thread (client mode): 0x2b9c93f0
2025-09-29T13:06:38.904 [DEBUG] [Thread-156661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:38.924 [DEBUG] [Thread-156661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:06:38.924 [INFO] [Thread-156661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] Compression: none
2025-09-29T13:06:38.928 [DEBUG] [Thread-156661] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:38.936 [DEBUG] [Thread-156661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:38.937 [DEBUG] [Thread-156661] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:38.937 [DEBUG] [Thread-156661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:06:38.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:06:38.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:38.939 [DEBUG] [Thread-156661] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:38.939 [DEBUG] [Thread-156661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:38.939 [DEBUG] [Thread-156661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:38.939 [DEBUG] [Thread-156661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:06:38.939 [DEBUG] [Thread-156661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:38.962 [INFO] [Thread-156661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:38.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:39.693 [DEBUG] [Thread-156661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:39.693 [DEBUG] [Thread-156661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:39.693 [DEBUG] [Thread-156661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:06:39.734 [DEBUG] [Thread-156661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:39.734 [DEBUG] [Thread-156661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:39.737 [DEBUG] [Thread-156661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:39.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:39.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:06:39.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:06:39.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:06:39.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:39.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:06:39.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:39.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:39.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:06:39.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.462570 -999.00  +14.60   9.23     45   +2.80 1 1 1 1 1   888    0 12.26 54.71 ----- 6.8 9.2 154.2 15.5 23.4 -26.6 22.1 -32.9 22.8 -28.1 24.2 -29.5
2025-09-29T13:06:39.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:06:39.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:06:39.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.462570
2025-09-29T13:06:39.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:06:39.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:06:39.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:06:39.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:06:39.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:06:39.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:06:12', tmtdew=12.7, humidity=41.95, cloud=0.0, wind=17.27, temperature=13.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:06:06.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:06:39.760 [DEBUG] [Thread-156661] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:39.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:06:39.854 [DEBUG] [Thread-156664] [transport.py] [_log()] starting thread (client mode): 0x2b9ae710
2025-09-29T13:06:39.855 [DEBUG] [Thread-156664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:39.870 [DEBUG] [Thread-156664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:06:39.870 [INFO] [Thread-156664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:06:39.877 [DEBUG] [Thread-156664] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:39.878 [DEBUG] [Thread-156664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:06:39.878 [DEBUG] [Thread-156664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:39.878 [DEBUG] [Thread-156664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:39.878 [DEBUG] [Thread-156664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:39.878 [DEBUG] [Thread-156664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:39.878 [DEBUG] [Thread-156664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] Compression: none
2025-09-29T13:06:39.879 [DEBUG] [Thread-156664] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:39.934 [DEBUG] [Thread-156664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:39.935 [DEBUG] [Thread-156664] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:39.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:06:39.935 [DEBUG] [Thread-156664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:06:39.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:39.991 [DEBUG] [Thread-156664] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:39.991 [DEBUG] [Thread-156664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:39.991 [DEBUG] [Thread-156664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:39.991 [DEBUG] [Thread-156664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:06:39.991 [DEBUG] [Thread-156664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:40.011 [INFO] [Thread-156664] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:40.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:06:40.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:40.967 [DEBUG] [Thread-156664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:40.967 [DEBUG] [Thread-156664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:40.999 [DEBUG] [Thread-156666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:06:41.015 [DEBUG] [Thread-156664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:41.015 [DEBUG] [Thread-156664] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:41.023 [DEBUG] [Thread-156664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:41.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:41.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:06:41.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:06:41.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:41.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:41.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:41.057 [DEBUG] [Thread-156664] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:50.428 [DEBUG] [Thread-156667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:06:51.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:06:51.060 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:06:51.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:06:51.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 6, 44), 12.35, 42.56, 0.0, 16.82, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:06:51.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:06:44
2025-09-29T13:06:51.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:06:51.902 [DEBUG] [Thread-156668] [transport.py] [_log()] starting thread (client mode): 0x2e38f070
2025-09-29T13:06:51.902 [DEBUG] [Thread-156668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:51.923 [DEBUG] [Thread-156668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:06:51.923 [INFO] [Thread-156668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:51.926 [DEBUG] [Thread-156668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] Compression: none
2025-09-29T13:06:51.927 [DEBUG] [Thread-156668] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:51.945 [DEBUG] [Thread-156668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:51.946 [DEBUG] [Thread-156668] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:51.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:06:51.947 [DEBUG] [Thread-156668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:06:51.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:51.950 [DEBUG] [Thread-156668] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:51.950 [DEBUG] [Thread-156668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:51.950 [DEBUG] [Thread-156668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:51.950 [DEBUG] [Thread-156668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:06:51.951 [DEBUG] [Thread-156668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:51.965 [INFO] [Thread-156668] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:51.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:52.708 [DEBUG] [Thread-156668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:52.708 [DEBUG] [Thread-156668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:52.709 [DEBUG] [Thread-156668] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:06:52.750 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:06:52.751 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:06:52.755 [DEBUG] [Thread-156668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:52.755 [DEBUG] [Thread-156668] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:52.757 [DEBUG] [Thread-156668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:52.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:52.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:06:52.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:06:52.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:06:52.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:52.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:06:52.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:52.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:52.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:06:52.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.462570 -999.00  +14.60   9.23     45   +2.80 1 1 1 1 1   888    0 12.26 54.71 ----- 6.8 9.2 154.2 15.5 23.4 -26.6 22.1 -32.9 22.8 -28.1 24.2 -29.5
2025-09-29T13:06:52.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:06:52.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:06:52.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.462570
2025-09-29T13:06:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:06:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:06:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:06:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:06:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:06:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:06:44', tmtdew=12.35, humidity=42.56, cloud=0.0, wind=16.82, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:06:06.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:06:52.777 [DEBUG] [Thread-156668] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:06:52.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:06:52.874 [DEBUG] [Thread-156671] [transport.py] [_log()] starting thread (client mode): 0x2e38eec0
2025-09-29T13:06:52.875 [DEBUG] [Thread-156671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:06:52.889 [DEBUG] [Thread-156671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:06:52.889 [INFO] [Thread-156671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:06:52.896 [DEBUG] [Thread-156671] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] client lang: <none>
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] server lang: <none>
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] kex follows: False
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:06:52.897 [DEBUG] [Thread-156671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:06:52.898 [DEBUG] [Thread-156671] [transport.py] [_log()] Compression: none
2025-09-29T13:06:52.898 [DEBUG] [Thread-156671] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:06:52.956 [DEBUG] [Thread-156671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:06:52.956 [DEBUG] [Thread-156671] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:06:52.957 [DEBUG] [Thread-156671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:06:52.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:06:52.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:06:53.015 [DEBUG] [Thread-156671] [transport.py] [_log()] userauth is OK
2025-09-29T13:06:53.016 [DEBUG] [Thread-156671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:06:53.016 [DEBUG] [Thread-156671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:06:53.016 [DEBUG] [Thread-156671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:06:53.016 [DEBUG] [Thread-156671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:06:53.034 [INFO] [Thread-156671] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:06:53.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:06:53.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:06:53.981 [DEBUG] [Thread-156671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:06:53.981 [DEBUG] [Thread-156671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:06:54.029 [DEBUG] [Thread-156671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:06:54.029 [DEBUG] [Thread-156671] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:06:54.038 [DEBUG] [Thread-156671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:06:54.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:06:54.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:06:54.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:06:54.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:06:54.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:06:54.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:06:54.077 [DEBUG] [Thread-156671] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:04.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:07:04.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:07:04.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:07:04.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 6, 44), 12.35, 42.56, 0.0, 16.82, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:07:04.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:06:44
2025-09-29T13:07:04.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:07:04.922 [DEBUG] [Thread-156673] [transport.py] [_log()] starting thread (client mode): 0x2e38eaa0
2025-09-29T13:07:04.922 [DEBUG] [Thread-156673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:04.943 [DEBUG] [Thread-156673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:07:04.944 [INFO] [Thread-156673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:07:04.947 [DEBUG] [Thread-156673] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:04.947 [DEBUG] [Thread-156673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:07:04.947 [DEBUG] [Thread-156673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:04.947 [DEBUG] [Thread-156673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:04.947 [DEBUG] [Thread-156673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:04.947 [DEBUG] [Thread-156673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:04.948 [DEBUG] [Thread-156673] [transport.py] [_log()] Compression: none
2025-09-29T13:07:04.949 [DEBUG] [Thread-156673] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:04.967 [DEBUG] [Thread-156673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:04.968 [DEBUG] [Thread-156673] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:04.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:07:04.969 [DEBUG] [Thread-156673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:07:04.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:04.970 [DEBUG] [Thread-156673] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:04.970 [DEBUG] [Thread-156673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:04.970 [DEBUG] [Thread-156673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:04.971 [DEBUG] [Thread-156673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:07:04.971 [DEBUG] [Thread-156673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:04.993 [INFO] [Thread-156673] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:04.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:05.458 [DEBUG] [Thread-156675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:07:05.618 [DEBUG] [Thread-156673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:05.618 [DEBUG] [Thread-156673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:05.618 [DEBUG] [Thread-156673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:07:05.659 [DEBUG] [Thread-156673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:05.659 [DEBUG] [Thread-156673] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:05.661 [DEBUG] [Thread-156673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:05.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:05.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:07:05.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:07:05.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:07:05.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:05.683 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:07:05.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:05.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:07:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.462917 -999.00  +14.60   5.88     44   +2.50 1 1 1 1 1   888    0 12.47 60.69 ----- 6.3 5.9 215.3 16.7 23.3 -28.2 21.9 -28.2 22.8 -26.8 24.1 -28.6
2025-09-29T13:07:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:07:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:07:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.462917
2025-09-29T13:07:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:07:05.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:07:05.685 [DEBUG] [Thread-156673] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:05.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:07:05.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:07:05.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:07:05.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:06:44', tmtdew=12.35, humidity=42.56, cloud=0.0, wind=16.82, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:06:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:07:05.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:07:05.778 [DEBUG] [Thread-156677] [transport.py] [_log()] starting thread (client mode): 0x2b9c2620
2025-09-29T13:07:05.778 [DEBUG] [Thread-156677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:05.793 [DEBUG] [Thread-156677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:07:05.793 [INFO] [Thread-156677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:07:05.802 [DEBUG] [Thread-156677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:05.802 [DEBUG] [Thread-156677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:07:05.802 [DEBUG] [Thread-156677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:05.803 [DEBUG] [Thread-156677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:05.804 [DEBUG] [Thread-156677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:05.804 [DEBUG] [Thread-156677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:05.804 [DEBUG] [Thread-156677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:05.804 [DEBUG] [Thread-156677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:05.804 [DEBUG] [Thread-156677] [transport.py] [_log()] Compression: none
2025-09-29T13:07:05.804 [DEBUG] [Thread-156677] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:05.861 [DEBUG] [Thread-156677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:05.862 [DEBUG] [Thread-156677] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:05.862 [DEBUG] [Thread-156677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:07:05.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:07:05.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:05.919 [DEBUG] [Thread-156677] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:05.919 [DEBUG] [Thread-156677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:05.919 [DEBUG] [Thread-156677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:05.920 [DEBUG] [Thread-156677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:07:05.920 [DEBUG] [Thread-156677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:05.938 [INFO] [Thread-156677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:05.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:07:05.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:06.896 [DEBUG] [Thread-156677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:06.896 [DEBUG] [Thread-156677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:06.947 [DEBUG] [Thread-156677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:06.948 [DEBUG] [Thread-156677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:06.959 [DEBUG] [Thread-156677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:06.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:06.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:07:06.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:07:06.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:06.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:06.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:07.004 [DEBUG] [Thread-156677] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:17.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:07:17.003 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:07:17.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:07:17.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 6, 44), 12.35, 42.56, 0.0, 16.82, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:07:17.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:06:44
2025-09-29T13:07:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:07:17.899 [DEBUG] [Thread-156679] [transport.py] [_log()] starting thread (client mode): 0x2b96fb50
2025-09-29T13:07:17.899 [DEBUG] [Thread-156679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:17.919 [DEBUG] [Thread-156679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:07:17.919 [INFO] [Thread-156679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] Compression: none
2025-09-29T13:07:17.923 [DEBUG] [Thread-156679] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:17.938 [DEBUG] [Thread-156679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:17.938 [DEBUG] [Thread-156679] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:17.938 [DEBUG] [Thread-156679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:07:17.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:07:17.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:17.939 [DEBUG] [Thread-156679] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:17.939 [DEBUG] [Thread-156679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:17.939 [DEBUG] [Thread-156679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:17.939 [DEBUG] [Thread-156679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:07:17.939 [DEBUG] [Thread-156679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:17.948 [INFO] [Thread-156679] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:17.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:18.669 [DEBUG] [Thread-156679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:18.669 [DEBUG] [Thread-156679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:18.669 [DEBUG] [Thread-156679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:07:18.710 [DEBUG] [Thread-156679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:18.711 [DEBUG] [Thread-156679] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:18.713 [DEBUG] [Thread-156679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:18.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:18.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:07:18.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:07:18.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:07:18.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:18.727 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:07:18.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:18.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:18.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:07:18.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.462917 -999.00  +14.60   5.88     44   +2.50 1 1 1 1 1   888    0 12.47 60.69 ----- 6.3 5.9 215.3 16.7 23.3 -28.2 21.9 -28.2 22.8 -26.8 24.1 -28.6
2025-09-29T13:07:18.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:07:18.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:07:18.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.462917
2025-09-29T13:07:18.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:07:18.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:07:18.730 [DEBUG] [Thread-156679] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:18.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:07:18.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:07:18.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:07:18.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:06:44', tmtdew=12.35, humidity=42.56, cloud=0.0, wind=16.82, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:06:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:07:18.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:07:18.821 [DEBUG] [Thread-156682] [transport.py] [_log()] starting thread (client mode): 0x2b9c1480
2025-09-29T13:07:18.821 [DEBUG] [Thread-156682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:18.840 [DEBUG] [Thread-156682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:07:18.840 [INFO] [Thread-156682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:07:18.848 [DEBUG] [Thread-156682] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:18.848 [DEBUG] [Thread-156682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:07:18.848 [DEBUG] [Thread-156682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:18.848 [DEBUG] [Thread-156682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:18.848 [DEBUG] [Thread-156682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:18.849 [DEBUG] [Thread-156682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:18.850 [DEBUG] [Thread-156682] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:18.850 [DEBUG] [Thread-156682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:18.850 [DEBUG] [Thread-156682] [transport.py] [_log()] Compression: none
2025-09-29T13:07:18.850 [DEBUG] [Thread-156682] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:18.907 [DEBUG] [Thread-156682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:18.908 [DEBUG] [Thread-156682] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:18.908 [DEBUG] [Thread-156682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:07:18.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:07:18.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:18.963 [DEBUG] [Thread-156682] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:18.963 [DEBUG] [Thread-156682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:18.964 [DEBUG] [Thread-156682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:18.964 [DEBUG] [Thread-156682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:07:18.964 [DEBUG] [Thread-156682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:18.983 [INFO] [Thread-156682] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:18.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:07:18.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:19.951 [DEBUG] [Thread-156682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:19.951 [DEBUG] [Thread-156682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:19.999 [DEBUG] [Thread-156682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:20.000 [DEBUG] [Thread-156682] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:20.009 [DEBUG] [Thread-156682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:20.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:20.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:07:20.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:07:20.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:20.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:20.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:20.043 [DEBUG] [Thread-156682] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:20.511 [DEBUG] [Thread-156684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:07:30.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:07:30.046 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:07:30.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:07:30.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 7, 16), 12.21, 42.98, 0.0, 15.76, 12.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:07:30.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:07:16
2025-09-29T13:07:30.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:07:30.888 [DEBUG] [Thread-156685] [transport.py] [_log()] starting thread (client mode): 0x2b9aed10
2025-09-29T13:07:30.888 [DEBUG] [Thread-156685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:30.907 [DEBUG] [Thread-156685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:07:30.907 [INFO] [Thread-156685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] Compression: none
2025-09-29T13:07:30.911 [DEBUG] [Thread-156685] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:30.929 [DEBUG] [Thread-156685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:30.930 [DEBUG] [Thread-156685] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:30.930 [DEBUG] [Thread-156685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:07:30.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:07:30.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:30.932 [DEBUG] [Thread-156685] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:30.933 [DEBUG] [Thread-156685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:30.933 [DEBUG] [Thread-156685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:30.933 [DEBUG] [Thread-156685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:07:30.933 [DEBUG] [Thread-156685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:30.957 [INFO] [Thread-156685] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:30.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:31.520 [DEBUG] [Thread-156685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:31.520 [DEBUG] [Thread-156685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:31.521 [DEBUG] [Thread-156685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:07:31.561 [DEBUG] [Thread-156685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:31.561 [DEBUG] [Thread-156685] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:31.565 [DEBUG] [Thread-156685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:31.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:31.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:07:31.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:07:31.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:07:31.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:31.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:07:31.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:31.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:31.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:07:31.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.463264 -999.00  +14.90   9.77     43   +2.70 1 1 1 1 1   888    0 12.90 73.49 ----- 8.2 9.8 197.2 12.5 23.2 -27.8 22.0 -27.5 22.8 -26.5 24.2 -27.4
2025-09-29T13:07:31.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:07:31.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:07:31.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.463264
2025-09-29T13:07:31.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:07:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:07:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:07:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:07:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:07:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:07:16', tmtdew=12.21, humidity=42.98, cloud=0.0, wind=15.76, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:07:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:07:31.594 [DEBUG] [Thread-156685] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:31.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:07:31.688 [DEBUG] [Thread-156688] [transport.py] [_log()] starting thread (client mode): 0x2e38c730
2025-09-29T13:07:31.688 [DEBUG] [Thread-156688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:31.703 [DEBUG] [Thread-156688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:07:31.703 [INFO] [Thread-156688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:31.711 [DEBUG] [Thread-156688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:31.712 [DEBUG] [Thread-156688] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:31.712 [DEBUG] [Thread-156688] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:31.712 [DEBUG] [Thread-156688] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:31.712 [DEBUG] [Thread-156688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:31.712 [DEBUG] [Thread-156688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:31.712 [DEBUG] [Thread-156688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:31.712 [DEBUG] [Thread-156688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:31.712 [DEBUG] [Thread-156688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:31.713 [DEBUG] [Thread-156688] [transport.py] [_log()] Compression: none
2025-09-29T13:07:31.713 [DEBUG] [Thread-156688] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:31.771 [DEBUG] [Thread-156688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:31.771 [DEBUG] [Thread-156688] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:31.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:07:31.772 [DEBUG] [Thread-156688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:07:31.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:31.827 [DEBUG] [Thread-156688] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:31.827 [DEBUG] [Thread-156688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:31.828 [DEBUG] [Thread-156688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:31.828 [DEBUG] [Thread-156688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:07:31.828 [DEBUG] [Thread-156688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:31.846 [INFO] [Thread-156688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:31.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:07:31.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:32.795 [DEBUG] [Thread-156688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:32.795 [DEBUG] [Thread-156688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:32.844 [DEBUG] [Thread-156688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:32.844 [DEBUG] [Thread-156688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:32.853 [DEBUG] [Thread-156688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:32.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:32.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:07:32.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:07:32.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:32.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:32.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:32.888 [DEBUG] [Thread-156688] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:35.565 [DEBUG] [Thread-156690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:07:41.050 [DEBUG] [Thread-156691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:07:42.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:07:42.891 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:07:42.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:07:43.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 7, 16), 12.21, 42.98, 0.0, 15.76, 12.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:07:43.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:07:16
2025-09-29T13:07:43.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:07:43.744 [DEBUG] [Thread-156692] [transport.py] [_log()] starting thread (client mode): 0x2b9ac910
2025-09-29T13:07:43.744 [DEBUG] [Thread-156692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:43.765 [DEBUG] [Thread-156692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:07:43.766 [INFO] [Thread-156692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:43.769 [DEBUG] [Thread-156692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] Compression: none
2025-09-29T13:07:43.770 [DEBUG] [Thread-156692] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:43.787 [DEBUG] [Thread-156692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:43.788 [DEBUG] [Thread-156692] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:43.788 [DEBUG] [Thread-156692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:07:43.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:07:43.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:43.790 [DEBUG] [Thread-156692] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:43.790 [DEBUG] [Thread-156692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:43.791 [DEBUG] [Thread-156692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:43.791 [DEBUG] [Thread-156692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:07:43.791 [DEBUG] [Thread-156692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:43.808 [INFO] [Thread-156692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:43.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:44.544 [DEBUG] [Thread-156692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:44.544 [DEBUG] [Thread-156692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:44.544 [DEBUG] [Thread-156692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:07:44.584 [DEBUG] [Thread-156692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:44.584 [DEBUG] [Thread-156692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:44.587 [DEBUG] [Thread-156692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:44.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:44.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:07:44.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:07:44.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:07:44.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:44.611 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:07:44.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:44.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:44.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:07:44.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.463264 -999.00  +14.90   9.77     43   +2.70 1 1 1 1 1   888    0 12.90 73.49 ----- 8.2 9.8 197.2 12.5 23.2 -27.8 22.0 -27.5 22.8 -26.5 24.2 -27.4
2025-09-29T13:07:44.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:07:44.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:07:44.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.463264
2025-09-29T13:07:44.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:07:44.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:07:44.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:07:44.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:07:44.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:07:44.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:07:16', tmtdew=12.21, humidity=42.98, cloud=0.0, wind=15.76, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:07:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:07:44.613 [DEBUG] [Thread-156692] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:44.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:07:44.713 [DEBUG] [Thread-156695] [transport.py] [_log()] starting thread (client mode): 0x2b96cfd0
2025-09-29T13:07:44.713 [DEBUG] [Thread-156695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:44.727 [DEBUG] [Thread-156695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:07:44.727 [INFO] [Thread-156695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:44.735 [DEBUG] [Thread-156695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:44.736 [DEBUG] [Thread-156695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:44.736 [DEBUG] [Thread-156695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:44.736 [DEBUG] [Thread-156695] [transport.py] [_log()] Compression: none
2025-09-29T13:07:44.736 [DEBUG] [Thread-156695] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:44.794 [DEBUG] [Thread-156695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:44.794 [DEBUG] [Thread-156695] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:44.794 [DEBUG] [Thread-156695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:07:44.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:07:44.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:44.851 [DEBUG] [Thread-156695] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:44.851 [DEBUG] [Thread-156695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:44.851 [DEBUG] [Thread-156695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:44.851 [DEBUG] [Thread-156695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:07:44.851 [DEBUG] [Thread-156695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:44.864 [INFO] [Thread-156695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:44.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:07:44.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:45.822 [DEBUG] [Thread-156695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:45.822 [DEBUG] [Thread-156695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:45.870 [DEBUG] [Thread-156695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:45.870 [DEBUG] [Thread-156695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:45.879 [DEBUG] [Thread-156695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:45.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:45.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:07:45.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:07:45.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:45.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:45.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:45.914 [DEBUG] [Thread-156695] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:50.613 [DEBUG] [Thread-156697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:07:52.893 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:07:52.894 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:07:55.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:07:55.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:07:55.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:07:56.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 7, 48), 12.09, 43.71, 0.0, 13.37, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:07:56.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:07:48
2025-09-29T13:07:56.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:07:56.754 [DEBUG] [Thread-156698] [transport.py] [_log()] starting thread (client mode): 0x2e38de40
2025-09-29T13:07:56.754 [DEBUG] [Thread-156698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:56.774 [DEBUG] [Thread-156698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:07:56.775 [INFO] [Thread-156698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:07:56.778 [DEBUG] [Thread-156698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:56.778 [DEBUG] [Thread-156698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:07:56.778 [DEBUG] [Thread-156698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] Compression: none
2025-09-29T13:07:56.779 [DEBUG] [Thread-156698] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:56.796 [DEBUG] [Thread-156698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:56.797 [DEBUG] [Thread-156698] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:56.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:07:56.798 [DEBUG] [Thread-156698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:07:56.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:56.800 [DEBUG] [Thread-156698] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:56.800 [DEBUG] [Thread-156698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:56.800 [DEBUG] [Thread-156698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:56.800 [DEBUG] [Thread-156698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:07:56.801 [DEBUG] [Thread-156698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:56.824 [INFO] [Thread-156698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:56.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:57.559 [DEBUG] [Thread-156698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:57.560 [DEBUG] [Thread-156698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:57.560 [DEBUG] [Thread-156698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:07:57.600 [DEBUG] [Thread-156698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:57.601 [DEBUG] [Thread-156698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:57.604 [DEBUG] [Thread-156698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:57.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:57.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:07:57.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:07:57.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:07:57.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:57.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:07:57.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:57.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:57.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:07:57.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.463264 -999.00  +14.90   9.77     43   +2.70 1 1 1 1 1   888    0 12.90 73.49 ----- 8.2 9.8 197.2 12.5 23.2 -27.8 22.0 -27.5 22.8 -26.5 24.2 -27.4
2025-09-29T13:07:57.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:07:57.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:07:57.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.463264
2025-09-29T13:07:57.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:07:57.626 [DEBUG] [Thread-156698] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:07:57.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:07:57.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:07:57.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:07:57.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:07:57.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:07:48', tmtdew=12.09, humidity=43.71, cloud=0.0, wind=13.37, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:07:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:07:57.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:07:57.721 [DEBUG] [Thread-156701] [transport.py] [_log()] starting thread (client mode): 0x2b9ae260
2025-09-29T13:07:57.721 [DEBUG] [Thread-156701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:07:57.735 [DEBUG] [Thread-156701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:07:57.735 [INFO] [Thread-156701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] client lang: <none>
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] server lang: <none>
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] kex follows: False
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] Compression: none
2025-09-29T13:07:57.743 [DEBUG] [Thread-156701] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:07:57.802 [DEBUG] [Thread-156701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:07:57.803 [DEBUG] [Thread-156701] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:07:57.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:07:57.804 [DEBUG] [Thread-156701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:07:57.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:07:57.864 [DEBUG] [Thread-156701] [transport.py] [_log()] userauth is OK
2025-09-29T13:07:57.864 [DEBUG] [Thread-156701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:07:57.864 [DEBUG] [Thread-156701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:07:57.864 [DEBUG] [Thread-156701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:07:57.865 [DEBUG] [Thread-156701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:07:57.883 [INFO] [Thread-156701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:07:57.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:07:57.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:07:58.804 [DEBUG] [Thread-156701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:07:58.805 [DEBUG] [Thread-156701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:07:58.852 [DEBUG] [Thread-156701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:07:58.852 [DEBUG] [Thread-156701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:07:58.861 [DEBUG] [Thread-156701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:07:58.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:07:58.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:07:58.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:07:58.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:07:58.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:07:58.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:07:58.894 [DEBUG] [Thread-156701] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:05.642 [DEBUG] [Thread-156703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:08:08.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:08:08.897 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:08:08.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:08:09.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 7, 48), 12.09, 43.71, 0.0, 13.37, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:08:09.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:07:48
2025-09-29T13:08:09.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:08:09.748 [DEBUG] [Thread-156704] [transport.py] [_log()] starting thread (client mode): 0x2b9cb340
2025-09-29T13:08:09.748 [DEBUG] [Thread-156704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:08:09.768 [DEBUG] [Thread-156704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:08:09.768 [INFO] [Thread-156704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:08:09.772 [DEBUG] [Thread-156704] [transport.py] [_log()] client lang: <none>
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] server lang: <none>
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] kex follows: False
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] Compression: none
2025-09-29T13:08:09.773 [DEBUG] [Thread-156704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:08:09.789 [DEBUG] [Thread-156704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:08:09.789 [DEBUG] [Thread-156704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:08:09.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:08:09.790 [DEBUG] [Thread-156704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:08:09.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:08:09.791 [DEBUG] [Thread-156704] [transport.py] [_log()] userauth is OK
2025-09-29T13:08:09.791 [DEBUG] [Thread-156704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:08:09.792 [DEBUG] [Thread-156704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:08:09.792 [DEBUG] [Thread-156704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:08:09.792 [DEBUG] [Thread-156704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:08:09.806 [INFO] [Thread-156704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:08:09.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:08:10.418 [DEBUG] [Thread-156704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:08:10.419 [DEBUG] [Thread-156704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:08:10.419 [DEBUG] [Thread-156704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:08:10.459 [DEBUG] [Thread-156704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:08:10.459 [DEBUG] [Thread-156704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:08:10.461 [DEBUG] [Thread-156704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:08:10.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:08:10.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:08:10.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:08:10.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:08:10.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:08:10.475 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:08:10.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:08:10.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:08:10.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:08:10.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.463611 -999.00  +14.90   3.05     43   +2.50 1 1 1 1 1   888    0 13.19 75.38 ----- 5.6 3.0 154.0 7.3 23.3 -26.8 21.9 -31.2 22.8 -26.5 24.2 -28.1
2025-09-29T13:08:10.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:08:10.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:08:10.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.463611
2025-09-29T13:08:10.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:08:10.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:08:10.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:08:10.477 [DEBUG] [Thread-156704] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:10.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:08:10.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:08:10.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:07:48', tmtdew=12.09, humidity=43.71, cloud=0.0, wind=13.37, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:07:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:08:10.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:08:10.580 [DEBUG] [Thread-156707] [transport.py] [_log()] starting thread (client mode): 0x2e38ee30
2025-09-29T13:08:10.580 [DEBUG] [Thread-156707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:08:10.595 [DEBUG] [Thread-156707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:08:10.596 [INFO] [Thread-156707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:08:10.606 [DEBUG] [Thread-156707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] client lang: <none>
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] server lang: <none>
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] kex follows: False
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:08:10.607 [DEBUG] [Thread-156707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:08:10.608 [DEBUG] [Thread-156707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:08:10.608 [DEBUG] [Thread-156707] [transport.py] [_log()] Compression: none
2025-09-29T13:08:10.608 [DEBUG] [Thread-156707] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:08:10.668 [DEBUG] [Thread-156707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:08:10.669 [DEBUG] [Thread-156707] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:08:10.669 [DEBUG] [Thread-156707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:08:10.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:08:10.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:08:10.731 [DEBUG] [Thread-156707] [transport.py] [_log()] userauth is OK
2025-09-29T13:08:10.732 [DEBUG] [Thread-156707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:08:10.732 [DEBUG] [Thread-156707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:08:10.732 [DEBUG] [Thread-156707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:08:10.732 [DEBUG] [Thread-156707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:08:10.750 [INFO] [Thread-156707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:08:10.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:08:10.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:08:11.695 [DEBUG] [Thread-156707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:08:11.695 [DEBUG] [Thread-156707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:08:11.743 [DEBUG] [Thread-156707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:08:11.743 [DEBUG] [Thread-156707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:08:11.752 [DEBUG] [Thread-156707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:08:11.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:08:11.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:08:11.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:08:11.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:08:11.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:08:11.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:08:11.786 [DEBUG] [Thread-156707] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:20.682 [DEBUG] [Thread-156709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:08:21.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:08:21.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:08:21.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:08:22.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 7, 48), 12.09, 43.71, 0.0, 13.37, 12.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:08:22.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:07:48
2025-09-29T13:08:22.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:08:22.638 [DEBUG] [Thread-156710] [transport.py] [_log()] starting thread (client mode): 0x2b9ae410
2025-09-29T13:08:22.638 [DEBUG] [Thread-156710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:08:22.659 [DEBUG] [Thread-156710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:08:22.659 [INFO] [Thread-156710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] client lang: <none>
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] server lang: <none>
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] kex follows: False
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] Compression: none
2025-09-29T13:08:22.663 [DEBUG] [Thread-156710] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:08:22.680 [DEBUG] [Thread-156710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:08:22.681 [DEBUG] [Thread-156710] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:08:22.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:08:22.681 [DEBUG] [Thread-156710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:08:22.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:08:22.682 [DEBUG] [Thread-156710] [transport.py] [_log()] userauth is OK
2025-09-29T13:08:22.683 [DEBUG] [Thread-156710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:08:22.683 [DEBUG] [Thread-156710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:08:22.683 [DEBUG] [Thread-156710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:08:22.683 [DEBUG] [Thread-156710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:08:22.697 [INFO] [Thread-156710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:08:22.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:08:23.499 [DEBUG] [Thread-156710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:08:23.499 [DEBUG] [Thread-156710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:08:23.500 [DEBUG] [Thread-156710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:08:23.540 [DEBUG] [Thread-156710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:08:23.540 [DEBUG] [Thread-156710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:08:23.542 [DEBUG] [Thread-156710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:08:23.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:08:23.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:08:23.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:08:23.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:08:23.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:08:23.555 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:08:23.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:08:23.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:08:23.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:08:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.463611 -999.00  +14.90   3.05     43   +2.50 1 1 1 1 1   888    0 13.19 75.38 ----- 5.6 3.0 154.0 7.3 23.3 -26.8 21.9 -31.2 22.8 -26.5 24.2 -28.1
2025-09-29T13:08:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:08:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:08:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.463611
2025-09-29T13:08:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:08:23.556 [DEBUG] [Thread-156710] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:23.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:08:23.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:08:23.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:08:23.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:08:23.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:07:48', tmtdew=12.09, humidity=43.71, cloud=0.0, wind=13.37, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:07:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:08:23.639 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:08:23.649 [DEBUG] [Thread-156713] [transport.py] [_log()] starting thread (client mode): 0x2b9c9030
2025-09-29T13:08:23.649 [DEBUG] [Thread-156713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:08:23.663 [DEBUG] [Thread-156713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:08:23.664 [INFO] [Thread-156713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:08:23.671 [DEBUG] [Thread-156713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:08:23.671 [DEBUG] [Thread-156713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] client lang: <none>
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] server lang: <none>
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] kex follows: False
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] Compression: none
2025-09-29T13:08:23.672 [DEBUG] [Thread-156713] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:08:23.730 [DEBUG] [Thread-156713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:08:23.731 [DEBUG] [Thread-156713] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:08:23.731 [DEBUG] [Thread-156713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:08:23.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:08:23.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:08:23.787 [DEBUG] [Thread-156713] [transport.py] [_log()] userauth is OK
2025-09-29T13:08:23.787 [DEBUG] [Thread-156713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:08:23.787 [DEBUG] [Thread-156713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:08:23.787 [DEBUG] [Thread-156713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:08:23.787 [DEBUG] [Thread-156713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:08:23.807 [INFO] [Thread-156713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:08:23.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:08:23.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:08:24.780 [DEBUG] [Thread-156713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:08:24.780 [DEBUG] [Thread-156713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:08:24.828 [DEBUG] [Thread-156713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:08:24.828 [DEBUG] [Thread-156713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:08:24.837 [DEBUG] [Thread-156713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:08:24.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:08:24.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:08:24.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:08:24.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:08:24.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:08:24.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:08:24.870 [DEBUG] [Thread-156713] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:34.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:08:34.873 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:08:34.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:08:35.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 8, 20), 12.3, 43.13, 0.0, 13.36, 13.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:08:35.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:08:20
2025-09-29T13:08:35.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:08:35.700 [DEBUG] [Thread-156715] [transport.py] [_log()] starting thread (client mode): 0x2e38dae0
2025-09-29T13:08:35.700 [DEBUG] [Thread-156715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:08:35.713 [DEBUG] [Thread-156716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:08:35.719 [DEBUG] [Thread-156715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:08:35.720 [INFO] [Thread-156715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:08:35.723 [DEBUG] [Thread-156715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] client lang: <none>
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] server lang: <none>
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] kex follows: False
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] Compression: none
2025-09-29T13:08:35.724 [DEBUG] [Thread-156715] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:08:35.742 [DEBUG] [Thread-156715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:08:35.743 [DEBUG] [Thread-156715] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:08:35.743 [DEBUG] [Thread-156715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:08:35.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:08:35.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:08:35.745 [DEBUG] [Thread-156715] [transport.py] [_log()] userauth is OK
2025-09-29T13:08:35.746 [DEBUG] [Thread-156715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:08:35.746 [DEBUG] [Thread-156715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:08:35.746 [DEBUG] [Thread-156715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:08:35.746 [DEBUG] [Thread-156715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:08:35.764 [INFO] [Thread-156715] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:08:35.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:08:36.399 [DEBUG] [Thread-156715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:08:36.399 [DEBUG] [Thread-156715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:08:36.400 [DEBUG] [Thread-156715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:08:36.440 [DEBUG] [Thread-156715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:08:36.440 [DEBUG] [Thread-156715] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:08:36.442 [DEBUG] [Thread-156715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:08:36.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:08:36.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:08:36.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:08:36.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:08:36.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:08:36.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:08:36.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:08:36.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:08:36.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:08:36.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.463959 -999.00  +14.80   7.11     43   +2.40 1 1 1 1 1   888    0 13.10 78.93 ----- 7.5 7.1 160.6 8.8 23.5 -26.4 22.2 -26.1 23.0 -26.4 24.4 -27.7
2025-09-29T13:08:36.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:08:36.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:08:36.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.463959
2025-09-29T13:08:36.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:08:36.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:08:36.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:08:36.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:08:36.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:08:36.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:08:20', tmtdew=12.3, humidity=43.13, cloud=0.0, wind=13.36, temperature=13.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:08:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:08:36.466 [DEBUG] [Thread-156715] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:36.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:08:36.563 [DEBUG] [Thread-156719] [transport.py] [_log()] starting thread (client mode): 0x2b96bcd0
2025-09-29T13:08:36.563 [DEBUG] [Thread-156719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:08:36.578 [DEBUG] [Thread-156719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:08:36.578 [INFO] [Thread-156719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] client lang: <none>
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] server lang: <none>
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] kex follows: False
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:08:36.586 [DEBUG] [Thread-156719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:08:36.587 [DEBUG] [Thread-156719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:08:36.587 [DEBUG] [Thread-156719] [transport.py] [_log()] Compression: none
2025-09-29T13:08:36.587 [DEBUG] [Thread-156719] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:08:36.642 [DEBUG] [Thread-156719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:08:36.643 [DEBUG] [Thread-156719] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:08:36.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:08:36.644 [DEBUG] [Thread-156719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:08:36.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:08:36.699 [DEBUG] [Thread-156719] [transport.py] [_log()] userauth is OK
2025-09-29T13:08:36.700 [DEBUG] [Thread-156719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:08:36.700 [DEBUG] [Thread-156719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:08:36.700 [DEBUG] [Thread-156719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:08:36.700 [DEBUG] [Thread-156719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:08:36.719 [INFO] [Thread-156719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:08:36.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:08:36.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:08:37.661 [DEBUG] [Thread-156719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:08:37.661 [DEBUG] [Thread-156719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:08:37.709 [DEBUG] [Thread-156719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:08:37.709 [DEBUG] [Thread-156719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:08:37.718 [DEBUG] [Thread-156719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:08:37.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:08:37.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:08:37.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:08:37.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:08:37.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:08:37.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:08:37.752 [DEBUG] [Thread-156719] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:41.084 [DEBUG] [Thread-156721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:08:47.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:08:47.755 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:08:47.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:08:48.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 8, 20), 12.3, 43.13, 0.0, 13.36, 13.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:08:48.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:08:20
2025-09-29T13:08:48.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:08:48.575 [DEBUG] [Thread-156722] [transport.py] [_log()] starting thread (client mode): 0x2b91d180
2025-09-29T13:08:48.575 [DEBUG] [Thread-156722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:08:48.595 [DEBUG] [Thread-156722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:08:48.595 [INFO] [Thread-156722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] client lang: <none>
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] server lang: <none>
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] kex follows: False
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] Compression: none
2025-09-29T13:08:48.597 [DEBUG] [Thread-156722] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:08:48.610 [DEBUG] [Thread-156722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:08:48.611 [DEBUG] [Thread-156722] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:08:48.611 [DEBUG] [Thread-156722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:08:48.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:08:48.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:08:48.613 [DEBUG] [Thread-156722] [transport.py] [_log()] userauth is OK
2025-09-29T13:08:48.613 [DEBUG] [Thread-156722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:08:48.613 [DEBUG] [Thread-156722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:08:48.613 [DEBUG] [Thread-156722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:08:48.614 [DEBUG] [Thread-156722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:08:48.638 [INFO] [Thread-156722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:08:48.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:08:49.421 [DEBUG] [Thread-156722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:08:49.421 [DEBUG] [Thread-156722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:08:49.421 [DEBUG] [Thread-156722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:08:49.462 [DEBUG] [Thread-156722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:08:49.463 [DEBUG] [Thread-156722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:08:49.465 [DEBUG] [Thread-156722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:08:49.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:08:49.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:08:49.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:08:49.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:08:49.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:08:49.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:08:49.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:08:49.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:08:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:08:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.463959 -999.00  +14.80   7.11     43   +2.40 1 1 1 1 1   888    0 13.10 78.93 ----- 7.5 7.1 160.6 8.8 23.5 -26.4 22.2 -26.1 23.0 -26.4 24.4 -27.7
2025-09-29T13:08:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:08:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:08:49.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.463959
2025-09-29T13:08:49.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:08:49.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:08:49.490 [DEBUG] [Thread-156722] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:49.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:08:49.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:08:49.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:08:49.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:08:20', tmtdew=12.3, humidity=43.13, cloud=0.0, wind=13.36, temperature=13.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:08:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:08:49.573 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:08:49.582 [DEBUG] [Thread-156725] [transport.py] [_log()] starting thread (client mode): 0x2e349870
2025-09-29T13:08:49.582 [DEBUG] [Thread-156725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:08:49.598 [DEBUG] [Thread-156725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:08:49.598 [INFO] [Thread-156725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:08:49.605 [DEBUG] [Thread-156725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:08:49.605 [DEBUG] [Thread-156725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:08:49.605 [DEBUG] [Thread-156725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:08:49.605 [DEBUG] [Thread-156725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] client lang: <none>
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] server lang: <none>
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] kex follows: False
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] Compression: none
2025-09-29T13:08:49.606 [DEBUG] [Thread-156725] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:08:49.663 [DEBUG] [Thread-156725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:08:49.663 [DEBUG] [Thread-156725] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:08:49.663 [DEBUG] [Thread-156725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:08:49.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:08:49.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:08:49.719 [DEBUG] [Thread-156725] [transport.py] [_log()] userauth is OK
2025-09-29T13:08:49.719 [DEBUG] [Thread-156725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:08:49.719 [DEBUG] [Thread-156725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:08:49.719 [DEBUG] [Thread-156725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:08:49.719 [DEBUG] [Thread-156725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:08:49.738 [INFO] [Thread-156725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:08:49.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:08:49.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:08:50.702 [DEBUG] [Thread-156725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:08:50.702 [DEBUG] [Thread-156725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:08:50.740 [DEBUG] [Thread-156727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:08:50.751 [DEBUG] [Thread-156725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:08:50.751 [DEBUG] [Thread-156725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:08:50.760 [DEBUG] [Thread-156725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:08:50.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:08:50.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:08:50.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:08:50.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:08:50.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:08:50.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:08:50.795 [DEBUG] [Thread-156725] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:08:53.038 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:08:53.039 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:09:00.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:09:00.798 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:09:00.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:09:01.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 8, 51), 12.59, 42.1, 0.0, 10.96, 13.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:09:01.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:08:51
2025-09-29T13:09:01.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:09:01.619 [DEBUG] [Thread-156728] [transport.py] [_log()] starting thread (client mode): 0x2e34a2c0
2025-09-29T13:09:01.619 [DEBUG] [Thread-156728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:01.635 [DEBUG] [Thread-156728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:09:01.635 [INFO] [Thread-156728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] Compression: none
2025-09-29T13:09:01.639 [DEBUG] [Thread-156728] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:01.654 [DEBUG] [Thread-156728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:01.654 [DEBUG] [Thread-156728] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:01.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:09:01.654 [DEBUG] [Thread-156728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:09:01.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:01.655 [DEBUG] [Thread-156728] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:01.655 [DEBUG] [Thread-156728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:01.655 [DEBUG] [Thread-156728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:01.655 [DEBUG] [Thread-156728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:09:01.655 [DEBUG] [Thread-156728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:01.664 [INFO] [Thread-156728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:01.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:02.477 [DEBUG] [Thread-156728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:02.477 [DEBUG] [Thread-156728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:02.477 [DEBUG] [Thread-156728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:09:02.518 [DEBUG] [Thread-156728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:02.519 [DEBUG] [Thread-156728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:02.521 [DEBUG] [Thread-156728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:02.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:02.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:09:02.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:09:02.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:09:02.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:02.546 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:09:02.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:02.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:02.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:09:02.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.463959 -999.00  +14.80   7.11     43   +2.40 1 1 1 1 1   888    0 13.10 78.93 ----- 7.5 7.1 160.6 8.8 23.5 -26.4 22.2 -26.1 23.0 -26.4 24.4 -27.7
2025-09-29T13:09:02.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:09:02.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:09:02.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.463959
2025-09-29T13:09:02.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:09:02.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:09:02.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:09:02.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:09:02.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:09:02.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:08:51', tmtdew=12.59, humidity=42.1, cloud=0.0, wind=10.96, temperature=13.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:08:06.058', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:09:02.548 [DEBUG] [Thread-156728] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:02.633 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:09:02.645 [DEBUG] [Thread-156731] [transport.py] [_log()] starting thread (client mode): 0x2b91c460
2025-09-29T13:09:02.645 [DEBUG] [Thread-156731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:02.659 [DEBUG] [Thread-156731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:09:02.659 [INFO] [Thread-156731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:02.667 [DEBUG] [Thread-156731] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:02.668 [DEBUG] [Thread-156731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:02.668 [DEBUG] [Thread-156731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:02.668 [DEBUG] [Thread-156731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:02.668 [DEBUG] [Thread-156731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:02.668 [DEBUG] [Thread-156731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:02.668 [DEBUG] [Thread-156731] [transport.py] [_log()] Compression: none
2025-09-29T13:09:02.668 [DEBUG] [Thread-156731] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:02.727 [DEBUG] [Thread-156731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:02.727 [DEBUG] [Thread-156731] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:02.728 [DEBUG] [Thread-156731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:09:02.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:09:02.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:02.783 [DEBUG] [Thread-156731] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:02.783 [DEBUG] [Thread-156731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:02.783 [DEBUG] [Thread-156731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:02.783 [DEBUG] [Thread-156731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:09:02.783 [DEBUG] [Thread-156731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:02.797 [INFO] [Thread-156731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:02.797 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:09:02.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:03.745 [DEBUG] [Thread-156731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:03.746 [DEBUG] [Thread-156731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:03.793 [DEBUG] [Thread-156731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:03.794 [DEBUG] [Thread-156731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:03.802 [DEBUG] [Thread-156731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:03.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:03.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:09:03.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:09:03.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:03.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:03.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:03.837 [DEBUG] [Thread-156731] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:05.787 [DEBUG] [Thread-156733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:09:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:09:13.840 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:09:13.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:09:14.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 8, 51), 12.59, 42.1, 0.0, 10.96, 13.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:09:14.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:08:51
2025-09-29T13:09:14.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:09:14.662 [DEBUG] [Thread-156734] [transport.py] [_log()] starting thread (client mode): 0x2b9c21d0
2025-09-29T13:09:14.663 [DEBUG] [Thread-156734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:14.683 [DEBUG] [Thread-156734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:09:14.683 [INFO] [Thread-156734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] Compression: none
2025-09-29T13:09:14.685 [DEBUG] [Thread-156734] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:14.702 [DEBUG] [Thread-156734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:14.702 [DEBUG] [Thread-156734] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:14.703 [DEBUG] [Thread-156734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:09:14.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:09:14.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:14.705 [DEBUG] [Thread-156734] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:14.705 [DEBUG] [Thread-156734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:14.705 [DEBUG] [Thread-156734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:14.705 [DEBUG] [Thread-156734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:09:14.705 [DEBUG] [Thread-156734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:14.723 [INFO] [Thread-156734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:14.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:15.393 [DEBUG] [Thread-156734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:15.393 [DEBUG] [Thread-156734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:15.394 [DEBUG] [Thread-156734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:09:15.434 [DEBUG] [Thread-156734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:15.435 [DEBUG] [Thread-156734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:15.437 [DEBUG] [Thread-156734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:15.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:15.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:09:15.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:09:15.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:09:15.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:15.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:09:15.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:15.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:15.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:09:15.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.464306 -999.00  +14.90   8.54     44   +2.70 1 1 1 1 1   888    0 13.12 80.07 ----- 8.4 8.5 138.6 10.5 23.6 -26.7 22.3 -25.9 23.0 -26.0 24.6 -27.1
2025-09-29T13:09:15.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:09:15.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:09:15.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.464306
2025-09-29T13:09:15.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:09:15.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:09:15.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:09:15.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:09:15.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:09:15.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:08:51', tmtdew=12.59, humidity=42.1, cloud=0.0, wind=10.96, temperature=13.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:08:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:09:15.471 [DEBUG] [Thread-156734] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:15.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:09:15.564 [DEBUG] [Thread-156737] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c60
2025-09-29T13:09:15.565 [DEBUG] [Thread-156737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:15.579 [DEBUG] [Thread-156737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:09:15.579 [INFO] [Thread-156737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:09:15.587 [DEBUG] [Thread-156737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:15.587 [DEBUG] [Thread-156737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] Compression: none
2025-09-29T13:09:15.588 [DEBUG] [Thread-156737] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:15.647 [DEBUG] [Thread-156737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:15.647 [DEBUG] [Thread-156737] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:15.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:09:15.648 [DEBUG] [Thread-156737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:09:15.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:15.703 [DEBUG] [Thread-156737] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:15.703 [DEBUG] [Thread-156737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:15.703 [DEBUG] [Thread-156737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:15.703 [DEBUG] [Thread-156737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:09:15.703 [DEBUG] [Thread-156737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:15.722 [INFO] [Thread-156737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:15.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:09:15.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:16.655 [DEBUG] [Thread-156737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:16.655 [DEBUG] [Thread-156737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:16.703 [DEBUG] [Thread-156737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:16.703 [DEBUG] [Thread-156737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:16.712 [DEBUG] [Thread-156737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:16.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:16.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:09:16.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:09:16.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:16.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:16.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:16.746 [DEBUG] [Thread-156737] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:20.828 [DEBUG] [Thread-156739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:09:26.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:09:26.749 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:09:26.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:09:27.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 9, 23), 12.54, 42.2, 0.0, 10.46, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:09:27.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:09:23
2025-09-29T13:09:27.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:09:27.573 [DEBUG] [Thread-156740] [transport.py] [_log()] starting thread (client mode): 0x2b96bc10
2025-09-29T13:09:27.573 [DEBUG] [Thread-156740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:27.593 [DEBUG] [Thread-156740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:09:27.593 [INFO] [Thread-156740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:09:27.596 [DEBUG] [Thread-156740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:27.596 [DEBUG] [Thread-156740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:09:27.596 [DEBUG] [Thread-156740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] Compression: none
2025-09-29T13:09:27.597 [DEBUG] [Thread-156740] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:27.613 [DEBUG] [Thread-156740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:27.614 [DEBUG] [Thread-156740] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:27.614 [DEBUG] [Thread-156740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:09:27.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:09:27.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:27.616 [DEBUG] [Thread-156740] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:27.616 [DEBUG] [Thread-156740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:27.617 [DEBUG] [Thread-156740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:27.617 [DEBUG] [Thread-156740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:09:27.617 [DEBUG] [Thread-156740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:27.653 [INFO] [Thread-156740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:27.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:28.454 [DEBUG] [Thread-156740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:28.455 [DEBUG] [Thread-156740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:28.455 [DEBUG] [Thread-156740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:09:28.495 [DEBUG] [Thread-156740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:28.495 [DEBUG] [Thread-156740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:28.498 [DEBUG] [Thread-156740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:28.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:28.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:09:28.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:09:28.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:09:28.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:28.522 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:09:28.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:28.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:28.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:09:28.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.464306 -999.00  +14.90   8.54     44   +2.70 1 1 1 1 1   888    0 13.12 80.07 ----- 8.4 8.5 138.6 10.5 23.6 -26.7 22.3 -25.9 23.0 -26.0 24.6 -27.1
2025-09-29T13:09:28.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:09:28.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:09:28.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.464306
2025-09-29T13:09:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:09:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:09:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:09:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:09:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:09:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:09:23', tmtdew=12.54, humidity=42.2, cloud=0.0, wind=10.46, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:08:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:09:28.525 [DEBUG] [Thread-156740] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:28.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:09:28.622 [DEBUG] [Thread-156743] [transport.py] [_log()] starting thread (client mode): 0x2b9c1990
2025-09-29T13:09:28.623 [DEBUG] [Thread-156743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:28.638 [DEBUG] [Thread-156743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:09:28.638 [INFO] [Thread-156743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:09:28.645 [DEBUG] [Thread-156743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:28.645 [DEBUG] [Thread-156743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:09:28.645 [DEBUG] [Thread-156743] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:28.645 [DEBUG] [Thread-156743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:28.645 [DEBUG] [Thread-156743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:28.645 [DEBUG] [Thread-156743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:28.645 [DEBUG] [Thread-156743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:28.645 [DEBUG] [Thread-156743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] Compression: none
2025-09-29T13:09:28.646 [DEBUG] [Thread-156743] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:28.701 [DEBUG] [Thread-156743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:28.701 [DEBUG] [Thread-156743] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:28.701 [DEBUG] [Thread-156743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:09:28.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:09:28.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:28.759 [DEBUG] [Thread-156743] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:28.759 [DEBUG] [Thread-156743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:28.759 [DEBUG] [Thread-156743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:28.759 [DEBUG] [Thread-156743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:09:28.759 [DEBUG] [Thread-156743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:28.778 [INFO] [Thread-156743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:28.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:09:28.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:29.736 [DEBUG] [Thread-156743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:29.736 [DEBUG] [Thread-156743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:29.784 [DEBUG] [Thread-156743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:29.784 [DEBUG] [Thread-156743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:29.793 [DEBUG] [Thread-156743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:29.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:29.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:09:29.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:09:29.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:29.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:29.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:29.827 [DEBUG] [Thread-156743] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:35.881 [DEBUG] [Thread-156745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:09:39.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:09:39.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:09:39.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:09:40.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 9, 23), 12.54, 42.2, 0.0, 10.46, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:09:40.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:09:23
2025-09-29T13:09:40.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:09:40.655 [DEBUG] [Thread-156746] [transport.py] [_log()] starting thread (client mode): 0x2b90d150
2025-09-29T13:09:40.655 [DEBUG] [Thread-156746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:40.677 [DEBUG] [Thread-156746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:09:40.677 [INFO] [Thread-156746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:09:40.678 [DEBUG] [Thread-156746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] Compression: none
2025-09-29T13:09:40.679 [DEBUG] [Thread-156746] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:40.690 [DEBUG] [Thread-156746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:40.691 [DEBUG] [Thread-156746] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:40.691 [DEBUG] [Thread-156746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:09:40.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:09:40.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:40.696 [DEBUG] [Thread-156746] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:40.696 [DEBUG] [Thread-156746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:40.696 [DEBUG] [Thread-156746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:40.696 [DEBUG] [Thread-156746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:09:40.696 [DEBUG] [Thread-156746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:40.720 [INFO] [Thread-156746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:40.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:41.136 [DEBUG] [Thread-156748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:09:41.326 [DEBUG] [Thread-156746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:41.326 [DEBUG] [Thread-156746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:41.327 [DEBUG] [Thread-156746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:09:41.367 [DEBUG] [Thread-156746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:41.367 [DEBUG] [Thread-156746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:41.370 [DEBUG] [Thread-156746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:41.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:41.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:09:41.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:09:41.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:09:41.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:41.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:09:41.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:41.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:41.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:09:41.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.464653 -999.00  +14.70   9.03     44   +2.80 1 1 1 1 1   888    0 13.03 80.09 ----- 10.7 9.0 132.2 11.7 23.7 -26.9 22.4 -26.5 23.1 -26.6 24.6 -27.6
2025-09-29T13:09:41.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:09:41.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:09:41.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.464653
2025-09-29T13:09:41.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:09:41.393 [DEBUG] [Thread-156746] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:09:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:09:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:09:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:09:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:09:23', tmtdew=12.54, humidity=42.2, cloud=0.0, wind=10.46, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:09:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:09:41.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:09:41.493 [DEBUG] [Thread-156750] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-29T13:09:41.493 [DEBUG] [Thread-156750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:41.508 [DEBUG] [Thread-156750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:09:41.508 [INFO] [Thread-156750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:41.515 [DEBUG] [Thread-156750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] Compression: none
2025-09-29T13:09:41.516 [DEBUG] [Thread-156750] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:41.575 [DEBUG] [Thread-156750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:41.575 [DEBUG] [Thread-156750] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:41.576 [DEBUG] [Thread-156750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:09:41.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:09:41.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:41.630 [DEBUG] [Thread-156750] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:41.631 [DEBUG] [Thread-156750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:41.631 [DEBUG] [Thread-156750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:41.631 [DEBUG] [Thread-156750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:09:41.631 [DEBUG] [Thread-156750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:41.649 [INFO] [Thread-156750] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:41.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:09:41.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:42.586 [DEBUG] [Thread-156750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:42.586 [DEBUG] [Thread-156750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:42.634 [DEBUG] [Thread-156750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:42.634 [DEBUG] [Thread-156750] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:42.643 [DEBUG] [Thread-156750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:42.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:42.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:09:42.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:09:42.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:42.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:42.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:42.678 [DEBUG] [Thread-156750] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:50.932 [DEBUG] [Thread-156752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:09:52.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:09:52.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:09:52.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:09:53.184 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:09:53.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:09:53.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 9, 23), 12.54, 42.2, 0.0, 10.46, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:09:53.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:09:23
2025-09-29T13:09:53.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:09:53.505 [DEBUG] [Thread-156753] [transport.py] [_log()] starting thread (client mode): 0x2b954d30
2025-09-29T13:09:53.506 [DEBUG] [Thread-156753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:53.526 [DEBUG] [Thread-156753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:09:53.526 [INFO] [Thread-156753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:53.529 [DEBUG] [Thread-156753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:53.530 [DEBUG] [Thread-156753] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:53.530 [DEBUG] [Thread-156753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:53.530 [DEBUG] [Thread-156753] [transport.py] [_log()] Compression: none
2025-09-29T13:09:53.530 [DEBUG] [Thread-156753] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:53.544 [DEBUG] [Thread-156753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:53.544 [DEBUG] [Thread-156753] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:53.544 [DEBUG] [Thread-156753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:09:53.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:09:53.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:53.545 [DEBUG] [Thread-156753] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:53.545 [DEBUG] [Thread-156753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:53.545 [DEBUG] [Thread-156753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:53.545 [DEBUG] [Thread-156753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:09:53.545 [DEBUG] [Thread-156753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:53.564 [INFO] [Thread-156753] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:53.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:54.359 [DEBUG] [Thread-156753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:54.359 [DEBUG] [Thread-156753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:54.360 [DEBUG] [Thread-156753] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:09:54.399 [DEBUG] [Thread-156753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:54.400 [DEBUG] [Thread-156753] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:54.403 [DEBUG] [Thread-156753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:54.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:54.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:09:54.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:09:54.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:09:54.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:54.428 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:09:54.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:54.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:54.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:09:54.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.464653 -999.00  +14.70   9.03     44   +2.80 1 1 1 1 1   888    0 13.03 80.09 ----- 10.7 9.0 132.2 11.7 23.7 -26.9 22.4 -26.5 23.1 -26.6 24.6 -27.6
2025-09-29T13:09:54.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:09:54.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:09:54.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.464653
2025-09-29T13:09:54.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:09:54.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:09:54.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:09:54.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:09:54.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:09:54.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:09:23', tmtdew=12.54, humidity=42.2, cloud=0.0, wind=10.46, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:09:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:09:54.431 [DEBUG] [Thread-156753] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:09:54.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:09:54.520 [DEBUG] [Thread-156756] [transport.py] [_log()] starting thread (client mode): 0x2b90f100
2025-09-29T13:09:54.520 [DEBUG] [Thread-156756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:09:54.536 [DEBUG] [Thread-156756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:09:54.536 [INFO] [Thread-156756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:09:54.543 [DEBUG] [Thread-156756] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:09:54.543 [DEBUG] [Thread-156756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:09:54.543 [DEBUG] [Thread-156756] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:09:54.543 [DEBUG] [Thread-156756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:54.543 [DEBUG] [Thread-156756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:09:54.543 [DEBUG] [Thread-156756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:54.543 [DEBUG] [Thread-156756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:09:54.543 [DEBUG] [Thread-156756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] client lang: <none>
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] server lang: <none>
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] kex follows: False
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] Compression: none
2025-09-29T13:09:54.544 [DEBUG] [Thread-156756] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:09:54.602 [DEBUG] [Thread-156756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:09:54.602 [DEBUG] [Thread-156756] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:09:54.603 [DEBUG] [Thread-156756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:09:54.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:09:54.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:09:54.659 [DEBUG] [Thread-156756] [transport.py] [_log()] userauth is OK
2025-09-29T13:09:54.659 [DEBUG] [Thread-156756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:09:54.659 [DEBUG] [Thread-156756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:09:54.659 [DEBUG] [Thread-156756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:09:54.659 [DEBUG] [Thread-156756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:09:54.679 [INFO] [Thread-156756] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:09:54.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:09:54.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:09:55.616 [DEBUG] [Thread-156756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:09:55.616 [DEBUG] [Thread-156756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:09:55.664 [DEBUG] [Thread-156756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:09:55.664 [DEBUG] [Thread-156756] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:09:55.673 [DEBUG] [Thread-156756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:09:55.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:09:55.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:09:55.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:09:55.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:09:55.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:09:55.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:09:55.706 [DEBUG] [Thread-156756] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:10:05.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:10:05.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:10:05.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:10:05.973 [DEBUG] [Thread-156758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:10:06.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 9, 55), 12.47, 42.36, 0.0, 9.53, 13.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:10:06.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:09:55
2025-09-29T13:10:06.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:10:06.539 [DEBUG] [Thread-156759] [transport.py] [_log()] starting thread (client mode): 0x2e34bc40
2025-09-29T13:10:06.540 [DEBUG] [Thread-156759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:10:06.560 [DEBUG] [Thread-156759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:10:06.561 [INFO] [Thread-156759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:10:06.564 [DEBUG] [Thread-156759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:10:06.564 [DEBUG] [Thread-156759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:10:06.564 [DEBUG] [Thread-156759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:10:06.564 [DEBUG] [Thread-156759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:06.564 [DEBUG] [Thread-156759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:06.564 [DEBUG] [Thread-156759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:06.564 [DEBUG] [Thread-156759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] client lang: <none>
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] server lang: <none>
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] kex follows: False
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] Compression: none
2025-09-29T13:10:06.565 [DEBUG] [Thread-156759] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:10:06.579 [DEBUG] [Thread-156759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:10:06.580 [DEBUG] [Thread-156759] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:10:06.580 [DEBUG] [Thread-156759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:10:06.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:10:06.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:10:06.582 [DEBUG] [Thread-156759] [transport.py] [_log()] userauth is OK
2025-09-29T13:10:06.582 [DEBUG] [Thread-156759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:10:06.583 [DEBUG] [Thread-156759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:10:06.583 [DEBUG] [Thread-156759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:10:06.583 [DEBUG] [Thread-156759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:10:06.607 [INFO] [Thread-156759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:10:06.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:10:14.326 [DEBUG] [Thread-156759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:10:14.327 [DEBUG] [Thread-156759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:10:14.327 [DEBUG] [Thread-156759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:10:14.368 [DEBUG] [Thread-156759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:10:14.368 [DEBUG] [Thread-156759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:10:14.371 [DEBUG] [Thread-156759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:10:14.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:10:14.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:10:14.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:10:14.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:10:14.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:10:14.448 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:10:14.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:10:14.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:10:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:10:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.464653 -999.00  +14.70   9.03     44   +2.80 1 1 1 1 1   888    0 13.03 80.09 ----- 10.7 9.0 132.2 11.7 23.7 -26.9 22.4 -26.5 23.1 -26.6 24.6 -27.6
2025-09-29T13:10:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:10:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:10:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.464653
2025-09-29T13:10:14.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:10:14.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:10:14.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:10:14.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:10:14.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:10:14.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:09:55', tmtdew=12.47, humidity=42.36, cloud=0.0, wind=9.53, temperature=13.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:09:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:10:14.451 [DEBUG] [Thread-156759] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:10:14.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:10:14.547 [DEBUG] [Thread-156762] [transport.py] [_log()] starting thread (client mode): 0x2b9c1b70
2025-09-29T13:10:14.547 [DEBUG] [Thread-156762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:10:14.561 [DEBUG] [Thread-156762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:10:14.562 [INFO] [Thread-156762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] client lang: <none>
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] server lang: <none>
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] kex follows: False
2025-09-29T13:10:14.569 [DEBUG] [Thread-156762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:10:14.570 [DEBUG] [Thread-156762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:10:14.570 [DEBUG] [Thread-156762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:10:14.570 [DEBUG] [Thread-156762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:10:14.570 [DEBUG] [Thread-156762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:10:14.570 [DEBUG] [Thread-156762] [transport.py] [_log()] Compression: none
2025-09-29T13:10:14.570 [DEBUG] [Thread-156762] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:10:14.627 [DEBUG] [Thread-156762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:10:14.627 [DEBUG] [Thread-156762] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:10:14.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:10:14.628 [DEBUG] [Thread-156762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:10:14.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:10:14.683 [DEBUG] [Thread-156762] [transport.py] [_log()] userauth is OK
2025-09-29T13:10:14.683 [DEBUG] [Thread-156762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:10:14.683 [DEBUG] [Thread-156762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:10:14.683 [DEBUG] [Thread-156762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:10:14.683 [DEBUG] [Thread-156762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:10:14.701 [INFO] [Thread-156762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:10:14.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:10:14.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:10:15.620 [DEBUG] [Thread-156762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:10:15.621 [DEBUG] [Thread-156762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:10:15.668 [DEBUG] [Thread-156762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:10:15.668 [DEBUG] [Thread-156762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:10:15.677 [DEBUG] [Thread-156762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:10:15.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:10:15.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:10:15.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:10:15.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:10:15.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:10:15.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:10:15.711 [DEBUG] [Thread-156762] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:10:20.997 [DEBUG] [Thread-156764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:10:25.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:10:25.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:10:25.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:10:26.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 9, 55), 12.47, 42.36, 0.0, 9.53, 13.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:10:26.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:09:55
2025-09-29T13:10:26.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:10:26.571 [DEBUG] [Thread-156765] [transport.py] [_log()] starting thread (client mode): 0x28704a00
2025-09-29T13:10:26.571 [DEBUG] [Thread-156765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:10:26.590 [DEBUG] [Thread-156765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:10:26.591 [INFO] [Thread-156765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] client lang: <none>
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] server lang: <none>
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] kex follows: False
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] Compression: none
2025-09-29T13:10:26.594 [DEBUG] [Thread-156765] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:10:26.608 [DEBUG] [Thread-156765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:10:26.609 [DEBUG] [Thread-156765] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:10:26.609 [DEBUG] [Thread-156765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:10:26.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:10:26.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:10:26.610 [DEBUG] [Thread-156765] [transport.py] [_log()] userauth is OK
2025-09-29T13:10:26.610 [DEBUG] [Thread-156765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:10:26.610 [DEBUG] [Thread-156765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:10:26.610 [DEBUG] [Thread-156765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:10:26.610 [DEBUG] [Thread-156765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:10:26.619 [INFO] [Thread-156765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:10:26.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:10:27.185 [DEBUG] [Thread-156765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:10:27.185 [DEBUG] [Thread-156765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:10:27.185 [DEBUG] [Thread-156765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:10:27.226 [DEBUG] [Thread-156765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:10:27.227 [DEBUG] [Thread-156765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:10:27.229 [DEBUG] [Thread-156765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:10:27.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:10:27.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:10:27.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:10:27.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:10:27.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:10:27.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:10:27.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:10:27.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:10:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:10:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.465347 -999.00  +14.40  11.51     45   +2.80 1 1 1 1 1   888    0 13.39 86.33 ----- 10.9 11.5 124.0 19.1 23.4 -26.9 22.5 -26.7 23.1 -27.3 24.4 -27.4
2025-09-29T13:10:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:10:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:10:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.465347
2025-09-29T13:10:27.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:10:27.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:10:27.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:10:27.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:10:27.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:10:27.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:09:55', tmtdew=12.47, humidity=42.36, cloud=0.0, wind=9.53, temperature=13.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:10:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:10:27.255 [DEBUG] [Thread-156765] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:10:27.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:10:27.352 [DEBUG] [Thread-156768] [transport.py] [_log()] starting thread (client mode): 0x28706710
2025-09-29T13:10:27.353 [DEBUG] [Thread-156768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:10:27.367 [DEBUG] [Thread-156768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:10:27.367 [INFO] [Thread-156768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:10:27.374 [DEBUG] [Thread-156768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:10:27.375 [DEBUG] [Thread-156768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:10:27.375 [DEBUG] [Thread-156768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:10:27.375 [DEBUG] [Thread-156768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:27.375 [DEBUG] [Thread-156768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:27.375 [DEBUG] [Thread-156768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:27.375 [DEBUG] [Thread-156768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] client lang: <none>
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] server lang: <none>
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] kex follows: False
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] Compression: none
2025-09-29T13:10:27.376 [DEBUG] [Thread-156768] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:10:27.438 [DEBUG] [Thread-156768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:10:27.439 [DEBUG] [Thread-156768] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:10:27.439 [DEBUG] [Thread-156768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:10:27.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:10:27.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:10:27.494 [DEBUG] [Thread-156768] [transport.py] [_log()] userauth is OK
2025-09-29T13:10:27.495 [DEBUG] [Thread-156768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:10:27.495 [DEBUG] [Thread-156768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:10:27.495 [DEBUG] [Thread-156768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:10:27.495 [DEBUG] [Thread-156768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:10:27.514 [INFO] [Thread-156768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:10:27.515 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:10:27.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:10:28.466 [DEBUG] [Thread-156768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:10:28.466 [DEBUG] [Thread-156768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:10:28.514 [DEBUG] [Thread-156768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:10:28.514 [DEBUG] [Thread-156768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:10:28.522 [DEBUG] [Thread-156768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:10:28.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:10:28.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:10:28.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:10:28.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:10:28.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:10:28.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:10:28.553 [DEBUG] [Thread-156768] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:10:36.043 [DEBUG] [Thread-156770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:10:38.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:10:38.556 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:10:38.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:10:39.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 10, 27), 12.49, 42.36, 0.0, 9.55, 13.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:10:39.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:10:27
2025-09-29T13:10:39.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:10:39.384 [DEBUG] [Thread-156771] [transport.py] [_log()] starting thread (client mode): 0x2b955ea0
2025-09-29T13:10:39.385 [DEBUG] [Thread-156771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:10:39.404 [DEBUG] [Thread-156771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:10:39.404 [INFO] [Thread-156771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:10:39.408 [DEBUG] [Thread-156771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] client lang: <none>
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] server lang: <none>
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] kex follows: False
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] Compression: none
2025-09-29T13:10:39.409 [DEBUG] [Thread-156771] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:10:39.426 [DEBUG] [Thread-156771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:10:39.426 [DEBUG] [Thread-156771] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:10:39.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:10:39.427 [DEBUG] [Thread-156771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:10:39.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:10:39.429 [DEBUG] [Thread-156771] [transport.py] [_log()] userauth is OK
2025-09-29T13:10:39.429 [DEBUG] [Thread-156771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:10:39.429 [DEBUG] [Thread-156771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:10:39.430 [DEBUG] [Thread-156771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:10:39.430 [DEBUG] [Thread-156771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:10:39.454 [INFO] [Thread-156771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:10:39.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:10:40.227 [DEBUG] [Thread-156771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:10:40.227 [DEBUG] [Thread-156771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:10:40.227 [DEBUG] [Thread-156771] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:10:40.268 [DEBUG] [Thread-156771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:10:40.269 [DEBUG] [Thread-156771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:10:40.271 [DEBUG] [Thread-156771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:10:40.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:10:40.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:10:40.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:10:40.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:10:40.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:10:40.287 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:10:40.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:10:40.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:10:40.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:10:40.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.465347 -999.00  +14.40  11.51     45   +2.80 1 1 1 1 1   888    0 13.39 86.33 ----- 10.9 11.5 124.0 19.1 23.4 -26.9 22.5 -26.7 23.1 -27.3 24.4 -27.4
2025-09-29T13:10:40.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:10:40.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:10:40.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.465347
2025-09-29T13:10:40.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:10:40.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:10:40.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:10:40.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:10:40.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:10:40.289 [DEBUG] [Thread-156771] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:10:40.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:10:27', tmtdew=12.49, humidity=42.36, cloud=0.0, wind=9.55, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:10:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:10:40.375 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:10:40.387 [DEBUG] [Thread-156774] [transport.py] [_log()] starting thread (client mode): 0x2e34a8f0
2025-09-29T13:10:40.387 [DEBUG] [Thread-156774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:10:40.401 [DEBUG] [Thread-156774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:10:40.402 [INFO] [Thread-156774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:10:40.412 [DEBUG] [Thread-156774] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:10:40.412 [DEBUG] [Thread-156774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:10:40.412 [DEBUG] [Thread-156774] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:10:40.412 [DEBUG] [Thread-156774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:40.412 [DEBUG] [Thread-156774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:40.413 [DEBUG] [Thread-156774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:40.413 [DEBUG] [Thread-156774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:40.413 [DEBUG] [Thread-156774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:10:40.413 [DEBUG] [Thread-156774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:10:40.413 [DEBUG] [Thread-156774] [transport.py] [_log()] client lang: <none>
2025-09-29T13:10:40.413 [DEBUG] [Thread-156774] [transport.py] [_log()] server lang: <none>
2025-09-29T13:10:40.413 [DEBUG] [Thread-156774] [transport.py] [_log()] kex follows: False
2025-09-29T13:10:40.413 [DEBUG] [Thread-156774] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:10:40.414 [DEBUG] [Thread-156774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:10:40.414 [DEBUG] [Thread-156774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:10:40.414 [DEBUG] [Thread-156774] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:10:40.414 [DEBUG] [Thread-156774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:10:40.414 [DEBUG] [Thread-156774] [transport.py] [_log()] Compression: none
2025-09-29T13:10:40.414 [DEBUG] [Thread-156774] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:10:40.470 [DEBUG] [Thread-156774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:10:40.471 [DEBUG] [Thread-156774] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:10:40.471 [DEBUG] [Thread-156774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:10:40.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:10:40.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:10:40.527 [DEBUG] [Thread-156774] [transport.py] [_log()] userauth is OK
2025-09-29T13:10:40.527 [DEBUG] [Thread-156774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:10:40.527 [DEBUG] [Thread-156774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:10:40.527 [DEBUG] [Thread-156774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:10:40.527 [DEBUG] [Thread-156774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:10:40.547 [INFO] [Thread-156774] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:10:40.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:10:40.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:10:41.169 [DEBUG] [Thread-156776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:10:41.443 [DEBUG] [Thread-156774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:10:41.443 [DEBUG] [Thread-156774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:10:41.491 [DEBUG] [Thread-156774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:10:41.491 [DEBUG] [Thread-156774] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:10:41.500 [DEBUG] [Thread-156774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:10:41.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:10:41.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:10:41.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:10:41.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:10:41.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:10:41.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:10:41.535 [DEBUG] [Thread-156774] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:10:51.085 [DEBUG] [Thread-156777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:10:51.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:10:51.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:10:51.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:10:52.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 10, 27), 12.49, 42.36, 0.0, 9.55, 13.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:10:52.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:10:27
2025-09-29T13:10:52.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:10:52.359 [DEBUG] [Thread-156778] [transport.py] [_log()] starting thread (client mode): 0x2b9c8610
2025-09-29T13:10:52.359 [DEBUG] [Thread-156778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:10:52.380 [DEBUG] [Thread-156778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:10:52.380 [INFO] [Thread-156778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] client lang: <none>
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] server lang: <none>
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] kex follows: False
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] Compression: none
2025-09-29T13:10:52.383 [DEBUG] [Thread-156778] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:10:52.401 [DEBUG] [Thread-156778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:10:52.401 [DEBUG] [Thread-156778] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:10:52.402 [DEBUG] [Thread-156778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:10:52.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:10:52.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:10:52.403 [DEBUG] [Thread-156778] [transport.py] [_log()] userauth is OK
2025-09-29T13:10:52.404 [DEBUG] [Thread-156778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:10:52.404 [DEBUG] [Thread-156778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:10:52.404 [DEBUG] [Thread-156778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:10:52.404 [DEBUG] [Thread-156778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:10:52.436 [INFO] [Thread-156778] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:10:52.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:10:53.027 [DEBUG] [Thread-156778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:10:53.027 [DEBUG] [Thread-156778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:10:53.027 [DEBUG] [Thread-156778] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:10:53.068 [DEBUG] [Thread-156778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:10:53.068 [DEBUG] [Thread-156778] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:10:53.071 [DEBUG] [Thread-156778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:10:53.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:10:53.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:10:53.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:10:53.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:10:53.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:10:53.092 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:10:53.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:10:53.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:10:53.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:10:53.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.465695 -999.00  +14.50   8.14     45   +2.70 1 1 1 1 1   888    0 13.79 92.68 ----- 9.5 8.1 168.2 19.8 23.4 -27.2 22.5 -26.4 23.1 -26.3 24.4 -28.2
2025-09-29T13:10:53.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:10:53.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:10:53.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.465695
2025-09-29T13:10:53.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:10:53.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:10:53.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:10:53.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:10:53.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:10:53.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:10:27', tmtdew=12.49, humidity=42.36, cloud=0.0, wind=9.55, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:10:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:10:53.095 [DEBUG] [Thread-156778] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:10:53.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:10:53.192 [DEBUG] [Thread-156781] [transport.py] [_log()] starting thread (client mode): 0x2b96b6d0
2025-09-29T13:10:53.192 [DEBUG] [Thread-156781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:10:53.207 [DEBUG] [Thread-156781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:10:53.208 [INFO] [Thread-156781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:10:53.215 [DEBUG] [Thread-156781] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:10:53.215 [DEBUG] [Thread-156781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] client lang: <none>
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] server lang: <none>
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] kex follows: False
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] Compression: none
2025-09-29T13:10:53.216 [DEBUG] [Thread-156781] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:10:53.274 [DEBUG] [Thread-156781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:10:53.275 [DEBUG] [Thread-156781] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:10:53.276 [DEBUG] [Thread-156781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:10:53.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:10:53.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:10:53.326 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:10:53.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:10:53.330 [DEBUG] [Thread-156781] [transport.py] [_log()] userauth is OK
2025-09-29T13:10:53.331 [DEBUG] [Thread-156781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:10:53.331 [DEBUG] [Thread-156781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:10:53.331 [DEBUG] [Thread-156781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:10:53.331 [DEBUG] [Thread-156781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:10:53.350 [INFO] [Thread-156781] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:10:53.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:10:53.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:10:54.325 [DEBUG] [Thread-156781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:10:54.325 [DEBUG] [Thread-156781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:10:54.372 [DEBUG] [Thread-156781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:10:54.372 [DEBUG] [Thread-156781] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:10:54.381 [DEBUG] [Thread-156781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:10:54.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:10:54.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:10:54.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:10:54.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:10:54.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:10:54.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:10:54.416 [DEBUG] [Thread-156781] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:04.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:11:04.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:11:04.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:11:04.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 10, 59), 12.86, 41.33, 0.0, 9.23, 13.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:11:04.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:10:59
2025-09-29T13:11:05.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:11:05.253 [DEBUG] [Thread-156783] [transport.py] [_log()] starting thread (client mode): 0x2b9cb520
2025-09-29T13:11:05.253 [DEBUG] [Thread-156783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:05.273 [DEBUG] [Thread-156783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:11:05.274 [INFO] [Thread-156783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:11:05.276 [DEBUG] [Thread-156783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:05.276 [DEBUG] [Thread-156783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] Compression: none
2025-09-29T13:11:05.277 [DEBUG] [Thread-156783] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:05.292 [DEBUG] [Thread-156783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:05.292 [DEBUG] [Thread-156783] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:05.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:11:05.293 [DEBUG] [Thread-156783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:11:05.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:05.294 [DEBUG] [Thread-156783] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:05.294 [DEBUG] [Thread-156783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:05.294 [DEBUG] [Thread-156783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:05.294 [DEBUG] [Thread-156783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:11:05.294 [DEBUG] [Thread-156783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:05.311 [INFO] [Thread-156783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:05.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:06.072 [DEBUG] [Thread-156783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:06.072 [DEBUG] [Thread-156783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:06.072 [DEBUG] [Thread-156783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:11:06.113 [DEBUG] [Thread-156783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:06.113 [DEBUG] [Thread-156783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:06.116 [DEBUG] [Thread-156783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:06.127 [DEBUG] [Thread-156785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:11:06.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:06.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:11:06.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:11:06.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:11:06.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:06.140 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:11:06.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:06.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:06.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:11:06.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.465695 -999.00  +14.50   8.14     45   +2.70 1 1 1 1 1   888    0 13.79 92.68 ----- 9.5 8.1 168.2 19.8 23.4 -27.2 22.5 -26.4 23.1 -26.3 24.4 -28.2
2025-09-29T13:11:06.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:11:06.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:11:06.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.465695
2025-09-29T13:11:06.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:11:06.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:11:06.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:11:06.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:11:06.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:11:06.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:10:59', tmtdew=12.86, humidity=41.33, cloud=0.0, wind=9.23, temperature=13.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:10:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:11:06.141 [DEBUG] [Thread-156783] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:06.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:11:06.226 [DEBUG] [Thread-156787] [transport.py] [_log()] starting thread (client mode): 0x2e34a2f0
2025-09-29T13:11:06.226 [DEBUG] [Thread-156787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:06.241 [DEBUG] [Thread-156787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:11:06.241 [INFO] [Thread-156787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] Compression: none
2025-09-29T13:11:06.249 [DEBUG] [Thread-156787] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:06.306 [DEBUG] [Thread-156787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:06.307 [DEBUG] [Thread-156787] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:06.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:11:06.308 [DEBUG] [Thread-156787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:11:06.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:06.362 [DEBUG] [Thread-156787] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:06.363 [DEBUG] [Thread-156787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:06.363 [DEBUG] [Thread-156787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:06.363 [DEBUG] [Thread-156787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:11:06.363 [DEBUG] [Thread-156787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:06.384 [INFO] [Thread-156787] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:06.384 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:11:06.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:07.335 [DEBUG] [Thread-156787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:07.335 [DEBUG] [Thread-156787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:07.383 [DEBUG] [Thread-156787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:07.383 [DEBUG] [Thread-156787] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:07.392 [DEBUG] [Thread-156787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:07.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:07.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:11:07.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:11:07.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:07.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:07.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:07.426 [DEBUG] [Thread-156787] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:17.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:11:17.429 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:11:17.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:11:18.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 10, 59), 12.86, 41.33, 0.0, 9.23, 13.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:11:18.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:10:59
2025-09-29T13:11:18.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:11:18.264 [DEBUG] [Thread-156789] [transport.py] [_log()] starting thread (client mode): 0x287057e0
2025-09-29T13:11:18.264 [DEBUG] [Thread-156789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:18.285 [DEBUG] [Thread-156789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:11:18.286 [INFO] [Thread-156789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:11:18.289 [DEBUG] [Thread-156789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:18.289 [DEBUG] [Thread-156789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] Compression: none
2025-09-29T13:11:18.290 [DEBUG] [Thread-156789] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:18.308 [DEBUG] [Thread-156789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:18.309 [DEBUG] [Thread-156789] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:18.309 [DEBUG] [Thread-156789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:11:18.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:11:18.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:18.311 [DEBUG] [Thread-156789] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:18.311 [DEBUG] [Thread-156789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:18.311 [DEBUG] [Thread-156789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:18.311 [DEBUG] [Thread-156789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:11:18.312 [DEBUG] [Thread-156789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:18.334 [INFO] [Thread-156789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:18.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:19.106 [DEBUG] [Thread-156789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:19.106 [DEBUG] [Thread-156789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:19.107 [DEBUG] [Thread-156789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:11:19.147 [DEBUG] [Thread-156789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:19.148 [DEBUG] [Thread-156789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:19.150 [DEBUG] [Thread-156789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:19.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:19.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:11:19.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:11:19.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:11:19.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:19.173 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:11:19.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:19.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:11:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.465695 -999.00  +14.50   8.14     45   +2.70 1 1 1 1 1   888    0 13.79 92.68 ----- 9.5 8.1 168.2 19.8 23.4 -27.2 22.5 -26.4 23.1 -26.3 24.4 -28.2
2025-09-29T13:11:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:11:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:11:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.465695
2025-09-29T13:11:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:11:19.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:11:19.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:11:19.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:11:19.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:11:19.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:10:59', tmtdew=12.86, humidity=41.33, cloud=0.0, wind=9.23, temperature=13.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:10:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:11:19.176 [DEBUG] [Thread-156789] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:19.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:11:19.270 [DEBUG] [Thread-156792] [transport.py] [_log()] starting thread (client mode): 0x2b9c3520
2025-09-29T13:11:19.270 [DEBUG] [Thread-156792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:19.285 [DEBUG] [Thread-156792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:11:19.285 [INFO] [Thread-156792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:11:19.292 [DEBUG] [Thread-156792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:19.292 [DEBUG] [Thread-156792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] Compression: none
2025-09-29T13:11:19.293 [DEBUG] [Thread-156792] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:19.350 [DEBUG] [Thread-156792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:19.350 [DEBUG] [Thread-156792] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:19.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:11:19.351 [DEBUG] [Thread-156792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:11:19.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:19.406 [DEBUG] [Thread-156792] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:19.407 [DEBUG] [Thread-156792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:19.407 [DEBUG] [Thread-156792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:19.407 [DEBUG] [Thread-156792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:11:19.407 [DEBUG] [Thread-156792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:19.426 [INFO] [Thread-156792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:19.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:11:19.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:20.362 [DEBUG] [Thread-156792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:20.362 [DEBUG] [Thread-156792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:20.411 [DEBUG] [Thread-156792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:20.411 [DEBUG] [Thread-156792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:20.420 [DEBUG] [Thread-156792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:20.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:20.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:11:20.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:11:20.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:20.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:20.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:20.458 [DEBUG] [Thread-156792] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:21.164 [DEBUG] [Thread-156794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:11:30.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:11:30.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:11:30.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:11:31.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 10, 59), 12.86, 41.33, 0.0, 9.23, 13.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:11:31.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:10:59
2025-09-29T13:11:31.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:11:31.284 [DEBUG] [Thread-156795] [transport.py] [_log()] starting thread (client mode): 0x2e349c90
2025-09-29T13:11:31.284 [DEBUG] [Thread-156795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:31.309 [DEBUG] [Thread-156795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:11:31.309 [INFO] [Thread-156795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] Compression: none
2025-09-29T13:11:31.313 [DEBUG] [Thread-156795] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:31.329 [DEBUG] [Thread-156795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:31.329 [DEBUG] [Thread-156795] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:31.329 [DEBUG] [Thread-156795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:11:31.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:11:31.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:31.330 [DEBUG] [Thread-156795] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:31.330 [DEBUG] [Thread-156795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:31.330 [DEBUG] [Thread-156795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:31.330 [DEBUG] [Thread-156795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:11:31.330 [DEBUG] [Thread-156795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:31.344 [INFO] [Thread-156795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:31.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:31.956 [DEBUG] [Thread-156795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:31.956 [DEBUG] [Thread-156795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:31.956 [DEBUG] [Thread-156795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:11:31.997 [DEBUG] [Thread-156795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:31.997 [DEBUG] [Thread-156795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:32.000 [DEBUG] [Thread-156795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:32.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:32.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:11:32.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:11:32.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:11:32.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:32.017 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:11:32.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.466041 -999.00  +14.50  15.67     45   +2.70 1 1 1 1 1   888    0 13.65 90.02 ----- 14.8 15.7 111.5 20.9 23.5 -26.7 22.4 -27.2 23.1 -27.6 24.4 -27.8
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.466041
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:11:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:10:59', tmtdew=12.86, humidity=41.33, cloud=0.0, wind=9.23, temperature=13.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:11:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:11:32.019 [DEBUG] [Thread-156795] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:32.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:11:32.104 [DEBUG] [Thread-156798] [transport.py] [_log()] starting thread (client mode): 0x28707880
2025-09-29T13:11:32.104 [DEBUG] [Thread-156798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:32.119 [DEBUG] [Thread-156798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:11:32.119 [INFO] [Thread-156798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] Compression: none
2025-09-29T13:11:32.127 [DEBUG] [Thread-156798] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:32.189 [DEBUG] [Thread-156798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:32.189 [DEBUG] [Thread-156798] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:32.189 [DEBUG] [Thread-156798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:11:32.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:11:32.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:32.246 [DEBUG] [Thread-156798] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:32.246 [DEBUG] [Thread-156798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:32.246 [DEBUG] [Thread-156798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:32.246 [DEBUG] [Thread-156798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:11:32.246 [DEBUG] [Thread-156798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:32.261 [INFO] [Thread-156798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:32.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:11:32.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:33.222 [DEBUG] [Thread-156798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:33.222 [DEBUG] [Thread-156798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:33.270 [DEBUG] [Thread-156798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:33.270 [DEBUG] [Thread-156798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:33.278 [DEBUG] [Thread-156798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:33.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:33.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:11:33.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:11:33.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:33.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:33.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:33.310 [DEBUG] [Thread-156798] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:36.214 [DEBUG] [Thread-156800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:11:41.219 [DEBUG] [Thread-156801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:11:43.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:11:43.313 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:11:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:11:43.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 11, 31), 12.98, 41.0, 0.0, 8.79, 13.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:11:43.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:11:31
2025-09-29T13:11:44.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:11:44.165 [DEBUG] [Thread-156802] [transport.py] [_log()] starting thread (client mode): 0x2e34bb50
2025-09-29T13:11:44.165 [DEBUG] [Thread-156802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:44.184 [DEBUG] [Thread-156802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:11:44.184 [INFO] [Thread-156802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:44.187 [DEBUG] [Thread-156802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:44.188 [DEBUG] [Thread-156802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:44.188 [DEBUG] [Thread-156802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:44.188 [DEBUG] [Thread-156802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:44.188 [DEBUG] [Thread-156802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:44.188 [DEBUG] [Thread-156802] [transport.py] [_log()] Compression: none
2025-09-29T13:11:44.188 [DEBUG] [Thread-156802] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:44.204 [DEBUG] [Thread-156802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:44.204 [DEBUG] [Thread-156802] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:44.205 [DEBUG] [Thread-156802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:11:44.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:11:44.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:44.207 [DEBUG] [Thread-156802] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:44.207 [DEBUG] [Thread-156802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:44.207 [DEBUG] [Thread-156802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:44.207 [DEBUG] [Thread-156802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:11:44.207 [DEBUG] [Thread-156802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:44.224 [INFO] [Thread-156802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:44.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:44.988 [DEBUG] [Thread-156802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:44.989 [DEBUG] [Thread-156802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:44.989 [DEBUG] [Thread-156802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:11:45.029 [DEBUG] [Thread-156802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:45.029 [DEBUG] [Thread-156802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:45.031 [DEBUG] [Thread-156802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:45.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:45.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:11:45.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:11:45.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:11:45.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:45.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:11:45.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:45.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:11:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.466041 -999.00  +14.50  15.67     45   +2.70 1 1 1 1 1   888    0 13.65 90.02 ----- 14.8 15.7 111.5 20.9 23.5 -26.7 22.4 -27.2 23.1 -27.6 24.4 -27.8
2025-09-29T13:11:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:11:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:11:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.466041
2025-09-29T13:11:45.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:11:45.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:11:45.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:11:45.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:11:45.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:11:45.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:11:31', tmtdew=12.98, humidity=41.0, cloud=0.0, wind=8.79, temperature=13.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:11:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:11:45.055 [DEBUG] [Thread-156802] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:45.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:11:45.162 [DEBUG] [Thread-156805] [transport.py] [_log()] starting thread (client mode): 0x2e348bb0
2025-09-29T13:11:45.163 [DEBUG] [Thread-156805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:45.177 [DEBUG] [Thread-156805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:11:45.177 [INFO] [Thread-156805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:11:45.184 [DEBUG] [Thread-156805] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:45.184 [DEBUG] [Thread-156805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:11:45.184 [DEBUG] [Thread-156805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:45.184 [DEBUG] [Thread-156805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:45.184 [DEBUG] [Thread-156805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:45.184 [DEBUG] [Thread-156805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:45.184 [DEBUG] [Thread-156805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:45.184 [DEBUG] [Thread-156805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] Compression: none
2025-09-29T13:11:45.185 [DEBUG] [Thread-156805] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:45.242 [DEBUG] [Thread-156805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:45.243 [DEBUG] [Thread-156805] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:45.243 [DEBUG] [Thread-156805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:11:45.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:11:45.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:45.299 [DEBUG] [Thread-156805] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:45.299 [DEBUG] [Thread-156805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:45.299 [DEBUG] [Thread-156805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:45.299 [DEBUG] [Thread-156805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:11:45.299 [DEBUG] [Thread-156805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:45.321 [INFO] [Thread-156805] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:45.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:11:45.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:46.286 [DEBUG] [Thread-156805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:46.286 [DEBUG] [Thread-156805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:46.334 [DEBUG] [Thread-156805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:46.334 [DEBUG] [Thread-156805] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:46.343 [DEBUG] [Thread-156805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:46.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:46.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:11:46.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:11:46.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:46.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:46.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:46.378 [DEBUG] [Thread-156805] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:51.265 [DEBUG] [Thread-156807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:11:53.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:11:53.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:11:56.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:11:56.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:11:56.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:11:56.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 11, 31), 12.98, 41.0, 0.0, 8.79, 13.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:11:56.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:11:31
2025-09-29T13:11:57.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:11:57.231 [DEBUG] [Thread-156808] [transport.py] [_log()] starting thread (client mode): 0x2b9c0b50
2025-09-29T13:11:57.231 [DEBUG] [Thread-156808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:11:57.251 [DEBUG] [Thread-156808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:11:57.251 [INFO] [Thread-156808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:11:57.254 [DEBUG] [Thread-156808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:11:57.254 [DEBUG] [Thread-156808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] client lang: <none>
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] server lang: <none>
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] kex follows: False
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:11:57.255 [DEBUG] [Thread-156808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:11:57.256 [DEBUG] [Thread-156808] [transport.py] [_log()] Compression: none
2025-09-29T13:11:57.256 [DEBUG] [Thread-156808] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:11:57.275 [DEBUG] [Thread-156808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:11:57.275 [DEBUG] [Thread-156808] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:11:57.276 [DEBUG] [Thread-156808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:11:57.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:11:57.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:11:57.316 [DEBUG] [Thread-156808] [transport.py] [_log()] userauth is OK
2025-09-29T13:11:57.316 [DEBUG] [Thread-156808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:11:57.317 [DEBUG] [Thread-156808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:11:57.317 [DEBUG] [Thread-156808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:11:57.317 [DEBUG] [Thread-156808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:11:57.338 [INFO] [Thread-156808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:11:57.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:11:57.965 [DEBUG] [Thread-156808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:11:57.965 [DEBUG] [Thread-156808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:11:57.966 [DEBUG] [Thread-156808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:11:58.006 [DEBUG] [Thread-156808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:11:58.006 [DEBUG] [Thread-156808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:11:58.009 [DEBUG] [Thread-156808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:11:58.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:11:58.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:11:58.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:11:58.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:11:58.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:11:58.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:11:58.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:11:58.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:11:58.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:11:58.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.466389 -999.00  +14.60  11.10     45   +2.80 1 1 1 1 1   888    0 13.93 95.10 ----- 9.8 11.1 111.0 15.5 23.3 -26.9 22.5 -26.3 23.1 -26.5 24.4 -27.0
2025-09-29T13:11:58.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:11:58.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:11:58.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.466389
2025-09-29T13:11:58.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:11:58.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:11:58.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:11:58.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:11:58.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:11:58.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:11:31', tmtdew=12.98, humidity=41.0, cloud=0.0, wind=8.79, temperature=13.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:11:36.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:11:58.035 [DEBUG] [Thread-156808] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:11:58.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:12:06.321 [DEBUG] [Thread-156811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:12:21.363 [DEBUG] [Thread-156812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:12:36.389 [DEBUG] [Thread-156813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:12:41.258 [DEBUG] [Thread-156814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:12:51.417 [DEBUG] [Thread-156815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:12:53.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:12:53.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:13:06.447 [DEBUG] [Thread-156816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:13:21.474 [DEBUG] [Thread-156817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:13:36.500 [DEBUG] [Thread-156818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:13:41.292 [DEBUG] [Thread-156819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:13:51.530 [DEBUG] [Thread-156820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:13:53.752 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:13:53.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:14:06.558 [DEBUG] [Thread-156821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:14:11.258 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T13:14:21.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:14:21.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:14:21.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:14:21.587 [DEBUG] [Thread-156822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:14:21.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 14, 11), 12.84, 41.33, 0.0, 13.06, 13.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:14:21.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:14:11
2025-09-29T13:14:21.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:14:22.119 [DEBUG] [Thread-156823] [transport.py] [_log()] starting thread (client mode): 0x2b9c2890
2025-09-29T13:14:22.119 [DEBUG] [Thread-156823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:14:22.139 [DEBUG] [Thread-156823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:14:22.139 [INFO] [Thread-156823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] client lang: <none>
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] server lang: <none>
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] kex follows: False
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] Compression: none
2025-09-29T13:14:22.142 [DEBUG] [Thread-156823] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:14:22.159 [DEBUG] [Thread-156823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:14:22.159 [DEBUG] [Thread-156823] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:14:22.160 [DEBUG] [Thread-156823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:14:22.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:14:22.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:14:22.204 [DEBUG] [Thread-156823] [transport.py] [_log()] userauth is OK
2025-09-29T13:14:22.205 [DEBUG] [Thread-156823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:14:22.205 [DEBUG] [Thread-156823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:14:22.205 [DEBUG] [Thread-156823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:14:22.205 [DEBUG] [Thread-156823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:14:22.229 [INFO] [Thread-156823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:14:22.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:14:22.976 [DEBUG] [Thread-156823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:14:22.976 [DEBUG] [Thread-156823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:14:22.977 [DEBUG] [Thread-156823] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:14:23.017 [DEBUG] [Thread-156823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:14:23.017 [DEBUG] [Thread-156823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:14:23.020 [DEBUG] [Thread-156823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:14:23.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:14:23.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:14:23.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:14:23.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:14:23.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:14:23.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:14:23.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:14:23.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:14:23.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:14:23.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.467778 -999.00  +14.50  14.17     44   +2.50 1 1 1 1 1   888    0 13.49 83.98 ----- 13.9 14.2 177.4 16.5 23.5 -27.5 22.3 -27.3 23.1 -27.9 24.5 -28.5
2025-09-29T13:14:23.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:14:23.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:14:23.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.467778
2025-09-29T13:14:23.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:14:23.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:14:23.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:14:23.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:14:23.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:14:23.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:14:11', tmtdew=12.84, humidity=41.33, cloud=0.0, wind=13.06, temperature=13.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:13:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:14:23.045 [DEBUG] [Thread-156823] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:14:23.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:14:23.143 [DEBUG] [Thread-156826] [transport.py] [_log()] starting thread (client mode): 0x28705db0
2025-09-29T13:14:23.143 [DEBUG] [Thread-156826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:14:23.157 [DEBUG] [Thread-156826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:14:23.158 [INFO] [Thread-156826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:14:23.165 [DEBUG] [Thread-156826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] client lang: <none>
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] server lang: <none>
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] kex follows: False
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] Compression: none
2025-09-29T13:14:23.166 [DEBUG] [Thread-156826] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:14:23.223 [DEBUG] [Thread-156826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:14:23.224 [DEBUG] [Thread-156826] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:14:23.224 [DEBUG] [Thread-156826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:14:23.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:14:23.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:14:23.279 [DEBUG] [Thread-156826] [transport.py] [_log()] userauth is OK
2025-09-29T13:14:23.279 [DEBUG] [Thread-156826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:14:23.279 [DEBUG] [Thread-156826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:14:23.279 [DEBUG] [Thread-156826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:14:23.280 [DEBUG] [Thread-156826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:14:23.299 [INFO] [Thread-156826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:14:23.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:14:23.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:14:24.233 [DEBUG] [Thread-156826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:14:24.233 [DEBUG] [Thread-156826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:14:24.281 [DEBUG] [Thread-156826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:14:24.281 [DEBUG] [Thread-156826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:14:24.290 [DEBUG] [Thread-156826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:14:24.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:14:24.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:14:24.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:14:24.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:14:24.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:14:24.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:14:24.325 [DEBUG] [Thread-156826] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:14:34.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:14:34.327 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:14:34.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:14:34.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 14, 11), 12.84, 41.33, 0.0, 13.06, 13.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:14:34.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:14:11
2025-09-29T13:14:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:14:35.193 [DEBUG] [Thread-156828] [transport.py] [_log()] starting thread (client mode): 0x28704b50
2025-09-29T13:14:35.194 [DEBUG] [Thread-156828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:14:35.215 [DEBUG] [Thread-156828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:14:35.215 [INFO] [Thread-156828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:14:35.218 [DEBUG] [Thread-156828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:14:35.218 [DEBUG] [Thread-156828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] client lang: <none>
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] server lang: <none>
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] kex follows: False
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:14:35.219 [DEBUG] [Thread-156828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:14:35.220 [DEBUG] [Thread-156828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:14:35.220 [DEBUG] [Thread-156828] [transport.py] [_log()] Compression: none
2025-09-29T13:14:35.220 [DEBUG] [Thread-156828] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:14:35.238 [DEBUG] [Thread-156828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:14:35.239 [DEBUG] [Thread-156828] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:14:35.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:14:35.240 [DEBUG] [Thread-156828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:14:35.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:14:35.242 [DEBUG] [Thread-156828] [transport.py] [_log()] userauth is OK
2025-09-29T13:14:35.242 [DEBUG] [Thread-156828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:14:35.242 [DEBUG] [Thread-156828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:14:35.242 [DEBUG] [Thread-156828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:14:35.242 [DEBUG] [Thread-156828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:14:35.265 [INFO] [Thread-156828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:14:35.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:14:35.990 [DEBUG] [Thread-156828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:14:35.990 [DEBUG] [Thread-156828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:14:35.990 [DEBUG] [Thread-156828] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:14:36.031 [DEBUG] [Thread-156828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:14:36.031 [DEBUG] [Thread-156828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:14:36.034 [DEBUG] [Thread-156828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:14:36.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:14:36.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:14:36.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:14:36.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:14:36.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:14:36.054 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:14:36.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:14:36.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:14:36.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:14:36.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.467778 -999.00  +14.50  14.17     44   +2.50 1 1 1 1 1   888    0 13.49 83.98 ----- 13.9 14.2 177.4 16.5 23.5 -27.5 22.3 -27.3 23.1 -27.9 24.5 -28.5
2025-09-29T13:14:36.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:14:36.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:14:36.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.467778
2025-09-29T13:14:36.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:14:36.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:14:36.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:14:36.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:14:36.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:14:36.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:14:11', tmtdew=12.84, humidity=41.33, cloud=0.0, wind=13.06, temperature=13.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:13:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:14:36.056 [DEBUG] [Thread-156828] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:14:36.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:14:36.154 [DEBUG] [Thread-156831] [transport.py] [_log()] starting thread (client mode): 0x2e3c11e0
2025-09-29T13:14:36.154 [DEBUG] [Thread-156831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:14:36.173 [DEBUG] [Thread-156831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:14:36.173 [INFO] [Thread-156831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:14:36.180 [DEBUG] [Thread-156831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:14:36.180 [DEBUG] [Thread-156831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] client lang: <none>
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] server lang: <none>
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] kex follows: False
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] Compression: none
2025-09-29T13:14:36.181 [DEBUG] [Thread-156831] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:14:36.245 [DEBUG] [Thread-156831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:14:36.246 [DEBUG] [Thread-156831] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:14:36.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:14:36.247 [DEBUG] [Thread-156831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:14:36.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:14:36.310 [DEBUG] [Thread-156831] [transport.py] [_log()] userauth is OK
2025-09-29T13:14:36.310 [DEBUG] [Thread-156831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:14:36.310 [DEBUG] [Thread-156831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:14:36.310 [DEBUG] [Thread-156831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:14:36.310 [DEBUG] [Thread-156831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:14:36.331 [INFO] [Thread-156831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:14:36.331 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:14:36.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:14:36.627 [DEBUG] [Thread-156833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:14:37.261 [DEBUG] [Thread-156831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:14:37.261 [DEBUG] [Thread-156831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:14:37.309 [DEBUG] [Thread-156831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:14:37.309 [DEBUG] [Thread-156831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:14:37.318 [DEBUG] [Thread-156831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:14:37.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:14:37.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:14:37.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:14:37.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:14:37.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:14:37.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:14:37.351 [DEBUG] [Thread-156831] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:14:41.344 [DEBUG] [Thread-156834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:14:47.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:14:47.354 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:14:47.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:14:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 14, 43), 13.21, 40.75, 0.0, 20.05, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:14:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:14:43
2025-09-29T13:14:48.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:14:48.213 [DEBUG] [Thread-156835] [transport.py] [_log()] starting thread (client mode): 0x2b9569e0
2025-09-29T13:14:48.213 [DEBUG] [Thread-156835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:14:48.233 [DEBUG] [Thread-156835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:14:48.233 [INFO] [Thread-156835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:14:48.236 [DEBUG] [Thread-156835] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:14:48.236 [DEBUG] [Thread-156835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:14:48.236 [DEBUG] [Thread-156835] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:14:48.236 [DEBUG] [Thread-156835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:48.236 [DEBUG] [Thread-156835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] client lang: <none>
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] server lang: <none>
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] kex follows: False
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] Compression: none
2025-09-29T13:14:48.237 [DEBUG] [Thread-156835] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:14:48.255 [DEBUG] [Thread-156835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:14:48.255 [DEBUG] [Thread-156835] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:14:48.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:14:48.256 [DEBUG] [Thread-156835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:14:48.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:14:48.258 [DEBUG] [Thread-156835] [transport.py] [_log()] userauth is OK
2025-09-29T13:14:48.258 [DEBUG] [Thread-156835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:14:48.258 [DEBUG] [Thread-156835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:14:48.258 [DEBUG] [Thread-156835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:14:48.259 [DEBUG] [Thread-156835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:14:48.273 [INFO] [Thread-156835] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:14:48.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:14:48.910 [DEBUG] [Thread-156835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:14:48.910 [DEBUG] [Thread-156835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:14:48.910 [DEBUG] [Thread-156835] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:14:48.951 [DEBUG] [Thread-156835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:14:48.951 [DEBUG] [Thread-156835] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:14:48.954 [DEBUG] [Thread-156835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:14:48.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:14:48.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:14:48.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:14:48.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:14:48.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:14:48.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:14:48.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:14:48.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:14:48.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:14:48.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.468472 -999.00  +14.40  17.12     44   +2.50 1 1 1 1 1   888    0 13.84 84.29 ----- 24.0 17.1 168.3 24.7 23.1 -29.4 21.4 -33.0 22.6 -28.4 24.0 -28.9
2025-09-29T13:14:48.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:14:48.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:14:48.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.468472
2025-09-29T13:14:48.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:14:48.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:14:48.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:14:48.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:14:48.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:14:48.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:14:43', tmtdew=13.21, humidity=40.75, cloud=0.0, wind=20.05, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:14:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:14:48.972 [DEBUG] [Thread-156835] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:14:49.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:14:49.068 [DEBUG] [Thread-156838] [transport.py] [_log()] starting thread (client mode): 0x2b954bb0
2025-09-29T13:14:49.068 [DEBUG] [Thread-156838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:14:49.082 [DEBUG] [Thread-156838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:14:49.082 [INFO] [Thread-156838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:14:49.089 [DEBUG] [Thread-156838] [transport.py] [_log()] client lang: <none>
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] server lang: <none>
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] kex follows: False
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] Compression: none
2025-09-29T13:14:49.090 [DEBUG] [Thread-156838] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:14:49.148 [DEBUG] [Thread-156838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:14:49.148 [DEBUG] [Thread-156838] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:14:49.149 [DEBUG] [Thread-156838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:14:49.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:14:49.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:14:49.203 [DEBUG] [Thread-156838] [transport.py] [_log()] userauth is OK
2025-09-29T13:14:49.203 [DEBUG] [Thread-156838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:14:49.203 [DEBUG] [Thread-156838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:14:49.204 [DEBUG] [Thread-156838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:14:49.204 [DEBUG] [Thread-156838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:14:49.222 [INFO] [Thread-156838] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:14:49.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:14:49.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:14:50.193 [DEBUG] [Thread-156838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:14:50.193 [DEBUG] [Thread-156838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:14:50.241 [DEBUG] [Thread-156838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:14:50.241 [DEBUG] [Thread-156838] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:14:50.250 [DEBUG] [Thread-156838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:14:50.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:14:50.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:14:50.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:14:50.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:14:50.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:14:50.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:14:50.281 [DEBUG] [Thread-156838] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:14:51.685 [DEBUG] [Thread-156840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:14:53.896 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:14:53.897 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:15:00.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:15:00.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:15:00.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:15:00.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 14, 43), 13.21, 40.75, 0.0, 20.05, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:15:00.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:14:43
2025-09-29T13:15:00.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:15:01.151 [DEBUG] [Thread-156841] [transport.py] [_log()] starting thread (client mode): 0x2e348df0
2025-09-29T13:15:01.152 [DEBUG] [Thread-156841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:01.173 [DEBUG] [Thread-156841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:15:01.173 [INFO] [Thread-156841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] Compression: none
2025-09-29T13:15:01.175 [DEBUG] [Thread-156841] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:01.186 [DEBUG] [Thread-156841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:01.186 [DEBUG] [Thread-156841] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:01.186 [DEBUG] [Thread-156841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:15:01.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:15:01.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:01.187 [DEBUG] [Thread-156841] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:01.187 [DEBUG] [Thread-156841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:01.187 [DEBUG] [Thread-156841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:01.187 [DEBUG] [Thread-156841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:15:01.187 [DEBUG] [Thread-156841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:01.198 [INFO] [Thread-156841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:01.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:01.984 [DEBUG] [Thread-156841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:01.984 [DEBUG] [Thread-156841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:01.985 [DEBUG] [Thread-156841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:15:02.025 [DEBUG] [Thread-156841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:02.026 [DEBUG] [Thread-156841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:02.028 [DEBUG] [Thread-156841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:02.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:02.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:15:02.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:15:02.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:15:02.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:02.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:15:02.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:02.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:02.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:15:02.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.468472 -999.00  +14.40  17.12     44   +2.50 1 1 1 1 1   888    0 13.84 84.29 ----- 24.0 17.1 168.3 24.7 23.1 -29.4 21.4 -33.0 22.6 -28.4 24.0 -28.9
2025-09-29T13:15:02.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:15:02.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:15:02.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.468472
2025-09-29T13:15:02.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:15:02.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:15:02.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:15:02.057 [DEBUG] [Thread-156841] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:15:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:15:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:14:43', tmtdew=13.21, humidity=40.75, cloud=0.0, wind=20.05, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:14:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:15:02.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:15:02.152 [DEBUG] [Thread-156844] [transport.py] [_log()] starting thread (client mode): 0x28705db0
2025-09-29T13:15:02.152 [DEBUG] [Thread-156844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:02.172 [DEBUG] [Thread-156844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:15:02.172 [INFO] [Thread-156844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] Compression: none
2025-09-29T13:15:02.180 [DEBUG] [Thread-156844] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:02.239 [DEBUG] [Thread-156844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:02.239 [DEBUG] [Thread-156844] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:02.240 [DEBUG] [Thread-156844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:15:02.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:15:02.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:02.295 [DEBUG] [Thread-156844] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:02.295 [DEBUG] [Thread-156844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:02.295 [DEBUG] [Thread-156844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:02.295 [DEBUG] [Thread-156844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:15:02.295 [DEBUG] [Thread-156844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:02.310 [INFO] [Thread-156844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:02.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:15:02.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:03.294 [DEBUG] [Thread-156844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:03.294 [DEBUG] [Thread-156844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:03.342 [DEBUG] [Thread-156844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:03.342 [DEBUG] [Thread-156844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:03.350 [DEBUG] [Thread-156844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:03.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:03.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:15:03.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:15:03.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:03.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:03.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:03.384 [DEBUG] [Thread-156844] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:06.729 [DEBUG] [Thread-156846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:15:13.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:15:13.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:15:13.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:15:13.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 14, 43), 13.21, 40.75, 0.0, 20.05, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:15:13.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:14:43
2025-09-29T13:15:14.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:15:14.233 [DEBUG] [Thread-156847] [transport.py] [_log()] starting thread (client mode): 0x2b9ae710
2025-09-29T13:15:14.233 [DEBUG] [Thread-156847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:14.253 [DEBUG] [Thread-156847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:15:14.253 [INFO] [Thread-156847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] Compression: none
2025-09-29T13:15:14.256 [DEBUG] [Thread-156847] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:14.275 [DEBUG] [Thread-156847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:14.275 [DEBUG] [Thread-156847] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:14.276 [DEBUG] [Thread-156847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:15:14.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:15:14.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:14.278 [DEBUG] [Thread-156847] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:14.278 [DEBUG] [Thread-156847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:14.278 [DEBUG] [Thread-156847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:14.278 [DEBUG] [Thread-156847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:15:14.278 [DEBUG] [Thread-156847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:14.302 [INFO] [Thread-156847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:14.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:18.118 [DEBUG] [Thread-156847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:18.118 [DEBUG] [Thread-156847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:18.118 [DEBUG] [Thread-156847] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:15:18.159 [DEBUG] [Thread-156847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:18.159 [DEBUG] [Thread-156847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:18.162 [DEBUG] [Thread-156847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:18.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:18.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:15:18.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:15:18.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:15:18.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:18.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:15:18.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:18.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:18.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:15:18.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.468472 -999.00  +14.40  17.12     44   +2.50 1 1 1 1 1   888    0 13.84 84.29 ----- 24.0 17.1 168.3 24.7 23.1 -29.4 21.4 -33.0 22.6 -28.4 24.0 -28.9
2025-09-29T13:15:18.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:15:18.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:15:18.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.468472
2025-09-29T13:15:18.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:15:18.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:15:18.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:15:18.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:15:18.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:15:18.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:14:43', tmtdew=13.21, humidity=40.75, cloud=0.0, wind=20.05, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:14:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:15:18.187 [DEBUG] [Thread-156847] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:18.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:15:18.281 [DEBUG] [Thread-156850] [transport.py] [_log()] starting thread (client mode): 0x2b90d5a0
2025-09-29T13:15:18.281 [DEBUG] [Thread-156850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:18.297 [DEBUG] [Thread-156850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:15:18.297 [INFO] [Thread-156850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:18.305 [DEBUG] [Thread-156850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:18.306 [DEBUG] [Thread-156850] [transport.py] [_log()] Compression: none
2025-09-29T13:15:18.306 [DEBUG] [Thread-156850] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:18.364 [DEBUG] [Thread-156850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:18.365 [DEBUG] [Thread-156850] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:18.365 [DEBUG] [Thread-156850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:15:18.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:15:18.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:18.428 [DEBUG] [Thread-156850] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:18.428 [DEBUG] [Thread-156850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:18.429 [DEBUG] [Thread-156850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:18.429 [DEBUG] [Thread-156850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:15:18.429 [DEBUG] [Thread-156850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:18.451 [INFO] [Thread-156850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:18.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:15:18.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:19.445 [DEBUG] [Thread-156850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:19.445 [DEBUG] [Thread-156850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:19.493 [DEBUG] [Thread-156850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:19.493 [DEBUG] [Thread-156850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:19.502 [DEBUG] [Thread-156850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:19.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:19.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:15:19.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:15:19.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:19.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:19.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:19.537 [DEBUG] [Thread-156850] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:21.760 [DEBUG] [Thread-156852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:15:29.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:15:29.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:15:29.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:15:30.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 15, 14), 13.25, 40.65, 0.0, 17.72, 13.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:15:30.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:15:14
2025-09-29T13:15:30.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:15:30.440 [DEBUG] [Thread-156853] [transport.py] [_log()] starting thread (client mode): 0x28704be0
2025-09-29T13:15:30.440 [DEBUG] [Thread-156853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:30.462 [DEBUG] [Thread-156853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:15:30.462 [INFO] [Thread-156853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] Compression: none
2025-09-29T13:15:30.465 [DEBUG] [Thread-156853] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:30.482 [DEBUG] [Thread-156853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:30.482 [DEBUG] [Thread-156853] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:30.482 [DEBUG] [Thread-156853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:15:30.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:15:30.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:30.483 [DEBUG] [Thread-156853] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:30.483 [DEBUG] [Thread-156853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:30.483 [DEBUG] [Thread-156853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:30.483 [DEBUG] [Thread-156853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:15:30.483 [DEBUG] [Thread-156853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:30.500 [INFO] [Thread-156853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:30.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:31.054 [DEBUG] [Thread-156853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:31.054 [DEBUG] [Thread-156853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:31.055 [DEBUG] [Thread-156853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:15:31.096 [DEBUG] [Thread-156853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:31.096 [DEBUG] [Thread-156853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:31.098 [DEBUG] [Thread-156853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:31.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:31.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:15:31.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:15:31.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:15:31.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:31.112 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:15:31.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.468819 -999.00  +14.00  11.20     44   +2.10 1 1 1 1 1   888    0 13.60 81.64 ----- 8.4 11.2 182.8 25.9 23.0 -27.7 21.5 -31.3 22.6 -27.8 24.0 -29.4
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.468819
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:15:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:15:14', tmtdew=13.25, humidity=40.65, cloud=0.0, wind=17.72, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:15:05.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:15:31.113 [DEBUG] [Thread-156853] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:31.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:15:31.200 [DEBUG] [Thread-156856] [transport.py] [_log()] starting thread (client mode): 0x2e3c2cb0
2025-09-29T13:15:31.201 [DEBUG] [Thread-156856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:31.216 [DEBUG] [Thread-156856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:15:31.216 [INFO] [Thread-156856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:31.223 [DEBUG] [Thread-156856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:31.224 [DEBUG] [Thread-156856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:31.224 [DEBUG] [Thread-156856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:31.224 [DEBUG] [Thread-156856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:31.224 [DEBUG] [Thread-156856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:31.224 [DEBUG] [Thread-156856] [transport.py] [_log()] Compression: none
2025-09-29T13:15:31.224 [DEBUG] [Thread-156856] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:31.278 [DEBUG] [Thread-156856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:31.278 [DEBUG] [Thread-156856] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:31.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:15:31.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:31.279 [DEBUG] [Thread-156856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:15:31.335 [DEBUG] [Thread-156856] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:31.335 [DEBUG] [Thread-156856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:31.335 [DEBUG] [Thread-156856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:31.336 [DEBUG] [Thread-156856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:15:31.336 [DEBUG] [Thread-156856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:31.354 [INFO] [Thread-156856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:31.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:15:31.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:32.364 [DEBUG] [Thread-156856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:32.364 [DEBUG] [Thread-156856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:32.412 [DEBUG] [Thread-156856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:32.412 [DEBUG] [Thread-156856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:32.420 [DEBUG] [Thread-156856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:32.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:32.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:15:32.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:15:32.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:32.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:32.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:32.452 [DEBUG] [Thread-156856] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:36.790 [DEBUG] [Thread-156858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:15:41.395 [DEBUG] [Thread-156859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:15:42.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:15:42.454 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:15:42.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:15:43.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 15, 14), 13.25, 40.65, 0.0, 17.72, 13.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:15:43.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:15:14
2025-09-29T13:15:43.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:15:43.309 [DEBUG] [Thread-156860] [transport.py] [_log()] starting thread (client mode): 0x2b96c7f0
2025-09-29T13:15:43.309 [DEBUG] [Thread-156860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:43.329 [DEBUG] [Thread-156860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:15:43.329 [INFO] [Thread-156860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:15:43.332 [DEBUG] [Thread-156860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:43.332 [DEBUG] [Thread-156860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:15:43.332 [DEBUG] [Thread-156860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] Compression: none
2025-09-29T13:15:43.333 [DEBUG] [Thread-156860] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:43.352 [DEBUG] [Thread-156860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:43.352 [DEBUG] [Thread-156860] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:43.353 [DEBUG] [Thread-156860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:15:43.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:15:43.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:43.355 [DEBUG] [Thread-156860] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:43.355 [DEBUG] [Thread-156860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:43.355 [DEBUG] [Thread-156860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:43.355 [DEBUG] [Thread-156860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:15:43.355 [DEBUG] [Thread-156860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:43.380 [INFO] [Thread-156860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:43.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:45.019 [DEBUG] [Thread-156860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:45.019 [DEBUG] [Thread-156860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:45.020 [DEBUG] [Thread-156860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:15:45.060 [DEBUG] [Thread-156860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:45.061 [DEBUG] [Thread-156860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:45.064 [DEBUG] [Thread-156860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:45.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:45.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:15:45.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:15:45.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:15:45.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:45.092 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:15:45.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:45.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:45.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:15:45.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.468819 -999.00  +14.00  11.20     44   +2.10 1 1 1 1 1   888    0 13.60 81.64 ----- 8.4 11.2 182.8 25.9 23.0 -27.7 21.5 -31.3 22.6 -27.8 24.0 -29.4
2025-09-29T13:15:45.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:15:45.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:15:45.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.468819
2025-09-29T13:15:45.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:15:45.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:15:45.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:15:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:15:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:15:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:15:14', tmtdew=13.25, humidity=40.65, cloud=0.0, wind=17.72, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:15:05.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:15:45.095 [DEBUG] [Thread-156860] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:45.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:15:45.190 [DEBUG] [Thread-156863] [transport.py] [_log()] starting thread (client mode): 0x2b96fb50
2025-09-29T13:15:45.190 [DEBUG] [Thread-156863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:45.206 [DEBUG] [Thread-156863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:15:45.206 [INFO] [Thread-156863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:15:45.214 [DEBUG] [Thread-156863] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:45.214 [DEBUG] [Thread-156863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:15:45.214 [DEBUG] [Thread-156863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:45.214 [DEBUG] [Thread-156863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:45.214 [DEBUG] [Thread-156863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:45.214 [DEBUG] [Thread-156863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:45.214 [DEBUG] [Thread-156863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] Compression: none
2025-09-29T13:15:45.215 [DEBUG] [Thread-156863] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:45.271 [DEBUG] [Thread-156863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:45.271 [DEBUG] [Thread-156863] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:45.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:15:45.272 [DEBUG] [Thread-156863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:15:45.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:45.328 [DEBUG] [Thread-156863] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:45.328 [DEBUG] [Thread-156863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:45.328 [DEBUG] [Thread-156863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:45.328 [DEBUG] [Thread-156863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:15:45.328 [DEBUG] [Thread-156863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:45.348 [INFO] [Thread-156863] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:45.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:15:45.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:46.308 [DEBUG] [Thread-156863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:46.308 [DEBUG] [Thread-156863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:46.360 [DEBUG] [Thread-156863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:46.360 [DEBUG] [Thread-156863] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:46.368 [DEBUG] [Thread-156863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:46.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:46.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:15:46.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:15:46.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:46.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:46.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:46.400 [DEBUG] [Thread-156863] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:51.825 [DEBUG] [Thread-156865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:15:54.040 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:15:54.042 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:15:56.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:15:56.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:15:56.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:15:57.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 15, 46), 13.26, 40.76, 0.0, 15.35, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:15:57.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:15:46
2025-09-29T13:15:57.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:15:57.260 [DEBUG] [Thread-156866] [transport.py] [_log()] starting thread (client mode): 0x2b90d7b0
2025-09-29T13:15:57.260 [DEBUG] [Thread-156866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:57.280 [DEBUG] [Thread-156866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:15:57.280 [INFO] [Thread-156866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:57.283 [DEBUG] [Thread-156866] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:57.284 [DEBUG] [Thread-156866] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:57.284 [DEBUG] [Thread-156866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:57.284 [DEBUG] [Thread-156866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:57.284 [DEBUG] [Thread-156866] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:57.284 [DEBUG] [Thread-156866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:57.284 [DEBUG] [Thread-156866] [transport.py] [_log()] Compression: none
2025-09-29T13:15:57.284 [DEBUG] [Thread-156866] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:57.301 [DEBUG] [Thread-156866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:57.302 [DEBUG] [Thread-156866] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:57.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:15:57.303 [DEBUG] [Thread-156866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:15:57.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:57.305 [DEBUG] [Thread-156866] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:57.305 [DEBUG] [Thread-156866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:57.305 [DEBUG] [Thread-156866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:57.305 [DEBUG] [Thread-156866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:15:57.305 [DEBUG] [Thread-156866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:57.321 [INFO] [Thread-156866] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:57.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:57.929 [DEBUG] [Thread-156866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:57.929 [DEBUG] [Thread-156866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:57.930 [DEBUG] [Thread-156866] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:15:57.970 [DEBUG] [Thread-156866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:57.970 [DEBUG] [Thread-156866] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:57.973 [DEBUG] [Thread-156866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:57.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:57.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:15:57.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:15:57.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:15:57.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:57.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:15:57.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:57.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:57.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:15:57.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.469167 -999.00  +14.20   5.83     46   +2.80 1 1 1 1 1   888    0 13.73 86.01 ----- 9.2 5.8 185.0 11.2 23.0 -26.5 21.6 -25.9 22.7 -26.5 24.2 -27.3
2025-09-29T13:15:57.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:15:57.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:15:57.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.469167
2025-09-29T13:15:57.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:15:57.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:15:57.994 [DEBUG] [Thread-156866] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:15:57.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:15:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:15:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:15:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:15:46', tmtdew=13.26, humidity=40.76, cloud=0.0, wind=15.35, temperature=13.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:15:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:15:58.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:15:58.088 [DEBUG] [Thread-156869] [transport.py] [_log()] starting thread (client mode): 0x2e3c3df0
2025-09-29T13:15:58.088 [DEBUG] [Thread-156869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:15:58.103 [DEBUG] [Thread-156869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:15:58.103 [INFO] [Thread-156869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:15:58.111 [DEBUG] [Thread-156869] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:15:58.111 [DEBUG] [Thread-156869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:15:58.111 [DEBUG] [Thread-156869] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:15:58.111 [DEBUG] [Thread-156869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] client lang: <none>
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] server lang: <none>
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] kex follows: False
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] Compression: none
2025-09-29T13:15:58.112 [DEBUG] [Thread-156869] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:15:58.167 [DEBUG] [Thread-156869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:15:58.167 [DEBUG] [Thread-156869] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:15:58.168 [DEBUG] [Thread-156869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:15:58.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:15:58.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:15:58.224 [DEBUG] [Thread-156869] [transport.py] [_log()] userauth is OK
2025-09-29T13:15:58.224 [DEBUG] [Thread-156869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:15:58.224 [DEBUG] [Thread-156869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:15:58.224 [DEBUG] [Thread-156869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:15:58.224 [DEBUG] [Thread-156869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:15:58.243 [INFO] [Thread-156869] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:15:58.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:15:58.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:15:59.190 [DEBUG] [Thread-156869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:15:59.191 [DEBUG] [Thread-156869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:15:59.238 [DEBUG] [Thread-156869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:15:59.238 [DEBUG] [Thread-156869] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:15:59.247 [DEBUG] [Thread-156869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:15:59.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:15:59.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:15:59.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:15:59.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:15:59.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:15:59.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:15:59.281 [DEBUG] [Thread-156869] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:06.856 [DEBUG] [Thread-156871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:16:09.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:16:09.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:16:09.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:16:09.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 15, 46), 13.26, 40.76, 0.0, 15.35, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:16:09.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:15:46
2025-09-29T13:16:10.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:16:10.154 [DEBUG] [Thread-156872] [transport.py] [_log()] starting thread (client mode): 0x2e3c11e0
2025-09-29T13:16:10.154 [DEBUG] [Thread-156872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:16:10.175 [DEBUG] [Thread-156872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:16:10.175 [INFO] [Thread-156872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:16:10.178 [DEBUG] [Thread-156872] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] client lang: <none>
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] server lang: <none>
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] kex follows: False
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] Compression: none
2025-09-29T13:16:10.179 [DEBUG] [Thread-156872] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:16:10.195 [DEBUG] [Thread-156872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:16:10.195 [DEBUG] [Thread-156872] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:16:10.195 [DEBUG] [Thread-156872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:16:10.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:16:10.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:16:10.196 [DEBUG] [Thread-156872] [transport.py] [_log()] userauth is OK
2025-09-29T13:16:10.196 [DEBUG] [Thread-156872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:16:10.196 [DEBUG] [Thread-156872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:16:10.196 [DEBUG] [Thread-156872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:16:10.196 [DEBUG] [Thread-156872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:16:10.207 [INFO] [Thread-156872] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:16:10.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:16:10.916 [DEBUG] [Thread-156872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:16:10.916 [DEBUG] [Thread-156872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:16:10.916 [DEBUG] [Thread-156872] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:16:10.958 [DEBUG] [Thread-156872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:16:10.958 [DEBUG] [Thread-156872] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:16:10.961 [DEBUG] [Thread-156872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:16:10.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:16:10.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:16:10.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:16:10.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:16:10.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:16:10.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:16:10.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.469167 -999.00  +14.20   5.83     46   +2.80 1 1 1 1 1   888    0 13.73 86.01 ----- 9.2 5.8 185.0 11.2 23.0 -26.5 21.6 -25.9 22.7 -26.5 24.2 -27.3
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.469167
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:16:10.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:15:46', tmtdew=13.26, humidity=40.76, cloud=0.0, wind=15.35, temperature=13.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:15:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:16:10.980 [DEBUG] [Thread-156872] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:11.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:16:11.064 [DEBUG] [Thread-156875] [transport.py] [_log()] starting thread (client mode): 0x2e3c0fa0
2025-09-29T13:16:11.064 [DEBUG] [Thread-156875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:16:11.080 [DEBUG] [Thread-156875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:16:11.080 [INFO] [Thread-156875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:16:11.088 [DEBUG] [Thread-156875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:16:11.088 [DEBUG] [Thread-156875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:16:11.088 [DEBUG] [Thread-156875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:16:11.088 [DEBUG] [Thread-156875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:11.088 [DEBUG] [Thread-156875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] client lang: <none>
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] server lang: <none>
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] kex follows: False
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:16:11.089 [DEBUG] [Thread-156875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:16:11.090 [DEBUG] [Thread-156875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:16:11.090 [DEBUG] [Thread-156875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:16:11.090 [DEBUG] [Thread-156875] [transport.py] [_log()] Compression: none
2025-09-29T13:16:11.090 [DEBUG] [Thread-156875] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:16:11.146 [DEBUG] [Thread-156875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:16:11.147 [DEBUG] [Thread-156875] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:16:11.147 [DEBUG] [Thread-156875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:16:11.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:16:11.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:16:11.203 [DEBUG] [Thread-156875] [transport.py] [_log()] userauth is OK
2025-09-29T13:16:11.204 [DEBUG] [Thread-156875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:16:11.204 [DEBUG] [Thread-156875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:16:11.204 [DEBUG] [Thread-156875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:16:11.204 [DEBUG] [Thread-156875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:16:11.223 [INFO] [Thread-156875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:16:11.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:16:11.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:16:12.162 [DEBUG] [Thread-156875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:16:12.163 [DEBUG] [Thread-156875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:16:12.210 [DEBUG] [Thread-156875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:16:12.210 [DEBUG] [Thread-156875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:16:12.220 [DEBUG] [Thread-156875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:16:12.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:16:12.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:16:12.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:16:12.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:16:12.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:16:12.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:16:12.254 [DEBUG] [Thread-156875] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:21.892 [DEBUG] [Thread-156877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:16:22.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:16:22.257 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:16:22.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:16:22.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 16, 18), 13.28, 40.71, 0.0, 13.75, 13.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:16:22.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:16:18
2025-09-29T13:16:22.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:16:23.123 [DEBUG] [Thread-156878] [transport.py] [_log()] starting thread (client mode): 0x2b9aefb0
2025-09-29T13:16:23.123 [DEBUG] [Thread-156878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:16:23.144 [DEBUG] [Thread-156878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:16:23.144 [INFO] [Thread-156878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] client lang: <none>
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] server lang: <none>
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] kex follows: False
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] Compression: none
2025-09-29T13:16:23.147 [DEBUG] [Thread-156878] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:16:23.162 [DEBUG] [Thread-156878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:16:23.163 [DEBUG] [Thread-156878] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:16:23.163 [DEBUG] [Thread-156878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:16:23.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:16:23.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:16:23.165 [DEBUG] [Thread-156878] [transport.py] [_log()] userauth is OK
2025-09-29T13:16:23.165 [DEBUG] [Thread-156878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:16:23.165 [DEBUG] [Thread-156878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:16:23.165 [DEBUG] [Thread-156878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:16:23.165 [DEBUG] [Thread-156878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:16:23.189 [INFO] [Thread-156878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:16:23.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:16:23.916 [DEBUG] [Thread-156878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:16:23.916 [DEBUG] [Thread-156878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:16:23.916 [DEBUG] [Thread-156878] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:16:23.957 [DEBUG] [Thread-156878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:16:23.957 [DEBUG] [Thread-156878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:16:23.960 [DEBUG] [Thread-156878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:16:23.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:16:23.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:16:23.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:16:23.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:16:23.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:16:23.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:16:23.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.469167 -999.00  +14.20   5.83     46   +2.80 1 1 1 1 1   888    0 13.73 86.01 ----- 9.2 5.8 185.0 11.2 23.0 -26.5 21.6 -25.9 22.7 -26.5 24.2 -27.3
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.469167
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:16:23.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:16:23.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:16:23.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:16:23.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:16:18', tmtdew=13.28, humidity=40.71, cloud=0.0, wind=13.75, temperature=13.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:15:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:16:23.980 [DEBUG] [Thread-156878] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:24.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:16:24.067 [DEBUG] [Thread-156881] [transport.py] [_log()] starting thread (client mode): 0x2b91d510
2025-09-29T13:16:24.067 [DEBUG] [Thread-156881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:16:24.082 [DEBUG] [Thread-156881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:16:24.082 [INFO] [Thread-156881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] client lang: <none>
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] server lang: <none>
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] kex follows: False
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] Compression: none
2025-09-29T13:16:24.091 [DEBUG] [Thread-156881] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:16:24.152 [DEBUG] [Thread-156881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:16:24.152 [DEBUG] [Thread-156881] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:16:24.152 [DEBUG] [Thread-156881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:16:24.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:16:24.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:16:24.212 [DEBUG] [Thread-156881] [transport.py] [_log()] userauth is OK
2025-09-29T13:16:24.212 [DEBUG] [Thread-156881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:16:24.212 [DEBUG] [Thread-156881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:16:24.212 [DEBUG] [Thread-156881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:16:24.212 [DEBUG] [Thread-156881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:16:24.231 [INFO] [Thread-156881] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:16:24.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:16:24.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:16:25.177 [DEBUG] [Thread-156881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:16:25.177 [DEBUG] [Thread-156881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:16:25.225 [DEBUG] [Thread-156881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:16:25.225 [DEBUG] [Thread-156881] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:16:25.236 [DEBUG] [Thread-156881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:16:25.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:16:25.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:16:25.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:16:25.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:16:25.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:16:25.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:16:25.270 [DEBUG] [Thread-156881] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:35.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:16:35.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:16:35.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:16:35.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 16, 18), 13.28, 40.71, 0.0, 13.75, 13.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:16:35.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:16:18
2025-09-29T13:16:35.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:16:36.141 [DEBUG] [Thread-156883] [transport.py] [_log()] starting thread (client mode): 0x2e38f130
2025-09-29T13:16:36.141 [DEBUG] [Thread-156883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:16:36.163 [DEBUG] [Thread-156883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:16:36.163 [INFO] [Thread-156883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:16:36.166 [DEBUG] [Thread-156883] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] client lang: <none>
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] server lang: <none>
2025-09-29T13:16:36.167 [DEBUG] [Thread-156883] [transport.py] [_log()] kex follows: False
2025-09-29T13:16:36.168 [DEBUG] [Thread-156883] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:16:36.168 [DEBUG] [Thread-156883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:16:36.168 [DEBUG] [Thread-156883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:16:36.168 [DEBUG] [Thread-156883] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:16:36.168 [DEBUG] [Thread-156883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:16:36.168 [DEBUG] [Thread-156883] [transport.py] [_log()] Compression: none
2025-09-29T13:16:36.168 [DEBUG] [Thread-156883] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:16:36.187 [DEBUG] [Thread-156883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:16:36.187 [DEBUG] [Thread-156883] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:16:36.188 [DEBUG] [Thread-156883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:16:36.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:16:36.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:16:36.189 [DEBUG] [Thread-156883] [transport.py] [_log()] userauth is OK
2025-09-29T13:16:36.190 [DEBUG] [Thread-156883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:16:36.190 [DEBUG] [Thread-156883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:16:36.190 [DEBUG] [Thread-156883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:16:36.190 [DEBUG] [Thread-156883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:16:36.208 [INFO] [Thread-156883] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:16:36.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:16:36.813 [DEBUG] [Thread-156883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:16:36.813 [DEBUG] [Thread-156883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:16:36.813 [DEBUG] [Thread-156883] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:16:36.854 [DEBUG] [Thread-156883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:16:36.854 [DEBUG] [Thread-156883] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:16:36.855 [DEBUG] [Thread-156883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:16:36.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:16:36.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:16:36.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:16:36.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:16:36.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:16:36.871 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:16:36.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:16:36.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.469514 -999.00  +14.20  12.25     44   +2.30 1 1 1 1 1   888    0 13.77 82.05 ----- 8.1 12.2 204.8 18.5 23.0 -28.8 21.3 -32.7 22.5 -27.2 23.9 -29.3
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.469514
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:16:36.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:16:18', tmtdew=13.28, humidity=40.71, cloud=0.0, wind=13.75, temperature=13.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:16:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:16:36.872 [DEBUG] [Thread-156883] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:36.922 [DEBUG] [Thread-156886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:16:36.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:16:36.957 [DEBUG] [Thread-156887] [transport.py] [_log()] starting thread (client mode): 0x2e34a110
2025-09-29T13:16:36.957 [DEBUG] [Thread-156887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:16:36.972 [DEBUG] [Thread-156887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:16:36.973 [INFO] [Thread-156887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:16:36.980 [DEBUG] [Thread-156887] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:16:36.980 [DEBUG] [Thread-156887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:16:36.980 [DEBUG] [Thread-156887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:16:36.981 [DEBUG] [Thread-156887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:36.981 [DEBUG] [Thread-156887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:36.981 [DEBUG] [Thread-156887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:36.981 [DEBUG] [Thread-156887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:36.981 [DEBUG] [Thread-156887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:16:36.981 [DEBUG] [Thread-156887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:16:36.981 [DEBUG] [Thread-156887] [transport.py] [_log()] client lang: <none>
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] server lang: <none>
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] kex follows: False
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] Compression: none
2025-09-29T13:16:36.982 [DEBUG] [Thread-156887] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:16:37.040 [DEBUG] [Thread-156887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:16:37.040 [DEBUG] [Thread-156887] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:16:37.040 [DEBUG] [Thread-156887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:16:37.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:16:37.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:16:37.096 [DEBUG] [Thread-156887] [transport.py] [_log()] userauth is OK
2025-09-29T13:16:37.096 [DEBUG] [Thread-156887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:16:37.097 [DEBUG] [Thread-156887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:16:37.097 [DEBUG] [Thread-156887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:16:37.097 [DEBUG] [Thread-156887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:16:37.116 [INFO] [Thread-156887] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:16:37.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:16:37.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:16:38.069 [DEBUG] [Thread-156887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:16:38.069 [DEBUG] [Thread-156887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:16:38.117 [DEBUG] [Thread-156887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:16:38.117 [DEBUG] [Thread-156887] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:16:38.126 [DEBUG] [Thread-156887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:16:38.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:16:38.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:16:38.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:16:38.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:16:38.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:16:38.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:16:38.159 [DEBUG] [Thread-156887] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:41.455 [DEBUG] [Thread-156889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:16:48.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:16:48.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:16:48.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:16:48.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 16, 18), 13.28, 40.71, 0.0, 13.75, 13.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:16:48.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:16:18
2025-09-29T13:16:48.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:16:49.053 [DEBUG] [Thread-156890] [transport.py] [_log()] starting thread (client mode): 0x2b9aed10
2025-09-29T13:16:49.053 [DEBUG] [Thread-156890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:16:49.077 [DEBUG] [Thread-156890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:16:49.077 [INFO] [Thread-156890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] client lang: <none>
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] server lang: <none>
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] kex follows: False
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] Compression: none
2025-09-29T13:16:49.081 [DEBUG] [Thread-156890] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:16:49.095 [DEBUG] [Thread-156890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:16:49.096 [DEBUG] [Thread-156890] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:16:49.096 [DEBUG] [Thread-156890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:16:49.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:16:49.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:16:49.097 [DEBUG] [Thread-156890] [transport.py] [_log()] userauth is OK
2025-09-29T13:16:49.097 [DEBUG] [Thread-156890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:16:49.097 [DEBUG] [Thread-156890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:16:49.097 [DEBUG] [Thread-156890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:16:49.097 [DEBUG] [Thread-156890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:16:49.107 [INFO] [Thread-156890] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:16:49.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:16:49.864 [DEBUG] [Thread-156890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:16:49.864 [DEBUG] [Thread-156890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:16:49.864 [DEBUG] [Thread-156890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:16:49.905 [DEBUG] [Thread-156890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:16:49.906 [DEBUG] [Thread-156890] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:16:49.908 [DEBUG] [Thread-156890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:16:49.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:16:49.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:16:49.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:16:49.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:16:49.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:16:49.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:16:49.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:16:49.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:16:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:16:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.469514 -999.00  +14.20  12.25     44   +2.30 1 1 1 1 1   888    0 13.77 82.05 ----- 8.1 12.2 204.8 18.5 23.0 -28.8 21.3 -32.7 22.5 -27.2 23.9 -29.3
2025-09-29T13:16:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:16:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:16:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.469514
2025-09-29T13:16:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:16:49.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:16:49.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:16:49.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:16:49.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:16:49.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:16:18', tmtdew=13.28, humidity=40.71, cloud=0.0, wind=13.75, temperature=13.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:16:06.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:16:49.934 [DEBUG] [Thread-156890] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:50.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:16:50.028 [DEBUG] [Thread-156893] [transport.py] [_log()] starting thread (client mode): 0x28705960
2025-09-29T13:16:50.028 [DEBUG] [Thread-156893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:16:50.043 [DEBUG] [Thread-156893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:16:50.043 [INFO] [Thread-156893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:16:50.052 [DEBUG] [Thread-156893] [transport.py] [_log()] client lang: <none>
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] server lang: <none>
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] kex follows: False
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] Compression: none
2025-09-29T13:16:50.053 [DEBUG] [Thread-156893] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:16:50.107 [DEBUG] [Thread-156893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:16:50.108 [DEBUG] [Thread-156893] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:16:50.108 [DEBUG] [Thread-156893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:16:50.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:16:50.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:16:50.170 [DEBUG] [Thread-156893] [transport.py] [_log()] userauth is OK
2025-09-29T13:16:50.170 [DEBUG] [Thread-156893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:16:50.170 [DEBUG] [Thread-156893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:16:50.170 [DEBUG] [Thread-156893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:16:50.170 [DEBUG] [Thread-156893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:16:50.189 [INFO] [Thread-156893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:16:50.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:16:50.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:16:51.157 [DEBUG] [Thread-156893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:16:51.157 [DEBUG] [Thread-156893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:16:51.205 [DEBUG] [Thread-156893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:16:51.205 [DEBUG] [Thread-156893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:16:51.214 [DEBUG] [Thread-156893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:16:51.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:16:51.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:16:51.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:16:51.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:16:51.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:16:51.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:16:51.247 [DEBUG] [Thread-156893] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:16:51.955 [DEBUG] [Thread-156895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:16:54.183 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:16:54.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:17:01.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:17:01.241 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:17:01.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:17:01.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 16, 50), 13.12, 40.64, 0.0, 17.29, 13.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:17:01.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:16:50
2025-09-29T13:17:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:17:02.123 [DEBUG] [Thread-156896] [transport.py] [_log()] starting thread (client mode): 0x2b969ab0
2025-09-29T13:17:02.123 [DEBUG] [Thread-156896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:02.143 [DEBUG] [Thread-156896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:17:02.143 [INFO] [Thread-156896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:17:02.146 [DEBUG] [Thread-156896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:02.146 [DEBUG] [Thread-156896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:17:02.146 [DEBUG] [Thread-156896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:02.146 [DEBUG] [Thread-156896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:02.146 [DEBUG] [Thread-156896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] Compression: none
2025-09-29T13:17:02.147 [DEBUG] [Thread-156896] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:02.162 [DEBUG] [Thread-156896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:02.163 [DEBUG] [Thread-156896] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:02.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:17:02.164 [DEBUG] [Thread-156896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:17:02.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:02.166 [DEBUG] [Thread-156896] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:02.166 [DEBUG] [Thread-156896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:02.166 [DEBUG] [Thread-156896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:02.166 [DEBUG] [Thread-156896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:17:02.166 [DEBUG] [Thread-156896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:02.184 [INFO] [Thread-156896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:02.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:02.796 [DEBUG] [Thread-156896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:02.796 [DEBUG] [Thread-156896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:02.796 [DEBUG] [Thread-156896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:17:02.837 [DEBUG] [Thread-156896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:02.838 [DEBUG] [Thread-156896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:02.841 [DEBUG] [Thread-156896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:02.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:02.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:17:02.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:17:02.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:17:02.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:02.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:17:02.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:02.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:02.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:17:02.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.469861 -999.00  +14.30  11.82     45   +2.60 1 1 1 1 1   888    0 13.68 83.74 ----- 11.3 11.8 189.4 18.6 23.0 -26.8 21.5 -29.0 22.7 -26.2 24.1 -28.6
2025-09-29T13:17:02.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:17:02.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:17:02.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.469861
2025-09-29T13:17:02.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:17:02.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:17:02.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:17:02.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:17:02.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:17:02.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:16:50', tmtdew=13.12, humidity=40.64, cloud=0.0, wind=17.29, temperature=13.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:16:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:17:02.862 [DEBUG] [Thread-156896] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:02.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:17:02.961 [DEBUG] [Thread-156899] [transport.py] [_log()] starting thread (client mode): 0x2e38c730
2025-09-29T13:17:02.961 [DEBUG] [Thread-156899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:02.976 [DEBUG] [Thread-156899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:17:02.976 [INFO] [Thread-156899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:17:02.983 [DEBUG] [Thread-156899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:02.984 [DEBUG] [Thread-156899] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:02.985 [DEBUG] [Thread-156899] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:02.985 [DEBUG] [Thread-156899] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:02.985 [DEBUG] [Thread-156899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:02.985 [DEBUG] [Thread-156899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:02.985 [DEBUG] [Thread-156899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:02.985 [DEBUG] [Thread-156899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:02.985 [DEBUG] [Thread-156899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:02.985 [DEBUG] [Thread-156899] [transport.py] [_log()] Compression: none
2025-09-29T13:17:02.986 [DEBUG] [Thread-156899] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:03.041 [DEBUG] [Thread-156899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:03.041 [DEBUG] [Thread-156899] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:03.042 [DEBUG] [Thread-156899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:17:03.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:17:03.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:03.096 [DEBUG] [Thread-156899] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:03.097 [DEBUG] [Thread-156899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:03.097 [DEBUG] [Thread-156899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:03.097 [DEBUG] [Thread-156899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:17:03.097 [DEBUG] [Thread-156899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:03.121 [INFO] [Thread-156899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:03.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:17:03.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:04.083 [DEBUG] [Thread-156899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:04.083 [DEBUG] [Thread-156899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:04.130 [DEBUG] [Thread-156899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:04.130 [DEBUG] [Thread-156899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:04.139 [DEBUG] [Thread-156899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:04.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:04.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:17:04.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:17:04.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:04.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:04.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:04.173 [DEBUG] [Thread-156899] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:06.984 [DEBUG] [Thread-156901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:17:14.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:17:14.176 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:17:14.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:17:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 16, 50), 13.12, 40.64, 0.0, 17.29, 13.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:17:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:16:50
2025-09-29T13:17:14.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:17:15.039 [DEBUG] [Thread-156902] [transport.py] [_log()] starting thread (client mode): 0x2b96d4b0
2025-09-29T13:17:15.039 [DEBUG] [Thread-156902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:15.060 [DEBUG] [Thread-156902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:17:15.060 [INFO] [Thread-156902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:15.063 [DEBUG] [Thread-156902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] Compression: none
2025-09-29T13:17:15.064 [DEBUG] [Thread-156902] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:15.082 [DEBUG] [Thread-156902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:15.083 [DEBUG] [Thread-156902] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:15.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:17:15.084 [DEBUG] [Thread-156902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:17:15.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:15.086 [DEBUG] [Thread-156902] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:15.086 [DEBUG] [Thread-156902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:15.087 [DEBUG] [Thread-156902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:15.087 [DEBUG] [Thread-156902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:17:15.087 [DEBUG] [Thread-156902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:15.113 [INFO] [Thread-156902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:15.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:15.869 [DEBUG] [Thread-156902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:15.870 [DEBUG] [Thread-156902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:15.870 [DEBUG] [Thread-156902] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:17:15.910 [DEBUG] [Thread-156902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:15.911 [DEBUG] [Thread-156902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:15.914 [DEBUG] [Thread-156902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:15.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:15.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:17:15.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:17:15.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:17:15.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:15.937 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:17:15.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:15.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:15.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:17:15.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.469861 -999.00  +14.30  11.82     45   +2.60 1 1 1 1 1   888    0 13.68 83.74 ----- 11.3 11.8 189.4 18.6 23.0 -26.8 21.5 -29.0 22.7 -26.2 24.1 -28.6
2025-09-29T13:17:15.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:17:15.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:17:15.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.469861
2025-09-29T13:17:15.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:17:15.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:17:15.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:17:15.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:17:15.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:17:15.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:16:50', tmtdew=13.12, humidity=40.64, cloud=0.0, wind=17.29, temperature=13.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:16:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:17:15.940 [DEBUG] [Thread-156902] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:16.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:17:16.034 [DEBUG] [Thread-156905] [transport.py] [_log()] starting thread (client mode): 0x2e38ddb0
2025-09-29T13:17:16.034 [DEBUG] [Thread-156905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:16.048 [DEBUG] [Thread-156905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:17:16.048 [INFO] [Thread-156905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:17:16.056 [DEBUG] [Thread-156905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:16.056 [DEBUG] [Thread-156905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] Compression: none
2025-09-29T13:17:16.057 [DEBUG] [Thread-156905] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:16.116 [DEBUG] [Thread-156905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:16.116 [DEBUG] [Thread-156905] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:16.117 [DEBUG] [Thread-156905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:17:16.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:17:16.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:16.172 [DEBUG] [Thread-156905] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:16.172 [DEBUG] [Thread-156905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:16.173 [DEBUG] [Thread-156905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:16.173 [DEBUG] [Thread-156905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:17:16.173 [DEBUG] [Thread-156905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:16.191 [INFO] [Thread-156905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:16.192 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:17:16.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:17.150 [DEBUG] [Thread-156905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:17.150 [DEBUG] [Thread-156905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:17.198 [DEBUG] [Thread-156905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:17.198 [DEBUG] [Thread-156905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:17.207 [DEBUG] [Thread-156905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:17.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:17.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:17:17.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:17:17.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:17.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:17.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:17.242 [DEBUG] [Thread-156905] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:22.030 [DEBUG] [Thread-156907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:17:27.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:17:27.245 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:17:27.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:17:27.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 17, 22), 13.21, 40.39, 0.0, 14.86, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:17:27.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:17:22
2025-09-29T13:17:27.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:17:28.109 [DEBUG] [Thread-156908] [transport.py] [_log()] starting thread (client mode): 0x2e3c2cb0
2025-09-29T13:17:28.110 [DEBUG] [Thread-156908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:28.130 [DEBUG] [Thread-156908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:17:28.130 [INFO] [Thread-156908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:28.133 [DEBUG] [Thread-156908] [transport.py] [_log()] Compression: none
2025-09-29T13:17:28.134 [DEBUG] [Thread-156908] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:28.151 [DEBUG] [Thread-156908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:28.151 [DEBUG] [Thread-156908] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:28.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:17:28.152 [DEBUG] [Thread-156908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:17:28.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:28.153 [DEBUG] [Thread-156908] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:28.154 [DEBUG] [Thread-156908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:28.154 [DEBUG] [Thread-156908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:28.154 [DEBUG] [Thread-156908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:17:28.154 [DEBUG] [Thread-156908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:28.168 [INFO] [Thread-156908] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:28.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:28.891 [DEBUG] [Thread-156908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:28.891 [DEBUG] [Thread-156908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:28.891 [DEBUG] [Thread-156908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:17:28.932 [DEBUG] [Thread-156908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:28.932 [DEBUG] [Thread-156908] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:28.936 [DEBUG] [Thread-156908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:28.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:28.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:17:28.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:17:28.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:17:28.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:28.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:17:28.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:28.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:28.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:17:28.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.469861 -999.00  +14.30  11.82     45   +2.60 1 1 1 1 1   888    0 13.68 83.74 ----- 11.3 11.8 189.4 18.6 23.0 -26.8 21.5 -29.0 22.7 -26.2 24.1 -28.6
2025-09-29T13:17:28.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:17:28.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:17:28.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.469861
2025-09-29T13:17:28.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:17:28.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:17:28.959 [DEBUG] [Thread-156908] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:28.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:17:28.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:17:28.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:17:28.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:17:22', tmtdew=13.21, humidity=40.39, cloud=0.0, wind=14.86, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:16:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:17:29.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:17:29.053 [DEBUG] [Thread-156911] [transport.py] [_log()] starting thread (client mode): 0x2e3c2620
2025-09-29T13:17:29.053 [DEBUG] [Thread-156911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:29.068 [DEBUG] [Thread-156911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:17:29.068 [INFO] [Thread-156911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:17:29.075 [DEBUG] [Thread-156911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:29.075 [DEBUG] [Thread-156911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] Compression: none
2025-09-29T13:17:29.076 [DEBUG] [Thread-156911] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:29.131 [DEBUG] [Thread-156911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:29.132 [DEBUG] [Thread-156911] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:29.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:17:29.133 [DEBUG] [Thread-156911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:17:29.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:29.188 [DEBUG] [Thread-156911] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:29.188 [DEBUG] [Thread-156911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:29.188 [DEBUG] [Thread-156911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:29.189 [DEBUG] [Thread-156911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:17:29.189 [DEBUG] [Thread-156911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:29.210 [INFO] [Thread-156911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:29.210 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:17:29.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:30.121 [DEBUG] [Thread-156911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:30.121 [DEBUG] [Thread-156911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:30.170 [DEBUG] [Thread-156911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:30.170 [DEBUG] [Thread-156911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:30.178 [DEBUG] [Thread-156911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:30.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:30.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:17:30.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:17:30.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:30.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:30.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:30.211 [DEBUG] [Thread-156911] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:37.059 [DEBUG] [Thread-156913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:17:40.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:17:40.214 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:17:40.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:17:40.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 17, 22), 13.21, 40.39, 0.0, 14.86, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:17:40.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:17:22
2025-09-29T13:17:40.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:17:41.065 [DEBUG] [Thread-156914] [transport.py] [_log()] starting thread (client mode): 0x2e38f130
2025-09-29T13:17:41.065 [DEBUG] [Thread-156914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:41.085 [DEBUG] [Thread-156914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:17:41.085 [INFO] [Thread-156914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:17:41.088 [DEBUG] [Thread-156914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:41.088 [DEBUG] [Thread-156914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:17:41.088 [DEBUG] [Thread-156914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:41.088 [DEBUG] [Thread-156914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:41.089 [DEBUG] [Thread-156914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:41.090 [DEBUG] [Thread-156914] [transport.py] [_log()] Compression: none
2025-09-29T13:17:41.090 [DEBUG] [Thread-156914] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:41.108 [DEBUG] [Thread-156914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:41.108 [DEBUG] [Thread-156914] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:41.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:17:41.109 [DEBUG] [Thread-156914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:17:41.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:41.111 [DEBUG] [Thread-156914] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:41.112 [DEBUG] [Thread-156914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:41.112 [DEBUG] [Thread-156914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:41.112 [DEBUG] [Thread-156914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:17:41.112 [DEBUG] [Thread-156914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:41.130 [INFO] [Thread-156914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:41.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:41.506 [DEBUG] [Thread-156916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:17:41.736 [DEBUG] [Thread-156914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:41.737 [DEBUG] [Thread-156914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:41.737 [DEBUG] [Thread-156914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:17:41.777 [DEBUG] [Thread-156914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:41.778 [DEBUG] [Thread-156914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:41.780 [DEBUG] [Thread-156914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:41.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:41.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:17:41.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:17:41.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:17:41.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:41.804 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:17:41.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:41.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:41.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:17:41.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.470208 -999.00  +14.50  15.19     44   +2.60 1 1 1 1 1   888    0 13.60 79.10 ----- 12.5 15.2 168.6 21.7 23.0 -28.2 21.4 -28.5 22.6 -27.9 23.9 -30.0
2025-09-29T13:17:41.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:17:41.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:17:41.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.470208
2025-09-29T13:17:41.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:17:41.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:17:41.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:17:41.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:17:41.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:17:41.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:17:22', tmtdew=13.21, humidity=40.39, cloud=0.0, wind=14.86, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:17:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:17:41.807 [DEBUG] [Thread-156914] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:41.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:17:41.903 [DEBUG] [Thread-156918] [transport.py] [_log()] starting thread (client mode): 0x2b9c8e50
2025-09-29T13:17:41.903 [DEBUG] [Thread-156918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:41.918 [DEBUG] [Thread-156918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:17:41.919 [INFO] [Thread-156918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:17:41.926 [DEBUG] [Thread-156918] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:41.926 [DEBUG] [Thread-156918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:17:41.926 [DEBUG] [Thread-156918] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:41.926 [DEBUG] [Thread-156918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] Compression: none
2025-09-29T13:17:41.927 [DEBUG] [Thread-156918] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:41.983 [DEBUG] [Thread-156918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:41.984 [DEBUG] [Thread-156918] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:41.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:17:41.985 [DEBUG] [Thread-156918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:17:41.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:42.040 [DEBUG] [Thread-156918] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:42.040 [DEBUG] [Thread-156918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:42.041 [DEBUG] [Thread-156918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:42.041 [DEBUG] [Thread-156918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:17:42.041 [DEBUG] [Thread-156918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:42.059 [INFO] [Thread-156918] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:42.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:17:42.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:43.000 [DEBUG] [Thread-156918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:43.000 [DEBUG] [Thread-156918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:43.048 [DEBUG] [Thread-156918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:43.048 [DEBUG] [Thread-156918] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:43.057 [DEBUG] [Thread-156918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:43.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:43.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:17:43.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:17:43.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:43.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:43.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:43.092 [DEBUG] [Thread-156918] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:52.110 [DEBUG] [Thread-156920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:17:53.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:17:53.094 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:17:53.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:17:53.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 17, 22), 13.21, 40.39, 0.0, 14.86, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:17:53.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:17:22
2025-09-29T13:17:53.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:17:53.962 [DEBUG] [Thread-156921] [transport.py] [_log()] starting thread (client mode): 0x2b96cdc0
2025-09-29T13:17:53.962 [DEBUG] [Thread-156921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:53.982 [DEBUG] [Thread-156921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:17:53.982 [INFO] [Thread-156921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:53.986 [DEBUG] [Thread-156921] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:53.987 [DEBUG] [Thread-156921] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:53.987 [DEBUG] [Thread-156921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:53.987 [DEBUG] [Thread-156921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:53.987 [DEBUG] [Thread-156921] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:53.987 [DEBUG] [Thread-156921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:53.987 [DEBUG] [Thread-156921] [transport.py] [_log()] Compression: none
2025-09-29T13:17:53.987 [DEBUG] [Thread-156921] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:54.005 [DEBUG] [Thread-156921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:54.006 [DEBUG] [Thread-156921] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:54.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:17:54.007 [DEBUG] [Thread-156921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:17:54.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:54.009 [DEBUG] [Thread-156921] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:54.010 [DEBUG] [Thread-156921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:54.010 [DEBUG] [Thread-156921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:54.010 [DEBUG] [Thread-156921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:17:54.010 [DEBUG] [Thread-156921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:54.033 [INFO] [Thread-156921] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:54.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:54.324 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:17:54.325 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:17:54.779 [DEBUG] [Thread-156921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:54.779 [DEBUG] [Thread-156921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:54.780 [DEBUG] [Thread-156921] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:17:54.821 [DEBUG] [Thread-156921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:54.821 [DEBUG] [Thread-156921] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:54.823 [DEBUG] [Thread-156921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:54.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:54.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:17:54.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:17:54.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:17:54.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:54.843 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:17:54.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:54.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.470208 -999.00  +14.50  15.19     44   +2.60 1 1 1 1 1   888    0 13.60 79.10 ----- 12.5 15.2 168.6 21.7 23.0 -28.2 21.4 -28.5 22.6 -27.9 23.9 -30.0
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.470208
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:17:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:17:22', tmtdew=13.21, humidity=40.39, cloud=0.0, wind=14.86, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:17:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:17:54.844 [DEBUG] [Thread-156921] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:17:54.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:17:54.928 [DEBUG] [Thread-156924] [transport.py] [_log()] starting thread (client mode): 0x2b9d41f0
2025-09-29T13:17:54.929 [DEBUG] [Thread-156924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:17:54.944 [DEBUG] [Thread-156924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:17:54.944 [INFO] [Thread-156924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] client lang: <none>
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] server lang: <none>
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] kex follows: False
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:17:54.951 [DEBUG] [Thread-156924] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:17:54.952 [DEBUG] [Thread-156924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:17:54.952 [DEBUG] [Thread-156924] [transport.py] [_log()] Compression: none
2025-09-29T13:17:54.952 [DEBUG] [Thread-156924] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:17:55.007 [DEBUG] [Thread-156924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:17:55.007 [DEBUG] [Thread-156924] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:17:55.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:17:55.008 [DEBUG] [Thread-156924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:17:55.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:17:55.064 [DEBUG] [Thread-156924] [transport.py] [_log()] userauth is OK
2025-09-29T13:17:55.064 [DEBUG] [Thread-156924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:17:55.064 [DEBUG] [Thread-156924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:17:55.064 [DEBUG] [Thread-156924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:17:55.064 [DEBUG] [Thread-156924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:17:55.079 [INFO] [Thread-156924] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:17:55.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:17:55.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:17:56.015 [DEBUG] [Thread-156924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:17:56.015 [DEBUG] [Thread-156924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:17:56.063 [DEBUG] [Thread-156924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:17:56.063 [DEBUG] [Thread-156924] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:17:56.071 [DEBUG] [Thread-156924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:17:56.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:17:56.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:17:56.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:17:56.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:17:56.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:17:56.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:17:56.103 [DEBUG] [Thread-156924] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:06.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:18:06.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:18:06.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:18:06.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 17, 54), 13.46, 39.74, 0.0, 14.43, 13.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:18:06.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:17:54
2025-09-29T13:18:06.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:18:06.964 [DEBUG] [Thread-156926] [transport.py] [_log()] starting thread (client mode): 0x2b9d4d30
2025-09-29T13:18:06.964 [DEBUG] [Thread-156926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:06.983 [DEBUG] [Thread-156926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:18:06.983 [INFO] [Thread-156926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] Compression: none
2025-09-29T13:18:06.986 [DEBUG] [Thread-156926] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:06.995 [DEBUG] [Thread-156926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:06.995 [DEBUG] [Thread-156926] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:06.996 [DEBUG] [Thread-156926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:18:06.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:18:06.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:06.997 [DEBUG] [Thread-156926] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:06.997 [DEBUG] [Thread-156926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:06.998 [DEBUG] [Thread-156926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:06.998 [DEBUG] [Thread-156926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:18:06.998 [DEBUG] [Thread-156926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:07.032 [INFO] [Thread-156926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:07.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:07.142 [DEBUG] [Thread-156928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:18:07.674 [DEBUG] [Thread-156926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:07.674 [DEBUG] [Thread-156926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:07.675 [DEBUG] [Thread-156926] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:18:07.715 [DEBUG] [Thread-156926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:07.715 [DEBUG] [Thread-156926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:07.718 [DEBUG] [Thread-156926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:07.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:07.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:18:07.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:18:07.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:18:07.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:07.741 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:18:07.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:07.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:18:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.470556 -999.00  +14.40  14.13     43   +2.00 1 1 1 1 1   888    0 13.48 77.05 ----- 12.9 14.1 173.4 20.8 22.9 -27.0 21.4 -27.0 22.6 -27.1 24.0 -27.9
2025-09-29T13:18:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:18:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:18:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.470556
2025-09-29T13:18:07.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:18:07.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:18:07.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:18:07.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:18:07.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:18:07.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:17:54', tmtdew=13.46, humidity=39.74, cloud=0.0, wind=14.43, temperature=13.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:17:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:18:07.744 [DEBUG] [Thread-156926] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:07.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:18:07.842 [DEBUG] [Thread-156930] [transport.py] [_log()] starting thread (client mode): 0x2b9d7fa0
2025-09-29T13:18:07.842 [DEBUG] [Thread-156930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:07.856 [DEBUG] [Thread-156930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:18:07.856 [INFO] [Thread-156930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] Compression: none
2025-09-29T13:18:07.864 [DEBUG] [Thread-156930] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:07.922 [DEBUG] [Thread-156930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:07.925 [DEBUG] [Thread-156930] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:07.926 [DEBUG] [Thread-156930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:18:07.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:18:07.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:07.980 [DEBUG] [Thread-156930] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:07.980 [DEBUG] [Thread-156930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:07.980 [DEBUG] [Thread-156930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:07.981 [DEBUG] [Thread-156930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:18:07.981 [DEBUG] [Thread-156930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:08.002 [INFO] [Thread-156930] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:08.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:18:08.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:08.975 [DEBUG] [Thread-156930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:08.976 [DEBUG] [Thread-156930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:09.023 [DEBUG] [Thread-156930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:09.023 [DEBUG] [Thread-156930] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:09.032 [DEBUG] [Thread-156930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:09.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:09.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:18:09.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:18:09.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:09.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:09.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:09.066 [DEBUG] [Thread-156930] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:19.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:18:19.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:18:19.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:18:19.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 17, 54), 13.46, 39.74, 0.0, 14.43, 13.96, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:18:19.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:17:54
2025-09-29T13:18:19.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:18:19.933 [DEBUG] [Thread-156932] [transport.py] [_log()] starting thread (client mode): 0x2b96d4b0
2025-09-29T13:18:19.933 [DEBUG] [Thread-156932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:19.953 [DEBUG] [Thread-156932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:18:19.953 [INFO] [Thread-156932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:18:19.956 [DEBUG] [Thread-156932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:19.956 [DEBUG] [Thread-156932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:19.957 [DEBUG] [Thread-156932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:19.958 [DEBUG] [Thread-156932] [transport.py] [_log()] Compression: none
2025-09-29T13:18:19.958 [DEBUG] [Thread-156932] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:19.976 [DEBUG] [Thread-156932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:19.976 [DEBUG] [Thread-156932] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:19.977 [DEBUG] [Thread-156932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:18:19.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:18:19.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:19.980 [DEBUG] [Thread-156932] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:19.980 [DEBUG] [Thread-156932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:19.980 [DEBUG] [Thread-156932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:19.981 [DEBUG] [Thread-156932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:18:19.981 [DEBUG] [Thread-156932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:20.004 [INFO] [Thread-156932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:20.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:20.788 [DEBUG] [Thread-156932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:20.789 [DEBUG] [Thread-156932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:20.789 [DEBUG] [Thread-156932] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:18:20.829 [DEBUG] [Thread-156932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:20.829 [DEBUG] [Thread-156932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:20.832 [DEBUG] [Thread-156932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:20.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:20.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:18:20.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:18:20.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:18:20.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:20.857 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:18:20.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:20.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:20.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:18:20.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.470556 -999.00  +14.40  14.13     43   +2.00 1 1 1 1 1   888    0 13.48 77.05 ----- 12.9 14.1 173.4 20.8 22.9 -27.0 21.4 -27.0 22.6 -27.1 24.0 -27.9
2025-09-29T13:18:20.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:18:20.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:18:20.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.470556
2025-09-29T13:18:20.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:18:20.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:18:20.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:18:20.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:18:20.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:18:20.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:17:54', tmtdew=13.46, humidity=39.74, cloud=0.0, wind=14.43, temperature=13.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:17:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:18:20.860 [DEBUG] [Thread-156932] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:20.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:18:20.953 [DEBUG] [Thread-156935] [transport.py] [_log()] starting thread (client mode): 0x2b9d53c0
2025-09-29T13:18:20.954 [DEBUG] [Thread-156935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:20.968 [DEBUG] [Thread-156935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:18:20.968 [INFO] [Thread-156935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:18:20.976 [DEBUG] [Thread-156935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:20.976 [DEBUG] [Thread-156935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] Compression: none
2025-09-29T13:18:20.977 [DEBUG] [Thread-156935] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:21.032 [DEBUG] [Thread-156935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:21.032 [DEBUG] [Thread-156935] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:21.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:18:21.033 [DEBUG] [Thread-156935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:18:21.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:21.088 [DEBUG] [Thread-156935] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:21.088 [DEBUG] [Thread-156935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:21.089 [DEBUG] [Thread-156935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:21.089 [DEBUG] [Thread-156935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:18:21.089 [DEBUG] [Thread-156935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:21.111 [INFO] [Thread-156935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:21.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:18:21.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:22.049 [DEBUG] [Thread-156935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:22.049 [DEBUG] [Thread-156935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:22.097 [DEBUG] [Thread-156935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:22.097 [DEBUG] [Thread-156935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:22.106 [DEBUG] [Thread-156935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:22.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:22.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:18:22.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:18:22.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:22.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:22.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:22.141 [DEBUG] [Thread-156935] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:22.172 [DEBUG] [Thread-156937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:18:32.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:18:32.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:18:32.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:18:32.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 18, 26), 13.36, 39.99, 0.0, 15.26, 13.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:18:32.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:18:26
2025-09-29T13:18:32.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:18:33.007 [DEBUG] [Thread-156938] [transport.py] [_log()] starting thread (client mode): 0x2b9ca5c0
2025-09-29T13:18:33.007 [DEBUG] [Thread-156938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:33.026 [DEBUG] [Thread-156938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:18:33.026 [INFO] [Thread-156938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:18:33.029 [DEBUG] [Thread-156938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] Compression: none
2025-09-29T13:18:33.030 [DEBUG] [Thread-156938] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:33.045 [DEBUG] [Thread-156938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:33.045 [DEBUG] [Thread-156938] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:33.045 [DEBUG] [Thread-156938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:18:33.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:18:33.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:33.046 [DEBUG] [Thread-156938] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:33.046 [DEBUG] [Thread-156938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:33.046 [DEBUG] [Thread-156938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:33.046 [DEBUG] [Thread-156938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:18:33.046 [DEBUG] [Thread-156938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:33.055 [INFO] [Thread-156938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:33.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:33.852 [DEBUG] [Thread-156938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:33.852 [DEBUG] [Thread-156938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:33.853 [DEBUG] [Thread-156938] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:18:33.894 [DEBUG] [Thread-156938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:33.894 [DEBUG] [Thread-156938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:33.897 [DEBUG] [Thread-156938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:33.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:33.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:18:33.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:18:33.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:18:33.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:33.922 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:18:33.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:33.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:33.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:18:33.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.470556 -999.00  +14.40  14.13     43   +2.00 1 1 1 1 1   888    0 13.48 77.05 ----- 12.9 14.1 173.4 20.8 22.9 -27.0 21.4 -27.0 22.6 -27.1 24.0 -27.9
2025-09-29T13:18:33.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:18:33.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:18:33.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.470556
2025-09-29T13:18:33.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:18:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:18:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:18:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:18:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:18:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:18:26', tmtdew=13.36, humidity=39.99, cloud=0.0, wind=15.26, temperature=13.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:17:36.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:18:33.924 [DEBUG] [Thread-156938] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:34.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:18:34.018 [DEBUG] [Thread-156941] [transport.py] [_log()] starting thread (client mode): 0x2b91ec80
2025-09-29T13:18:34.018 [DEBUG] [Thread-156941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:34.033 [DEBUG] [Thread-156941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:18:34.033 [INFO] [Thread-156941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:18:34.041 [DEBUG] [Thread-156941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:34.041 [DEBUG] [Thread-156941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:18:34.041 [DEBUG] [Thread-156941] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:34.041 [DEBUG] [Thread-156941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:34.041 [DEBUG] [Thread-156941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:34.041 [DEBUG] [Thread-156941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:34.041 [DEBUG] [Thread-156941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:34.041 [DEBUG] [Thread-156941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:34.042 [DEBUG] [Thread-156941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:34.042 [DEBUG] [Thread-156941] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:34.042 [DEBUG] [Thread-156941] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:34.042 [DEBUG] [Thread-156941] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:34.042 [DEBUG] [Thread-156941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:34.042 [DEBUG] [Thread-156941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:34.042 [DEBUG] [Thread-156941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:34.042 [DEBUG] [Thread-156941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:34.043 [DEBUG] [Thread-156941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:34.043 [DEBUG] [Thread-156941] [transport.py] [_log()] Compression: none
2025-09-29T13:18:34.043 [DEBUG] [Thread-156941] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:34.100 [DEBUG] [Thread-156941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:34.101 [DEBUG] [Thread-156941] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:34.101 [DEBUG] [Thread-156941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:18:34.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:18:34.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:34.156 [DEBUG] [Thread-156941] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:34.157 [DEBUG] [Thread-156941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:34.157 [DEBUG] [Thread-156941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:34.157 [DEBUG] [Thread-156941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:18:34.157 [DEBUG] [Thread-156941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:34.175 [INFO] [Thread-156941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:34.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:18:34.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:35.139 [DEBUG] [Thread-156941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:35.140 [DEBUG] [Thread-156941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:35.187 [DEBUG] [Thread-156941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:35.187 [DEBUG] [Thread-156941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:35.196 [DEBUG] [Thread-156941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:35.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:35.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:18:35.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:18:35.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:35.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:35.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:35.233 [DEBUG] [Thread-156941] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:37.219 [DEBUG] [Thread-156943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:18:41.533 [DEBUG] [Thread-156944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:18:45.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:18:45.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:18:45.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:18:45.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 18, 26), 13.36, 39.99, 0.0, 15.26, 13.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:18:45.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:18:26
2025-09-29T13:18:45.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:18:46.097 [DEBUG] [Thread-156945] [transport.py] [_log()] starting thread (client mode): 0x2b9c90c0
2025-09-29T13:18:46.097 [DEBUG] [Thread-156945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:46.116 [DEBUG] [Thread-156945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:18:46.116 [INFO] [Thread-156945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:18:46.119 [DEBUG] [Thread-156945] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:46.119 [DEBUG] [Thread-156945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:18:46.119 [DEBUG] [Thread-156945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:46.119 [DEBUG] [Thread-156945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:46.120 [DEBUG] [Thread-156945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:46.121 [DEBUG] [Thread-156945] [transport.py] [_log()] Compression: none
2025-09-29T13:18:46.121 [DEBUG] [Thread-156945] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:46.139 [DEBUG] [Thread-156945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:46.139 [DEBUG] [Thread-156945] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:46.140 [DEBUG] [Thread-156945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:18:46.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:18:46.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:46.142 [DEBUG] [Thread-156945] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:46.142 [DEBUG] [Thread-156945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:46.142 [DEBUG] [Thread-156945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:46.142 [DEBUG] [Thread-156945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:18:46.142 [DEBUG] [Thread-156945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:46.178 [INFO] [Thread-156945] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:46.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:46.816 [DEBUG] [Thread-156945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:46.817 [DEBUG] [Thread-156945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:46.817 [DEBUG] [Thread-156945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:18:46.857 [DEBUG] [Thread-156945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:46.857 [DEBUG] [Thread-156945] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:46.860 [DEBUG] [Thread-156945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:46.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:46.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:18:46.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:18:46.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:18:46.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:46.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:18:46.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:46.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:46.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:18:46.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.470903 -999.00  +14.10   7.47     44   +2.10 1 1 1 1 1   888    0 13.64 79.44 ----- 7.0 7.5 181.2 13.5 23.0 -27.3 21.4 -27.4 22.6 -25.8 24.1 -27.9
2025-09-29T13:18:46.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:18:46.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:18:46.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.470903
2025-09-29T13:18:46.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:18:46.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:18:46.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:18:46.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:18:46.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:18:46.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:18:26', tmtdew=13.36, humidity=39.99, cloud=0.0, wind=15.26, temperature=13.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:18:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:18:46.886 [DEBUG] [Thread-156945] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:46.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:18:46.983 [DEBUG] [Thread-156948] [transport.py] [_log()] starting thread (client mode): 0x2b9ca860
2025-09-29T13:18:46.983 [DEBUG] [Thread-156948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:46.998 [DEBUG] [Thread-156948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:18:46.998 [INFO] [Thread-156948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:18:47.005 [DEBUG] [Thread-156948] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:47.006 [DEBUG] [Thread-156948] [transport.py] [_log()] Compression: none
2025-09-29T13:18:47.007 [DEBUG] [Thread-156948] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:47.064 [DEBUG] [Thread-156948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:47.064 [DEBUG] [Thread-156948] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:47.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:18:47.065 [DEBUG] [Thread-156948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:18:47.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:47.120 [DEBUG] [Thread-156948] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:47.120 [DEBUG] [Thread-156948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:47.120 [DEBUG] [Thread-156948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:47.121 [DEBUG] [Thread-156948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:18:47.121 [DEBUG] [Thread-156948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:47.143 [INFO] [Thread-156948] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:47.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:18:47.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:48.133 [DEBUG] [Thread-156948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:48.134 [DEBUG] [Thread-156948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:48.181 [DEBUG] [Thread-156948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:48.181 [DEBUG] [Thread-156948] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:48.190 [DEBUG] [Thread-156948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:48.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:48.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:18:48.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:18:48.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:48.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:48.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:48.222 [DEBUG] [Thread-156948] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:18:52.260 [DEBUG] [Thread-156950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:18:54.466 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:18:54.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:18:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:18:58.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:18:58.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:18:58.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 18, 26), 13.36, 39.99, 0.0, 15.26, 13.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:18:58.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:18:26
2025-09-29T13:18:58.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:18:59.094 [DEBUG] [Thread-156951] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-29T13:18:59.094 [DEBUG] [Thread-156951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:18:59.114 [DEBUG] [Thread-156951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:18:59.114 [INFO] [Thread-156951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] client lang: <none>
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] server lang: <none>
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] kex follows: False
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] Compression: none
2025-09-29T13:18:59.117 [DEBUG] [Thread-156951] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:18:59.131 [DEBUG] [Thread-156951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:18:59.131 [DEBUG] [Thread-156951] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:18:59.131 [DEBUG] [Thread-156951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:18:59.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:18:59.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:18:59.132 [DEBUG] [Thread-156951] [transport.py] [_log()] userauth is OK
2025-09-29T13:18:59.132 [DEBUG] [Thread-156951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:18:59.132 [DEBUG] [Thread-156951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:18:59.132 [DEBUG] [Thread-156951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:18:59.132 [DEBUG] [Thread-156951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:18:59.146 [INFO] [Thread-156951] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:18:59.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:18:59.903 [DEBUG] [Thread-156951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:18:59.903 [DEBUG] [Thread-156951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:18:59.903 [DEBUG] [Thread-156951] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:18:59.944 [DEBUG] [Thread-156951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:18:59.944 [DEBUG] [Thread-156951] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:18:59.946 [DEBUG] [Thread-156951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:18:59.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:18:59.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:18:59.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:18:59.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:18:59.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:18:59.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:18:59.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.470903 -999.00  +14.10   7.47     44   +2.10 1 1 1 1 1   888    0 13.64 79.44 ----- 7.0 7.5 181.2 13.5 23.0 -27.3 21.4 -27.4 22.6 -25.8 24.1 -27.9
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.470903
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:18:59.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:18:59.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:18:59.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:18:59.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:18:26', tmtdew=13.36, humidity=39.99, cloud=0.0, wind=15.26, temperature=13.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:18:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:18:59.968 [DEBUG] [Thread-156951] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:00.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:19:00.051 [DEBUG] [Thread-156954] [transport.py] [_log()] starting thread (client mode): 0x2e3c1d20
2025-09-29T13:19:00.051 [DEBUG] [Thread-156954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:00.067 [DEBUG] [Thread-156954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:19:00.067 [INFO] [Thread-156954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] Compression: none
2025-09-29T13:19:00.078 [DEBUG] [Thread-156954] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:00.135 [DEBUG] [Thread-156954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:00.135 [DEBUG] [Thread-156954] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:00.135 [DEBUG] [Thread-156954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:19:00.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:19:00.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:00.192 [DEBUG] [Thread-156954] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:00.192 [DEBUG] [Thread-156954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:00.192 [DEBUG] [Thread-156954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:00.192 [DEBUG] [Thread-156954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:19:00.192 [DEBUG] [Thread-156954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:00.206 [INFO] [Thread-156954] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:00.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:19:00.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:01.172 [DEBUG] [Thread-156954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:01.172 [DEBUG] [Thread-156954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:01.220 [DEBUG] [Thread-156954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:01.220 [DEBUG] [Thread-156954] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:01.230 [DEBUG] [Thread-156954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:01.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:01.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:19:01.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:19:01.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:01.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:01.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:01.264 [DEBUG] [Thread-156954] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:07.304 [DEBUG] [Thread-156956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:19:11.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:19:11.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:19:11.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:19:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 18, 58), 13.08, 40.67, 0.0, 10.22, 13.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:19:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:18:58
2025-09-29T13:19:11.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:19:12.117 [DEBUG] [Thread-156957] [transport.py] [_log()] starting thread (client mode): 0x2b9caf80
2025-09-29T13:19:12.118 [DEBUG] [Thread-156957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:12.138 [DEBUG] [Thread-156957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:19:12.138 [INFO] [Thread-156957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:19:12.141 [DEBUG] [Thread-156957] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:12.141 [DEBUG] [Thread-156957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:19:12.141 [DEBUG] [Thread-156957] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:12.141 [DEBUG] [Thread-156957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:12.142 [DEBUG] [Thread-156957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:12.143 [DEBUG] [Thread-156957] [transport.py] [_log()] Compression: none
2025-09-29T13:19:12.143 [DEBUG] [Thread-156957] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:12.152 [DEBUG] [Thread-156957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:12.152 [DEBUG] [Thread-156957] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:12.153 [DEBUG] [Thread-156957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:19:12.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:19:12.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:12.155 [DEBUG] [Thread-156957] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:12.155 [DEBUG] [Thread-156957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:12.155 [DEBUG] [Thread-156957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:12.156 [DEBUG] [Thread-156957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:19:12.156 [DEBUG] [Thread-156957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:12.169 [INFO] [Thread-156957] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:12.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:12.768 [DEBUG] [Thread-156957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:12.768 [DEBUG] [Thread-156957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:12.768 [DEBUG] [Thread-156957] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:19:12.809 [DEBUG] [Thread-156957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:12.809 [DEBUG] [Thread-156957] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:12.811 [DEBUG] [Thread-156957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:12.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:12.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:19:12.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:19:12.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:19:12.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:12.844 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:19:12.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:12.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.471597 -999.00  +14.30   3.67     44   +2.40 1 1 1 1 1   888    0 13.56 70.09 ----- 9.9 3.7 217.2 19.8 23.1 -27.0 21.5 -26.7 22.6 -26.8 24.2 -27.8
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.471597
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:19:12.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:18:58', tmtdew=13.08, humidity=40.67, cloud=0.0, wind=10.22, temperature=13.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:19:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:19:12.845 [DEBUG] [Thread-156957] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:12.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:19:12.929 [DEBUG] [Thread-156960] [transport.py] [_log()] starting thread (client mode): 0x2b91e3e0
2025-09-29T13:19:12.929 [DEBUG] [Thread-156960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:12.946 [DEBUG] [Thread-156960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:19:12.946 [INFO] [Thread-156960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:19:12.956 [DEBUG] [Thread-156960] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:12.957 [DEBUG] [Thread-156960] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:12.958 [DEBUG] [Thread-156960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:12.958 [DEBUG] [Thread-156960] [transport.py] [_log()] Compression: none
2025-09-29T13:19:12.958 [DEBUG] [Thread-156960] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:13.016 [DEBUG] [Thread-156960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:13.016 [DEBUG] [Thread-156960] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:13.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:19:13.017 [DEBUG] [Thread-156960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:19:13.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:13.072 [DEBUG] [Thread-156960] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:13.073 [DEBUG] [Thread-156960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:13.073 [DEBUG] [Thread-156960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:13.073 [DEBUG] [Thread-156960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:19:13.073 [DEBUG] [Thread-156960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:13.092 [INFO] [Thread-156960] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:13.092 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:19:13.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:14.109 [DEBUG] [Thread-156960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:14.110 [DEBUG] [Thread-156960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:14.157 [DEBUG] [Thread-156960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:14.157 [DEBUG] [Thread-156960] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:14.166 [DEBUG] [Thread-156960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:14.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:14.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:19:14.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:19:14.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:14.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:14.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:14.200 [DEBUG] [Thread-156960] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:22.332 [DEBUG] [Thread-156962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:19:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:19:24.203 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:19:24.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:19:24.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 18, 58), 13.08, 40.67, 0.0, 10.22, 13.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:19:24.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:18:58
2025-09-29T13:19:24.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:19:25.058 [DEBUG] [Thread-156963] [transport.py] [_log()] starting thread (client mode): 0x2e3c08e0
2025-09-29T13:19:25.058 [DEBUG] [Thread-156963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:25.078 [DEBUG] [Thread-156963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:19:25.078 [INFO] [Thread-156963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:25.082 [DEBUG] [Thread-156963] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] Compression: none
2025-09-29T13:19:25.083 [DEBUG] [Thread-156963] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:25.099 [DEBUG] [Thread-156963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:25.099 [DEBUG] [Thread-156963] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:25.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:19:25.100 [DEBUG] [Thread-156963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:19:25.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:25.102 [DEBUG] [Thread-156963] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:25.102 [DEBUG] [Thread-156963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:25.102 [DEBUG] [Thread-156963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:25.103 [DEBUG] [Thread-156963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:19:25.103 [DEBUG] [Thread-156963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:25.120 [INFO] [Thread-156963] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:25.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:25.889 [DEBUG] [Thread-156963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:25.889 [DEBUG] [Thread-156963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:25.890 [DEBUG] [Thread-156963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:19:25.930 [DEBUG] [Thread-156963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:25.930 [DEBUG] [Thread-156963] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:25.933 [DEBUG] [Thread-156963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:25.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:25.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:19:25.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:19:25.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:19:25.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:25.956 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:19:25.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:25.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:19:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.471597 -999.00  +14.30   3.67     44   +2.40 1 1 1 1 1   888    0 13.56 70.09 ----- 9.9 3.7 217.2 19.8 23.1 -27.0 21.5 -26.7 22.6 -26.8 24.2 -27.8
2025-09-29T13:19:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:19:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:19:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.471597
2025-09-29T13:19:25.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:19:25.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:19:25.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:19:25.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:19:25.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:19:25.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:18:58', tmtdew=13.08, humidity=40.67, cloud=0.0, wind=10.22, temperature=13.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:19:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:19:25.959 [DEBUG] [Thread-156963] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:26.043 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:19:26.053 [DEBUG] [Thread-156966] [transport.py] [_log()] starting thread (client mode): 0x2b9cb3d0
2025-09-29T13:19:26.053 [DEBUG] [Thread-156966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:26.067 [DEBUG] [Thread-156966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:19:26.068 [INFO] [Thread-156966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:19:26.075 [DEBUG] [Thread-156966] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:26.075 [DEBUG] [Thread-156966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:19:26.075 [DEBUG] [Thread-156966] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:26.075 [DEBUG] [Thread-156966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:26.076 [DEBUG] [Thread-156966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:26.077 [DEBUG] [Thread-156966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:26.077 [DEBUG] [Thread-156966] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:26.077 [DEBUG] [Thread-156966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:26.077 [DEBUG] [Thread-156966] [transport.py] [_log()] Compression: none
2025-09-29T13:19:26.077 [DEBUG] [Thread-156966] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:26.136 [DEBUG] [Thread-156966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:26.137 [DEBUG] [Thread-156966] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:26.137 [DEBUG] [Thread-156966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:19:26.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:19:26.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:26.192 [DEBUG] [Thread-156966] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:26.193 [DEBUG] [Thread-156966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:26.193 [DEBUG] [Thread-156966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:26.193 [DEBUG] [Thread-156966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:19:26.193 [DEBUG] [Thread-156966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:26.213 [INFO] [Thread-156966] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:26.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:19:26.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:27.190 [DEBUG] [Thread-156966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:27.190 [DEBUG] [Thread-156966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:27.238 [DEBUG] [Thread-156966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:27.238 [DEBUG] [Thread-156966] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:27.247 [DEBUG] [Thread-156966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:27.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:27.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:19:27.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:19:27.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:27.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:27.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:27.282 [DEBUG] [Thread-156966] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:37.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:19:37.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:19:37.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:19:37.372 [DEBUG] [Thread-156968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:19:37.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 19, 30), 13.03, 40.83, 0.0, 10.57, 13.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:19:37.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:19:30
2025-09-29T13:19:37.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:19:38.130 [DEBUG] [Thread-156969] [transport.py] [_log()] starting thread (client mode): 0x2b9d4250
2025-09-29T13:19:38.130 [DEBUG] [Thread-156969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:38.149 [DEBUG] [Thread-156969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:19:38.150 [INFO] [Thread-156969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:19:38.151 [DEBUG] [Thread-156969] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:38.151 [DEBUG] [Thread-156969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:19:38.151 [DEBUG] [Thread-156969] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:38.151 [DEBUG] [Thread-156969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:38.151 [DEBUG] [Thread-156969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:38.151 [DEBUG] [Thread-156969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] Compression: none
2025-09-29T13:19:38.152 [DEBUG] [Thread-156969] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:38.169 [DEBUG] [Thread-156969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:38.169 [DEBUG] [Thread-156969] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:38.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:19:38.171 [DEBUG] [Thread-156969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:19:38.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:38.172 [DEBUG] [Thread-156969] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:38.172 [DEBUG] [Thread-156969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:38.172 [DEBUG] [Thread-156969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:38.172 [DEBUG] [Thread-156969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:19:38.173 [DEBUG] [Thread-156969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:38.195 [INFO] [Thread-156969] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:38.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:39.004 [DEBUG] [Thread-156969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:39.005 [DEBUG] [Thread-156969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:39.005 [DEBUG] [Thread-156969] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:19:39.045 [DEBUG] [Thread-156969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:39.045 [DEBUG] [Thread-156969] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:39.047 [DEBUG] [Thread-156969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:39.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:39.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:19:39.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:19:39.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:19:39.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:39.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:19:39.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.471597 -999.00  +14.30   3.67     44   +2.40 1 1 1 1 1   888    0 13.56 70.09 ----- 9.9 3.7 217.2 19.8 23.1 -27.0 21.5 -26.7 22.6 -26.8 24.2 -27.8
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.471597
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:19:39.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:19:30', tmtdew=13.03, humidity=40.83, cloud=0.0, wind=10.57, temperature=13.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:19:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:19:39.066 [DEBUG] [Thread-156969] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:39.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:19:39.151 [DEBUG] [Thread-156972] [transport.py] [_log()] starting thread (client mode): 0x2b9688b0
2025-09-29T13:19:39.151 [DEBUG] [Thread-156972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:39.165 [DEBUG] [Thread-156972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:19:39.165 [INFO] [Thread-156972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:19:39.173 [DEBUG] [Thread-156972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:39.173 [DEBUG] [Thread-156972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:19:39.173 [DEBUG] [Thread-156972] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:39.173 [DEBUG] [Thread-156972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:39.173 [DEBUG] [Thread-156972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:39.173 [DEBUG] [Thread-156972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:39.173 [DEBUG] [Thread-156972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:39.173 [DEBUG] [Thread-156972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] Compression: none
2025-09-29T13:19:39.174 [DEBUG] [Thread-156972] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:39.233 [DEBUG] [Thread-156972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:39.233 [DEBUG] [Thread-156972] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:39.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:19:39.235 [DEBUG] [Thread-156972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:19:39.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:39.289 [DEBUG] [Thread-156972] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:39.289 [DEBUG] [Thread-156972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:39.289 [DEBUG] [Thread-156972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:39.289 [DEBUG] [Thread-156972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:19:39.289 [DEBUG] [Thread-156972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:39.310 [INFO] [Thread-156972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:39.311 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:19:39.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:40.273 [DEBUG] [Thread-156972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:40.273 [DEBUG] [Thread-156972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:40.321 [DEBUG] [Thread-156972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:40.321 [DEBUG] [Thread-156972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:40.330 [DEBUG] [Thread-156972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:40.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:40.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:19:40.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:19:40.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:40.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:40.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:40.365 [DEBUG] [Thread-156972] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:41.604 [DEBUG] [Thread-156974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:19:50.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:19:50.368 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:19:50.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:19:50.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 19, 30), 13.03, 40.83, 0.0, 10.57, 13.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:19:50.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:19:30
2025-09-29T13:19:51.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:19:51.215 [DEBUG] [Thread-156975] [transport.py] [_log()] starting thread (client mode): 0x2e3c3970
2025-09-29T13:19:51.215 [DEBUG] [Thread-156975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:51.234 [DEBUG] [Thread-156975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:19:51.234 [INFO] [Thread-156975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] Compression: none
2025-09-29T13:19:51.236 [DEBUG] [Thread-156975] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:51.252 [DEBUG] [Thread-156975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:51.253 [DEBUG] [Thread-156975] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:51.253 [DEBUG] [Thread-156975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:19:51.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:19:51.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:51.255 [DEBUG] [Thread-156975] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:51.255 [DEBUG] [Thread-156975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:51.256 [DEBUG] [Thread-156975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:51.256 [DEBUG] [Thread-156975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:19:51.256 [DEBUG] [Thread-156975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:51.277 [INFO] [Thread-156975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:51.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:51.882 [DEBUG] [Thread-156975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:51.882 [DEBUG] [Thread-156975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:51.883 [DEBUG] [Thread-156975] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:19:51.923 [DEBUG] [Thread-156975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:51.923 [DEBUG] [Thread-156975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:51.926 [DEBUG] [Thread-156975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:51.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:51.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:19:51.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:19:51.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:19:51.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:51.949 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:19:51.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:51.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:51.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:19:51.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.471945 -999.00  +14.70   6.69     43   +2.60 1 1 1 1 1   888    0 13.45 70.80 ----- 5.4 6.7 219.2 11.5 23.0 -28.2 21.8 -27.0 22.6 -27.1 24.2 -27.9
2025-09-29T13:19:51.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:19:51.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:19:51.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.471945
2025-09-29T13:19:51.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:19:51.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:19:51.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:19:51.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:19:51.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:19:51.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:19:30', tmtdew=13.03, humidity=40.83, cloud=0.0, wind=10.57, temperature=13.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:19:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:19:51.951 [DEBUG] [Thread-156975] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:52.036 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:19:52.045 [DEBUG] [Thread-156978] [transport.py] [_log()] starting thread (client mode): 0x2b9c9210
2025-09-29T13:19:52.045 [DEBUG] [Thread-156978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:19:52.060 [DEBUG] [Thread-156978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:19:52.060 [INFO] [Thread-156978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:19:52.067 [DEBUG] [Thread-156978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:19:52.067 [DEBUG] [Thread-156978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:19:52.067 [DEBUG] [Thread-156978] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] client lang: <none>
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] server lang: <none>
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] kex follows: False
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] Compression: none
2025-09-29T13:19:52.068 [DEBUG] [Thread-156978] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:19:52.125 [DEBUG] [Thread-156978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:19:52.125 [DEBUG] [Thread-156978] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:19:52.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:19:52.126 [DEBUG] [Thread-156978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:19:52.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:19:52.181 [DEBUG] [Thread-156978] [transport.py] [_log()] userauth is OK
2025-09-29T13:19:52.182 [DEBUG] [Thread-156978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:19:52.182 [DEBUG] [Thread-156978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:19:52.182 [DEBUG] [Thread-156978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:19:52.182 [DEBUG] [Thread-156978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:19:52.205 [INFO] [Thread-156978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:19:52.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:19:52.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:19:52.400 [DEBUG] [Thread-156980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:19:53.223 [DEBUG] [Thread-156978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:19:53.223 [DEBUG] [Thread-156978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:19:53.271 [DEBUG] [Thread-156978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:19:53.271 [DEBUG] [Thread-156978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:19:53.279 [DEBUG] [Thread-156978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:19:53.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:19:53.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:19:53.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:19:53.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:19:53.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:19:53.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:19:53.311 [DEBUG] [Thread-156978] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:19:54.608 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:19:54.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:20:03.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:20:03.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:20:03.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:20:03.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 19, 30), 13.03, 40.83, 0.0, 10.57, 13.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:20:03.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:19:30
2025-09-29T13:20:04.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:20:04.224 [DEBUG] [Thread-156981] [transport.py] [_log()] starting thread (client mode): 0x2b96b490
2025-09-29T13:20:04.224 [DEBUG] [Thread-156981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:20:04.245 [DEBUG] [Thread-156981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:20:04.245 [INFO] [Thread-156981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:20:04.248 [DEBUG] [Thread-156981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:20:04.248 [DEBUG] [Thread-156981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:20:04.248 [DEBUG] [Thread-156981] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:20:04.248 [DEBUG] [Thread-156981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:04.248 [DEBUG] [Thread-156981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] client lang: <none>
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] server lang: <none>
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] kex follows: False
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] Compression: none
2025-09-29T13:20:04.249 [DEBUG] [Thread-156981] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:20:04.265 [DEBUG] [Thread-156981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:20:04.265 [DEBUG] [Thread-156981] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:20:04.265 [DEBUG] [Thread-156981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:20:04.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:20:04.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:20:04.266 [DEBUG] [Thread-156981] [transport.py] [_log()] userauth is OK
2025-09-29T13:20:04.266 [DEBUG] [Thread-156981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:20:04.266 [DEBUG] [Thread-156981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:20:04.266 [DEBUG] [Thread-156981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:20:04.266 [DEBUG] [Thread-156981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:20:04.276 [INFO] [Thread-156981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:20:04.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:20:07.451 [DEBUG] [Thread-156983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:20:12.369 [DEBUG] [Thread-156981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:20:12.370 [DEBUG] [Thread-156981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:20:12.370 [DEBUG] [Thread-156981] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:20:12.410 [DEBUG] [Thread-156981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:20:12.410 [DEBUG] [Thread-156981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:20:12.412 [DEBUG] [Thread-156981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:20:12.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:20:12.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:20:12.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:20:12.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:20:12.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:20:12.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:20:12.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:20:12.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:20:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:20:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.471945 -999.00  +14.70   6.69     43   +2.60 1 1 1 1 1   888    0 13.45 70.80 ----- 5.4 6.7 219.2 11.5 23.0 -28.2 21.8 -27.0 22.6 -27.1 24.2 -27.9
2025-09-29T13:20:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:20:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:20:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.471945
2025-09-29T13:20:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:20:12.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:20:12.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:20:12.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:20:12.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:20:12.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:19:30', tmtdew=13.03, humidity=40.83, cloud=0.0, wind=10.57, temperature=13.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:19:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:20:12.522 [DEBUG] [Thread-156981] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:20:12.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:20:12.618 [DEBUG] [Thread-156985] [transport.py] [_log()] starting thread (client mode): 0x2b91f070
2025-09-29T13:20:12.618 [DEBUG] [Thread-156985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:20:12.633 [DEBUG] [Thread-156985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:20:12.633 [INFO] [Thread-156985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] client lang: <none>
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] server lang: <none>
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] kex follows: False
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:20:12.641 [DEBUG] [Thread-156985] [transport.py] [_log()] Compression: none
2025-09-29T13:20:12.642 [DEBUG] [Thread-156985] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:20:12.700 [DEBUG] [Thread-156985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:20:12.701 [DEBUG] [Thread-156985] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:20:12.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:20:12.702 [DEBUG] [Thread-156985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:20:12.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:20:12.756 [DEBUG] [Thread-156985] [transport.py] [_log()] userauth is OK
2025-09-29T13:20:12.757 [DEBUG] [Thread-156985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:20:12.757 [DEBUG] [Thread-156985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:20:12.757 [DEBUG] [Thread-156985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:20:12.757 [DEBUG] [Thread-156985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:20:12.776 [INFO] [Thread-156985] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:20:12.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:20:12.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:20:13.719 [DEBUG] [Thread-156985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:20:13.719 [DEBUG] [Thread-156985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:20:13.767 [DEBUG] [Thread-156985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:20:13.767 [DEBUG] [Thread-156985] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:20:13.775 [DEBUG] [Thread-156985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:20:13.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:20:13.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:20:13.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:20:13.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:20:13.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:20:13.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:20:13.807 [DEBUG] [Thread-156985] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:20:22.481 [DEBUG] [Thread-156987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:20:23.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:20:23.810 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:20:23.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:20:24.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 20, 2), 13.11, 40.6, 0.0, 14.22, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:20:24.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:20:02
2025-09-29T13:20:24.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:20:24.647 [DEBUG] [Thread-156988] [transport.py] [_log()] starting thread (client mode): 0x2b96f100
2025-09-29T13:20:24.647 [DEBUG] [Thread-156988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:20:24.667 [DEBUG] [Thread-156988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:20:24.667 [INFO] [Thread-156988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] client lang: <none>
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] server lang: <none>
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] kex follows: False
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:20:24.671 [DEBUG] [Thread-156988] [transport.py] [_log()] Compression: none
2025-09-29T13:20:24.672 [DEBUG] [Thread-156988] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:20:24.688 [DEBUG] [Thread-156988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:20:24.689 [DEBUG] [Thread-156988] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:20:24.689 [DEBUG] [Thread-156988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:20:24.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:20:24.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:20:24.691 [DEBUG] [Thread-156988] [transport.py] [_log()] userauth is OK
2025-09-29T13:20:24.691 [DEBUG] [Thread-156988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:20:24.692 [DEBUG] [Thread-156988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:20:24.692 [DEBUG] [Thread-156988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:20:24.692 [DEBUG] [Thread-156988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:20:24.715 [INFO] [Thread-156988] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:20:24.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:20:25.345 [DEBUG] [Thread-156988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:20:25.345 [DEBUG] [Thread-156988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:20:25.346 [DEBUG] [Thread-156988] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:20:25.386 [DEBUG] [Thread-156988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:20:25.386 [DEBUG] [Thread-156988] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:20:25.388 [DEBUG] [Thread-156988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:20:25.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:20:25.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:20:25.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:20:25.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:20:25.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:20:25.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:20:25.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:20:25.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:20:25.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:20:25.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.472291 -999.00  +15.10  10.39     43   +2.70 1 1 1 1 1   888    0 13.42 66.81 ----- 12.1 10.4 178.2 11.7 23.3 -26.9 21.8 -27.5 22.8 -25.8 24.2 -27.1
2025-09-29T13:20:25.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:20:25.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:20:25.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.472291
2025-09-29T13:20:25.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:20:25.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:20:25.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:20:25.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:20:25.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:20:25.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:20:02', tmtdew=13.11, humidity=40.6, cloud=0.0, wind=14.22, temperature=13.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:20:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:20:25.407 [DEBUG] [Thread-156988] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:20:25.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:20:25.510 [DEBUG] [Thread-156991] [transport.py] [_log()] starting thread (client mode): 0x2e38ee00
2025-09-29T13:20:25.510 [DEBUG] [Thread-156991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:20:25.525 [DEBUG] [Thread-156991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:20:25.525 [INFO] [Thread-156991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:20:25.532 [DEBUG] [Thread-156991] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] client lang: <none>
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] server lang: <none>
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] kex follows: False
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] Compression: none
2025-09-29T13:20:25.533 [DEBUG] [Thread-156991] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:20:25.593 [DEBUG] [Thread-156991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:20:25.594 [DEBUG] [Thread-156991] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:20:25.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:20:25.594 [DEBUG] [Thread-156991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:20:25.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:20:25.649 [DEBUG] [Thread-156991] [transport.py] [_log()] userauth is OK
2025-09-29T13:20:25.649 [DEBUG] [Thread-156991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:20:25.649 [DEBUG] [Thread-156991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:20:25.649 [DEBUG] [Thread-156991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:20:25.649 [DEBUG] [Thread-156991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:20:25.669 [INFO] [Thread-156991] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:20:25.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:20:25.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:20:26.734 [DEBUG] [Thread-156991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:20:26.734 [DEBUG] [Thread-156991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:20:26.782 [DEBUG] [Thread-156991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:20:26.782 [DEBUG] [Thread-156991] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:20:26.792 [DEBUG] [Thread-156991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:20:26.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:20:26.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:20:26.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:20:26.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:20:26.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:20:26.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:20:26.827 [DEBUG] [Thread-156991] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:20:36.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:20:36.829 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:20:36.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:20:37.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 20, 34), 13.29, 40.05, 0.0, 16.57, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:20:37.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:20:34
2025-09-29T13:20:37.508 [DEBUG] [Thread-156993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:20:37.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:20:37.709 [DEBUG] [Thread-156994] [transport.py] [_log()] starting thread (client mode): 0x2b96cdc0
2025-09-29T13:20:37.710 [DEBUG] [Thread-156994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:20:37.730 [DEBUG] [Thread-156994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:20:37.730 [INFO] [Thread-156994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] client lang: <none>
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] server lang: <none>
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] kex follows: False
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:20:37.733 [DEBUG] [Thread-156994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:20:37.734 [DEBUG] [Thread-156994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:20:37.734 [DEBUG] [Thread-156994] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:20:37.734 [DEBUG] [Thread-156994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:20:37.734 [DEBUG] [Thread-156994] [transport.py] [_log()] Compression: none
2025-09-29T13:20:37.734 [DEBUG] [Thread-156994] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:20:37.741 [DEBUG] [Thread-156994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:20:37.741 [DEBUG] [Thread-156994] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:20:37.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:20:37.741 [DEBUG] [Thread-156994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:20:37.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:20:37.742 [DEBUG] [Thread-156994] [transport.py] [_log()] userauth is OK
2025-09-29T13:20:37.742 [DEBUG] [Thread-156994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:20:37.742 [DEBUG] [Thread-156994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:20:37.742 [DEBUG] [Thread-156994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:20:37.742 [DEBUG] [Thread-156994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:20:37.761 [INFO] [Thread-156994] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:20:37.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:20:38.500 [DEBUG] [Thread-156994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:20:38.500 [DEBUG] [Thread-156994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:20:38.501 [DEBUG] [Thread-156994] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:20:38.541 [DEBUG] [Thread-156994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:20:38.541 [DEBUG] [Thread-156994] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:20:38.543 [DEBUG] [Thread-156994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:20:38.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:20:38.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:20:38.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:20:38.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:20:38.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:20:38.560 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:20:38.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.472291 -999.00  +15.10  10.39     43   +2.70 1 1 1 1 1   888    0 13.42 66.81 ----- 12.1 10.4 178.2 11.7 23.3 -26.9 21.8 -27.5 22.8 -25.8 24.2 -27.1
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.472291
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:20:38.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:20:34', tmtdew=13.29, humidity=40.05, cloud=0.0, wind=16.57, temperature=13.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:20:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:20:38.561 [DEBUG] [Thread-156994] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:20:38.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:20:38.645 [DEBUG] [Thread-156997] [transport.py] [_log()] starting thread (client mode): 0x28704550
2025-09-29T13:20:38.645 [DEBUG] [Thread-156997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:20:38.660 [DEBUG] [Thread-156997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:20:38.660 [INFO] [Thread-156997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] client lang: <none>
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] server lang: <none>
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] kex follows: False
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] Compression: none
2025-09-29T13:20:38.668 [DEBUG] [Thread-156997] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:20:38.723 [DEBUG] [Thread-156997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:20:38.723 [DEBUG] [Thread-156997] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:20:38.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:20:38.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:20:38.724 [DEBUG] [Thread-156997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:20:38.780 [DEBUG] [Thread-156997] [transport.py] [_log()] userauth is OK
2025-09-29T13:20:38.780 [DEBUG] [Thread-156997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:20:38.780 [DEBUG] [Thread-156997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:20:38.780 [DEBUG] [Thread-156997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:20:38.780 [DEBUG] [Thread-156997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:20:38.795 [INFO] [Thread-156997] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:20:38.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:20:38.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:20:39.764 [DEBUG] [Thread-156997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:20:39.764 [DEBUG] [Thread-156997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:20:39.812 [DEBUG] [Thread-156997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:20:39.812 [DEBUG] [Thread-156997] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:20:39.821 [DEBUG] [Thread-156997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:20:39.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:20:39.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:20:39.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:20:39.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:20:39.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:20:39.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:20:39.857 [DEBUG] [Thread-156997] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:20:41.637 [DEBUG] [Thread-156999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:20:49.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:20:49.860 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:20:49.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:20:50.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 20, 34), 13.29, 40.05, 0.0, 16.57, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:20:50.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:20:34
2025-09-29T13:20:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:20:50.687 [DEBUG] [Thread-157000] [transport.py] [_log()] starting thread (client mode): 0x2b9cb2b0
2025-09-29T13:20:50.687 [DEBUG] [Thread-157000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:20:50.708 [DEBUG] [Thread-157000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:20:50.708 [INFO] [Thread-157000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:20:50.710 [DEBUG] [Thread-157000] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:20:50.710 [DEBUG] [Thread-157000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:20:50.710 [DEBUG] [Thread-157000] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] client lang: <none>
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] server lang: <none>
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] kex follows: False
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] Compression: none
2025-09-29T13:20:50.711 [DEBUG] [Thread-157000] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:20:50.720 [DEBUG] [Thread-157000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:20:50.720 [DEBUG] [Thread-157000] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:20:50.721 [DEBUG] [Thread-157000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:20:50.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:20:50.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:20:50.723 [DEBUG] [Thread-157000] [transport.py] [_log()] userauth is OK
2025-09-29T13:20:50.723 [DEBUG] [Thread-157000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:20:50.723 [DEBUG] [Thread-157000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:20:50.723 [DEBUG] [Thread-157000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:20:50.723 [DEBUG] [Thread-157000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:20:50.746 [INFO] [Thread-157000] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:20:50.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:20:51.326 [DEBUG] [Thread-157000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:20:51.327 [DEBUG] [Thread-157000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:20:51.327 [DEBUG] [Thread-157000] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:20:51.367 [DEBUG] [Thread-157000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:20:51.368 [DEBUG] [Thread-157000] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:20:51.370 [DEBUG] [Thread-157000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:20:51.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:20:51.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:20:51.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:20:51.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:20:51.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:20:51.390 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:20:51.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:20:51.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:20:51.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:20:51.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.472639 -999.00  +15.10   8.11     43   +2.60 1 1 1 1 1   888    0 13.34 65.90 ----- 7.4 8.1 216.2 14.3 23.4 -26.4 21.9 -26.4 22.9 -26.4 24.4 -27.3
2025-09-29T13:20:51.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:20:51.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:20:51.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.472639
2025-09-29T13:20:51.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:20:51.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:20:51.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:20:51.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:20:51.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:20:51.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:20:34', tmtdew=13.29, humidity=40.05, cloud=0.0, wind=16.57, temperature=13.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:20:36.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:20:51.393 [DEBUG] [Thread-157000] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:20:51.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:20:51.489 [DEBUG] [Thread-157003] [transport.py] [_log()] starting thread (client mode): 0x2b90d390
2025-09-29T13:20:51.489 [DEBUG] [Thread-157003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:20:51.504 [DEBUG] [Thread-157003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:20:51.504 [INFO] [Thread-157003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] client lang: <none>
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] server lang: <none>
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] kex follows: False
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] Compression: none
2025-09-29T13:20:51.512 [DEBUG] [Thread-157003] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:20:51.568 [DEBUG] [Thread-157003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:20:51.569 [DEBUG] [Thread-157003] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:20:51.569 [DEBUG] [Thread-157003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:20:51.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:20:51.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:20:51.625 [DEBUG] [Thread-157003] [transport.py] [_log()] userauth is OK
2025-09-29T13:20:51.625 [DEBUG] [Thread-157003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:20:51.625 [DEBUG] [Thread-157003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:20:51.626 [DEBUG] [Thread-157003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:20:51.626 [DEBUG] [Thread-157003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:20:51.645 [INFO] [Thread-157003] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:20:51.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:20:51.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:20:52.540 [DEBUG] [Thread-157005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:20:52.572 [DEBUG] [Thread-157003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:20:52.573 [DEBUG] [Thread-157003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:20:52.620 [DEBUG] [Thread-157003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:20:52.620 [DEBUG] [Thread-157003] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:20:52.631 [DEBUG] [Thread-157003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:20:52.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:20:52.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:20:52.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:20:52.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:20:52.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:20:52.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:20:52.666 [DEBUG] [Thread-157003] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:20:54.758 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:20:54.759 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:21:02.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:21:02.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:21:02.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:21:03.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 20, 34), 13.29, 40.05, 0.0, 16.57, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:21:03.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:20:34
2025-09-29T13:21:03.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:21:03.497 [DEBUG] [Thread-157006] [transport.py] [_log()] starting thread (client mode): 0x2b90d5a0
2025-09-29T13:21:03.497 [DEBUG] [Thread-157006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:03.518 [DEBUG] [Thread-157006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:21:03.518 [INFO] [Thread-157006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] Compression: none
2025-09-29T13:21:03.522 [DEBUG] [Thread-157006] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:03.540 [DEBUG] [Thread-157006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:03.540 [DEBUG] [Thread-157006] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:03.541 [DEBUG] [Thread-157006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:21:03.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:21:03.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:03.543 [DEBUG] [Thread-157006] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:03.543 [DEBUG] [Thread-157006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:03.543 [DEBUG] [Thread-157006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:03.543 [DEBUG] [Thread-157006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:21:03.544 [DEBUG] [Thread-157006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:03.567 [INFO] [Thread-157006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:03.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:04.138 [DEBUG] [Thread-157006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:04.138 [DEBUG] [Thread-157006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:04.138 [DEBUG] [Thread-157006] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:21:04.179 [DEBUG] [Thread-157006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:04.179 [DEBUG] [Thread-157006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:04.181 [DEBUG] [Thread-157006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:04.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:04.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:21:04.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:21:04.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:21:04.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:04.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:21:04.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:04.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:04.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:21:04.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.472639 -999.00  +15.10   8.11     43   +2.60 1 1 1 1 1   888    0 13.34 65.90 ----- 7.4 8.1 216.2 14.3 23.4 -26.4 21.9 -26.4 22.9 -26.4 24.4 -27.3
2025-09-29T13:21:04.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:21:04.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:21:04.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.472639
2025-09-29T13:21:04.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:21:04.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:21:04.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:21:04.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:21:04.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:21:04.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:20:34', tmtdew=13.29, humidity=40.05, cloud=0.0, wind=16.57, temperature=13.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:20:36.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:21:04.198 [DEBUG] [Thread-157006] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:04.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:21:04.285 [DEBUG] [Thread-157009] [transport.py] [_log()] starting thread (client mode): 0x28705c90
2025-09-29T13:21:04.285 [DEBUG] [Thread-157009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:04.300 [DEBUG] [Thread-157009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:21:04.300 [INFO] [Thread-157009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:21:04.307 [DEBUG] [Thread-157009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:04.308 [DEBUG] [Thread-157009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:21:04.308 [DEBUG] [Thread-157009] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:04.308 [DEBUG] [Thread-157009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:04.308 [DEBUG] [Thread-157009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:04.308 [DEBUG] [Thread-157009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:04.308 [DEBUG] [Thread-157009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:04.308 [DEBUG] [Thread-157009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:04.309 [DEBUG] [Thread-157009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:04.310 [DEBUG] [Thread-157009] [transport.py] [_log()] Compression: none
2025-09-29T13:21:04.310 [DEBUG] [Thread-157009] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:04.364 [DEBUG] [Thread-157009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:04.365 [DEBUG] [Thread-157009] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:04.366 [DEBUG] [Thread-157009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:21:04.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:21:04.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:04.421 [DEBUG] [Thread-157009] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:04.421 [DEBUG] [Thread-157009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:04.421 [DEBUG] [Thread-157009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:04.421 [DEBUG] [Thread-157009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:21:04.421 [DEBUG] [Thread-157009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:04.440 [INFO] [Thread-157009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:04.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:21:04.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:05.385 [DEBUG] [Thread-157009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:05.385 [DEBUG] [Thread-157009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:05.433 [DEBUG] [Thread-157009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:05.433 [DEBUG] [Thread-157009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:05.443 [DEBUG] [Thread-157009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:05.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:05.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:21:05.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:21:05.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:05.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:05.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:05.478 [DEBUG] [Thread-157009] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:07.582 [DEBUG] [Thread-157011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:21:15.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:21:15.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:21:15.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:21:16.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 21, 6), 13.36, 39.89, 0.0, 13.89, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:21:16.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:21:06
2025-09-29T13:21:16.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:21:16.349 [DEBUG] [Thread-157012] [transport.py] [_log()] starting thread (client mode): 0x2e38d840
2025-09-29T13:21:16.350 [DEBUG] [Thread-157012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:16.372 [DEBUG] [Thread-157012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:21:16.372 [INFO] [Thread-157012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] Compression: none
2025-09-29T13:21:16.376 [DEBUG] [Thread-157012] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:16.391 [DEBUG] [Thread-157012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:16.391 [DEBUG] [Thread-157012] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:16.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:21:16.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:16.392 [DEBUG] [Thread-157012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:21:16.392 [DEBUG] [Thread-157012] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:16.392 [DEBUG] [Thread-157012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:16.392 [DEBUG] [Thread-157012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:16.392 [DEBUG] [Thread-157012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:21:16.392 [DEBUG] [Thread-157012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:16.403 [INFO] [Thread-157012] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:16.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:17.151 [DEBUG] [Thread-157012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:17.152 [DEBUG] [Thread-157012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:17.152 [DEBUG] [Thread-157012] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:21:17.193 [DEBUG] [Thread-157012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:17.193 [DEBUG] [Thread-157012] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:17.196 [DEBUG] [Thread-157012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:17.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:17.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:21:17.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:21:17.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:21:17.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:17.212 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:21:17.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:17.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:17.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:21:17.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.472639 -999.00  +15.10   8.11     43   +2.60 1 1 1 1 1   888    0 13.34 65.90 ----- 7.4 8.1 216.2 14.3 23.4 -26.4 21.9 -26.4 22.9 -26.4 24.4 -27.3
2025-09-29T13:21:17.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:21:17.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:21:17.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.472639
2025-09-29T13:21:17.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:21:17.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:21:17.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:21:17.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:21:17.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:21:17.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:21:06', tmtdew=13.36, humidity=39.89, cloud=0.0, wind=13.89, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:20:36.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:21:17.213 [DEBUG] [Thread-157012] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:17.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:21:17.295 [DEBUG] [Thread-157015] [transport.py] [_log()] starting thread (client mode): 0x2b9c3f10
2025-09-29T13:21:17.295 [DEBUG] [Thread-157015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:17.310 [DEBUG] [Thread-157015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:21:17.310 [INFO] [Thread-157015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:17.317 [DEBUG] [Thread-157015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:17.318 [DEBUG] [Thread-157015] [transport.py] [_log()] Compression: none
2025-09-29T13:21:17.318 [DEBUG] [Thread-157015] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:17.376 [DEBUG] [Thread-157015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:17.376 [DEBUG] [Thread-157015] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:17.376 [DEBUG] [Thread-157015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:21:17.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:21:17.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:17.433 [DEBUG] [Thread-157015] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:17.433 [DEBUG] [Thread-157015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:17.433 [DEBUG] [Thread-157015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:17.433 [DEBUG] [Thread-157015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:21:17.433 [DEBUG] [Thread-157015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:17.446 [INFO] [Thread-157015] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:17.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:21:17.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:18.401 [DEBUG] [Thread-157015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:18.402 [DEBUG] [Thread-157015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:18.451 [DEBUG] [Thread-157015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:18.451 [DEBUG] [Thread-157015] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:18.460 [DEBUG] [Thread-157015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:18.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:18.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:21:18.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:21:18.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:18.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:18.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:18.494 [DEBUG] [Thread-157015] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:22.609 [DEBUG] [Thread-157017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:21:28.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:21:28.495 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:21:28.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:21:29.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 21, 6), 13.36, 39.89, 0.0, 13.89, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:21:29.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:21:06
2025-09-29T13:21:29.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:21:29.333 [DEBUG] [Thread-157018] [transport.py] [_log()] starting thread (client mode): 0x28705660
2025-09-29T13:21:29.333 [DEBUG] [Thread-157018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:29.353 [DEBUG] [Thread-157018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:21:29.354 [INFO] [Thread-157018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:29.357 [DEBUG] [Thread-157018] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:29.358 [DEBUG] [Thread-157018] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:29.358 [DEBUG] [Thread-157018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:29.358 [DEBUG] [Thread-157018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:29.358 [DEBUG] [Thread-157018] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:29.358 [DEBUG] [Thread-157018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:29.358 [DEBUG] [Thread-157018] [transport.py] [_log()] Compression: none
2025-09-29T13:21:29.358 [DEBUG] [Thread-157018] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:29.373 [DEBUG] [Thread-157018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:29.374 [DEBUG] [Thread-157018] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:29.374 [DEBUG] [Thread-157018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:21:29.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:21:29.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:29.376 [DEBUG] [Thread-157018] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:29.377 [DEBUG] [Thread-157018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:29.377 [DEBUG] [Thread-157018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:29.377 [DEBUG] [Thread-157018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:21:29.377 [DEBUG] [Thread-157018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:29.394 [INFO] [Thread-157018] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:29.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:30.032 [DEBUG] [Thread-157018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:30.032 [DEBUG] [Thread-157018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:30.032 [DEBUG] [Thread-157018] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:21:30.073 [DEBUG] [Thread-157018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:30.073 [DEBUG] [Thread-157018] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:30.076 [DEBUG] [Thread-157018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:30.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:30.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:21:30.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:21:30.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:21:30.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:30.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:21:30.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:30.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:30.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:21:30.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.472986 -999.00  +15.40   5.47     42   +2.70 1 1 1 1 1   888    0 13.57 69.90 ----- 11.0 5.5 227.2 9.8 23.4 -26.9 22.1 -26.1 22.9 -26.3 24.5 -27.7
2025-09-29T13:21:30.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:21:30.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:21:30.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.472986
2025-09-29T13:21:30.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:21:30.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:21:30.096 [DEBUG] [Thread-157018] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:30.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:21:30.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:21:30.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:21:30.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:21:06', tmtdew=13.36, humidity=39.89, cloud=0.0, wind=13.89, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:21:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:21:30.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:21:30.192 [DEBUG] [Thread-157021] [transport.py] [_log()] starting thread (client mode): 0x2b96b820
2025-09-29T13:21:30.193 [DEBUG] [Thread-157021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:30.207 [DEBUG] [Thread-157021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:21:30.207 [INFO] [Thread-157021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:30.215 [DEBUG] [Thread-157021] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:30.216 [DEBUG] [Thread-157021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:30.216 [DEBUG] [Thread-157021] [transport.py] [_log()] Compression: none
2025-09-29T13:21:30.216 [DEBUG] [Thread-157021] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:30.274 [DEBUG] [Thread-157021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:30.275 [DEBUG] [Thread-157021] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:30.275 [DEBUG] [Thread-157021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:21:30.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:21:30.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:30.333 [DEBUG] [Thread-157021] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:30.333 [DEBUG] [Thread-157021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:30.333 [DEBUG] [Thread-157021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:30.333 [DEBUG] [Thread-157021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:21:30.333 [DEBUG] [Thread-157021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:30.353 [INFO] [Thread-157021] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:30.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:21:30.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:31.388 [DEBUG] [Thread-157021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:31.396 [DEBUG] [Thread-157021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:31.436 [DEBUG] [Thread-157021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:31.436 [DEBUG] [Thread-157021] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:31.445 [DEBUG] [Thread-157021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:31.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:31.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:21:31.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:21:31.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:31.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:31.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:31.479 [DEBUG] [Thread-157021] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:37.655 [DEBUG] [Thread-157023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:21:41.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:21:41.481 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:21:41.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:21:41.681 [DEBUG] [Thread-157024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:21:42.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 21, 37), 13.42, 39.99, 0.0, 9.95, 14.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:21:42.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:21:37
2025-09-29T13:21:42.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:21:42.322 [DEBUG] [Thread-157025] [transport.py] [_log()] starting thread (client mode): 0x2e38ca30
2025-09-29T13:21:42.322 [DEBUG] [Thread-157025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:42.341 [DEBUG] [Thread-157025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:21:42.342 [INFO] [Thread-157025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:21:42.345 [DEBUG] [Thread-157025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:42.345 [DEBUG] [Thread-157025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:21:42.345 [DEBUG] [Thread-157025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:42.345 [DEBUG] [Thread-157025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:42.345 [DEBUG] [Thread-157025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:42.345 [DEBUG] [Thread-157025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:42.345 [DEBUG] [Thread-157025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] Compression: none
2025-09-29T13:21:42.346 [DEBUG] [Thread-157025] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:42.364 [DEBUG] [Thread-157025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:42.364 [DEBUG] [Thread-157025] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:42.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:21:42.365 [DEBUG] [Thread-157025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:21:42.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:42.367 [DEBUG] [Thread-157025] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:42.367 [DEBUG] [Thread-157025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:42.367 [DEBUG] [Thread-157025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:42.368 [DEBUG] [Thread-157025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:21:42.368 [DEBUG] [Thread-157025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:42.391 [INFO] [Thread-157025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:42.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:43.188 [DEBUG] [Thread-157025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:43.188 [DEBUG] [Thread-157025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:43.188 [DEBUG] [Thread-157025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:21:43.229 [DEBUG] [Thread-157025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:43.229 [DEBUG] [Thread-157025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:43.232 [DEBUG] [Thread-157025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:43.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:43.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:21:43.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:21:43.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:21:43.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:43.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:21:43.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:43.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:21:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.472986 -999.00  +15.40   5.47     42   +2.70 1 1 1 1 1   888    0 13.57 69.90 ----- 11.0 5.5 227.2 9.8 23.4 -26.9 22.1 -26.1 22.9 -26.3 24.5 -27.7
2025-09-29T13:21:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:21:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:21:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.472986
2025-09-29T13:21:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:21:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:21:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:21:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:21:43.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:21:43.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:21:37', tmtdew=13.42, humidity=39.99, cloud=0.0, wind=9.95, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:21:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:21:43.257 [DEBUG] [Thread-157025] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:43.342 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:21:43.354 [DEBUG] [Thread-157028] [transport.py] [_log()] starting thread (client mode): 0x2b9c88e0
2025-09-29T13:21:43.354 [DEBUG] [Thread-157028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:43.370 [DEBUG] [Thread-157028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:21:43.370 [INFO] [Thread-157028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:21:43.377 [DEBUG] [Thread-157028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:43.377 [DEBUG] [Thread-157028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:43.378 [DEBUG] [Thread-157028] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:43.379 [DEBUG] [Thread-157028] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:43.379 [DEBUG] [Thread-157028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:43.379 [DEBUG] [Thread-157028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:43.379 [DEBUG] [Thread-157028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:43.379 [DEBUG] [Thread-157028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:43.379 [DEBUG] [Thread-157028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:43.379 [DEBUG] [Thread-157028] [transport.py] [_log()] Compression: none
2025-09-29T13:21:43.380 [DEBUG] [Thread-157028] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:43.437 [DEBUG] [Thread-157028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:43.437 [DEBUG] [Thread-157028] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:43.437 [DEBUG] [Thread-157028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:21:43.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:21:43.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:43.493 [DEBUG] [Thread-157028] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:43.493 [DEBUG] [Thread-157028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:43.493 [DEBUG] [Thread-157028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:43.494 [DEBUG] [Thread-157028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:21:43.494 [DEBUG] [Thread-157028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:43.513 [INFO] [Thread-157028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:43.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:21:43.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:44.470 [DEBUG] [Thread-157028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:44.470 [DEBUG] [Thread-157028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:44.518 [DEBUG] [Thread-157028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:44.518 [DEBUG] [Thread-157028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:44.527 [DEBUG] [Thread-157028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:44.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:44.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:21:44.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:21:44.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:44.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:44.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:44.560 [DEBUG] [Thread-157028] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:52.706 [DEBUG] [Thread-157030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:21:54.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:21:54.563 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:21:54.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:21:54.902 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:21:54.903 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:21:55.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 21, 37), 13.42, 39.99, 0.0, 9.95, 14.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:21:55.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:21:37
2025-09-29T13:21:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:21:55.394 [DEBUG] [Thread-157031] [transport.py] [_log()] starting thread (client mode): 0x2b9c32b0
2025-09-29T13:21:55.395 [DEBUG] [Thread-157031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:55.415 [DEBUG] [Thread-157031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:21:55.415 [INFO] [Thread-157031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] Compression: none
2025-09-29T13:21:55.418 [DEBUG] [Thread-157031] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:55.434 [DEBUG] [Thread-157031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:55.434 [DEBUG] [Thread-157031] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:55.434 [DEBUG] [Thread-157031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:21:55.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:21:55.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:55.435 [DEBUG] [Thread-157031] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:55.435 [DEBUG] [Thread-157031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:55.435 [DEBUG] [Thread-157031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:55.435 [DEBUG] [Thread-157031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:21:55.435 [DEBUG] [Thread-157031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:55.445 [INFO] [Thread-157031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:55.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:56.239 [DEBUG] [Thread-157031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:56.239 [DEBUG] [Thread-157031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:56.239 [DEBUG] [Thread-157031] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:21:56.280 [DEBUG] [Thread-157031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:56.280 [DEBUG] [Thread-157031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:56.285 [DEBUG] [Thread-157031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:56.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:56.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:21:56.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:21:56.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:21:56.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:56.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:21:56.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:56.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:56.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:21:56.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.472986 -999.00  +15.40   5.47     42   +2.70 1 1 1 1 1   888    0 13.57 69.90 ----- 11.0 5.5 227.2 9.8 23.4 -26.9 22.1 -26.1 22.9 -26.3 24.5 -27.7
2025-09-29T13:21:56.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:21:56.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:21:56.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.472986
2025-09-29T13:21:56.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:21:56.309 [DEBUG] [Thread-157031] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:21:56.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:21:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:21:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:21:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:21:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:21:37', tmtdew=13.42, humidity=39.99, cloud=0.0, wind=9.95, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:21:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:21:56.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:21:56.397 [DEBUG] [Thread-157034] [transport.py] [_log()] starting thread (client mode): 0x2b91e440
2025-09-29T13:21:56.397 [DEBUG] [Thread-157034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:21:56.412 [DEBUG] [Thread-157034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:21:56.412 [INFO] [Thread-157034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:21:56.419 [DEBUG] [Thread-157034] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:21:56.419 [DEBUG] [Thread-157034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:21:56.419 [DEBUG] [Thread-157034] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:21:56.420 [DEBUG] [Thread-157034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:56.420 [DEBUG] [Thread-157034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:21:56.420 [DEBUG] [Thread-157034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:56.420 [DEBUG] [Thread-157034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:21:56.420 [DEBUG] [Thread-157034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:21:56.420 [DEBUG] [Thread-157034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:21:56.420 [DEBUG] [Thread-157034] [transport.py] [_log()] client lang: <none>
2025-09-29T13:21:56.420 [DEBUG] [Thread-157034] [transport.py] [_log()] server lang: <none>
2025-09-29T13:21:56.421 [DEBUG] [Thread-157034] [transport.py] [_log()] kex follows: False
2025-09-29T13:21:56.421 [DEBUG] [Thread-157034] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:21:56.421 [DEBUG] [Thread-157034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:21:56.421 [DEBUG] [Thread-157034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:21:56.421 [DEBUG] [Thread-157034] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:21:56.421 [DEBUG] [Thread-157034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:21:56.421 [DEBUG] [Thread-157034] [transport.py] [_log()] Compression: none
2025-09-29T13:21:56.421 [DEBUG] [Thread-157034] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:21:56.477 [DEBUG] [Thread-157034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:21:56.477 [DEBUG] [Thread-157034] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:21:56.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:21:56.478 [DEBUG] [Thread-157034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:21:56.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:21:56.533 [DEBUG] [Thread-157034] [transport.py] [_log()] userauth is OK
2025-09-29T13:21:56.533 [DEBUG] [Thread-157034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:21:56.533 [DEBUG] [Thread-157034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:21:56.533 [DEBUG] [Thread-157034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:21:56.533 [DEBUG] [Thread-157034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:21:56.552 [INFO] [Thread-157034] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:21:56.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:21:56.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:21:57.511 [DEBUG] [Thread-157034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:21:57.511 [DEBUG] [Thread-157034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:21:57.559 [DEBUG] [Thread-157034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:21:57.559 [DEBUG] [Thread-157034] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:21:57.567 [DEBUG] [Thread-157034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:21:57.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:21:57.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:21:57.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:21:57.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:21:57.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:21:57.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:21:57.599 [DEBUG] [Thread-157034] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:07.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:22:07.601 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:22:07.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:22:07.740 [DEBUG] [Thread-157036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:22:08.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 21, 37), 13.42, 39.99, 0.0, 9.95, 14.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:22:08.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:21:37
2025-09-29T13:22:08.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:22:08.439 [DEBUG] [Thread-157037] [transport.py] [_log()] starting thread (client mode): 0x2b9ca6e0
2025-09-29T13:22:08.439 [DEBUG] [Thread-157037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:22:08.456 [DEBUG] [Thread-157037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:22:08.456 [INFO] [Thread-157037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] client lang: <none>
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] server lang: <none>
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] kex follows: False
2025-09-29T13:22:08.459 [DEBUG] [Thread-157037] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:22:08.460 [DEBUG] [Thread-157037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:22:08.460 [DEBUG] [Thread-157037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:22:08.460 [DEBUG] [Thread-157037] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:22:08.460 [DEBUG] [Thread-157037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:22:08.460 [DEBUG] [Thread-157037] [transport.py] [_log()] Compression: none
2025-09-29T13:22:08.460 [DEBUG] [Thread-157037] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:22:08.473 [DEBUG] [Thread-157037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:22:08.474 [DEBUG] [Thread-157037] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:22:08.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:22:08.475 [DEBUG] [Thread-157037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:22:08.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:22:08.476 [DEBUG] [Thread-157037] [transport.py] [_log()] userauth is OK
2025-09-29T13:22:08.477 [DEBUG] [Thread-157037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:22:08.477 [DEBUG] [Thread-157037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:22:08.477 [DEBUG] [Thread-157037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:22:08.477 [DEBUG] [Thread-157037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:22:08.494 [INFO] [Thread-157037] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:22:08.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:22:09.149 [DEBUG] [Thread-157037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:22:09.149 [DEBUG] [Thread-157037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:22:09.150 [DEBUG] [Thread-157037] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:22:09.190 [DEBUG] [Thread-157037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:22:09.190 [DEBUG] [Thread-157037] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:22:09.192 [DEBUG] [Thread-157037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:22:09.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:22:09.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:22:09.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:22:09.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:22:09.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:22:09.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:22:09.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:22:09.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:22:09.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:22:09.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.473333 -999.00  +15.30  14.51     42   +2.50 1 1 1 1 1   888    0 13.78 78.09 ----- 11.7 14.5 165.2 16.6 23.4 -26.7 21.9 -32.5 22.9 -26.5 24.4 -27.8
2025-09-29T13:22:09.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:22:09.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:22:09.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.473333
2025-09-29T13:22:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:22:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:22:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:22:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:22:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:22:09.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:21:37', tmtdew=13.42, humidity=39.99, cloud=0.0, wind=9.95, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:21:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:22:09.217 [DEBUG] [Thread-157037] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:09.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:22:09.315 [DEBUG] [Thread-157040] [transport.py] [_log()] starting thread (client mode): 0x2b9c9ab0
2025-09-29T13:22:09.315 [DEBUG] [Thread-157040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:22:09.331 [DEBUG] [Thread-157040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:22:09.332 [INFO] [Thread-157040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:22:09.339 [DEBUG] [Thread-157040] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:22:09.339 [DEBUG] [Thread-157040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:22:09.339 [DEBUG] [Thread-157040] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:22:09.339 [DEBUG] [Thread-157040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:09.339 [DEBUG] [Thread-157040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:09.339 [DEBUG] [Thread-157040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] client lang: <none>
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] server lang: <none>
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] kex follows: False
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] Compression: none
2025-09-29T13:22:09.340 [DEBUG] [Thread-157040] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:22:09.396 [DEBUG] [Thread-157040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:22:09.397 [DEBUG] [Thread-157040] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:22:09.397 [DEBUG] [Thread-157040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:22:09.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:22:09.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:22:09.453 [DEBUG] [Thread-157040] [transport.py] [_log()] userauth is OK
2025-09-29T13:22:09.453 [DEBUG] [Thread-157040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:22:09.453 [DEBUG] [Thread-157040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:22:09.453 [DEBUG] [Thread-157040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:22:09.453 [DEBUG] [Thread-157040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:22:09.474 [INFO] [Thread-157040] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:22:09.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:22:09.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:22:10.408 [DEBUG] [Thread-157040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:22:10.408 [DEBUG] [Thread-157040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:22:10.456 [DEBUG] [Thread-157040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:22:10.456 [DEBUG] [Thread-157040] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:22:10.464 [DEBUG] [Thread-157040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:22:10.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:22:10.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:22:10.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:22:10.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:22:10.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:22:10.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:22:10.497 [DEBUG] [Thread-157040] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:20.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:22:20.499 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:22:20.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:22:21.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 22, 9), 13.63, 39.52, 0.0, 11.61, 14.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:22:21.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:22:09
2025-09-29T13:22:21.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:22:21.321 [DEBUG] [Thread-157042] [transport.py] [_log()] starting thread (client mode): 0x2b9c0fa0
2025-09-29T13:22:21.321 [DEBUG] [Thread-157042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:22:21.342 [DEBUG] [Thread-157042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:22:21.342 [INFO] [Thread-157042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:22:21.345 [DEBUG] [Thread-157042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:22:21.345 [DEBUG] [Thread-157042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:22:21.345 [DEBUG] [Thread-157042] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:22:21.345 [DEBUG] [Thread-157042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:21.345 [DEBUG] [Thread-157042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:21.345 [DEBUG] [Thread-157042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] client lang: <none>
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] server lang: <none>
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] kex follows: False
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] Compression: none
2025-09-29T13:22:21.346 [DEBUG] [Thread-157042] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:22:21.354 [DEBUG] [Thread-157042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:22:21.354 [DEBUG] [Thread-157042] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:22:21.355 [DEBUG] [Thread-157042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:22:21.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:22:21.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:22:21.356 [DEBUG] [Thread-157042] [transport.py] [_log()] userauth is OK
2025-09-29T13:22:21.356 [DEBUG] [Thread-157042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:22:21.356 [DEBUG] [Thread-157042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:22:21.356 [DEBUG] [Thread-157042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:22:21.356 [DEBUG] [Thread-157042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:22:21.373 [INFO] [Thread-157042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:22:21.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:22:22.117 [DEBUG] [Thread-157042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:22:22.117 [DEBUG] [Thread-157042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:22:22.118 [DEBUG] [Thread-157042] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:22:22.158 [DEBUG] [Thread-157042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:22:22.158 [DEBUG] [Thread-157042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:22:22.161 [DEBUG] [Thread-157042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:22:22.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:22:22.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:22:22.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:22:22.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:22:22.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:22:22.183 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:22:22.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:22:22.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:22:22.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:22:22.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.473333 -999.00  +15.30  14.51     42   +2.50 1 1 1 1 1   888    0 13.78 78.09 ----- 11.7 14.5 165.2 16.6 23.4 -26.7 21.9 -32.5 22.9 -26.5 24.4 -27.8
2025-09-29T13:22:22.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:22:22.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:22:22.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.473333
2025-09-29T13:22:22.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:22:22.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:22:22.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:22:22.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:22:22.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:22:22.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:22:09', tmtdew=13.63, humidity=39.52, cloud=0.0, wind=11.61, temperature=14.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:21:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:22:22.186 [DEBUG] [Thread-157042] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:22.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:22:22.279 [DEBUG] [Thread-157045] [transport.py] [_log()] starting thread (client mode): 0x2b9c2e60
2025-09-29T13:22:22.280 [DEBUG] [Thread-157045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:22:22.294 [DEBUG] [Thread-157045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:22:22.294 [INFO] [Thread-157045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:22:22.305 [DEBUG] [Thread-157045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:22:22.305 [DEBUG] [Thread-157045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:22:22.305 [DEBUG] [Thread-157045] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:22:22.305 [DEBUG] [Thread-157045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:22.305 [DEBUG] [Thread-157045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:22.305 [DEBUG] [Thread-157045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:22.305 [DEBUG] [Thread-157045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] client lang: <none>
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] server lang: <none>
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] kex follows: False
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] Compression: none
2025-09-29T13:22:22.306 [DEBUG] [Thread-157045] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:22:22.361 [DEBUG] [Thread-157045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:22:22.362 [DEBUG] [Thread-157045] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:22:22.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:22:22.362 [DEBUG] [Thread-157045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:22:22.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:22:22.417 [DEBUG] [Thread-157045] [transport.py] [_log()] userauth is OK
2025-09-29T13:22:22.417 [DEBUG] [Thread-157045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:22:22.417 [DEBUG] [Thread-157045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:22:22.417 [DEBUG] [Thread-157045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:22:22.417 [DEBUG] [Thread-157045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:22:22.436 [INFO] [Thread-157045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:22:22.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:22:22.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:22:22.769 [DEBUG] [Thread-157047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:22:23.379 [DEBUG] [Thread-157045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:22:23.380 [DEBUG] [Thread-157045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:22:23.427 [DEBUG] [Thread-157045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:22:23.427 [DEBUG] [Thread-157045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:22:23.436 [DEBUG] [Thread-157045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:22:23.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:22:23.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:22:23.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:22:23.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:22:23.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:22:23.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:22:23.470 [DEBUG] [Thread-157045] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:33.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:22:33.473 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:22:33.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:22:34.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 22, 9), 13.63, 39.52, 0.0, 11.61, 14.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:22:34.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:22:09
2025-09-29T13:22:34.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:22:34.308 [DEBUG] [Thread-157048] [transport.py] [_log()] starting thread (client mode): 0x2b957400
2025-09-29T13:22:34.308 [DEBUG] [Thread-157048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:22:34.329 [DEBUG] [Thread-157048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:22:34.329 [INFO] [Thread-157048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] client lang: <none>
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] server lang: <none>
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] kex follows: False
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:22:34.332 [DEBUG] [Thread-157048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:22:34.333 [DEBUG] [Thread-157048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:22:34.333 [DEBUG] [Thread-157048] [transport.py] [_log()] Compression: none
2025-09-29T13:22:34.333 [DEBUG] [Thread-157048] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:22:34.349 [DEBUG] [Thread-157048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:22:34.349 [DEBUG] [Thread-157048] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:22:34.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:22:34.350 [DEBUG] [Thread-157048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:22:34.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:22:34.352 [DEBUG] [Thread-157048] [transport.py] [_log()] userauth is OK
2025-09-29T13:22:34.352 [DEBUG] [Thread-157048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:22:34.352 [DEBUG] [Thread-157048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:22:34.353 [DEBUG] [Thread-157048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:22:34.353 [DEBUG] [Thread-157048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:22:34.388 [INFO] [Thread-157048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:22:34.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:22:35.031 [DEBUG] [Thread-157048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:22:35.032 [DEBUG] [Thread-157048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:22:35.032 [DEBUG] [Thread-157048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:22:35.072 [DEBUG] [Thread-157048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:22:35.072 [DEBUG] [Thread-157048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:22:35.075 [DEBUG] [Thread-157048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:22:35.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:22:35.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:22:35.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:22:35.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:22:35.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:22:35.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:22:35.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:22:35.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:22:35.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:22:35.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.473681 -999.00  +15.10   9.04     42   +2.50 1 1 1 1 1   888    0 13.99 79.76 ----- 7.4 9.0 159.8 12.0 23.5 -26.7 22.1 -26.5 23.0 -26.8 24.4 -27.8
2025-09-29T13:22:35.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:22:35.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:22:35.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.473681
2025-09-29T13:22:35.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:22:35.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:22:35.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:22:35.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:22:35.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:22:35.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:22:09', tmtdew=13.63, humidity=39.52, cloud=0.0, wind=11.61, temperature=14.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:22:06.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:22:35.099 [DEBUG] [Thread-157048] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:35.185 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:22:35.196 [DEBUG] [Thread-157051] [transport.py] [_log()] starting thread (client mode): 0x2b956620
2025-09-29T13:22:35.196 [DEBUG] [Thread-157051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:22:35.211 [DEBUG] [Thread-157051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:22:35.211 [INFO] [Thread-157051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:22:35.218 [DEBUG] [Thread-157051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:22:35.219 [DEBUG] [Thread-157051] [transport.py] [_log()] client lang: <none>
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] server lang: <none>
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] kex follows: False
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] Compression: none
2025-09-29T13:22:35.220 [DEBUG] [Thread-157051] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:22:35.277 [DEBUG] [Thread-157051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:22:35.277 [DEBUG] [Thread-157051] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:22:35.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:22:35.278 [DEBUG] [Thread-157051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:22:35.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:22:35.333 [DEBUG] [Thread-157051] [transport.py] [_log()] userauth is OK
2025-09-29T13:22:35.333 [DEBUG] [Thread-157051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:22:35.333 [DEBUG] [Thread-157051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:22:35.333 [DEBUG] [Thread-157051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:22:35.333 [DEBUG] [Thread-157051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:22:35.346 [INFO] [Thread-157051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:22:35.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:22:35.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:22:36.288 [DEBUG] [Thread-157051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:22:36.288 [DEBUG] [Thread-157051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:22:36.336 [DEBUG] [Thread-157051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:22:36.336 [DEBUG] [Thread-157051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:22:36.345 [DEBUG] [Thread-157051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:22:36.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:22:36.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:22:36.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:22:36.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:22:36.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:22:36.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:22:36.379 [DEBUG] [Thread-157051] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:37.804 [DEBUG] [Thread-157053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:22:41.730 [DEBUG] [Thread-157054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:22:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:22:46.382 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:22:46.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:22:46.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 22, 41), 13.73, 39.26, 0.0, 14.82, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:22:46.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:22:41
2025-09-29T13:22:47.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:22:47.218 [DEBUG] [Thread-157055] [transport.py] [_log()] starting thread (client mode): 0x2e34a830
2025-09-29T13:22:47.219 [DEBUG] [Thread-157055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:22:47.239 [DEBUG] [Thread-157055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:22:47.239 [INFO] [Thread-157055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:22:47.243 [DEBUG] [Thread-157055] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:22:47.243 [DEBUG] [Thread-157055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:22:47.243 [DEBUG] [Thread-157055] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:22:47.243 [DEBUG] [Thread-157055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:47.243 [DEBUG] [Thread-157055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:47.243 [DEBUG] [Thread-157055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:47.243 [DEBUG] [Thread-157055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] client lang: <none>
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] server lang: <none>
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] kex follows: False
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] Compression: none
2025-09-29T13:22:47.244 [DEBUG] [Thread-157055] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:22:47.261 [DEBUG] [Thread-157055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:22:47.261 [DEBUG] [Thread-157055] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:22:47.262 [DEBUG] [Thread-157055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:22:47.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:22:47.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:22:47.263 [DEBUG] [Thread-157055] [transport.py] [_log()] userauth is OK
2025-09-29T13:22:47.263 [DEBUG] [Thread-157055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:22:47.264 [DEBUG] [Thread-157055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:22:47.264 [DEBUG] [Thread-157055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:22:47.264 [DEBUG] [Thread-157055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:22:47.281 [INFO] [Thread-157055] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:22:47.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:22:48.068 [DEBUG] [Thread-157055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:22:48.068 [DEBUG] [Thread-157055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:22:48.068 [DEBUG] [Thread-157055] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:22:48.109 [DEBUG] [Thread-157055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:22:48.109 [DEBUG] [Thread-157055] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:22:48.112 [DEBUG] [Thread-157055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:22:48.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:22:48.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:22:48.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:22:48.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:22:48.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:22:48.135 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:22:48.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:22:48.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:22:48.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:22:48.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.473681 -999.00  +15.10   9.04     42   +2.50 1 1 1 1 1   888    0 13.99 79.76 ----- 7.4 9.0 159.8 12.0 23.5 -26.7 22.1 -26.5 23.0 -26.8 24.4 -27.8
2025-09-29T13:22:48.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:22:48.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:22:48.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.473681
2025-09-29T13:22:48.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:22:48.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:22:48.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:22:48.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:22:48.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:22:48.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:22:41', tmtdew=13.73, humidity=39.26, cloud=0.0, wind=14.82, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:22:06.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:22:48.138 [DEBUG] [Thread-157055] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:48.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:22:48.234 [DEBUG] [Thread-157058] [transport.py] [_log()] starting thread (client mode): 0x2e34acb0
2025-09-29T13:22:48.234 [DEBUG] [Thread-157058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:22:48.249 [DEBUG] [Thread-157058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:22:48.249 [INFO] [Thread-157058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:22:48.256 [DEBUG] [Thread-157058] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:22:48.256 [DEBUG] [Thread-157058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:22:48.256 [DEBUG] [Thread-157058] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:22:48.256 [DEBUG] [Thread-157058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] client lang: <none>
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] server lang: <none>
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] kex follows: False
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] Compression: none
2025-09-29T13:22:48.257 [DEBUG] [Thread-157058] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:22:48.314 [DEBUG] [Thread-157058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:22:48.315 [DEBUG] [Thread-157058] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:22:48.315 [DEBUG] [Thread-157058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:22:48.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:22:48.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:22:48.373 [DEBUG] [Thread-157058] [transport.py] [_log()] userauth is OK
2025-09-29T13:22:48.374 [DEBUG] [Thread-157058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:22:48.374 [DEBUG] [Thread-157058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:22:48.374 [DEBUG] [Thread-157058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:22:48.374 [DEBUG] [Thread-157058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:22:48.396 [INFO] [Thread-157058] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:22:48.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:22:48.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:22:49.419 [DEBUG] [Thread-157058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:22:49.419 [DEBUG] [Thread-157058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:22:49.467 [DEBUG] [Thread-157058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:22:49.467 [DEBUG] [Thread-157058] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:22:49.478 [DEBUG] [Thread-157058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:22:49.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:22:49.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:22:49.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:22:49.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:22:49.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:22:49.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:22:49.512 [DEBUG] [Thread-157058] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:22:52.850 [DEBUG] [Thread-157060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:22:55.047 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:22:55.048 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:22:59.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:22:59.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:22:59.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:23:00.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 22, 41), 13.73, 39.26, 0.0, 14.82, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:23:00.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:22:41
2025-09-29T13:23:00.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:23:00.329 [DEBUG] [Thread-157061] [transport.py] [_log()] starting thread (client mode): 0x2b956680
2025-09-29T13:23:00.329 [DEBUG] [Thread-157061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:00.350 [DEBUG] [Thread-157061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:23:00.350 [INFO] [Thread-157061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:00.353 [DEBUG] [Thread-157061] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] Compression: none
2025-09-29T13:23:00.354 [DEBUG] [Thread-157061] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:00.374 [DEBUG] [Thread-157061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:00.374 [DEBUG] [Thread-157061] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:00.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:23:00.375 [DEBUG] [Thread-157061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:23:00.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:00.377 [DEBUG] [Thread-157061] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:00.377 [DEBUG] [Thread-157061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:00.377 [DEBUG] [Thread-157061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:00.377 [DEBUG] [Thread-157061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:23:00.377 [DEBUG] [Thread-157061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:00.400 [INFO] [Thread-157061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:00.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:01.228 [DEBUG] [Thread-157061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:01.228 [DEBUG] [Thread-157061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:01.229 [DEBUG] [Thread-157061] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:23:01.269 [DEBUG] [Thread-157061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:01.269 [DEBUG] [Thread-157061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:01.272 [DEBUG] [Thread-157061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:01.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:01.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:23:01.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:23:01.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:23:01.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:01.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:23:01.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:01.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:01.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:23:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.473681 -999.00  +15.10   9.04     42   +2.50 1 1 1 1 1   888    0 13.99 79.76 ----- 7.4 9.0 159.8 12.0 23.5 -26.7 22.1 -26.5 23.0 -26.8 24.4 -27.8
2025-09-29T13:23:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:23:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:23:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.473681
2025-09-29T13:23:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:23:01.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:23:01.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:23:01.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:23:01.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:23:01.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:22:41', tmtdew=13.73, humidity=39.26, cloud=0.0, wind=14.82, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:22:06.038', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:23:01.296 [DEBUG] [Thread-157061] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:01.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:23:01.391 [DEBUG] [Thread-157064] [transport.py] [_log()] starting thread (client mode): 0x2b90fb50
2025-09-29T13:23:01.391 [DEBUG] [Thread-157064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:01.405 [DEBUG] [Thread-157064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:23:01.406 [INFO] [Thread-157064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:23:01.413 [DEBUG] [Thread-157064] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] Compression: none
2025-09-29T13:23:01.414 [DEBUG] [Thread-157064] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:01.474 [DEBUG] [Thread-157064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:01.475 [DEBUG] [Thread-157064] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:01.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:23:01.475 [DEBUG] [Thread-157064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:23:01.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:01.529 [DEBUG] [Thread-157064] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:01.529 [DEBUG] [Thread-157064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:01.529 [DEBUG] [Thread-157064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:01.529 [DEBUG] [Thread-157064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:23:01.529 [DEBUG] [Thread-157064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:01.547 [INFO] [Thread-157064] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:01.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:23:01.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:02.508 [DEBUG] [Thread-157064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:02.508 [DEBUG] [Thread-157064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:02.556 [DEBUG] [Thread-157064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:02.556 [DEBUG] [Thread-157064] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:02.565 [DEBUG] [Thread-157064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:02.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:02.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:23:02.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:23:02.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:02.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:02.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:02.601 [DEBUG] [Thread-157064] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:07.899 [DEBUG] [Thread-157066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:23:12.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:23:12.602 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:23:12.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:23:13.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 22, 41), 13.73, 39.26, 0.0, 14.82, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:23:13.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:22:41
2025-09-29T13:23:13.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:23:13.438 [DEBUG] [Thread-157067] [transport.py] [_log()] starting thread (client mode): 0x2e34b070
2025-09-29T13:23:13.438 [DEBUG] [Thread-157067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:13.458 [DEBUG] [Thread-157067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:23:13.458 [INFO] [Thread-157067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] Compression: none
2025-09-29T13:23:13.462 [DEBUG] [Thread-157067] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:13.476 [DEBUG] [Thread-157067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:13.477 [DEBUG] [Thread-157067] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:13.477 [DEBUG] [Thread-157067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:23:13.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:23:13.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:13.478 [DEBUG] [Thread-157067] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:13.478 [DEBUG] [Thread-157067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:13.478 [DEBUG] [Thread-157067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:13.478 [DEBUG] [Thread-157067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:23:13.478 [DEBUG] [Thread-157067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:13.493 [INFO] [Thread-157067] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:13.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:14.125 [DEBUG] [Thread-157067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:14.125 [DEBUG] [Thread-157067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:14.125 [DEBUG] [Thread-157067] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:23:14.166 [DEBUG] [Thread-157067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:14.166 [DEBUG] [Thread-157067] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:14.168 [DEBUG] [Thread-157067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:14.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:14.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:23:14.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:23:14.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:23:14.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:14.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:23:14.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.474028 -999.00  +15.10  13.31     43   +2.60 1 1 1 1 1   888    0 13.94 76.05 ----- 14.8 13.3 179.8 16.7 23.5 -26.9 21.9 -29.6 23.0 -26.9 24.4 -27.4
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.474028
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:23:14.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:23:14.185 [DEBUG] [Thread-157067] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:14.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:23:14.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:23:14.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:22:41', tmtdew=13.73, humidity=39.26, cloud=0.0, wind=14.82, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:22:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:23:14.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:23:14.278 [DEBUG] [Thread-157070] [transport.py] [_log()] starting thread (client mode): 0x2e349870
2025-09-29T13:23:14.278 [DEBUG] [Thread-157070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:14.292 [DEBUG] [Thread-157070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:23:14.292 [INFO] [Thread-157070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:14.300 [DEBUG] [Thread-157070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:14.301 [DEBUG] [Thread-157070] [transport.py] [_log()] Compression: none
2025-09-29T13:23:14.301 [DEBUG] [Thread-157070] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:14.355 [DEBUG] [Thread-157070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:14.356 [DEBUG] [Thread-157070] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:14.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:23:14.356 [DEBUG] [Thread-157070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:23:14.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:14.413 [DEBUG] [Thread-157070] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:14.413 [DEBUG] [Thread-157070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:14.413 [DEBUG] [Thread-157070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:14.413 [DEBUG] [Thread-157070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:23:14.413 [DEBUG] [Thread-157070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:14.430 [INFO] [Thread-157070] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:14.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:23:14.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:15.418 [DEBUG] [Thread-157070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:15.418 [DEBUG] [Thread-157070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:15.466 [DEBUG] [Thread-157070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:15.466 [DEBUG] [Thread-157070] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:15.474 [DEBUG] [Thread-157070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:15.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:15.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:23:15.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:23:15.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:15.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:15.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:15.506 [DEBUG] [Thread-157070] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:22.934 [DEBUG] [Thread-157072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:23:25.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:23:25.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:23:25.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:23:26.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 23, 13), 13.74, 39.24, 0.0, 16.92, 14.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:23:26.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:23:13
2025-09-29T13:23:26.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:23:26.334 [DEBUG] [Thread-157073] [transport.py] [_log()] starting thread (client mode): 0x2b954940
2025-09-29T13:23:26.334 [DEBUG] [Thread-157073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:26.353 [DEBUG] [Thread-157073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:23:26.353 [INFO] [Thread-157073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:23:26.356 [DEBUG] [Thread-157073] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:26.356 [DEBUG] [Thread-157073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:23:26.356 [DEBUG] [Thread-157073] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:26.356 [DEBUG] [Thread-157073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:26.356 [DEBUG] [Thread-157073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:26.356 [DEBUG] [Thread-157073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] Compression: none
2025-09-29T13:23:26.357 [DEBUG] [Thread-157073] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:26.373 [DEBUG] [Thread-157073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:26.373 [DEBUG] [Thread-157073] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:26.374 [DEBUG] [Thread-157073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:23:26.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:23:26.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:26.376 [DEBUG] [Thread-157073] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:26.376 [DEBUG] [Thread-157073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:26.376 [DEBUG] [Thread-157073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:26.376 [DEBUG] [Thread-157073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:23:26.376 [DEBUG] [Thread-157073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:26.394 [INFO] [Thread-157073] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:26.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:27.198 [DEBUG] [Thread-157073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:27.198 [DEBUG] [Thread-157073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:27.199 [DEBUG] [Thread-157073] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:23:27.239 [DEBUG] [Thread-157073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:27.239 [DEBUG] [Thread-157073] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:27.242 [DEBUG] [Thread-157073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:27.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:27.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:23:27.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:23:27.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:23:27.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:27.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:23:27.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:27.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:27.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:23:27.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.474028 -999.00  +15.10  13.31     43   +2.60 1 1 1 1 1   888    0 13.94 76.05 ----- 14.8 13.3 179.8 16.7 23.5 -26.9 21.9 -29.6 23.0 -26.9 24.4 -27.4
2025-09-29T13:23:27.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:23:27.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:23:27.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.474028
2025-09-29T13:23:27.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:23:27.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:23:27.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:23:27.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:23:27.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:23:27.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:23:13', tmtdew=13.74, humidity=39.24, cloud=0.0, wind=16.92, temperature=14.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:22:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:23:27.267 [DEBUG] [Thread-157073] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:27.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:23:27.361 [DEBUG] [Thread-157076] [transport.py] [_log()] starting thread (client mode): 0x2b9559f0
2025-09-29T13:23:27.361 [DEBUG] [Thread-157076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:27.376 [DEBUG] [Thread-157076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:23:27.377 [INFO] [Thread-157076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:23:27.384 [DEBUG] [Thread-157076] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:27.384 [DEBUG] [Thread-157076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:23:27.384 [DEBUG] [Thread-157076] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] Compression: none
2025-09-29T13:23:27.385 [DEBUG] [Thread-157076] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:27.441 [DEBUG] [Thread-157076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:27.441 [DEBUG] [Thread-157076] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:27.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:23:27.442 [DEBUG] [Thread-157076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:23:27.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:27.497 [DEBUG] [Thread-157076] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:27.497 [DEBUG] [Thread-157076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:27.497 [DEBUG] [Thread-157076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:27.497 [DEBUG] [Thread-157076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:23:27.498 [DEBUG] [Thread-157076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:27.516 [INFO] [Thread-157076] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:27.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:23:27.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:28.452 [DEBUG] [Thread-157076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:28.452 [DEBUG] [Thread-157076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:28.500 [DEBUG] [Thread-157076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:28.500 [DEBUG] [Thread-157076] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:28.509 [DEBUG] [Thread-157076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:28.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:28.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:23:28.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:23:28.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:28.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:28.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:28.543 [DEBUG] [Thread-157076] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:37.987 [DEBUG] [Thread-157078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:23:38.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:23:38.546 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:23:38.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:23:39.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 23, 13), 13.74, 39.24, 0.0, 16.92, 14.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:23:39.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:23:13
2025-09-29T13:23:39.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:23:39.388 [DEBUG] [Thread-157079] [transport.py] [_log()] starting thread (client mode): 0x2b957010
2025-09-29T13:23:39.388 [DEBUG] [Thread-157079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:39.407 [DEBUG] [Thread-157079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:23:39.407 [INFO] [Thread-157079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:23:39.408 [DEBUG] [Thread-157079] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] Compression: none
2025-09-29T13:23:39.409 [DEBUG] [Thread-157079] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:39.426 [DEBUG] [Thread-157079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:39.426 [DEBUG] [Thread-157079] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:39.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:23:39.427 [DEBUG] [Thread-157079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:23:39.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:39.429 [DEBUG] [Thread-157079] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:39.429 [DEBUG] [Thread-157079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:39.430 [DEBUG] [Thread-157079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:39.430 [DEBUG] [Thread-157079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:23:39.430 [DEBUG] [Thread-157079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:39.453 [INFO] [Thread-157079] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:39.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:40.085 [DEBUG] [Thread-157079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:40.085 [DEBUG] [Thread-157079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:40.085 [DEBUG] [Thread-157079] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:23:40.126 [DEBUG] [Thread-157079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:40.127 [DEBUG] [Thread-157079] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:40.129 [DEBUG] [Thread-157079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:40.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:40.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:23:40.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:23:40.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:23:40.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:40.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:23:40.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:40.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.474375 -999.00  +15.20  19.86     43   +2.70 1 1 1 1 1   888    0 13.91 75.77 ----- 20.4 19.9 118.8 22.5 23.6 -26.4 22.3 -25.5 23.1 -27.3 24.6 -28.3
2025-09-29T13:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.474375
2025-09-29T13:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:23:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:23:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:23:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:23:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:23:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:23:13', tmtdew=13.74, humidity=39.24, cloud=0.0, wind=16.92, temperature=14.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:23:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:23:40.159 [DEBUG] [Thread-157079] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:40.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:23:40.255 [DEBUG] [Thread-157082] [transport.py] [_log()] starting thread (client mode): 0x2b9c09a0
2025-09-29T13:23:40.256 [DEBUG] [Thread-157082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:40.270 [DEBUG] [Thread-157082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:23:40.270 [INFO] [Thread-157082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:40.278 [DEBUG] [Thread-157082] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:40.279 [DEBUG] [Thread-157082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:40.279 [DEBUG] [Thread-157082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:40.279 [DEBUG] [Thread-157082] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:40.279 [DEBUG] [Thread-157082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:40.279 [DEBUG] [Thread-157082] [transport.py] [_log()] Compression: none
2025-09-29T13:23:40.279 [DEBUG] [Thread-157082] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:40.337 [DEBUG] [Thread-157082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:40.337 [DEBUG] [Thread-157082] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:40.338 [DEBUG] [Thread-157082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:23:40.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:23:40.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:40.393 [DEBUG] [Thread-157082] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:40.393 [DEBUG] [Thread-157082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:40.394 [DEBUG] [Thread-157082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:40.394 [DEBUG] [Thread-157082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:23:40.394 [DEBUG] [Thread-157082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:40.413 [INFO] [Thread-157082] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:40.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:23:40.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:41.354 [DEBUG] [Thread-157082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:41.354 [DEBUG] [Thread-157082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:41.405 [DEBUG] [Thread-157082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:41.406 [DEBUG] [Thread-157082] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:41.415 [DEBUG] [Thread-157082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:41.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:41.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:23:41.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:23:41.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:41.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:41.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:41.449 [DEBUG] [Thread-157082] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:41.785 [DEBUG] [Thread-157084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:23:51.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:23:51.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:23:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:23:52.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 23, 45), 13.6, 39.67, 0.0, 19.76, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:23:52.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:23:45
2025-09-29T13:23:52.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:23:52.290 [DEBUG] [Thread-157085] [transport.py] [_log()] starting thread (client mode): 0x28704f40
2025-09-29T13:23:52.290 [DEBUG] [Thread-157085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:52.310 [DEBUG] [Thread-157085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:23:52.310 [INFO] [Thread-157085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:23:52.313 [DEBUG] [Thread-157085] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:52.313 [DEBUG] [Thread-157085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:23:52.313 [DEBUG] [Thread-157085] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:52.313 [DEBUG] [Thread-157085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:52.313 [DEBUG] [Thread-157085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:52.314 [DEBUG] [Thread-157085] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:52.315 [DEBUG] [Thread-157085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:52.315 [DEBUG] [Thread-157085] [transport.py] [_log()] Compression: none
2025-09-29T13:23:52.315 [DEBUG] [Thread-157085] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:52.330 [DEBUG] [Thread-157085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:52.331 [DEBUG] [Thread-157085] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:52.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:23:52.332 [DEBUG] [Thread-157085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:23:52.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:52.334 [DEBUG] [Thread-157085] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:52.334 [DEBUG] [Thread-157085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:52.334 [DEBUG] [Thread-157085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:52.334 [DEBUG] [Thread-157085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:23:52.334 [DEBUG] [Thread-157085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:52.359 [INFO] [Thread-157085] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:52.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:53.040 [DEBUG] [Thread-157087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:23:53.168 [DEBUG] [Thread-157085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:53.168 [DEBUG] [Thread-157085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:53.168 [DEBUG] [Thread-157085] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:23:53.209 [DEBUG] [Thread-157085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:53.209 [DEBUG] [Thread-157085] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:53.212 [DEBUG] [Thread-157085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:53.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:53.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:23:53.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:23:53.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:23:53.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:53.232 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:23:53.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:53.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:53.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:23:53.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.474375 -999.00  +15.20  19.86     43   +2.70 1 1 1 1 1   888    0 13.91 75.77 ----- 20.4 19.9 118.8 22.5 23.6 -26.4 22.3 -25.5 23.1 -27.3 24.6 -28.3
2025-09-29T13:23:53.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:23:53.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:23:53.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.474375
2025-09-29T13:23:53.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:23:53.234 [DEBUG] [Thread-157085] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:53.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:23:53.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:23:53.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:23:53.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:23:53.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:23:45', tmtdew=13.6, humidity=39.67, cloud=0.0, wind=19.76, temperature=14.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:23:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:23:53.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:23:53.329 [DEBUG] [Thread-157089] [transport.py] [_log()] starting thread (client mode): 0x2b90ff10
2025-09-29T13:23:53.329 [DEBUG] [Thread-157089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:23:53.343 [DEBUG] [Thread-157089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:23:53.343 [INFO] [Thread-157089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:23:53.351 [DEBUG] [Thread-157089] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:23:53.351 [DEBUG] [Thread-157089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] client lang: <none>
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] server lang: <none>
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] kex follows: False
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] Compression: none
2025-09-29T13:23:53.352 [DEBUG] [Thread-157089] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:23:53.409 [DEBUG] [Thread-157089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:23:53.410 [DEBUG] [Thread-157089] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:23:53.410 [DEBUG] [Thread-157089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:23:53.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:23:53.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:23:53.465 [DEBUG] [Thread-157089] [transport.py] [_log()] userauth is OK
2025-09-29T13:23:53.465 [DEBUG] [Thread-157089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:23:53.465 [DEBUG] [Thread-157089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:23:53.466 [DEBUG] [Thread-157089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:23:53.466 [DEBUG] [Thread-157089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:23:53.484 [INFO] [Thread-157089] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:23:53.485 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:23:53.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:23:54.442 [DEBUG] [Thread-157089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:23:54.443 [DEBUG] [Thread-157089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:23:54.490 [DEBUG] [Thread-157089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:23:54.490 [DEBUG] [Thread-157089] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:23:54.499 [DEBUG] [Thread-157089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:23:54.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:23:54.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:23:54.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:23:54.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:23:54.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:23:54.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:23:54.534 [DEBUG] [Thread-157089] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:23:55.191 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:23:55.192 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:24:04.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:24:04.536 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:24:04.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:24:05.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 23, 45), 13.6, 39.67, 0.0, 19.76, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:24:05.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:23:45
2025-09-29T13:24:05.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:24:05.361 [DEBUG] [Thread-157091] [transport.py] [_log()] starting thread (client mode): 0x2b957880
2025-09-29T13:24:05.361 [DEBUG] [Thread-157091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:05.383 [DEBUG] [Thread-157091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:24:05.383 [INFO] [Thread-157091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:24:05.386 [DEBUG] [Thread-157091] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:05.386 [DEBUG] [Thread-157091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:05.387 [DEBUG] [Thread-157091] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:05.388 [DEBUG] [Thread-157091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:05.388 [DEBUG] [Thread-157091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:05.388 [DEBUG] [Thread-157091] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:05.388 [DEBUG] [Thread-157091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:05.388 [DEBUG] [Thread-157091] [transport.py] [_log()] Compression: none
2025-09-29T13:24:05.388 [DEBUG] [Thread-157091] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:05.406 [DEBUG] [Thread-157091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:05.407 [DEBUG] [Thread-157091] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:05.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:24:05.408 [DEBUG] [Thread-157091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:24:05.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:05.410 [DEBUG] [Thread-157091] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:05.410 [DEBUG] [Thread-157091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:05.410 [DEBUG] [Thread-157091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:05.410 [DEBUG] [Thread-157091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:24:05.410 [DEBUG] [Thread-157091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:05.431 [INFO] [Thread-157091] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:05.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:06.227 [DEBUG] [Thread-157091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:06.227 [DEBUG] [Thread-157091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:06.227 [DEBUG] [Thread-157091] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:24:06.269 [DEBUG] [Thread-157091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:06.269 [DEBUG] [Thread-157091] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:06.271 [DEBUG] [Thread-157091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:06.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:06.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:24:06.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:24:06.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:24:06.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:06.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:24:06.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:06.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:06.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:24:06.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.474375 -999.00  +15.20  19.86     43   +2.70 1 1 1 1 1   888    0 13.91 75.77 ----- 20.4 19.9 118.8 22.5 23.6 -26.4 22.3 -25.5 23.1 -27.3 24.6 -28.3
2025-09-29T13:24:06.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:24:06.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:24:06.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.474375
2025-09-29T13:24:06.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:24:06.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:24:06.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:24:06.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:24:06.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:24:06.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:23:45', tmtdew=13.6, humidity=39.67, cloud=0.0, wind=19.76, temperature=14.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:23:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:24:06.297 [DEBUG] [Thread-157091] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:06.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:24:06.393 [DEBUG] [Thread-157094] [transport.py] [_log()] starting thread (client mode): 0x2b9c3670
2025-09-29T13:24:06.393 [DEBUG] [Thread-157094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:06.408 [DEBUG] [Thread-157094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:24:06.408 [INFO] [Thread-157094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:24:06.415 [DEBUG] [Thread-157094] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:06.416 [DEBUG] [Thread-157094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:24:06.416 [DEBUG] [Thread-157094] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:06.416 [DEBUG] [Thread-157094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:06.416 [DEBUG] [Thread-157094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:06.416 [DEBUG] [Thread-157094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:06.416 [DEBUG] [Thread-157094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:06.416 [DEBUG] [Thread-157094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:06.417 [DEBUG] [Thread-157094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:06.418 [DEBUG] [Thread-157094] [transport.py] [_log()] Compression: none
2025-09-29T13:24:06.418 [DEBUG] [Thread-157094] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:06.473 [DEBUG] [Thread-157094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:06.473 [DEBUG] [Thread-157094] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:06.474 [DEBUG] [Thread-157094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:24:06.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:24:06.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:06.529 [DEBUG] [Thread-157094] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:06.529 [DEBUG] [Thread-157094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:06.529 [DEBUG] [Thread-157094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:06.529 [DEBUG] [Thread-157094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:24:06.529 [DEBUG] [Thread-157094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:06.548 [INFO] [Thread-157094] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:06.548 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:24:06.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:07.481 [DEBUG] [Thread-157094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:07.482 [DEBUG] [Thread-157094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:07.529 [DEBUG] [Thread-157094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:07.529 [DEBUG] [Thread-157094] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:07.538 [DEBUG] [Thread-157094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:07.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:07.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:24:07.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:24:07.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:07.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:07.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:07.573 [DEBUG] [Thread-157094] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:08.083 [DEBUG] [Thread-157096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:24:17.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:24:17.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:24:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:24:18.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 23, 45), 13.6, 39.67, 0.0, 19.76, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:24:18.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:23:45
2025-09-29T13:24:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:24:18.437 [DEBUG] [Thread-157097] [transport.py] [_log()] starting thread (client mode): 0x2b96a290
2025-09-29T13:24:18.437 [DEBUG] [Thread-157097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:18.457 [DEBUG] [Thread-157097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:24:18.457 [INFO] [Thread-157097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:18.460 [DEBUG] [Thread-157097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:18.461 [DEBUG] [Thread-157097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:18.461 [DEBUG] [Thread-157097] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:18.461 [DEBUG] [Thread-157097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:18.461 [DEBUG] [Thread-157097] [transport.py] [_log()] Compression: none
2025-09-29T13:24:18.461 [DEBUG] [Thread-157097] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:18.476 [DEBUG] [Thread-157097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:18.476 [DEBUG] [Thread-157097] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:18.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:24:18.476 [DEBUG] [Thread-157097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:24:18.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:18.476 [DEBUG] [Thread-157097] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:18.476 [DEBUG] [Thread-157097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:18.477 [DEBUG] [Thread-157097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:18.477 [DEBUG] [Thread-157097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:24:18.477 [DEBUG] [Thread-157097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:18.487 [INFO] [Thread-157097] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:18.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:19.103 [DEBUG] [Thread-157097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:19.103 [DEBUG] [Thread-157097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:19.104 [DEBUG] [Thread-157097] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:24:19.145 [DEBUG] [Thread-157097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:19.145 [DEBUG] [Thread-157097] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:19.153 [DEBUG] [Thread-157097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:19.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:19.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:24:19.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:24:19.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:24:19.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:19.171 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:24:19.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.475069 -999.00  +14.60  13.90     44   +2.60 1 1 1 1 1   888    0 14.46 88.16 ----- 19.3 13.9 165.0 19.7 23.4 -27.6 22.3 -27.9 23.0 -28.0 24.4 -29.2
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.475069
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:24:19.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:23:45', tmtdew=13.6, humidity=39.67, cloud=0.0, wind=19.76, temperature=14.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:24:05.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:24:19.172 [DEBUG] [Thread-157097] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:19.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:24:19.255 [DEBUG] [Thread-157100] [transport.py] [_log()] starting thread (client mode): 0x2b96b640
2025-09-29T13:24:19.256 [DEBUG] [Thread-157100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:19.270 [DEBUG] [Thread-157100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:24:19.270 [INFO] [Thread-157100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:19.277 [DEBUG] [Thread-157100] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:19.278 [DEBUG] [Thread-157100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:19.278 [DEBUG] [Thread-157100] [transport.py] [_log()] Compression: none
2025-09-29T13:24:19.278 [DEBUG] [Thread-157100] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:19.335 [DEBUG] [Thread-157100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:19.335 [DEBUG] [Thread-157100] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:19.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:24:19.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:19.336 [DEBUG] [Thread-157100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:24:19.393 [DEBUG] [Thread-157100] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:19.393 [DEBUG] [Thread-157100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:19.393 [DEBUG] [Thread-157100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:19.393 [DEBUG] [Thread-157100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:24:19.393 [DEBUG] [Thread-157100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:19.408 [INFO] [Thread-157100] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:19.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:24:19.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:20.316 [DEBUG] [Thread-157100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:20.316 [DEBUG] [Thread-157100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:20.364 [DEBUG] [Thread-157100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:20.365 [DEBUG] [Thread-157100] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:20.374 [DEBUG] [Thread-157100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:20.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:20.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:24:20.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:24:20.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:20.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:20.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:20.409 [DEBUG] [Thread-157100] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:23.135 [DEBUG] [Thread-157102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:24:30.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:24:30.412 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:24:30.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:24:30.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 24, 17), 13.66, 39.51, 0.0, 19.46, 14.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:24:30.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:24:17
2025-09-29T13:24:31.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:24:31.248 [DEBUG] [Thread-157103] [transport.py] [_log()] starting thread (client mode): 0x2b90f7c0
2025-09-29T13:24:31.248 [DEBUG] [Thread-157103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:31.267 [DEBUG] [Thread-157103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:24:31.267 [INFO] [Thread-157103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:24:31.268 [DEBUG] [Thread-157103] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:31.268 [DEBUG] [Thread-157103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:24:31.268 [DEBUG] [Thread-157103] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:31.268 [DEBUG] [Thread-157103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:31.268 [DEBUG] [Thread-157103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:31.268 [DEBUG] [Thread-157103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] Compression: none
2025-09-29T13:24:31.269 [DEBUG] [Thread-157103] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:31.277 [DEBUG] [Thread-157103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:31.277 [DEBUG] [Thread-157103] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:31.277 [DEBUG] [Thread-157103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:24:31.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:24:31.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:31.279 [DEBUG] [Thread-157103] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:31.279 [DEBUG] [Thread-157103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:31.279 [DEBUG] [Thread-157103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:31.279 [DEBUG] [Thread-157103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:24:31.279 [DEBUG] [Thread-157103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:31.296 [INFO] [Thread-157103] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:31.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:32.081 [DEBUG] [Thread-157103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:32.081 [DEBUG] [Thread-157103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:32.081 [DEBUG] [Thread-157103] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:24:32.122 [DEBUG] [Thread-157103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:32.122 [DEBUG] [Thread-157103] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:32.125 [DEBUG] [Thread-157103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:32.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:32.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:24:32.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:24:32.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:24:32.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:32.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:24:32.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:32.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:32.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:24:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.475069 -999.00  +14.60  13.90     44   +2.60 1 1 1 1 1   888    0 14.46 88.16 ----- 19.3 13.9 165.0 19.7 23.4 -27.6 22.3 -27.9 23.0 -28.0 24.4 -29.2
2025-09-29T13:24:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:24:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:24:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.475069
2025-09-29T13:24:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:24:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:24:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:24:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:24:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:24:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:24:17', tmtdew=13.66, humidity=39.51, cloud=0.0, wind=19.46, temperature=14.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:24:05.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:24:32.152 [DEBUG] [Thread-157103] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:32.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:24:32.259 [DEBUG] [Thread-157106] [transport.py] [_log()] starting thread (client mode): 0x2e3c2200
2025-09-29T13:24:32.259 [DEBUG] [Thread-157106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:32.275 [DEBUG] [Thread-157106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:24:32.275 [INFO] [Thread-157106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:24:32.282 [DEBUG] [Thread-157106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:32.283 [DEBUG] [Thread-157106] [transport.py] [_log()] Compression: none
2025-09-29T13:24:32.284 [DEBUG] [Thread-157106] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:32.342 [DEBUG] [Thread-157106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:32.342 [DEBUG] [Thread-157106] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:32.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:24:32.343 [DEBUG] [Thread-157106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:24:32.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:32.397 [DEBUG] [Thread-157106] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:32.397 [DEBUG] [Thread-157106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:32.397 [DEBUG] [Thread-157106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:32.398 [DEBUG] [Thread-157106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:24:32.398 [DEBUG] [Thread-157106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:32.416 [INFO] [Thread-157106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:32.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:24:32.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:33.392 [DEBUG] [Thread-157106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:33.392 [DEBUG] [Thread-157106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:33.441 [DEBUG] [Thread-157106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:33.441 [DEBUG] [Thread-157106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:33.450 [DEBUG] [Thread-157106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:33.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:33.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:24:33.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:24:33.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:33.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:33.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:33.485 [DEBUG] [Thread-157106] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:38.179 [DEBUG] [Thread-157108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:24:41.818 [DEBUG] [Thread-157109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:24:43.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:24:43.486 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:24:43.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:24:44.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 24, 17), 13.66, 39.51, 0.0, 19.46, 14.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:24:44.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:24:17
2025-09-29T13:24:44.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:24:44.327 [DEBUG] [Thread-157110] [transport.py] [_log()] starting thread (client mode): 0x2b956c80
2025-09-29T13:24:44.327 [DEBUG] [Thread-157110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:44.341 [DEBUG] [Thread-157110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:24:44.341 [INFO] [Thread-157110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:24:44.343 [DEBUG] [Thread-157110] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] Compression: none
2025-09-29T13:24:44.344 [DEBUG] [Thread-157110] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:44.352 [DEBUG] [Thread-157110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:44.353 [DEBUG] [Thread-157110] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:44.353 [DEBUG] [Thread-157110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:24:44.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:24:44.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:44.354 [DEBUG] [Thread-157110] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:44.354 [DEBUG] [Thread-157110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:44.354 [DEBUG] [Thread-157110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:44.354 [DEBUG] [Thread-157110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:24:44.354 [DEBUG] [Thread-157110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:44.368 [INFO] [Thread-157110] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:44.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:44.962 [DEBUG] [Thread-157110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:44.963 [DEBUG] [Thread-157110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:44.963 [DEBUG] [Thread-157110] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:24:45.003 [DEBUG] [Thread-157110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:45.003 [DEBUG] [Thread-157110] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:45.006 [DEBUG] [Thread-157110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:45.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:45.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:24:45.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:24:45.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:24:45.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:45.028 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:24:45.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:45.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:45.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:24:45.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.475417 -999.00  +14.30  12.30     45   +2.50 1 1 1 1 1   888    0 14.40 90.88 ----- 9.5 12.3 167.4 19.3 23.3 -27.6 22.2 -26.2 23.0 -27.0 24.4 -27.8
2025-09-29T13:24:45.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:24:45.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:24:45.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.475417
2025-09-29T13:24:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:24:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:24:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:24:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:24:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:24:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:24:17', tmtdew=13.66, humidity=39.51, cloud=0.0, wind=19.46, temperature=14.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:24:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:24:45.031 [DEBUG] [Thread-157110] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:45.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:24:45.118 [DEBUG] [Thread-157113] [transport.py] [_log()] starting thread (client mode): 0x2b957c70
2025-09-29T13:24:45.118 [DEBUG] [Thread-157113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:45.134 [DEBUG] [Thread-157113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:24:45.134 [INFO] [Thread-157113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:24:45.141 [DEBUG] [Thread-157113] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:45.142 [DEBUG] [Thread-157113] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:45.143 [DEBUG] [Thread-157113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:45.143 [DEBUG] [Thread-157113] [transport.py] [_log()] Compression: none
2025-09-29T13:24:45.143 [DEBUG] [Thread-157113] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:45.201 [DEBUG] [Thread-157113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:45.201 [DEBUG] [Thread-157113] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:45.201 [DEBUG] [Thread-157113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:24:45.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:24:45.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:45.258 [DEBUG] [Thread-157113] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:45.259 [DEBUG] [Thread-157113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:45.259 [DEBUG] [Thread-157113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:45.259 [DEBUG] [Thread-157113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:24:45.259 [DEBUG] [Thread-157113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:45.278 [INFO] [Thread-157113] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:45.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:24:45.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:46.212 [DEBUG] [Thread-157113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:46.213 [DEBUG] [Thread-157113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:46.260 [DEBUG] [Thread-157113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:46.260 [DEBUG] [Thread-157113] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:46.269 [DEBUG] [Thread-157113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:46.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:46.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:24:46.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:24:46.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:46.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:46.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:46.303 [DEBUG] [Thread-157113] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:53.210 [DEBUG] [Thread-157115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:24:55.336 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:24:55.337 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:24:56.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:24:56.306 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:24:56.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:24:56.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 24, 49), 13.42, 39.82, 0.0, 19.92, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:24:56.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:24:49
2025-09-29T13:24:56.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:24:57.133 [DEBUG] [Thread-157116] [transport.py] [_log()] starting thread (client mode): 0x2b9c0e20
2025-09-29T13:24:57.133 [DEBUG] [Thread-157116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:57.154 [DEBUG] [Thread-157116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:24:57.154 [INFO] [Thread-157116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:24:57.157 [DEBUG] [Thread-157116] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:57.157 [DEBUG] [Thread-157116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:24:57.157 [DEBUG] [Thread-157116] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:57.157 [DEBUG] [Thread-157116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] Compression: none
2025-09-29T13:24:57.158 [DEBUG] [Thread-157116] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:57.175 [DEBUG] [Thread-157116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:57.175 [DEBUG] [Thread-157116] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:57.176 [DEBUG] [Thread-157116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:24:57.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:24:57.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:57.178 [DEBUG] [Thread-157116] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:57.178 [DEBUG] [Thread-157116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:57.178 [DEBUG] [Thread-157116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:57.178 [DEBUG] [Thread-157116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:24:57.178 [DEBUG] [Thread-157116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:57.195 [INFO] [Thread-157116] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:57.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:58.005 [DEBUG] [Thread-157116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:58.006 [DEBUG] [Thread-157116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:58.006 [DEBUG] [Thread-157116] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:24:58.046 [DEBUG] [Thread-157116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:58.046 [DEBUG] [Thread-157116] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:58.049 [DEBUG] [Thread-157116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:58.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:58.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:24:58.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:24:58.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:24:58.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:58.073 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:24:58.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:58.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:58.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:24:58.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.475417 -999.00  +14.30  12.30     45   +2.50 1 1 1 1 1   888    0 14.40 90.88 ----- 9.5 12.3 167.4 19.3 23.3 -27.6 22.2 -26.2 23.0 -27.0 24.4 -27.8
2025-09-29T13:24:58.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:24:58.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:24:58.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.475417
2025-09-29T13:24:58.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:24:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:24:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:24:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:24:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:24:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:24:49', tmtdew=13.42, humidity=39.82, cloud=0.0, wind=19.92, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:24:36.029', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:24:58.076 [DEBUG] [Thread-157116] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:24:58.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:24:58.170 [DEBUG] [Thread-157119] [transport.py] [_log()] starting thread (client mode): 0x2b90d060
2025-09-29T13:24:58.170 [DEBUG] [Thread-157119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:24:58.184 [DEBUG] [Thread-157119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:24:58.184 [INFO] [Thread-157119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] client lang: <none>
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] server lang: <none>
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] kex follows: False
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] Compression: none
2025-09-29T13:24:58.192 [DEBUG] [Thread-157119] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:24:58.249 [DEBUG] [Thread-157119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:24:58.249 [DEBUG] [Thread-157119] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:24:58.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:24:58.259 [DEBUG] [Thread-157119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:24:58.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:24:58.305 [DEBUG] [Thread-157119] [transport.py] [_log()] userauth is OK
2025-09-29T13:24:58.306 [DEBUG] [Thread-157119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:24:58.306 [DEBUG] [Thread-157119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:24:58.306 [DEBUG] [Thread-157119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:24:58.306 [DEBUG] [Thread-157119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:24:58.325 [INFO] [Thread-157119] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:24:58.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:24:58.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:24:59.249 [DEBUG] [Thread-157119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:24:59.250 [DEBUG] [Thread-157119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:24:59.297 [DEBUG] [Thread-157119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:24:59.297 [DEBUG] [Thread-157119] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:24:59.306 [DEBUG] [Thread-157119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:24:59.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:24:59.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:24:59.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:24:59.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:24:59.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:24:59.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:24:59.341 [DEBUG] [Thread-157119] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:25:08.251 [DEBUG] [Thread-157121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:25:09.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:25:09.344 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:25:09.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:25:09.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 24, 49), 13.42, 39.82, 0.0, 19.92, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:25:09.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:24:49
2025-09-29T13:25:10.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:25:10.174 [DEBUG] [Thread-157122] [transport.py] [_log()] starting thread (client mode): 0x2b9afc40
2025-09-29T13:25:10.174 [DEBUG] [Thread-157122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:25:10.186 [DEBUG] [Thread-157122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:25:10.186 [INFO] [Thread-157122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] client lang: <none>
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] server lang: <none>
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] kex follows: False
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] Compression: none
2025-09-29T13:25:10.188 [DEBUG] [Thread-157122] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:25:10.200 [DEBUG] [Thread-157122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:25:10.200 [DEBUG] [Thread-157122] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:25:10.200 [DEBUG] [Thread-157122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:25:10.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:25:10.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:25:10.202 [DEBUG] [Thread-157122] [transport.py] [_log()] userauth is OK
2025-09-29T13:25:10.202 [DEBUG] [Thread-157122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:25:10.202 [DEBUG] [Thread-157122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:25:10.202 [DEBUG] [Thread-157122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:25:10.202 [DEBUG] [Thread-157122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:25:10.217 [INFO] [Thread-157122] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:25:10.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:25:18.315 [DEBUG] [Thread-157122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:25:18.315 [DEBUG] [Thread-157122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:25:18.316 [DEBUG] [Thread-157122] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:25:18.356 [DEBUG] [Thread-157122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:25:18.357 [DEBUG] [Thread-157122] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:25:18.359 [DEBUG] [Thread-157122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:25:18.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:25:18.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:25:18.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:25:18.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:25:18.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:25:18.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:25:18.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:25:18.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:25:18.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:25:18.453 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-09-29T13:25:18.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:24:49', tmtdew=13.42, humidity=39.82, cloud=0.0, wind=19.92, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:25:18.454 [DEBUG] [Thread-157122] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:25:18.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:25:18.545 [DEBUG] [Thread-157125] [transport.py] [_log()] starting thread (client mode): 0x2b969330
2025-09-29T13:25:18.545 [DEBUG] [Thread-157125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:25:18.564 [DEBUG] [Thread-157125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:25:18.565 [INFO] [Thread-157125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:25:18.572 [DEBUG] [Thread-157125] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:25:18.572 [DEBUG] [Thread-157125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:25:18.572 [DEBUG] [Thread-157125] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] client lang: <none>
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] server lang: <none>
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] kex follows: False
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] Compression: none
2025-09-29T13:25:18.573 [DEBUG] [Thread-157125] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:25:18.629 [DEBUG] [Thread-157125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:25:18.630 [DEBUG] [Thread-157125] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:25:18.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:25:18.631 [DEBUG] [Thread-157125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:25:18.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:25:18.685 [DEBUG] [Thread-157125] [transport.py] [_log()] userauth is OK
2025-09-29T13:25:18.686 [DEBUG] [Thread-157125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:25:18.686 [DEBUG] [Thread-157125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:25:18.686 [DEBUG] [Thread-157125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:25:18.686 [DEBUG] [Thread-157125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:25:18.707 [INFO] [Thread-157125] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:25:18.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:25:19.662 [DEBUG] [Thread-157125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:25:19.662 [DEBUG] [Thread-157125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:25:19.709 [DEBUG] [Thread-157125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:25:19.710 [DEBUG] [Thread-157125] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:25:19.718 [DEBUG] [Thread-157125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:25:19.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:25:19.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:25:19.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:25:19.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:25:19.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:25:19.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:25:19.754 [DEBUG] [Thread-157125] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:25:23.292 [DEBUG] [Thread-157127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:25:29.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:25:29.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:25:29.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:25:30.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 25, 21), 13.2, 40.4, 0.0, 20.31, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:25:30.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:25:21
2025-09-29T13:25:30.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:25:30.578 [DEBUG] [Thread-157128] [transport.py] [_log()] starting thread (client mode): 0x2e34b610
2025-09-29T13:25:30.578 [DEBUG] [Thread-157128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:25:30.598 [DEBUG] [Thread-157128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:25:30.598 [INFO] [Thread-157128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:25:30.601 [DEBUG] [Thread-157128] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:25:30.601 [DEBUG] [Thread-157128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] client lang: <none>
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] server lang: <none>
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] kex follows: False
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:25:30.602 [DEBUG] [Thread-157128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:25:30.603 [DEBUG] [Thread-157128] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:25:30.603 [DEBUG] [Thread-157128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:25:30.603 [DEBUG] [Thread-157128] [transport.py] [_log()] Compression: none
2025-09-29T13:25:30.603 [DEBUG] [Thread-157128] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:25:30.621 [DEBUG] [Thread-157128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:25:30.621 [DEBUG] [Thread-157128] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:25:30.622 [DEBUG] [Thread-157128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:25:30.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:25:30.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:25:30.624 [DEBUG] [Thread-157128] [transport.py] [_log()] userauth is OK
2025-09-29T13:25:30.624 [DEBUG] [Thread-157128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:25:30.624 [DEBUG] [Thread-157128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:25:30.624 [DEBUG] [Thread-157128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:25:30.624 [DEBUG] [Thread-157128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:25:30.648 [INFO] [Thread-157128] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:25:30.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:25:31.250 [DEBUG] [Thread-157128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:25:31.251 [DEBUG] [Thread-157128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:25:31.251 [DEBUG] [Thread-157128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:25:31.291 [DEBUG] [Thread-157128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:25:31.291 [DEBUG] [Thread-157128] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:25:31.294 [DEBUG] [Thread-157128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:25:31.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:25:31.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:25:31.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:25:31.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:25:31.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:25:31.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:25:31.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:25:31.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:25:31.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:25:31.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.475763 -999.00  +14.20   5.40     45   +2.60 1 1 1 1 1   888    0 14.22 83.45 ----- 4.0 5.4 183.6 11.3 23.4 -26.8 22.2 -26.3 23.1 -26.3 24.6 -27.2
2025-09-29T13:25:31.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:25:31.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:25:31.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.475763
2025-09-29T13:25:31.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:25:31.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:25:31.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:25:31.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:25:31.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:25:31.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:25:21', tmtdew=13.2, humidity=40.4, cloud=0.0, wind=20.31, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:25:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:25:31.312 [DEBUG] [Thread-157128] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:25:31.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:25:31.406 [DEBUG] [Thread-157131] [transport.py] [_log()] starting thread (client mode): 0x2b954520
2025-09-29T13:25:31.406 [DEBUG] [Thread-157131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:25:31.420 [DEBUG] [Thread-157131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:25:31.420 [INFO] [Thread-157131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:25:31.427 [DEBUG] [Thread-157131] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] client lang: <none>
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] server lang: <none>
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] kex follows: False
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] Compression: none
2025-09-29T13:25:31.428 [DEBUG] [Thread-157131] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:25:31.485 [DEBUG] [Thread-157131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:25:31.485 [DEBUG] [Thread-157131] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:25:31.486 [DEBUG] [Thread-157131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:25:31.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:25:31.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:25:31.541 [DEBUG] [Thread-157131] [transport.py] [_log()] userauth is OK
2025-09-29T13:25:31.541 [DEBUG] [Thread-157131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:25:31.541 [DEBUG] [Thread-157131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:25:31.542 [DEBUG] [Thread-157131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:25:31.542 [DEBUG] [Thread-157131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:25:31.560 [INFO] [Thread-157131] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:25:31.560 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:25:31.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:25:32.519 [DEBUG] [Thread-157131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:25:32.519 [DEBUG] [Thread-157131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:25:32.567 [DEBUG] [Thread-157131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:25:32.567 [DEBUG] [Thread-157131] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:25:32.576 [DEBUG] [Thread-157131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:25:32.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:25:32.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:25:32.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:25:32.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:25:32.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:25:32.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:25:32.611 [DEBUG] [Thread-157131] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:25:38.328 [DEBUG] [Thread-157133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:25:41.867 [DEBUG] [Thread-157134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:25:42.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:25:42.614 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:25:42.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:25:43.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 25, 21), 13.2, 40.4, 0.0, 20.31, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:25:43.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:25:21
2025-09-29T13:25:43.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:25:43.476 [DEBUG] [Thread-157135] [transport.py] [_log()] starting thread (client mode): 0x2b9af070
2025-09-29T13:25:43.476 [DEBUG] [Thread-157135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:25:43.497 [DEBUG] [Thread-157135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:25:43.497 [INFO] [Thread-157135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] client lang: <none>
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] server lang: <none>
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] kex follows: False
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:25:43.500 [DEBUG] [Thread-157135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:25:43.501 [DEBUG] [Thread-157135] [transport.py] [_log()] Compression: none
2025-09-29T13:25:43.501 [DEBUG] [Thread-157135] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:25:43.517 [DEBUG] [Thread-157135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:25:43.517 [DEBUG] [Thread-157135] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:25:43.517 [DEBUG] [Thread-157135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:25:43.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:25:43.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:25:43.518 [DEBUG] [Thread-157135] [transport.py] [_log()] userauth is OK
2025-09-29T13:25:43.518 [DEBUG] [Thread-157135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:25:43.518 [DEBUG] [Thread-157135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:25:43.518 [DEBUG] [Thread-157135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:25:43.518 [DEBUG] [Thread-157135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:25:43.528 [INFO] [Thread-157135] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:25:43.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:25:44.290 [DEBUG] [Thread-157135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:25:44.290 [DEBUG] [Thread-157135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:25:44.290 [DEBUG] [Thread-157135] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:25:44.331 [DEBUG] [Thread-157135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:25:44.331 [DEBUG] [Thread-157135] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:25:44.333 [DEBUG] [Thread-157135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:25:44.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:25:44.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:25:44.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:25:44.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:25:44.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:25:44.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:25:44.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.475763 -999.00  +14.20   5.40     45   +2.60 1 1 1 1 1   888    0 14.22 83.45 ----- 4.0 5.4 183.6 11.3 23.4 -26.8 22.2 -26.3 23.1 -26.3 24.6 -27.2
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.475763
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:25:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:25:21', tmtdew=13.2, humidity=40.4, cloud=0.0, wind=20.31, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:25:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:25:44.351 [DEBUG] [Thread-157135] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:25:44.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:25:44.437 [DEBUG] [Thread-157138] [transport.py] [_log()] starting thread (client mode): 0x2b90d060
2025-09-29T13:25:44.437 [DEBUG] [Thread-157138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:25:44.455 [DEBUG] [Thread-157138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:25:44.455 [INFO] [Thread-157138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] client lang: <none>
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] server lang: <none>
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] kex follows: False
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] Compression: none
2025-09-29T13:25:44.463 [DEBUG] [Thread-157138] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:25:44.520 [DEBUG] [Thread-157138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:25:44.520 [DEBUG] [Thread-157138] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:25:44.520 [DEBUG] [Thread-157138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:25:44.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:25:44.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:25:44.577 [DEBUG] [Thread-157138] [transport.py] [_log()] userauth is OK
2025-09-29T13:25:44.577 [DEBUG] [Thread-157138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:25:44.577 [DEBUG] [Thread-157138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:25:44.577 [DEBUG] [Thread-157138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:25:44.577 [DEBUG] [Thread-157138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:25:44.591 [INFO] [Thread-157138] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:25:44.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:25:44.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:25:45.565 [DEBUG] [Thread-157138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:25:45.565 [DEBUG] [Thread-157138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:25:45.613 [DEBUG] [Thread-157138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:25:45.613 [DEBUG] [Thread-157138] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:25:45.621 [DEBUG] [Thread-157138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:25:45.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:25:45.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:25:45.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:25:45.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:25:45.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:25:45.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:25:45.653 [DEBUG] [Thread-157138] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:25:53.375 [DEBUG] [Thread-157140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:25:55.479 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:25:55.480 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:25:55.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:25:55.655 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:25:55.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:25:56.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 25, 21), 13.2, 40.4, 0.0, 20.31, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:25:56.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:25:21
2025-09-29T13:25:56.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:25:56.482 [DEBUG] [Thread-157141] [transport.py] [_log()] starting thread (client mode): 0x2b90f580
2025-09-29T13:25:56.482 [DEBUG] [Thread-157141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:25:56.502 [DEBUG] [Thread-157141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:25:56.502 [INFO] [Thread-157141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] client lang: <none>
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] server lang: <none>
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] kex follows: False
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] Compression: none
2025-09-29T13:25:56.506 [DEBUG] [Thread-157141] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:25:56.522 [DEBUG] [Thread-157141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:25:56.523 [DEBUG] [Thread-157141] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:25:56.523 [DEBUG] [Thread-157141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:25:56.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:25:56.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:25:56.525 [DEBUG] [Thread-157141] [transport.py] [_log()] userauth is OK
2025-09-29T13:25:56.525 [DEBUG] [Thread-157141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:25:56.525 [DEBUG] [Thread-157141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:25:56.525 [DEBUG] [Thread-157141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:25:56.526 [DEBUG] [Thread-157141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:25:56.549 [INFO] [Thread-157141] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:25:56.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:25:57.089 [DEBUG] [Thread-157141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:25:57.089 [DEBUG] [Thread-157141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:25:57.089 [DEBUG] [Thread-157141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:25:57.130 [DEBUG] [Thread-157141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:25:57.130 [DEBUG] [Thread-157141] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:25:57.136 [DEBUG] [Thread-157141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:25:57.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:25:57.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:25:57.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:25:57.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:25:57.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:25:57.159 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:25:57.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:25:57.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:25:57.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:25:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.476111 -999.00  +14.50   4.08     45   +2.80 1 1 1 1 1   888    0 14.51 89.34 ----- 5.9 4.1 191.2 7.5 23.5 -26.6 22.3 -26.4 23.2 -26.3 24.7 -27.6
2025-09-29T13:25:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:25:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:25:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.476111
2025-09-29T13:25:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:25:57.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:25:57.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:25:57.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:25:57.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:25:57.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:25:21', tmtdew=13.2, humidity=40.4, cloud=0.0, wind=20.31, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:25:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:25:57.161 [DEBUG] [Thread-157141] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:25:57.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:25:57.263 [DEBUG] [Thread-157144] [transport.py] [_log()] starting thread (client mode): 0x2b969b10
2025-09-29T13:25:57.263 [DEBUG] [Thread-157144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:25:57.278 [DEBUG] [Thread-157144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:25:57.278 [INFO] [Thread-157144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:25:57.286 [DEBUG] [Thread-157144] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:25:57.286 [DEBUG] [Thread-157144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:25:57.286 [DEBUG] [Thread-157144] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:25:57.286 [DEBUG] [Thread-157144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:57.286 [DEBUG] [Thread-157144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:25:57.286 [DEBUG] [Thread-157144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] client lang: <none>
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] server lang: <none>
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] kex follows: False
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] Compression: none
2025-09-29T13:25:57.287 [DEBUG] [Thread-157144] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:25:57.345 [DEBUG] [Thread-157144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:25:57.346 [DEBUG] [Thread-157144] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:25:57.346 [DEBUG] [Thread-157144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:25:57.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:25:57.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:25:57.403 [DEBUG] [Thread-157144] [transport.py] [_log()] userauth is OK
2025-09-29T13:25:57.403 [DEBUG] [Thread-157144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:25:57.403 [DEBUG] [Thread-157144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:25:57.403 [DEBUG] [Thread-157144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:25:57.404 [DEBUG] [Thread-157144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:25:57.423 [INFO] [Thread-157144] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:25:57.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:25:57.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:25:58.375 [DEBUG] [Thread-157144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:25:58.375 [DEBUG] [Thread-157144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:25:58.423 [DEBUG] [Thread-157144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:25:58.423 [DEBUG] [Thread-157144] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:25:58.433 [DEBUG] [Thread-157144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:25:58.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:25:58.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:25:58.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:25:58.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:25:58.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:25:58.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:25:58.468 [DEBUG] [Thread-157144] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:08.403 [DEBUG] [Thread-157146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:26:08.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:26:08.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:26:08.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:26:09.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 25, 53), 13.13, 40.59, 0.0, 17.19, 13.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:26:09.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:25:53
2025-09-29T13:26:09.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:26:09.305 [DEBUG] [Thread-157147] [transport.py] [_log()] starting thread (client mode): 0x2b957940
2025-09-29T13:26:09.305 [DEBUG] [Thread-157147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:26:09.326 [DEBUG] [Thread-157147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:26:09.326 [INFO] [Thread-157147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] client lang: <none>
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] server lang: <none>
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] kex follows: False
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] Compression: none
2025-09-29T13:26:09.330 [DEBUG] [Thread-157147] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:26:09.346 [DEBUG] [Thread-157147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:26:09.347 [DEBUG] [Thread-157147] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:26:09.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:26:09.348 [DEBUG] [Thread-157147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:26:09.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:26:09.350 [DEBUG] [Thread-157147] [transport.py] [_log()] userauth is OK
2025-09-29T13:26:09.350 [DEBUG] [Thread-157147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:26:09.350 [DEBUG] [Thread-157147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:26:09.351 [DEBUG] [Thread-157147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:26:09.351 [DEBUG] [Thread-157147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:26:09.374 [INFO] [Thread-157147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:26:09.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:26:10.207 [DEBUG] [Thread-157147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:26:10.207 [DEBUG] [Thread-157147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:26:10.207 [DEBUG] [Thread-157147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:26:10.247 [DEBUG] [Thread-157147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:26:10.248 [DEBUG] [Thread-157147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:26:10.250 [DEBUG] [Thread-157147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:26:10.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:26:10.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:26:10.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:26:10.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:26:10.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:26:10.275 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:26:10.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:26:10.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:26:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:26:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.476111 -999.00  +14.50   4.08     45   +2.80 1 1 1 1 1   888    0 14.51 89.34 ----- 5.9 4.1 191.2 7.5 23.5 -26.6 22.3 -26.4 23.2 -26.3 24.7 -27.6
2025-09-29T13:26:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:26:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:26:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.476111
2025-09-29T13:26:10.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:26:10.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:26:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:26:10.278 [DEBUG] [Thread-157147] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:26:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:26:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:25:53', tmtdew=13.13, humidity=40.59, cloud=0.0, wind=17.19, temperature=13.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:25:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:26:10.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:26:10.375 [DEBUG] [Thread-157150] [transport.py] [_log()] starting thread (client mode): 0x2b96c4c0
2025-09-29T13:26:10.375 [DEBUG] [Thread-157150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:26:10.390 [DEBUG] [Thread-157150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:26:10.391 [INFO] [Thread-157150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:26:10.398 [DEBUG] [Thread-157150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:26:10.398 [DEBUG] [Thread-157150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] client lang: <none>
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] server lang: <none>
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] kex follows: False
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] Compression: none
2025-09-29T13:26:10.399 [DEBUG] [Thread-157150] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:26:10.460 [DEBUG] [Thread-157150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:26:10.461 [DEBUG] [Thread-157150] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:26:10.461 [DEBUG] [Thread-157150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:26:10.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:26:10.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:26:10.517 [DEBUG] [Thread-157150] [transport.py] [_log()] userauth is OK
2025-09-29T13:26:10.518 [DEBUG] [Thread-157150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:26:10.518 [DEBUG] [Thread-157150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:26:10.518 [DEBUG] [Thread-157150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:26:10.518 [DEBUG] [Thread-157150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:26:10.537 [INFO] [Thread-157150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:26:10.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:26:10.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:26:11.488 [DEBUG] [Thread-157150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:26:11.489 [DEBUG] [Thread-157150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:26:11.536 [DEBUG] [Thread-157150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:26:11.536 [DEBUG] [Thread-157150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:26:11.545 [DEBUG] [Thread-157150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:26:11.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:26:11.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:26:11.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:26:11.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:26:11.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:26:11.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:26:11.584 [DEBUG] [Thread-157150] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:21.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:26:21.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:26:21.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:26:22.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 25, 53), 13.13, 40.59, 0.0, 17.19, 13.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:26:22.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:25:53
2025-09-29T13:26:22.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:26:22.442 [DEBUG] [Thread-157152] [transport.py] [_log()] starting thread (client mode): 0x2b9c9180
2025-09-29T13:26:22.442 [DEBUG] [Thread-157152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:26:22.466 [DEBUG] [Thread-157152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:26:22.466 [INFO] [Thread-157152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] client lang: <none>
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] server lang: <none>
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] kex follows: False
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] Compression: none
2025-09-29T13:26:22.470 [DEBUG] [Thread-157152] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:26:22.484 [DEBUG] [Thread-157152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:26:22.484 [DEBUG] [Thread-157152] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:26:22.484 [DEBUG] [Thread-157152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:26:22.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:26:22.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:26:22.485 [DEBUG] [Thread-157152] [transport.py] [_log()] userauth is OK
2025-09-29T13:26:22.485 [DEBUG] [Thread-157152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:26:22.485 [DEBUG] [Thread-157152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:26:22.485 [DEBUG] [Thread-157152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:26:22.485 [DEBUG] [Thread-157152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:26:22.494 [INFO] [Thread-157152] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:26:22.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:26:23.271 [DEBUG] [Thread-157152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:26:23.271 [DEBUG] [Thread-157152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:26:23.271 [DEBUG] [Thread-157152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:26:23.312 [DEBUG] [Thread-157152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:26:23.312 [DEBUG] [Thread-157152] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:26:23.314 [DEBUG] [Thread-157152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:26:23.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:26:23.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:26:23.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:26:23.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:26:23.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:26:23.332 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:26:23.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.476111 -999.00  +14.50   4.08     45   +2.80 1 1 1 1 1   888    0 14.51 89.34 ----- 5.9 4.1 191.2 7.5 23.5 -26.6 22.3 -26.4 23.2 -26.3 24.7 -27.6
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.476111
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:26:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:25:53', tmtdew=13.13, humidity=40.59, cloud=0.0, wind=17.19, temperature=13.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:25:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:26:23.333 [DEBUG] [Thread-157152] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:23.406 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:26:23.415 [DEBUG] [Thread-157155] [transport.py] [_log()] starting thread (client mode): 0x2b90c730
2025-09-29T13:26:23.415 [DEBUG] [Thread-157155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:26:23.430 [DEBUG] [Thread-157155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:26:23.430 [INFO] [Thread-157155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] client lang: <none>
2025-09-29T13:26:23.437 [DEBUG] [Thread-157155] [transport.py] [_log()] server lang: <none>
2025-09-29T13:26:23.438 [DEBUG] [Thread-157155] [transport.py] [_log()] kex follows: False
2025-09-29T13:26:23.438 [DEBUG] [Thread-157155] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:26:23.438 [DEBUG] [Thread-157155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:26:23.438 [DEBUG] [Thread-157155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:26:23.438 [DEBUG] [Thread-157155] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:26:23.438 [DEBUG] [Thread-157155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:26:23.438 [DEBUG] [Thread-157155] [transport.py] [_log()] Compression: none
2025-09-29T13:26:23.438 [DEBUG] [Thread-157155] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:26:23.443 [DEBUG] [Thread-157157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:26:23.500 [DEBUG] [Thread-157155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:26:23.500 [DEBUG] [Thread-157155] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:26:23.500 [DEBUG] [Thread-157155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:26:23.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:26:23.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:26:23.561 [DEBUG] [Thread-157155] [transport.py] [_log()] userauth is OK
2025-09-29T13:26:23.561 [DEBUG] [Thread-157155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:26:23.561 [DEBUG] [Thread-157155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:26:23.561 [DEBUG] [Thread-157155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:26:23.561 [DEBUG] [Thread-157155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:26:23.576 [INFO] [Thread-157155] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:26:23.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:26:23.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:26:24.540 [DEBUG] [Thread-157155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:26:24.541 [DEBUG] [Thread-157155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:26:24.588 [DEBUG] [Thread-157155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:26:24.588 [DEBUG] [Thread-157155] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:26:24.597 [DEBUG] [Thread-157155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:26:24.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:26:24.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:26:24.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:26:24.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:26:24.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:26:24.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:26:24.631 [DEBUG] [Thread-157155] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:34.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:26:34.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:26:34.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:26:35.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 26, 25), 13.01, 40.83, 0.0, 15.99, 13.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:26:35.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:26:25
2025-09-29T13:26:35.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:26:35.447 [DEBUG] [Thread-157158] [transport.py] [_log()] starting thread (client mode): 0x2b9d4520
2025-09-29T13:26:35.447 [DEBUG] [Thread-157158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:26:35.462 [DEBUG] [Thread-157158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:26:35.462 [INFO] [Thread-157158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:26:35.465 [DEBUG] [Thread-157158] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:26:35.465 [DEBUG] [Thread-157158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:26:35.465 [DEBUG] [Thread-157158] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] client lang: <none>
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] server lang: <none>
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] kex follows: False
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] Compression: none
2025-09-29T13:26:35.466 [DEBUG] [Thread-157158] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:26:35.482 [DEBUG] [Thread-157158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:26:35.483 [DEBUG] [Thread-157158] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:26:35.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:26:35.483 [DEBUG] [Thread-157158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:26:35.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:26:35.485 [DEBUG] [Thread-157158] [transport.py] [_log()] userauth is OK
2025-09-29T13:26:35.485 [DEBUG] [Thread-157158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:26:35.485 [DEBUG] [Thread-157158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:26:35.485 [DEBUG] [Thread-157158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:26:35.485 [DEBUG] [Thread-157158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:26:35.509 [INFO] [Thread-157158] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:26:35.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:26:36.055 [DEBUG] [Thread-157158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:26:36.064 [DEBUG] [Thread-157158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:26:36.064 [DEBUG] [Thread-157158] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:26:36.096 [DEBUG] [Thread-157158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:26:36.096 [DEBUG] [Thread-157158] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:26:36.099 [DEBUG] [Thread-157158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:26:36.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:26:36.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:26:36.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:26:36.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:26:36.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:26:36.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:26:36.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:26:36.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:26:36.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:26:36.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.476458 -999.00  +14.90   8.07     44   +2.90 1 1 1 1 1   888    0 14.27 87.54 ----- 13.0 8.1 144.4 11.1 23.6 -27.0 22.3 -28.2 23.2 -27.5 24.7 -28.5
2025-09-29T13:26:36.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:26:36.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:26:36.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.476458
2025-09-29T13:26:36.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:26:36.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:26:36.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:26:36.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:26:36.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:26:36.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:26:25', tmtdew=13.01, humidity=40.83, cloud=0.0, wind=15.99, temperature=13.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:26:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:26:36.124 [DEBUG] [Thread-157158] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:36.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:26:36.223 [DEBUG] [Thread-157161] [transport.py] [_log()] starting thread (client mode): 0x2b9c9030
2025-09-29T13:26:36.223 [DEBUG] [Thread-157161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:26:36.238 [DEBUG] [Thread-157161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:26:36.238 [INFO] [Thread-157161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:26:36.245 [DEBUG] [Thread-157161] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] client lang: <none>
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] server lang: <none>
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] kex follows: False
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] Compression: none
2025-09-29T13:26:36.246 [DEBUG] [Thread-157161] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:26:36.305 [DEBUG] [Thread-157161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:26:36.306 [DEBUG] [Thread-157161] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:26:36.306 [DEBUG] [Thread-157161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:26:36.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:26:36.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:26:36.362 [DEBUG] [Thread-157161] [transport.py] [_log()] userauth is OK
2025-09-29T13:26:36.362 [DEBUG] [Thread-157161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:26:36.362 [DEBUG] [Thread-157161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:26:36.362 [DEBUG] [Thread-157161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:26:36.362 [DEBUG] [Thread-157161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:26:36.380 [INFO] [Thread-157161] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:26:36.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:26:36.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:26:37.331 [DEBUG] [Thread-157161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:26:37.331 [DEBUG] [Thread-157161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:26:37.379 [DEBUG] [Thread-157161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:26:37.379 [DEBUG] [Thread-157161] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:26:37.388 [DEBUG] [Thread-157161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:26:37.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:26:37.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:26:37.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:26:37.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:26:37.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:26:37.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:26:37.422 [DEBUG] [Thread-157161] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:38.477 [DEBUG] [Thread-157163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:26:41.920 [DEBUG] [Thread-157164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:26:47.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:26:47.416 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:26:47.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:26:47.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 26, 25), 13.01, 40.83, 0.0, 15.99, 13.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:26:47.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:26:25
2025-09-29T13:26:48.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:26:48.239 [DEBUG] [Thread-157165] [transport.py] [_log()] starting thread (client mode): 0x2b9d5690
2025-09-29T13:26:48.239 [DEBUG] [Thread-157165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:26:48.259 [DEBUG] [Thread-157165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:26:48.259 [INFO] [Thread-157165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:26:48.262 [DEBUG] [Thread-157165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:26:48.262 [DEBUG] [Thread-157165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:26:48.262 [DEBUG] [Thread-157165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:26:48.262 [DEBUG] [Thread-157165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] client lang: <none>
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] server lang: <none>
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] kex follows: False
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] Compression: none
2025-09-29T13:26:48.263 [DEBUG] [Thread-157165] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:26:48.278 [DEBUG] [Thread-157165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:26:48.278 [DEBUG] [Thread-157165] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:26:48.278 [DEBUG] [Thread-157165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:26:48.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:26:48.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:26:48.280 [DEBUG] [Thread-157165] [transport.py] [_log()] userauth is OK
2025-09-29T13:26:48.280 [DEBUG] [Thread-157165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:26:48.281 [DEBUG] [Thread-157165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:26:48.281 [DEBUG] [Thread-157165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:26:48.281 [DEBUG] [Thread-157165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:26:48.312 [INFO] [Thread-157165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:26:48.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:26:49.081 [DEBUG] [Thread-157165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:26:49.081 [DEBUG] [Thread-157165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:26:49.081 [DEBUG] [Thread-157165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:26:49.122 [DEBUG] [Thread-157165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:26:49.122 [DEBUG] [Thread-157165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:26:49.125 [DEBUG] [Thread-157165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:26:49.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:26:49.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:26:49.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:26:49.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:26:49.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:26:49.149 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:26:49.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:26:49.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:26:49.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:26:49.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.476458 -999.00  +14.90   8.07     44   +2.90 1 1 1 1 1   888    0 14.27 87.54 ----- 13.0 8.1 144.4 11.1 23.6 -27.0 22.3 -28.2 23.2 -27.5 24.7 -28.5
2025-09-29T13:26:49.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:26:49.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:26:49.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.476458
2025-09-29T13:26:49.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:26:49.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:26:49.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:26:49.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:26:49.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:26:49.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:26:25', tmtdew=13.01, humidity=40.83, cloud=0.0, wind=15.99, temperature=13.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:26:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:26:49.151 [DEBUG] [Thread-157165] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:49.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:26:49.245 [DEBUG] [Thread-157168] [transport.py] [_log()] starting thread (client mode): 0x2b9d7e80
2025-09-29T13:26:49.245 [DEBUG] [Thread-157168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:26:49.259 [DEBUG] [Thread-157168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:26:49.259 [INFO] [Thread-157168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:26:49.268 [DEBUG] [Thread-157168] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:26:49.268 [DEBUG] [Thread-157168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:26:49.268 [DEBUG] [Thread-157168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:26:49.268 [DEBUG] [Thread-157168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:49.268 [DEBUG] [Thread-157168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:26:49.268 [DEBUG] [Thread-157168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] client lang: <none>
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] server lang: <none>
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] kex follows: False
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] Compression: none
2025-09-29T13:26:49.269 [DEBUG] [Thread-157168] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:26:49.325 [DEBUG] [Thread-157168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:26:49.325 [DEBUG] [Thread-157168] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:26:49.326 [DEBUG] [Thread-157168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:26:49.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:26:49.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:26:49.381 [DEBUG] [Thread-157168] [transport.py] [_log()] userauth is OK
2025-09-29T13:26:49.382 [DEBUG] [Thread-157168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:26:49.382 [DEBUG] [Thread-157168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:26:49.382 [DEBUG] [Thread-157168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:26:49.382 [DEBUG] [Thread-157168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:26:49.401 [INFO] [Thread-157168] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:26:49.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:26:49.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:26:50.373 [DEBUG] [Thread-157168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:26:50.373 [DEBUG] [Thread-157168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:26:50.421 [DEBUG] [Thread-157168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:26:50.421 [DEBUG] [Thread-157168] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:26:50.430 [DEBUG] [Thread-157168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:26:50.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:26:50.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:26:50.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:26:50.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:26:50.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:26:50.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:26:50.465 [DEBUG] [Thread-157168] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:26:53.521 [DEBUG] [Thread-157170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:26:55.621 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:26:55.622 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:27:00.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:27:00.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:27:00.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:27:01.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 26, 57), 13.23, 40.4, 0.0, 17.01, 13.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:27:01.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:26:57
2025-09-29T13:27:01.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:27:01.293 [DEBUG] [Thread-157171] [transport.py] [_log()] starting thread (client mode): 0x2b9d4640
2025-09-29T13:27:01.293 [DEBUG] [Thread-157171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:01.313 [DEBUG] [Thread-157171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:27:01.313 [INFO] [Thread-157171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:27:01.316 [DEBUG] [Thread-157171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:01.316 [DEBUG] [Thread-157171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:27:01.316 [DEBUG] [Thread-157171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:01.316 [DEBUG] [Thread-157171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:01.316 [DEBUG] [Thread-157171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:01.316 [DEBUG] [Thread-157171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:01.316 [DEBUG] [Thread-157171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] Compression: none
2025-09-29T13:27:01.317 [DEBUG] [Thread-157171] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:01.331 [DEBUG] [Thread-157171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:01.331 [DEBUG] [Thread-157171] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:01.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:27:01.331 [DEBUG] [Thread-157171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:27:01.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:01.332 [DEBUG] [Thread-157171] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:01.332 [DEBUG] [Thread-157171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:01.332 [DEBUG] [Thread-157171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:01.332 [DEBUG] [Thread-157171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:27:01.332 [DEBUG] [Thread-157171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:01.351 [INFO] [Thread-157171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:01.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:02.012 [DEBUG] [Thread-157171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:02.012 [DEBUG] [Thread-157171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:02.012 [DEBUG] [Thread-157171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:27:02.053 [DEBUG] [Thread-157171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:02.053 [DEBUG] [Thread-157171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:02.056 [DEBUG] [Thread-157171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:02.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:02.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:27:02.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:27:02.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:27:02.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:02.079 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:27:02.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:02.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:02.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:27:02.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.476805 -999.00  +14.80   6.49     44   +2.70 1 1 1 1 1   888    0 14.10 82.63 ----- 5.3 6.5 154.1 11.4 23.7 -26.8 22.5 -26.4 23.4 -26.1 24.9 -26.6
2025-09-29T13:27:02.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:27:02.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:27:02.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.476805
2025-09-29T13:27:02.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:27:02.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:27:02.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:27:02.081 [DEBUG] [Thread-157171] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:02.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:27:02.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:27:02.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:26:57', tmtdew=13.23, humidity=40.4, cloud=0.0, wind=17.01, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:26:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:27:02.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:27:02.185 [DEBUG] [Thread-157174] [transport.py] [_log()] starting thread (client mode): 0x2e3c37c0
2025-09-29T13:27:02.185 [DEBUG] [Thread-157174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:02.200 [DEBUG] [Thread-157174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:27:02.200 [INFO] [Thread-157174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:27:02.207 [DEBUG] [Thread-157174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] Compression: none
2025-09-29T13:27:02.208 [DEBUG] [Thread-157174] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:02.269 [DEBUG] [Thread-157174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:02.269 [DEBUG] [Thread-157174] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:02.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:27:02.270 [DEBUG] [Thread-157174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:27:02.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:02.329 [DEBUG] [Thread-157174] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:02.329 [DEBUG] [Thread-157174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:02.330 [DEBUG] [Thread-157174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:02.330 [DEBUG] [Thread-157174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:27:02.330 [DEBUG] [Thread-157174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:02.348 [INFO] [Thread-157174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:02.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:27:02.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:03.328 [DEBUG] [Thread-157174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:03.328 [DEBUG] [Thread-157174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:03.377 [DEBUG] [Thread-157174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:03.377 [DEBUG] [Thread-157174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:03.385 [DEBUG] [Thread-157174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:03.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:03.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:27:03.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:27:03.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:03.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:03.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:03.418 [DEBUG] [Thread-157174] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:08.546 [DEBUG] [Thread-157176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:27:13.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:27:13.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:27:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:27:13.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 26, 57), 13.23, 40.4, 0.0, 17.01, 13.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:27:13.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:26:57
2025-09-29T13:27:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:27:14.236 [DEBUG] [Thread-157177] [transport.py] [_log()] starting thread (client mode): 0x2b9cadd0
2025-09-29T13:27:14.237 [DEBUG] [Thread-157177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:14.257 [DEBUG] [Thread-157177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:27:14.257 [INFO] [Thread-157177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:14.258 [DEBUG] [Thread-157177] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:14.259 [DEBUG] [Thread-157177] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:14.259 [DEBUG] [Thread-157177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:14.259 [DEBUG] [Thread-157177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:14.259 [DEBUG] [Thread-157177] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:14.259 [DEBUG] [Thread-157177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:14.259 [DEBUG] [Thread-157177] [transport.py] [_log()] Compression: none
2025-09-29T13:27:14.259 [DEBUG] [Thread-157177] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:14.275 [DEBUG] [Thread-157177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:14.276 [DEBUG] [Thread-157177] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:14.276 [DEBUG] [Thread-157177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:27:14.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:27:14.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:14.278 [DEBUG] [Thread-157177] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:14.278 [DEBUG] [Thread-157177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:14.279 [DEBUG] [Thread-157177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:14.279 [DEBUG] [Thread-157177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:27:14.279 [DEBUG] [Thread-157177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:14.302 [INFO] [Thread-157177] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:14.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:15.059 [DEBUG] [Thread-157177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:15.059 [DEBUG] [Thread-157177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:15.060 [DEBUG] [Thread-157177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:27:15.100 [DEBUG] [Thread-157177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:15.101 [DEBUG] [Thread-157177] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:15.103 [DEBUG] [Thread-157177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:15.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:15.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:27:15.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:27:15.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:27:15.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:15.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:27:15.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:15.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:27:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.476805 -999.00  +14.80   6.49     44   +2.70 1 1 1 1 1   888    0 14.10 82.63 ----- 5.3 6.5 154.1 11.4 23.7 -26.8 22.5 -26.4 23.4 -26.1 24.9 -26.6
2025-09-29T13:27:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:27:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:27:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.476805
2025-09-29T13:27:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:27:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:27:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:27:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:27:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:27:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:26:57', tmtdew=13.23, humidity=40.4, cloud=0.0, wind=17.01, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:26:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:27:15.129 [DEBUG] [Thread-157177] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:15.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:27:15.222 [DEBUG] [Thread-157180] [transport.py] [_log()] starting thread (client mode): 0x2b9cbbe0
2025-09-29T13:27:15.222 [DEBUG] [Thread-157180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:15.237 [DEBUG] [Thread-157180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:27:15.237 [INFO] [Thread-157180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:27:15.244 [DEBUG] [Thread-157180] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:15.244 [DEBUG] [Thread-157180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:27:15.244 [DEBUG] [Thread-157180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:15.244 [DEBUG] [Thread-157180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] Compression: none
2025-09-29T13:27:15.245 [DEBUG] [Thread-157180] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:15.301 [DEBUG] [Thread-157180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:15.302 [DEBUG] [Thread-157180] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:15.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:27:15.303 [DEBUG] [Thread-157180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:27:15.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:15.357 [DEBUG] [Thread-157180] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:15.358 [DEBUG] [Thread-157180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:15.358 [DEBUG] [Thread-157180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:15.358 [DEBUG] [Thread-157180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:27:15.358 [DEBUG] [Thread-157180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:15.376 [INFO] [Thread-157180] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:15.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:27:15.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:16.395 [DEBUG] [Thread-157180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:16.395 [DEBUG] [Thread-157180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:16.442 [DEBUG] [Thread-157180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:16.442 [DEBUG] [Thread-157180] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:16.451 [DEBUG] [Thread-157180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:16.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:16.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:27:16.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:27:16.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:16.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:16.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:16.484 [DEBUG] [Thread-157180] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:23.589 [DEBUG] [Thread-157182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:27:26.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:27:26.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:27:26.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:27:27.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 26, 57), 13.23, 40.4, 0.0, 17.01, 13.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:27:27.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:26:57
2025-09-29T13:27:27.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:27:27.311 [DEBUG] [Thread-157183] [transport.py] [_log()] starting thread (client mode): 0x2b91e3e0
2025-09-29T13:27:27.311 [DEBUG] [Thread-157183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:27.331 [DEBUG] [Thread-157183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:27:27.331 [INFO] [Thread-157183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:27:27.334 [DEBUG] [Thread-157183] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:27.334 [DEBUG] [Thread-157183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] Compression: none
2025-09-29T13:27:27.335 [DEBUG] [Thread-157183] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:27.352 [DEBUG] [Thread-157183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:27.352 [DEBUG] [Thread-157183] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:27.353 [DEBUG] [Thread-157183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:27:27.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:27:27.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:27.396 [DEBUG] [Thread-157183] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:27.396 [DEBUG] [Thread-157183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:27.396 [DEBUG] [Thread-157183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:27.397 [DEBUG] [Thread-157183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:27:27.397 [DEBUG] [Thread-157183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:27.428 [INFO] [Thread-157183] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:27.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:28.235 [DEBUG] [Thread-157183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:28.235 [DEBUG] [Thread-157183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:28.235 [DEBUG] [Thread-157183] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:27:28.276 [DEBUG] [Thread-157183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:28.276 [DEBUG] [Thread-157183] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:28.279 [DEBUG] [Thread-157183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:28.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:28.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:27:28.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:27:28.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:27:28.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:28.300 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:27:28.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:28.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:28.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:27:28.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.476805 -999.00  +14.80   6.49     44   +2.70 1 1 1 1 1   888    0 14.10 82.63 ----- 5.3 6.5 154.1 11.4 23.7 -26.8 22.5 -26.4 23.4 -26.1 24.9 -26.6
2025-09-29T13:27:28.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:27:28.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:27:28.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.476805
2025-09-29T13:27:28.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:27:28.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:27:28.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:27:28.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:27:28.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:27:28.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:26:57', tmtdew=13.23, humidity=40.4, cloud=0.0, wind=17.01, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:26:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:27:28.303 [DEBUG] [Thread-157183] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:28.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:27:28.399 [DEBUG] [Thread-157186] [transport.py] [_log()] starting thread (client mode): 0x2b91d720
2025-09-29T13:27:28.399 [DEBUG] [Thread-157186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:28.413 [DEBUG] [Thread-157186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:27:28.413 [INFO] [Thread-157186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:27:28.421 [DEBUG] [Thread-157186] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] Compression: none
2025-09-29T13:27:28.422 [DEBUG] [Thread-157186] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:28.481 [DEBUG] [Thread-157186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:28.482 [DEBUG] [Thread-157186] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:28.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:27:28.483 [DEBUG] [Thread-157186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:27:28.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:28.537 [DEBUG] [Thread-157186] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:28.538 [DEBUG] [Thread-157186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:28.538 [DEBUG] [Thread-157186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:28.538 [DEBUG] [Thread-157186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:27:28.538 [DEBUG] [Thread-157186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:28.556 [INFO] [Thread-157186] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:28.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:27:28.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:29.529 [DEBUG] [Thread-157186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:29.529 [DEBUG] [Thread-157186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:29.577 [DEBUG] [Thread-157186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:29.577 [DEBUG] [Thread-157186] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:29.586 [DEBUG] [Thread-157186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:29.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:29.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:27:29.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:27:29.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:29.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:29.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:29.620 [DEBUG] [Thread-157186] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:38.616 [DEBUG] [Thread-157188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:27:39.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:27:39.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:27:39.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:27:40.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 27, 29), 13.23, 40.38, 0.0, 12.28, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:27:40.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:27:29
2025-09-29T13:27:40.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:27:40.445 [DEBUG] [Thread-157189] [transport.py] [_log()] starting thread (client mode): 0x2b9ca080
2025-09-29T13:27:40.445 [DEBUG] [Thread-157189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:40.466 [DEBUG] [Thread-157189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:27:40.466 [INFO] [Thread-157189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:27:40.467 [DEBUG] [Thread-157189] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:40.467 [DEBUG] [Thread-157189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] Compression: none
2025-09-29T13:27:40.468 [DEBUG] [Thread-157189] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:40.476 [DEBUG] [Thread-157189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:40.476 [DEBUG] [Thread-157189] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:40.477 [DEBUG] [Thread-157189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:27:40.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:27:40.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:40.479 [DEBUG] [Thread-157189] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:40.479 [DEBUG] [Thread-157189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:40.479 [DEBUG] [Thread-157189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:40.479 [DEBUG] [Thread-157189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:27:40.479 [DEBUG] [Thread-157189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:40.503 [INFO] [Thread-157189] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:40.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:41.111 [DEBUG] [Thread-157189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:41.112 [DEBUG] [Thread-157189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:41.112 [DEBUG] [Thread-157189] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:27:41.152 [DEBUG] [Thread-157189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:41.152 [DEBUG] [Thread-157189] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:41.155 [DEBUG] [Thread-157189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:41.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:41.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:27:41.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:27:41.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:27:41.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:41.181 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:27:41.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:41.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:41.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:27:41.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.477153 -999.00  +15.10  10.77     43   +2.90 1 1 1 1 1   888    0 14.10 77.65 ----- 10.8 10.8 168.6 15.4 23.8 -26.7 22.6 -26.3 23.4 -26.4 24.9 -27.3
2025-09-29T13:27:41.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:27:41.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:27:41.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.477153
2025-09-29T13:27:41.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:27:41.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:27:41.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:27:41.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:27:41.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:27:41.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:27:29', tmtdew=13.23, humidity=40.38, cloud=0.0, wind=12.28, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:27:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:27:41.183 [DEBUG] [Thread-157189] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:41.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:27:41.280 [DEBUG] [Thread-157192] [transport.py] [_log()] starting thread (client mode): 0x2b9ca710
2025-09-29T13:27:41.280 [DEBUG] [Thread-157192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:41.294 [DEBUG] [Thread-157192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:27:41.294 [INFO] [Thread-157192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:27:41.302 [DEBUG] [Thread-157192] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:41.302 [DEBUG] [Thread-157192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:27:41.302 [DEBUG] [Thread-157192] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:41.302 [DEBUG] [Thread-157192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:41.302 [DEBUG] [Thread-157192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] Compression: none
2025-09-29T13:27:41.303 [DEBUG] [Thread-157192] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:41.361 [DEBUG] [Thread-157192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:41.362 [DEBUG] [Thread-157192] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:41.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:27:41.363 [DEBUG] [Thread-157192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:27:41.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:41.417 [DEBUG] [Thread-157192] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:41.417 [DEBUG] [Thread-157192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:41.418 [DEBUG] [Thread-157192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:41.418 [DEBUG] [Thread-157192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:27:41.418 [DEBUG] [Thread-157192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:41.436 [INFO] [Thread-157192] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:41.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:27:41.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:41.952 [DEBUG] [Thread-157194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:27:42.382 [DEBUG] [Thread-157192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:42.382 [DEBUG] [Thread-157192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:42.432 [DEBUG] [Thread-157192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:42.432 [DEBUG] [Thread-157192] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:42.440 [DEBUG] [Thread-157192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:42.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:42.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:27:42.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:27:42.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:42.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:42.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:42.478 [DEBUG] [Thread-157192] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:52.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:27:52.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:27:52.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:27:53.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 27, 29), 13.23, 40.38, 0.0, 12.28, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:27:53.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:27:29
2025-09-29T13:27:53.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:27:53.307 [DEBUG] [Thread-157195] [transport.py] [_log()] starting thread (client mode): 0x2b9ca320
2025-09-29T13:27:53.307 [DEBUG] [Thread-157195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:53.328 [DEBUG] [Thread-157195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:27:53.328 [INFO] [Thread-157195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:53.331 [DEBUG] [Thread-157195] [transport.py] [_log()] Compression: none
2025-09-29T13:27:53.332 [DEBUG] [Thread-157195] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:53.347 [DEBUG] [Thread-157195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:53.347 [DEBUG] [Thread-157195] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:53.348 [DEBUG] [Thread-157195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:27:53.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:27:53.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:53.348 [DEBUG] [Thread-157195] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:53.348 [DEBUG] [Thread-157195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:53.348 [DEBUG] [Thread-157195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:53.348 [DEBUG] [Thread-157195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:27:53.348 [DEBUG] [Thread-157195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:53.357 [INFO] [Thread-157195] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:53.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:53.647 [DEBUG] [Thread-157197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:27:54.172 [DEBUG] [Thread-157195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:54.173 [DEBUG] [Thread-157195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:54.173 [DEBUG] [Thread-157195] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:27:54.213 [DEBUG] [Thread-157195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:54.214 [DEBUG] [Thread-157195] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:54.217 [DEBUG] [Thread-157195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:54.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:54.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:27:54.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:27:54.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:27:54.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:54.239 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:27:54.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:54.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:54.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:27:54.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.477153 -999.00  +15.10  10.77     43   +2.90 1 1 1 1 1   888    0 14.10 77.65 ----- 10.8 10.8 168.6 15.4 23.8 -26.7 22.6 -26.3 23.4 -26.4 24.9 -27.3
2025-09-29T13:27:54.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:27:54.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:27:54.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.477153
2025-09-29T13:27:54.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:27:54.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:27:54.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:27:54.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:27:54.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:27:54.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:27:29', tmtdew=13.23, humidity=40.38, cloud=0.0, wind=12.28, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:27:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:27:54.242 [DEBUG] [Thread-157195] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:54.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:27:54.336 [DEBUG] [Thread-157199] [transport.py] [_log()] starting thread (client mode): 0x2b9cbd00
2025-09-29T13:27:54.336 [DEBUG] [Thread-157199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:27:54.352 [DEBUG] [Thread-157199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:27:54.352 [INFO] [Thread-157199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:27:54.359 [DEBUG] [Thread-157199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] client lang: <none>
2025-09-29T13:27:54.360 [DEBUG] [Thread-157199] [transport.py] [_log()] server lang: <none>
2025-09-29T13:27:54.361 [DEBUG] [Thread-157199] [transport.py] [_log()] kex follows: False
2025-09-29T13:27:54.361 [DEBUG] [Thread-157199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:27:54.361 [DEBUG] [Thread-157199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:27:54.361 [DEBUG] [Thread-157199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:27:54.361 [DEBUG] [Thread-157199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:27:54.361 [DEBUG] [Thread-157199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:27:54.361 [DEBUG] [Thread-157199] [transport.py] [_log()] Compression: none
2025-09-29T13:27:54.361 [DEBUG] [Thread-157199] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:27:54.417 [DEBUG] [Thread-157199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:27:54.418 [DEBUG] [Thread-157199] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:27:54.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:27:54.419 [DEBUG] [Thread-157199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:27:54.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:27:54.473 [DEBUG] [Thread-157199] [transport.py] [_log()] userauth is OK
2025-09-29T13:27:54.474 [DEBUG] [Thread-157199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:27:54.474 [DEBUG] [Thread-157199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:27:54.474 [DEBUG] [Thread-157199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:27:54.474 [DEBUG] [Thread-157199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:27:54.493 [INFO] [Thread-157199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:27:54.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:27:54.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:27:55.456 [DEBUG] [Thread-157199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:27:55.456 [DEBUG] [Thread-157199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:27:55.504 [DEBUG] [Thread-157199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:27:55.504 [DEBUG] [Thread-157199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:27:55.514 [DEBUG] [Thread-157199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:27:55.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:27:55.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:27:55.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:27:55.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:27:55.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:27:55.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:27:55.555 [DEBUG] [Thread-157199] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:27:55.761 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:27:55.762 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:28:05.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:28:05.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:28:05.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:28:06.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 28, 1), 13.41, 40.15, 0.0, 8.06, 13.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:28:06.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:28:01
2025-09-29T13:28:06.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:28:06.389 [DEBUG] [Thread-157201] [transport.py] [_log()] starting thread (client mode): 0x2e3c3b50
2025-09-29T13:28:06.389 [DEBUG] [Thread-157201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:28:06.409 [DEBUG] [Thread-157201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:28:06.409 [INFO] [Thread-157201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:28:06.412 [DEBUG] [Thread-157201] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:28:06.412 [DEBUG] [Thread-157201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:28:06.412 [DEBUG] [Thread-157201] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:28:06.412 [DEBUG] [Thread-157201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:06.412 [DEBUG] [Thread-157201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:06.412 [DEBUG] [Thread-157201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:06.412 [DEBUG] [Thread-157201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:06.412 [DEBUG] [Thread-157201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] client lang: <none>
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] server lang: <none>
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] kex follows: False
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] Compression: none
2025-09-29T13:28:06.413 [DEBUG] [Thread-157201] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:28:06.429 [DEBUG] [Thread-157201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:28:06.429 [DEBUG] [Thread-157201] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:28:06.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:28:06.430 [DEBUG] [Thread-157201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:28:06.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:28:06.432 [DEBUG] [Thread-157201] [transport.py] [_log()] userauth is OK
2025-09-29T13:28:06.432 [DEBUG] [Thread-157201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:28:06.432 [DEBUG] [Thread-157201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:28:06.432 [DEBUG] [Thread-157201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:28:06.432 [DEBUG] [Thread-157201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:28:06.453 [INFO] [Thread-157201] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:28:06.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:28:07.096 [DEBUG] [Thread-157201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:28:07.096 [DEBUG] [Thread-157201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:28:07.096 [DEBUG] [Thread-157201] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:28:07.137 [DEBUG] [Thread-157201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:28:07.137 [DEBUG] [Thread-157201] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:28:07.140 [DEBUG] [Thread-157201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:28:07.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:28:07.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:28:07.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:28:07.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:28:07.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:28:07.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:28:07.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:28:07.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:28:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:28:07.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.477500 -999.00  +14.90  12.53     42   +2.30 1 1 1 1 1   888    0 14.23 81.31 ----- 9.2 12.5 115.4 14.3 23.8 -26.9 22.7 -27.1 23.5 -27.7 24.9 -28.4
2025-09-29T13:28:07.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:28:07.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:28:07.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.477500
2025-09-29T13:28:07.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:28:07.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:28:07.165 [DEBUG] [Thread-157201] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:28:07.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:28:07.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:28:07.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:28:07.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:28:01', tmtdew=13.41, humidity=40.15, cloud=0.0, wind=8.06, temperature=13.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:27:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:28:07.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:28:07.261 [DEBUG] [Thread-157204] [transport.py] [_log()] starting thread (client mode): 0x2b9afc40
2025-09-29T13:28:07.261 [DEBUG] [Thread-157204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:28:07.276 [DEBUG] [Thread-157204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:28:07.276 [INFO] [Thread-157204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] client lang: <none>
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] server lang: <none>
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] kex follows: False
2025-09-29T13:28:07.284 [DEBUG] [Thread-157204] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:28:07.285 [DEBUG] [Thread-157204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:28:07.285 [DEBUG] [Thread-157204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:28:07.285 [DEBUG] [Thread-157204] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:28:07.285 [DEBUG] [Thread-157204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:28:07.285 [DEBUG] [Thread-157204] [transport.py] [_log()] Compression: none
2025-09-29T13:28:07.285 [DEBUG] [Thread-157204] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:28:07.342 [DEBUG] [Thread-157204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:28:07.342 [DEBUG] [Thread-157204] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:28:07.343 [DEBUG] [Thread-157204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:28:07.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:28:07.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:28:07.398 [DEBUG] [Thread-157204] [transport.py] [_log()] userauth is OK
2025-09-29T13:28:07.398 [DEBUG] [Thread-157204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:28:07.398 [DEBUG] [Thread-157204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:28:07.398 [DEBUG] [Thread-157204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:28:07.398 [DEBUG] [Thread-157204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:28:07.417 [INFO] [Thread-157204] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:28:07.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:28:07.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:28:08.470 [DEBUG] [Thread-157204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:28:08.470 [DEBUG] [Thread-157204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:28:08.518 [DEBUG] [Thread-157204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:28:08.519 [DEBUG] [Thread-157204] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:28:08.528 [DEBUG] [Thread-157204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:28:08.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:28:08.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:28:08.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:28:08.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:28:08.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:28:08.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:28:08.563 [DEBUG] [Thread-157204] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:28:08.695 [DEBUG] [Thread-157206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:28:18.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:28:18.566 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:28:18.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:28:19.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 28, 1), 13.41, 40.15, 0.0, 8.06, 13.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:28:19.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:28:01
2025-09-29T13:28:19.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:28:19.392 [DEBUG] [Thread-157207] [transport.py] [_log()] starting thread (client mode): 0x2e3c34f0
2025-09-29T13:28:19.392 [DEBUG] [Thread-157207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:28:19.412 [DEBUG] [Thread-157207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:28:19.412 [INFO] [Thread-157207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] client lang: <none>
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] server lang: <none>
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] kex follows: False
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:28:19.415 [DEBUG] [Thread-157207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:28:19.416 [DEBUG] [Thread-157207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:28:19.416 [DEBUG] [Thread-157207] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:28:19.416 [DEBUG] [Thread-157207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:28:19.416 [DEBUG] [Thread-157207] [transport.py] [_log()] Compression: none
2025-09-29T13:28:19.416 [DEBUG] [Thread-157207] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:28:19.434 [DEBUG] [Thread-157207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:28:19.434 [DEBUG] [Thread-157207] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:28:19.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:28:19.435 [DEBUG] [Thread-157207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:28:19.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:28:19.437 [DEBUG] [Thread-157207] [transport.py] [_log()] userauth is OK
2025-09-29T13:28:19.437 [DEBUG] [Thread-157207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:28:19.437 [DEBUG] [Thread-157207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:28:19.437 [DEBUG] [Thread-157207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:28:19.437 [DEBUG] [Thread-157207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:28:19.473 [INFO] [Thread-157207] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:28:19.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:28:20.294 [DEBUG] [Thread-157207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:28:20.295 [DEBUG] [Thread-157207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:28:20.295 [DEBUG] [Thread-157207] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:28:20.335 [DEBUG] [Thread-157207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:28:20.336 [DEBUG] [Thread-157207] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:28:20.339 [DEBUG] [Thread-157207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:28:20.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:28:20.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:28:20.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:28:20.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:28:20.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:28:20.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:28:20.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:28:20.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:28:20.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:28:20.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.477500 -999.00  +14.90  12.53     42   +2.30 1 1 1 1 1   888    0 14.23 81.31 ----- 9.2 12.5 115.4 14.3 23.8 -26.9 22.7 -27.1 23.5 -27.7 24.9 -28.4
2025-09-29T13:28:20.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:28:20.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:28:20.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.477500
2025-09-29T13:28:20.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:28:20.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:28:20.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:28:20.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:28:20.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:28:20.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:28:01', tmtdew=13.41, humidity=40.15, cloud=0.0, wind=8.06, temperature=13.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:27:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:28:20.365 [DEBUG] [Thread-157207] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:28:20.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:28:20.461 [DEBUG] [Thread-157210] [transport.py] [_log()] starting thread (client mode): 0x2b9cabf0
2025-09-29T13:28:20.461 [DEBUG] [Thread-157210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:28:20.476 [DEBUG] [Thread-157210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:28:20.476 [INFO] [Thread-157210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:28:20.483 [DEBUG] [Thread-157210] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] client lang: <none>
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] server lang: <none>
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] kex follows: False
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] Compression: none
2025-09-29T13:28:20.484 [DEBUG] [Thread-157210] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:28:20.541 [DEBUG] [Thread-157210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:28:20.542 [DEBUG] [Thread-157210] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:28:20.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:28:20.543 [DEBUG] [Thread-157210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:28:20.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:28:20.597 [DEBUG] [Thread-157210] [transport.py] [_log()] userauth is OK
2025-09-29T13:28:20.598 [DEBUG] [Thread-157210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:28:20.598 [DEBUG] [Thread-157210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:28:20.598 [DEBUG] [Thread-157210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:28:20.598 [DEBUG] [Thread-157210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:28:20.617 [INFO] [Thread-157210] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:28:20.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:28:20.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:28:21.561 [DEBUG] [Thread-157210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:28:21.561 [DEBUG] [Thread-157210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:28:21.611 [DEBUG] [Thread-157210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:28:21.611 [DEBUG] [Thread-157210] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:28:21.620 [DEBUG] [Thread-157210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:28:21.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:28:21.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:28:21.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:28:21.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:28:21.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:28:21.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:28:21.652 [DEBUG] [Thread-157210] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:28:23.745 [DEBUG] [Thread-157212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:28:31.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:28:31.655 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:28:31.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:28:32.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 28, 1), 13.41, 40.15, 0.0, 8.06, 13.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:28:32.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:28:01
2025-09-29T13:28:32.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:28:32.478 [DEBUG] [Thread-157213] [transport.py] [_log()] starting thread (client mode): 0x2b9c90c0
2025-09-29T13:28:32.479 [DEBUG] [Thread-157213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:28:32.499 [DEBUG] [Thread-157213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:28:32.499 [INFO] [Thread-157213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:28:32.502 [DEBUG] [Thread-157213] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:28:32.502 [DEBUG] [Thread-157213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] client lang: <none>
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] server lang: <none>
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] kex follows: False
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] Compression: none
2025-09-29T13:28:32.503 [DEBUG] [Thread-157213] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:28:32.526 [DEBUG] [Thread-157213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:28:32.526 [DEBUG] [Thread-157213] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:28:32.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:28:32.527 [DEBUG] [Thread-157213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:28:32.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:28:32.529 [DEBUG] [Thread-157213] [transport.py] [_log()] userauth is OK
2025-09-29T13:28:32.529 [DEBUG] [Thread-157213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:28:32.529 [DEBUG] [Thread-157213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:28:32.529 [DEBUG] [Thread-157213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:28:32.529 [DEBUG] [Thread-157213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:28:32.551 [INFO] [Thread-157213] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:28:32.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:28:33.331 [DEBUG] [Thread-157213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:28:33.331 [DEBUG] [Thread-157213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:28:33.332 [DEBUG] [Thread-157213] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:28:33.372 [DEBUG] [Thread-157213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:28:33.372 [DEBUG] [Thread-157213] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:28:33.375 [DEBUG] [Thread-157213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:28:33.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:28:33.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:28:33.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:28:33.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:28:33.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:28:33.399 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:28:33.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:28:33.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:28:33.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:28:33.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.477500 -999.00  +14.90  12.53     42   +2.30 1 1 1 1 1   888    0 14.23 81.31 ----- 9.2 12.5 115.4 14.3 23.8 -26.9 22.7 -27.1 23.5 -27.7 24.9 -28.4
2025-09-29T13:28:33.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:28:33.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:28:33.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.477500
2025-09-29T13:28:33.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:28:33.401 [DEBUG] [Thread-157213] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:28:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:28:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:28:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:28:33.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:28:33.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:28:01', tmtdew=13.41, humidity=40.15, cloud=0.0, wind=8.06, temperature=13.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:27:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:28:33.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:28:33.496 [DEBUG] [Thread-157216] [transport.py] [_log()] starting thread (client mode): 0x2e3c34f0
2025-09-29T13:28:33.496 [DEBUG] [Thread-157216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:28:33.512 [DEBUG] [Thread-157216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:28:33.512 [INFO] [Thread-157216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:28:33.519 [DEBUG] [Thread-157216] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] client lang: <none>
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] server lang: <none>
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] kex follows: False
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] Compression: none
2025-09-29T13:28:33.520 [DEBUG] [Thread-157216] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:28:33.576 [DEBUG] [Thread-157216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:28:33.576 [DEBUG] [Thread-157216] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:28:33.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:28:33.576 [DEBUG] [Thread-157216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:28:33.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:28:33.633 [DEBUG] [Thread-157216] [transport.py] [_log()] userauth is OK
2025-09-29T13:28:33.633 [DEBUG] [Thread-157216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:28:33.633 [DEBUG] [Thread-157216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:28:33.633 [DEBUG] [Thread-157216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:28:33.633 [DEBUG] [Thread-157216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:28:33.647 [INFO] [Thread-157216] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:28:33.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:28:33.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:28:34.607 [DEBUG] [Thread-157216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:28:34.607 [DEBUG] [Thread-157216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:28:34.655 [DEBUG] [Thread-157216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:28:34.655 [DEBUG] [Thread-157216] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:28:34.663 [DEBUG] [Thread-157216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:28:34.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:28:34.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:28:34.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:28:34.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:28:34.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:28:34.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:28:34.694 [DEBUG] [Thread-157216] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:28:38.780 [DEBUG] [Thread-157218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:28:41.986 [DEBUG] [Thread-157219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:28:44.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:28:44.696 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:28:44.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:28:45.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 28, 33), 13.53, 39.86, 0.0, 9.0, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:28:45.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:28:33
2025-09-29T13:28:45.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:28:45.516 [DEBUG] [Thread-157220] [transport.py] [_log()] starting thread (client mode): 0x2e38d900
2025-09-29T13:28:45.516 [DEBUG] [Thread-157220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:28:45.536 [DEBUG] [Thread-157220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:28:45.536 [INFO] [Thread-157220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:28:45.539 [DEBUG] [Thread-157220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:28:45.539 [DEBUG] [Thread-157220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:28:45.539 [DEBUG] [Thread-157220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:28:45.539 [DEBUG] [Thread-157220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:45.539 [DEBUG] [Thread-157220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:28:45.539 [DEBUG] [Thread-157220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:45.539 [DEBUG] [Thread-157220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:28:45.539 [DEBUG] [Thread-157220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] client lang: <none>
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] server lang: <none>
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] kex follows: False
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] Compression: none
2025-09-29T13:28:45.540 [DEBUG] [Thread-157220] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:28:45.557 [DEBUG] [Thread-157220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:28:45.558 [DEBUG] [Thread-157220] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:28:45.558 [DEBUG] [Thread-157220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:28:45.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:28:45.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:28:45.561 [DEBUG] [Thread-157220] [transport.py] [_log()] userauth is OK
2025-09-29T13:28:45.561 [DEBUG] [Thread-157220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:28:45.561 [DEBUG] [Thread-157220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:28:45.561 [DEBUG] [Thread-157220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:28:45.561 [DEBUG] [Thread-157220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:28:45.585 [INFO] [Thread-157220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:28:45.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:28:46.212 [DEBUG] [Thread-157220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:28:46.212 [DEBUG] [Thread-157220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:28:46.212 [DEBUG] [Thread-157220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:28:46.253 [DEBUG] [Thread-157220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:28:46.254 [DEBUG] [Thread-157220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:28:46.257 [DEBUG] [Thread-157220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:28:46.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:28:46.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:28:46.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:28:46.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:28:46.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:28:46.279 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:28:46.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:28:46.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:28:46.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:28:46.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.477847 -999.00  +14.50  11.67     43   +2.20 1 1 1 1 1   888    0 14.63 86.06 ----- 10.4 11.7 94.0 13.7 23.3 -32.4 22.6 -27.7 23.3 -28.5 24.8 -28.2
2025-09-29T13:28:46.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:28:46.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:28:46.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.477847
2025-09-29T13:28:46.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:28:46.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:28:46.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:28:46.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:28:46.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:28:46.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:28:33', tmtdew=13.53, humidity=39.86, cloud=0.0, wind=9.0, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:28:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:28:46.282 [DEBUG] [Thread-157220] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:28:46.367 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:28:53.806 [DEBUG] [Thread-157223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:28:55.903 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:28:55.903 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:29:08.847 [DEBUG] [Thread-157224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:29:23.879 [DEBUG] [Thread-157225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:29:38.906 [DEBUG] [Thread-157226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:29:42.020 [DEBUG] [Thread-157227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:29:53.935 [DEBUG] [Thread-157228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:29:56.045 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:29:56.046 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:30:08.965 [DEBUG] [Thread-157229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:30:23.994 [DEBUG] [Thread-157230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:30:39.024 [DEBUG] [Thread-157231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:30:42.067 [DEBUG] [Thread-157232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:30:54.051 [DEBUG] [Thread-157233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:30:56.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:30:56.186 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:30:58.874 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T13:31:08.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:31:08.885 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:31:08.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:31:09.083 [DEBUG] [Thread-157234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:31:09.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 30, 41), 14.25, 37.58, 0.0, 16.46, 14.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:31:09.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:30:41
2025-09-29T13:31:09.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:31:09.742 [DEBUG] [Thread-157235] [transport.py] [_log()] starting thread (client mode): 0x2b9d4280
2025-09-29T13:31:09.742 [DEBUG] [Thread-157235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:31:09.760 [DEBUG] [Thread-157235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:31:09.761 [INFO] [Thread-157235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] client lang: <none>
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] server lang: <none>
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] kex follows: False
2025-09-29T13:31:09.762 [DEBUG] [Thread-157235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:31:09.763 [DEBUG] [Thread-157235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:31:09.763 [DEBUG] [Thread-157235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:31:09.763 [DEBUG] [Thread-157235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:31:09.763 [DEBUG] [Thread-157235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:31:09.763 [DEBUG] [Thread-157235] [transport.py] [_log()] Compression: none
2025-09-29T13:31:09.763 [DEBUG] [Thread-157235] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:31:09.770 [DEBUG] [Thread-157235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:31:09.771 [DEBUG] [Thread-157235] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:31:09.771 [DEBUG] [Thread-157235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:31:09.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:31:09.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:31:09.772 [DEBUG] [Thread-157235] [transport.py] [_log()] userauth is OK
2025-09-29T13:31:09.772 [DEBUG] [Thread-157235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:31:09.772 [DEBUG] [Thread-157235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:31:09.772 [DEBUG] [Thread-157235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:31:09.772 [DEBUG] [Thread-157235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:31:09.788 [INFO] [Thread-157235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:31:09.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:31:10.368 [DEBUG] [Thread-157235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:31:10.368 [DEBUG] [Thread-157235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:31:10.368 [DEBUG] [Thread-157235] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:31:10.408 [DEBUG] [Thread-157235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:31:10.409 [DEBUG] [Thread-157235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:31:10.411 [DEBUG] [Thread-157235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:31:10.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:31:10.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:31:10.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:31:10.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:31:10.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:31:10.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:31:10.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:31:10.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:31:10.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:31:10.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.479583 -999.00  +15.10  14.64     41   +2.20 1 1 1 1 1   888    0 13.67 54.55 ----- 13.6 14.6 113.0 17.4 23.9 -28.2 23.1 -27.4 23.9 -28.0 25.2 -29.0
2025-09-29T13:31:10.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:31:10.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:31:10.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.479583
2025-09-29T13:31:10.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:31:10.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:31:10.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:31:10.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:31:10.437 [DEBUG] [Thread-157235] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:31:10.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:31:10.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:30:41', tmtdew=14.25, humidity=37.58, cloud=0.0, wind=16.46, temperature=14.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:30:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:31:10.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:31:10.533 [DEBUG] [Thread-157238] [transport.py] [_log()] starting thread (client mode): 0x2b9cbc10
2025-09-29T13:31:10.533 [DEBUG] [Thread-157238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:31:10.548 [DEBUG] [Thread-157238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:31:10.548 [INFO] [Thread-157238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:31:10.556 [DEBUG] [Thread-157238] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:31:10.556 [DEBUG] [Thread-157238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] client lang: <none>
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] server lang: <none>
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] kex follows: False
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] Compression: none
2025-09-29T13:31:10.557 [DEBUG] [Thread-157238] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:31:10.613 [DEBUG] [Thread-157238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:31:10.613 [DEBUG] [Thread-157238] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:31:10.614 [DEBUG] [Thread-157238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:31:10.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:31:10.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:31:10.669 [DEBUG] [Thread-157238] [transport.py] [_log()] userauth is OK
2025-09-29T13:31:10.670 [DEBUG] [Thread-157238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:31:10.670 [DEBUG] [Thread-157238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:31:10.670 [DEBUG] [Thread-157238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:31:10.670 [DEBUG] [Thread-157238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:31:10.689 [INFO] [Thread-157238] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:31:10.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:31:10.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:31:11.648 [DEBUG] [Thread-157238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:31:11.649 [DEBUG] [Thread-157238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:31:11.697 [DEBUG] [Thread-157238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:31:11.697 [DEBUG] [Thread-157238] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:31:11.706 [DEBUG] [Thread-157238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:31:11.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:31:11.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:31:11.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:31:11.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:31:11.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:31:11.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:31:11.740 [DEBUG] [Thread-157238] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:31:21.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:31:21.743 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:31:21.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:31:22.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 31, 12), 13.99, 38.19, 0.0, 15.14, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:31:22.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:31:12
2025-09-29T13:31:22.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:31:22.601 [DEBUG] [Thread-157240] [transport.py] [_log()] starting thread (client mode): 0x2b969840
2025-09-29T13:31:22.601 [DEBUG] [Thread-157240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:31:22.621 [DEBUG] [Thread-157240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:31:22.622 [INFO] [Thread-157240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:31:22.625 [DEBUG] [Thread-157240] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:31:22.625 [DEBUG] [Thread-157240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:31:22.625 [DEBUG] [Thread-157240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:31:22.626 [DEBUG] [Thread-157240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:22.626 [DEBUG] [Thread-157240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:22.626 [DEBUG] [Thread-157240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:22.626 [DEBUG] [Thread-157240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:22.626 [DEBUG] [Thread-157240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:31:22.626 [DEBUG] [Thread-157240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:31:22.626 [DEBUG] [Thread-157240] [transport.py] [_log()] client lang: <none>
2025-09-29T13:31:22.626 [DEBUG] [Thread-157240] [transport.py] [_log()] server lang: <none>
2025-09-29T13:31:22.627 [DEBUG] [Thread-157240] [transport.py] [_log()] kex follows: False
2025-09-29T13:31:22.627 [DEBUG] [Thread-157240] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:31:22.627 [DEBUG] [Thread-157240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:31:22.627 [DEBUG] [Thread-157240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:31:22.627 [DEBUG] [Thread-157240] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:31:22.627 [DEBUG] [Thread-157240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:31:22.627 [DEBUG] [Thread-157240] [transport.py] [_log()] Compression: none
2025-09-29T13:31:22.627 [DEBUG] [Thread-157240] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:31:22.648 [DEBUG] [Thread-157240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:31:22.648 [DEBUG] [Thread-157240] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:31:22.649 [DEBUG] [Thread-157240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:31:22.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:31:22.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:31:22.651 [DEBUG] [Thread-157240] [transport.py] [_log()] userauth is OK
2025-09-29T13:31:22.651 [DEBUG] [Thread-157240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:31:22.651 [DEBUG] [Thread-157240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:31:22.651 [DEBUG] [Thread-157240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:31:22.652 [DEBUG] [Thread-157240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:31:22.675 [INFO] [Thread-157240] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:31:22.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:31:23.302 [DEBUG] [Thread-157240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:31:23.302 [DEBUG] [Thread-157240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:31:23.303 [DEBUG] [Thread-157240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:31:23.343 [DEBUG] [Thread-157240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:31:23.343 [DEBUG] [Thread-157240] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:31:23.346 [DEBUG] [Thread-157240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:31:23.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:31:23.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:31:23.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:31:23.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:31:23.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:31:23.374 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:31:23.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:31:23.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:31:23.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:31:23.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.479583 -999.00  +15.10  14.64     41   +2.20 1 1 1 1 1   888    0 13.67 54.55 ----- 13.6 14.6 113.0 17.4 23.9 -28.2 23.1 -27.4 23.9 -28.0 25.2 -29.0
2025-09-29T13:31:23.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:31:23.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:31:23.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.479583
2025-09-29T13:31:23.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:31:23.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:31:23.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:31:23.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:31:23.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:31:23.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:31:12', tmtdew=13.99, humidity=38.19, cloud=0.0, wind=15.14, temperature=14.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:30:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:31:23.376 [DEBUG] [Thread-157240] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:31:23.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:31:23.470 [DEBUG] [Thread-157243] [transport.py] [_log()] starting thread (client mode): 0x2b9aee60
2025-09-29T13:31:23.471 [DEBUG] [Thread-157243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:31:23.485 [DEBUG] [Thread-157243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:31:23.485 [INFO] [Thread-157243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:31:23.492 [DEBUG] [Thread-157243] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:31:23.492 [DEBUG] [Thread-157243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] client lang: <none>
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] server lang: <none>
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] kex follows: False
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] Compression: none
2025-09-29T13:31:23.493 [DEBUG] [Thread-157243] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:31:23.549 [DEBUG] [Thread-157243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:31:23.549 [DEBUG] [Thread-157243] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:31:23.550 [DEBUG] [Thread-157243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:31:23.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:31:23.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:31:23.606 [DEBUG] [Thread-157243] [transport.py] [_log()] userauth is OK
2025-09-29T13:31:23.606 [DEBUG] [Thread-157243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:31:23.606 [DEBUG] [Thread-157243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:31:23.606 [DEBUG] [Thread-157243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:31:23.606 [DEBUG] [Thread-157243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:31:23.626 [INFO] [Thread-157243] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:31:23.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:31:23.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:31:24.107 [DEBUG] [Thread-157245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:31:24.568 [DEBUG] [Thread-157243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:31:24.568 [DEBUG] [Thread-157243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:31:24.618 [DEBUG] [Thread-157243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:31:24.618 [DEBUG] [Thread-157243] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:31:24.626 [DEBUG] [Thread-157243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:31:24.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:31:24.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:31:24.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:31:24.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:31:24.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:31:24.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:31:24.666 [DEBUG] [Thread-157243] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:31:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:31:34.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:31:34.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:31:35.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 31, 12), 13.99, 38.19, 0.0, 15.14, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:31:35.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:31:12
2025-09-29T13:31:35.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:31:35.546 [DEBUG] [Thread-157246] [transport.py] [_log()] starting thread (client mode): 0x2e38ef20
2025-09-29T13:31:35.546 [DEBUG] [Thread-157246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:31:35.565 [DEBUG] [Thread-157246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:31:35.565 [INFO] [Thread-157246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:31:35.568 [DEBUG] [Thread-157246] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] client lang: <none>
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] server lang: <none>
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] kex follows: False
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] Compression: none
2025-09-29T13:31:35.569 [DEBUG] [Thread-157246] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:31:35.585 [DEBUG] [Thread-157246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:31:35.585 [DEBUG] [Thread-157246] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:31:35.586 [DEBUG] [Thread-157246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:31:35.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:31:35.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:31:35.588 [DEBUG] [Thread-157246] [transport.py] [_log()] userauth is OK
2025-09-29T13:31:35.588 [DEBUG] [Thread-157246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:31:35.588 [DEBUG] [Thread-157246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:31:35.588 [DEBUG] [Thread-157246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:31:35.588 [DEBUG] [Thread-157246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:31:35.605 [INFO] [Thread-157246] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:31:35.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:31:36.253 [DEBUG] [Thread-157246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:31:36.253 [DEBUG] [Thread-157246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:31:36.254 [DEBUG] [Thread-157246] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:31:36.295 [DEBUG] [Thread-157246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:31:36.295 [DEBUG] [Thread-157246] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:31:36.298 [DEBUG] [Thread-157246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:31:36.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:31:36.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:31:36.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:31:36.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:31:36.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:31:36.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:31:36.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:31:36.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:31:36.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:31:36.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.479930 -999.00  +14.80   9.95     42   +2.10 1 1 1 1 1   888    0 13.55 50.77 ----- 15.8 9.9 96.5 16.7 23.7 -28.9 23.1 -27.9 23.9 -27.7 25.3 -27.7
2025-09-29T13:31:36.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:31:36.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:31:36.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.479930
2025-09-29T13:31:36.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:31:36.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:31:36.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:31:36.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:31:36.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:31:36.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:31:12', tmtdew=13.99, humidity=38.19, cloud=0.0, wind=15.14, temperature=14.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:31:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:31:36.322 [DEBUG] [Thread-157246] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:31:36.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:31:36.422 [DEBUG] [Thread-157249] [transport.py] [_log()] starting thread (client mode): 0x2b9aef20
2025-09-29T13:31:36.422 [DEBUG] [Thread-157249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:31:36.437 [DEBUG] [Thread-157249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:31:36.437 [INFO] [Thread-157249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] client lang: <none>
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] server lang: <none>
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] kex follows: False
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:31:36.445 [DEBUG] [Thread-157249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:31:36.446 [DEBUG] [Thread-157249] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:31:36.446 [DEBUG] [Thread-157249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:31:36.446 [DEBUG] [Thread-157249] [transport.py] [_log()] Compression: none
2025-09-29T13:31:36.446 [DEBUG] [Thread-157249] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:31:36.500 [DEBUG] [Thread-157249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:31:36.500 [DEBUG] [Thread-157249] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:31:36.500 [DEBUG] [Thread-157249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:31:36.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:31:36.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:31:36.557 [DEBUG] [Thread-157249] [transport.py] [_log()] userauth is OK
2025-09-29T13:31:36.557 [DEBUG] [Thread-157249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:31:36.557 [DEBUG] [Thread-157249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:31:36.558 [DEBUG] [Thread-157249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:31:36.558 [DEBUG] [Thread-157249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:31:36.577 [INFO] [Thread-157249] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:31:36.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:31:36.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:31:37.571 [DEBUG] [Thread-157249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:31:37.571 [DEBUG] [Thread-157249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:31:37.619 [DEBUG] [Thread-157249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:31:37.619 [DEBUG] [Thread-157249] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:31:37.628 [DEBUG] [Thread-157249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:31:37.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:31:37.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:31:37.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:31:37.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:31:37.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:31:37.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:31:37.664 [DEBUG] [Thread-157249] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:31:39.156 [DEBUG] [Thread-157251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:31:42.103 [DEBUG] [Thread-157252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:31:47.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:31:47.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:31:47.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:31:48.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 31, 44), 14.28, 37.44, 0.0, 10.5, 14.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:31:48.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:31:44
2025-09-29T13:31:48.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:31:48.523 [DEBUG] [Thread-157253] [transport.py] [_log()] starting thread (client mode): 0x2b9d4be0
2025-09-29T13:31:48.523 [DEBUG] [Thread-157253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:31:48.542 [DEBUG] [Thread-157253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:31:48.542 [INFO] [Thread-157253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:31:48.545 [DEBUG] [Thread-157253] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] client lang: <none>
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] server lang: <none>
2025-09-29T13:31:48.546 [DEBUG] [Thread-157253] [transport.py] [_log()] kex follows: False
2025-09-29T13:31:48.547 [DEBUG] [Thread-157253] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:31:48.547 [DEBUG] [Thread-157253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:31:48.547 [DEBUG] [Thread-157253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:31:48.547 [DEBUG] [Thread-157253] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:31:48.547 [DEBUG] [Thread-157253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:31:48.547 [DEBUG] [Thread-157253] [transport.py] [_log()] Compression: none
2025-09-29T13:31:48.547 [DEBUG] [Thread-157253] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:31:48.564 [DEBUG] [Thread-157253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:31:48.564 [DEBUG] [Thread-157253] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:31:48.565 [DEBUG] [Thread-157253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:31:48.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:31:48.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:31:48.608 [DEBUG] [Thread-157253] [transport.py] [_log()] userauth is OK
2025-09-29T13:31:48.609 [DEBUG] [Thread-157253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:31:48.609 [DEBUG] [Thread-157253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:31:48.609 [DEBUG] [Thread-157253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:31:48.609 [DEBUG] [Thread-157253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:31:48.634 [INFO] [Thread-157253] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:31:48.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:31:49.230 [DEBUG] [Thread-157253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:31:49.230 [DEBUG] [Thread-157253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:31:49.230 [DEBUG] [Thread-157253] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:31:49.271 [DEBUG] [Thread-157253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:31:49.272 [DEBUG] [Thread-157253] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:31:49.274 [DEBUG] [Thread-157253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:31:49.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:31:49.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:31:49.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:31:49.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:31:49.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:31:49.291 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:31:49.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:31:49.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.479930 -999.00  +14.80   9.95     42   +2.10 1 1 1 1 1   888    0 13.55 50.77 ----- 15.8 9.9 96.5 16.7 23.7 -28.9 23.1 -27.9 23.9 -27.7 25.3 -27.7
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.479930
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:31:49.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:31:44', tmtdew=14.28, humidity=37.44, cloud=0.0, wind=10.5, temperature=14.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:31:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:31:49.293 [DEBUG] [Thread-157253] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:31:49.367 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:31:49.376 [DEBUG] [Thread-157256] [transport.py] [_log()] starting thread (client mode): 0x2b9d5090
2025-09-29T13:31:49.376 [DEBUG] [Thread-157256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:31:49.391 [DEBUG] [Thread-157256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:31:49.391 [INFO] [Thread-157256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] client lang: <none>
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] server lang: <none>
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] kex follows: False
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] Compression: none
2025-09-29T13:31:49.398 [DEBUG] [Thread-157256] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:31:49.461 [DEBUG] [Thread-157256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:31:49.461 [DEBUG] [Thread-157256] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:31:49.462 [DEBUG] [Thread-157256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:31:49.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:31:49.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:31:49.517 [DEBUG] [Thread-157256] [transport.py] [_log()] userauth is OK
2025-09-29T13:31:49.518 [DEBUG] [Thread-157256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:31:49.518 [DEBUG] [Thread-157256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:31:49.518 [DEBUG] [Thread-157256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:31:49.518 [DEBUG] [Thread-157256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:31:49.536 [INFO] [Thread-157256] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:31:49.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:31:49.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:31:50.459 [DEBUG] [Thread-157256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:31:50.459 [DEBUG] [Thread-157256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:31:50.507 [DEBUG] [Thread-157256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:31:50.507 [DEBUG] [Thread-157256] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:31:50.516 [DEBUG] [Thread-157256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:31:50.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:31:50.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:31:50.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:31:50.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:31:50.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:31:50.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:31:50.552 [DEBUG] [Thread-157256] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:31:54.197 [DEBUG] [Thread-157258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:31:56.326 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:31:56.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:32:00.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:32:00.554 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:32:00.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:32:01.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 31, 44), 14.28, 37.44, 0.0, 10.5, 14.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:32:01.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:31:44
2025-09-29T13:32:01.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:32:01.415 [DEBUG] [Thread-157259] [transport.py] [_log()] starting thread (client mode): 0x2b91fac0
2025-09-29T13:32:01.415 [DEBUG] [Thread-157259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:01.435 [DEBUG] [Thread-157259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:32:01.435 [INFO] [Thread-157259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:32:01.438 [DEBUG] [Thread-157259] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:01.438 [DEBUG] [Thread-157259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:32:01.438 [DEBUG] [Thread-157259] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:01.438 [DEBUG] [Thread-157259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:01.438 [DEBUG] [Thread-157259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:01.438 [DEBUG] [Thread-157259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:01.438 [DEBUG] [Thread-157259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] Compression: none
2025-09-29T13:32:01.439 [DEBUG] [Thread-157259] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:01.455 [DEBUG] [Thread-157259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:01.456 [DEBUG] [Thread-157259] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:01.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:32:01.456 [DEBUG] [Thread-157259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:32:01.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:01.500 [DEBUG] [Thread-157259] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:01.500 [DEBUG] [Thread-157259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:01.501 [DEBUG] [Thread-157259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:01.501 [DEBUG] [Thread-157259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:32:01.501 [DEBUG] [Thread-157259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:01.536 [INFO] [Thread-157259] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:01.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:02.136 [DEBUG] [Thread-157259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:02.136 [DEBUG] [Thread-157259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:02.136 [DEBUG] [Thread-157259] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:32:02.177 [DEBUG] [Thread-157259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:02.177 [DEBUG] [Thread-157259] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:02.179 [DEBUG] [Thread-157259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:02.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:02.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:32:02.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:32:02.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:32:02.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:02.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:32:02.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:02.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:32:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.480278 -999.00  +14.60   8.84     42   +2.00 1 1 1 1 1   888    0 13.54 48.52 ----- 7.6 8.8 79.6 12.8 23.8 -29.8 23.2 -27.7 24.0 -28.3 25.2 -28.8
2025-09-29T13:32:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:32:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:32:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.480278
2025-09-29T13:32:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:32:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:32:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:32:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:32:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:32:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:31:44', tmtdew=14.28, humidity=37.44, cloud=0.0, wind=10.5, temperature=14.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:31:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:32:02.199 [DEBUG] [Thread-157259] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:02.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:32:02.284 [DEBUG] [Thread-157262] [transport.py] [_log()] starting thread (client mode): 0x2b90e170
2025-09-29T13:32:02.284 [DEBUG] [Thread-157262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:02.298 [DEBUG] [Thread-157262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:32:02.299 [INFO] [Thread-157262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] Compression: none
2025-09-29T13:32:02.306 [DEBUG] [Thread-157262] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:02.364 [DEBUG] [Thread-157262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:02.364 [DEBUG] [Thread-157262] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:02.364 [DEBUG] [Thread-157262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:32:02.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:32:02.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:02.421 [DEBUG] [Thread-157262] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:02.421 [DEBUG] [Thread-157262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:02.421 [DEBUG] [Thread-157262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:02.421 [DEBUG] [Thread-157262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:32:02.421 [DEBUG] [Thread-157262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:02.434 [INFO] [Thread-157262] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:02.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:32:02.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:03.426 [DEBUG] [Thread-157262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:03.426 [DEBUG] [Thread-157262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:03.474 [DEBUG] [Thread-157262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:03.474 [DEBUG] [Thread-157262] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:03.482 [DEBUG] [Thread-157262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:03.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:03.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:32:03.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:32:03.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:03.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:03.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:03.513 [DEBUG] [Thread-157262] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:09.243 [DEBUG] [Thread-157264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:32:13.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:32:13.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:32:13.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:32:14.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 31, 44), 14.28, 37.44, 0.0, 10.5, 14.16, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:32:14.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:31:44
2025-09-29T13:32:14.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:32:14.362 [DEBUG] [Thread-157265] [transport.py] [_log()] starting thread (client mode): 0x2b9aead0
2025-09-29T13:32:14.362 [DEBUG] [Thread-157265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:14.383 [DEBUG] [Thread-157265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:32:14.383 [INFO] [Thread-157265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] Compression: none
2025-09-29T13:32:14.386 [DEBUG] [Thread-157265] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:14.404 [DEBUG] [Thread-157265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:14.405 [DEBUG] [Thread-157265] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:14.405 [DEBUG] [Thread-157265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:32:14.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:32:14.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:14.407 [DEBUG] [Thread-157265] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:14.407 [DEBUG] [Thread-157265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:14.407 [DEBUG] [Thread-157265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:14.407 [DEBUG] [Thread-157265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:32:14.407 [DEBUG] [Thread-157265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:14.430 [INFO] [Thread-157265] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:14.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:15.064 [DEBUG] [Thread-157265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:15.064 [DEBUG] [Thread-157265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:15.064 [DEBUG] [Thread-157265] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:32:15.105 [DEBUG] [Thread-157265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:15.105 [DEBUG] [Thread-157265] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:15.108 [DEBUG] [Thread-157265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:15.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:15.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:32:15.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:32:15.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:32:15.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:15.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:32:15.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:15.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:15.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:32:15.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.480278 -999.00  +14.60   8.84     42   +2.00 1 1 1 1 1   888    0 13.54 48.52 ----- 7.6 8.8 79.6 12.8 23.8 -29.8 23.2 -27.7 24.0 -28.3 25.2 -28.8
2025-09-29T13:32:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:32:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:32:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.480278
2025-09-29T13:32:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:32:15.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:32:15.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:32:15.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:32:15.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:32:15.132 [DEBUG] [Thread-157265] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:15.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:31:44', tmtdew=14.28, humidity=37.44, cloud=0.0, wind=10.5, temperature=14.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:31:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:32:15.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:32:15.225 [DEBUG] [Thread-157268] [transport.py] [_log()] starting thread (client mode): 0x2b968fd0
2025-09-29T13:32:15.225 [DEBUG] [Thread-157268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:15.239 [DEBUG] [Thread-157268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:32:15.239 [INFO] [Thread-157268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:32:15.247 [DEBUG] [Thread-157268] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:15.247 [DEBUG] [Thread-157268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] Compression: none
2025-09-29T13:32:15.248 [DEBUG] [Thread-157268] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:15.309 [DEBUG] [Thread-157268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:15.309 [DEBUG] [Thread-157268] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:15.310 [DEBUG] [Thread-157268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:32:15.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:32:15.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:15.368 [DEBUG] [Thread-157268] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:15.368 [DEBUG] [Thread-157268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:15.368 [DEBUG] [Thread-157268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:15.368 [DEBUG] [Thread-157268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:32:15.368 [DEBUG] [Thread-157268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:15.388 [INFO] [Thread-157268] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:15.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:32:15.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:16.334 [DEBUG] [Thread-157268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:16.334 [DEBUG] [Thread-157268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:16.383 [DEBUG] [Thread-157268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:16.383 [DEBUG] [Thread-157268] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:16.392 [DEBUG] [Thread-157268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:16.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:16.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:32:16.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:32:16.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:16.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:16.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:16.426 [DEBUG] [Thread-157268] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:24.291 [DEBUG] [Thread-157270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:32:26.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:32:26.435 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:32:26.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:32:27.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 32, 16), 14.21, 37.57, 0.0, 11.01, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:32:27.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:32:16
2025-09-29T13:32:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:32:27.290 [DEBUG] [Thread-157271] [transport.py] [_log()] starting thread (client mode): 0x28705270
2025-09-29T13:32:27.291 [DEBUG] [Thread-157271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:27.311 [DEBUG] [Thread-157271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:32:27.311 [INFO] [Thread-157271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:32:27.312 [DEBUG] [Thread-157271] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:27.312 [DEBUG] [Thread-157271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:32:27.312 [DEBUG] [Thread-157271] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:27.312 [DEBUG] [Thread-157271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:27.312 [DEBUG] [Thread-157271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:27.312 [DEBUG] [Thread-157271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:27.312 [DEBUG] [Thread-157271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] Compression: none
2025-09-29T13:32:27.313 [DEBUG] [Thread-157271] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:27.321 [DEBUG] [Thread-157271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:27.321 [DEBUG] [Thread-157271] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:27.322 [DEBUG] [Thread-157271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:32:27.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:32:27.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:27.323 [DEBUG] [Thread-157271] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:27.323 [DEBUG] [Thread-157271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:27.323 [DEBUG] [Thread-157271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:27.323 [DEBUG] [Thread-157271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:32:27.323 [DEBUG] [Thread-157271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:27.353 [INFO] [Thread-157271] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:27.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:27.966 [DEBUG] [Thread-157271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:27.966 [DEBUG] [Thread-157271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:27.966 [DEBUG] [Thread-157271] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:32:28.006 [DEBUG] [Thread-157271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:28.007 [DEBUG] [Thread-157271] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:28.010 [DEBUG] [Thread-157271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:28.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:28.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:32:28.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:32:28.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:32:28.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:28.033 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:32:28.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:28.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:28.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:32:28.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.480278 -999.00  +14.60   8.84     42   +2.00 1 1 1 1 1   888    0 13.54 48.52 ----- 7.6 8.8 79.6 12.8 23.8 -29.8 23.2 -27.7 24.0 -28.3 25.2 -28.8
2025-09-29T13:32:28.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:32:28.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:32:28.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.480278
2025-09-29T13:32:28.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:32:28.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:32:28.036 [DEBUG] [Thread-157271] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:28.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:32:28.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:32:28.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:32:28.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:32:16', tmtdew=14.21, humidity=37.57, cloud=0.0, wind=11.01, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:31:36.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:32:28.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:32:28.134 [DEBUG] [Thread-157274] [transport.py] [_log()] starting thread (client mode): 0x2b9d4df0
2025-09-29T13:32:28.135 [DEBUG] [Thread-157274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:28.149 [DEBUG] [Thread-157274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:32:28.149 [INFO] [Thread-157274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:32:28.157 [DEBUG] [Thread-157274] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:28.157 [DEBUG] [Thread-157274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:32:28.157 [DEBUG] [Thread-157274] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:28.157 [DEBUG] [Thread-157274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:28.157 [DEBUG] [Thread-157274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:28.157 [DEBUG] [Thread-157274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:28.157 [DEBUG] [Thread-157274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:28.157 [DEBUG] [Thread-157274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:28.158 [DEBUG] [Thread-157274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:28.158 [DEBUG] [Thread-157274] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:28.158 [DEBUG] [Thread-157274] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:28.158 [DEBUG] [Thread-157274] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:28.158 [DEBUG] [Thread-157274] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:28.158 [DEBUG] [Thread-157274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:28.158 [DEBUG] [Thread-157274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:28.159 [DEBUG] [Thread-157274] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:28.159 [DEBUG] [Thread-157274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:28.159 [DEBUG] [Thread-157274] [transport.py] [_log()] Compression: none
2025-09-29T13:32:28.159 [DEBUG] [Thread-157274] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:28.214 [DEBUG] [Thread-157274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:28.214 [DEBUG] [Thread-157274] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:28.215 [DEBUG] [Thread-157274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:32:28.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:32:28.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:28.269 [DEBUG] [Thread-157274] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:28.270 [DEBUG] [Thread-157274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:28.270 [DEBUG] [Thread-157274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:28.270 [DEBUG] [Thread-157274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:32:28.270 [DEBUG] [Thread-157274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:28.289 [INFO] [Thread-157274] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:28.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:32:28.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:29.251 [DEBUG] [Thread-157274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:29.251 [DEBUG] [Thread-157274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:29.302 [DEBUG] [Thread-157274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:29.302 [DEBUG] [Thread-157274] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:29.311 [DEBUG] [Thread-157274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:29.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:29.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:32:29.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:32:29.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:29.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:29.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:29.345 [DEBUG] [Thread-157274] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:39.320 [DEBUG] [Thread-157276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:32:39.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:32:39.345 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:32:39.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:32:39.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 32, 16), 14.21, 37.57, 0.0, 11.01, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:32:39.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:32:16
2025-09-29T13:32:40.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:32:40.221 [DEBUG] [Thread-157277] [transport.py] [_log()] starting thread (client mode): 0x2b957bb0
2025-09-29T13:32:40.222 [DEBUG] [Thread-157277] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:40.241 [DEBUG] [Thread-157277] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:32:40.241 [INFO] [Thread-157277] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] Compression: none
2025-09-29T13:32:40.244 [DEBUG] [Thread-157277] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:40.260 [DEBUG] [Thread-157277] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:40.260 [DEBUG] [Thread-157277] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:40.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:32:40.261 [DEBUG] [Thread-157277] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:32:40.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:40.262 [DEBUG] [Thread-157277] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:40.262 [DEBUG] [Thread-157277] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:40.262 [DEBUG] [Thread-157277] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:40.262 [DEBUG] [Thread-157277] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:32:40.262 [DEBUG] [Thread-157277] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:40.280 [INFO] [Thread-157277] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:40.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:40.928 [DEBUG] [Thread-157277] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:40.928 [DEBUG] [Thread-157277] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:40.928 [DEBUG] [Thread-157277] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:32:40.969 [DEBUG] [Thread-157277] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:40.969 [DEBUG] [Thread-157277] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:40.971 [DEBUG] [Thread-157277] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:40.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:40.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:32:40.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:32:40.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:32:40.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:40.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:32:40.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:40.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:40.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:32:40.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.480625 -999.00  +14.40  10.43     42   +1.70 1 1 1 1 1   888    0 13.57 48.12 ----- 8.4 10.4 114.0 17.3 23.6 -27.6 23.2 -27.9 24.0 -29.2 25.2 -29.5
2025-09-29T13:32:40.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:32:40.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:32:40.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.480625
2025-09-29T13:32:40.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:32:40.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:32:40.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:32:40.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:32:40.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:32:40.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:32:16', tmtdew=14.21, humidity=37.57, cloud=0.0, wind=11.01, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:32:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:32:40.989 [DEBUG] [Thread-157277] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:41.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:32:41.076 [DEBUG] [Thread-157280] [transport.py] [_log()] starting thread (client mode): 0x2b9d4100
2025-09-29T13:32:41.076 [DEBUG] [Thread-157280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:41.092 [DEBUG] [Thread-157280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:32:41.092 [INFO] [Thread-157280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] Compression: none
2025-09-29T13:32:41.100 [DEBUG] [Thread-157280] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:41.156 [DEBUG] [Thread-157280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:41.156 [DEBUG] [Thread-157280] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:41.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:32:41.156 [DEBUG] [Thread-157280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:32:41.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:41.213 [DEBUG] [Thread-157280] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:41.213 [DEBUG] [Thread-157280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:41.213 [DEBUG] [Thread-157280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:41.213 [DEBUG] [Thread-157280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:32:41.213 [DEBUG] [Thread-157280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:41.227 [INFO] [Thread-157280] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:41.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:32:41.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:42.133 [DEBUG] [Thread-157282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:32:42.203 [DEBUG] [Thread-157280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:42.203 [DEBUG] [Thread-157280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:42.251 [DEBUG] [Thread-157280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:42.251 [DEBUG] [Thread-157280] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:42.259 [DEBUG] [Thread-157280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:42.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:42.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:32:42.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:32:42.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:42.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:42.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:42.291 [DEBUG] [Thread-157280] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:32:52.293 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:32:52.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:32:52.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 32, 48), 14.11, 38.07, 0.0, 8.49, 13.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:32:52.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:32:48
2025-09-29T13:32:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:32:53.141 [DEBUG] [Thread-157283] [transport.py] [_log()] starting thread (client mode): 0x2b9ae5f0
2025-09-29T13:32:53.141 [DEBUG] [Thread-157283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:53.161 [DEBUG] [Thread-157283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:32:53.161 [INFO] [Thread-157283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:53.164 [DEBUG] [Thread-157283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] Compression: none
2025-09-29T13:32:53.165 [DEBUG] [Thread-157283] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:53.181 [DEBUG] [Thread-157283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:53.181 [DEBUG] [Thread-157283] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:53.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:32:53.182 [DEBUG] [Thread-157283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:32:53.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:53.185 [DEBUG] [Thread-157283] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:53.185 [DEBUG] [Thread-157283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:53.185 [DEBUG] [Thread-157283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:53.185 [DEBUG] [Thread-157283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:32:53.185 [DEBUG] [Thread-157283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:53.209 [INFO] [Thread-157283] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:53.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:53.846 [DEBUG] [Thread-157283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:53.846 [DEBUG] [Thread-157283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:53.846 [DEBUG] [Thread-157283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:32:53.887 [DEBUG] [Thread-157283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:53.887 [DEBUG] [Thread-157283] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:53.890 [DEBUG] [Thread-157283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:53.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:53.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:32:53.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:32:53.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:32:53.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:53.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:32:53.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:53.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:53.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:32:53.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.480625 -999.00  +14.40  10.43     42   +1.70 1 1 1 1 1   888    0 13.57 48.12 ----- 8.4 10.4 114.0 17.3 23.6 -27.6 23.2 -27.9 24.0 -29.2 25.2 -29.5
2025-09-29T13:32:53.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:32:53.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:32:53.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.480625
2025-09-29T13:32:53.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:32:53.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:32:53.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:32:53.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:32:53.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:32:53.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:32:48', tmtdew=14.11, humidity=38.07, cloud=0.0, wind=8.49, temperature=13.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:32:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:32:53.917 [DEBUG] [Thread-157283] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:54.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:32:54.011 [DEBUG] [Thread-157286] [transport.py] [_log()] starting thread (client mode): 0x2b954f70
2025-09-29T13:32:54.011 [DEBUG] [Thread-157286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:32:54.027 [DEBUG] [Thread-157286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:32:54.027 [INFO] [Thread-157286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:32:54.034 [DEBUG] [Thread-157286] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] client lang: <none>
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] server lang: <none>
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] kex follows: False
2025-09-29T13:32:54.035 [DEBUG] [Thread-157286] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:32:54.036 [DEBUG] [Thread-157286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:32:54.036 [DEBUG] [Thread-157286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:32:54.036 [DEBUG] [Thread-157286] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:32:54.036 [DEBUG] [Thread-157286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:32:54.036 [DEBUG] [Thread-157286] [transport.py] [_log()] Compression: none
2025-09-29T13:32:54.036 [DEBUG] [Thread-157286] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:32:54.094 [DEBUG] [Thread-157286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:32:54.094 [DEBUG] [Thread-157286] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:32:54.095 [DEBUG] [Thread-157286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:32:54.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:32:54.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:32:54.149 [DEBUG] [Thread-157286] [transport.py] [_log()] userauth is OK
2025-09-29T13:32:54.150 [DEBUG] [Thread-157286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:32:54.150 [DEBUG] [Thread-157286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:32:54.150 [DEBUG] [Thread-157286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:32:54.150 [DEBUG] [Thread-157286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:32:54.169 [INFO] [Thread-157286] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:32:54.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:32:54.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:32:54.362 [DEBUG] [Thread-157288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:32:55.133 [DEBUG] [Thread-157286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:32:55.133 [DEBUG] [Thread-157286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:32:55.181 [DEBUG] [Thread-157286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:32:55.181 [DEBUG] [Thread-157286] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:32:55.190 [DEBUG] [Thread-157286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:32:55.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:32:55.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:32:55.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:32:55.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:32:55.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:32:55.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:32:55.223 [DEBUG] [Thread-157286] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:32:56.458 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:32:56.459 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:33:05.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:33:05.226 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:33:05.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:33:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 32, 48), 14.11, 38.07, 0.0, 8.49, 13.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:33:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:32:48
2025-09-29T13:33:05.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:33:06.078 [DEBUG] [Thread-157289] [transport.py] [_log()] starting thread (client mode): 0x2b90e380
2025-09-29T13:33:06.078 [DEBUG] [Thread-157289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:06.100 [DEBUG] [Thread-157289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:33:06.100 [INFO] [Thread-157289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:33:06.103 [DEBUG] [Thread-157289] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] Compression: none
2025-09-29T13:33:06.104 [DEBUG] [Thread-157289] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:06.120 [DEBUG] [Thread-157289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:06.121 [DEBUG] [Thread-157289] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:06.121 [DEBUG] [Thread-157289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:33:06.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:33:06.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:06.123 [DEBUG] [Thread-157289] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:06.123 [DEBUG] [Thread-157289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:06.123 [DEBUG] [Thread-157289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:06.123 [DEBUG] [Thread-157289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:33:06.123 [DEBUG] [Thread-157289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:06.147 [INFO] [Thread-157289] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:06.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:06.804 [DEBUG] [Thread-157289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:06.804 [DEBUG] [Thread-157289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:06.805 [DEBUG] [Thread-157289] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:33:06.845 [DEBUG] [Thread-157289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:06.846 [DEBUG] [Thread-157289] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:06.849 [DEBUG] [Thread-157289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:06.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:06.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:33:06.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:33:06.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:33:06.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:06.872 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:33:06.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:06.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:06.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:33:06.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.480972 -999.00  +14.50  12.61     42   +1.80 1 1 1 1 1   888    0 13.36 43.42 ----- 12.0 12.6 56.0 15.4 23.7 -28.1 23.1 -27.5 24.1 -28.5 25.3 -28.0
2025-09-29T13:33:06.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:33:06.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:33:06.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.480972
2025-09-29T13:33:06.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:33:06.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:33:06.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:33:06.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:33:06.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:33:06.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:32:48', tmtdew=14.11, humidity=38.07, cloud=0.0, wind=8.49, temperature=13.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:32:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:33:06.875 [DEBUG] [Thread-157289] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:06.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:33:06.971 [DEBUG] [Thread-157292] [transport.py] [_log()] starting thread (client mode): 0x28704f40
2025-09-29T13:33:06.971 [DEBUG] [Thread-157292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:06.986 [DEBUG] [Thread-157292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:33:06.986 [INFO] [Thread-157292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:33:06.993 [DEBUG] [Thread-157292] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:06.993 [DEBUG] [Thread-157292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:33:06.993 [DEBUG] [Thread-157292] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:06.993 [DEBUG] [Thread-157292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:06.993 [DEBUG] [Thread-157292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:06.993 [DEBUG] [Thread-157292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] Compression: none
2025-09-29T13:33:06.994 [DEBUG] [Thread-157292] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:07.053 [DEBUG] [Thread-157292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:07.053 [DEBUG] [Thread-157292] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:07.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:33:07.054 [DEBUG] [Thread-157292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:33:07.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:07.113 [DEBUG] [Thread-157292] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:07.113 [DEBUG] [Thread-157292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:07.113 [DEBUG] [Thread-157292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:07.113 [DEBUG] [Thread-157292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:33:07.114 [DEBUG] [Thread-157292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:07.132 [INFO] [Thread-157292] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:07.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:33:07.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:08.128 [DEBUG] [Thread-157292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:08.128 [DEBUG] [Thread-157292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:08.176 [DEBUG] [Thread-157292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:08.176 [DEBUG] [Thread-157292] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:08.185 [DEBUG] [Thread-157292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:08.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:08.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:33:08.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:33:08.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:08.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:08.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:08.221 [DEBUG] [Thread-157292] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:09.406 [DEBUG] [Thread-157294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:33:18.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:33:18.222 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:33:18.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:33:18.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 32, 48), 14.11, 38.07, 0.0, 8.49, 13.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:33:18.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:32:48
2025-09-29T13:33:18.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:33:19.125 [DEBUG] [Thread-157295] [transport.py] [_log()] starting thread (client mode): 0x2b954220
2025-09-29T13:33:19.125 [DEBUG] [Thread-157295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:19.144 [DEBUG] [Thread-157295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:33:19.144 [INFO] [Thread-157295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:33:19.147 [DEBUG] [Thread-157295] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:19.147 [DEBUG] [Thread-157295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:33:19.147 [DEBUG] [Thread-157295] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:19.147 [DEBUG] [Thread-157295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:19.147 [DEBUG] [Thread-157295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:19.147 [DEBUG] [Thread-157295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] Compression: none
2025-09-29T13:33:19.148 [DEBUG] [Thread-157295] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:19.163 [DEBUG] [Thread-157295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:19.163 [DEBUG] [Thread-157295] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:19.164 [DEBUG] [Thread-157295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:33:19.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:33:19.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:19.164 [DEBUG] [Thread-157295] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:19.164 [DEBUG] [Thread-157295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:19.164 [DEBUG] [Thread-157295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:19.164 [DEBUG] [Thread-157295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:33:19.164 [DEBUG] [Thread-157295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:19.179 [INFO] [Thread-157295] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:19.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:19.806 [DEBUG] [Thread-157295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:19.806 [DEBUG] [Thread-157295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:19.806 [DEBUG] [Thread-157295] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:33:19.847 [DEBUG] [Thread-157295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:19.847 [DEBUG] [Thread-157295] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:19.849 [DEBUG] [Thread-157295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:19.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:19.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:33:19.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:33:19.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:33:19.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:19.868 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:33:19.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:19.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:33:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.480972 -999.00  +14.50  12.61     42   +1.80 1 1 1 1 1   888    0 13.36 43.42 ----- 12.0 12.6 56.0 15.4 23.7 -28.1 23.1 -27.5 24.1 -28.5 25.3 -28.0
2025-09-29T13:33:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:33:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:33:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.480972
2025-09-29T13:33:19.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:33:19.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:33:19.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:33:19.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:33:19.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:33:19.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:32:48', tmtdew=14.11, humidity=38.07, cloud=0.0, wind=8.49, temperature=13.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:32:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:33:19.869 [DEBUG] [Thread-157295] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:19.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:33:19.953 [DEBUG] [Thread-157298] [transport.py] [_log()] starting thread (client mode): 0x2b954cd0
2025-09-29T13:33:19.953 [DEBUG] [Thread-157298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:19.968 [DEBUG] [Thread-157298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:33:19.968 [INFO] [Thread-157298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:19.975 [DEBUG] [Thread-157298] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] Compression: none
2025-09-29T13:33:19.976 [DEBUG] [Thread-157298] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:20.032 [DEBUG] [Thread-157298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:20.032 [DEBUG] [Thread-157298] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:20.032 [DEBUG] [Thread-157298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:33:20.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:33:20.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:20.089 [DEBUG] [Thread-157298] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:20.089 [DEBUG] [Thread-157298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:20.089 [DEBUG] [Thread-157298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:20.089 [DEBUG] [Thread-157298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:33:20.089 [DEBUG] [Thread-157298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:20.103 [INFO] [Thread-157298] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:20.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:33:20.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:21.145 [DEBUG] [Thread-157298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:21.146 [DEBUG] [Thread-157298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:21.194 [DEBUG] [Thread-157298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:21.194 [DEBUG] [Thread-157298] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:21.202 [DEBUG] [Thread-157298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:21.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:21.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:33:21.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:33:21.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:21.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:21.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:21.234 [DEBUG] [Thread-157298] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:24.448 [DEBUG] [Thread-157300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:33:31.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:33:31.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:33:31.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:33:31.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 33, 20), 14.07, 38.19, 0.0, 8.65, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:33:31.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:33:20
2025-09-29T13:33:31.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:33:32.088 [DEBUG] [Thread-157301] [transport.py] [_log()] starting thread (client mode): 0x2b956c50
2025-09-29T13:33:32.088 [DEBUG] [Thread-157301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:32.108 [DEBUG] [Thread-157301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:33:32.108 [INFO] [Thread-157301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:33:32.111 [DEBUG] [Thread-157301] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:32.111 [DEBUG] [Thread-157301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:33:32.111 [DEBUG] [Thread-157301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:32.111 [DEBUG] [Thread-157301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] Compression: none
2025-09-29T13:33:32.112 [DEBUG] [Thread-157301] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:32.128 [DEBUG] [Thread-157301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:32.128 [DEBUG] [Thread-157301] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:32.129 [DEBUG] [Thread-157301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:33:32.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:33:32.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:32.131 [DEBUG] [Thread-157301] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:32.131 [DEBUG] [Thread-157301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:32.131 [DEBUG] [Thread-157301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:32.131 [DEBUG] [Thread-157301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:33:32.131 [DEBUG] [Thread-157301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:32.154 [INFO] [Thread-157301] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:32.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:32.811 [DEBUG] [Thread-157301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:32.812 [DEBUG] [Thread-157301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:32.812 [DEBUG] [Thread-157301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:33:32.852 [DEBUG] [Thread-157301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:32.852 [DEBUG] [Thread-157301] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:32.855 [DEBUG] [Thread-157301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:32.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:32.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:33:32.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:33:32.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:33:32.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:32.876 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:33:32.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:32.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:33:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.480972 -999.00  +14.50  12.61     42   +1.80 1 1 1 1 1   888    0 13.36 43.42 ----- 12.0 12.6 56.0 15.4 23.7 -28.1 23.1 -27.5 24.1 -28.5 25.3 -28.0
2025-09-29T13:33:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:33:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:33:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.480972
2025-09-29T13:33:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:33:32.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:33:32.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:33:32.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:33:32.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:33:32.878 [DEBUG] [Thread-157301] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:32.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:33:20', tmtdew=14.07, humidity=38.19, cloud=0.0, wind=8.65, temperature=13.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:32:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:33:32.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:33:32.974 [DEBUG] [Thread-157304] [transport.py] [_log()] starting thread (client mode): 0x2b955060
2025-09-29T13:33:32.974 [DEBUG] [Thread-157304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:32.988 [DEBUG] [Thread-157304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:33:32.988 [INFO] [Thread-157304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:33:32.995 [DEBUG] [Thread-157304] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] Compression: none
2025-09-29T13:33:32.996 [DEBUG] [Thread-157304] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:33.056 [DEBUG] [Thread-157304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:33.056 [DEBUG] [Thread-157304] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:33.056 [DEBUG] [Thread-157304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:33:33.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:33:33.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:33.113 [DEBUG] [Thread-157304] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:33.113 [DEBUG] [Thread-157304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:33.113 [DEBUG] [Thread-157304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:33.113 [DEBUG] [Thread-157304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:33:33.113 [DEBUG] [Thread-157304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:33.133 [INFO] [Thread-157304] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:33.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:33:33.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:34.095 [DEBUG] [Thread-157304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:34.095 [DEBUG] [Thread-157304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:34.143 [DEBUG] [Thread-157304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:34.143 [DEBUG] [Thread-157304] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:34.152 [DEBUG] [Thread-157304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:34.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:34.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:33:34.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:33:34.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:34.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:34.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:34.187 [DEBUG] [Thread-157304] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:39.475 [DEBUG] [Thread-157306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:33:42.177 [DEBUG] [Thread-157307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:33:44.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:33:44.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:33:44.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:33:44.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 33, 20), 14.07, 38.19, 0.0, 8.65, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:33:44.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:33:20
2025-09-29T13:33:44.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:33:45.054 [DEBUG] [Thread-157308] [transport.py] [_log()] starting thread (client mode): 0x2b9570a0
2025-09-29T13:33:45.055 [DEBUG] [Thread-157308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:45.074 [DEBUG] [Thread-157308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:33:45.074 [INFO] [Thread-157308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:45.078 [DEBUG] [Thread-157308] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:45.079 [DEBUG] [Thread-157308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:45.079 [DEBUG] [Thread-157308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:45.079 [DEBUG] [Thread-157308] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:45.079 [DEBUG] [Thread-157308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:45.079 [DEBUG] [Thread-157308] [transport.py] [_log()] Compression: none
2025-09-29T13:33:45.079 [DEBUG] [Thread-157308] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:45.100 [DEBUG] [Thread-157308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:45.100 [DEBUG] [Thread-157308] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:45.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:33:45.101 [DEBUG] [Thread-157308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:33:45.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:45.103 [DEBUG] [Thread-157308] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:45.103 [DEBUG] [Thread-157308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:45.103 [DEBUG] [Thread-157308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:45.103 [DEBUG] [Thread-157308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:33:45.103 [DEBUG] [Thread-157308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:45.137 [INFO] [Thread-157308] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:45.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:45.784 [DEBUG] [Thread-157308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:45.785 [DEBUG] [Thread-157308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:45.785 [DEBUG] [Thread-157308] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:33:45.826 [DEBUG] [Thread-157308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:45.826 [DEBUG] [Thread-157308] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:45.828 [DEBUG] [Thread-157308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:45.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:45.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:33:45.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:33:45.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:33:45.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:45.845 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:33:45.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.481319 -999.00  +14.50  10.50     42   +1.80 1 1 1 1 1   888    0 13.33 42.03 ----- 5.3 10.5 92.7 19.3 23.8 -27.0 23.0 -28.8 23.9 -28.3 25.2 -28.9
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.481319
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:33:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:33:20', tmtdew=14.07, humidity=38.19, cloud=0.0, wind=8.65, temperature=13.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:33:05.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:33:45.846 [DEBUG] [Thread-157308] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:45.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:33:45.930 [DEBUG] [Thread-157311] [transport.py] [_log()] starting thread (client mode): 0x287041f0
2025-09-29T13:33:45.931 [DEBUG] [Thread-157311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:45.948 [DEBUG] [Thread-157311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:33:45.948 [INFO] [Thread-157311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:33:45.955 [DEBUG] [Thread-157311] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:45.955 [DEBUG] [Thread-157311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:33:45.956 [DEBUG] [Thread-157311] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:45.956 [DEBUG] [Thread-157311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:45.956 [DEBUG] [Thread-157311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:45.956 [DEBUG] [Thread-157311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:45.956 [DEBUG] [Thread-157311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:45.956 [DEBUG] [Thread-157311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:45.956 [DEBUG] [Thread-157311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] Compression: none
2025-09-29T13:33:45.957 [DEBUG] [Thread-157311] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:46.017 [DEBUG] [Thread-157311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:46.018 [DEBUG] [Thread-157311] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:46.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:33:46.018 [DEBUG] [Thread-157311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:33:46.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:46.074 [DEBUG] [Thread-157311] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:46.074 [DEBUG] [Thread-157311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:46.074 [DEBUG] [Thread-157311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:46.074 [DEBUG] [Thread-157311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:33:46.074 [DEBUG] [Thread-157311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:46.093 [INFO] [Thread-157311] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:46.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:33:46.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:47.085 [DEBUG] [Thread-157311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:47.085 [DEBUG] [Thread-157311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:47.134 [DEBUG] [Thread-157311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:47.134 [DEBUG] [Thread-157311] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:47.143 [DEBUG] [Thread-157311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:47.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:47.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:33:47.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:33:47.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:47.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:47.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:47.177 [DEBUG] [Thread-157311] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:54.505 [DEBUG] [Thread-157313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:33:56.599 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:33:56.600 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:33:57.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:33:57.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:33:57.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:33:57.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 33, 52), 14.0, 38.25, 0.0, 10.27, 14.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:33:57.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:33:52
2025-09-29T13:33:57.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:33:58.062 [DEBUG] [Thread-157314] [transport.py] [_log()] starting thread (client mode): 0x2b9548b0
2025-09-29T13:33:58.062 [DEBUG] [Thread-157314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:58.083 [DEBUG] [Thread-157314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:33:58.083 [INFO] [Thread-157314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] Compression: none
2025-09-29T13:33:58.086 [DEBUG] [Thread-157314] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:58.102 [DEBUG] [Thread-157314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:58.102 [DEBUG] [Thread-157314] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:58.102 [DEBUG] [Thread-157314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:33:58.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:33:58.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:58.103 [DEBUG] [Thread-157314] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:58.103 [DEBUG] [Thread-157314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:58.103 [DEBUG] [Thread-157314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:58.103 [DEBUG] [Thread-157314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:33:58.103 [DEBUG] [Thread-157314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:58.118 [INFO] [Thread-157314] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:58.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:33:58.765 [DEBUG] [Thread-157314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:33:58.765 [DEBUG] [Thread-157314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:33:58.766 [DEBUG] [Thread-157314] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:33:58.807 [DEBUG] [Thread-157314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:33:58.807 [DEBUG] [Thread-157314] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:33:58.809 [DEBUG] [Thread-157314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:33:58.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:33:58.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:33:58.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:33:58.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:33:58.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:33:58.828 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:33:58.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.481319 -999.00  +14.50  10.50     42   +1.80 1 1 1 1 1   888    0 13.33 42.03 ----- 5.3 10.5 92.7 19.3 23.8 -27.0 23.0 -28.8 23.9 -28.3 25.2 -28.9
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.481319
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:33:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:33:52', tmtdew=14.0, humidity=38.25, cloud=0.0, wind=10.27, temperature=14.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:33:05.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:33:58.829 [DEBUG] [Thread-157314] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:33:58.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:33:58.916 [DEBUG] [Thread-157317] [transport.py] [_log()] starting thread (client mode): 0x2b955270
2025-09-29T13:33:58.916 [DEBUG] [Thread-157317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:33:58.931 [DEBUG] [Thread-157317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:33:58.931 [INFO] [Thread-157317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] client lang: <none>
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] server lang: <none>
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] kex follows: False
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:33:58.938 [DEBUG] [Thread-157317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:33:58.939 [DEBUG] [Thread-157317] [transport.py] [_log()] Compression: none
2025-09-29T13:33:58.939 [DEBUG] [Thread-157317] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:33:58.998 [DEBUG] [Thread-157317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:33:58.998 [DEBUG] [Thread-157317] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:33:58.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:33:58.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:33:58.998 [DEBUG] [Thread-157317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:33:59.053 [DEBUG] [Thread-157317] [transport.py] [_log()] userauth is OK
2025-09-29T13:33:59.053 [DEBUG] [Thread-157317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:33:59.053 [DEBUG] [Thread-157317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:33:59.053 [DEBUG] [Thread-157317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:33:59.053 [DEBUG] [Thread-157317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:33:59.069 [INFO] [Thread-157317] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:33:59.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:33:59.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:00.039 [DEBUG] [Thread-157317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:00.040 [DEBUG] [Thread-157317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:00.088 [DEBUG] [Thread-157317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:00.088 [DEBUG] [Thread-157317] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:00.096 [DEBUG] [Thread-157317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:00.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:00.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:34:00.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:34:00.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:00.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:00.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:00.128 [DEBUG] [Thread-157317] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:09.539 [DEBUG] [Thread-157319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:34:10.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:34:10.130 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:34:10.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:34:10.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 33, 52), 14.0, 38.25, 0.0, 10.27, 14.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:34:10.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:33:52
2025-09-29T13:34:10.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:34:10.980 [DEBUG] [Thread-157320] [transport.py] [_log()] starting thread (client mode): 0x2b9aece0
2025-09-29T13:34:10.981 [DEBUG] [Thread-157320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:34:11.001 [DEBUG] [Thread-157320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:34:11.001 [INFO] [Thread-157320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] client lang: <none>
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] server lang: <none>
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] kex follows: False
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:34:11.004 [DEBUG] [Thread-157320] [transport.py] [_log()] Compression: none
2025-09-29T13:34:11.005 [DEBUG] [Thread-157320] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:34:11.014 [DEBUG] [Thread-157320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:34:11.014 [DEBUG] [Thread-157320] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:34:11.014 [DEBUG] [Thread-157320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:34:11.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:34:11.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:34:11.015 [DEBUG] [Thread-157320] [transport.py] [_log()] userauth is OK
2025-09-29T13:34:11.015 [DEBUG] [Thread-157320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:34:11.015 [DEBUG] [Thread-157320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:34:11.015 [DEBUG] [Thread-157320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:34:11.015 [DEBUG] [Thread-157320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:34:11.024 [INFO] [Thread-157320] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:34:11.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:11.601 [DEBUG] [Thread-157320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:11.601 [DEBUG] [Thread-157320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:11.601 [DEBUG] [Thread-157320] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:34:11.642 [DEBUG] [Thread-157320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:11.642 [DEBUG] [Thread-157320] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:11.645 [DEBUG] [Thread-157320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:11.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:11.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:34:11.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:34:11.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:34:11.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:11.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:34:11.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:11.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:11.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:34:11.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.481666 -999.00  +14.50  10.67     42   +1.90 1 1 1 1 1   888    0 13.25 40.03 ----- 11.4 10.7 116.8 13.7 23.8 -27.2 23.1 -27.1 24.0 -26.9 25.3 -28.3
2025-09-29T13:34:11.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:34:11.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:34:11.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.481666
2025-09-29T13:34:11.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:34:11.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:34:11.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:34:11.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:34:11.670 [DEBUG] [Thread-157320] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:11.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:34:11.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:33:52', tmtdew=14.0, humidity=38.25, cloud=0.0, wind=10.27, temperature=14.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:33:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:34:11.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:34:11.766 [DEBUG] [Thread-157323] [transport.py] [_log()] starting thread (client mode): 0x2b90f490
2025-09-29T13:34:11.766 [DEBUG] [Thread-157323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:34:11.781 [DEBUG] [Thread-157323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:34:11.781 [INFO] [Thread-157323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] client lang: <none>
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] server lang: <none>
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] kex follows: False
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:34:11.789 [DEBUG] [Thread-157323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:34:11.790 [DEBUG] [Thread-157323] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:34:11.790 [DEBUG] [Thread-157323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:34:11.790 [DEBUG] [Thread-157323] [transport.py] [_log()] Compression: none
2025-09-29T13:34:11.790 [DEBUG] [Thread-157323] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:34:11.845 [DEBUG] [Thread-157323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:34:11.845 [DEBUG] [Thread-157323] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:34:11.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:34:11.846 [DEBUG] [Thread-157323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:34:11.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:34:11.901 [DEBUG] [Thread-157323] [transport.py] [_log()] userauth is OK
2025-09-29T13:34:11.902 [DEBUG] [Thread-157323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:34:11.902 [DEBUG] [Thread-157323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:34:11.902 [DEBUG] [Thread-157323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:34:11.902 [DEBUG] [Thread-157323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:34:11.924 [INFO] [Thread-157323] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:34:11.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:34:11.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:12.869 [DEBUG] [Thread-157323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:12.869 [DEBUG] [Thread-157323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:12.917 [DEBUG] [Thread-157323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:12.917 [DEBUG] [Thread-157323] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:12.926 [DEBUG] [Thread-157323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:12.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:12.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:34:12.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:34:12.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:12.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:12.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:12.961 [DEBUG] [Thread-157323] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:22.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:34:22.964 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:34:22.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:34:23.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 33, 52), 14.0, 38.25, 0.0, 10.27, 14.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:34:23.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:33:52
2025-09-29T13:34:23.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:34:23.806 [DEBUG] [Thread-157325] [transport.py] [_log()] starting thread (client mode): 0x2b9569e0
2025-09-29T13:34:23.806 [DEBUG] [Thread-157325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:34:23.829 [DEBUG] [Thread-157325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:34:23.829 [INFO] [Thread-157325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:34:23.832 [DEBUG] [Thread-157325] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] client lang: <none>
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] server lang: <none>
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] kex follows: False
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:34:23.833 [DEBUG] [Thread-157325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:34:23.834 [DEBUG] [Thread-157325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:34:23.834 [DEBUG] [Thread-157325] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:34:23.834 [DEBUG] [Thread-157325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:34:23.834 [DEBUG] [Thread-157325] [transport.py] [_log()] Compression: none
2025-09-29T13:34:23.834 [DEBUG] [Thread-157325] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:34:23.853 [DEBUG] [Thread-157325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:34:23.854 [DEBUG] [Thread-157325] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:34:23.854 [DEBUG] [Thread-157325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:34:23.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:34:23.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:34:23.856 [DEBUG] [Thread-157325] [transport.py] [_log()] userauth is OK
2025-09-29T13:34:23.856 [DEBUG] [Thread-157325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:34:23.856 [DEBUG] [Thread-157325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:34:23.856 [DEBUG] [Thread-157325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:34:23.857 [DEBUG] [Thread-157325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:34:23.881 [INFO] [Thread-157325] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:34:23.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:24.540 [DEBUG] [Thread-157325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:24.540 [DEBUG] [Thread-157325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:24.540 [DEBUG] [Thread-157325] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:34:24.575 [DEBUG] [Thread-157327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:34:24.581 [DEBUG] [Thread-157325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:24.581 [DEBUG] [Thread-157325] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:24.584 [DEBUG] [Thread-157325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:24.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:24.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:34:24.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:34:24.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:34:24.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:24.608 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:34:24.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:24.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:24.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:34:24.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.481666 -999.00  +14.50  10.67     42   +1.90 1 1 1 1 1   888    0 13.25 40.03 ----- 11.4 10.7 116.8 13.7 23.8 -27.2 23.1 -27.1 24.0 -26.9 25.3 -28.3
2025-09-29T13:34:24.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:34:24.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:34:24.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.481666
2025-09-29T13:34:24.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:34:24.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:34:24.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:34:24.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:34:24.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:34:24.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:33:52', tmtdew=14.0, humidity=38.25, cloud=0.0, wind=10.27, temperature=14.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:33:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:34:24.610 [DEBUG] [Thread-157325] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:24.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:34:24.707 [DEBUG] [Thread-157329] [transport.py] [_log()] starting thread (client mode): 0x2e3c1de0
2025-09-29T13:34:24.707 [DEBUG] [Thread-157329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:34:24.722 [DEBUG] [Thread-157329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:34:24.722 [INFO] [Thread-157329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] client lang: <none>
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] server lang: <none>
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] kex follows: False
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:34:24.729 [DEBUG] [Thread-157329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:34:24.730 [DEBUG] [Thread-157329] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:34:24.730 [DEBUG] [Thread-157329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:34:24.730 [DEBUG] [Thread-157329] [transport.py] [_log()] Compression: none
2025-09-29T13:34:24.730 [DEBUG] [Thread-157329] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:34:24.785 [DEBUG] [Thread-157329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:34:24.785 [DEBUG] [Thread-157329] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:34:24.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:34:24.785 [DEBUG] [Thread-157329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:34:24.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:34:24.850 [DEBUG] [Thread-157329] [transport.py] [_log()] userauth is OK
2025-09-29T13:34:24.850 [DEBUG] [Thread-157329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:34:24.850 [DEBUG] [Thread-157329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:34:24.850 [DEBUG] [Thread-157329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:34:24.850 [DEBUG] [Thread-157329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:34:24.867 [INFO] [Thread-157329] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:34:24.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:34:24.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:25.831 [DEBUG] [Thread-157329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:25.831 [DEBUG] [Thread-157329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:25.879 [DEBUG] [Thread-157329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:25.879 [DEBUG] [Thread-157329] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:25.888 [DEBUG] [Thread-157329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:25.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:25.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:34:25.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:34:25.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:25.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:25.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:25.921 [DEBUG] [Thread-157329] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:35.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:34:35.923 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:34:35.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:34:36.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 34, 24), 13.97, 38.3, 0.0, 10.87, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:34:36.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:34:24
2025-09-29T13:34:36.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:34:36.827 [DEBUG] [Thread-157331] [transport.py] [_log()] starting thread (client mode): 0x2b968460
2025-09-29T13:34:36.828 [DEBUG] [Thread-157331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:34:36.848 [DEBUG] [Thread-157331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:34:36.848 [INFO] [Thread-157331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] client lang: <none>
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] server lang: <none>
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] kex follows: False
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] Compression: none
2025-09-29T13:34:36.851 [DEBUG] [Thread-157331] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:34:36.859 [DEBUG] [Thread-157331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:34:36.859 [DEBUG] [Thread-157331] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:34:36.859 [DEBUG] [Thread-157331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:34:36.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:34:36.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:34:36.860 [DEBUG] [Thread-157331] [transport.py] [_log()] userauth is OK
2025-09-29T13:34:36.860 [DEBUG] [Thread-157331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:34:36.860 [DEBUG] [Thread-157331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:34:36.860 [DEBUG] [Thread-157331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:34:36.860 [DEBUG] [Thread-157331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:34:36.869 [INFO] [Thread-157331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:34:36.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:37.476 [DEBUG] [Thread-157331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:37.476 [DEBUG] [Thread-157331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:37.476 [DEBUG] [Thread-157331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:34:37.517 [DEBUG] [Thread-157331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:37.517 [DEBUG] [Thread-157331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:37.519 [DEBUG] [Thread-157331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:37.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:37.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:34:37.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:34:37.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:34:37.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:37.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:34:37.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:37.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:37.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:34:37.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.481666 -999.00  +14.50  10.67     42   +1.90 1 1 1 1 1   888    0 13.25 40.03 ----- 11.4 10.7 116.8 13.7 23.8 -27.2 23.1 -27.1 24.0 -26.9 25.3 -28.3
2025-09-29T13:34:37.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:34:37.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:34:37.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.481666
2025-09-29T13:34:37.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:34:37.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:34:37.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:34:37.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:34:37.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:34:37.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:34:24', tmtdew=13.97, humidity=38.3, cloud=0.0, wind=10.87, temperature=13.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:33:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:34:37.539 [DEBUG] [Thread-157331] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:37.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:34:37.623 [DEBUG] [Thread-157334] [transport.py] [_log()] starting thread (client mode): 0x28705cf0
2025-09-29T13:34:37.623 [DEBUG] [Thread-157334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:34:37.638 [DEBUG] [Thread-157334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:34:37.638 [INFO] [Thread-157334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:34:37.645 [DEBUG] [Thread-157334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:34:37.645 [DEBUG] [Thread-157334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] client lang: <none>
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] server lang: <none>
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] kex follows: False
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] Compression: none
2025-09-29T13:34:37.646 [DEBUG] [Thread-157334] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:34:37.704 [DEBUG] [Thread-157334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:34:37.705 [DEBUG] [Thread-157334] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:34:37.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:34:37.705 [DEBUG] [Thread-157334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:34:37.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:34:37.761 [DEBUG] [Thread-157334] [transport.py] [_log()] userauth is OK
2025-09-29T13:34:37.761 [DEBUG] [Thread-157334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:34:37.761 [DEBUG] [Thread-157334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:34:37.761 [DEBUG] [Thread-157334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:34:37.761 [DEBUG] [Thread-157334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:34:37.776 [INFO] [Thread-157334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:34:37.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:34:37.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:38.691 [DEBUG] [Thread-157334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:38.691 [DEBUG] [Thread-157334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:38.740 [DEBUG] [Thread-157334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:38.740 [DEBUG] [Thread-157334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:38.748 [DEBUG] [Thread-157334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:38.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:38.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:34:38.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:34:38.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:38.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:38.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:38.779 [DEBUG] [Thread-157334] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:39.626 [DEBUG] [Thread-157336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:34:42.210 [DEBUG] [Thread-157337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:34:48.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:34:48.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:34:48.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:34:49.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 34, 24), 13.97, 38.3, 0.0, 10.87, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:34:49.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:34:24
2025-09-29T13:34:49.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:34:49.623 [DEBUG] [Thread-157338] [transport.py] [_log()] starting thread (client mode): 0x2b9547f0
2025-09-29T13:34:49.623 [DEBUG] [Thread-157338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:34:49.644 [DEBUG] [Thread-157338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:34:49.644 [INFO] [Thread-157338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] client lang: <none>
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] server lang: <none>
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] kex follows: False
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] Compression: none
2025-09-29T13:34:49.647 [DEBUG] [Thread-157338] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:34:49.664 [DEBUG] [Thread-157338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:34:49.664 [DEBUG] [Thread-157338] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:34:49.665 [DEBUG] [Thread-157338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:34:49.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:34:49.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:34:49.667 [DEBUG] [Thread-157338] [transport.py] [_log()] userauth is OK
2025-09-29T13:34:49.667 [DEBUG] [Thread-157338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:34:49.667 [DEBUG] [Thread-157338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:34:49.667 [DEBUG] [Thread-157338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:34:49.667 [DEBUG] [Thread-157338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:34:49.691 [INFO] [Thread-157338] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:34:49.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:50.338 [DEBUG] [Thread-157338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:50.339 [DEBUG] [Thread-157338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:50.339 [DEBUG] [Thread-157338] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:34:50.379 [DEBUG] [Thread-157338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:50.379 [DEBUG] [Thread-157338] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:50.382 [DEBUG] [Thread-157338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:50.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:50.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:34:50.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:34:50.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:34:50.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:50.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:34:50.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:50.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:50.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:34:50.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.482361 -999.00  +14.40  10.30     42   +1.80 1 1 1 1 1   888    0 13.45 40.44 ----- 11.8 10.3 96.0 18.3 23.4 -35.8 23.1 -28.6 24.0 -27.8 25.2 -28.2
2025-09-29T13:34:50.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:34:50.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:34:50.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.482361
2025-09-29T13:34:50.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:34:50.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:34:50.408 [DEBUG] [Thread-157338] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:50.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:34:50.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:34:50.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:34:50.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:34:24', tmtdew=13.97, humidity=38.3, cloud=0.0, wind=10.87, temperature=13.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:34:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:34:50.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:34:50.502 [DEBUG] [Thread-157341] [transport.py] [_log()] starting thread (client mode): 0x2b9c2e60
2025-09-29T13:34:50.502 [DEBUG] [Thread-157341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:34:50.517 [DEBUG] [Thread-157341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:34:50.517 [INFO] [Thread-157341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:34:50.525 [DEBUG] [Thread-157341] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:34:50.525 [DEBUG] [Thread-157341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:34:50.525 [DEBUG] [Thread-157341] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:34:50.525 [DEBUG] [Thread-157341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] client lang: <none>
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] server lang: <none>
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] kex follows: False
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] Compression: none
2025-09-29T13:34:50.526 [DEBUG] [Thread-157341] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:34:50.581 [DEBUG] [Thread-157341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:34:50.581 [DEBUG] [Thread-157341] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:34:50.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:34:50.582 [DEBUG] [Thread-157341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:34:50.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:34:50.637 [DEBUG] [Thread-157341] [transport.py] [_log()] userauth is OK
2025-09-29T13:34:50.638 [DEBUG] [Thread-157341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:34:50.638 [DEBUG] [Thread-157341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:34:50.638 [DEBUG] [Thread-157341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:34:50.638 [DEBUG] [Thread-157341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:34:50.657 [INFO] [Thread-157341] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:34:50.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:34:50.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:34:51.716 [DEBUG] [Thread-157341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:34:51.716 [DEBUG] [Thread-157341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:34:51.764 [DEBUG] [Thread-157341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:34:51.764 [DEBUG] [Thread-157341] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:34:51.775 [DEBUG] [Thread-157341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:34:51.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:34:51.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:34:51.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:34:51.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:34:51.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:34:51.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:34:51.811 [DEBUG] [Thread-157341] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:34:54.661 [DEBUG] [Thread-157343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:34:56.742 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:34:56.743 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:35:01.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:35:01.812 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:35:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:35:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 34, 56), 13.88, 38.55, 0.0, 6.39, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:35:02.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:34:56
2025-09-29T13:35:02.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:35:02.661 [DEBUG] [Thread-157344] [transport.py] [_log()] starting thread (client mode): 0x28706470
2025-09-29T13:35:02.661 [DEBUG] [Thread-157344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:02.678 [DEBUG] [Thread-157344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:35:02.678 [INFO] [Thread-157344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:35:02.681 [DEBUG] [Thread-157344] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:02.681 [DEBUG] [Thread-157344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:35:02.681 [DEBUG] [Thread-157344] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:02.681 [DEBUG] [Thread-157344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:02.681 [DEBUG] [Thread-157344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] Compression: none
2025-09-29T13:35:02.682 [DEBUG] [Thread-157344] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:02.700 [DEBUG] [Thread-157344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:02.700 [DEBUG] [Thread-157344] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:02.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:35:02.701 [DEBUG] [Thread-157344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:35:02.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:02.703 [DEBUG] [Thread-157344] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:02.704 [DEBUG] [Thread-157344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:02.704 [DEBUG] [Thread-157344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:02.704 [DEBUG] [Thread-157344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:35:02.704 [DEBUG] [Thread-157344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:02.728 [INFO] [Thread-157344] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:02.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:05.505 [DEBUG] [Thread-157344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:05.505 [DEBUG] [Thread-157344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:05.505 [DEBUG] [Thread-157344] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:35:05.546 [DEBUG] [Thread-157344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:05.547 [DEBUG] [Thread-157344] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:05.549 [DEBUG] [Thread-157344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:05.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:05.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:35:05.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:35:05.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:35:05.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:05.583 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:35:05.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:05.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:05.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:35:05.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.482361 -999.00  +14.40  10.30     42   +1.80 1 1 1 1 1   888    0 13.45 40.44 ----- 11.8 10.3 96.0 18.3 23.4 -35.8 23.1 -28.6 24.0 -27.8 25.2 -28.2
2025-09-29T13:35:05.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:35:05.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:35:05.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.482361
2025-09-29T13:35:05.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:35:05.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:35:05.586 [DEBUG] [Thread-157344] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:05.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:35:05.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:35:05.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:35:05.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:34:56', tmtdew=13.88, humidity=38.55, cloud=0.0, wind=6.39, temperature=13.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:34:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:35:05.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:35:05.681 [DEBUG] [Thread-157347] [transport.py] [_log()] starting thread (client mode): 0x28704b50
2025-09-29T13:35:05.681 [DEBUG] [Thread-157347] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:05.697 [DEBUG] [Thread-157347] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:35:05.697 [INFO] [Thread-157347] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:35:05.704 [DEBUG] [Thread-157347] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:05.704 [DEBUG] [Thread-157347] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] Compression: none
2025-09-29T13:35:05.705 [DEBUG] [Thread-157347] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:05.764 [DEBUG] [Thread-157347] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:05.765 [DEBUG] [Thread-157347] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:05.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:35:05.766 [DEBUG] [Thread-157347] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:35:05.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:05.821 [DEBUG] [Thread-157347] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:05.822 [DEBUG] [Thread-157347] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:05.822 [DEBUG] [Thread-157347] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:05.822 [DEBUG] [Thread-157347] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:35:05.822 [DEBUG] [Thread-157347] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:05.840 [INFO] [Thread-157347] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:05.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:35:05.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:06.873 [DEBUG] [Thread-157347] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:06.873 [DEBUG] [Thread-157347] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:06.920 [DEBUG] [Thread-157347] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:06.920 [DEBUG] [Thread-157347] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:06.929 [DEBUG] [Thread-157347] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:06.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:06.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:35:06.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:35:06.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:06.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:06.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:06.963 [DEBUG] [Thread-157347] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:09.702 [DEBUG] [Thread-157349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:35:16.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:35:16.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:35:16.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:35:17.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 34, 56), 13.88, 38.55, 0.0, 6.39, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:35:17.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:34:56
2025-09-29T13:35:17.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:35:17.855 [DEBUG] [Thread-157350] [transport.py] [_log()] starting thread (client mode): 0x2e34b8e0
2025-09-29T13:35:17.855 [DEBUG] [Thread-157350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:17.874 [DEBUG] [Thread-157350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:35:17.874 [INFO] [Thread-157350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:17.877 [DEBUG] [Thread-157350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:17.878 [DEBUG] [Thread-157350] [transport.py] [_log()] Compression: none
2025-09-29T13:35:17.878 [DEBUG] [Thread-157350] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:17.884 [DEBUG] [Thread-157350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:17.885 [DEBUG] [Thread-157350] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:17.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:35:17.885 [DEBUG] [Thread-157350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:35:17.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:17.885 [DEBUG] [Thread-157350] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:17.885 [DEBUG] [Thread-157350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:17.885 [DEBUG] [Thread-157350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:17.885 [DEBUG] [Thread-157350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:35:17.885 [DEBUG] [Thread-157350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:17.895 [INFO] [Thread-157350] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:17.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:18.513 [DEBUG] [Thread-157350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:18.513 [DEBUG] [Thread-157350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:18.513 [DEBUG] [Thread-157350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:35:18.554 [DEBUG] [Thread-157350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:18.555 [DEBUG] [Thread-157350] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:18.558 [DEBUG] [Thread-157350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:18.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:18.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:35:18.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:35:18.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:35:18.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:18.582 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:35:18.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:18.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:18.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:35:18.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.482708 -999.00  +14.40  10.21     42   +1.90 1 1 1 1 1   888    0 13.34 35.54 ----- 5.8 10.2 150.9 15.3 23.7 -27.2 23.2 -27.8 24.1 -28.7 25.2 -28.4
2025-09-29T13:35:18.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:35:18.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:35:18.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.482708
2025-09-29T13:35:18.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:35:18.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:35:18.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:35:18.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:35:18.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:35:18.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:34:56', tmtdew=13.88, humidity=38.55, cloud=0.0, wind=6.39, temperature=13.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:35:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:35:18.585 [DEBUG] [Thread-157350] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:18.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:35:18.681 [DEBUG] [Thread-157353] [transport.py] [_log()] starting thread (client mode): 0x2e348df0
2025-09-29T13:35:18.681 [DEBUG] [Thread-157353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:18.696 [DEBUG] [Thread-157353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:35:18.696 [INFO] [Thread-157353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:35:18.703 [DEBUG] [Thread-157353] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:18.704 [DEBUG] [Thread-157353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:35:18.704 [DEBUG] [Thread-157353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:18.704 [DEBUG] [Thread-157353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:18.704 [DEBUG] [Thread-157353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:18.704 [DEBUG] [Thread-157353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:18.704 [DEBUG] [Thread-157353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] Compression: none
2025-09-29T13:35:18.705 [DEBUG] [Thread-157353] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:18.764 [DEBUG] [Thread-157353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:18.764 [DEBUG] [Thread-157353] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:18.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:35:18.765 [DEBUG] [Thread-157353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:35:18.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:18.821 [DEBUG] [Thread-157353] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:18.822 [DEBUG] [Thread-157353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:18.822 [DEBUG] [Thread-157353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:18.822 [DEBUG] [Thread-157353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:35:18.822 [DEBUG] [Thread-157353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:18.842 [INFO] [Thread-157353] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:18.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:35:18.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:19.825 [DEBUG] [Thread-157353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:19.825 [DEBUG] [Thread-157353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:19.873 [DEBUG] [Thread-157353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:19.873 [DEBUG] [Thread-157353] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:19.882 [DEBUG] [Thread-157353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:19.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:19.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:35:19.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:35:19.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:19.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:19.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:19.915 [DEBUG] [Thread-157353] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:24.757 [DEBUG] [Thread-157355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:35:29.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:35:29.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:35:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:35:30.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 34, 56), 13.88, 38.55, 0.0, 6.39, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:35:30.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:34:56
2025-09-29T13:35:30.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:35:30.783 [DEBUG] [Thread-157356] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d70
2025-09-29T13:35:30.784 [DEBUG] [Thread-157356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:30.803 [DEBUG] [Thread-157356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:35:30.803 [INFO] [Thread-157356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:30.807 [DEBUG] [Thread-157356] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:30.808 [DEBUG] [Thread-157356] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:30.808 [DEBUG] [Thread-157356] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:30.808 [DEBUG] [Thread-157356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:30.808 [DEBUG] [Thread-157356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:30.808 [DEBUG] [Thread-157356] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:30.808 [DEBUG] [Thread-157356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:30.808 [DEBUG] [Thread-157356] [transport.py] [_log()] Compression: none
2025-09-29T13:35:30.808 [DEBUG] [Thread-157356] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:30.826 [DEBUG] [Thread-157356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:30.827 [DEBUG] [Thread-157356] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:30.828 [DEBUG] [Thread-157356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:35:30.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:35:30.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:30.830 [DEBUG] [Thread-157356] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:30.831 [DEBUG] [Thread-157356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:30.831 [DEBUG] [Thread-157356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:30.831 [DEBUG] [Thread-157356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:35:30.831 [DEBUG] [Thread-157356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:30.866 [INFO] [Thread-157356] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:30.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:31.506 [DEBUG] [Thread-157356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:31.507 [DEBUG] [Thread-157356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:31.507 [DEBUG] [Thread-157356] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:35:31.547 [DEBUG] [Thread-157356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:31.548 [DEBUG] [Thread-157356] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:31.551 [DEBUG] [Thread-157356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:31.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:31.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:35:31.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:35:31.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:35:31.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:31.575 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:35:31.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:31.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:31.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:35:31.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.482708 -999.00  +14.40  10.21     42   +1.90 1 1 1 1 1   888    0 13.34 35.54 ----- 5.8 10.2 150.9 15.3 23.7 -27.2 23.2 -27.8 24.1 -28.7 25.2 -28.4
2025-09-29T13:35:31.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:35:31.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:35:31.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.482708
2025-09-29T13:35:31.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:35:31.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:35:31.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:35:31.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:35:31.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:35:31.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:34:56', tmtdew=13.88, humidity=38.55, cloud=0.0, wind=6.39, temperature=13.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:35:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:35:31.578 [DEBUG] [Thread-157356] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:31.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:35:31.667 [DEBUG] [Thread-157359] [transport.py] [_log()] starting thread (client mode): 0x2b9d5240
2025-09-29T13:35:31.667 [DEBUG] [Thread-157359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:31.682 [DEBUG] [Thread-157359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:35:31.682 [INFO] [Thread-157359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:35:31.689 [DEBUG] [Thread-157359] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:31.690 [DEBUG] [Thread-157359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:35:31.690 [DEBUG] [Thread-157359] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:31.690 [DEBUG] [Thread-157359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:31.690 [DEBUG] [Thread-157359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:31.690 [DEBUG] [Thread-157359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:31.690 [DEBUG] [Thread-157359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] Compression: none
2025-09-29T13:35:31.691 [DEBUG] [Thread-157359] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:31.749 [DEBUG] [Thread-157359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:31.749 [DEBUG] [Thread-157359] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:31.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:35:31.750 [DEBUG] [Thread-157359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:35:31.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:31.805 [DEBUG] [Thread-157359] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:31.806 [DEBUG] [Thread-157359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:31.806 [DEBUG] [Thread-157359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:31.806 [DEBUG] [Thread-157359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:35:31.806 [DEBUG] [Thread-157359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:31.825 [INFO] [Thread-157359] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:31.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:35:31.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:32.891 [DEBUG] [Thread-157359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:32.891 [DEBUG] [Thread-157359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:32.939 [DEBUG] [Thread-157359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:32.939 [DEBUG] [Thread-157359] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:32.948 [DEBUG] [Thread-157359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:32.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:32.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:35:32.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:35:32.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:32.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:32.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:32.983 [DEBUG] [Thread-157359] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:39.804 [DEBUG] [Thread-157361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:35:42.268 [DEBUG] [Thread-157362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:35:42.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:35:42.986 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:35:42.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:35:43.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 35, 28), 13.85, 38.67, 0.0, 9.76, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:35:43.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:35:28
2025-09-29T13:35:43.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:35:43.830 [DEBUG] [Thread-157363] [transport.py] [_log()] starting thread (client mode): 0x2e3c2860
2025-09-29T13:35:43.831 [DEBUG] [Thread-157363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:43.853 [DEBUG] [Thread-157363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:35:43.853 [INFO] [Thread-157363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] Compression: none
2025-09-29T13:35:43.857 [DEBUG] [Thread-157363] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:43.874 [DEBUG] [Thread-157363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:43.875 [DEBUG] [Thread-157363] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:43.875 [DEBUG] [Thread-157363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:35:43.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:35:43.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:43.877 [DEBUG] [Thread-157363] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:43.878 [DEBUG] [Thread-157363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:43.878 [DEBUG] [Thread-157363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:43.878 [DEBUG] [Thread-157363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:35:43.878 [DEBUG] [Thread-157363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:43.903 [INFO] [Thread-157363] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:43.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:44.555 [DEBUG] [Thread-157363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:44.555 [DEBUG] [Thread-157363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:44.556 [DEBUG] [Thread-157363] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:35:44.596 [DEBUG] [Thread-157363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:44.596 [DEBUG] [Thread-157363] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:44.599 [DEBUG] [Thread-157363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:44.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:44.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:35:44.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:35:44.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:35:44.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:44.623 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:35:44.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:44.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:35:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.482708 -999.00  +14.40  10.21     42   +1.90 1 1 1 1 1   888    0 13.34 35.54 ----- 5.8 10.2 150.9 15.3 23.7 -27.2 23.2 -27.8 24.1 -28.7 25.2 -28.4
2025-09-29T13:35:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:35:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:35:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.482708
2025-09-29T13:35:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:35:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:35:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:35:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:35:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:35:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:35:28', tmtdew=13.85, humidity=38.67, cloud=0.0, wind=9.76, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:35:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:35:44.625 [DEBUG] [Thread-157363] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:44.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:35:44.722 [DEBUG] [Thread-157366] [transport.py] [_log()] starting thread (client mode): 0x2e34b0a0
2025-09-29T13:35:44.722 [DEBUG] [Thread-157366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:44.737 [DEBUG] [Thread-157366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:35:44.737 [INFO] [Thread-157366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:35:44.744 [DEBUG] [Thread-157366] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] Compression: none
2025-09-29T13:35:44.745 [DEBUG] [Thread-157366] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:44.801 [DEBUG] [Thread-157366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:44.801 [DEBUG] [Thread-157366] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:44.802 [DEBUG] [Thread-157366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:35:44.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:35:44.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:44.857 [DEBUG] [Thread-157366] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:44.858 [DEBUG] [Thread-157366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:44.858 [DEBUG] [Thread-157366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:44.858 [DEBUG] [Thread-157366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:35:44.858 [DEBUG] [Thread-157366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:44.876 [INFO] [Thread-157366] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:44.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:35:44.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:45.841 [DEBUG] [Thread-157366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:45.841 [DEBUG] [Thread-157366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:45.890 [DEBUG] [Thread-157366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:45.890 [DEBUG] [Thread-157366] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:45.900 [DEBUG] [Thread-157366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:45.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:45.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:35:45.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:35:45.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:45.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:45.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:45.939 [DEBUG] [Thread-157366] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:54.832 [DEBUG] [Thread-157368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:35:55.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:35:55.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:35:55.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:35:56.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 35, 28), 13.85, 38.67, 0.0, 9.76, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:35:56.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:35:28
2025-09-29T13:35:56.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:35:56.778 [DEBUG] [Thread-157369] [transport.py] [_log()] starting thread (client mode): 0x2b9c2710
2025-09-29T13:35:56.779 [DEBUG] [Thread-157369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:56.798 [DEBUG] [Thread-157369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:35:56.798 [INFO] [Thread-157369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:56.801 [DEBUG] [Thread-157369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:56.802 [DEBUG] [Thread-157369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:56.802 [DEBUG] [Thread-157369] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:56.802 [DEBUG] [Thread-157369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:56.802 [DEBUG] [Thread-157369] [transport.py] [_log()] Compression: none
2025-09-29T13:35:56.802 [DEBUG] [Thread-157369] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:56.818 [DEBUG] [Thread-157369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:56.818 [DEBUG] [Thread-157369] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:56.819 [DEBUG] [Thread-157369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:35:56.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:35:56.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:56.821 [DEBUG] [Thread-157369] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:56.821 [DEBUG] [Thread-157369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:56.821 [DEBUG] [Thread-157369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:56.821 [DEBUG] [Thread-157369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:35:56.821 [DEBUG] [Thread-157369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:56.845 [INFO] [Thread-157369] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:56.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:56.890 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:35:56.891 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:35:57.496 [DEBUG] [Thread-157369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:57.496 [DEBUG] [Thread-157369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:57.496 [DEBUG] [Thread-157369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:35:57.537 [DEBUG] [Thread-157369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:57.537 [DEBUG] [Thread-157369] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:57.540 [DEBUG] [Thread-157369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:57.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:57.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:35:57.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:35:57.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:35:57.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:57.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:35:57.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:57.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:57.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:35:57.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.483055 -999.00  +14.50  12.47     42   +1.90 1 1 1 1 1   888    0 13.52 37.13 ----- 11.0 12.5 138.0 15.1 23.9 -28.1 23.2 -28.1 24.2 -28.2 25.2 -30.3
2025-09-29T13:35:57.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:35:57.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:35:57.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.483055
2025-09-29T13:35:57.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:35:57.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:35:57.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:35:57.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:35:57.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:35:57.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:35:28', tmtdew=13.85, humidity=38.67, cloud=0.0, wind=9.76, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:35:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:35:57.566 [DEBUG] [Thread-157369] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:35:57.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:35:57.659 [DEBUG] [Thread-157372] [transport.py] [_log()] starting thread (client mode): 0x2e38dae0
2025-09-29T13:35:57.659 [DEBUG] [Thread-157372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:35:57.674 [DEBUG] [Thread-157372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:35:57.674 [INFO] [Thread-157372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:35:57.681 [DEBUG] [Thread-157372] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] client lang: <none>
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] server lang: <none>
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] kex follows: False
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] Compression: none
2025-09-29T13:35:57.682 [DEBUG] [Thread-157372] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:35:57.742 [DEBUG] [Thread-157372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:35:57.742 [DEBUG] [Thread-157372] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:35:57.743 [DEBUG] [Thread-157372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:35:57.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:35:57.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:35:57.798 [DEBUG] [Thread-157372] [transport.py] [_log()] userauth is OK
2025-09-29T13:35:57.798 [DEBUG] [Thread-157372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:35:57.798 [DEBUG] [Thread-157372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:35:57.798 [DEBUG] [Thread-157372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:35:57.798 [DEBUG] [Thread-157372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:35:57.817 [INFO] [Thread-157372] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:35:57.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:35:57.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:35:58.771 [DEBUG] [Thread-157372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:35:58.772 [DEBUG] [Thread-157372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:35:58.819 [DEBUG] [Thread-157372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:35:58.819 [DEBUG] [Thread-157372] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:35:58.828 [DEBUG] [Thread-157372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:35:58.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:35:58.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:35:58.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:35:58.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:35:58.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:35:58.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:35:58.862 [DEBUG] [Thread-157372] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:08.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:36:08.865 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:36:08.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:36:09.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 35, 28), 13.85, 38.67, 0.0, 9.76, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:36:09.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:35:28
2025-09-29T13:36:09.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:36:09.692 [DEBUG] [Thread-157374] [transport.py] [_log()] starting thread (client mode): 0x2b9557e0
2025-09-29T13:36:09.692 [DEBUG] [Thread-157374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:36:09.712 [DEBUG] [Thread-157374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:36:09.712 [INFO] [Thread-157374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] client lang: <none>
2025-09-29T13:36:09.716 [DEBUG] [Thread-157374] [transport.py] [_log()] server lang: <none>
2025-09-29T13:36:09.717 [DEBUG] [Thread-157374] [transport.py] [_log()] kex follows: False
2025-09-29T13:36:09.717 [DEBUG] [Thread-157374] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:36:09.717 [DEBUG] [Thread-157374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:36:09.717 [DEBUG] [Thread-157374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:36:09.717 [DEBUG] [Thread-157374] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:36:09.717 [DEBUG] [Thread-157374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:36:09.717 [DEBUG] [Thread-157374] [transport.py] [_log()] Compression: none
2025-09-29T13:36:09.717 [DEBUG] [Thread-157374] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:36:09.733 [DEBUG] [Thread-157374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:36:09.733 [DEBUG] [Thread-157374] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:36:09.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:36:09.734 [DEBUG] [Thread-157374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:36:09.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:36:09.736 [DEBUG] [Thread-157374] [transport.py] [_log()] userauth is OK
2025-09-29T13:36:09.736 [DEBUG] [Thread-157374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:36:09.736 [DEBUG] [Thread-157374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:36:09.736 [DEBUG] [Thread-157374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:36:09.737 [DEBUG] [Thread-157374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:36:09.760 [INFO] [Thread-157374] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:36:09.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:36:09.867 [DEBUG] [Thread-157376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:36:10.385 [DEBUG] [Thread-157374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:36:10.385 [DEBUG] [Thread-157374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:36:10.385 [DEBUG] [Thread-157374] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:36:10.426 [DEBUG] [Thread-157374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:36:10.427 [DEBUG] [Thread-157374] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:36:10.429 [DEBUG] [Thread-157374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:36:10.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:36:10.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:36:10.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:36:10.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:36:10.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:36:10.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:36:10.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:36:10.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:36:10.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:36:10.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.483055 -999.00  +14.50  12.47     42   +1.90 1 1 1 1 1   888    0 13.52 37.13 ----- 11.0 12.5 138.0 15.1 23.9 -28.1 23.2 -28.1 24.2 -28.2 25.2 -30.3
2025-09-29T13:36:10.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:36:10.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:36:10.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.483055
2025-09-29T13:36:10.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:36:10.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:36:10.454 [DEBUG] [Thread-157374] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:10.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:36:10.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:36:10.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:36:10.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:35:28', tmtdew=13.85, humidity=38.67, cloud=0.0, wind=9.76, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:35:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:36:10.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:36:10.550 [DEBUG] [Thread-157378] [transport.py] [_log()] starting thread (client mode): 0x287045e0
2025-09-29T13:36:10.551 [DEBUG] [Thread-157378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:36:10.566 [DEBUG] [Thread-157378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:36:10.566 [INFO] [Thread-157378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:36:10.574 [DEBUG] [Thread-157378] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:36:10.574 [DEBUG] [Thread-157378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:36:10.574 [DEBUG] [Thread-157378] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:36:10.574 [DEBUG] [Thread-157378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:10.574 [DEBUG] [Thread-157378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:10.574 [DEBUG] [Thread-157378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:10.574 [DEBUG] [Thread-157378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:10.574 [DEBUG] [Thread-157378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] client lang: <none>
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] server lang: <none>
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] kex follows: False
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] Compression: none
2025-09-29T13:36:10.575 [DEBUG] [Thread-157378] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:36:10.636 [DEBUG] [Thread-157378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:36:10.637 [DEBUG] [Thread-157378] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:36:10.637 [DEBUG] [Thread-157378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:36:10.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:36:10.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:36:10.693 [DEBUG] [Thread-157378] [transport.py] [_log()] userauth is OK
2025-09-29T13:36:10.694 [DEBUG] [Thread-157378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:36:10.694 [DEBUG] [Thread-157378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:36:10.694 [DEBUG] [Thread-157378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:36:10.694 [DEBUG] [Thread-157378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:36:10.714 [INFO] [Thread-157378] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:36:10.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:36:10.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:36:11.699 [DEBUG] [Thread-157378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:36:11.700 [DEBUG] [Thread-157378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:36:11.747 [DEBUG] [Thread-157378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:36:11.747 [DEBUG] [Thread-157378] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:36:11.756 [DEBUG] [Thread-157378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:36:11.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:36:11.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:36:11.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:36:11.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:36:11.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:36:11.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:36:11.791 [DEBUG] [Thread-157378] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:21.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:36:21.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:36:21.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:36:22.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 35, 28), 13.85, 38.67, 0.0, 9.76, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:36:22.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:35:28
2025-09-29T13:36:22.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:36:22.633 [DEBUG] [Thread-157380] [transport.py] [_log()] starting thread (client mode): 0x2b9c2d10
2025-09-29T13:36:22.633 [DEBUG] [Thread-157380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:36:22.652 [DEBUG] [Thread-157380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:36:22.652 [INFO] [Thread-157380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:36:22.655 [DEBUG] [Thread-157380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] client lang: <none>
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] server lang: <none>
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] kex follows: False
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:36:22.656 [DEBUG] [Thread-157380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:36:22.657 [DEBUG] [Thread-157380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:36:22.657 [DEBUG] [Thread-157380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:36:22.657 [DEBUG] [Thread-157380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:36:22.657 [DEBUG] [Thread-157380] [transport.py] [_log()] Compression: none
2025-09-29T13:36:22.657 [DEBUG] [Thread-157380] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:36:22.673 [DEBUG] [Thread-157380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:36:22.673 [DEBUG] [Thread-157380] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:36:22.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:36:22.674 [DEBUG] [Thread-157380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:36:22.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:36:22.676 [DEBUG] [Thread-157380] [transport.py] [_log()] userauth is OK
2025-09-29T13:36:22.676 [DEBUG] [Thread-157380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:36:22.676 [DEBUG] [Thread-157380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:36:22.676 [DEBUG] [Thread-157380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:36:22.676 [DEBUG] [Thread-157380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:36:22.695 [INFO] [Thread-157380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:36:22.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:36:23.327 [DEBUG] [Thread-157380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:36:23.327 [DEBUG] [Thread-157380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:36:23.327 [DEBUG] [Thread-157380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:36:23.367 [DEBUG] [Thread-157380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:36:23.368 [DEBUG] [Thread-157380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:36:23.370 [DEBUG] [Thread-157380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:36:23.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:36:23.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:36:23.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:36:23.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:36:23.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:36:23.390 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:36:23.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:36:23.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:36:23.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:36:23.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.483403 -999.00  +14.40   7.75     42   +2.00 1 1 1 1 1   888    0 13.25 36.89 ----- 10.4 7.8 150.3 13.2 23.9 -28.0 23.2 -27.4 24.1 -27.8 25.3 -28.8
2025-09-29T13:36:23.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:36:23.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:36:23.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.483403
2025-09-29T13:36:23.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:36:23.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:36:23.392 [DEBUG] [Thread-157380] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:23.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:36:23.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:36:23.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:36:23.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:35:28', tmtdew=13.85, humidity=38.67, cloud=0.0, wind=9.76, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:36:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:36:23.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:36:23.486 [DEBUG] [Thread-157383] [transport.py] [_log()] starting thread (client mode): 0x2b9ac550
2025-09-29T13:36:23.487 [DEBUG] [Thread-157383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:36:23.503 [DEBUG] [Thread-157383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:36:23.503 [INFO] [Thread-157383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:36:23.511 [DEBUG] [Thread-157383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:36:23.511 [DEBUG] [Thread-157383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:36:23.511 [DEBUG] [Thread-157383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] client lang: <none>
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] server lang: <none>
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] kex follows: False
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] Compression: none
2025-09-29T13:36:23.512 [DEBUG] [Thread-157383] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:36:23.568 [DEBUG] [Thread-157383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:36:23.569 [DEBUG] [Thread-157383] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:36:23.569 [DEBUG] [Thread-157383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:36:23.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:36:23.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:36:23.626 [DEBUG] [Thread-157383] [transport.py] [_log()] userauth is OK
2025-09-29T13:36:23.626 [DEBUG] [Thread-157383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:36:23.626 [DEBUG] [Thread-157383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:36:23.626 [DEBUG] [Thread-157383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:36:23.626 [DEBUG] [Thread-157383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:36:23.648 [INFO] [Thread-157383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:36:23.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:36:23.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:36:24.663 [DEBUG] [Thread-157383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:36:24.663 [DEBUG] [Thread-157383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:36:24.711 [DEBUG] [Thread-157383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:36:24.711 [DEBUG] [Thread-157383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:36:24.720 [DEBUG] [Thread-157383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:36:24.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:36:24.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:36:24.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:36:24.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:36:24.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:36:24.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:36:24.754 [DEBUG] [Thread-157383] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:24.923 [DEBUG] [Thread-157385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:36:34.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:36:34.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:36:34.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:36:35.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 36, 32), 14.31, 37.57, 0.0, 13.13, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:36:35.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:36:32
2025-09-29T13:36:35.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:36:35.602 [DEBUG] [Thread-157386] [transport.py] [_log()] starting thread (client mode): 0x2b91fc40
2025-09-29T13:36:35.602 [DEBUG] [Thread-157386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:36:35.622 [DEBUG] [Thread-157386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:36:35.623 [INFO] [Thread-157386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:36:35.626 [DEBUG] [Thread-157386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:36:35.626 [DEBUG] [Thread-157386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:36:35.626 [DEBUG] [Thread-157386] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:36:35.626 [DEBUG] [Thread-157386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:35.626 [DEBUG] [Thread-157386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:35.626 [DEBUG] [Thread-157386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:35.626 [DEBUG] [Thread-157386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] client lang: <none>
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] server lang: <none>
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] kex follows: False
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:36:35.627 [DEBUG] [Thread-157386] [transport.py] [_log()] Compression: none
2025-09-29T13:36:35.628 [DEBUG] [Thread-157386] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:36:35.646 [DEBUG] [Thread-157386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:36:35.646 [DEBUG] [Thread-157386] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:36:35.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:36:35.647 [DEBUG] [Thread-157386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:36:35.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:36:35.649 [DEBUG] [Thread-157386] [transport.py] [_log()] userauth is OK
2025-09-29T13:36:35.649 [DEBUG] [Thread-157386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:36:35.649 [DEBUG] [Thread-157386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:36:35.650 [DEBUG] [Thread-157386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:36:35.650 [DEBUG] [Thread-157386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:36:35.668 [INFO] [Thread-157386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:36:35.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:36:36.309 [DEBUG] [Thread-157386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:36:36.310 [DEBUG] [Thread-157386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:36:36.310 [DEBUG] [Thread-157386] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:36:36.350 [DEBUG] [Thread-157386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:36:36.350 [DEBUG] [Thread-157386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:36:36.353 [DEBUG] [Thread-157386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:36:36.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:36:36.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:36:36.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:36:36.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:36:36.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:36:36.377 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:36:36.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:36:36.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:36:36.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:36:36.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.483403 -999.00  +14.40   7.75     42   +2.00 1 1 1 1 1   888    0 13.25 36.89 ----- 10.4 7.8 150.3 13.2 23.9 -28.0 23.2 -27.4 24.1 -27.8 25.3 -28.8
2025-09-29T13:36:36.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:36:36.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:36:36.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.483403
2025-09-29T13:36:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:36:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:36:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:36:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:36:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:36:36.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:36:32', tmtdew=14.31, humidity=37.57, cloud=0.0, wind=13.13, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:36:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:36:36.380 [DEBUG] [Thread-157386] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:36.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:36:36.476 [DEBUG] [Thread-157389] [transport.py] [_log()] starting thread (client mode): 0x2b91cc40
2025-09-29T13:36:36.476 [DEBUG] [Thread-157389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:36:36.491 [DEBUG] [Thread-157389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:36:36.491 [INFO] [Thread-157389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:36:36.498 [DEBUG] [Thread-157389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] client lang: <none>
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] server lang: <none>
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] kex follows: False
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] Compression: none
2025-09-29T13:36:36.499 [DEBUG] [Thread-157389] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:36:36.557 [DEBUG] [Thread-157389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:36:36.557 [DEBUG] [Thread-157389] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:36:36.558 [DEBUG] [Thread-157389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:36:36.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:36:36.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:36:36.613 [DEBUG] [Thread-157389] [transport.py] [_log()] userauth is OK
2025-09-29T13:36:36.613 [DEBUG] [Thread-157389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:36:36.614 [DEBUG] [Thread-157389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:36:36.614 [DEBUG] [Thread-157389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:36:36.614 [DEBUG] [Thread-157389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:36:36.633 [INFO] [Thread-157389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:36:36.633 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:36:36.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:36:37.575 [DEBUG] [Thread-157389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:36:37.575 [DEBUG] [Thread-157389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:36:37.623 [DEBUG] [Thread-157389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:36:37.623 [DEBUG] [Thread-157389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:36:37.632 [DEBUG] [Thread-157389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:36:37.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:36:37.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:36:37.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:36:37.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:36:37.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:36:37.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:36:37.667 [DEBUG] [Thread-157389] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:39.967 [DEBUG] [Thread-157391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:36:42.307 [DEBUG] [Thread-157392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:36:47.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:36:47.670 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:36:47.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:36:48.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 36, 32), 14.31, 37.57, 0.0, 13.13, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:36:48.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:36:32
2025-09-29T13:36:48.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:36:48.514 [DEBUG] [Thread-157393] [transport.py] [_log()] starting thread (client mode): 0x2e34b010
2025-09-29T13:36:48.515 [DEBUG] [Thread-157393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:36:48.534 [DEBUG] [Thread-157393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:36:48.534 [INFO] [Thread-157393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:36:48.535 [DEBUG] [Thread-157393] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:36:48.535 [DEBUG] [Thread-157393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:36:48.535 [DEBUG] [Thread-157393] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:36:48.535 [DEBUG] [Thread-157393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:48.535 [DEBUG] [Thread-157393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] client lang: <none>
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] server lang: <none>
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] kex follows: False
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] Compression: none
2025-09-29T13:36:48.536 [DEBUG] [Thread-157393] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:36:48.544 [DEBUG] [Thread-157393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:36:48.544 [DEBUG] [Thread-157393] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:36:48.544 [DEBUG] [Thread-157393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:36:48.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:36:48.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:36:48.546 [DEBUG] [Thread-157393] [transport.py] [_log()] userauth is OK
2025-09-29T13:36:48.546 [DEBUG] [Thread-157393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:36:48.546 [DEBUG] [Thread-157393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:36:48.546 [DEBUG] [Thread-157393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:36:48.546 [DEBUG] [Thread-157393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:36:48.568 [INFO] [Thread-157393] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:36:48.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:36:49.203 [DEBUG] [Thread-157393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:36:49.203 [DEBUG] [Thread-157393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:36:49.204 [DEBUG] [Thread-157393] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:36:49.244 [DEBUG] [Thread-157393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:36:49.244 [DEBUG] [Thread-157393] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:36:49.247 [DEBUG] [Thread-157393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:36:49.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:36:49.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:36:49.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:36:49.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:36:49.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:36:49.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:36:49.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:36:49.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:36:49.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:36:49.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.483403 -999.00  +14.40   7.75     42   +2.00 1 1 1 1 1   888    0 13.25 36.89 ----- 10.4 7.8 150.3 13.2 23.9 -28.0 23.2 -27.4 24.1 -27.8 25.3 -28.8
2025-09-29T13:36:49.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:36:49.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:36:49.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.483403
2025-09-29T13:36:49.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:36:49.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:36:49.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:36:49.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:36:49.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:36:49.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:36:32', tmtdew=14.31, humidity=37.57, cloud=0.0, wind=13.13, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:36:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:36:49.274 [DEBUG] [Thread-157393] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:49.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:36:49.366 [DEBUG] [Thread-157396] [transport.py] [_log()] starting thread (client mode): 0x2b954a90
2025-09-29T13:36:49.366 [DEBUG] [Thread-157396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:36:49.381 [DEBUG] [Thread-157396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:36:49.381 [INFO] [Thread-157396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:36:49.389 [DEBUG] [Thread-157396] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:36:49.389 [DEBUG] [Thread-157396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:36:49.389 [DEBUG] [Thread-157396] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:36:49.389 [DEBUG] [Thread-157396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:49.389 [DEBUG] [Thread-157396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:36:49.389 [DEBUG] [Thread-157396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] client lang: <none>
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] server lang: <none>
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] kex follows: False
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] Compression: none
2025-09-29T13:36:49.390 [DEBUG] [Thread-157396] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:36:49.445 [DEBUG] [Thread-157396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:36:49.445 [DEBUG] [Thread-157396] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:36:49.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:36:49.446 [DEBUG] [Thread-157396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:36:49.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:36:49.502 [DEBUG] [Thread-157396] [transport.py] [_log()] userauth is OK
2025-09-29T13:36:49.503 [DEBUG] [Thread-157396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:36:49.503 [DEBUG] [Thread-157396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:36:49.503 [DEBUG] [Thread-157396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:36:49.503 [DEBUG] [Thread-157396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:36:49.521 [INFO] [Thread-157396] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:36:49.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:36:49.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:36:50.474 [DEBUG] [Thread-157396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:36:50.474 [DEBUG] [Thread-157396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:36:50.522 [DEBUG] [Thread-157396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:36:50.522 [DEBUG] [Thread-157396] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:36:50.531 [DEBUG] [Thread-157396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:36:50.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:36:50.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:36:50.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:36:50.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:36:50.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:36:50.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:36:50.564 [DEBUG] [Thread-157396] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:36:55.013 [DEBUG] [Thread-157398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:36:57.034 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:36:57.035 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:37:00.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:37:00.567 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:37:00.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:37:01.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 36, 32), 14.31, 37.57, 0.0, 13.13, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:37:01.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:36:32
2025-09-29T13:37:01.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:37:01.405 [DEBUG] [Thread-157399] [transport.py] [_log()] starting thread (client mode): 0x2b9cbbb0
2025-09-29T13:37:01.405 [DEBUG] [Thread-157399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:01.426 [DEBUG] [Thread-157399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:37:01.426 [INFO] [Thread-157399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:01.429 [DEBUG] [Thread-157399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:01.430 [DEBUG] [Thread-157399] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:01.430 [DEBUG] [Thread-157399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:01.430 [DEBUG] [Thread-157399] [transport.py] [_log()] Compression: none
2025-09-29T13:37:01.430 [DEBUG] [Thread-157399] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:01.446 [DEBUG] [Thread-157399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:01.447 [DEBUG] [Thread-157399] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:01.447 [DEBUG] [Thread-157399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:37:01.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:37:01.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:01.449 [DEBUG] [Thread-157399] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:01.449 [DEBUG] [Thread-157399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:01.450 [DEBUG] [Thread-157399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:01.450 [DEBUG] [Thread-157399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:37:01.450 [DEBUG] [Thread-157399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:01.473 [INFO] [Thread-157399] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:01.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:02.127 [DEBUG] [Thread-157399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:02.127 [DEBUG] [Thread-157399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:02.128 [DEBUG] [Thread-157399] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:37:02.168 [DEBUG] [Thread-157399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:02.169 [DEBUG] [Thread-157399] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:02.171 [DEBUG] [Thread-157399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:02.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:02.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:37:02.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:37:02.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:37:02.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:02.196 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:37:02.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:02.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:02.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:37:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.483750 -999.00  +14.50   6.46     42   +2.00 1 1 1 1 1   888    0 13.43 37.18 ----- 5.9 6.5 170.8 11.7 24.0 -27.9 23.1 -28.7 24.2 -27.6 25.4 -28.7
2025-09-29T13:37:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:37:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:37:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.483750
2025-09-29T13:37:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:37:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:37:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:37:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:37:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:37:02.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:36:32', tmtdew=14.31, humidity=37.57, cloud=0.0, wind=13.13, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:36:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:37:02.198 [DEBUG] [Thread-157399] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:02.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:37:02.295 [DEBUG] [Thread-157402] [transport.py] [_log()] starting thread (client mode): 0x2b9ae5f0
2025-09-29T13:37:02.296 [DEBUG] [Thread-157402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:02.311 [DEBUG] [Thread-157402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:37:02.311 [INFO] [Thread-157402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:37:02.318 [DEBUG] [Thread-157402] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:02.319 [DEBUG] [Thread-157402] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:02.320 [DEBUG] [Thread-157402] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:02.320 [DEBUG] [Thread-157402] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:02.320 [DEBUG] [Thread-157402] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:02.320 [DEBUG] [Thread-157402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:02.320 [DEBUG] [Thread-157402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:02.320 [DEBUG] [Thread-157402] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:02.320 [DEBUG] [Thread-157402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:02.320 [DEBUG] [Thread-157402] [transport.py] [_log()] Compression: none
2025-09-29T13:37:02.321 [DEBUG] [Thread-157402] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:02.385 [DEBUG] [Thread-157402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:02.385 [DEBUG] [Thread-157402] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:02.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:37:02.386 [DEBUG] [Thread-157402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:37:02.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:02.441 [DEBUG] [Thread-157402] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:02.442 [DEBUG] [Thread-157402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:02.442 [DEBUG] [Thread-157402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:02.442 [DEBUG] [Thread-157402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:37:02.442 [DEBUG] [Thread-157402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:02.461 [INFO] [Thread-157402] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:02.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:37:02.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:03.436 [DEBUG] [Thread-157402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:03.437 [DEBUG] [Thread-157402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:03.484 [DEBUG] [Thread-157402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:03.484 [DEBUG] [Thread-157402] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:03.493 [DEBUG] [Thread-157402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:03.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:03.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:37:03.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:37:03.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:03.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:03.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:03.526 [DEBUG] [Thread-157402] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:10.046 [DEBUG] [Thread-157404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:37:13.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:37:13.529 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:37:13.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:37:14.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 37, 3), 14.33, 37.56, 0.0, 13.43, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:37:14.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:37:03
2025-09-29T13:37:14.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:37:14.356 [DEBUG] [Thread-157405] [transport.py] [_log()] starting thread (client mode): 0x2e34b820
2025-09-29T13:37:14.356 [DEBUG] [Thread-157405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:14.376 [DEBUG] [Thread-157405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:37:14.376 [INFO] [Thread-157405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:14.379 [DEBUG] [Thread-157405] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:14.380 [DEBUG] [Thread-157405] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:14.380 [DEBUG] [Thread-157405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:14.380 [DEBUG] [Thread-157405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:14.380 [DEBUG] [Thread-157405] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:14.380 [DEBUG] [Thread-157405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:14.380 [DEBUG] [Thread-157405] [transport.py] [_log()] Compression: none
2025-09-29T13:37:14.380 [DEBUG] [Thread-157405] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:14.398 [DEBUG] [Thread-157405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:14.399 [DEBUG] [Thread-157405] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:14.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:37:14.399 [DEBUG] [Thread-157405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:37:14.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:14.401 [DEBUG] [Thread-157405] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:14.401 [DEBUG] [Thread-157405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:14.402 [DEBUG] [Thread-157405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:14.402 [DEBUG] [Thread-157405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:37:14.402 [DEBUG] [Thread-157405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:14.419 [INFO] [Thread-157405] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:14.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:14.998 [DEBUG] [Thread-157405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:14.998 [DEBUG] [Thread-157405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:14.998 [DEBUG] [Thread-157405] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:37:15.039 [DEBUG] [Thread-157405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:15.039 [DEBUG] [Thread-157405] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:15.042 [DEBUG] [Thread-157405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:15.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:15.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:37:15.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:37:15.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:37:15.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:15.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:37:15.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:15.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:15.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:37:15.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.483750 -999.00  +14.50   6.46     42   +2.00 1 1 1 1 1   888    0 13.43 37.18 ----- 5.9 6.5 170.8 11.7 24.0 -27.9 23.1 -28.7 24.2 -27.6 25.4 -28.7
2025-09-29T13:37:15.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:37:15.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:37:15.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.483750
2025-09-29T13:37:15.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:37:15.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:37:15.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:37:15.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:37:15.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:37:15.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:37:03', tmtdew=14.33, humidity=37.56, cloud=0.0, wind=13.43, temperature=14.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:36:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:37:15.067 [DEBUG] [Thread-157405] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:15.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:37:15.160 [DEBUG] [Thread-157408] [transport.py] [_log()] starting thread (client mode): 0x2e38e140
2025-09-29T13:37:15.160 [DEBUG] [Thread-157408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:15.175 [DEBUG] [Thread-157408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:37:15.175 [INFO] [Thread-157408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:15.183 [DEBUG] [Thread-157408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:15.184 [DEBUG] [Thread-157408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:15.184 [DEBUG] [Thread-157408] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:15.184 [DEBUG] [Thread-157408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:15.184 [DEBUG] [Thread-157408] [transport.py] [_log()] Compression: none
2025-09-29T13:37:15.184 [DEBUG] [Thread-157408] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:15.241 [DEBUG] [Thread-157408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:15.241 [DEBUG] [Thread-157408] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:15.241 [DEBUG] [Thread-157408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:37:15.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:37:15.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:15.297 [DEBUG] [Thread-157408] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:15.297 [DEBUG] [Thread-157408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:15.297 [DEBUG] [Thread-157408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:15.298 [DEBUG] [Thread-157408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:37:15.298 [DEBUG] [Thread-157408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:15.316 [INFO] [Thread-157408] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:15.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:37:15.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:16.307 [DEBUG] [Thread-157408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:16.307 [DEBUG] [Thread-157408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:16.355 [DEBUG] [Thread-157408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:16.355 [DEBUG] [Thread-157408] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:16.364 [DEBUG] [Thread-157408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:16.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:16.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:37:16.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:37:16.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:16.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:16.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:16.399 [DEBUG] [Thread-157408] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:25.084 [DEBUG] [Thread-157410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:37:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:37:26.395 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:37:26.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:37:26.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 37, 3), 14.33, 37.56, 0.0, 13.43, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:37:26.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:37:03
2025-09-29T13:37:27.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:37:27.219 [DEBUG] [Thread-157411] [transport.py] [_log()] starting thread (client mode): 0x2b91c7c0
2025-09-29T13:37:27.219 [DEBUG] [Thread-157411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:27.236 [DEBUG] [Thread-157411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:37:27.236 [INFO] [Thread-157411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:37:27.238 [DEBUG] [Thread-157411] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] Compression: none
2025-09-29T13:37:27.239 [DEBUG] [Thread-157411] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:27.248 [DEBUG] [Thread-157411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:27.248 [DEBUG] [Thread-157411] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:27.249 [DEBUG] [Thread-157411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:37:27.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:37:27.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:27.250 [DEBUG] [Thread-157411] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:27.250 [DEBUG] [Thread-157411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:27.250 [DEBUG] [Thread-157411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:27.250 [DEBUG] [Thread-157411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:37:27.250 [DEBUG] [Thread-157411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:27.264 [INFO] [Thread-157411] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:27.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:27.865 [DEBUG] [Thread-157411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:27.865 [DEBUG] [Thread-157411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:27.866 [DEBUG] [Thread-157411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:37:27.906 [DEBUG] [Thread-157411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:27.906 [DEBUG] [Thread-157411] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:27.909 [DEBUG] [Thread-157411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:27.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:27.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:37:27.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:37:27.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:37:27.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:27.929 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:37:27.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:27.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:27.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:37:27.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.483750 -999.00  +14.50   6.46     42   +2.00 1 1 1 1 1   888    0 13.43 37.18 ----- 5.9 6.5 170.8 11.7 24.0 -27.9 23.1 -28.7 24.2 -27.6 25.4 -28.7
2025-09-29T13:37:27.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:37:27.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:37:27.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.483750
2025-09-29T13:37:27.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:37:03', tmtdew=14.33, humidity=37.56, cloud=0.0, wind=13.43, temperature=14.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:36:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:37:27.931 [DEBUG] [Thread-157411] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:28.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:37:28.028 [DEBUG] [Thread-157414] [transport.py] [_log()] starting thread (client mode): 0x2b91df60
2025-09-29T13:37:28.028 [DEBUG] [Thread-157414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:28.042 [DEBUG] [Thread-157414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:37:28.042 [INFO] [Thread-157414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:37:28.049 [DEBUG] [Thread-157414] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] Compression: none
2025-09-29T13:37:28.050 [DEBUG] [Thread-157414] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:28.113 [DEBUG] [Thread-157414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:28.113 [DEBUG] [Thread-157414] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:28.114 [DEBUG] [Thread-157414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:37:28.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:37:28.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:28.169 [DEBUG] [Thread-157414] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:28.169 [DEBUG] [Thread-157414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:28.170 [DEBUG] [Thread-157414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:28.170 [DEBUG] [Thread-157414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:37:28.170 [DEBUG] [Thread-157414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:28.189 [INFO] [Thread-157414] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:28.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:37:28.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:29.165 [DEBUG] [Thread-157414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:29.165 [DEBUG] [Thread-157414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:29.213 [DEBUG] [Thread-157414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:29.213 [DEBUG] [Thread-157414] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:29.221 [DEBUG] [Thread-157414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:29.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:29.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:37:29.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:37:29.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:29.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:29.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:29.253 [DEBUG] [Thread-157414] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:37:39.255 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:37:39.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:37:39.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 37, 35), 14.34, 37.53, 0.0, 6.83, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:37:39.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:37:35
2025-09-29T13:37:39.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:37:40.094 [DEBUG] [Thread-157416] [transport.py] [_log()] starting thread (client mode): 0x2b91eb30
2025-09-29T13:37:40.094 [DEBUG] [Thread-157416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:40.109 [DEBUG] [Thread-157416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:37:40.109 [INFO] [Thread-157416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:37:40.110 [DEBUG] [Thread-157416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] Compression: none
2025-09-29T13:37:40.111 [DEBUG] [Thread-157416] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:40.126 [DEBUG] [Thread-157416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:40.127 [DEBUG] [Thread-157416] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:40.127 [DEBUG] [Thread-157416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:37:40.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:37:40.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:40.129 [DEBUG] [Thread-157416] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:40.130 [DEBUG] [Thread-157416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:40.130 [DEBUG] [Thread-157416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:40.130 [DEBUG] [Thread-157416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:37:40.131 [DEBUG] [Thread-157416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:40.130 [DEBUG] [Thread-157418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:37:40.149 [INFO] [Thread-157416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:40.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:40.786 [DEBUG] [Thread-157416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:40.787 [DEBUG] [Thread-157416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:40.787 [DEBUG] [Thread-157416] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:37:40.827 [DEBUG] [Thread-157416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:40.827 [DEBUG] [Thread-157416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:40.830 [DEBUG] [Thread-157416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:40.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:40.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:37:40.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:37:40.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:37:40.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:40.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:37:40.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:40.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:40.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:37:40.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.484097 -999.00  +14.60   8.50     42   +1.90 1 1 1 1 1   888    0 13.54 37.01 ----- 7.3 8.5 171.4 12.8 24.1 -27.3 23.1 -27.2 24.1 -27.7 25.5 -28.5
2025-09-29T13:37:40.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:37:40.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:37:40.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.484097
2025-09-29T13:37:40.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:37:40.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:37:40.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:37:40.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:37:40.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:37:40.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:37:35', tmtdew=14.34, humidity=37.53, cloud=0.0, wind=6.83, temperature=14.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:37:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:37:40.854 [DEBUG] [Thread-157416] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:40.938 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:37:40.950 [DEBUG] [Thread-157420] [transport.py] [_log()] starting thread (client mode): 0x2e34bd90
2025-09-29T13:37:40.951 [DEBUG] [Thread-157420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:40.965 [DEBUG] [Thread-157420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:37:40.965 [INFO] [Thread-157420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:37:40.973 [DEBUG] [Thread-157420] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:40.973 [DEBUG] [Thread-157420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:37:40.973 [DEBUG] [Thread-157420] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:40.973 [DEBUG] [Thread-157420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] Compression: none
2025-09-29T13:37:40.974 [DEBUG] [Thread-157420] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:41.033 [DEBUG] [Thread-157420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:41.033 [DEBUG] [Thread-157420] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:41.034 [DEBUG] [Thread-157420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:37:41.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:37:41.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:41.090 [DEBUG] [Thread-157420] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:41.091 [DEBUG] [Thread-157420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:41.091 [DEBUG] [Thread-157420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:41.091 [DEBUG] [Thread-157420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:37:41.091 [DEBUG] [Thread-157420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:41.113 [INFO] [Thread-157420] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:41.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:37:41.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:42.078 [DEBUG] [Thread-157420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:42.079 [DEBUG] [Thread-157420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:42.126 [DEBUG] [Thread-157420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:42.126 [DEBUG] [Thread-157420] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:42.135 [DEBUG] [Thread-157420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:42.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:42.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:37:42.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:37:42.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:42.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:42.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:42.171 [DEBUG] [Thread-157420] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:42.362 [DEBUG] [Thread-157422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:37:52.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:37:52.174 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:37:52.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:37:52.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 37, 35), 14.34, 37.53, 0.0, 6.83, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:37:52.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:37:35
2025-09-29T13:37:52.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:37:53.013 [DEBUG] [Thread-157423] [transport.py] [_log()] starting thread (client mode): 0x2e38db40
2025-09-29T13:37:53.013 [DEBUG] [Thread-157423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:53.028 [DEBUG] [Thread-157423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:37:53.028 [INFO] [Thread-157423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:53.031 [DEBUG] [Thread-157423] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:53.032 [DEBUG] [Thread-157423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:53.032 [DEBUG] [Thread-157423] [transport.py] [_log()] Compression: none
2025-09-29T13:37:53.032 [DEBUG] [Thread-157423] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:53.049 [DEBUG] [Thread-157423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:53.050 [DEBUG] [Thread-157423] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:53.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:37:53.051 [DEBUG] [Thread-157423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:37:53.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:53.052 [DEBUG] [Thread-157423] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:53.053 [DEBUG] [Thread-157423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:53.053 [DEBUG] [Thread-157423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:53.053 [DEBUG] [Thread-157423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:37:53.053 [DEBUG] [Thread-157423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:53.076 [INFO] [Thread-157423] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:53.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:53.681 [DEBUG] [Thread-157423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:53.681 [DEBUG] [Thread-157423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:53.681 [DEBUG] [Thread-157423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:37:53.722 [DEBUG] [Thread-157423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:53.722 [DEBUG] [Thread-157423] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:53.725 [DEBUG] [Thread-157423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:53.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:53.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:37:53.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:37:53.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:37:53.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:53.747 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:37:53.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:53.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:37:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.484097 -999.00  +14.60   8.50     42   +1.90 1 1 1 1 1   888    0 13.54 37.01 ----- 7.3 8.5 171.4 12.8 24.1 -27.3 23.1 -27.2 24.1 -27.7 25.5 -28.5
2025-09-29T13:37:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:37:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:37:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.484097
2025-09-29T13:37:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:37:53.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:37:53.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:37:53.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:37:53.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:37:53.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:37:35', tmtdew=14.34, humidity=37.53, cloud=0.0, wind=6.83, temperature=14.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:37:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:37:53.749 [DEBUG] [Thread-157423] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:53.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:37:53.844 [DEBUG] [Thread-157426] [transport.py] [_log()] starting thread (client mode): 0x2e38e8f0
2025-09-29T13:37:53.844 [DEBUG] [Thread-157426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:37:53.858 [DEBUG] [Thread-157426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:37:53.859 [INFO] [Thread-157426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:37:53.866 [DEBUG] [Thread-157426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:37:53.866 [DEBUG] [Thread-157426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:37:53.866 [DEBUG] [Thread-157426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:37:53.866 [DEBUG] [Thread-157426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] client lang: <none>
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] server lang: <none>
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] kex follows: False
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] Compression: none
2025-09-29T13:37:53.867 [DEBUG] [Thread-157426] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:37:53.925 [DEBUG] [Thread-157426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:37:53.926 [DEBUG] [Thread-157426] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:37:53.926 [DEBUG] [Thread-157426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:37:53.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:37:53.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:37:53.981 [DEBUG] [Thread-157426] [transport.py] [_log()] userauth is OK
2025-09-29T13:37:53.981 [DEBUG] [Thread-157426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:37:53.981 [DEBUG] [Thread-157426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:37:53.990 [DEBUG] [Thread-157426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:37:53.990 [DEBUG] [Thread-157426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:37:54.009 [INFO] [Thread-157426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:37:54.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:37:54.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:37:55.000 [DEBUG] [Thread-157426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:37:55.001 [DEBUG] [Thread-157426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:37:55.048 [DEBUG] [Thread-157426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:37:55.048 [DEBUG] [Thread-157426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:37:55.057 [DEBUG] [Thread-157426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:37:55.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:37:55.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:37:55.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:37:55.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:37:55.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:37:55.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:37:55.091 [DEBUG] [Thread-157426] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:37:55.161 [DEBUG] [Thread-157428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:37:57.175 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:37:57.176 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:38:05.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:38:05.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:38:05.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:38:05.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 37, 35), 14.34, 37.53, 0.0, 6.83, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:38:05.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:37:35
2025-09-29T13:38:05.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:38:05.912 [DEBUG] [Thread-157429] [transport.py] [_log()] starting thread (client mode): 0x2873eaa0
2025-09-29T13:38:05.912 [DEBUG] [Thread-157429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:05.924 [DEBUG] [Thread-157429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:38:05.924 [INFO] [Thread-157429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] Compression: none
2025-09-29T13:38:05.927 [DEBUG] [Thread-157429] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:05.944 [DEBUG] [Thread-157429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:05.944 [DEBUG] [Thread-157429] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:05.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:38:05.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:05.945 [DEBUG] [Thread-157429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:38:05.946 [DEBUG] [Thread-157429] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:05.946 [DEBUG] [Thread-157429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:05.946 [DEBUG] [Thread-157429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:05.946 [DEBUG] [Thread-157429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:38:05.946 [DEBUG] [Thread-157429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:05.963 [INFO] [Thread-157429] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:05.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:06.541 [DEBUG] [Thread-157429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:06.541 [DEBUG] [Thread-157429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:06.541 [DEBUG] [Thread-157429] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:38:06.582 [DEBUG] [Thread-157429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:06.582 [DEBUG] [Thread-157429] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:06.585 [DEBUG] [Thread-157429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:06.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:06.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:38:06.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:38:06.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:38:06.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:06.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:38:06.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:06.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:06.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:38:06.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.484445 -999.00  +14.50   2.44     42   +1.90 1 1 1 1 1   888    0 13.64 42.81 ----- 3.8 2.4 181.4 5.8 24.4 -27.4 23.1 -30.4 24.3 -27.4 25.6 -28.6
2025-09-29T13:38:06.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:38:06.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:38:06.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.484445
2025-09-29T13:38:06.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:38:06.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:38:06.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:38:06.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:38:06.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:38:06.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:37:35', tmtdew=14.34, humidity=37.53, cloud=0.0, wind=6.83, temperature=14.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:37:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:38:06.604 [DEBUG] [Thread-157429] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:06.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:38:06.701 [DEBUG] [Thread-157432] [transport.py] [_log()] starting thread (client mode): 0x2873c160
2025-09-29T13:38:06.701 [DEBUG] [Thread-157432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:06.716 [DEBUG] [Thread-157432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:38:06.716 [INFO] [Thread-157432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:06.724 [DEBUG] [Thread-157432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:06.725 [DEBUG] [Thread-157432] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:06.725 [DEBUG] [Thread-157432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:06.725 [DEBUG] [Thread-157432] [transport.py] [_log()] Compression: none
2025-09-29T13:38:06.725 [DEBUG] [Thread-157432] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:06.780 [DEBUG] [Thread-157432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:06.781 [DEBUG] [Thread-157432] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:06.781 [DEBUG] [Thread-157432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:38:06.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:38:06.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:06.838 [DEBUG] [Thread-157432] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:06.838 [DEBUG] [Thread-157432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:06.838 [DEBUG] [Thread-157432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:06.838 [DEBUG] [Thread-157432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:38:06.838 [DEBUG] [Thread-157432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:06.858 [INFO] [Thread-157432] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:06.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:38:06.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:07.869 [DEBUG] [Thread-157432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:07.870 [DEBUG] [Thread-157432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:07.917 [DEBUG] [Thread-157432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:07.917 [DEBUG] [Thread-157432] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:07.926 [DEBUG] [Thread-157432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:07.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:07.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:38:07.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:38:07.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:07.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:07.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:07.960 [DEBUG] [Thread-157432] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:10.207 [DEBUG] [Thread-157434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:38:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:38:17.958 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:38:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:38:18.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 38, 7), 14.22, 37.81, 0.0, 4.8, 14.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:38:18.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:38:07
2025-09-29T13:38:18.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:38:18.794 [DEBUG] [Thread-157435] [transport.py] [_log()] starting thread (client mode): 0x2e38f2b0
2025-09-29T13:38:18.794 [DEBUG] [Thread-157435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:18.814 [DEBUG] [Thread-157435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:38:18.814 [INFO] [Thread-157435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:38:18.817 [DEBUG] [Thread-157435] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:18.818 [DEBUG] [Thread-157435] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:18.819 [DEBUG] [Thread-157435] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:18.819 [DEBUG] [Thread-157435] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:18.819 [DEBUG] [Thread-157435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:18.819 [DEBUG] [Thread-157435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:18.819 [DEBUG] [Thread-157435] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:18.819 [DEBUG] [Thread-157435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:18.819 [DEBUG] [Thread-157435] [transport.py] [_log()] Compression: none
2025-09-29T13:38:18.819 [DEBUG] [Thread-157435] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:18.835 [DEBUG] [Thread-157435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:18.835 [DEBUG] [Thread-157435] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:18.836 [DEBUG] [Thread-157435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:38:18.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:38:18.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:18.838 [DEBUG] [Thread-157435] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:18.838 [DEBUG] [Thread-157435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:18.838 [DEBUG] [Thread-157435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:18.838 [DEBUG] [Thread-157435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:38:18.838 [DEBUG] [Thread-157435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:18.856 [INFO] [Thread-157435] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:18.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:19.585 [DEBUG] [Thread-157435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:19.585 [DEBUG] [Thread-157435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:19.585 [DEBUG] [Thread-157435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:38:19.626 [DEBUG] [Thread-157435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:19.626 [DEBUG] [Thread-157435] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:19.628 [DEBUG] [Thread-157435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:19.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:19.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:38:19.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:38:19.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:38:19.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:19.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:38:19.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:19.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:19.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:38:19.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.484445 -999.00  +14.50   2.44     42   +1.90 1 1 1 1 1   888    0 13.64 42.81 ----- 3.8 2.4 181.4 5.8 24.4 -27.4 23.1 -30.4 24.3 -27.4 25.6 -28.6
2025-09-29T13:38:19.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:38:19.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:38:19.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.484445
2025-09-29T13:38:19.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:38:19.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:38:19.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:38:19.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:38:19.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:38:19.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:38:07', tmtdew=14.22, humidity=37.81, cloud=0.0, wind=4.8, temperature=14.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:37:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:38:19.648 [DEBUG] [Thread-157435] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:19.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:38:19.736 [DEBUG] [Thread-157438] [transport.py] [_log()] starting thread (client mode): 0x2873e830
2025-09-29T13:38:19.736 [DEBUG] [Thread-157438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:19.750 [DEBUG] [Thread-157438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:38:19.750 [INFO] [Thread-157438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:19.758 [DEBUG] [Thread-157438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:19.759 [DEBUG] [Thread-157438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:19.759 [DEBUG] [Thread-157438] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:19.759 [DEBUG] [Thread-157438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:19.759 [DEBUG] [Thread-157438] [transport.py] [_log()] Compression: none
2025-09-29T13:38:19.759 [DEBUG] [Thread-157438] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:19.817 [DEBUG] [Thread-157438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:19.817 [DEBUG] [Thread-157438] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:19.818 [DEBUG] [Thread-157438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:38:19.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:38:19.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:19.873 [DEBUG] [Thread-157438] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:19.874 [DEBUG] [Thread-157438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:19.874 [DEBUG] [Thread-157438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:19.874 [DEBUG] [Thread-157438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:38:19.874 [DEBUG] [Thread-157438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:19.893 [INFO] [Thread-157438] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:19.893 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:38:19.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:20.829 [DEBUG] [Thread-157438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:20.829 [DEBUG] [Thread-157438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:20.877 [DEBUG] [Thread-157438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:20.877 [DEBUG] [Thread-157438] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:20.887 [DEBUG] [Thread-157438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:20.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:20.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:38:20.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:38:20.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:20.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:20.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:20.921 [DEBUG] [Thread-157438] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:25.244 [DEBUG] [Thread-157440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:38:30.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:38:30.924 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:38:30.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:38:31.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 38, 7), 14.22, 37.81, 0.0, 4.8, 14.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:38:31.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:38:07
2025-09-29T13:38:31.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:38:31.750 [DEBUG] [Thread-157441] [transport.py] [_log()] starting thread (client mode): 0x2e34b070
2025-09-29T13:38:31.750 [DEBUG] [Thread-157441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:31.772 [DEBUG] [Thread-157441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:38:31.773 [INFO] [Thread-157441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:31.776 [DEBUG] [Thread-157441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:31.777 [DEBUG] [Thread-157441] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:31.777 [DEBUG] [Thread-157441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:31.777 [DEBUG] [Thread-157441] [transport.py] [_log()] Compression: none
2025-09-29T13:38:31.777 [DEBUG] [Thread-157441] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:31.793 [DEBUG] [Thread-157441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:31.793 [DEBUG] [Thread-157441] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:31.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:38:31.794 [DEBUG] [Thread-157441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:38:31.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:31.796 [DEBUG] [Thread-157441] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:31.796 [DEBUG] [Thread-157441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:31.796 [DEBUG] [Thread-157441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:31.796 [DEBUG] [Thread-157441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:38:31.796 [DEBUG] [Thread-157441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:31.817 [INFO] [Thread-157441] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:31.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:32.549 [DEBUG] [Thread-157441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:32.549 [DEBUG] [Thread-157441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:32.549 [DEBUG] [Thread-157441] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:38:32.589 [DEBUG] [Thread-157441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:32.589 [DEBUG] [Thread-157441] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:32.592 [DEBUG] [Thread-157441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:32.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:32.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:38:32.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:38:32.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:38:32.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:32.614 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:38:32.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:32.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:38:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.484445 -999.00  +14.50   2.44     42   +1.90 1 1 1 1 1   888    0 13.64 42.81 ----- 3.8 2.4 181.4 5.8 24.4 -27.4 23.1 -30.4 24.3 -27.4 25.6 -28.6
2025-09-29T13:38:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:38:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:38:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.484445
2025-09-29T13:38:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:38:32.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:38:32.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:38:32.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:38:32.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:38:32.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:38:07', tmtdew=14.22, humidity=37.81, cloud=0.0, wind=4.8, temperature=14.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:37:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:38:32.616 [DEBUG] [Thread-157441] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:32.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:38:32.712 [DEBUG] [Thread-157444] [transport.py] [_log()] starting thread (client mode): 0x2e38fbe0
2025-09-29T13:38:32.712 [DEBUG] [Thread-157444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:32.727 [DEBUG] [Thread-157444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:38:32.728 [INFO] [Thread-157444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:38:32.735 [DEBUG] [Thread-157444] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:32.735 [DEBUG] [Thread-157444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:38:32.735 [DEBUG] [Thread-157444] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:32.736 [DEBUG] [Thread-157444] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:32.737 [DEBUG] [Thread-157444] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:32.737 [DEBUG] [Thread-157444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:32.737 [DEBUG] [Thread-157444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:32.737 [DEBUG] [Thread-157444] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:32.737 [DEBUG] [Thread-157444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:32.737 [DEBUG] [Thread-157444] [transport.py] [_log()] Compression: none
2025-09-29T13:38:32.737 [DEBUG] [Thread-157444] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:32.793 [DEBUG] [Thread-157444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:32.794 [DEBUG] [Thread-157444] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:32.795 [DEBUG] [Thread-157444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:38:32.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:38:32.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:32.850 [DEBUG] [Thread-157444] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:32.850 [DEBUG] [Thread-157444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:32.850 [DEBUG] [Thread-157444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:32.850 [DEBUG] [Thread-157444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:38:32.850 [DEBUG] [Thread-157444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:32.870 [INFO] [Thread-157444] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:32.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:38:32.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:33.862 [DEBUG] [Thread-157444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:33.863 [DEBUG] [Thread-157444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:33.913 [DEBUG] [Thread-157444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:33.913 [DEBUG] [Thread-157444] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:33.922 [DEBUG] [Thread-157444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:33.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:33.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:38:33.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:38:33.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:33.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:33.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:33.960 [DEBUG] [Thread-157444] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:40.279 [DEBUG] [Thread-157446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:38:42.398 [DEBUG] [Thread-157447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:38:43.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:38:43.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:38:43.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:38:44.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 38, 39), 14.06, 38.09, 0.0, 11.36, 14.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:38:44.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:38:39
2025-09-29T13:38:44.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:38:44.795 [DEBUG] [Thread-157448] [transport.py] [_log()] starting thread (client mode): 0x2e348040
2025-09-29T13:38:44.795 [DEBUG] [Thread-157448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:44.810 [DEBUG] [Thread-157448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:38:44.810 [INFO] [Thread-157448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] Compression: none
2025-09-29T13:38:44.814 [DEBUG] [Thread-157448] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:44.830 [DEBUG] [Thread-157448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:44.830 [DEBUG] [Thread-157448] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:44.830 [DEBUG] [Thread-157448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:38:44.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:38:44.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:44.832 [DEBUG] [Thread-157448] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:44.832 [DEBUG] [Thread-157448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:44.832 [DEBUG] [Thread-157448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:44.832 [DEBUG] [Thread-157448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:38:44.832 [DEBUG] [Thread-157448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:44.846 [INFO] [Thread-157448] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:44.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:45.461 [DEBUG] [Thread-157448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:45.461 [DEBUG] [Thread-157448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:45.461 [DEBUG] [Thread-157448] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:38:45.502 [DEBUG] [Thread-157448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:45.502 [DEBUG] [Thread-157448] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:45.505 [DEBUG] [Thread-157448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:45.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:45.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:38:45.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:38:45.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:38:45.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:45.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:38:45.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:45.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:45.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:38:45.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.484791 -999.00  +14.60   8.31     41   +1.80 1 1 1 1 1   888    0 13.83 45.30 ----- 8.6 8.3 122.0 12.2 24.4 -27.6 23.2 -27.0 24.4 -27.7 25.8 -28.3
2025-09-29T13:38:45.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:38:45.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:38:45.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.484791
2025-09-29T13:38:45.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:38:45.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:38:45.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:38:45.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:38:45.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:38:45.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:38:39', tmtdew=14.06, humidity=38.09, cloud=0.0, wind=11.36, temperature=14.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:38:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:38:45.529 [DEBUG] [Thread-157448] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:45.614 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:38:45.626 [DEBUG] [Thread-157451] [transport.py] [_log()] starting thread (client mode): 0x2b9c2710
2025-09-29T13:38:45.626 [DEBUG] [Thread-157451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:45.641 [DEBUG] [Thread-157451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:38:45.642 [INFO] [Thread-157451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:38:45.649 [DEBUG] [Thread-157451] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:45.650 [DEBUG] [Thread-157451] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:45.651 [DEBUG] [Thread-157451] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:45.651 [DEBUG] [Thread-157451] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:45.651 [DEBUG] [Thread-157451] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:45.651 [DEBUG] [Thread-157451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:45.651 [DEBUG] [Thread-157451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:45.651 [DEBUG] [Thread-157451] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:45.651 [DEBUG] [Thread-157451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:45.651 [DEBUG] [Thread-157451] [transport.py] [_log()] Compression: none
2025-09-29T13:38:45.652 [DEBUG] [Thread-157451] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:45.709 [DEBUG] [Thread-157451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:45.709 [DEBUG] [Thread-157451] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:45.710 [DEBUG] [Thread-157451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:38:45.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:38:45.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:45.766 [DEBUG] [Thread-157451] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:45.766 [DEBUG] [Thread-157451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:45.766 [DEBUG] [Thread-157451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:45.766 [DEBUG] [Thread-157451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:38:45.766 [DEBUG] [Thread-157451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:45.785 [INFO] [Thread-157451] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:45.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:38:45.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:46.748 [DEBUG] [Thread-157451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:46.749 [DEBUG] [Thread-157451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:46.796 [DEBUG] [Thread-157451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:46.796 [DEBUG] [Thread-157451] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:46.805 [DEBUG] [Thread-157451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:46.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:46.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:38:46.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:38:46.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:46.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:46.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:46.842 [DEBUG] [Thread-157451] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:55.307 [DEBUG] [Thread-157453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:38:56.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:38:56.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:38:56.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:38:57.318 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:38:57.318 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:38:57.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 38, 39), 14.06, 38.09, 0.0, 11.36, 14.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:38:57.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:38:39
2025-09-29T13:38:57.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:38:57.672 [DEBUG] [Thread-157454] [transport.py] [_log()] starting thread (client mode): 0x2e3c3310
2025-09-29T13:38:57.672 [DEBUG] [Thread-157454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:57.692 [DEBUG] [Thread-157454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:38:57.693 [INFO] [Thread-157454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:57.696 [DEBUG] [Thread-157454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] Compression: none
2025-09-29T13:38:57.697 [DEBUG] [Thread-157454] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:57.714 [DEBUG] [Thread-157454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:57.714 [DEBUG] [Thread-157454] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:57.715 [DEBUG] [Thread-157454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:38:57.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:38:57.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:57.716 [DEBUG] [Thread-157454] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:57.717 [DEBUG] [Thread-157454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:57.717 [DEBUG] [Thread-157454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:57.717 [DEBUG] [Thread-157454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:38:57.717 [DEBUG] [Thread-157454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:57.735 [INFO] [Thread-157454] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:57.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:58.473 [DEBUG] [Thread-157454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:58.473 [DEBUG] [Thread-157454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:58.473 [DEBUG] [Thread-157454] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:38:58.513 [DEBUG] [Thread-157454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:58.514 [DEBUG] [Thread-157454] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:58.517 [DEBUG] [Thread-157454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:58.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:58.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:38:58.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:38:58.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:38:58.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:58.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:38:58.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:58.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:58.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:38:58.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.484791 -999.00  +14.60   8.31     41   +1.80 1 1 1 1 1   888    0 13.83 45.30 ----- 8.6 8.3 122.0 12.2 24.4 -27.6 23.2 -27.0 24.4 -27.7 25.8 -28.3
2025-09-29T13:38:58.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:38:58.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:38:58.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.484791
2025-09-29T13:38:58.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:38:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:38:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:38:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:38:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:38:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:38:39', tmtdew=14.06, humidity=38.09, cloud=0.0, wind=11.36, temperature=14.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:38:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:38:58.540 [DEBUG] [Thread-157454] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:38:58.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:38:58.631 [DEBUG] [Thread-157457] [transport.py] [_log()] starting thread (client mode): 0x2e34a800
2025-09-29T13:38:58.631 [DEBUG] [Thread-157457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:38:58.646 [DEBUG] [Thread-157457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:38:58.646 [INFO] [Thread-157457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:38:58.653 [DEBUG] [Thread-157457] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:38:58.654 [DEBUG] [Thread-157457] [transport.py] [_log()] client lang: <none>
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] server lang: <none>
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] kex follows: False
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] Compression: none
2025-09-29T13:38:58.655 [DEBUG] [Thread-157457] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:38:58.713 [DEBUG] [Thread-157457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:38:58.714 [DEBUG] [Thread-157457] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:38:58.714 [DEBUG] [Thread-157457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:38:58.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:38:58.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:38:58.770 [DEBUG] [Thread-157457] [transport.py] [_log()] userauth is OK
2025-09-29T13:38:58.770 [DEBUG] [Thread-157457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:38:58.770 [DEBUG] [Thread-157457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:38:58.770 [DEBUG] [Thread-157457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:38:58.770 [DEBUG] [Thread-157457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:38:58.790 [INFO] [Thread-157457] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:38:58.790 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:38:58.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:38:59.790 [DEBUG] [Thread-157457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:38:59.790 [DEBUG] [Thread-157457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:38:59.838 [DEBUG] [Thread-157457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:38:59.838 [DEBUG] [Thread-157457] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:38:59.848 [DEBUG] [Thread-157457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:38:59.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:38:59.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:38:59.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:38:59.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:38:59.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:38:59.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:38:59.883 [DEBUG] [Thread-157457] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:39:09.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:39:09.885 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:39:09.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:39:10.352 [DEBUG] [Thread-157459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:39:10.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 38, 39), 14.06, 38.09, 0.0, 11.36, 14.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:39:10.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:38:39
2025-09-29T13:39:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:39:10.706 [DEBUG] [Thread-157460] [transport.py] [_log()] starting thread (client mode): 0x2e348df0
2025-09-29T13:39:10.706 [DEBUG] [Thread-157460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:39:10.726 [DEBUG] [Thread-157460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:39:10.727 [INFO] [Thread-157460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:39:10.730 [DEBUG] [Thread-157460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:39:10.730 [DEBUG] [Thread-157460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:39:10.730 [DEBUG] [Thread-157460] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:39:10.730 [DEBUG] [Thread-157460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:39:10.730 [DEBUG] [Thread-157460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:39:10.730 [DEBUG] [Thread-157460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:39:10.730 [DEBUG] [Thread-157460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:39:10.730 [DEBUG] [Thread-157460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] client lang: <none>
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] server lang: <none>
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] kex follows: False
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] Compression: none
2025-09-29T13:39:10.731 [DEBUG] [Thread-157460] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:39:10.748 [DEBUG] [Thread-157460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:39:10.748 [DEBUG] [Thread-157460] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:39:10.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:39:10.749 [DEBUG] [Thread-157460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:39:10.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:39:10.752 [DEBUG] [Thread-157460] [transport.py] [_log()] userauth is OK
2025-09-29T13:39:10.752 [DEBUG] [Thread-157460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:39:10.752 [DEBUG] [Thread-157460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:39:10.752 [DEBUG] [Thread-157460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:39:10.752 [DEBUG] [Thread-157460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:39:10.775 [INFO] [Thread-157460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:39:10.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:39:11.395 [DEBUG] [Thread-157460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:39:11.396 [DEBUG] [Thread-157460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:39:11.396 [DEBUG] [Thread-157460] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:39:11.436 [DEBUG] [Thread-157460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:39:11.437 [DEBUG] [Thread-157460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:39:11.440 [DEBUG] [Thread-157460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:39:11.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:39:11.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:39:11.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:39:11.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:39:11.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:39:11.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:39:11.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:39:11.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:39:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:39:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.485139 -999.00  +14.50   5.26     42   +1.90 1 1 1 1 1   888    0 13.72 46.39 ----- 5.2 5.3 154.4 8.8 24.4 -27.2 23.4 -26.6 24.4 -26.8 25.8 -28.2
2025-09-29T13:39:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:39:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:39:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.485139
2025-09-29T13:39:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:39:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:39:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:39:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:39:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:39:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:38:39', tmtdew=14.06, humidity=38.09, cloud=0.0, wind=11.36, temperature=14.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:38:36.010', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:39:11.464 [DEBUG] [Thread-157460] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:39:11.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:39:25.377 [DEBUG] [Thread-157463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:39:40.426 [DEBUG] [Thread-157464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:39:42.447 [DEBUG] [Thread-157465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:39:55.457 [DEBUG] [Thread-157466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:39:57.461 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:39:57.462 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:40:10.485 [DEBUG] [Thread-157467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:40:25.512 [DEBUG] [Thread-157468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:40:40.540 [DEBUG] [Thread-157469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:40:42.503 [DEBUG] [Thread-157470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:40:55.573 [DEBUG] [Thread-157471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:40:57.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:40:57.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:41:10.602 [DEBUG] [Thread-157472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:41:25.563 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T13:41:25.631 [DEBUG] [Thread-157473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:41:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:41:35.572 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:41:35.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:41:36.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 41, 19), 13.89, 38.78, 0.0, 15.99, 14.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:41:36.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:41:19
2025-09-29T13:41:36.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:41:36.480 [DEBUG] [Thread-157474] [transport.py] [_log()] starting thread (client mode): 0x2e38c9a0
2025-09-29T13:41:36.480 [DEBUG] [Thread-157474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:41:36.501 [DEBUG] [Thread-157474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:41:36.501 [INFO] [Thread-157474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] client lang: <none>
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] server lang: <none>
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] kex follows: False
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:41:36.504 [DEBUG] [Thread-157474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:41:36.505 [DEBUG] [Thread-157474] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:41:36.505 [DEBUG] [Thread-157474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:41:36.505 [DEBUG] [Thread-157474] [transport.py] [_log()] Compression: none
2025-09-29T13:41:36.505 [DEBUG] [Thread-157474] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:41:36.518 [DEBUG] [Thread-157474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:41:36.518 [DEBUG] [Thread-157474] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:41:36.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:41:36.519 [DEBUG] [Thread-157474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:41:36.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:41:36.519 [DEBUG] [Thread-157474] [transport.py] [_log()] userauth is OK
2025-09-29T13:41:36.519 [DEBUG] [Thread-157474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:41:36.519 [DEBUG] [Thread-157474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:41:36.520 [DEBUG] [Thread-157474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:41:36.520 [DEBUG] [Thread-157474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:41:36.537 [INFO] [Thread-157474] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:41:36.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:41:37.155 [DEBUG] [Thread-157474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:41:37.155 [DEBUG] [Thread-157474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:41:37.155 [DEBUG] [Thread-157474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:41:37.197 [DEBUG] [Thread-157474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:41:37.197 [DEBUG] [Thread-157474] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:41:37.199 [DEBUG] [Thread-157474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:41:37.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:41:37.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:41:37.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:41:37.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:41:37.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:41:37.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:41:37.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.486875 -999.00  +15.10  15.80     43   +2.60 1 1 1 1 1   888    0 13.82 45.94 ----- 16.2 15.8 122.7 20.7 24.4 -28.3 23.3 -28.6 24.3 -27.9 25.7 -28.6
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.486875
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:41:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:41:19', tmtdew=13.89, humidity=38.78, cloud=0.0, wind=15.99, temperature=14.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:41:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:41:37.217 [DEBUG] [Thread-157474] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:41:37.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:41:37.303 [DEBUG] [Thread-157477] [transport.py] [_log()] starting thread (client mode): 0x2e38ce20
2025-09-29T13:41:37.303 [DEBUG] [Thread-157477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:41:37.324 [DEBUG] [Thread-157477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:41:37.324 [INFO] [Thread-157477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] client lang: <none>
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] server lang: <none>
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] kex follows: False
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] Compression: none
2025-09-29T13:41:37.337 [DEBUG] [Thread-157477] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:41:37.388 [DEBUG] [Thread-157477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:41:37.388 [DEBUG] [Thread-157477] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:41:37.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:41:37.388 [DEBUG] [Thread-157477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:41:37.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:41:37.445 [DEBUG] [Thread-157477] [transport.py] [_log()] userauth is OK
2025-09-29T13:41:37.445 [DEBUG] [Thread-157477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:41:37.445 [DEBUG] [Thread-157477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:41:37.445 [DEBUG] [Thread-157477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:41:37.445 [DEBUG] [Thread-157477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:41:37.460 [INFO] [Thread-157477] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:41:37.460 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:41:37.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:41:38.400 [DEBUG] [Thread-157477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:41:38.400 [DEBUG] [Thread-157477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:41:38.448 [DEBUG] [Thread-157477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:41:38.448 [DEBUG] [Thread-157477] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:41:38.459 [DEBUG] [Thread-157477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:41:38.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:41:38.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:41:38.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:41:38.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:41:38.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:41:38.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:41:38.715 [DEBUG] [Thread-157477] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:41:40.660 [DEBUG] [Thread-157479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:41:42.558 [DEBUG] [Thread-157480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:41:48.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:41:48.717 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:41:48.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:41:49.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 41, 19), 13.89, 38.78, 0.0, 15.99, 14.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:41:49.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:41:19
2025-09-29T13:41:49.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:41:49.574 [DEBUG] [Thread-157481] [transport.py] [_log()] starting thread (client mode): 0x2b9cb370
2025-09-29T13:41:49.574 [DEBUG] [Thread-157481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:41:49.594 [DEBUG] [Thread-157481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:41:49.594 [INFO] [Thread-157481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:41:49.597 [DEBUG] [Thread-157481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:41:49.597 [DEBUG] [Thread-157481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:41:49.597 [DEBUG] [Thread-157481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:41:49.597 [DEBUG] [Thread-157481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:41:49.597 [DEBUG] [Thread-157481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:41:49.597 [DEBUG] [Thread-157481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:41:49.597 [DEBUG] [Thread-157481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:41:49.597 [DEBUG] [Thread-157481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] client lang: <none>
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] server lang: <none>
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] kex follows: False
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] Compression: none
2025-09-29T13:41:49.598 [DEBUG] [Thread-157481] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:41:49.617 [DEBUG] [Thread-157481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:41:49.617 [DEBUG] [Thread-157481] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:41:49.618 [DEBUG] [Thread-157481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:41:49.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:41:49.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:41:49.620 [DEBUG] [Thread-157481] [transport.py] [_log()] userauth is OK
2025-09-29T13:41:49.620 [DEBUG] [Thread-157481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:41:49.620 [DEBUG] [Thread-157481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:41:49.620 [DEBUG] [Thread-157481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:41:49.620 [DEBUG] [Thread-157481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:41:49.655 [INFO] [Thread-157481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:41:49.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:41:50.294 [DEBUG] [Thread-157481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:41:50.294 [DEBUG] [Thread-157481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:41:50.294 [DEBUG] [Thread-157481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:41:50.335 [DEBUG] [Thread-157481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:41:50.336 [DEBUG] [Thread-157481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:41:50.339 [DEBUG] [Thread-157481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:41:50.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:41:50.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:41:50.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:41:50.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:41:50.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:41:50.361 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:41:50.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:41:50.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:41:50.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:41:50.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.486875 -999.00  +15.10  15.80     43   +2.60 1 1 1 1 1   888    0 13.82 45.94 ----- 16.2 15.8 122.7 20.7 24.4 -28.3 23.3 -28.6 24.3 -27.9 25.7 -28.6
2025-09-29T13:41:50.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:41:50.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:41:50.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.486875
2025-09-29T13:41:50.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:41:50.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:41:50.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:41:50.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:41:50.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:41:50.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:41:19', tmtdew=13.89, humidity=38.78, cloud=0.0, wind=15.99, temperature=14.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:41:06.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:41:50.364 [DEBUG] [Thread-157481] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:41:50.448 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:41:50.457 [DEBUG] [Thread-157484] [transport.py] [_log()] starting thread (client mode): 0x2873dc30
2025-09-29T13:41:50.457 [DEBUG] [Thread-157484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:41:50.472 [DEBUG] [Thread-157484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:41:50.472 [INFO] [Thread-157484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] client lang: <none>
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] server lang: <none>
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] kex follows: False
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] Compression: none
2025-09-29T13:41:50.480 [DEBUG] [Thread-157484] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:41:50.536 [DEBUG] [Thread-157484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:41:50.536 [DEBUG] [Thread-157484] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:41:50.536 [DEBUG] [Thread-157484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:41:50.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:41:50.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:41:50.597 [DEBUG] [Thread-157484] [transport.py] [_log()] userauth is OK
2025-09-29T13:41:50.597 [DEBUG] [Thread-157484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:41:50.598 [DEBUG] [Thread-157484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:41:50.598 [DEBUG] [Thread-157484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:41:50.598 [DEBUG] [Thread-157484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:41:50.621 [INFO] [Thread-157484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:41:50.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:41:50.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:41:51.587 [DEBUG] [Thread-157484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:41:51.587 [DEBUG] [Thread-157484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:41:51.635 [DEBUG] [Thread-157484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:41:51.635 [DEBUG] [Thread-157484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:41:51.643 [DEBUG] [Thread-157484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:41:51.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:41:51.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:41:51.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:41:51.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:41:51.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:41:51.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:41:51.674 [DEBUG] [Thread-157484] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:41:55.716 [DEBUG] [Thread-157486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:41:57.760 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:41:57.761 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:42:01.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:42:01.677 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:42:01.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:42:02.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 41, 51), 14.27, 37.61, 0.0, 21.16, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:42:02.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:41:51
2025-09-29T13:42:02.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:42:02.541 [DEBUG] [Thread-157487] [transport.py] [_log()] starting thread (client mode): 0x2873c7c0
2025-09-29T13:42:02.541 [DEBUG] [Thread-157487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:42:02.562 [DEBUG] [Thread-157487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:42:02.562 [INFO] [Thread-157487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:42:02.565 [DEBUG] [Thread-157487] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:42:02.565 [DEBUG] [Thread-157487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] client lang: <none>
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] server lang: <none>
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] kex follows: False
2025-09-29T13:42:02.566 [DEBUG] [Thread-157487] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:42:02.567 [DEBUG] [Thread-157487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:42:02.567 [DEBUG] [Thread-157487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:42:02.567 [DEBUG] [Thread-157487] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:42:02.567 [DEBUG] [Thread-157487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:42:02.567 [DEBUG] [Thread-157487] [transport.py] [_log()] Compression: none
2025-09-29T13:42:02.567 [DEBUG] [Thread-157487] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:42:02.584 [DEBUG] [Thread-157487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:42:02.585 [DEBUG] [Thread-157487] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:42:02.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:42:02.586 [DEBUG] [Thread-157487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:42:02.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:42:02.587 [DEBUG] [Thread-157487] [transport.py] [_log()] userauth is OK
2025-09-29T13:42:02.588 [DEBUG] [Thread-157487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:42:02.588 [DEBUG] [Thread-157487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:42:02.588 [DEBUG] [Thread-157487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:42:02.588 [DEBUG] [Thread-157487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:42:02.610 [INFO] [Thread-157487] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:42:02.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:42:03.238 [DEBUG] [Thread-157487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:42:03.238 [DEBUG] [Thread-157487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:42:03.238 [DEBUG] [Thread-157487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:42:03.279 [DEBUG] [Thread-157487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:42:03.279 [DEBUG] [Thread-157487] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:42:03.281 [DEBUG] [Thread-157487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:42:03.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:42:03.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:42:03.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:42:03.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:42:03.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:42:03.300 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:42:03.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.487222 -999.00  +15.30  22.65     42   +2.50 1 1 1 1 1   888    0 13.36 42.61 ----- 22.4 22.6 137.0 26.4 24.4 -28.8 23.4 -27.7 24.4 -29.3 25.6 -29.8
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.487222
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:42:03.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:41:51', tmtdew=14.27, humidity=37.61, cloud=0.0, wind=21.16, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:41:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:42:03.301 [DEBUG] [Thread-157487] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:42:03.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:42:03.385 [DEBUG] [Thread-157490] [transport.py] [_log()] starting thread (client mode): 0x2873d780
2025-09-29T13:42:03.385 [DEBUG] [Thread-157490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:42:03.401 [DEBUG] [Thread-157490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:42:03.401 [INFO] [Thread-157490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:42:03.408 [DEBUG] [Thread-157490] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] client lang: <none>
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] server lang: <none>
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] kex follows: False
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:42:03.409 [DEBUG] [Thread-157490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:42:03.410 [DEBUG] [Thread-157490] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:42:03.410 [DEBUG] [Thread-157490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:42:03.410 [DEBUG] [Thread-157490] [transport.py] [_log()] Compression: none
2025-09-29T13:42:03.410 [DEBUG] [Thread-157490] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:42:03.469 [DEBUG] [Thread-157490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:42:03.470 [DEBUG] [Thread-157490] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:42:03.470 [DEBUG] [Thread-157490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:42:03.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:42:03.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:42:03.525 [DEBUG] [Thread-157490] [transport.py] [_log()] userauth is OK
2025-09-29T13:42:03.525 [DEBUG] [Thread-157490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:42:03.525 [DEBUG] [Thread-157490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:42:03.525 [DEBUG] [Thread-157490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:42:03.526 [DEBUG] [Thread-157490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:42:03.544 [INFO] [Thread-157490] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:42:03.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:42:03.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:42:04.600 [DEBUG] [Thread-157490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:42:04.600 [DEBUG] [Thread-157490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:42:04.648 [DEBUG] [Thread-157490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:42:04.648 [DEBUG] [Thread-157490] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:42:04.658 [DEBUG] [Thread-157490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:42:04.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:42:04.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:42:04.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:42:04.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:42:04.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:42:04.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:42:04.692 [DEBUG] [Thread-157490] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:42:10.746 [DEBUG] [Thread-157492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:42:14.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:42:14.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:42:14.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:42:15.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 41, 51), 14.27, 37.61, 0.0, 21.16, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:42:15.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:41:51
2025-09-29T13:42:15.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:42:15.606 [DEBUG] [Thread-157493] [transport.py] [_log()] starting thread (client mode): 0x28705720
2025-09-29T13:42:15.607 [DEBUG] [Thread-157493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:42:15.627 [DEBUG] [Thread-157493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:42:15.627 [INFO] [Thread-157493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:42:15.628 [DEBUG] [Thread-157493] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:42:15.628 [DEBUG] [Thread-157493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:42:15.628 [DEBUG] [Thread-157493] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] client lang: <none>
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] server lang: <none>
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] kex follows: False
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] Compression: none
2025-09-29T13:42:15.629 [DEBUG] [Thread-157493] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:42:15.640 [DEBUG] [Thread-157493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:42:15.640 [DEBUG] [Thread-157493] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:42:15.640 [DEBUG] [Thread-157493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:42:15.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:42:15.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:42:15.641 [DEBUG] [Thread-157493] [transport.py] [_log()] userauth is OK
2025-09-29T13:42:15.641 [DEBUG] [Thread-157493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:42:15.641 [DEBUG] [Thread-157493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:42:15.641 [DEBUG] [Thread-157493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:42:15.641 [DEBUG] [Thread-157493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:42:15.650 [INFO] [Thread-157493] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:42:15.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:42:16.285 [DEBUG] [Thread-157493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:42:16.285 [DEBUG] [Thread-157493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:42:16.285 [DEBUG] [Thread-157493] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:42:16.326 [DEBUG] [Thread-157493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:42:16.326 [DEBUG] [Thread-157493] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:42:16.328 [DEBUG] [Thread-157493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:42:16.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:42:16.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:42:16.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:42:16.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:42:16.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:42:16.339 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:42:16.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:42:16.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.487222 -999.00  +15.30  22.65     42   +2.50 1 1 1 1 1   888    0 13.36 42.61 ----- 22.4 22.6 137.0 26.4 24.4 -28.8 23.4 -27.7 24.4 -29.3 25.6 -29.8
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.487222
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:42:16.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:41:51', tmtdew=14.27, humidity=37.61, cloud=0.0, wind=21.16, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:41:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:42:16.341 [DEBUG] [Thread-157493] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:42:16.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:42:25.791 [DEBUG] [Thread-157496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:42:40.824 [DEBUG] [Thread-157497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:42:42.616 [DEBUG] [Thread-157498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:42:55.847 [DEBUG] [Thread-157499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:42:57.903 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:42:57.904 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:43:10.879 [DEBUG] [Thread-157500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:43:25.910 [DEBUG] [Thread-157501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:43:40.937 [DEBUG] [Thread-157502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:43:42.668 [DEBUG] [Thread-157503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:43:55.971 [DEBUG] [Thread-157504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:43:58.046 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:43:58.048 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:44:11.001 [DEBUG] [Thread-157505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:44:26.030 [DEBUG] [Thread-157506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:44:29.882 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T13:44:39.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:44:39.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:44:39.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:44:40.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 44, 30), 13.9, 38.55, 0.0, 13.64, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:44:40.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:44:30
2025-09-29T13:44:40.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:44:40.760 [DEBUG] [Thread-157507] [transport.py] [_log()] starting thread (client mode): 0x2b9d5b10
2025-09-29T13:44:40.760 [DEBUG] [Thread-157507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:44:40.779 [DEBUG] [Thread-157507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:44:40.779 [INFO] [Thread-157507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:44:40.780 [DEBUG] [Thread-157507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] client lang: <none>
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] server lang: <none>
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] kex follows: False
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] Compression: none
2025-09-29T13:44:40.781 [DEBUG] [Thread-157507] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:44:40.789 [DEBUG] [Thread-157507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:44:40.789 [DEBUG] [Thread-157507] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:44:40.790 [DEBUG] [Thread-157507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:44:40.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:44:40.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:44:40.791 [DEBUG] [Thread-157507] [transport.py] [_log()] userauth is OK
2025-09-29T13:44:40.791 [DEBUG] [Thread-157507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:44:40.791 [DEBUG] [Thread-157507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:44:40.791 [DEBUG] [Thread-157507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:44:40.791 [DEBUG] [Thread-157507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:44:40.808 [INFO] [Thread-157507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:44:40.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:44:41.065 [DEBUG] [Thread-157509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:44:41.428 [DEBUG] [Thread-157507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:44:41.428 [DEBUG] [Thread-157507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:44:41.428 [DEBUG] [Thread-157507] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:44:41.468 [DEBUG] [Thread-157507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:44:41.468 [DEBUG] [Thread-157507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:44:41.471 [DEBUG] [Thread-157507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:44:41.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:44:41.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:44:41.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:44:41.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:44:41.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:44:41.495 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:44:41.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:44:41.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:44:41.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:44:41.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.489305 -999.00  +14.20  11.94     45   +2.50 1 1 1 1 1   888    0 13.44 30.59 ----- 12.9 11.9 115.4 17.3 23.7 -33.5 23.3 -27.6 24.3 -28.0 25.4 -28.1
2025-09-29T13:44:41.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:44:41.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:44:41.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.489305
2025-09-29T13:44:41.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:44:41.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:44:41.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:44:41.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:44:41.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:44:41.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:44:30', tmtdew=13.9, humidity=38.55, cloud=0.0, wind=13.64, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:44:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:44:41.498 [DEBUG] [Thread-157507] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:44:41.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:44:41.594 [DEBUG] [Thread-157511] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-29T13:44:41.594 [DEBUG] [Thread-157511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:44:41.611 [DEBUG] [Thread-157511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:44:41.612 [INFO] [Thread-157511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:44:41.619 [DEBUG] [Thread-157511] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:44:41.619 [DEBUG] [Thread-157511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:44:41.619 [DEBUG] [Thread-157511] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:44:41.619 [DEBUG] [Thread-157511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:44:41.619 [DEBUG] [Thread-157511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] client lang: <none>
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] server lang: <none>
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] kex follows: False
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] Compression: none
2025-09-29T13:44:41.620 [DEBUG] [Thread-157511] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:44:41.676 [DEBUG] [Thread-157511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:44:41.677 [DEBUG] [Thread-157511] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:44:41.677 [DEBUG] [Thread-157511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:44:41.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:44:41.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:44:41.733 [DEBUG] [Thread-157511] [transport.py] [_log()] userauth is OK
2025-09-29T13:44:41.733 [DEBUG] [Thread-157511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:44:41.733 [DEBUG] [Thread-157511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:44:41.733 [DEBUG] [Thread-157511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:44:41.734 [DEBUG] [Thread-157511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:44:41.753 [INFO] [Thread-157511] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:44:41.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:44:41.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:44:42.720 [DEBUG] [Thread-157513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:44:42.744 [DEBUG] [Thread-157511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:44:42.744 [DEBUG] [Thread-157511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:44:42.793 [DEBUG] [Thread-157511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:44:42.793 [DEBUG] [Thread-157511] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:44:42.802 [DEBUG] [Thread-157511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:44:42.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:44:42.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:44:42.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:44:42.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:44:42.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:44:42.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:44:42.836 [DEBUG] [Thread-157511] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:44:52.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:44:52.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:44:52.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:44:53.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 44, 30), 13.9, 38.55, 0.0, 13.64, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:44:53.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:44:30
2025-09-29T13:44:53.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:44:53.716 [DEBUG] [Thread-157514] [transport.py] [_log()] starting thread (client mode): 0x2873cb20
2025-09-29T13:44:53.716 [DEBUG] [Thread-157514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:44:53.737 [DEBUG] [Thread-157514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:44:53.738 [INFO] [Thread-157514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] client lang: <none>
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] server lang: <none>
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] kex follows: False
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] Compression: none
2025-09-29T13:44:53.742 [DEBUG] [Thread-157514] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:44:53.759 [DEBUG] [Thread-157514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:44:53.760 [DEBUG] [Thread-157514] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:44:53.760 [DEBUG] [Thread-157514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:44:53.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:44:53.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:44:53.762 [DEBUG] [Thread-157514] [transport.py] [_log()] userauth is OK
2025-09-29T13:44:53.763 [DEBUG] [Thread-157514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:44:53.763 [DEBUG] [Thread-157514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:44:53.763 [DEBUG] [Thread-157514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:44:53.763 [DEBUG] [Thread-157514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:44:53.787 [INFO] [Thread-157514] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:44:53.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:44:54.423 [DEBUG] [Thread-157514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:44:54.423 [DEBUG] [Thread-157514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:44:54.423 [DEBUG] [Thread-157514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:44:54.464 [DEBUG] [Thread-157514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:44:54.464 [DEBUG] [Thread-157514] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:44:54.467 [DEBUG] [Thread-157514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:44:54.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:44:54.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:44:54.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:44:54.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:44:54.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:44:54.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:44:54.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:44:54.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:44:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:44:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.489305 -999.00  +14.20  11.94     45   +2.50 1 1 1 1 1   888    0 13.44 30.59 ----- 12.9 11.9 115.4 17.3 23.7 -33.5 23.3 -27.6 24.3 -28.0 25.4 -28.1
2025-09-29T13:44:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:44:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:44:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.489305
2025-09-29T13:44:54.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:44:54.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:44:54.490 [DEBUG] [Thread-157514] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:44:54.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:44:54.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:44:54.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:44:54.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:44:30', tmtdew=13.9, humidity=38.55, cloud=0.0, wind=13.64, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:44:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:44:54.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:44:54.584 [DEBUG] [Thread-157517] [transport.py] [_log()] starting thread (client mode): 0x28706380
2025-09-29T13:44:54.584 [DEBUG] [Thread-157517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:44:54.599 [DEBUG] [Thread-157517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:44:54.600 [INFO] [Thread-157517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:44:54.607 [DEBUG] [Thread-157517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:44:54.608 [DEBUG] [Thread-157517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:44:54.608 [DEBUG] [Thread-157517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:44:54.608 [DEBUG] [Thread-157517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:44:54.608 [DEBUG] [Thread-157517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:44:54.608 [DEBUG] [Thread-157517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:44:54.608 [DEBUG] [Thread-157517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:44:54.608 [DEBUG] [Thread-157517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] client lang: <none>
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] server lang: <none>
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] kex follows: False
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] Compression: none
2025-09-29T13:44:54.609 [DEBUG] [Thread-157517] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:44:54.665 [DEBUG] [Thread-157517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:44:54.665 [DEBUG] [Thread-157517] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:44:54.666 [DEBUG] [Thread-157517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:44:54.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:44:54.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:44:54.721 [DEBUG] [Thread-157517] [transport.py] [_log()] userauth is OK
2025-09-29T13:44:54.721 [DEBUG] [Thread-157517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:44:54.721 [DEBUG] [Thread-157517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:44:54.721 [DEBUG] [Thread-157517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:44:54.721 [DEBUG] [Thread-157517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:44:54.739 [INFO] [Thread-157517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:44:54.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:44:54.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:44:55.708 [DEBUG] [Thread-157517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:44:55.708 [DEBUG] [Thread-157517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:44:55.756 [DEBUG] [Thread-157517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:44:55.756 [DEBUG] [Thread-157517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:44:55.765 [DEBUG] [Thread-157517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:44:55.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:44:55.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:44:55.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:44:55.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:44:55.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:44:55.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:44:55.800 [DEBUG] [Thread-157517] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:44:56.098 [DEBUG] [Thread-157519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:44:58.190 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:44:58.191 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:45:05.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:45:05.803 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:45:05.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:45:06.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 45, 2), 14.03, 38.22, 0.0, 11.89, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:45:06.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:45:02
2025-09-29T13:45:06.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:45:06.658 [DEBUG] [Thread-157520] [transport.py] [_log()] starting thread (client mode): 0x28704d00
2025-09-29T13:45:06.658 [DEBUG] [Thread-157520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:45:06.678 [DEBUG] [Thread-157520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:45:06.678 [INFO] [Thread-157520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] client lang: <none>
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] server lang: <none>
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] kex follows: False
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:45:06.680 [DEBUG] [Thread-157520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:45:06.681 [DEBUG] [Thread-157520] [transport.py] [_log()] Compression: none
2025-09-29T13:45:06.681 [DEBUG] [Thread-157520] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:45:06.692 [DEBUG] [Thread-157520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:45:06.692 [DEBUG] [Thread-157520] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:45:06.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:45:06.693 [DEBUG] [Thread-157520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:45:06.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:45:06.694 [DEBUG] [Thread-157520] [transport.py] [_log()] userauth is OK
2025-09-29T13:45:06.694 [DEBUG] [Thread-157520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:45:06.694 [DEBUG] [Thread-157520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:45:06.694 [DEBUG] [Thread-157520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:45:06.694 [DEBUG] [Thread-157520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:45:06.712 [INFO] [Thread-157520] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:45:06.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:45:11.138 [DEBUG] [Thread-157522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:45:13.205 [DEBUG] [Thread-157520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:45:13.205 [DEBUG] [Thread-157520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:45:13.205 [DEBUG] [Thread-157520] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:45:13.246 [DEBUG] [Thread-157520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:45:13.251 [DEBUG] [Thread-157520] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:45:13.253 [DEBUG] [Thread-157520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:45:13.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:45:13.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:45:13.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:45:13.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:45:13.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:45:13.422 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:45:13.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:45:13.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:45:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:45:13.423 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-09-29T13:45:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:45:02', tmtdew=14.03, humidity=38.22, cloud=0.0, wind=11.89, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:45:13.425 [DEBUG] [Thread-157520] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:45:13.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:45:13.522 [DEBUG] [Thread-157524] [transport.py] [_log()] starting thread (client mode): 0x2b96bdc0
2025-09-29T13:45:13.522 [DEBUG] [Thread-157524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:45:13.537 [DEBUG] [Thread-157524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:45:13.538 [INFO] [Thread-157524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:45:13.545 [DEBUG] [Thread-157524] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] client lang: <none>
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] server lang: <none>
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] kex follows: False
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] Compression: none
2025-09-29T13:45:13.546 [DEBUG] [Thread-157524] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:45:13.605 [DEBUG] [Thread-157524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:45:13.606 [DEBUG] [Thread-157524] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:45:13.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:45:13.607 [DEBUG] [Thread-157524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:45:13.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:45:13.661 [DEBUG] [Thread-157524] [transport.py] [_log()] userauth is OK
2025-09-29T13:45:13.662 [DEBUG] [Thread-157524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:45:13.662 [DEBUG] [Thread-157524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:45:13.662 [DEBUG] [Thread-157524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:45:13.662 [DEBUG] [Thread-157524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:45:13.681 [INFO] [Thread-157524] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:45:13.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:45:13.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:45:14.670 [DEBUG] [Thread-157524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:45:14.670 [DEBUG] [Thread-157524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:45:14.718 [DEBUG] [Thread-157524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:45:14.718 [DEBUG] [Thread-157524] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:45:14.727 [DEBUG] [Thread-157524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:45:14.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:45:14.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:45:14.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:45:14.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:45:14.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:45:14.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:45:14.762 [DEBUG] [Thread-157524] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:45:24.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:45:24.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:45:24.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:45:25.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 45, 2), 14.03, 38.22, 0.0, 11.89, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:45:25.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:45:02
2025-09-29T13:45:25.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:45:25.660 [DEBUG] [Thread-157526] [transport.py] [_log()] starting thread (client mode): 0x2b96b640
2025-09-29T13:45:25.660 [DEBUG] [Thread-157526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:45:25.680 [DEBUG] [Thread-157526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:45:25.680 [INFO] [Thread-157526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:45:25.683 [DEBUG] [Thread-157526] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:45:25.683 [DEBUG] [Thread-157526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:45:25.683 [DEBUG] [Thread-157526] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:45:25.683 [DEBUG] [Thread-157526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:25.683 [DEBUG] [Thread-157526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:25.683 [DEBUG] [Thread-157526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:25.683 [DEBUG] [Thread-157526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] client lang: <none>
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] server lang: <none>
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] kex follows: False
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] Compression: none
2025-09-29T13:45:25.684 [DEBUG] [Thread-157526] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:45:25.691 [DEBUG] [Thread-157526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:45:25.691 [DEBUG] [Thread-157526] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:45:25.692 [DEBUG] [Thread-157526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:45:25.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:45:25.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:45:25.692 [DEBUG] [Thread-157526] [transport.py] [_log()] userauth is OK
2025-09-29T13:45:25.692 [DEBUG] [Thread-157526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:45:25.693 [DEBUG] [Thread-157526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:45:25.693 [DEBUG] [Thread-157526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:45:25.693 [DEBUG] [Thread-157526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:45:25.707 [INFO] [Thread-157526] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:45:25.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:45:26.171 [DEBUG] [Thread-157528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:45:26.282 [DEBUG] [Thread-157526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:45:26.282 [DEBUG] [Thread-157526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:45:26.282 [DEBUG] [Thread-157526] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:45:26.323 [DEBUG] [Thread-157526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:45:26.323 [DEBUG] [Thread-157526] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:45:26.325 [DEBUG] [Thread-157526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:45:26.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:45:26.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:45:26.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:45:26.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:45:26.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:45:26.340 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:45:26.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:45:26.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.489652 -999.00  +14.10  10.57     45   +2.50 1 1 1 1 1   888    0 13.37 27.32 ----- 15.8 10.6 109.6 15.4 23.6 -30.9 23.4 -26.7 24.3 -28.6 25.5 -27.9
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.489652
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:45:26.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:45:02', tmtdew=14.03, humidity=38.22, cloud=0.0, wind=11.89, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:45:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:45:26.342 [DEBUG] [Thread-157526] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:45:26.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:45:26.425 [DEBUG] [Thread-157530] [transport.py] [_log()] starting thread (client mode): 0x2b9c9870
2025-09-29T13:45:26.425 [DEBUG] [Thread-157530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:45:26.440 [DEBUG] [Thread-157530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:45:26.440 [INFO] [Thread-157530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] client lang: <none>
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] server lang: <none>
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] kex follows: False
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] Compression: none
2025-09-29T13:45:26.448 [DEBUG] [Thread-157530] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:45:26.503 [DEBUG] [Thread-157530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:45:26.504 [DEBUG] [Thread-157530] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:45:26.504 [DEBUG] [Thread-157530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:45:26.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:45:26.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:45:26.561 [DEBUG] [Thread-157530] [transport.py] [_log()] userauth is OK
2025-09-29T13:45:26.561 [DEBUG] [Thread-157530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:45:26.561 [DEBUG] [Thread-157530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:45:26.561 [DEBUG] [Thread-157530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:45:26.561 [DEBUG] [Thread-157530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:45:26.575 [INFO] [Thread-157530] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:45:26.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:45:26.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:45:27.550 [DEBUG] [Thread-157530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:45:27.550 [DEBUG] [Thread-157530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:45:27.598 [DEBUG] [Thread-157530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:45:27.598 [DEBUG] [Thread-157530] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:45:27.606 [DEBUG] [Thread-157530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:45:27.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:45:27.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:45:27.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:45:27.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:45:27.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:45:27.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:45:27.638 [DEBUG] [Thread-157530] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:45:37.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:45:37.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:45:37.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:45:38.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 45, 34), 14.06, 38.51, 0.0, 12.35, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:45:38.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:45:34
2025-09-29T13:45:38.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:45:38.487 [DEBUG] [Thread-157532] [transport.py] [_log()] starting thread (client mode): 0x28707430
2025-09-29T13:45:38.487 [DEBUG] [Thread-157532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:45:38.508 [DEBUG] [Thread-157532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:45:38.508 [INFO] [Thread-157532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:45:38.511 [DEBUG] [Thread-157532] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:45:38.511 [DEBUG] [Thread-157532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] client lang: <none>
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] server lang: <none>
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] kex follows: False
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] Compression: none
2025-09-29T13:45:38.512 [DEBUG] [Thread-157532] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:45:38.528 [DEBUG] [Thread-157532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:45:38.529 [DEBUG] [Thread-157532] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:45:38.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:45:38.529 [DEBUG] [Thread-157532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:45:38.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:45:38.531 [DEBUG] [Thread-157532] [transport.py] [_log()] userauth is OK
2025-09-29T13:45:38.531 [DEBUG] [Thread-157532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:45:38.531 [DEBUG] [Thread-157532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:45:38.531 [DEBUG] [Thread-157532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:45:38.531 [DEBUG] [Thread-157532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:45:38.552 [INFO] [Thread-157532] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:45:38.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:45:40.069 [DEBUG] [Thread-157532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:45:40.069 [DEBUG] [Thread-157532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:45:40.069 [DEBUG] [Thread-157532] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:45:40.110 [DEBUG] [Thread-157532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:45:40.110 [DEBUG] [Thread-157532] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:45:40.112 [DEBUG] [Thread-157532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:45:40.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:45:40.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:45:40.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:45:40.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:45:40.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:45:40.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:45:40.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:45:40.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.489652 -999.00  +14.10  10.57     45   +2.50 1 1 1 1 1   888    0 13.37 27.32 ----- 15.8 10.6 109.6 15.4 23.6 -30.9 23.4 -26.7 24.3 -28.6 25.5 -27.9
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.489652
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:45:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:45:34', tmtdew=14.06, humidity=38.51, cloud=0.0, wind=12.35, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:45:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:45:40.132 [DEBUG] [Thread-157532] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:45:40.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:45:40.217 [DEBUG] [Thread-157535] [transport.py] [_log()] starting thread (client mode): 0x28706770
2025-09-29T13:45:40.217 [DEBUG] [Thread-157535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:45:40.233 [DEBUG] [Thread-157535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:45:40.233 [INFO] [Thread-157535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] client lang: <none>
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] server lang: <none>
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] kex follows: False
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:45:40.241 [DEBUG] [Thread-157535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:45:40.242 [DEBUG] [Thread-157535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:45:40.242 [DEBUG] [Thread-157535] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:45:40.242 [DEBUG] [Thread-157535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:45:40.242 [DEBUG] [Thread-157535] [transport.py] [_log()] Compression: none
2025-09-29T13:45:40.242 [DEBUG] [Thread-157535] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:45:40.301 [DEBUG] [Thread-157535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:45:40.301 [DEBUG] [Thread-157535] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:45:40.302 [DEBUG] [Thread-157535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:45:40.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:45:40.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:45:40.357 [DEBUG] [Thread-157535] [transport.py] [_log()] userauth is OK
2025-09-29T13:45:40.357 [DEBUG] [Thread-157535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:45:40.357 [DEBUG] [Thread-157535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:45:40.357 [DEBUG] [Thread-157535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:45:40.357 [DEBUG] [Thread-157535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:45:40.375 [INFO] [Thread-157535] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:45:40.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:45:40.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:45:41.204 [DEBUG] [Thread-157537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:45:41.347 [DEBUG] [Thread-157535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:45:41.347 [DEBUG] [Thread-157535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:45:41.395 [DEBUG] [Thread-157535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:45:41.395 [DEBUG] [Thread-157535] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:45:41.404 [DEBUG] [Thread-157535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:45:41.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:45:41.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:45:41.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:45:41.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:45:41.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:45:41.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:45:41.437 [DEBUG] [Thread-157535] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:45:42.774 [DEBUG] [Thread-157538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:45:51.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:45:51.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:45:51.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:45:52.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 45, 34), 14.06, 38.51, 0.0, 12.35, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:45:52.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:45:34
2025-09-29T13:45:52.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:45:52.275 [DEBUG] [Thread-157539] [transport.py] [_log()] starting thread (client mode): 0x2b96a140
2025-09-29T13:45:52.275 [DEBUG] [Thread-157539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:45:52.296 [DEBUG] [Thread-157539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:45:52.296 [INFO] [Thread-157539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:45:52.299 [DEBUG] [Thread-157539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:45:52.299 [DEBUG] [Thread-157539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:45:52.299 [DEBUG] [Thread-157539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] client lang: <none>
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] server lang: <none>
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] kex follows: False
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:45:52.300 [DEBUG] [Thread-157539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:45:52.301 [DEBUG] [Thread-157539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:45:52.301 [DEBUG] [Thread-157539] [transport.py] [_log()] Compression: none
2025-09-29T13:45:52.301 [DEBUG] [Thread-157539] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:45:52.319 [DEBUG] [Thread-157539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:45:52.319 [DEBUG] [Thread-157539] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:45:52.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:45:52.320 [DEBUG] [Thread-157539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:45:52.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:45:52.322 [DEBUG] [Thread-157539] [transport.py] [_log()] userauth is OK
2025-09-29T13:45:52.322 [DEBUG] [Thread-157539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:45:52.322 [DEBUG] [Thread-157539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:45:52.322 [DEBUG] [Thread-157539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:45:52.322 [DEBUG] [Thread-157539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:45:52.347 [INFO] [Thread-157539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:45:52.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:45:52.941 [DEBUG] [Thread-157539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:45:52.941 [DEBUG] [Thread-157539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:45:52.942 [DEBUG] [Thread-157539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:45:52.982 [DEBUG] [Thread-157539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:45:52.982 [DEBUG] [Thread-157539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:45:52.985 [DEBUG] [Thread-157539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:45:52.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:45:52.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:45:52.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:45:52.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:45:53.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:45:53.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:45:53.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:45:53.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:45:53.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:45:53.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.490000 -999.00  +14.50  13.05     45   +2.90 1 1 1 1 1   888    0 12.85 20.91 ----- 16.3 13.1 156.7 29.3 23.7 -28.1 23.4 -27.1 24.3 -27.5 25.4 -28.9
2025-09-29T13:45:53.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:45:53.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:45:53.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.490000
2025-09-29T13:45:53.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:45:53.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:45:53.005 [DEBUG] [Thread-157539] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:45:53.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:45:53.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:45:53.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:45:53.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:45:34', tmtdew=14.06, humidity=38.51, cloud=0.0, wind=12.35, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:45:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:45:53.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:45:53.097 [DEBUG] [Thread-157542] [transport.py] [_log()] starting thread (client mode): 0x2873cd90
2025-09-29T13:45:53.097 [DEBUG] [Thread-157542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:45:53.112 [DEBUG] [Thread-157542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:45:53.112 [INFO] [Thread-157542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:45:53.119 [DEBUG] [Thread-157542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:45:53.119 [DEBUG] [Thread-157542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:45:53.119 [DEBUG] [Thread-157542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:45:53.119 [DEBUG] [Thread-157542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:53.119 [DEBUG] [Thread-157542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:45:53.119 [DEBUG] [Thread-157542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] client lang: <none>
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] server lang: <none>
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] kex follows: False
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:45:53.120 [DEBUG] [Thread-157542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:45:53.121 [DEBUG] [Thread-157542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:45:53.121 [DEBUG] [Thread-157542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:45:53.121 [DEBUG] [Thread-157542] [transport.py] [_log()] Compression: none
2025-09-29T13:45:53.121 [DEBUG] [Thread-157542] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:45:53.178 [DEBUG] [Thread-157542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:45:53.178 [DEBUG] [Thread-157542] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:45:53.179 [DEBUG] [Thread-157542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:45:53.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:45:53.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:45:53.238 [DEBUG] [Thread-157542] [transport.py] [_log()] userauth is OK
2025-09-29T13:45:53.238 [DEBUG] [Thread-157542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:45:53.238 [DEBUG] [Thread-157542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:45:53.238 [DEBUG] [Thread-157542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:45:53.238 [DEBUG] [Thread-157542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:45:53.257 [INFO] [Thread-157542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:45:53.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:45:53.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:45:54.243 [DEBUG] [Thread-157542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:45:54.243 [DEBUG] [Thread-157542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:45:54.291 [DEBUG] [Thread-157542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:45:54.291 [DEBUG] [Thread-157542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:45:54.300 [DEBUG] [Thread-157542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:45:54.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:45:54.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:45:54.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:45:54.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:45:54.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:45:54.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:45:54.335 [DEBUG] [Thread-157542] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:45:56.249 [DEBUG] [Thread-157544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:45:58.332 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:45:58.334 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:46:04.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:46:04.336 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:46:04.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:46:04.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 45, 34), 14.06, 38.51, 0.0, 12.35, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:46:04.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:45:34
2025-09-29T13:46:05.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:46:05.209 [DEBUG] [Thread-157545] [transport.py] [_log()] starting thread (client mode): 0x28706800
2025-09-29T13:46:05.209 [DEBUG] [Thread-157545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:05.230 [DEBUG] [Thread-157545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:46:05.230 [INFO] [Thread-157545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] Compression: none
2025-09-29T13:46:05.232 [DEBUG] [Thread-157545] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:05.248 [DEBUG] [Thread-157545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:05.248 [DEBUG] [Thread-157545] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:05.248 [DEBUG] [Thread-157545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:46:05.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:46:05.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:05.249 [DEBUG] [Thread-157545] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:05.249 [DEBUG] [Thread-157545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:05.249 [DEBUG] [Thread-157545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:05.249 [DEBUG] [Thread-157545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:46:05.249 [DEBUG] [Thread-157545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:05.263 [INFO] [Thread-157545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:05.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:05.995 [DEBUG] [Thread-157545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:05.995 [DEBUG] [Thread-157545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:05.996 [DEBUG] [Thread-157545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:46:06.037 [DEBUG] [Thread-157545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:06.037 [DEBUG] [Thread-157545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:06.039 [DEBUG] [Thread-157545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:06.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:06.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:46:06.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:46:06.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:46:06.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:06.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:46:06.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:06.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.490000 -999.00  +14.50  13.05     45   +2.90 1 1 1 1 1   888    0 12.85 20.91 ----- 16.3 13.1 156.7 29.3 23.7 -28.1 23.4 -27.1 24.3 -27.5 25.4 -28.9
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.490000
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:46:06.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:45:34', tmtdew=14.06, humidity=38.51, cloud=0.0, wind=12.35, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:45:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:46:06.056 [DEBUG] [Thread-157545] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:06.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:46:06.144 [DEBUG] [Thread-157548] [transport.py] [_log()] starting thread (client mode): 0x2b9569b0
2025-09-29T13:46:06.145 [DEBUG] [Thread-157548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:06.161 [DEBUG] [Thread-157548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:46:06.161 [INFO] [Thread-157548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] Compression: none
2025-09-29T13:46:06.169 [DEBUG] [Thread-157548] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:06.227 [DEBUG] [Thread-157548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:06.227 [DEBUG] [Thread-157548] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:06.228 [DEBUG] [Thread-157548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:46:06.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:46:06.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:06.284 [DEBUG] [Thread-157548] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:06.284 [DEBUG] [Thread-157548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:06.284 [DEBUG] [Thread-157548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:06.284 [DEBUG] [Thread-157548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:46:06.284 [DEBUG] [Thread-157548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:06.298 [INFO] [Thread-157548] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:06.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:46:06.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:07.311 [DEBUG] [Thread-157548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:07.311 [DEBUG] [Thread-157548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:07.359 [DEBUG] [Thread-157548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:07.359 [DEBUG] [Thread-157548] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:07.367 [DEBUG] [Thread-157548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:07.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:07.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:46:07.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:46:07.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:07.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:07.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:07.399 [DEBUG] [Thread-157548] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:11.299 [DEBUG] [Thread-157550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:46:17.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:46:17.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:46:17.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:46:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 46, 6), 13.77, 39.17, 0.0, 11.75, 14.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:46:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:46:06
2025-09-29T13:46:18.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:46:18.243 [DEBUG] [Thread-157551] [transport.py] [_log()] starting thread (client mode): 0x2b9c9ea0
2025-09-29T13:46:18.243 [DEBUG] [Thread-157551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:18.264 [DEBUG] [Thread-157551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:46:18.264 [INFO] [Thread-157551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:46:18.267 [DEBUG] [Thread-157551] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] Compression: none
2025-09-29T13:46:18.268 [DEBUG] [Thread-157551] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:18.284 [DEBUG] [Thread-157551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:18.285 [DEBUG] [Thread-157551] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:18.285 [DEBUG] [Thread-157551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:46:18.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:46:18.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:18.287 [DEBUG] [Thread-157551] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:18.287 [DEBUG] [Thread-157551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:18.287 [DEBUG] [Thread-157551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:18.287 [DEBUG] [Thread-157551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:46:18.288 [DEBUG] [Thread-157551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:18.309 [INFO] [Thread-157551] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:18.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:19.065 [DEBUG] [Thread-157551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:19.065 [DEBUG] [Thread-157551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:19.065 [DEBUG] [Thread-157551] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:46:19.106 [DEBUG] [Thread-157551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:19.106 [DEBUG] [Thread-157551] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:19.109 [DEBUG] [Thread-157551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:19.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:19.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:46:19.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:46:19.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:46:19.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:19.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:46:19.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:19.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:19.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:46:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.490000 -999.00  +14.50  13.05     45   +2.90 1 1 1 1 1   888    0 12.85 20.91 ----- 16.3 13.1 156.7 29.3 23.7 -28.1 23.4 -27.1 24.3 -27.5 25.4 -28.9
2025-09-29T13:46:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:46:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:46:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.490000
2025-09-29T13:46:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:46:19.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:46:19.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:46:19.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:46:19.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:46:19.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:46:06', tmtdew=13.77, humidity=39.17, cloud=0.0, wind=11.75, temperature=14.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:45:36.000', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:46:19.136 [DEBUG] [Thread-157551] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:19.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:46:19.230 [DEBUG] [Thread-157554] [transport.py] [_log()] starting thread (client mode): 0x2b9d5420
2025-09-29T13:46:19.230 [DEBUG] [Thread-157554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:19.246 [DEBUG] [Thread-157554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:46:19.246 [INFO] [Thread-157554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:46:19.254 [DEBUG] [Thread-157554] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:19.254 [DEBUG] [Thread-157554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:46:19.254 [DEBUG] [Thread-157554] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:19.254 [DEBUG] [Thread-157554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:19.254 [DEBUG] [Thread-157554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:19.254 [DEBUG] [Thread-157554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:19.254 [DEBUG] [Thread-157554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:19.254 [DEBUG] [Thread-157554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:19.255 [DEBUG] [Thread-157554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:19.255 [DEBUG] [Thread-157554] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:19.255 [DEBUG] [Thread-157554] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:19.255 [DEBUG] [Thread-157554] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:19.255 [DEBUG] [Thread-157554] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:19.255 [DEBUG] [Thread-157554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:19.255 [DEBUG] [Thread-157554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:19.256 [DEBUG] [Thread-157554] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:19.256 [DEBUG] [Thread-157554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:19.256 [DEBUG] [Thread-157554] [transport.py] [_log()] Compression: none
2025-09-29T13:46:19.256 [DEBUG] [Thread-157554] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:19.313 [DEBUG] [Thread-157554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:19.313 [DEBUG] [Thread-157554] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:19.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:46:19.314 [DEBUG] [Thread-157554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:46:19.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:19.369 [DEBUG] [Thread-157554] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:19.369 [DEBUG] [Thread-157554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:19.369 [DEBUG] [Thread-157554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:19.369 [DEBUG] [Thread-157554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:46:19.369 [DEBUG] [Thread-157554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:19.389 [INFO] [Thread-157554] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:19.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:46:19.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:20.365 [DEBUG] [Thread-157554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:20.365 [DEBUG] [Thread-157554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:20.412 [DEBUG] [Thread-157554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:20.412 [DEBUG] [Thread-157554] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:20.421 [DEBUG] [Thread-157554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:20.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:20.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:46:20.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:46:20.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:20.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:20.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:20.455 [DEBUG] [Thread-157554] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:26.328 [DEBUG] [Thread-157556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:46:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:46:30.458 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:46:30.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:46:31.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 46, 6), 13.77, 39.17, 0.0, 11.75, 14.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:46:31.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:46:06
2025-09-29T13:46:31.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:46:31.324 [DEBUG] [Thread-157557] [transport.py] [_log()] starting thread (client mode): 0x28706380
2025-09-29T13:46:31.324 [DEBUG] [Thread-157557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:31.345 [DEBUG] [Thread-157557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:46:31.345 [INFO] [Thread-157557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:46:31.348 [DEBUG] [Thread-157557] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:31.348 [DEBUG] [Thread-157557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:46:31.348 [DEBUG] [Thread-157557] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:31.348 [DEBUG] [Thread-157557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:31.348 [DEBUG] [Thread-157557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:31.349 [DEBUG] [Thread-157557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:31.350 [DEBUG] [Thread-157557] [transport.py] [_log()] Compression: none
2025-09-29T13:46:31.350 [DEBUG] [Thread-157557] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:31.369 [DEBUG] [Thread-157557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:31.370 [DEBUG] [Thread-157557] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:31.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:46:31.371 [DEBUG] [Thread-157557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:46:31.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:31.374 [DEBUG] [Thread-157557] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:31.374 [DEBUG] [Thread-157557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:31.374 [DEBUG] [Thread-157557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:31.374 [DEBUG] [Thread-157557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:46:31.374 [DEBUG] [Thread-157557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:31.390 [INFO] [Thread-157557] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:31.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:31.994 [DEBUG] [Thread-157557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:31.994 [DEBUG] [Thread-157557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:31.994 [DEBUG] [Thread-157557] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:46:32.035 [DEBUG] [Thread-157557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:32.035 [DEBUG] [Thread-157557] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:32.037 [DEBUG] [Thread-157557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:32.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:32.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:46:32.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:46:32.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:46:32.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:32.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:46:32.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:32.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:32.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:46:32.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.490347 -999.00  +15.10  18.27     44   +2.90 1 1 1 1 1   888    0 12.75 13.65 ----- 15.5 18.3 132.4 23.1 23.8 -27.0 23.2 -27.5 24.3 -26.5 25.4 -28.3
2025-09-29T13:46:32.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:46:32.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:46:32.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.490347
2025-09-29T13:46:32.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:46:32.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:46:32.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:46:32.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:46:32.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:46:32.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:46:06', tmtdew=13.77, humidity=39.17, cloud=0.0, wind=11.75, temperature=14.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:46:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:46:32.058 [DEBUG] [Thread-157557] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:32.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:46:32.150 [DEBUG] [Thread-157560] [transport.py] [_log()] starting thread (client mode): 0x2873c760
2025-09-29T13:46:32.151 [DEBUG] [Thread-157560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:32.169 [DEBUG] [Thread-157560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:46:32.170 [INFO] [Thread-157560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:46:32.177 [DEBUG] [Thread-157560] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:32.178 [DEBUG] [Thread-157560] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] Compression: none
2025-09-29T13:46:32.179 [DEBUG] [Thread-157560] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:32.237 [DEBUG] [Thread-157560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:32.237 [DEBUG] [Thread-157560] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:32.238 [DEBUG] [Thread-157560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:46:32.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:46:32.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:32.293 [DEBUG] [Thread-157560] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:32.293 [DEBUG] [Thread-157560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:32.293 [DEBUG] [Thread-157560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:32.293 [DEBUG] [Thread-157560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:46:32.294 [DEBUG] [Thread-157560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:32.316 [INFO] [Thread-157560] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:32.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:46:32.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:33.299 [DEBUG] [Thread-157560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:33.308 [DEBUG] [Thread-157560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:33.352 [DEBUG] [Thread-157560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:33.352 [DEBUG] [Thread-157560] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:33.361 [DEBUG] [Thread-157560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:33.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:33.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:46:33.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:46:33.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:33.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:33.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:33.396 [DEBUG] [Thread-157560] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:41.368 [DEBUG] [Thread-157562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:46:42.824 [DEBUG] [Thread-157563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:46:43.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:46:43.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:46:43.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:46:44.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 46, 38), 14.28, 37.95, 0.0, 12.69, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:46:44.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:46:38
2025-09-29T13:46:44.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:46:44.283 [DEBUG] [Thread-157564] [transport.py] [_log()] starting thread (client mode): 0x2b9d4df0
2025-09-29T13:46:44.283 [DEBUG] [Thread-157564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:44.304 [DEBUG] [Thread-157564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:46:44.304 [INFO] [Thread-157564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:44.307 [DEBUG] [Thread-157564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:44.308 [DEBUG] [Thread-157564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:44.308 [DEBUG] [Thread-157564] [transport.py] [_log()] Compression: none
2025-09-29T13:46:44.308 [DEBUG] [Thread-157564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:44.324 [DEBUG] [Thread-157564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:44.324 [DEBUG] [Thread-157564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:44.324 [DEBUG] [Thread-157564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:46:44.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:46:44.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:44.325 [DEBUG] [Thread-157564] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:44.325 [DEBUG] [Thread-157564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:44.325 [DEBUG] [Thread-157564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:44.325 [DEBUG] [Thread-157564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:46:44.325 [DEBUG] [Thread-157564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:44.347 [INFO] [Thread-157564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:44.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:45.077 [DEBUG] [Thread-157564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:45.077 [DEBUG] [Thread-157564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:45.078 [DEBUG] [Thread-157564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:46:45.117 [DEBUG] [Thread-157564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:45.117 [DEBUG] [Thread-157564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:45.119 [DEBUG] [Thread-157564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:45.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:45.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:46:45.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:46:45.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:46:45.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:45.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:46:45.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:45.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:46:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.490347 -999.00  +15.10  18.27     44   +2.90 1 1 1 1 1   888    0 12.75 13.65 ----- 15.5 18.3 132.4 23.1 23.8 -27.0 23.2 -27.5 24.3 -26.5 25.4 -28.3
2025-09-29T13:46:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:46:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:46:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.490347
2025-09-29T13:46:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:46:45.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:46:45.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:46:45.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:46:45.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:46:45.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:46:38', tmtdew=14.28, humidity=37.95, cloud=0.0, wind=12.69, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:46:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:46:45.139 [DEBUG] [Thread-157564] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:45.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:46:45.225 [DEBUG] [Thread-157567] [transport.py] [_log()] starting thread (client mode): 0x2b9aefb0
2025-09-29T13:46:45.226 [DEBUG] [Thread-157567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:45.240 [DEBUG] [Thread-157567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:46:45.240 [INFO] [Thread-157567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:46:45.247 [DEBUG] [Thread-157567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] Compression: none
2025-09-29T13:46:45.248 [DEBUG] [Thread-157567] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:45.303 [DEBUG] [Thread-157567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:45.303 [DEBUG] [Thread-157567] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:45.303 [DEBUG] [Thread-157567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:46:45.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:46:45.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:45.360 [DEBUG] [Thread-157567] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:45.360 [DEBUG] [Thread-157567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:45.360 [DEBUG] [Thread-157567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:45.360 [DEBUG] [Thread-157567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:46:45.360 [DEBUG] [Thread-157567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:45.374 [INFO] [Thread-157567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:45.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:46:45.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:46.352 [DEBUG] [Thread-157567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:46.352 [DEBUG] [Thread-157567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:46.400 [DEBUG] [Thread-157567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:46.400 [DEBUG] [Thread-157567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:46.409 [DEBUG] [Thread-157567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:46.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:46.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:46:46.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:46:46.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:46.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:46.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:46.443 [DEBUG] [Thread-157567] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:56.400 [DEBUG] [Thread-157569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:46:56.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:46:56.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:46:56.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:46:57.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 46, 38), 14.28, 37.95, 0.0, 12.69, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:46:57.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:46:38
2025-09-29T13:46:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:46:57.285 [DEBUG] [Thread-157570] [transport.py] [_log()] starting thread (client mode): 0x2b90c1f0
2025-09-29T13:46:57.285 [DEBUG] [Thread-157570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:57.306 [DEBUG] [Thread-157570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:46:57.306 [INFO] [Thread-157570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:46:57.309 [DEBUG] [Thread-157570] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:57.309 [DEBUG] [Thread-157570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:46:57.309 [DEBUG] [Thread-157570] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] Compression: none
2025-09-29T13:46:57.310 [DEBUG] [Thread-157570] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:57.327 [DEBUG] [Thread-157570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:57.328 [DEBUG] [Thread-157570] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:57.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:46:57.329 [DEBUG] [Thread-157570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:46:57.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:57.331 [DEBUG] [Thread-157570] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:57.331 [DEBUG] [Thread-157570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:57.331 [DEBUG] [Thread-157570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:57.331 [DEBUG] [Thread-157570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:46:57.331 [DEBUG] [Thread-157570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:57.356 [INFO] [Thread-157570] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:57.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:57.989 [DEBUG] [Thread-157570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:57.989 [DEBUG] [Thread-157570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:57.989 [DEBUG] [Thread-157570] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:46:58.031 [DEBUG] [Thread-157570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:58.031 [DEBUG] [Thread-157570] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:58.034 [DEBUG] [Thread-157570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:58.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:58.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:46:58.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:46:58.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:46:58.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:58.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:46:58.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:58.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:58.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:46:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.490694 -999.00  +15.10   6.74     44   +2.90 1 1 1 1 1   888    0 12.67 9.29 ----- 8.7 6.7 127.6 18.9 23.9 -26.5 23.2 -26.8 24.4 -27.0 25.5 -28.0
2025-09-29T13:46:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:46:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:46:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.490694
2025-09-29T13:46:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:46:58.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:46:58.058 [DEBUG] [Thread-157570] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:46:58.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:46:58.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:46:58.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:46:58.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:46:38', tmtdew=14.28, humidity=37.95, cloud=0.0, wind=12.69, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:46:35.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:46:58.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:46:58.150 [DEBUG] [Thread-157573] [transport.py] [_log()] starting thread (client mode): 0x2b956c80
2025-09-29T13:46:58.150 [DEBUG] [Thread-157573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:46:58.169 [DEBUG] [Thread-157573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:46:58.170 [INFO] [Thread-157573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:46:58.177 [DEBUG] [Thread-157573] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:46:58.177 [DEBUG] [Thread-157573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:46:58.177 [DEBUG] [Thread-157573] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:46:58.177 [DEBUG] [Thread-157573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:58.177 [DEBUG] [Thread-157573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] client lang: <none>
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] server lang: <none>
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] kex follows: False
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] Compression: none
2025-09-29T13:46:58.178 [DEBUG] [Thread-157573] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:46:58.237 [DEBUG] [Thread-157573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:46:58.238 [DEBUG] [Thread-157573] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:46:58.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:46:58.239 [DEBUG] [Thread-157573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:46:58.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:46:58.293 [DEBUG] [Thread-157573] [transport.py] [_log()] userauth is OK
2025-09-29T13:46:58.293 [DEBUG] [Thread-157573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:46:58.293 [DEBUG] [Thread-157573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:46:58.293 [DEBUG] [Thread-157573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:46:58.293 [DEBUG] [Thread-157573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:46:58.313 [INFO] [Thread-157573] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:46:58.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:46:58.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:46:58.478 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:46:58.479 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:46:59.357 [DEBUG] [Thread-157573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:46:59.358 [DEBUG] [Thread-157573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:46:59.405 [DEBUG] [Thread-157573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:46:59.405 [DEBUG] [Thread-157573] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:46:59.414 [DEBUG] [Thread-157573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:46:59.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:46:59.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:46:59.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:46:59.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:46:59.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:46:59.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:46:59.449 [DEBUG] [Thread-157573] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:09.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:47:09.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:47:09.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:47:10.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 46, 38), 14.28, 37.95, 0.0, 12.69, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:47:10.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:46:38
2025-09-29T13:47:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:47:10.301 [DEBUG] [Thread-157575] [transport.py] [_log()] starting thread (client mode): 0x2b9563b0
2025-09-29T13:47:10.301 [DEBUG] [Thread-157575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:47:10.312 [DEBUG] [Thread-157575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:47:10.312 [INFO] [Thread-157575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] client lang: <none>
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] server lang: <none>
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] kex follows: False
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:47:10.315 [DEBUG] [Thread-157575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:47:10.316 [DEBUG] [Thread-157575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:47:10.316 [DEBUG] [Thread-157575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:47:10.316 [DEBUG] [Thread-157575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:47:10.316 [DEBUG] [Thread-157575] [transport.py] [_log()] Compression: none
2025-09-29T13:47:10.316 [DEBUG] [Thread-157575] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:47:10.332 [DEBUG] [Thread-157575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:47:10.332 [DEBUG] [Thread-157575] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:47:10.333 [DEBUG] [Thread-157575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:47:10.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:47:10.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:47:10.334 [DEBUG] [Thread-157575] [transport.py] [_log()] userauth is OK
2025-09-29T13:47:10.335 [DEBUG] [Thread-157575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:47:10.335 [DEBUG] [Thread-157575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:47:10.335 [DEBUG] [Thread-157575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:47:10.335 [DEBUG] [Thread-157575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:47:10.370 [INFO] [Thread-157575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:47:10.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:47:11.119 [DEBUG] [Thread-157575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:47:11.119 [DEBUG] [Thread-157575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:47:11.119 [DEBUG] [Thread-157575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:47:11.160 [DEBUG] [Thread-157575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:47:11.160 [DEBUG] [Thread-157575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:47:11.161 [DEBUG] [Thread-157575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:47:11.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:47:11.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:47:11.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:47:11.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:47:11.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:47:11.178 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:47:11.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:47:11.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:47:11.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:47:11.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.490694 -999.00  +15.10   6.74     44   +2.90 1 1 1 1 1   888    0 12.67 9.29 ----- 8.7 6.7 127.6 18.9 23.9 -26.5 23.2 -26.8 24.4 -27.0 25.5 -28.0
2025-09-29T13:47:11.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:47:11.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:47:11.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.490694
2025-09-29T13:47:11.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:47:11.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:47:11.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:47:11.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:47:11.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:47:11.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:46:38', tmtdew=14.28, humidity=37.95, cloud=0.0, wind=12.69, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:46:35.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:47:11.179 [DEBUG] [Thread-157575] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:11.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:47:11.265 [DEBUG] [Thread-157578] [transport.py] [_log()] starting thread (client mode): 0x2b9b8310
2025-09-29T13:47:11.265 [DEBUG] [Thread-157578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:47:11.280 [DEBUG] [Thread-157578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:47:11.280 [INFO] [Thread-157578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:47:11.287 [DEBUG] [Thread-157578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] client lang: <none>
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] server lang: <none>
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] kex follows: False
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] Compression: none
2025-09-29T13:47:11.288 [DEBUG] [Thread-157578] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:47:11.344 [DEBUG] [Thread-157578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:47:11.344 [DEBUG] [Thread-157578] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:47:11.344 [DEBUG] [Thread-157578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:47:11.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:47:11.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:47:11.405 [DEBUG] [Thread-157578] [transport.py] [_log()] userauth is OK
2025-09-29T13:47:11.405 [DEBUG] [Thread-157578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:47:11.406 [DEBUG] [Thread-157578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:47:11.406 [DEBUG] [Thread-157578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:47:11.406 [DEBUG] [Thread-157578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:47:11.419 [INFO] [Thread-157578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:47:11.419 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:47:11.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:47:11.444 [DEBUG] [Thread-157580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:47:12.368 [DEBUG] [Thread-157578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:47:12.368 [DEBUG] [Thread-157578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:47:12.416 [DEBUG] [Thread-157578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:47:12.416 [DEBUG] [Thread-157578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:47:12.425 [DEBUG] [Thread-157578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:47:12.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:47:12.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:47:12.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:47:12.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:47:12.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:47:12.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:47:12.457 [DEBUG] [Thread-157578] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:22.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:47:22.460 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:47:22.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:47:23.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 47, 10), 14.46, 37.55, 0.0, 14.03, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:47:23.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:47:10
2025-09-29T13:47:23.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:47:23.355 [DEBUG] [Thread-157581] [transport.py] [_log()] starting thread (client mode): 0x2b9bafb0
2025-09-29T13:47:23.355 [DEBUG] [Thread-157581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:47:23.375 [DEBUG] [Thread-157581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:47:23.375 [INFO] [Thread-157581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] client lang: <none>
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] server lang: <none>
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] kex follows: False
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] Compression: none
2025-09-29T13:47:23.377 [DEBUG] [Thread-157581] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:47:23.385 [DEBUG] [Thread-157581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:47:23.385 [DEBUG] [Thread-157581] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:47:23.385 [DEBUG] [Thread-157581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:47:23.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:47:23.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:47:23.386 [DEBUG] [Thread-157581] [transport.py] [_log()] userauth is OK
2025-09-29T13:47:23.386 [DEBUG] [Thread-157581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:47:23.386 [DEBUG] [Thread-157581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:47:23.386 [DEBUG] [Thread-157581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:47:23.386 [DEBUG] [Thread-157581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:47:23.395 [INFO] [Thread-157581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:47:23.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:47:24.142 [DEBUG] [Thread-157581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:47:24.143 [DEBUG] [Thread-157581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:47:24.143 [DEBUG] [Thread-157581] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:47:24.184 [DEBUG] [Thread-157581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:47:24.184 [DEBUG] [Thread-157581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:47:24.186 [DEBUG] [Thread-157581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:47:24.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:47:24.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:47:24.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:47:24.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:47:24.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:47:24.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:47:24.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:47:24.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:47:24.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:47:24.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.490694 -999.00  +15.10   6.74     44   +2.90 1 1 1 1 1   888    0 12.67 9.29 ----- 8.7 6.7 127.6 18.9 23.9 -26.5 23.2 -26.8 24.4 -27.0 25.5 -28.0
2025-09-29T13:47:24.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:47:24.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:47:24.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.490694
2025-09-29T13:47:24.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:47:24.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:47:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:47:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:47:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:47:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:47:10', tmtdew=14.46, humidity=37.55, cloud=0.0, wind=14.03, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:46:35.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:47:24.198 [DEBUG] [Thread-157581] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:24.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:47:24.280 [DEBUG] [Thread-157584] [transport.py] [_log()] starting thread (client mode): 0x2b9b81c0
2025-09-29T13:47:24.280 [DEBUG] [Thread-157584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:47:24.295 [DEBUG] [Thread-157584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:47:24.295 [INFO] [Thread-157584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] client lang: <none>
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] server lang: <none>
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] kex follows: False
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] Compression: none
2025-09-29T13:47:24.303 [DEBUG] [Thread-157584] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:47:24.360 [DEBUG] [Thread-157584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:47:24.360 [DEBUG] [Thread-157584] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:47:24.360 [DEBUG] [Thread-157584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:47:24.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:47:24.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:47:24.416 [DEBUG] [Thread-157584] [transport.py] [_log()] userauth is OK
2025-09-29T13:47:24.416 [DEBUG] [Thread-157584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:47:24.416 [DEBUG] [Thread-157584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:47:24.416 [DEBUG] [Thread-157584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:47:24.416 [DEBUG] [Thread-157584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:47:24.430 [INFO] [Thread-157584] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:47:24.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:47:24.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:47:25.398 [DEBUG] [Thread-157584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:47:25.398 [DEBUG] [Thread-157584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:47:25.446 [DEBUG] [Thread-157584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:47:25.446 [DEBUG] [Thread-157584] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:47:25.455 [DEBUG] [Thread-157584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:47:25.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:47:25.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:47:25.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:47:25.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:47:25.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:47:25.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:47:25.489 [DEBUG] [Thread-157584] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:26.477 [DEBUG] [Thread-157586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:47:35.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:47:35.492 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:47:35.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:47:36.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 47, 10), 14.46, 37.55, 0.0, 14.03, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:47:36.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:47:10
2025-09-29T13:47:36.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:47:36.341 [DEBUG] [Thread-157587] [transport.py] [_log()] starting thread (client mode): 0x2b9b9c00
2025-09-29T13:47:36.341 [DEBUG] [Thread-157587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:47:36.360 [DEBUG] [Thread-157587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:47:36.360 [INFO] [Thread-157587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:47:36.363 [DEBUG] [Thread-157587] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:47:36.363 [DEBUG] [Thread-157587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] client lang: <none>
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] server lang: <none>
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] kex follows: False
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] Compression: none
2025-09-29T13:47:36.364 [DEBUG] [Thread-157587] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:47:36.380 [DEBUG] [Thread-157587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:47:36.381 [DEBUG] [Thread-157587] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:47:36.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:47:36.382 [DEBUG] [Thread-157587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:47:36.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:47:36.384 [DEBUG] [Thread-157587] [transport.py] [_log()] userauth is OK
2025-09-29T13:47:36.384 [DEBUG] [Thread-157587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:47:36.384 [DEBUG] [Thread-157587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:47:36.384 [DEBUG] [Thread-157587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:47:36.384 [DEBUG] [Thread-157587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:47:36.402 [INFO] [Thread-157587] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:47:36.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:47:36.997 [DEBUG] [Thread-157587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:47:36.997 [DEBUG] [Thread-157587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:47:36.997 [DEBUG] [Thread-157587] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:47:37.038 [DEBUG] [Thread-157587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:47:37.038 [DEBUG] [Thread-157587] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:47:37.041 [DEBUG] [Thread-157587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:47:37.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:47:37.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:47:37.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:47:37.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:47:37.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:47:37.059 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:47:37.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:47:37.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:47:37.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:47:37.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.491041 -999.00  +15.20  12.58     43   +3.00 1 1 1 1 1   888    0 12.47 6.23 ----- 9.8 12.6 139.8 21.1 24.0 -27.5 23.3 -28.4 24.4 -28.4 25.5 -28.5
2025-09-29T13:47:37.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:47:37.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:47:37.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.491041
2025-09-29T13:47:37.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:47:37.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:47:37.061 [DEBUG] [Thread-157587] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:37.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:47:37.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:47:37.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:47:37.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:47:10', tmtdew=14.46, humidity=37.55, cloud=0.0, wind=14.03, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:47:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:47:37.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:47:37.158 [DEBUG] [Thread-157590] [transport.py] [_log()] starting thread (client mode): 0x2b9bb460
2025-09-29T13:47:37.158 [DEBUG] [Thread-157590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:47:37.173 [DEBUG] [Thread-157590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:47:37.174 [INFO] [Thread-157590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:47:37.181 [DEBUG] [Thread-157590] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:47:37.181 [DEBUG] [Thread-157590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] client lang: <none>
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] server lang: <none>
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] kex follows: False
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] Compression: none
2025-09-29T13:47:37.182 [DEBUG] [Thread-157590] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:47:37.243 [DEBUG] [Thread-157590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:47:37.243 [DEBUG] [Thread-157590] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:47:37.244 [DEBUG] [Thread-157590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:47:37.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:47:37.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:47:37.305 [DEBUG] [Thread-157590] [transport.py] [_log()] userauth is OK
2025-09-29T13:47:37.305 [DEBUG] [Thread-157590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:47:37.305 [DEBUG] [Thread-157590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:47:37.305 [DEBUG] [Thread-157590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:47:37.305 [DEBUG] [Thread-157590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:47:37.326 [INFO] [Thread-157590] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:47:37.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:47:37.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:47:38.310 [DEBUG] [Thread-157590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:47:38.311 [DEBUG] [Thread-157590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:47:38.358 [DEBUG] [Thread-157590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:47:38.358 [DEBUG] [Thread-157590] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:47:38.366 [DEBUG] [Thread-157590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:47:38.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:47:38.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:47:38.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:47:38.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:47:38.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:47:38.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:47:38.399 [DEBUG] [Thread-157590] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:41.525 [DEBUG] [Thread-157592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:47:42.870 [DEBUG] [Thread-157593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:47:48.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:47:48.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:47:48.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:47:49.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 47, 42), 14.34, 37.7, 0.0, 22.39, 15.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:47:49.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:47:42
2025-09-29T13:47:49.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:47:49.261 [DEBUG] [Thread-157594] [transport.py] [_log()] starting thread (client mode): 0x2b9bb640
2025-09-29T13:47:49.262 [DEBUG] [Thread-157594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:47:49.283 [DEBUG] [Thread-157594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:47:49.283 [INFO] [Thread-157594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] client lang: <none>
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] server lang: <none>
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] kex follows: False
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] Compression: none
2025-09-29T13:47:49.287 [DEBUG] [Thread-157594] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:47:49.303 [DEBUG] [Thread-157594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:47:49.303 [DEBUG] [Thread-157594] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:47:49.304 [DEBUG] [Thread-157594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:47:49.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:47:49.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:47:49.305 [DEBUG] [Thread-157594] [transport.py] [_log()] userauth is OK
2025-09-29T13:47:49.305 [DEBUG] [Thread-157594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:47:49.305 [DEBUG] [Thread-157594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:47:49.305 [DEBUG] [Thread-157594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:47:49.305 [DEBUG] [Thread-157594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:47:49.321 [INFO] [Thread-157594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:47:49.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:47:50.090 [DEBUG] [Thread-157594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:47:50.090 [DEBUG] [Thread-157594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:47:50.091 [DEBUG] [Thread-157594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:47:50.131 [DEBUG] [Thread-157594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:47:50.131 [DEBUG] [Thread-157594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:47:50.134 [DEBUG] [Thread-157594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:47:50.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:47:50.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:47:50.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:47:50.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:47:50.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:47:50.157 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:47:50.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:47:50.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:47:50.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:47:50.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.491041 -999.00  +15.20  12.58     43   +3.00 1 1 1 1 1   888    0 12.47 6.23 ----- 9.8 12.6 139.8 21.1 24.0 -27.5 23.3 -28.4 24.4 -28.4 25.5 -28.5
2025-09-29T13:47:50.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:47:50.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:47:50.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.491041
2025-09-29T13:47:50.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:47:50.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:47:50.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:47:50.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:47:50.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:47:50.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:47:42', tmtdew=14.34, humidity=37.7, cloud=0.0, wind=22.39, temperature=15.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:47:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:47:50.160 [DEBUG] [Thread-157594] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:50.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:47:50.255 [DEBUG] [Thread-157597] [transport.py] [_log()] starting thread (client mode): 0x2b9bb550
2025-09-29T13:47:50.255 [DEBUG] [Thread-157597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:47:50.270 [DEBUG] [Thread-157597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:47:50.270 [INFO] [Thread-157597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:47:50.277 [DEBUG] [Thread-157597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:47:50.277 [DEBUG] [Thread-157597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] client lang: <none>
2025-09-29T13:47:50.278 [DEBUG] [Thread-157597] [transport.py] [_log()] server lang: <none>
2025-09-29T13:47:50.279 [DEBUG] [Thread-157597] [transport.py] [_log()] kex follows: False
2025-09-29T13:47:50.279 [DEBUG] [Thread-157597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:47:50.279 [DEBUG] [Thread-157597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:47:50.279 [DEBUG] [Thread-157597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:47:50.279 [DEBUG] [Thread-157597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:47:50.279 [DEBUG] [Thread-157597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:47:50.279 [DEBUG] [Thread-157597] [transport.py] [_log()] Compression: none
2025-09-29T13:47:50.279 [DEBUG] [Thread-157597] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:47:50.336 [DEBUG] [Thread-157597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:47:50.337 [DEBUG] [Thread-157597] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:47:50.337 [DEBUG] [Thread-157597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:47:50.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:47:50.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:47:50.393 [DEBUG] [Thread-157597] [transport.py] [_log()] userauth is OK
2025-09-29T13:47:50.393 [DEBUG] [Thread-157597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:47:50.394 [DEBUG] [Thread-157597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:47:50.394 [DEBUG] [Thread-157597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:47:50.394 [DEBUG] [Thread-157597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:47:50.414 [INFO] [Thread-157597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:47:50.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:47:50.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:47:51.351 [DEBUG] [Thread-157597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:47:51.351 [DEBUG] [Thread-157597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:47:51.401 [DEBUG] [Thread-157597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:47:51.401 [DEBUG] [Thread-157597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:47:51.410 [DEBUG] [Thread-157597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:47:51.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:47:51.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:47:51.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:47:51.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:47:51.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:47:51.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:47:51.444 [DEBUG] [Thread-157597] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:47:56.565 [DEBUG] [Thread-157599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:47:58.620 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:47:58.621 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:48:01.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:48:01.446 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:48:01.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:48:02.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 47, 42), 14.34, 37.7, 0.0, 22.39, 15.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:48:02.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:47:42
2025-09-29T13:48:02.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:48:02.333 [DEBUG] [Thread-157600] [transport.py] [_log()] starting thread (client mode): 0x2b9b9ea0
2025-09-29T13:48:02.334 [DEBUG] [Thread-157600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:02.353 [DEBUG] [Thread-157600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:48:02.354 [INFO] [Thread-157600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] Compression: none
2025-09-29T13:48:02.357 [DEBUG] [Thread-157600] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:02.371 [DEBUG] [Thread-157600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:02.371 [DEBUG] [Thread-157600] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:02.371 [DEBUG] [Thread-157600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:48:02.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:48:02.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:02.372 [DEBUG] [Thread-157600] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:02.372 [DEBUG] [Thread-157600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:02.372 [DEBUG] [Thread-157600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:02.372 [DEBUG] [Thread-157600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:48:02.372 [DEBUG] [Thread-157600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:02.390 [INFO] [Thread-157600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:02.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:03.009 [DEBUG] [Thread-157600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:03.009 [DEBUG] [Thread-157600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:03.009 [DEBUG] [Thread-157600] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:48:03.050 [DEBUG] [Thread-157600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:03.050 [DEBUG] [Thread-157600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:03.053 [DEBUG] [Thread-157600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:03.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:03.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:48:03.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:48:03.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:48:03.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:03.085 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:48:03.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:03.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:03.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:48:03.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.491388 -999.00  +15.10  18.27     43   +2.60 1 1 1 1 1   888    0 12.49 4.99 ----- 18.4 18.3 165.0 23.6 23.9 -29.8 23.2 -27.7 24.1 -29.2 25.4 -29.5
2025-09-29T13:48:03.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:48:03.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:48:03.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.491388
2025-09-29T13:48:03.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:48:03.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:48:03.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:48:03.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:48:03.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:48:03.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:47:42', tmtdew=14.34, humidity=37.7, cloud=0.0, wind=22.39, temperature=15.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:47:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:48:03.087 [DEBUG] [Thread-157600] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:03.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:48:03.184 [DEBUG] [Thread-157603] [transport.py] [_log()] starting thread (client mode): 0x2b9bada0
2025-09-29T13:48:03.184 [DEBUG] [Thread-157603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:03.199 [DEBUG] [Thread-157603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:48:03.199 [INFO] [Thread-157603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:03.207 [DEBUG] [Thread-157603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:03.208 [DEBUG] [Thread-157603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:03.208 [DEBUG] [Thread-157603] [transport.py] [_log()] Compression: none
2025-09-29T13:48:03.208 [DEBUG] [Thread-157603] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:03.264 [DEBUG] [Thread-157603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:03.264 [DEBUG] [Thread-157603] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:03.264 [DEBUG] [Thread-157603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:48:03.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:48:03.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:03.321 [DEBUG] [Thread-157603] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:03.321 [DEBUG] [Thread-157603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:03.321 [DEBUG] [Thread-157603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:03.321 [DEBUG] [Thread-157603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:48:03.321 [DEBUG] [Thread-157603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:03.335 [INFO] [Thread-157603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:03.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:48:03.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:04.306 [DEBUG] [Thread-157603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:04.306 [DEBUG] [Thread-157603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:04.353 [DEBUG] [Thread-157603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:04.353 [DEBUG] [Thread-157603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:04.362 [DEBUG] [Thread-157603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:04.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:04.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:48:04.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:48:04.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:04.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:04.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:04.397 [DEBUG] [Thread-157603] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:11.601 [DEBUG] [Thread-157605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:48:14.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:48:14.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:48:14.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:48:15.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 47, 42), 14.34, 37.7, 0.0, 22.39, 15.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:48:15.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:47:42
2025-09-29T13:48:15.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:48:15.304 [DEBUG] [Thread-157606] [transport.py] [_log()] starting thread (client mode): 0x2b9b9b40
2025-09-29T13:48:15.304 [DEBUG] [Thread-157606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:15.324 [DEBUG] [Thread-157606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:48:15.324 [INFO] [Thread-157606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] Compression: none
2025-09-29T13:48:15.328 [DEBUG] [Thread-157606] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:15.346 [DEBUG] [Thread-157606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:15.347 [DEBUG] [Thread-157606] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:15.347 [DEBUG] [Thread-157606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:48:15.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:48:15.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:15.347 [DEBUG] [Thread-157606] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:15.347 [DEBUG] [Thread-157606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:15.347 [DEBUG] [Thread-157606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:15.347 [DEBUG] [Thread-157606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:48:15.347 [DEBUG] [Thread-157606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:15.356 [INFO] [Thread-157606] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:15.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:16.126 [DEBUG] [Thread-157606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:16.126 [DEBUG] [Thread-157606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:16.126 [DEBUG] [Thread-157606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:48:16.167 [DEBUG] [Thread-157606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:16.167 [DEBUG] [Thread-157606] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:16.170 [DEBUG] [Thread-157606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:16.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:16.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:48:16.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:48:16.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:48:16.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:16.193 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:48:16.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:16.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:16.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:48:16.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.491388 -999.00  +15.10  18.27     43   +2.60 1 1 1 1 1   888    0 12.49 4.99 ----- 18.4 18.3 165.0 23.6 23.9 -29.8 23.2 -27.7 24.1 -29.2 25.4 -29.5
2025-09-29T13:48:16.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:48:16.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:48:16.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.491388
2025-09-29T13:48:16.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:48:16.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:48:16.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:48:16.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:48:16.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:48:16.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:47:42', tmtdew=14.34, humidity=37.7, cloud=0.0, wind=22.39, temperature=15.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:47:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:48:16.195 [DEBUG] [Thread-157606] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:16.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:48:16.291 [DEBUG] [Thread-157609] [transport.py] [_log()] starting thread (client mode): 0x2b9b8250
2025-09-29T13:48:16.291 [DEBUG] [Thread-157609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:16.306 [DEBUG] [Thread-157609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:48:16.306 [INFO] [Thread-157609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:48:16.313 [DEBUG] [Thread-157609] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] Compression: none
2025-09-29T13:48:16.314 [DEBUG] [Thread-157609] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:16.372 [DEBUG] [Thread-157609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:16.373 [DEBUG] [Thread-157609] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:16.373 [DEBUG] [Thread-157609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:48:16.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:48:16.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:16.429 [DEBUG] [Thread-157609] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:16.429 [DEBUG] [Thread-157609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:16.429 [DEBUG] [Thread-157609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:16.429 [DEBUG] [Thread-157609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:48:16.430 [DEBUG] [Thread-157609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:16.449 [INFO] [Thread-157609] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:16.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:48:16.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:17.457 [DEBUG] [Thread-157609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:17.457 [DEBUG] [Thread-157609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:17.505 [DEBUG] [Thread-157609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:17.505 [DEBUG] [Thread-157609] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:17.513 [DEBUG] [Thread-157609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:17.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:17.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:48:17.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:48:17.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:17.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:17.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:17.544 [DEBUG] [Thread-157609] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:26.645 [DEBUG] [Thread-157611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:48:27.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:48:27.544 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:48:27.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:48:28.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 48, 14), 14.33, 37.74, 0.0, 21.12, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:48:28.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:48:14
2025-09-29T13:48:28.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:48:28.405 [DEBUG] [Thread-157612] [transport.py] [_log()] starting thread (client mode): 0x2b90e080
2025-09-29T13:48:28.405 [DEBUG] [Thread-157612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:28.426 [DEBUG] [Thread-157612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:48:28.426 [INFO] [Thread-157612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:28.429 [DEBUG] [Thread-157612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:28.430 [DEBUG] [Thread-157612] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:28.430 [DEBUG] [Thread-157612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:28.430 [DEBUG] [Thread-157612] [transport.py] [_log()] Compression: none
2025-09-29T13:48:28.430 [DEBUG] [Thread-157612] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:28.447 [DEBUG] [Thread-157612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:28.447 [DEBUG] [Thread-157612] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:28.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:48:28.448 [DEBUG] [Thread-157612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:48:28.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:28.450 [DEBUG] [Thread-157612] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:28.450 [DEBUG] [Thread-157612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:28.450 [DEBUG] [Thread-157612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:28.451 [DEBUG] [Thread-157612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:48:28.451 [DEBUG] [Thread-157612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:28.473 [INFO] [Thread-157612] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:28.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:29.239 [DEBUG] [Thread-157612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:29.239 [DEBUG] [Thread-157612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:29.239 [DEBUG] [Thread-157612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:48:29.280 [DEBUG] [Thread-157612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:29.280 [DEBUG] [Thread-157612] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:29.283 [DEBUG] [Thread-157612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:29.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:29.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:48:29.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:48:29.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:48:29.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:29.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:48:29.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:29.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:29.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:48:29.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.491388 -999.00  +15.10  18.27     43   +2.60 1 1 1 1 1   888    0 12.49 4.99 ----- 18.4 18.3 165.0 23.6 23.9 -29.8 23.2 -27.7 24.1 -29.2 25.4 -29.5
2025-09-29T13:48:29.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:48:29.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:48:29.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.491388
2025-09-29T13:48:29.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:48:29.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:48:29.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:48:29.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:48:29.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:48:29.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:48:14', tmtdew=14.33, humidity=37.74, cloud=0.0, wind=21.12, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:47:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:48:29.310 [DEBUG] [Thread-157612] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:29.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:48:29.406 [DEBUG] [Thread-157615] [transport.py] [_log()] starting thread (client mode): 0x2b90cc10
2025-09-29T13:48:29.407 [DEBUG] [Thread-157615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:29.421 [DEBUG] [Thread-157615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:48:29.421 [INFO] [Thread-157615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:48:29.428 [DEBUG] [Thread-157615] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:29.429 [DEBUG] [Thread-157615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:29.430 [DEBUG] [Thread-157615] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:29.430 [DEBUG] [Thread-157615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:29.430 [DEBUG] [Thread-157615] [transport.py] [_log()] Compression: none
2025-09-29T13:48:29.430 [DEBUG] [Thread-157615] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:29.485 [DEBUG] [Thread-157615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:29.486 [DEBUG] [Thread-157615] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:29.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:48:29.487 [DEBUG] [Thread-157615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:48:29.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:29.545 [DEBUG] [Thread-157615] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:29.545 [DEBUG] [Thread-157615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:29.545 [DEBUG] [Thread-157615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:29.546 [DEBUG] [Thread-157615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:48:29.546 [DEBUG] [Thread-157615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:29.564 [INFO] [Thread-157615] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:29.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:48:29.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:30.514 [DEBUG] [Thread-157615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:30.514 [DEBUG] [Thread-157615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:30.562 [DEBUG] [Thread-157615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:30.562 [DEBUG] [Thread-157615] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:30.571 [DEBUG] [Thread-157615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:30.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:30.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:48:30.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:48:30.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:30.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:30.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:30.605 [DEBUG] [Thread-157615] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:40.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:48:40.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:48:40.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:48:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 48, 14), 14.33, 37.74, 0.0, 21.12, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:48:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:48:14
2025-09-29T13:48:41.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:48:41.467 [DEBUG] [Thread-157617] [transport.py] [_log()] starting thread (client mode): 0x2b90d4b0
2025-09-29T13:48:41.468 [DEBUG] [Thread-157617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:41.488 [DEBUG] [Thread-157617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:48:41.488 [INFO] [Thread-157617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:48:41.491 [DEBUG] [Thread-157617] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:41.491 [DEBUG] [Thread-157617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:48:41.491 [DEBUG] [Thread-157617] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:41.491 [DEBUG] [Thread-157617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:41.491 [DEBUG] [Thread-157617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:41.491 [DEBUG] [Thread-157617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] Compression: none
2025-09-29T13:48:41.492 [DEBUG] [Thread-157617] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:41.509 [DEBUG] [Thread-157617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:41.510 [DEBUG] [Thread-157617] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:41.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:48:41.511 [DEBUG] [Thread-157617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:48:41.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:41.512 [DEBUG] [Thread-157617] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:41.513 [DEBUG] [Thread-157617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:41.513 [DEBUG] [Thread-157617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:41.513 [DEBUG] [Thread-157617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:48:41.513 [DEBUG] [Thread-157617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:41.536 [INFO] [Thread-157617] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:41.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:41.673 [DEBUG] [Thread-157619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:48:42.119 [DEBUG] [Thread-157617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:42.119 [DEBUG] [Thread-157617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:42.120 [DEBUG] [Thread-157617] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:48:42.160 [DEBUG] [Thread-157617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:42.160 [DEBUG] [Thread-157617] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:42.163 [DEBUG] [Thread-157617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:42.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:42.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:48:42.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:48:42.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:48:42.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:42.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:48:42.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:42.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:42.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:48:42.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.491736 -999.00  +14.60  15.18     44   +2.40 1 1 1 1 1   888    0 12.40 4.00 ----- 19.8 15.2 139.4 27.9 23.7 -27.8 23.0 -27.9 24.0 -28.7 25.1 -29.6
2025-09-29T13:48:42.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:48:42.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:48:42.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.491736
2025-09-29T13:48:42.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:48:42.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:48:42.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:48:42.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:48:42.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:48:42.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:48:14', tmtdew=14.33, humidity=37.74, cloud=0.0, wind=21.12, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:48:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:48:42.187 [DEBUG] [Thread-157617] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:42.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:48:42.286 [DEBUG] [Thread-157621] [transport.py] [_log()] starting thread (client mode): 0x2b9b9060
2025-09-29T13:48:42.286 [DEBUG] [Thread-157621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:42.300 [DEBUG] [Thread-157621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:48:42.300 [INFO] [Thread-157621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:42.308 [DEBUG] [Thread-157621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:42.309 [DEBUG] [Thread-157621] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:42.309 [DEBUG] [Thread-157621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:42.309 [DEBUG] [Thread-157621] [transport.py] [_log()] Compression: none
2025-09-29T13:48:42.309 [DEBUG] [Thread-157621] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:42.365 [DEBUG] [Thread-157621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:42.365 [DEBUG] [Thread-157621] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:42.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:48:42.366 [DEBUG] [Thread-157621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:48:42.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:42.421 [DEBUG] [Thread-157621] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:42.421 [DEBUG] [Thread-157621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:42.422 [DEBUG] [Thread-157621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:42.422 [DEBUG] [Thread-157621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:48:42.422 [DEBUG] [Thread-157621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:42.441 [INFO] [Thread-157621] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:42.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:48:42.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:42.919 [DEBUG] [Thread-157623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:48:43.395 [DEBUG] [Thread-157621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:43.395 [DEBUG] [Thread-157621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:43.442 [DEBUG] [Thread-157621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:43.442 [DEBUG] [Thread-157621] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:43.453 [DEBUG] [Thread-157621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:43.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:43.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:48:43.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:48:43.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:43.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:43.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:43.487 [DEBUG] [Thread-157621] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:53.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:48:53.490 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:48:53.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:48:54.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 48, 45), 14.13, 38.35, 0.0, 23.64, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:48:54.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:48:45
2025-09-29T13:48:54.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:48:54.348 [DEBUG] [Thread-157624] [transport.py] [_log()] starting thread (client mode): 0x2b9b9270
2025-09-29T13:48:54.348 [DEBUG] [Thread-157624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:54.368 [DEBUG] [Thread-157624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:48:54.368 [INFO] [Thread-157624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:54.372 [DEBUG] [Thread-157624] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] Compression: none
2025-09-29T13:48:54.373 [DEBUG] [Thread-157624] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:54.390 [DEBUG] [Thread-157624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:54.390 [DEBUG] [Thread-157624] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:54.391 [DEBUG] [Thread-157624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:48:54.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:48:54.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:54.393 [DEBUG] [Thread-157624] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:54.393 [DEBUG] [Thread-157624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:54.393 [DEBUG] [Thread-157624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:54.393 [DEBUG] [Thread-157624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:48:54.393 [DEBUG] [Thread-157624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:54.417 [INFO] [Thread-157624] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:54.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:55.192 [DEBUG] [Thread-157624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:55.192 [DEBUG] [Thread-157624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:55.193 [DEBUG] [Thread-157624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:48:55.233 [DEBUG] [Thread-157624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:55.233 [DEBUG] [Thread-157624] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:55.235 [DEBUG] [Thread-157624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:55.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:55.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:48:55.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:48:55.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:48:55.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:55.249 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:48:55.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:55.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.491736 -999.00  +14.60  15.18     44   +2.40 1 1 1 1 1   888    0 12.40 4.00 ----- 19.8 15.2 139.4 27.9 23.7 -27.8 23.0 -27.9 24.0 -28.7 25.1 -29.6
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.491736
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:48:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:48:45', tmtdew=14.13, humidity=38.35, cloud=0.0, wind=23.64, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:48:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:48:55.250 [DEBUG] [Thread-157624] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:55.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:48:55.335 [DEBUG] [Thread-157627] [transport.py] [_log()] starting thread (client mode): 0x2b9ba590
2025-09-29T13:48:55.335 [DEBUG] [Thread-157627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:48:55.352 [DEBUG] [Thread-157627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:48:55.352 [INFO] [Thread-157627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:48:55.361 [DEBUG] [Thread-157627] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:48:55.361 [DEBUG] [Thread-157627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] client lang: <none>
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] server lang: <none>
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] kex follows: False
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] Compression: none
2025-09-29T13:48:55.362 [DEBUG] [Thread-157627] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:48:55.419 [DEBUG] [Thread-157627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:48:55.420 [DEBUG] [Thread-157627] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:48:55.420 [DEBUG] [Thread-157627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:48:55.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:48:55.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:48:55.477 [DEBUG] [Thread-157627] [transport.py] [_log()] userauth is OK
2025-09-29T13:48:55.477 [DEBUG] [Thread-157627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:48:55.478 [DEBUG] [Thread-157627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:48:55.478 [DEBUG] [Thread-157627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:48:55.478 [DEBUG] [Thread-157627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:48:55.497 [INFO] [Thread-157627] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:48:55.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:48:55.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:48:56.524 [DEBUG] [Thread-157627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:48:56.524 [DEBUG] [Thread-157627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:48:56.572 [DEBUG] [Thread-157627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:48:56.572 [DEBUG] [Thread-157627] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:48:56.582 [DEBUG] [Thread-157627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:48:56.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:48:56.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:48:56.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:48:56.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:48:56.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:48:56.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:48:56.617 [DEBUG] [Thread-157627] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:48:56.726 [DEBUG] [Thread-157629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:48:58.762 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:48:58.763 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:49:06.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:49:06.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:49:06.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:49:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 48, 45), 14.13, 38.35, 0.0, 23.64, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:49:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:48:45
2025-09-29T13:49:07.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:49:07.454 [DEBUG] [Thread-157630] [transport.py] [_log()] starting thread (client mode): 0x2b90ebf0
2025-09-29T13:49:07.454 [DEBUG] [Thread-157630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:07.475 [DEBUG] [Thread-157630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:49:07.475 [INFO] [Thread-157630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:49:07.478 [DEBUG] [Thread-157630] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:07.479 [DEBUG] [Thread-157630] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:07.480 [DEBUG] [Thread-157630] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:07.480 [DEBUG] [Thread-157630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:07.480 [DEBUG] [Thread-157630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:07.480 [DEBUG] [Thread-157630] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:07.480 [DEBUG] [Thread-157630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:07.480 [DEBUG] [Thread-157630] [transport.py] [_log()] Compression: none
2025-09-29T13:49:07.480 [DEBUG] [Thread-157630] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:07.501 [DEBUG] [Thread-157630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:07.502 [DEBUG] [Thread-157630] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:07.502 [DEBUG] [Thread-157630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:49:07.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:49:07.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:07.504 [DEBUG] [Thread-157630] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:07.504 [DEBUG] [Thread-157630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:07.504 [DEBUG] [Thread-157630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:07.505 [DEBUG] [Thread-157630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:49:07.505 [DEBUG] [Thread-157630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:07.521 [INFO] [Thread-157630] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:07.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:49:08.135 [DEBUG] [Thread-157630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:49:08.135 [DEBUG] [Thread-157630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:49:08.136 [DEBUG] [Thread-157630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:49:08.176 [DEBUG] [Thread-157630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:49:08.176 [DEBUG] [Thread-157630] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:49:08.181 [DEBUG] [Thread-157630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:49:08.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:49:08.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:49:08.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:49:08.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:49:08.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:49:08.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:49:08.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:49:08.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:49:08.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:49:08.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.492083 -999.00  +14.50  19.69     44   +2.60 1 1 1 1 1   888    0 12.51 -0.75 ----- 18.9 19.7 141.0 23.6 23.6 -27.6 22.9 -27.4 24.0 -28.6 25.1 -28.3
2025-09-29T13:49:08.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:49:08.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:49:08.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.492083
2025-09-29T13:49:08.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:49:08.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:49:08.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:49:08.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:49:08.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:49:08.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:48:45', tmtdew=14.13, humidity=38.35, cloud=0.0, wind=23.64, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:48:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:49:08.204 [DEBUG] [Thread-157630] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:49:08.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:49:08.300 [DEBUG] [Thread-157633] [transport.py] [_log()] starting thread (client mode): 0x2b90fbe0
2025-09-29T13:49:08.300 [DEBUG] [Thread-157633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:08.314 [DEBUG] [Thread-157633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:49:08.314 [INFO] [Thread-157633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:49:08.322 [DEBUG] [Thread-157633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:08.322 [DEBUG] [Thread-157633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:49:08.322 [DEBUG] [Thread-157633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:08.323 [DEBUG] [Thread-157633] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:08.324 [DEBUG] [Thread-157633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:08.324 [DEBUG] [Thread-157633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:08.324 [DEBUG] [Thread-157633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:08.324 [DEBUG] [Thread-157633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:08.324 [DEBUG] [Thread-157633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:08.324 [DEBUG] [Thread-157633] [transport.py] [_log()] Compression: none
2025-09-29T13:49:08.324 [DEBUG] [Thread-157633] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:08.382 [DEBUG] [Thread-157633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:08.382 [DEBUG] [Thread-157633] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:08.383 [DEBUG] [Thread-157633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:49:08.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:49:08.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:08.438 [DEBUG] [Thread-157633] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:08.438 [DEBUG] [Thread-157633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:08.438 [DEBUG] [Thread-157633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:08.438 [DEBUG] [Thread-157633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:49:08.438 [DEBUG] [Thread-157633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:08.457 [INFO] [Thread-157633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:08.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:49:08.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:49:09.451 [DEBUG] [Thread-157633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:49:09.451 [DEBUG] [Thread-157633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:49:09.499 [DEBUG] [Thread-157633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:49:09.499 [DEBUG] [Thread-157633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:49:09.508 [DEBUG] [Thread-157633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:49:09.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:49:09.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:49:09.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:49:09.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:49:09.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:49:09.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:49:09.543 [DEBUG] [Thread-157633] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:49:11.780 [DEBUG] [Thread-157635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:49:19.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:49:19.546 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:49:19.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:49:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 48, 45), 14.13, 38.35, 0.0, 23.64, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:49:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:48:45
2025-09-29T13:49:20.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:49:20.413 [DEBUG] [Thread-157636] [transport.py] [_log()] starting thread (client mode): 0x2b9b82b0
2025-09-29T13:49:20.413 [DEBUG] [Thread-157636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:20.432 [DEBUG] [Thread-157636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:49:20.432 [INFO] [Thread-157636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:49:20.435 [DEBUG] [Thread-157636] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:20.435 [DEBUG] [Thread-157636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:49:20.435 [DEBUG] [Thread-157636] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] Compression: none
2025-09-29T13:49:20.436 [DEBUG] [Thread-157636] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:20.450 [DEBUG] [Thread-157636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:20.450 [DEBUG] [Thread-157636] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:20.450 [DEBUG] [Thread-157636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:49:20.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:49:20.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:20.451 [DEBUG] [Thread-157636] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:20.451 [DEBUG] [Thread-157636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:20.451 [DEBUG] [Thread-157636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:20.451 [DEBUG] [Thread-157636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:49:20.451 [DEBUG] [Thread-157636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:20.461 [INFO] [Thread-157636] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:20.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:49:21.193 [DEBUG] [Thread-157636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:49:21.193 [DEBUG] [Thread-157636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:49:21.193 [DEBUG] [Thread-157636] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:49:21.234 [DEBUG] [Thread-157636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:49:21.235 [DEBUG] [Thread-157636] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:49:21.238 [DEBUG] [Thread-157636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:49:21.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:49:21.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:49:21.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:49:21.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:49:21.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:49:21.256 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:49:21.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:49:21.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:49:21.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:49:21.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.492083 -999.00  +14.50  19.69     44   +2.60 1 1 1 1 1   888    0 12.51 -0.75 ----- 18.9 19.7 141.0 23.6 23.6 -27.6 22.9 -27.4 24.0 -28.6 25.1 -28.3
2025-09-29T13:49:21.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:49:21.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:49:21.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.492083
2025-09-29T13:49:21.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:49:21.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:49:21.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:49:21.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:49:21.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:49:21.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:48:45', tmtdew=14.13, humidity=38.35, cloud=0.0, wind=23.64, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:48:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:49:21.259 [DEBUG] [Thread-157636] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:49:21.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:49:21.352 [DEBUG] [Thread-157639] [transport.py] [_log()] starting thread (client mode): 0x2b9bb0a0
2025-09-29T13:49:21.352 [DEBUG] [Thread-157639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:21.367 [DEBUG] [Thread-157639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:49:21.367 [INFO] [Thread-157639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:49:21.374 [DEBUG] [Thread-157639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] Compression: none
2025-09-29T13:49:21.375 [DEBUG] [Thread-157639] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:21.437 [DEBUG] [Thread-157639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:21.438 [DEBUG] [Thread-157639] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:21.438 [DEBUG] [Thread-157639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:49:21.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:49:21.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:21.494 [DEBUG] [Thread-157639] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:21.494 [DEBUG] [Thread-157639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:21.494 [DEBUG] [Thread-157639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:21.494 [DEBUG] [Thread-157639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:49:21.494 [DEBUG] [Thread-157639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:21.513 [INFO] [Thread-157639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:21.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:49:21.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:49:22.490 [DEBUG] [Thread-157639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:49:22.490 [DEBUG] [Thread-157639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:49:22.538 [DEBUG] [Thread-157639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:49:22.538 [DEBUG] [Thread-157639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:49:22.547 [DEBUG] [Thread-157639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:49:22.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:49:22.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:49:22.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:49:22.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:49:22.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:49:22.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:49:22.581 [DEBUG] [Thread-157639] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:49:26.821 [DEBUG] [Thread-157641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:49:32.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:49:32.584 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:49:32.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:49:33.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 49, 17), 14.08, 38.49, 0.0, 24.51, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:49:33.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:49:17
2025-09-29T13:49:33.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:49:33.423 [DEBUG] [Thread-157642] [transport.py] [_log()] starting thread (client mode): 0x2b90d3f0
2025-09-29T13:49:33.423 [DEBUG] [Thread-157642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:33.445 [DEBUG] [Thread-157642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:49:33.445 [INFO] [Thread-157642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:49:33.448 [DEBUG] [Thread-157642] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] Compression: none
2025-09-29T13:49:33.449 [DEBUG] [Thread-157642] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:33.466 [DEBUG] [Thread-157642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:33.466 [DEBUG] [Thread-157642] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:33.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:49:33.467 [DEBUG] [Thread-157642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:49:33.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:33.469 [DEBUG] [Thread-157642] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:33.469 [DEBUG] [Thread-157642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:33.469 [DEBUG] [Thread-157642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:33.469 [DEBUG] [Thread-157642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:49:33.469 [DEBUG] [Thread-157642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:33.494 [INFO] [Thread-157642] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:33.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:49:34.236 [DEBUG] [Thread-157642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:49:34.236 [DEBUG] [Thread-157642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:49:34.236 [DEBUG] [Thread-157642] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:49:34.277 [DEBUG] [Thread-157642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:49:34.277 [DEBUG] [Thread-157642] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:49:34.280 [DEBUG] [Thread-157642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:49:34.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:49:34.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:49:34.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:49:34.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:49:34.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:49:34.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:49:34.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:49:34.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:49:34.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:49:34.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.492083 -999.00  +14.50  19.69     44   +2.60 1 1 1 1 1   888    0 12.51 -0.75 ----- 18.9 19.7 141.0 23.6 23.6 -27.6 22.9 -27.4 24.0 -28.6 25.1 -28.3
2025-09-29T13:49:34.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:49:34.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:49:34.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.492083
2025-09-29T13:49:34.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:49:34.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:49:34.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:49:34.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:49:34.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:49:34.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:49:17', tmtdew=14.08, humidity=38.49, cloud=0.0, wind=24.51, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:48:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:49:34.305 [DEBUG] [Thread-157642] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:49:34.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:49:34.400 [DEBUG] [Thread-157645] [transport.py] [_log()] starting thread (client mode): 0x2b90e560
2025-09-29T13:49:34.400 [DEBUG] [Thread-157645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:34.414 [DEBUG] [Thread-157645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:49:34.415 [INFO] [Thread-157645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:49:34.422 [DEBUG] [Thread-157645] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:34.422 [DEBUG] [Thread-157645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] Compression: none
2025-09-29T13:49:34.423 [DEBUG] [Thread-157645] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:34.481 [DEBUG] [Thread-157645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:34.482 [DEBUG] [Thread-157645] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:34.482 [DEBUG] [Thread-157645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:49:34.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:49:34.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:34.537 [DEBUG] [Thread-157645] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:34.538 [DEBUG] [Thread-157645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:34.538 [DEBUG] [Thread-157645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:34.538 [DEBUG] [Thread-157645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:49:34.538 [DEBUG] [Thread-157645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:34.556 [INFO] [Thread-157645] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:34.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:49:34.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:49:35.534 [DEBUG] [Thread-157645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:49:35.534 [DEBUG] [Thread-157645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:49:35.581 [DEBUG] [Thread-157645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:49:35.581 [DEBUG] [Thread-157645] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:49:35.590 [DEBUG] [Thread-157645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:49:35.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:49:35.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:49:35.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:49:35.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:49:35.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:49:35.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:49:35.628 [DEBUG] [Thread-157645] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:49:41.851 [DEBUG] [Thread-157647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:49:42.977 [DEBUG] [Thread-157648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:49:45.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:49:45.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:49:45.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:49:46.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 49, 17), 14.08, 38.49, 0.0, 24.51, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:49:46.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:49:17
2025-09-29T13:49:46.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:49:46.468 [DEBUG] [Thread-157649] [transport.py] [_log()] starting thread (client mode): 0x2b90d000
2025-09-29T13:49:46.469 [DEBUG] [Thread-157649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:46.490 [DEBUG] [Thread-157649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:49:46.490 [INFO] [Thread-157649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] Compression: none
2025-09-29T13:49:46.494 [DEBUG] [Thread-157649] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:46.511 [DEBUG] [Thread-157649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:46.511 [DEBUG] [Thread-157649] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:46.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:49:46.512 [DEBUG] [Thread-157649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:49:46.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:46.514 [DEBUG] [Thread-157649] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:46.515 [DEBUG] [Thread-157649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:46.515 [DEBUG] [Thread-157649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:46.515 [DEBUG] [Thread-157649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:49:46.515 [DEBUG] [Thread-157649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:46.539 [INFO] [Thread-157649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:46.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:49:47.186 [DEBUG] [Thread-157649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:49:47.187 [DEBUG] [Thread-157649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:49:47.187 [DEBUG] [Thread-157649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:49:47.227 [DEBUG] [Thread-157649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:49:47.228 [DEBUG] [Thread-157649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:49:47.230 [DEBUG] [Thread-157649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:49:47.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:49:47.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:49:47.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:49:47.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:49:47.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:49:47.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:49:47.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:49:47.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:49:47.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:49:47.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.492430 -999.00  +14.30  18.37     44   +2.50 1 1 1 1 1   888    0 12.32 -5.23 ----- 14.7 18.4 142.4 28.0 23.6 -28.0 22.8 -27.4 23.9 -28.8 25.0 -28.5
2025-09-29T13:49:47.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:49:47.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:49:47.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.492430
2025-09-29T13:49:47.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:49:47.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:49:47.254 [DEBUG] [Thread-157649] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:49:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:49:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:49:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:49:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:49:17', tmtdew=14.08, humidity=38.49, cloud=0.0, wind=24.51, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:49:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:49:47.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:49:47.348 [DEBUG] [Thread-157652] [transport.py] [_log()] starting thread (client mode): 0x2b9bba30
2025-09-29T13:49:47.348 [DEBUG] [Thread-157652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:47.365 [DEBUG] [Thread-157652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:49:47.365 [INFO] [Thread-157652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:49:47.373 [DEBUG] [Thread-157652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:47.374 [DEBUG] [Thread-157652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:47.375 [DEBUG] [Thread-157652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:47.375 [DEBUG] [Thread-157652] [transport.py] [_log()] Compression: none
2025-09-29T13:49:47.375 [DEBUG] [Thread-157652] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:47.433 [DEBUG] [Thread-157652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:47.433 [DEBUG] [Thread-157652] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:47.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:49:47.434 [DEBUG] [Thread-157652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:49:47.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:47.489 [DEBUG] [Thread-157652] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:47.490 [DEBUG] [Thread-157652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:47.490 [DEBUG] [Thread-157652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:47.490 [DEBUG] [Thread-157652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:49:47.490 [DEBUG] [Thread-157652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:47.508 [INFO] [Thread-157652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:47.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:49:47.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:49:48.509 [DEBUG] [Thread-157652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:49:48.509 [DEBUG] [Thread-157652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:49:48.557 [DEBUG] [Thread-157652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:49:48.557 [DEBUG] [Thread-157652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:49:48.566 [DEBUG] [Thread-157652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:49:48.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:49:48.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:49:48.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:49:48.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:49:48.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:49:48.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:49:48.600 [DEBUG] [Thread-157652] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:49:56.893 [DEBUG] [Thread-157654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:49:58.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:49:58.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:49:58.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:49:58.905 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:49:58.906 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:49:59.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 49, 49), 13.93, 38.67, 0.0, 16.37, 14.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:49:59.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:49:49
2025-09-29T13:49:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:49:59.461 [DEBUG] [Thread-157655] [transport.py] [_log()] starting thread (client mode): 0x2b9bb3d0
2025-09-29T13:49:59.461 [DEBUG] [Thread-157655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:49:59.481 [DEBUG] [Thread-157655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:49:59.481 [INFO] [Thread-157655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] client lang: <none>
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] server lang: <none>
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] kex follows: False
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] Compression: none
2025-09-29T13:49:59.483 [DEBUG] [Thread-157655] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:49:59.496 [DEBUG] [Thread-157655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:49:59.496 [DEBUG] [Thread-157655] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:49:59.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:49:59.497 [DEBUG] [Thread-157655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:49:59.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:49:59.499 [DEBUG] [Thread-157655] [transport.py] [_log()] userauth is OK
2025-09-29T13:49:59.499 [DEBUG] [Thread-157655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:49:59.499 [DEBUG] [Thread-157655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:49:59.499 [DEBUG] [Thread-157655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:49:59.499 [DEBUG] [Thread-157655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:49:59.516 [INFO] [Thread-157655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:49:59.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:00.312 [DEBUG] [Thread-157655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:00.313 [DEBUG] [Thread-157655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:00.313 [DEBUG] [Thread-157655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:50:00.353 [DEBUG] [Thread-157655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:00.353 [DEBUG] [Thread-157655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:00.356 [DEBUG] [Thread-157655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:00.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:00.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:50:00.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:50:00.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:50:00.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:00.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:50:00.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:00.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:00.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:50:00.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.492430 -999.00  +14.30  18.37     44   +2.50 1 1 1 1 1   888    0 12.32 -5.23 ----- 14.7 18.4 142.4 28.0 23.6 -28.0 22.8 -27.4 23.9 -28.8 25.0 -28.5
2025-09-29T13:50:00.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:50:00.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:50:00.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.492430
2025-09-29T13:50:00.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:50:00.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:50:00.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:50:00.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:50:00.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:50:00.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:49:49', tmtdew=13.93, humidity=38.67, cloud=0.0, wind=16.37, temperature=14.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:49:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:50:00.378 [DEBUG] [Thread-157655] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:00.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:50:00.472 [DEBUG] [Thread-157658] [transport.py] [_log()] starting thread (client mode): 0x2b90d7e0
2025-09-29T13:50:00.472 [DEBUG] [Thread-157658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:00.486 [DEBUG] [Thread-157658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:50:00.486 [INFO] [Thread-157658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:50:00.494 [DEBUG] [Thread-157658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:00.494 [DEBUG] [Thread-157658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:50:00.494 [DEBUG] [Thread-157658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:00.495 [DEBUG] [Thread-157658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:00.496 [DEBUG] [Thread-157658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:00.496 [DEBUG] [Thread-157658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:00.496 [DEBUG] [Thread-157658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:00.496 [DEBUG] [Thread-157658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:00.496 [DEBUG] [Thread-157658] [transport.py] [_log()] Compression: none
2025-09-29T13:50:00.496 [DEBUG] [Thread-157658] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:00.554 [DEBUG] [Thread-157658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:00.554 [DEBUG] [Thread-157658] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:00.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:50:00.555 [DEBUG] [Thread-157658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:50:00.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:00.609 [DEBUG] [Thread-157658] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:00.610 [DEBUG] [Thread-157658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:00.610 [DEBUG] [Thread-157658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:00.610 [DEBUG] [Thread-157658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:50:00.610 [DEBUG] [Thread-157658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:00.631 [INFO] [Thread-157658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:00.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:50:00.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:01.602 [DEBUG] [Thread-157658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:01.603 [DEBUG] [Thread-157658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:01.649 [DEBUG] [Thread-157658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:01.650 [DEBUG] [Thread-157658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:01.658 [DEBUG] [Thread-157658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:01.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:01.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:50:01.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:50:01.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:01.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:01.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:01.689 [DEBUG] [Thread-157658] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:11.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:50:11.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:50:11.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:50:11.937 [DEBUG] [Thread-157660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:50:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 49, 49), 13.93, 38.67, 0.0, 16.37, 14.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:50:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:49:49
2025-09-29T13:50:12.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:50:12.533 [DEBUG] [Thread-157661] [transport.py] [_log()] starting thread (client mode): 0x2b9bad40
2025-09-29T13:50:12.533 [DEBUG] [Thread-157661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:12.558 [DEBUG] [Thread-157661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:50:12.558 [INFO] [Thread-157661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:50:12.561 [DEBUG] [Thread-157661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:12.562 [DEBUG] [Thread-157661] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] Compression: none
2025-09-29T13:50:12.563 [DEBUG] [Thread-157661] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:12.583 [DEBUG] [Thread-157661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:12.583 [DEBUG] [Thread-157661] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:12.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:50:12.584 [DEBUG] [Thread-157661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:50:12.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:12.586 [DEBUG] [Thread-157661] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:12.586 [DEBUG] [Thread-157661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:12.586 [DEBUG] [Thread-157661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:12.586 [DEBUG] [Thread-157661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:50:12.586 [DEBUG] [Thread-157661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:12.604 [INFO] [Thread-157661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:12.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:17.786 [DEBUG] [Thread-157661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:17.787 [DEBUG] [Thread-157661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:17.787 [DEBUG] [Thread-157661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:50:17.827 [DEBUG] [Thread-157661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:17.828 [DEBUG] [Thread-157661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:17.831 [DEBUG] [Thread-157661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:17.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:17.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:50:17.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:50:17.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:50:17.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:17.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:50:17.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:17.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:50:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.492430 -999.00  +14.30  18.37     44   +2.50 1 1 1 1 1   888    0 12.32 -5.23 ----- 14.7 18.4 142.4 28.0 23.6 -28.0 22.8 -27.4 23.9 -28.8 25.0 -28.5
2025-09-29T13:50:17.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:50:17.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:50:17.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.492430
2025-09-29T13:50:17.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:50:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:50:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:50:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:50:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:50:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:49:49', tmtdew=13.93, humidity=38.67, cloud=0.0, wind=16.37, temperature=14.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:49:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:50:17.960 [DEBUG] [Thread-157661] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:18.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:50:18.059 [DEBUG] [Thread-157664] [transport.py] [_log()] starting thread (client mode): 0x2b957be0
2025-09-29T13:50:18.059 [DEBUG] [Thread-157664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:18.073 [DEBUG] [Thread-157664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:50:18.073 [INFO] [Thread-157664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:50:18.080 [DEBUG] [Thread-157664] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:18.081 [DEBUG] [Thread-157664] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:18.082 [DEBUG] [Thread-157664] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:18.082 [DEBUG] [Thread-157664] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:18.082 [DEBUG] [Thread-157664] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:18.082 [DEBUG] [Thread-157664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:18.082 [DEBUG] [Thread-157664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:18.082 [DEBUG] [Thread-157664] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:18.082 [DEBUG] [Thread-157664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:18.082 [DEBUG] [Thread-157664] [transport.py] [_log()] Compression: none
2025-09-29T13:50:18.083 [DEBUG] [Thread-157664] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:18.137 [DEBUG] [Thread-157664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:18.137 [DEBUG] [Thread-157664] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:18.138 [DEBUG] [Thread-157664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:50:18.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:50:18.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:18.198 [DEBUG] [Thread-157664] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:18.198 [DEBUG] [Thread-157664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:18.198 [DEBUG] [Thread-157664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:18.198 [DEBUG] [Thread-157664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:50:18.198 [DEBUG] [Thread-157664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:18.217 [INFO] [Thread-157664] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:18.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:50:18.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:19.202 [DEBUG] [Thread-157664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:19.202 [DEBUG] [Thread-157664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:19.251 [DEBUG] [Thread-157664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:19.251 [DEBUG] [Thread-157664] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:19.260 [DEBUG] [Thread-157664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:19.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:19.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:50:19.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:50:19.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:19.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:19.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:19.297 [DEBUG] [Thread-157664] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:26.971 [DEBUG] [Thread-157666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:50:29.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:50:29.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:50:29.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:50:29.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 50, 21), 13.66, 39.37, 0.0, 18.21, 14.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:50:29.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:50:21
2025-09-29T13:50:29.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:50:30.142 [DEBUG] [Thread-157667] [transport.py] [_log()] starting thread (client mode): 0x2b90d690
2025-09-29T13:50:30.142 [DEBUG] [Thread-157667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:30.163 [DEBUG] [Thread-157667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:50:30.163 [INFO] [Thread-157667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:50:30.166 [DEBUG] [Thread-157667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:30.166 [DEBUG] [Thread-157667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:50:30.166 [DEBUG] [Thread-157667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:30.166 [DEBUG] [Thread-157667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:30.166 [DEBUG] [Thread-157667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] Compression: none
2025-09-29T13:50:30.167 [DEBUG] [Thread-157667] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:30.185 [DEBUG] [Thread-157667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:30.186 [DEBUG] [Thread-157667] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:30.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:50:30.187 [DEBUG] [Thread-157667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:50:30.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:30.189 [DEBUG] [Thread-157667] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:30.189 [DEBUG] [Thread-157667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:30.189 [DEBUG] [Thread-157667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:30.190 [DEBUG] [Thread-157667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:50:30.190 [DEBUG] [Thread-157667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:30.216 [INFO] [Thread-157667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:30.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:30.785 [DEBUG] [Thread-157667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:30.785 [DEBUG] [Thread-157667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:30.785 [DEBUG] [Thread-157667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:50:30.826 [DEBUG] [Thread-157667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:30.826 [DEBUG] [Thread-157667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:30.829 [DEBUG] [Thread-157667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:30.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:30.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:50:30.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:50:30.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:50:30.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:30.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:50:30.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:30.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:30.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:50:30.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.493124 -999.00  +14.70  13.16     45   +2.90 1 1 1 1 1   888    0 11.88 -13.53 ----- 17.7 13.2 158.5 19.8 23.6 -27.5 22.8 -28.1 24.0 -28.2 25.1 -28.6
2025-09-29T13:50:30.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:50:30.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:50:30.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.493124
2025-09-29T13:50:30.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:50:30.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:50:30.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:50:30.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:50:30.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:50:30.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:50:21', tmtdew=13.66, humidity=39.37, cloud=0.0, wind=18.21, temperature=14.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:50:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:50:30.853 [DEBUG] [Thread-157667] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:30.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:50:30.941 [DEBUG] [Thread-157670] [transport.py] [_log()] starting thread (client mode): 0x2b90fa60
2025-09-29T13:50:30.942 [DEBUG] [Thread-157670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:30.959 [DEBUG] [Thread-157670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:50:30.959 [INFO] [Thread-157670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:30.966 [DEBUG] [Thread-157670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:30.967 [DEBUG] [Thread-157670] [transport.py] [_log()] Compression: none
2025-09-29T13:50:30.967 [DEBUG] [Thread-157670] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:31.024 [DEBUG] [Thread-157670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:31.024 [DEBUG] [Thread-157670] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:31.024 [DEBUG] [Thread-157670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:50:31.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:50:31.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:31.081 [DEBUG] [Thread-157670] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:31.081 [DEBUG] [Thread-157670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:31.081 [DEBUG] [Thread-157670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:31.081 [DEBUG] [Thread-157670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:50:31.081 [DEBUG] [Thread-157670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:31.096 [INFO] [Thread-157670] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:31.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:50:31.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:32.142 [DEBUG] [Thread-157670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:32.142 [DEBUG] [Thread-157670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:32.190 [DEBUG] [Thread-157670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:32.190 [DEBUG] [Thread-157670] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:32.199 [DEBUG] [Thread-157670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:32.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:32.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:50:32.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:50:32.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:32.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:32.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:32.231 [DEBUG] [Thread-157670] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:42.000 [DEBUG] [Thread-157672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:50:42.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:50:42.224 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:50:42.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:50:42.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 50, 21), 13.66, 39.37, 0.0, 18.21, 14.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:50:42.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:50:21
2025-09-29T13:50:42.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:50:43.028 [DEBUG] [Thread-157673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:50:43.068 [DEBUG] [Thread-157674] [transport.py] [_log()] starting thread (client mode): 0x5f58c130
2025-09-29T13:50:43.068 [DEBUG] [Thread-157674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:43.089 [DEBUG] [Thread-157674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:50:43.089 [INFO] [Thread-157674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:50:43.092 [DEBUG] [Thread-157674] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:43.092 [DEBUG] [Thread-157674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:50:43.092 [DEBUG] [Thread-157674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:43.092 [DEBUG] [Thread-157674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:43.092 [DEBUG] [Thread-157674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:43.092 [DEBUG] [Thread-157674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] Compression: none
2025-09-29T13:50:43.093 [DEBUG] [Thread-157674] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:43.110 [DEBUG] [Thread-157674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:43.110 [DEBUG] [Thread-157674] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:43.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:50:43.111 [DEBUG] [Thread-157674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:50:43.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:43.112 [DEBUG] [Thread-157674] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:43.112 [DEBUG] [Thread-157674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:43.113 [DEBUG] [Thread-157674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:43.113 [DEBUG] [Thread-157674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:50:43.113 [DEBUG] [Thread-157674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:43.133 [INFO] [Thread-157674] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:43.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:45.064 [DEBUG] [Thread-157674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:45.064 [DEBUG] [Thread-157674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:45.064 [DEBUG] [Thread-157674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:50:45.105 [DEBUG] [Thread-157674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:45.105 [DEBUG] [Thread-157674] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:45.108 [DEBUG] [Thread-157674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:45.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:45.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:50:45.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:50:45.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:50:45.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:45.129 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:50:45.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:45.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:45.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:50:45.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.493124 -999.00  +14.70  13.16     45   +2.90 1 1 1 1 1   888    0 11.88 -13.53 ----- 17.7 13.2 158.5 19.8 23.6 -27.5 22.8 -28.1 24.0 -28.2 25.1 -28.6
2025-09-29T13:50:45.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:50:45.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:50:45.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.493124
2025-09-29T13:50:45.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:50:45.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:50:45.131 [DEBUG] [Thread-157674] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:45.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:50:45.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:50:45.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:50:45.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:50:21', tmtdew=13.66, humidity=39.37, cloud=0.0, wind=18.21, temperature=14.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:50:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:50:45.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:50:45.242 [DEBUG] [Thread-157677] [transport.py] [_log()] starting thread (client mode): 0x2b957370
2025-09-29T13:50:45.242 [DEBUG] [Thread-157677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:45.257 [DEBUG] [Thread-157677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:50:45.257 [INFO] [Thread-157677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:50:45.265 [DEBUG] [Thread-157677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:45.265 [DEBUG] [Thread-157677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:50:45.265 [DEBUG] [Thread-157677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:45.265 [DEBUG] [Thread-157677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:45.265 [DEBUG] [Thread-157677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:45.265 [DEBUG] [Thread-157677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] Compression: none
2025-09-29T13:50:45.266 [DEBUG] [Thread-157677] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:45.320 [DEBUG] [Thread-157677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:45.320 [DEBUG] [Thread-157677] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:45.321 [DEBUG] [Thread-157677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:50:45.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:50:45.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:45.378 [DEBUG] [Thread-157677] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:45.378 [DEBUG] [Thread-157677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:45.378 [DEBUG] [Thread-157677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:45.378 [DEBUG] [Thread-157677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:50:45.378 [DEBUG] [Thread-157677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:45.396 [INFO] [Thread-157677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:45.396 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:50:45.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:46.413 [DEBUG] [Thread-157677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:46.413 [DEBUG] [Thread-157677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:46.460 [DEBUG] [Thread-157677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:46.460 [DEBUG] [Thread-157677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:46.470 [DEBUG] [Thread-157677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:46.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:46.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:50:46.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:50:46.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:46.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:46.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:46.506 [DEBUG] [Thread-157677] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:56.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:50:56.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:50:56.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:50:57.044 [DEBUG] [Thread-157679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:50:57.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 50, 53), 13.63, 39.69, 0.0, 15.9, 14.33, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:50:57.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:50:53
2025-09-29T13:50:57.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:50:57.341 [DEBUG] [Thread-157680] [transport.py] [_log()] starting thread (client mode): 0x2b9bba30
2025-09-29T13:50:57.341 [DEBUG] [Thread-157680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:57.365 [DEBUG] [Thread-157680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:50:57.365 [INFO] [Thread-157680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:57.369 [DEBUG] [Thread-157680] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] Compression: none
2025-09-29T13:50:57.370 [DEBUG] [Thread-157680] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:57.393 [DEBUG] [Thread-157680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:57.393 [DEBUG] [Thread-157680] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:57.394 [DEBUG] [Thread-157680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:50:57.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:50:57.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:57.396 [DEBUG] [Thread-157680] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:57.396 [DEBUG] [Thread-157680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:57.396 [DEBUG] [Thread-157680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:57.396 [DEBUG] [Thread-157680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:50:57.396 [DEBUG] [Thread-157680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:57.420 [INFO] [Thread-157680] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:57.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:58.017 [DEBUG] [Thread-157680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:58.017 [DEBUG] [Thread-157680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:58.017 [DEBUG] [Thread-157680] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:50:58.058 [DEBUG] [Thread-157680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:58.058 [DEBUG] [Thread-157680] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:58.061 [DEBUG] [Thread-157680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:58.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:58.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:50:58.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:50:58.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:50:58.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:58.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:50:58.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:58.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:50:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.493472 -999.00  +14.70  16.75     44   +2.60 1 1 1 1 1   888    0 12.11 -15.01 ----- 14.8 16.8 149.2 19.2 23.5 -27.9 22.7 -28.1 23.8 -29.2 25.1 -28.4
2025-09-29T13:50:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:50:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:50:58.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.493472
2025-09-29T13:50:58.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:50:58.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:50:58.086 [DEBUG] [Thread-157680] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:50:58.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:50:58.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:50:58.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:50:58.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:50:53', tmtdew=13.63, humidity=39.69, cloud=0.0, wind=15.9, temperature=14.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:50:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:50:58.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:50:58.180 [DEBUG] [Thread-157683] [transport.py] [_log()] starting thread (client mode): 0x2b9b8ee0
2025-09-29T13:50:58.181 [DEBUG] [Thread-157683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:50:58.197 [DEBUG] [Thread-157683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:50:58.197 [INFO] [Thread-157683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:50:58.205 [DEBUG] [Thread-157683] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:50:58.205 [DEBUG] [Thread-157683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:50:58.205 [DEBUG] [Thread-157683] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:50:58.205 [DEBUG] [Thread-157683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] client lang: <none>
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] server lang: <none>
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] kex follows: False
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] Compression: none
2025-09-29T13:50:58.206 [DEBUG] [Thread-157683] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:50:58.262 [DEBUG] [Thread-157683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:50:58.262 [DEBUG] [Thread-157683] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:50:58.263 [DEBUG] [Thread-157683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:50:58.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:50:58.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:50:58.318 [DEBUG] [Thread-157683] [transport.py] [_log()] userauth is OK
2025-09-29T13:50:58.318 [DEBUG] [Thread-157683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:50:58.318 [DEBUG] [Thread-157683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:50:58.318 [DEBUG] [Thread-157683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:50:58.318 [DEBUG] [Thread-157683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:50:58.341 [INFO] [Thread-157683] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:50:58.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:50:58.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:50:59.046 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:50:59.047 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:50:59.310 [DEBUG] [Thread-157683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:50:59.310 [DEBUG] [Thread-157683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:50:59.358 [DEBUG] [Thread-157683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:50:59.358 [DEBUG] [Thread-157683] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:50:59.367 [DEBUG] [Thread-157683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:50:59.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:50:59.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:50:59.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:50:59.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:50:59.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:50:59.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:50:59.403 [DEBUG] [Thread-157683] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:09.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:51:09.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:51:09.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:51:10.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 50, 53), 13.63, 39.69, 0.0, 15.9, 14.33, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:51:10.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:50:53
2025-09-29T13:51:10.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:51:10.276 [DEBUG] [Thread-157685] [transport.py] [_log()] starting thread (client mode): 0x2b9bb3d0
2025-09-29T13:51:10.277 [DEBUG] [Thread-157685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:51:10.297 [DEBUG] [Thread-157685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:51:10.297 [INFO] [Thread-157685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] client lang: <none>
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] server lang: <none>
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] kex follows: False
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] Compression: none
2025-09-29T13:51:10.299 [DEBUG] [Thread-157685] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:51:10.311 [DEBUG] [Thread-157685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:51:10.311 [DEBUG] [Thread-157685] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:51:10.312 [DEBUG] [Thread-157685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:51:10.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:51:10.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:51:10.312 [DEBUG] [Thread-157685] [transport.py] [_log()] userauth is OK
2025-09-29T13:51:10.312 [DEBUG] [Thread-157685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:51:10.312 [DEBUG] [Thread-157685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:51:10.312 [DEBUG] [Thread-157685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:51:10.312 [DEBUG] [Thread-157685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:51:10.321 [INFO] [Thread-157685] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:51:10.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:51:11.058 [DEBUG] [Thread-157685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:51:11.059 [DEBUG] [Thread-157685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:51:11.059 [DEBUG] [Thread-157685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:51:11.100 [DEBUG] [Thread-157685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:51:11.100 [DEBUG] [Thread-157685] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:51:11.102 [DEBUG] [Thread-157685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:51:11.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:51:11.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:51:11.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:51:11.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:51:11.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:51:11.117 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:51:11.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.493472 -999.00  +14.70  16.75     44   +2.60 1 1 1 1 1   888    0 12.11 -15.01 ----- 14.8 16.8 149.2 19.2 23.5 -27.9 22.7 -28.1 23.8 -29.2 25.1 -28.4
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.493472
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:51:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:50:53', tmtdew=13.63, humidity=39.69, cloud=0.0, wind=15.9, temperature=14.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:50:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:51:11.118 [DEBUG] [Thread-157685] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:11.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:51:11.202 [DEBUG] [Thread-157688] [transport.py] [_log()] starting thread (client mode): 0x2b90c9a0
2025-09-29T13:51:11.203 [DEBUG] [Thread-157688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:51:11.217 [DEBUG] [Thread-157688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:51:11.217 [INFO] [Thread-157688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:51:11.224 [DEBUG] [Thread-157688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:51:11.224 [DEBUG] [Thread-157688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:51:11.224 [DEBUG] [Thread-157688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:51:11.224 [DEBUG] [Thread-157688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:11.224 [DEBUG] [Thread-157688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:11.224 [DEBUG] [Thread-157688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] client lang: <none>
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] server lang: <none>
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] kex follows: False
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] Compression: none
2025-09-29T13:51:11.225 [DEBUG] [Thread-157688] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:51:11.280 [DEBUG] [Thread-157688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:51:11.280 [DEBUG] [Thread-157688] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:51:11.280 [DEBUG] [Thread-157688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:51:11.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:51:11.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:51:11.338 [DEBUG] [Thread-157688] [transport.py] [_log()] userauth is OK
2025-09-29T13:51:11.338 [DEBUG] [Thread-157688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:51:11.338 [DEBUG] [Thread-157688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:51:11.338 [DEBUG] [Thread-157688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:51:11.338 [DEBUG] [Thread-157688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:51:11.351 [INFO] [Thread-157688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:51:11.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:51:11.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:51:12.071 [DEBUG] [Thread-157690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:51:12.318 [DEBUG] [Thread-157688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:51:12.319 [DEBUG] [Thread-157688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:51:12.366 [DEBUG] [Thread-157688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:51:12.366 [DEBUG] [Thread-157688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:51:12.375 [DEBUG] [Thread-157688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:51:12.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:51:12.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:51:12.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:51:12.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:51:12.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:51:12.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:51:12.406 [DEBUG] [Thread-157688] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:22.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:51:22.401 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:51:22.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:51:22.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 50, 53), 13.63, 39.69, 0.0, 15.9, 14.33, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:51:22.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:50:53
2025-09-29T13:51:23.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:51:23.236 [DEBUG] [Thread-157691] [transport.py] [_log()] starting thread (client mode): 0x2b90d840
2025-09-29T13:51:23.236 [DEBUG] [Thread-157691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:51:23.256 [DEBUG] [Thread-157691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:51:23.257 [INFO] [Thread-157691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:51:23.260 [DEBUG] [Thread-157691] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:51:23.260 [DEBUG] [Thread-157691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:51:23.260 [DEBUG] [Thread-157691] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:51:23.260 [DEBUG] [Thread-157691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:23.260 [DEBUG] [Thread-157691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:23.260 [DEBUG] [Thread-157691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:23.260 [DEBUG] [Thread-157691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:23.260 [DEBUG] [Thread-157691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] client lang: <none>
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] server lang: <none>
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] kex follows: False
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] Compression: none
2025-09-29T13:51:23.261 [DEBUG] [Thread-157691] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:51:23.283 [DEBUG] [Thread-157691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:51:23.283 [DEBUG] [Thread-157691] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:51:23.284 [DEBUG] [Thread-157691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:51:23.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:51:23.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:51:23.286 [DEBUG] [Thread-157691] [transport.py] [_log()] userauth is OK
2025-09-29T13:51:23.286 [DEBUG] [Thread-157691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:51:23.286 [DEBUG] [Thread-157691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:51:23.286 [DEBUG] [Thread-157691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:51:23.286 [DEBUG] [Thread-157691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:51:23.309 [INFO] [Thread-157691] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:51:23.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:51:24.034 [DEBUG] [Thread-157691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:51:24.035 [DEBUG] [Thread-157691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:51:24.035 [DEBUG] [Thread-157691] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:51:24.075 [DEBUG] [Thread-157691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:51:24.075 [DEBUG] [Thread-157691] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:51:24.078 [DEBUG] [Thread-157691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:51:24.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:51:24.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:51:24.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:51:24.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:51:24.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:51:24.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:51:24.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:51:24.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:51:24.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:51:24.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.493472 -999.00  +14.70  16.75     44   +2.60 1 1 1 1 1   888    0 12.11 -15.01 ----- 14.8 16.8 149.2 19.2 23.5 -27.9 22.7 -28.1 23.8 -29.2 25.1 -28.4
2025-09-29T13:51:24.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:51:24.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:51:24.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.493472
2025-09-29T13:51:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:51:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:51:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:51:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:51:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:51:24.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:50:53', tmtdew=13.63, humidity=39.69, cloud=0.0, wind=15.9, temperature=14.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:50:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:51:24.103 [DEBUG] [Thread-157691] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:24.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:51:24.197 [DEBUG] [Thread-157694] [transport.py] [_log()] starting thread (client mode): 0x2b90eda0
2025-09-29T13:51:24.197 [DEBUG] [Thread-157694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:51:24.212 [DEBUG] [Thread-157694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:51:24.212 [INFO] [Thread-157694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:51:24.219 [DEBUG] [Thread-157694] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:51:24.219 [DEBUG] [Thread-157694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:51:24.219 [DEBUG] [Thread-157694] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] client lang: <none>
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] server lang: <none>
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] kex follows: False
2025-09-29T13:51:24.220 [DEBUG] [Thread-157694] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:51:24.221 [DEBUG] [Thread-157694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:51:24.221 [DEBUG] [Thread-157694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:51:24.221 [DEBUG] [Thread-157694] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:51:24.221 [DEBUG] [Thread-157694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:51:24.221 [DEBUG] [Thread-157694] [transport.py] [_log()] Compression: none
2025-09-29T13:51:24.221 [DEBUG] [Thread-157694] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:51:24.277 [DEBUG] [Thread-157694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:51:24.278 [DEBUG] [Thread-157694] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:51:24.278 [DEBUG] [Thread-157694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:51:24.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:51:24.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:51:24.334 [DEBUG] [Thread-157694] [transport.py] [_log()] userauth is OK
2025-09-29T13:51:24.334 [DEBUG] [Thread-157694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:51:24.334 [DEBUG] [Thread-157694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:51:24.334 [DEBUG] [Thread-157694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:51:24.334 [DEBUG] [Thread-157694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:51:24.353 [INFO] [Thread-157694] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:51:24.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:51:24.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:51:25.326 [DEBUG] [Thread-157694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:51:25.326 [DEBUG] [Thread-157694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:51:25.375 [DEBUG] [Thread-157694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:51:25.375 [DEBUG] [Thread-157694] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:51:25.384 [DEBUG] [Thread-157694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:51:25.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:51:25.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:51:25.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:51:25.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:51:25.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:51:25.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:51:25.427 [DEBUG] [Thread-157694] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:27.098 [DEBUG] [Thread-157696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:51:35.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:51:35.426 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:51:35.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:51:35.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 51, 25), 13.52, 39.95, 0.0, 9.78, 14.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:51:35.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:51:25
2025-09-29T13:51:36.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:51:36.254 [DEBUG] [Thread-157697] [transport.py] [_log()] starting thread (client mode): 0x2b90e230
2025-09-29T13:51:36.254 [DEBUG] [Thread-157697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:51:36.273 [DEBUG] [Thread-157697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:51:36.274 [INFO] [Thread-157697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:51:36.277 [DEBUG] [Thread-157697] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:51:36.277 [DEBUG] [Thread-157697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:51:36.277 [DEBUG] [Thread-157697] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:51:36.277 [DEBUG] [Thread-157697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] client lang: <none>
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] server lang: <none>
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] kex follows: False
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] Compression: none
2025-09-29T13:51:36.278 [DEBUG] [Thread-157697] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:51:36.297 [DEBUG] [Thread-157697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:51:36.297 [DEBUG] [Thread-157697] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:51:36.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:51:36.298 [DEBUG] [Thread-157697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:51:36.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:51:36.300 [DEBUG] [Thread-157697] [transport.py] [_log()] userauth is OK
2025-09-29T13:51:36.300 [DEBUG] [Thread-157697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:51:36.300 [DEBUG] [Thread-157697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:51:36.300 [DEBUG] [Thread-157697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:51:36.300 [DEBUG] [Thread-157697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:51:36.322 [INFO] [Thread-157697] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:51:36.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:51:36.943 [DEBUG] [Thread-157697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:51:36.943 [DEBUG] [Thread-157697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:51:36.943 [DEBUG] [Thread-157697] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:51:36.984 [DEBUG] [Thread-157697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:51:36.984 [DEBUG] [Thread-157697] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:51:36.987 [DEBUG] [Thread-157697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:51:36.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:51:36.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:51:36.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:51:37.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:51:37.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:51:37.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:51:37.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:51:37.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:51:37.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:51:37.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.493819 -999.00  +14.50  10.34     44   +2.60 1 1 1 1 1   888    0 12.14 -15.70 ----- 14.7 10.3 127.4 15.5 23.6 -26.9 22.7 -26.8 23.9 -26.9 25.1 -29.0
2025-09-29T13:51:37.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:51:37.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:51:37.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.493819
2025-09-29T13:51:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:51:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:51:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:51:37.009 [DEBUG] [Thread-157697] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:51:37.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:51:37.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:51:25', tmtdew=13.52, humidity=39.95, cloud=0.0, wind=9.78, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:51:05.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:51:37.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:51:37.109 [DEBUG] [Thread-157700] [transport.py] [_log()] starting thread (client mode): 0x2b90c970
2025-09-29T13:51:37.109 [DEBUG] [Thread-157700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:51:37.124 [DEBUG] [Thread-157700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:51:37.124 [INFO] [Thread-157700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:51:37.132 [DEBUG] [Thread-157700] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:51:37.132 [DEBUG] [Thread-157700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:51:37.132 [DEBUG] [Thread-157700] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] client lang: <none>
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] server lang: <none>
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] kex follows: False
2025-09-29T13:51:37.133 [DEBUG] [Thread-157700] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:51:37.134 [DEBUG] [Thread-157700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:51:37.134 [DEBUG] [Thread-157700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:51:37.134 [DEBUG] [Thread-157700] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:51:37.134 [DEBUG] [Thread-157700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:51:37.134 [DEBUG] [Thread-157700] [transport.py] [_log()] Compression: none
2025-09-29T13:51:37.134 [DEBUG] [Thread-157700] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:51:37.190 [DEBUG] [Thread-157700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:51:37.190 [DEBUG] [Thread-157700] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:51:37.191 [DEBUG] [Thread-157700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:51:37.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:51:37.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:51:37.246 [DEBUG] [Thread-157700] [transport.py] [_log()] userauth is OK
2025-09-29T13:51:37.246 [DEBUG] [Thread-157700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:51:37.246 [DEBUG] [Thread-157700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:51:37.246 [DEBUG] [Thread-157700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:51:37.246 [DEBUG] [Thread-157700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:51:37.265 [INFO] [Thread-157700] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:51:37.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:51:37.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:51:38.233 [DEBUG] [Thread-157700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:51:38.234 [DEBUG] [Thread-157700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:51:38.281 [DEBUG] [Thread-157700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:51:38.281 [DEBUG] [Thread-157700] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:51:38.290 [DEBUG] [Thread-157700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:51:38.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:51:38.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:51:38.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:51:38.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:51:38.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:51:38.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:51:38.324 [DEBUG] [Thread-157700] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:42.126 [DEBUG] [Thread-157702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:51:43.088 [DEBUG] [Thread-157703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:51:48.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:51:48.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:51:48.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:51:48.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 51, 25), 13.52, 39.95, 0.0, 9.78, 14.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:51:48.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:51:25
2025-09-29T13:51:49.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:51:49.171 [DEBUG] [Thread-157704] [transport.py] [_log()] starting thread (client mode): 0x2b90e260
2025-09-29T13:51:49.172 [DEBUG] [Thread-157704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:51:49.193 [DEBUG] [Thread-157704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:51:49.194 [INFO] [Thread-157704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] client lang: <none>
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] server lang: <none>
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] kex follows: False
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] Compression: none
2025-09-29T13:51:49.197 [DEBUG] [Thread-157704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:51:49.213 [DEBUG] [Thread-157704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:51:49.213 [DEBUG] [Thread-157704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:51:49.213 [DEBUG] [Thread-157704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:51:49.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:51:49.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:51:49.214 [DEBUG] [Thread-157704] [transport.py] [_log()] userauth is OK
2025-09-29T13:51:49.214 [DEBUG] [Thread-157704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:51:49.214 [DEBUG] [Thread-157704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:51:49.214 [DEBUG] [Thread-157704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:51:49.214 [DEBUG] [Thread-157704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:51:49.224 [INFO] [Thread-157704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:51:49.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:51:49.968 [DEBUG] [Thread-157704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:51:49.968 [DEBUG] [Thread-157704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:51:49.968 [DEBUG] [Thread-157704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:51:50.009 [DEBUG] [Thread-157704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:51:50.009 [DEBUG] [Thread-157704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:51:50.010 [DEBUG] [Thread-157704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:51:50.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:51:50.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:51:50.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:51:50.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:51:50.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:51:50.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:51:50.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:51:50.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:51:50.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:51:50.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.493819 -999.00  +14.50  10.34     44   +2.60 1 1 1 1 1   888    0 12.14 -15.70 ----- 14.7 10.3 127.4 15.5 23.6 -26.9 22.7 -26.8 23.9 -26.9 25.1 -29.0
2025-09-29T13:51:50.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:51:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:51:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.493819
2025-09-29T13:51:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:51:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:51:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:51:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:51:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:51:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:51:25', tmtdew=13.52, humidity=39.95, cloud=0.0, wind=9.78, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:51:05.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:51:50.027 [DEBUG] [Thread-157704] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:50.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:51:50.112 [DEBUG] [Thread-157707] [transport.py] [_log()] starting thread (client mode): 0x2b90f130
2025-09-29T13:51:50.112 [DEBUG] [Thread-157707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:51:50.128 [DEBUG] [Thread-157707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:51:50.128 [INFO] [Thread-157707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] client lang: <none>
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] server lang: <none>
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] kex follows: False
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:51:50.135 [DEBUG] [Thread-157707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:51:50.136 [DEBUG] [Thread-157707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:51:50.136 [DEBUG] [Thread-157707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:51:50.136 [DEBUG] [Thread-157707] [transport.py] [_log()] Compression: none
2025-09-29T13:51:50.136 [DEBUG] [Thread-157707] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:51:50.197 [DEBUG] [Thread-157707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:51:50.197 [DEBUG] [Thread-157707] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:51:50.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:51:50.198 [DEBUG] [Thread-157707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:51:50.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:51:50.254 [DEBUG] [Thread-157707] [transport.py] [_log()] userauth is OK
2025-09-29T13:51:50.254 [DEBUG] [Thread-157707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:51:50.254 [DEBUG] [Thread-157707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:51:50.254 [DEBUG] [Thread-157707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:51:50.254 [DEBUG] [Thread-157707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:51:50.268 [INFO] [Thread-157707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:51:50.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:51:50.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:51:51.206 [DEBUG] [Thread-157707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:51:51.206 [DEBUG] [Thread-157707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:51:51.254 [DEBUG] [Thread-157707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:51:51.254 [DEBUG] [Thread-157707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:51:51.263 [DEBUG] [Thread-157707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:51:51.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:51:51.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:51:51.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:51:51.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:51:51.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:51:51.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:51:51.295 [DEBUG] [Thread-157707] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:51:57.171 [DEBUG] [Thread-157709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:51:59.188 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:51:59.189 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:52:01.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:52:01.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:52:01.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:52:01.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 51, 57), 13.38, 40.17, 0.0, 9.6, 14.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:52:01.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:51:57
2025-09-29T13:52:01.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:52:02.140 [DEBUG] [Thread-157710] [transport.py] [_log()] starting thread (client mode): 0x2b90fe80
2025-09-29T13:52:02.140 [DEBUG] [Thread-157710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:02.155 [DEBUG] [Thread-157710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:52:02.155 [INFO] [Thread-157710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:02.159 [DEBUG] [Thread-157710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:02.160 [DEBUG] [Thread-157710] [transport.py] [_log()] Compression: none
2025-09-29T13:52:02.160 [DEBUG] [Thread-157710] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:02.177 [DEBUG] [Thread-157710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:02.178 [DEBUG] [Thread-157710] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:02.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:52:02.179 [DEBUG] [Thread-157710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:52:02.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:02.181 [DEBUG] [Thread-157710] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:02.181 [DEBUG] [Thread-157710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:02.181 [DEBUG] [Thread-157710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:02.181 [DEBUG] [Thread-157710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:52:02.181 [DEBUG] [Thread-157710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:02.200 [INFO] [Thread-157710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:02.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:02.828 [DEBUG] [Thread-157710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:02.828 [DEBUG] [Thread-157710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:02.828 [DEBUG] [Thread-157710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:52:02.869 [DEBUG] [Thread-157710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:02.869 [DEBUG] [Thread-157710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:02.873 [DEBUG] [Thread-157710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:02.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:02.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:52:02.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:52:02.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:52:02.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:02.903 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:52:02.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:02.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:02.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:52:02.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.494166 -999.00  +14.80  15.70     44   +2.80 1 1 1 1 1   888    0 11.78 -15.77 ----- 11.7 15.7 163.8 24.1 23.5 -27.2 22.6 -26.6 23.8 -27.1 25.0 -27.9
2025-09-29T13:52:02.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:52:02.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:52:02.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.494166
2025-09-29T13:52:02.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:52:02.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:52:02.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:52:02.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:52:02.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:52:02.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:51:57', tmtdew=13.38, humidity=40.17, cloud=0.0, wind=9.6, temperature=14.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:51:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:52:02.905 [DEBUG] [Thread-157710] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:02.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:52:03.000 [DEBUG] [Thread-157713] [transport.py] [_log()] starting thread (client mode): 0x2b90faf0
2025-09-29T13:52:03.000 [DEBUG] [Thread-157713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:03.016 [DEBUG] [Thread-157713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:52:03.016 [INFO] [Thread-157713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:03.025 [DEBUG] [Thread-157713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:03.026 [DEBUG] [Thread-157713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:03.026 [DEBUG] [Thread-157713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:03.026 [DEBUG] [Thread-157713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:03.026 [DEBUG] [Thread-157713] [transport.py] [_log()] Compression: none
2025-09-29T13:52:03.026 [DEBUG] [Thread-157713] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:03.087 [DEBUG] [Thread-157713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:03.088 [DEBUG] [Thread-157713] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:03.088 [DEBUG] [Thread-157713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:52:03.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:52:03.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:03.149 [DEBUG] [Thread-157713] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:03.149 [DEBUG] [Thread-157713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:03.149 [DEBUG] [Thread-157713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:03.149 [DEBUG] [Thread-157713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:52:03.150 [DEBUG] [Thread-157713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:03.169 [INFO] [Thread-157713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:03.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:52:03.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:04.186 [DEBUG] [Thread-157713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:04.186 [DEBUG] [Thread-157713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:04.234 [DEBUG] [Thread-157713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:04.234 [DEBUG] [Thread-157713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:04.244 [DEBUG] [Thread-157713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:04.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:04.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:52:04.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:52:04.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:04.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:04.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:04.279 [DEBUG] [Thread-157713] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:12.202 [DEBUG] [Thread-157715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:52:14.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:52:14.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:52:14.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:52:14.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 51, 57), 13.38, 40.17, 0.0, 9.6, 14.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:52:14.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:51:57
2025-09-29T13:52:14.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:52:15.090 [DEBUG] [Thread-157716] [transport.py] [_log()] starting thread (client mode): 0x2b956c20
2025-09-29T13:52:15.091 [DEBUG] [Thread-157716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:15.112 [DEBUG] [Thread-157716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:52:15.112 [INFO] [Thread-157716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:15.115 [DEBUG] [Thread-157716] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:15.116 [DEBUG] [Thread-157716] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:15.116 [DEBUG] [Thread-157716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:15.116 [DEBUG] [Thread-157716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:15.116 [DEBUG] [Thread-157716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:15.116 [DEBUG] [Thread-157716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:15.116 [DEBUG] [Thread-157716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:15.116 [DEBUG] [Thread-157716] [transport.py] [_log()] Compression: none
2025-09-29T13:52:15.116 [DEBUG] [Thread-157716] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:15.134 [DEBUG] [Thread-157716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:15.135 [DEBUG] [Thread-157716] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:15.136 [DEBUG] [Thread-157716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:52:15.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:52:15.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:15.138 [DEBUG] [Thread-157716] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:15.139 [DEBUG] [Thread-157716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:15.139 [DEBUG] [Thread-157716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:15.139 [DEBUG] [Thread-157716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:52:15.139 [DEBUG] [Thread-157716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:15.175 [INFO] [Thread-157716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:15.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:15.926 [DEBUG] [Thread-157716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:15.926 [DEBUG] [Thread-157716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:15.927 [DEBUG] [Thread-157716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:52:15.967 [DEBUG] [Thread-157716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:15.967 [DEBUG] [Thread-157716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:15.972 [DEBUG] [Thread-157716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:15.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:15.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:52:15.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:52:15.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:52:15.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:15.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:52:15.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:15.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:15.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:52:15.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.494166 -999.00  +14.80  15.70     44   +2.80 1 1 1 1 1   888    0 11.78 -15.77 ----- 11.7 15.7 163.8 24.1 23.5 -27.2 22.6 -26.6 23.8 -27.1 25.0 -27.9
2025-09-29T13:52:15.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:52:15.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:52:15.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.494166
2025-09-29T13:52:15.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:52:15.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:52:15.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:52:15.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:52:15.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:52:15.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:51:57', tmtdew=13.38, humidity=40.17, cloud=0.0, wind=9.6, temperature=14.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:51:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:52:15.992 [DEBUG] [Thread-157716] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:16.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:52:16.087 [DEBUG] [Thread-157719] [transport.py] [_log()] starting thread (client mode): 0x2b954f70
2025-09-29T13:52:16.088 [DEBUG] [Thread-157719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:16.102 [DEBUG] [Thread-157719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:52:16.102 [INFO] [Thread-157719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:16.110 [DEBUG] [Thread-157719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:16.111 [DEBUG] [Thread-157719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:16.111 [DEBUG] [Thread-157719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:16.111 [DEBUG] [Thread-157719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:16.111 [DEBUG] [Thread-157719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:16.111 [DEBUG] [Thread-157719] [transport.py] [_log()] Compression: none
2025-09-29T13:52:16.111 [DEBUG] [Thread-157719] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:16.169 [DEBUG] [Thread-157719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:16.170 [DEBUG] [Thread-157719] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:16.170 [DEBUG] [Thread-157719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:52:16.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:52:16.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:16.226 [DEBUG] [Thread-157719] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:16.226 [DEBUG] [Thread-157719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:16.226 [DEBUG] [Thread-157719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:16.226 [DEBUG] [Thread-157719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:52:16.226 [DEBUG] [Thread-157719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:16.245 [INFO] [Thread-157719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:16.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:52:16.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:17.236 [DEBUG] [Thread-157719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:17.236 [DEBUG] [Thread-157719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:17.283 [DEBUG] [Thread-157719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:17.284 [DEBUG] [Thread-157719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:17.292 [DEBUG] [Thread-157719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:17.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:17.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:52:17.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:52:17.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:17.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:17.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:17.329 [DEBUG] [Thread-157719] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:27.245 [DEBUG] [Thread-157721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:52:27.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:52:27.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:52:27.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:52:27.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 51, 57), 13.38, 40.17, 0.0, 9.6, 14.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:52:27.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:51:57
2025-09-29T13:52:28.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:52:28.182 [DEBUG] [Thread-157722] [transport.py] [_log()] starting thread (client mode): 0x2b957070
2025-09-29T13:52:28.182 [DEBUG] [Thread-157722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:28.202 [DEBUG] [Thread-157722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:52:28.202 [INFO] [Thread-157722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:52:28.205 [DEBUG] [Thread-157722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:28.205 [DEBUG] [Thread-157722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:52:28.205 [DEBUG] [Thread-157722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:28.205 [DEBUG] [Thread-157722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:28.205 [DEBUG] [Thread-157722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:28.205 [DEBUG] [Thread-157722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:28.205 [DEBUG] [Thread-157722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] Compression: none
2025-09-29T13:52:28.206 [DEBUG] [Thread-157722] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:28.223 [DEBUG] [Thread-157722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:28.223 [DEBUG] [Thread-157722] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:28.223 [DEBUG] [Thread-157722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:52:28.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:52:28.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:28.224 [DEBUG] [Thread-157722] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:28.224 [DEBUG] [Thread-157722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:28.224 [DEBUG] [Thread-157722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:28.224 [DEBUG] [Thread-157722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:52:28.224 [DEBUG] [Thread-157722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:28.250 [INFO] [Thread-157722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:28.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:29.040 [DEBUG] [Thread-157722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:29.040 [DEBUG] [Thread-157722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:29.040 [DEBUG] [Thread-157722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:52:29.081 [DEBUG] [Thread-157722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:29.081 [DEBUG] [Thread-157722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:29.083 [DEBUG] [Thread-157722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:29.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:29.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:52:29.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:52:29.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:52:29.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:29.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:52:29.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:29.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:29.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:52:29.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.494166 -999.00  +14.80  15.70     44   +2.80 1 1 1 1 1   888    0 11.78 -15.77 ----- 11.7 15.7 163.8 24.1 23.5 -27.2 22.6 -26.6 23.8 -27.1 25.0 -27.9
2025-09-29T13:52:29.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:52:29.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:52:29.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.494166
2025-09-29T13:52:29.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:52:29.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:52:29.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:52:29.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:52:29.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:52:29.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:51:57', tmtdew=13.38, humidity=40.17, cloud=0.0, wind=9.6, temperature=14.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:51:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:52:29.098 [DEBUG] [Thread-157722] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:29.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:52:29.186 [DEBUG] [Thread-157725] [transport.py] [_log()] starting thread (client mode): 0x2b9575b0
2025-09-29T13:52:29.186 [DEBUG] [Thread-157725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:29.201 [DEBUG] [Thread-157725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:52:29.201 [INFO] [Thread-157725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:29.208 [DEBUG] [Thread-157725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] Compression: none
2025-09-29T13:52:29.209 [DEBUG] [Thread-157725] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:29.265 [DEBUG] [Thread-157725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:29.265 [DEBUG] [Thread-157725] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:29.265 [DEBUG] [Thread-157725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:52:29.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:52:29.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:29.322 [DEBUG] [Thread-157725] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:29.322 [DEBUG] [Thread-157725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:29.322 [DEBUG] [Thread-157725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:29.322 [DEBUG] [Thread-157725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:52:29.322 [DEBUG] [Thread-157725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:29.336 [INFO] [Thread-157725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:29.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:52:29.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:30.324 [DEBUG] [Thread-157725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:30.324 [DEBUG] [Thread-157725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:30.372 [DEBUG] [Thread-157725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:30.372 [DEBUG] [Thread-157725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:30.380 [DEBUG] [Thread-157725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:30.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:30.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:52:30.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:52:30.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:30.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:30.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:30.411 [DEBUG] [Thread-157725] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:40.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:52:40.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:52:40.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:52:40.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 52, 29), 13.51, 39.87, 0.0, 14.66, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:52:40.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:52:29
2025-09-29T13:52:41.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:52:41.243 [DEBUG] [Thread-157727] [transport.py] [_log()] starting thread (client mode): 0x2b90f7c0
2025-09-29T13:52:41.243 [DEBUG] [Thread-157727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:41.264 [DEBUG] [Thread-157727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:52:41.264 [INFO] [Thread-157727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] Compression: none
2025-09-29T13:52:41.268 [DEBUG] [Thread-157727] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:41.286 [DEBUG] [Thread-157727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:41.287 [DEBUG] [Thread-157727] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:41.288 [DEBUG] [Thread-157727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:52:41.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:52:41.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:41.290 [DEBUG] [Thread-157727] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:41.290 [DEBUG] [Thread-157727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:41.290 [DEBUG] [Thread-157727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:41.290 [DEBUG] [Thread-157727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:52:41.290 [DEBUG] [Thread-157727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:41.308 [INFO] [Thread-157727] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:41.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:41.899 [DEBUG] [Thread-157727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:41.899 [DEBUG] [Thread-157727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:41.899 [DEBUG] [Thread-157727] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:52:41.940 [DEBUG] [Thread-157727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:41.940 [DEBUG] [Thread-157727] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:41.943 [DEBUG] [Thread-157727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:41.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:41.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:52:41.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:52:41.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:52:41.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:41.966 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:52:41.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:41.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:52:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.494513 -999.00  +15.10  15.11     43   +2.70 1 1 1 1 1   888    0 11.81 -14.52 ----- 16.4 15.1 167.4 19.7 23.6 -27.4 22.4 -26.8 23.8 -27.7 25.1 -28.1
2025-09-29T13:52:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:52:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:52:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.494513
2025-09-29T13:52:41.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:52:41.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:52:41.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:52:41.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:52:41.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:52:41.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:52:29', tmtdew=13.51, humidity=39.87, cloud=0.0, wind=14.66, temperature=14.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:52:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:52:41.969 [DEBUG] [Thread-157727] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:42.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:52:42.064 [DEBUG] [Thread-157730] [transport.py] [_log()] starting thread (client mode): 0x2b90cf40
2025-09-29T13:52:42.065 [DEBUG] [Thread-157730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:42.079 [DEBUG] [Thread-157730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:52:42.079 [INFO] [Thread-157730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:42.087 [DEBUG] [Thread-157730] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:42.088 [DEBUG] [Thread-157730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:42.088 [DEBUG] [Thread-157730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:42.088 [DEBUG] [Thread-157730] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:42.088 [DEBUG] [Thread-157730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:42.088 [DEBUG] [Thread-157730] [transport.py] [_log()] Compression: none
2025-09-29T13:52:42.088 [DEBUG] [Thread-157730] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:42.146 [DEBUG] [Thread-157730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:42.146 [DEBUG] [Thread-157730] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:42.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:52:42.147 [DEBUG] [Thread-157730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:52:42.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:42.202 [DEBUG] [Thread-157730] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:42.202 [DEBUG] [Thread-157730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:42.202 [DEBUG] [Thread-157730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:42.202 [DEBUG] [Thread-157730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:52:42.202 [DEBUG] [Thread-157730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:42.221 [INFO] [Thread-157730] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:42.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:52:42.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:42.271 [DEBUG] [Thread-157732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:52:43.140 [DEBUG] [Thread-157733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:52:43.207 [DEBUG] [Thread-157730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:43.207 [DEBUG] [Thread-157730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:43.258 [DEBUG] [Thread-157730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:43.258 [DEBUG] [Thread-157730] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:43.267 [DEBUG] [Thread-157730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:43.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:43.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:52:43.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:52:43.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:43.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:43.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:43.302 [DEBUG] [Thread-157730] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:53.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:52:53.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:52:53.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:52:53.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 52, 29), 13.51, 39.87, 0.0, 14.66, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:52:53.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:52:29
2025-09-29T13:52:54.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:52:54.155 [DEBUG] [Thread-157734] [transport.py] [_log()] starting thread (client mode): 0x2b956080
2025-09-29T13:52:54.155 [DEBUG] [Thread-157734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:54.176 [DEBUG] [Thread-157734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:52:54.176 [INFO] [Thread-157734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:54.180 [DEBUG] [Thread-157734] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:54.181 [DEBUG] [Thread-157734] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:54.181 [DEBUG] [Thread-157734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:54.181 [DEBUG] [Thread-157734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:54.181 [DEBUG] [Thread-157734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:54.181 [DEBUG] [Thread-157734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:54.181 [DEBUG] [Thread-157734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:54.181 [DEBUG] [Thread-157734] [transport.py] [_log()] Compression: none
2025-09-29T13:52:54.181 [DEBUG] [Thread-157734] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:54.199 [DEBUG] [Thread-157734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:54.200 [DEBUG] [Thread-157734] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:54.200 [DEBUG] [Thread-157734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:52:54.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:52:54.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:54.203 [DEBUG] [Thread-157734] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:54.203 [DEBUG] [Thread-157734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:54.203 [DEBUG] [Thread-157734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:54.203 [DEBUG] [Thread-157734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:52:54.203 [DEBUG] [Thread-157734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:54.227 [INFO] [Thread-157734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:54.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:54.988 [DEBUG] [Thread-157734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:54.988 [DEBUG] [Thread-157734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:54.989 [DEBUG] [Thread-157734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:52:55.029 [DEBUG] [Thread-157734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:55.029 [DEBUG] [Thread-157734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:55.032 [DEBUG] [Thread-157734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:55.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:55.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:52:55.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:52:55.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:52:55.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:55.057 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:52:55.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:55.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:55.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:52:55.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.494513 -999.00  +15.10  15.11     43   +2.70 1 1 1 1 1   888    0 11.81 -14.52 ----- 16.4 15.1 167.4 19.7 23.6 -27.4 22.4 -26.8 23.8 -27.7 25.1 -28.1
2025-09-29T13:52:55.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:52:55.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:52:55.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.494513
2025-09-29T13:52:55.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:52:55.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:52:55.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:52:55.060 [DEBUG] [Thread-157734] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:55.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:52:55.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:52:55.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:52:29', tmtdew=13.51, humidity=39.87, cloud=0.0, wind=14.66, temperature=14.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:52:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:52:55.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:52:55.155 [DEBUG] [Thread-157737] [transport.py] [_log()] starting thread (client mode): 0x2b957070
2025-09-29T13:52:55.155 [DEBUG] [Thread-157737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:52:55.169 [DEBUG] [Thread-157737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:52:55.169 [INFO] [Thread-157737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:52:55.177 [DEBUG] [Thread-157737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:52:55.177 [DEBUG] [Thread-157737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:52:55.177 [DEBUG] [Thread-157737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:52:55.177 [DEBUG] [Thread-157737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:55.177 [DEBUG] [Thread-157737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:52:55.177 [DEBUG] [Thread-157737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:55.177 [DEBUG] [Thread-157737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] client lang: <none>
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] server lang: <none>
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] kex follows: False
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] Compression: none
2025-09-29T13:52:55.178 [DEBUG] [Thread-157737] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:52:55.233 [DEBUG] [Thread-157737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:52:55.234 [DEBUG] [Thread-157737] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:52:55.234 [DEBUG] [Thread-157737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:52:55.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:52:55.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:52:55.290 [DEBUG] [Thread-157737] [transport.py] [_log()] userauth is OK
2025-09-29T13:52:55.290 [DEBUG] [Thread-157737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:52:55.290 [DEBUG] [Thread-157737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:52:55.290 [DEBUG] [Thread-157737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:52:55.290 [DEBUG] [Thread-157737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:52:55.309 [INFO] [Thread-157737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:52:55.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:52:55.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:52:56.317 [DEBUG] [Thread-157737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:52:56.317 [DEBUG] [Thread-157737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:52:56.365 [DEBUG] [Thread-157737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:52:56.365 [DEBUG] [Thread-157737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:52:56.374 [DEBUG] [Thread-157737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:52:56.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:52:56.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:52:56.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:52:56.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:52:56.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:52:56.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:52:56.407 [DEBUG] [Thread-157737] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:52:57.316 [DEBUG] [Thread-157739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:52:59.329 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:52:59.330 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:53:06.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:53:06.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:53:06.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:53:07.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 53, 2), 13.65, 39.49, 0.0, 10.87, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:53:07.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:53:02
2025-09-29T13:53:07.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:53:07.274 [DEBUG] [Thread-157740] [transport.py] [_log()] starting thread (client mode): 0x2b90cd60
2025-09-29T13:53:07.274 [DEBUG] [Thread-157740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:07.294 [DEBUG] [Thread-157740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:53:07.295 [INFO] [Thread-157740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] Compression: none
2025-09-29T13:53:07.298 [DEBUG] [Thread-157740] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:07.314 [DEBUG] [Thread-157740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:07.314 [DEBUG] [Thread-157740] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:07.314 [DEBUG] [Thread-157740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:53:07.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:53:07.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:07.315 [DEBUG] [Thread-157740] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:07.315 [DEBUG] [Thread-157740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:07.315 [DEBUG] [Thread-157740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:07.315 [DEBUG] [Thread-157740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:53:07.315 [DEBUG] [Thread-157740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:07.332 [INFO] [Thread-157740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:07.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:07.913 [DEBUG] [Thread-157740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:53:07.913 [DEBUG] [Thread-157740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:53:07.913 [DEBUG] [Thread-157740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:53:07.954 [DEBUG] [Thread-157740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:53:07.954 [DEBUG] [Thread-157740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:53:07.956 [DEBUG] [Thread-157740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:53:07.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:53:07.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:53:07.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:53:07.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:53:07.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:53:07.974 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:53:07.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:53:07.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.494860 -999.00  +14.90  19.42     43   +2.50 1 1 1 1 1   888    0 11.90 -12.92 ----- 15.5 19.4 119.8 22.9 23.4 -29.9 22.6 -27.5 23.8 -28.0 25.0 -28.4
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.494860
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:53:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:53:02', tmtdew=13.65, humidity=39.49, cloud=0.0, wind=10.87, temperature=14.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:52:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:53:07.976 [DEBUG] [Thread-157740] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:53:08.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:53:08.061 [DEBUG] [Thread-157743] [transport.py] [_log()] starting thread (client mode): 0x2b90cf10
2025-09-29T13:53:08.061 [DEBUG] [Thread-157743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:08.076 [DEBUG] [Thread-157743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:53:08.076 [INFO] [Thread-157743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:53:08.083 [DEBUG] [Thread-157743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] Compression: none
2025-09-29T13:53:08.084 [DEBUG] [Thread-157743] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:08.141 [DEBUG] [Thread-157743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:08.141 [DEBUG] [Thread-157743] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:08.141 [DEBUG] [Thread-157743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:53:08.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:53:08.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:08.197 [DEBUG] [Thread-157743] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:08.198 [DEBUG] [Thread-157743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:08.198 [DEBUG] [Thread-157743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:08.198 [DEBUG] [Thread-157743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:53:08.198 [DEBUG] [Thread-157743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:08.212 [INFO] [Thread-157743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:08.212 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:53:08.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:09.251 [DEBUG] [Thread-157743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:53:09.251 [DEBUG] [Thread-157743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:53:09.299 [DEBUG] [Thread-157743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:53:09.299 [DEBUG] [Thread-157743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:53:09.308 [DEBUG] [Thread-157743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:53:09.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:53:09.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:53:09.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:53:09.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:53:09.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:53:09.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:53:09.343 [DEBUG] [Thread-157743] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:53:12.343 [DEBUG] [Thread-157745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:53:19.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:53:19.346 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:53:19.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:53:19.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 53, 2), 13.65, 39.49, 0.0, 10.87, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:53:19.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:53:02
2025-09-29T13:53:20.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:53:20.190 [DEBUG] [Thread-157746] [transport.py] [_log()] starting thread (client mode): 0x2b955570
2025-09-29T13:53:20.190 [DEBUG] [Thread-157746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:20.211 [DEBUG] [Thread-157746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:53:20.211 [INFO] [Thread-157746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] Compression: none
2025-09-29T13:53:20.214 [DEBUG] [Thread-157746] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:20.230 [DEBUG] [Thread-157746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:20.231 [DEBUG] [Thread-157746] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:20.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:53:20.232 [DEBUG] [Thread-157746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:53:20.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:20.234 [DEBUG] [Thread-157746] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:20.234 [DEBUG] [Thread-157746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:20.234 [DEBUG] [Thread-157746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:20.234 [DEBUG] [Thread-157746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:53:20.234 [DEBUG] [Thread-157746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:20.252 [INFO] [Thread-157746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:20.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:20.986 [DEBUG] [Thread-157746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:53:20.986 [DEBUG] [Thread-157746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:53:20.986 [DEBUG] [Thread-157746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:53:21.027 [DEBUG] [Thread-157746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:53:21.027 [DEBUG] [Thread-157746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:53:21.030 [DEBUG] [Thread-157746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:53:21.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:53:21.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:53:21.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:53:21.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:53:21.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:53:21.048 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:53:21.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:53:21.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:53:21.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:53:21.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.494860 -999.00  +14.90  19.42     43   +2.50 1 1 1 1 1   888    0 11.90 -12.92 ----- 15.5 19.4 119.8 22.9 23.4 -29.9 22.6 -27.5 23.8 -28.0 25.0 -28.4
2025-09-29T13:53:21.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:53:21.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:53:21.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.494860
2025-09-29T13:53:21.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:53:21.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:53:21.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:53:21.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:53:21.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:53:21.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:53:02', tmtdew=13.65, humidity=39.49, cloud=0.0, wind=10.87, temperature=14.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:52:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:53:21.050 [DEBUG] [Thread-157746] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:53:21.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:53:21.148 [DEBUG] [Thread-157749] [transport.py] [_log()] starting thread (client mode): 0x2b90e020
2025-09-29T13:53:21.148 [DEBUG] [Thread-157749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:21.163 [DEBUG] [Thread-157749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:53:21.163 [INFO] [Thread-157749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:21.171 [DEBUG] [Thread-157749] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:21.172 [DEBUG] [Thread-157749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:21.172 [DEBUG] [Thread-157749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:21.172 [DEBUG] [Thread-157749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:21.172 [DEBUG] [Thread-157749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:21.172 [DEBUG] [Thread-157749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:21.172 [DEBUG] [Thread-157749] [transport.py] [_log()] Compression: none
2025-09-29T13:53:21.172 [DEBUG] [Thread-157749] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:21.230 [DEBUG] [Thread-157749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:21.230 [DEBUG] [Thread-157749] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:21.231 [DEBUG] [Thread-157749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:53:21.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:53:21.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:21.287 [DEBUG] [Thread-157749] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:21.287 [DEBUG] [Thread-157749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:21.287 [DEBUG] [Thread-157749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:21.287 [DEBUG] [Thread-157749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:53:21.287 [DEBUG] [Thread-157749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:21.307 [INFO] [Thread-157749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:21.307 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:53:21.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:22.254 [DEBUG] [Thread-157749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:53:22.254 [DEBUG] [Thread-157749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:53:22.302 [DEBUG] [Thread-157749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:53:22.302 [DEBUG] [Thread-157749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:53:22.311 [DEBUG] [Thread-157749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:53:22.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:53:22.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:53:22.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:53:22.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:53:22.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:53:22.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:53:22.346 [DEBUG] [Thread-157749] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:53:27.386 [DEBUG] [Thread-157751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:53:32.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:53:32.343 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:53:32.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:53:32.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 53, 2), 13.65, 39.49, 0.0, 10.87, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:53:32.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:53:02
2025-09-29T13:53:33.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:53:33.155 [DEBUG] [Thread-157752] [transport.py] [_log()] starting thread (client mode): 0x2b9556c0
2025-09-29T13:53:33.155 [DEBUG] [Thread-157752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:33.175 [DEBUG] [Thread-157752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:53:33.175 [INFO] [Thread-157752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:53:33.178 [DEBUG] [Thread-157752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:33.178 [DEBUG] [Thread-157752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:53:33.178 [DEBUG] [Thread-157752] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:33.178 [DEBUG] [Thread-157752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:33.178 [DEBUG] [Thread-157752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:33.178 [DEBUG] [Thread-157752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] Compression: none
2025-09-29T13:53:33.179 [DEBUG] [Thread-157752] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:33.196 [DEBUG] [Thread-157752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:33.197 [DEBUG] [Thread-157752] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:33.197 [DEBUG] [Thread-157752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:53:33.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:53:33.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:33.199 [DEBUG] [Thread-157752] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:33.199 [DEBUG] [Thread-157752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:33.200 [DEBUG] [Thread-157752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:33.200 [DEBUG] [Thread-157752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:53:33.200 [DEBUG] [Thread-157752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:33.217 [INFO] [Thread-157752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:33.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:33.974 [DEBUG] [Thread-157752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:53:33.975 [DEBUG] [Thread-157752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:53:33.975 [DEBUG] [Thread-157752] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:53:34.015 [DEBUG] [Thread-157752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:53:34.015 [DEBUG] [Thread-157752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:53:34.018 [DEBUG] [Thread-157752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:53:34.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:53:34.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:53:34.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:53:34.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:53:34.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:53:34.040 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:53:34.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:53:34.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.494860 -999.00  +14.90  19.42     43   +2.50 1 1 1 1 1   888    0 11.90 -12.92 ----- 15.5 19.4 119.8 22.9 23.4 -29.9 22.6 -27.5 23.8 -28.0 25.0 -28.4
2025-09-29T13:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.494860
2025-09-29T13:53:34.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:53:34.042 [DEBUG] [Thread-157752] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:53:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:53:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:53:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:53:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:53:34.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:53:02', tmtdew=13.65, humidity=39.49, cloud=0.0, wind=10.87, temperature=14.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:52:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:53:34.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:53:34.138 [DEBUG] [Thread-157755] [transport.py] [_log()] starting thread (client mode): 0x2b9bb0a0
2025-09-29T13:53:34.138 [DEBUG] [Thread-157755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:34.153 [DEBUG] [Thread-157755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:53:34.153 [INFO] [Thread-157755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:34.161 [DEBUG] [Thread-157755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:34.162 [DEBUG] [Thread-157755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:34.162 [DEBUG] [Thread-157755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:34.162 [DEBUG] [Thread-157755] [transport.py] [_log()] Compression: none
2025-09-29T13:53:34.162 [DEBUG] [Thread-157755] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:34.217 [DEBUG] [Thread-157755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:34.218 [DEBUG] [Thread-157755] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:34.218 [DEBUG] [Thread-157755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:53:34.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:53:34.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:34.274 [DEBUG] [Thread-157755] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:34.274 [DEBUG] [Thread-157755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:34.274 [DEBUG] [Thread-157755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:34.274 [DEBUG] [Thread-157755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:53:34.274 [DEBUG] [Thread-157755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:34.288 [INFO] [Thread-157755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:34.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:53:34.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:35.251 [DEBUG] [Thread-157755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:53:35.251 [DEBUG] [Thread-157755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:53:35.299 [DEBUG] [Thread-157755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:53:35.299 [DEBUG] [Thread-157755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:53:35.307 [DEBUG] [Thread-157755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:53:35.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:53:35.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:53:35.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:53:35.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:53:35.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:53:35.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:53:35.338 [DEBUG] [Thread-157755] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:53:42.414 [DEBUG] [Thread-157757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:53:43.187 [DEBUG] [Thread-157758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:53:45.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:53:45.340 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:53:45.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:53:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 53, 33), 13.4, 40.14, 0.0, 9.78, 14.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:53:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:53:33
2025-09-29T13:53:46.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:53:46.206 [DEBUG] [Thread-157759] [transport.py] [_log()] starting thread (client mode): 0x2b9baef0
2025-09-29T13:53:46.206 [DEBUG] [Thread-157759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:46.227 [DEBUG] [Thread-157759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:53:46.227 [INFO] [Thread-157759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] Compression: none
2025-09-29T13:53:46.230 [DEBUG] [Thread-157759] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:46.246 [DEBUG] [Thread-157759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:46.247 [DEBUG] [Thread-157759] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:46.247 [DEBUG] [Thread-157759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:53:46.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:53:46.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:46.247 [DEBUG] [Thread-157759] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:46.247 [DEBUG] [Thread-157759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:46.247 [DEBUG] [Thread-157759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:46.247 [DEBUG] [Thread-157759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:53:46.247 [DEBUG] [Thread-157759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:46.256 [INFO] [Thread-157759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:46.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:46.931 [DEBUG] [Thread-157759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:53:46.931 [DEBUG] [Thread-157759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:53:46.931 [DEBUG] [Thread-157759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:53:46.972 [DEBUG] [Thread-157759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:53:46.972 [DEBUG] [Thread-157759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:53:46.974 [DEBUG] [Thread-157759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:53:46.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:53:46.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:53:46.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:53:46.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:53:46.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:53:46.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:53:46.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:53:46.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.495208 -999.00  +14.60  12.43     44   +2.40 1 1 1 1 1   888    0 11.83 -11.49 ----- 12.7 12.4 138.4 18.3 23.4 -27.4 22.6 -27.1 23.9 -27.4 25.0 -28.3
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.495208
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:53:33', tmtdew=13.4, humidity=40.14, cloud=0.0, wind=9.78, temperature=14.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:53:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:53:46.993 [DEBUG] [Thread-157759] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:53:47.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:53:47.078 [DEBUG] [Thread-157762] [transport.py] [_log()] starting thread (client mode): 0x2b9ba680
2025-09-29T13:53:47.078 [DEBUG] [Thread-157762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:47.093 [DEBUG] [Thread-157762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:53:47.093 [INFO] [Thread-157762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:53:47.100 [DEBUG] [Thread-157762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:47.100 [DEBUG] [Thread-157762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:53:47.100 [DEBUG] [Thread-157762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] Compression: none
2025-09-29T13:53:47.101 [DEBUG] [Thread-157762] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:47.159 [DEBUG] [Thread-157762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:47.159 [DEBUG] [Thread-157762] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:47.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:53:47.160 [DEBUG] [Thread-157762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:53:47.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:47.214 [DEBUG] [Thread-157762] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:47.215 [DEBUG] [Thread-157762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:47.215 [DEBUG] [Thread-157762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:47.215 [DEBUG] [Thread-157762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:53:47.215 [DEBUG] [Thread-157762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:47.238 [INFO] [Thread-157762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:47.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:53:47.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:48.249 [DEBUG] [Thread-157762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:53:48.249 [DEBUG] [Thread-157762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:53:48.296 [DEBUG] [Thread-157762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:53:48.296 [DEBUG] [Thread-157762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:53:48.305 [DEBUG] [Thread-157762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:53:48.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:53:48.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:53:48.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:53:48.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:53:48.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:53:48.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:53:48.340 [DEBUG] [Thread-157762] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:53:57.439 [DEBUG] [Thread-157764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:53:58.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:53:58.343 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:53:58.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:53:58.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 53, 33), 13.4, 40.14, 0.0, 9.78, 14.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:53:58.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:53:33
2025-09-29T13:53:59.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:53:59.172 [DEBUG] [Thread-157765] [transport.py] [_log()] starting thread (client mode): 0x2b957340
2025-09-29T13:53:59.172 [DEBUG] [Thread-157765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:53:59.192 [DEBUG] [Thread-157765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:53:59.192 [INFO] [Thread-157765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:53:59.195 [DEBUG] [Thread-157765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:53:59.195 [DEBUG] [Thread-157765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] client lang: <none>
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] server lang: <none>
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] kex follows: False
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:53:59.196 [DEBUG] [Thread-157765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:53:59.197 [DEBUG] [Thread-157765] [transport.py] [_log()] Compression: none
2025-09-29T13:53:59.197 [DEBUG] [Thread-157765] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:53:59.217 [DEBUG] [Thread-157765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:53:59.218 [DEBUG] [Thread-157765] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:53:59.219 [DEBUG] [Thread-157765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:53:59.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:53:59.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:53:59.221 [DEBUG] [Thread-157765] [transport.py] [_log()] userauth is OK
2025-09-29T13:53:59.221 [DEBUG] [Thread-157765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:53:59.221 [DEBUG] [Thread-157765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:53:59.222 [DEBUG] [Thread-157765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:53:59.222 [DEBUG] [Thread-157765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:53:59.244 [INFO] [Thread-157765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:53:59.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:53:59.471 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:53:59.472 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:54:00.083 [DEBUG] [Thread-157765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:00.083 [DEBUG] [Thread-157765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:00.083 [DEBUG] [Thread-157765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:54:00.124 [DEBUG] [Thread-157765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:00.124 [DEBUG] [Thread-157765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:00.127 [DEBUG] [Thread-157765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:00.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:00.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:54:00.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:54:00.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:54:00.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:00.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:54:00.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:00.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:00.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:54:00.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.495208 -999.00  +14.60  12.43     44   +2.40 1 1 1 1 1   888    0 11.83 -11.49 ----- 12.7 12.4 138.4 18.3 23.4 -27.4 22.6 -27.1 23.9 -27.4 25.0 -28.3
2025-09-29T13:54:00.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:54:00.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:54:00.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.495208
2025-09-29T13:54:00.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:54:00.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:54:00.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:54:00.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:54:00.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:54:00.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:53:33', tmtdew=13.4, humidity=40.14, cloud=0.0, wind=9.78, temperature=14.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:53:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:54:00.155 [DEBUG] [Thread-157765] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:00.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:54:00.249 [DEBUG] [Thread-157768] [transport.py] [_log()] starting thread (client mode): 0x2b90c3a0
2025-09-29T13:54:00.249 [DEBUG] [Thread-157768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:00.264 [DEBUG] [Thread-157768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:54:00.264 [INFO] [Thread-157768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:54:00.271 [DEBUG] [Thread-157768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:00.272 [DEBUG] [Thread-157768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:54:00.272 [DEBUG] [Thread-157768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:00.272 [DEBUG] [Thread-157768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:00.272 [DEBUG] [Thread-157768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:00.272 [DEBUG] [Thread-157768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:00.272 [DEBUG] [Thread-157768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:00.272 [DEBUG] [Thread-157768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] Compression: none
2025-09-29T13:54:00.273 [DEBUG] [Thread-157768] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:00.330 [DEBUG] [Thread-157768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:00.330 [DEBUG] [Thread-157768] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:00.331 [DEBUG] [Thread-157768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:54:00.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:54:00.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:00.386 [DEBUG] [Thread-157768] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:00.387 [DEBUG] [Thread-157768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:00.387 [DEBUG] [Thread-157768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:00.387 [DEBUG] [Thread-157768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:54:00.387 [DEBUG] [Thread-157768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:00.405 [INFO] [Thread-157768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:00.406 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:54:00.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:01.357 [DEBUG] [Thread-157768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:01.358 [DEBUG] [Thread-157768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:01.405 [DEBUG] [Thread-157768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:01.405 [DEBUG] [Thread-157768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:01.414 [DEBUG] [Thread-157768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:01.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:01.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:54:01.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:54:01.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:01.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:01.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:01.449 [DEBUG] [Thread-157768] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:11.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:54:11.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:54:11.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:54:12.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 54, 5), 13.39, 40.2, 0.0, 12.32, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:54:12.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:54:05
2025-09-29T13:54:12.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:54:12.288 [DEBUG] [Thread-157770] [transport.py] [_log()] starting thread (client mode): 0x2b957be0
2025-09-29T13:54:12.288 [DEBUG] [Thread-157770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:12.308 [DEBUG] [Thread-157770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:54:12.308 [INFO] [Thread-157770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:54:12.311 [DEBUG] [Thread-157770] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:12.311 [DEBUG] [Thread-157770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:54:12.311 [DEBUG] [Thread-157770] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:12.311 [DEBUG] [Thread-157770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:12.311 [DEBUG] [Thread-157770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:12.311 [DEBUG] [Thread-157770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:12.311 [DEBUG] [Thread-157770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] Compression: none
2025-09-29T13:54:12.312 [DEBUG] [Thread-157770] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:12.320 [DEBUG] [Thread-157770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:12.320 [DEBUG] [Thread-157770] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:12.321 [DEBUG] [Thread-157770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:54:12.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:54:12.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:12.323 [DEBUG] [Thread-157770] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:12.323 [DEBUG] [Thread-157770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:12.323 [DEBUG] [Thread-157770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:12.323 [DEBUG] [Thread-157770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:54:12.323 [DEBUG] [Thread-157770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:12.340 [INFO] [Thread-157770] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:12.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:12.482 [DEBUG] [Thread-157772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:54:12.975 [DEBUG] [Thread-157770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:12.976 [DEBUG] [Thread-157770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:12.976 [DEBUG] [Thread-157770] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:54:13.016 [DEBUG] [Thread-157770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:13.016 [DEBUG] [Thread-157770] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:13.018 [DEBUG] [Thread-157770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:13.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:13.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:54:13.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:54:13.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:54:13.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:13.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:54:13.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:13.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:13.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:54:13.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.495902 -999.00  +14.60  11.10     43   +2.30 1 1 1 1 1   888    0 11.81 -14.02 ----- 11.0 11.1 176.6 16.2 23.5 -28.6 22.6 -28.9 23.9 -27.9 25.0 -29.4
2025-09-29T13:54:13.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:54:13.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:54:13.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.495902
2025-09-29T13:54:13.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:54:13.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:54:13.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:54:13.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:54:13.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:54:13.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:54:05', tmtdew=13.39, humidity=40.2, cloud=0.0, wind=12.32, temperature=14.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:54:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:54:13.045 [DEBUG] [Thread-157770] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:13.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:54:13.142 [DEBUG] [Thread-157774] [transport.py] [_log()] starting thread (client mode): 0x2b956980
2025-09-29T13:54:13.142 [DEBUG] [Thread-157774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:13.157 [DEBUG] [Thread-157774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:54:13.157 [INFO] [Thread-157774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:13.164 [DEBUG] [Thread-157774] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:13.165 [DEBUG] [Thread-157774] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:13.165 [DEBUG] [Thread-157774] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:13.165 [DEBUG] [Thread-157774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:13.165 [DEBUG] [Thread-157774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:13.165 [DEBUG] [Thread-157774] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:13.165 [DEBUG] [Thread-157774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:13.165 [DEBUG] [Thread-157774] [transport.py] [_log()] Compression: none
2025-09-29T13:54:13.165 [DEBUG] [Thread-157774] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:13.220 [DEBUG] [Thread-157774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:13.220 [DEBUG] [Thread-157774] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:13.220 [DEBUG] [Thread-157774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:54:13.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:54:13.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:13.278 [DEBUG] [Thread-157774] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:13.278 [DEBUG] [Thread-157774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:13.278 [DEBUG] [Thread-157774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:13.278 [DEBUG] [Thread-157774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:54:13.278 [DEBUG] [Thread-157774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:13.303 [INFO] [Thread-157774] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:13.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:54:13.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:14.263 [DEBUG] [Thread-157774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:14.264 [DEBUG] [Thread-157774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:14.311 [DEBUG] [Thread-157774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:14.311 [DEBUG] [Thread-157774] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:14.320 [DEBUG] [Thread-157774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:14.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:14.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:54:14.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:54:14.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:14.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:14.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:14.355 [DEBUG] [Thread-157774] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:24.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:54:24.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:54:24.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:54:24.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 54, 5), 13.39, 40.2, 0.0, 12.32, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:54:24.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:54:05
2025-09-29T13:54:25.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:54:25.192 [DEBUG] [Thread-157776] [transport.py] [_log()] starting thread (client mode): 0x2b9b8dc0
2025-09-29T13:54:25.192 [DEBUG] [Thread-157776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:25.214 [DEBUG] [Thread-157776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:54:25.215 [INFO] [Thread-157776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:25.218 [DEBUG] [Thread-157776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:25.219 [DEBUG] [Thread-157776] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:25.219 [DEBUG] [Thread-157776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:25.219 [DEBUG] [Thread-157776] [transport.py] [_log()] Compression: none
2025-09-29T13:54:25.219 [DEBUG] [Thread-157776] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:25.234 [DEBUG] [Thread-157776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:25.235 [DEBUG] [Thread-157776] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:25.235 [DEBUG] [Thread-157776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:54:25.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:54:25.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:25.236 [DEBUG] [Thread-157776] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:25.236 [DEBUG] [Thread-157776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:25.236 [DEBUG] [Thread-157776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:25.236 [DEBUG] [Thread-157776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:54:25.236 [DEBUG] [Thread-157776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:25.265 [INFO] [Thread-157776] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:25.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:26.070 [DEBUG] [Thread-157776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:26.071 [DEBUG] [Thread-157776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:26.071 [DEBUG] [Thread-157776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:54:26.111 [DEBUG] [Thread-157776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:26.112 [DEBUG] [Thread-157776] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:26.114 [DEBUG] [Thread-157776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:26.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:26.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:54:26.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:54:26.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:54:26.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:26.140 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:54:26.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:26.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:26.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:54:26.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.495902 -999.00  +14.60  11.10     43   +2.30 1 1 1 1 1   888    0 11.81 -14.02 ----- 11.0 11.1 176.6 16.2 23.5 -28.6 22.6 -28.9 23.9 -27.9 25.0 -29.4
2025-09-29T13:54:26.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:54:26.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:54:26.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.495902
2025-09-29T13:54:26.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:54:26.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:54:26.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:54:26.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:54:26.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:54:26.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:54:05', tmtdew=13.39, humidity=40.2, cloud=0.0, wind=12.32, temperature=14.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:54:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:54:26.143 [DEBUG] [Thread-157776] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:26.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:54:26.237 [DEBUG] [Thread-157779] [transport.py] [_log()] starting thread (client mode): 0x2b954e20
2025-09-29T13:54:26.237 [DEBUG] [Thread-157779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:26.252 [DEBUG] [Thread-157779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:54:26.252 [INFO] [Thread-157779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:54:26.259 [DEBUG] [Thread-157779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:26.259 [DEBUG] [Thread-157779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:54:26.259 [DEBUG] [Thread-157779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:26.259 [DEBUG] [Thread-157779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:26.259 [DEBUG] [Thread-157779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:26.259 [DEBUG] [Thread-157779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:26.259 [DEBUG] [Thread-157779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:26.259 [DEBUG] [Thread-157779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] Compression: none
2025-09-29T13:54:26.260 [DEBUG] [Thread-157779] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:26.321 [DEBUG] [Thread-157779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:26.321 [DEBUG] [Thread-157779] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:26.322 [DEBUG] [Thread-157779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:54:26.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:54:26.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:26.378 [DEBUG] [Thread-157779] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:26.378 [DEBUG] [Thread-157779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:26.378 [DEBUG] [Thread-157779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:26.379 [DEBUG] [Thread-157779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:54:26.379 [DEBUG] [Thread-157779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:26.397 [INFO] [Thread-157779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:26.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:54:26.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:27.370 [DEBUG] [Thread-157779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:27.370 [DEBUG] [Thread-157779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:27.418 [DEBUG] [Thread-157779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:27.418 [DEBUG] [Thread-157779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:27.427 [DEBUG] [Thread-157779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:27.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:27.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:54:27.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:54:27.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:27.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:27.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:27.461 [DEBUG] [Thread-157779] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:27.510 [DEBUG] [Thread-157781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:54:37.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:54:37.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:54:37.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:54:38.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 54, 5), 13.39, 40.2, 0.0, 12.32, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:54:38.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:54:05
2025-09-29T13:54:38.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:54:38.306 [DEBUG] [Thread-157782] [transport.py] [_log()] starting thread (client mode): 0x2b96cdf0
2025-09-29T13:54:38.307 [DEBUG] [Thread-157782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:38.327 [DEBUG] [Thread-157782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:54:38.327 [INFO] [Thread-157782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:54:38.328 [DEBUG] [Thread-157782] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:38.328 [DEBUG] [Thread-157782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:54:38.328 [DEBUG] [Thread-157782] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:38.328 [DEBUG] [Thread-157782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:38.328 [DEBUG] [Thread-157782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:38.328 [DEBUG] [Thread-157782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:38.328 [DEBUG] [Thread-157782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:38.328 [DEBUG] [Thread-157782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] Compression: none
2025-09-29T13:54:38.329 [DEBUG] [Thread-157782] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:38.336 [DEBUG] [Thread-157782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:38.336 [DEBUG] [Thread-157782] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:38.336 [DEBUG] [Thread-157782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:54:38.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:54:38.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:38.337 [DEBUG] [Thread-157782] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:38.337 [DEBUG] [Thread-157782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:38.337 [DEBUG] [Thread-157782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:38.337 [DEBUG] [Thread-157782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:54:38.337 [DEBUG] [Thread-157782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:38.355 [INFO] [Thread-157782] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:38.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:39.164 [DEBUG] [Thread-157782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:39.165 [DEBUG] [Thread-157782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:39.165 [DEBUG] [Thread-157782] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:54:39.206 [DEBUG] [Thread-157782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:39.206 [DEBUG] [Thread-157782] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:39.208 [DEBUG] [Thread-157782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:39.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:39.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:54:39.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:54:39.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:54:39.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:39.226 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:54:39.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:39.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:54:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.495902 -999.00  +14.60  11.10     43   +2.30 1 1 1 1 1   888    0 11.81 -14.02 ----- 11.0 11.1 176.6 16.2 23.5 -28.6 22.6 -28.9 23.9 -27.9 25.0 -29.4
2025-09-29T13:54:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:54:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:54:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.495902
2025-09-29T13:54:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:54:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:54:39.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:54:39.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:54:39.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:54:39.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:54:05', tmtdew=13.39, humidity=40.2, cloud=0.0, wind=12.32, temperature=14.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:54:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:54:39.227 [DEBUG] [Thread-157782] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:39.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:54:39.313 [DEBUG] [Thread-157785] [transport.py] [_log()] starting thread (client mode): 0x2b96d510
2025-09-29T13:54:39.313 [DEBUG] [Thread-157785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:39.330 [DEBUG] [Thread-157785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:54:39.330 [INFO] [Thread-157785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] Compression: none
2025-09-29T13:54:39.338 [DEBUG] [Thread-157785] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:39.393 [DEBUG] [Thread-157785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:39.393 [DEBUG] [Thread-157785] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:39.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:54:39.393 [DEBUG] [Thread-157785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:54:39.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:39.450 [DEBUG] [Thread-157785] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:39.450 [DEBUG] [Thread-157785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:39.450 [DEBUG] [Thread-157785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:39.450 [DEBUG] [Thread-157785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:54:39.450 [DEBUG] [Thread-157785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:39.463 [INFO] [Thread-157785] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:39.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:54:39.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:40.423 [DEBUG] [Thread-157785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:40.423 [DEBUG] [Thread-157785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:40.471 [DEBUG] [Thread-157785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:40.471 [DEBUG] [Thread-157785] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:40.480 [DEBUG] [Thread-157785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:40.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:40.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:54:40.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:54:40.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:40.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:40.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:40.514 [DEBUG] [Thread-157785] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:42.557 [DEBUG] [Thread-157787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:54:43.245 [DEBUG] [Thread-157788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:54:50.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:54:50.517 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:54:50.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:54:51.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 54, 37), 13.68, 39.49, 0.0, 13.5, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:54:51.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:54:37
2025-09-29T13:54:51.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:54:51.357 [DEBUG] [Thread-157789] [transport.py] [_log()] starting thread (client mode): 0x2b96d5a0
2025-09-29T13:54:51.357 [DEBUG] [Thread-157789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:51.378 [DEBUG] [Thread-157789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:54:51.378 [INFO] [Thread-157789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] Compression: none
2025-09-29T13:54:51.382 [DEBUG] [Thread-157789] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:51.399 [DEBUG] [Thread-157789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:51.399 [DEBUG] [Thread-157789] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:51.400 [DEBUG] [Thread-157789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:54:51.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:54:51.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:51.402 [DEBUG] [Thread-157789] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:51.402 [DEBUG] [Thread-157789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:51.402 [DEBUG] [Thread-157789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:51.402 [DEBUG] [Thread-157789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:54:51.402 [DEBUG] [Thread-157789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:51.421 [INFO] [Thread-157789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:51.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:52.017 [DEBUG] [Thread-157789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:52.017 [DEBUG] [Thread-157789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:52.017 [DEBUG] [Thread-157789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:54:52.058 [DEBUG] [Thread-157789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:52.058 [DEBUG] [Thread-157789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:52.061 [DEBUG] [Thread-157789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:52.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:52.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:54:52.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:54:52.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:54:52.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:52.082 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:54:52.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:52.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:52.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:54:52.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.496249 -999.00  +14.70  12.35     43   +2.40 1 1 1 1 1   888    0 11.79 -17.09 ----- 10.8 12.3 176.6 16.1 23.5 -28.9 22.3 -34.2 23.8 -27.5 25.1 -29.0
2025-09-29T13:54:52.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:54:52.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:54:52.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.496249
2025-09-29T13:54:52.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:54:52.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:54:52.084 [DEBUG] [Thread-157789] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:52.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:54:52.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:54:52.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:54:52.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:54:37', tmtdew=13.68, humidity=39.49, cloud=0.0, wind=13.5, temperature=14.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:54:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:54:52.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:54:52.179 [DEBUG] [Thread-157792] [transport.py] [_log()] starting thread (client mode): 0x2b96c880
2025-09-29T13:54:52.179 [DEBUG] [Thread-157792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:54:52.194 [DEBUG] [Thread-157792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:54:52.194 [INFO] [Thread-157792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:54:52.202 [DEBUG] [Thread-157792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:54:52.202 [DEBUG] [Thread-157792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:54:52.202 [DEBUG] [Thread-157792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:54:52.202 [DEBUG] [Thread-157792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:52.202 [DEBUG] [Thread-157792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:54:52.202 [DEBUG] [Thread-157792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] client lang: <none>
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] server lang: <none>
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] kex follows: False
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] Compression: none
2025-09-29T13:54:52.203 [DEBUG] [Thread-157792] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:54:52.258 [DEBUG] [Thread-157792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:54:52.258 [DEBUG] [Thread-157792] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:54:52.259 [DEBUG] [Thread-157792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:54:52.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:54:52.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:54:52.314 [DEBUG] [Thread-157792] [transport.py] [_log()] userauth is OK
2025-09-29T13:54:52.314 [DEBUG] [Thread-157792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:54:52.315 [DEBUG] [Thread-157792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:54:52.315 [DEBUG] [Thread-157792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:54:52.315 [DEBUG] [Thread-157792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:54:52.334 [INFO] [Thread-157792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:54:52.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:54:52.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:54:53.330 [DEBUG] [Thread-157792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:54:53.331 [DEBUG] [Thread-157792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:54:53.378 [DEBUG] [Thread-157792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:54:53.378 [DEBUG] [Thread-157792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:54:53.387 [DEBUG] [Thread-157792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:54:53.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:54:53.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:54:53.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:54:53.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:54:53.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:54:53.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:54:53.422 [DEBUG] [Thread-157792] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:54:57.586 [DEBUG] [Thread-157794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:54:59.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:54:59.613 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:55:03.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:55:03.424 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:55:03.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:55:04.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 54, 37), 13.68, 39.49, 0.0, 13.5, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:55:04.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:54:37
2025-09-29T13:55:04.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:55:04.263 [DEBUG] [Thread-157795] [transport.py] [_log()] starting thread (client mode): 0x2b96e830
2025-09-29T13:55:04.263 [DEBUG] [Thread-157795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:55:04.282 [DEBUG] [Thread-157795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:55:04.282 [INFO] [Thread-157795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:55:04.283 [DEBUG] [Thread-157795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:55:04.283 [DEBUG] [Thread-157795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:55:04.283 [DEBUG] [Thread-157795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:55:04.283 [DEBUG] [Thread-157795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:04.283 [DEBUG] [Thread-157795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] client lang: <none>
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] server lang: <none>
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] kex follows: False
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] Compression: none
2025-09-29T13:55:04.284 [DEBUG] [Thread-157795] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:55:04.294 [DEBUG] [Thread-157795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:55:04.295 [DEBUG] [Thread-157795] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:55:04.296 [DEBUG] [Thread-157795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:55:04.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:55:04.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:55:04.298 [DEBUG] [Thread-157795] [transport.py] [_log()] userauth is OK
2025-09-29T13:55:04.298 [DEBUG] [Thread-157795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:55:04.298 [DEBUG] [Thread-157795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:55:04.298 [DEBUG] [Thread-157795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:55:04.298 [DEBUG] [Thread-157795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:55:04.319 [INFO] [Thread-157795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:55:04.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:55:11.081 [DEBUG] [Thread-157795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:55:11.082 [DEBUG] [Thread-157795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:55:11.082 [DEBUG] [Thread-157795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:55:11.123 [DEBUG] [Thread-157795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:55:11.123 [DEBUG] [Thread-157795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:55:11.124 [DEBUG] [Thread-157795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:55:11.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:55:11.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:55:11.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:55:11.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:55:11.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:55:11.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:55:11.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:55:11.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:55:11.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:55:11.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.496249 -999.00  +14.70  12.35     43   +2.40 1 1 1 1 1   888    0 11.79 -17.09 ----- 10.8 12.3 176.6 16.1 23.5 -28.9 22.3 -34.2 23.8 -27.5 25.1 -29.0
2025-09-29T13:55:11.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:55:11.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:55:11.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.496249
2025-09-29T13:55:11.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:55:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:55:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:55:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:55:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:55:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:54:37', tmtdew=13.68, humidity=39.49, cloud=0.0, wind=13.5, temperature=14.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:54:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:55:11.413 [DEBUG] [Thread-157795] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:55:11.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:55:11.499 [DEBUG] [Thread-157798] [transport.py] [_log()] starting thread (client mode): 0x2b96c460
2025-09-29T13:55:11.499 [DEBUG] [Thread-157798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:55:11.514 [DEBUG] [Thread-157798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:55:11.514 [INFO] [Thread-157798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:55:11.521 [DEBUG] [Thread-157798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:55:11.521 [DEBUG] [Thread-157798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:55:11.521 [DEBUG] [Thread-157798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:55:11.521 [DEBUG] [Thread-157798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:11.521 [DEBUG] [Thread-157798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:11.521 [DEBUG] [Thread-157798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] client lang: <none>
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] server lang: <none>
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] kex follows: False
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] Compression: none
2025-09-29T13:55:11.522 [DEBUG] [Thread-157798] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:55:11.577 [DEBUG] [Thread-157798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:55:11.577 [DEBUG] [Thread-157798] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:55:11.577 [DEBUG] [Thread-157798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:55:11.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:55:11.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:55:11.634 [DEBUG] [Thread-157798] [transport.py] [_log()] userauth is OK
2025-09-29T13:55:11.634 [DEBUG] [Thread-157798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:55:11.634 [DEBUG] [Thread-157798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:55:11.634 [DEBUG] [Thread-157798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:55:11.634 [DEBUG] [Thread-157798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:55:11.652 [INFO] [Thread-157798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:55:11.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:55:11.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:55:12.629 [DEBUG] [Thread-157800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:55:12.643 [DEBUG] [Thread-157798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:55:12.644 [DEBUG] [Thread-157798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:55:12.691 [DEBUG] [Thread-157798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:55:12.692 [DEBUG] [Thread-157798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:55:12.701 [DEBUG] [Thread-157798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:55:12.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:55:12.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:55:12.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:55:12.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:55:12.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:55:12.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:55:12.736 [DEBUG] [Thread-157798] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:55:22.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:55:22.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:55:22.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:55:23.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 55, 9), 13.71, 39.37, 0.0, 14.06, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:55:23.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:55:09
2025-09-29T13:55:23.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:55:23.576 [DEBUG] [Thread-157801] [transport.py] [_log()] starting thread (client mode): 0x2b954e20
2025-09-29T13:55:23.576 [DEBUG] [Thread-157801] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:55:23.596 [DEBUG] [Thread-157801] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:55:23.596 [INFO] [Thread-157801] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:55:23.599 [DEBUG] [Thread-157801] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:55:23.599 [DEBUG] [Thread-157801] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:55:23.599 [DEBUG] [Thread-157801] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] client lang: <none>
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] server lang: <none>
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] kex follows: False
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:55:23.600 [DEBUG] [Thread-157801] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:55:23.601 [DEBUG] [Thread-157801] [transport.py] [_log()] Compression: none
2025-09-29T13:55:23.601 [DEBUG] [Thread-157801] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:55:23.613 [DEBUG] [Thread-157801] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:55:23.614 [DEBUG] [Thread-157801] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:55:23.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:55:23.616 [DEBUG] [Thread-157801] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:55:23.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:55:23.618 [DEBUG] [Thread-157801] [transport.py] [_log()] userauth is OK
2025-09-29T13:55:23.618 [DEBUG] [Thread-157801] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:55:23.619 [DEBUG] [Thread-157801] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:55:23.619 [DEBUG] [Thread-157801] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:55:23.619 [DEBUG] [Thread-157801] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:55:23.643 [INFO] [Thread-157801] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:55:23.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:55:24.220 [DEBUG] [Thread-157801] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:55:24.220 [DEBUG] [Thread-157801] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:55:24.220 [DEBUG] [Thread-157801] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:55:24.260 [DEBUG] [Thread-157801] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:55:24.260 [DEBUG] [Thread-157801] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:55:24.263 [DEBUG] [Thread-157801] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:55:24.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:55:24.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:55:24.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:55:24.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:55:24.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:55:24.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:55:24.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:55:24.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:55:24.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:55:24.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.496596 -999.00  +14.70   5.75     43   +2.50 1 1 1 1 1   888    0 11.63 -18.58 ----- 8.7 5.8 157.8 13.0 23.7 -27.1 22.6 -26.4 24.0 -27.3 25.3 -28.3
2025-09-29T13:55:24.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:55:24.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:55:24.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.496596
2025-09-29T13:55:24.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:55:24.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:55:24.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:55:24.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:55:24.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:55:24.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:55:09', tmtdew=13.71, humidity=39.37, cloud=0.0, wind=14.06, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:55:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:55:24.282 [DEBUG] [Thread-157801] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:55:24.367 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:55:24.377 [DEBUG] [Thread-157804] [transport.py] [_log()] starting thread (client mode): 0x2b96c160
2025-09-29T13:55:24.377 [DEBUG] [Thread-157804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:55:24.394 [DEBUG] [Thread-157804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:55:24.394 [INFO] [Thread-157804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:55:24.401 [DEBUG] [Thread-157804] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:55:24.401 [DEBUG] [Thread-157804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:55:24.401 [DEBUG] [Thread-157804] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:55:24.401 [DEBUG] [Thread-157804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:24.401 [DEBUG] [Thread-157804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] client lang: <none>
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] server lang: <none>
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] kex follows: False
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] Compression: none
2025-09-29T13:55:24.402 [DEBUG] [Thread-157804] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:55:24.458 [DEBUG] [Thread-157804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:55:24.459 [DEBUG] [Thread-157804] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:55:24.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:55:24.460 [DEBUG] [Thread-157804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:55:24.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:55:24.514 [DEBUG] [Thread-157804] [transport.py] [_log()] userauth is OK
2025-09-29T13:55:24.514 [DEBUG] [Thread-157804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:55:24.514 [DEBUG] [Thread-157804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:55:24.515 [DEBUG] [Thread-157804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:55:24.515 [DEBUG] [Thread-157804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:55:24.534 [INFO] [Thread-157804] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:55:24.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:55:24.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:55:25.532 [DEBUG] [Thread-157804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:55:25.533 [DEBUG] [Thread-157804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:55:25.581 [DEBUG] [Thread-157804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:55:25.581 [DEBUG] [Thread-157804] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:55:25.589 [DEBUG] [Thread-157804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:55:25.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:55:25.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:55:25.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:55:25.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:55:25.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:55:25.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:55:25.624 [DEBUG] [Thread-157804] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:55:27.665 [DEBUG] [Thread-157806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:55:35.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:55:35.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:55:35.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:55:36.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 55, 9), 13.71, 39.37, 0.0, 14.06, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:55:36.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:55:09
2025-09-29T13:55:36.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:55:36.432 [DEBUG] [Thread-157807] [transport.py] [_log()] starting thread (client mode): 0x2b96ef50
2025-09-29T13:55:36.432 [DEBUG] [Thread-157807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:55:36.451 [DEBUG] [Thread-157807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:55:36.451 [INFO] [Thread-157807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:55:36.454 [DEBUG] [Thread-157807] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] client lang: <none>
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] server lang: <none>
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] kex follows: False
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] Compression: none
2025-09-29T13:55:36.455 [DEBUG] [Thread-157807] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:55:36.470 [DEBUG] [Thread-157807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:55:36.470 [DEBUG] [Thread-157807] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:55:36.470 [DEBUG] [Thread-157807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:55:36.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:55:36.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:55:36.471 [DEBUG] [Thread-157807] [transport.py] [_log()] userauth is OK
2025-09-29T13:55:36.471 [DEBUG] [Thread-157807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:55:36.471 [DEBUG] [Thread-157807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:55:36.471 [DEBUG] [Thread-157807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:55:36.471 [DEBUG] [Thread-157807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:55:36.485 [INFO] [Thread-157807] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:55:36.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:55:37.232 [DEBUG] [Thread-157807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:55:37.232 [DEBUG] [Thread-157807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:55:37.232 [DEBUG] [Thread-157807] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:55:37.273 [DEBUG] [Thread-157807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:55:37.273 [DEBUG] [Thread-157807] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:55:37.275 [DEBUG] [Thread-157807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:55:37.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:55:37.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:55:37.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:55:37.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:55:37.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:55:37.289 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:55:37.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:55:37.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:55:37.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:55:37.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.496596 -999.00  +14.70   5.75     43   +2.50 1 1 1 1 1   888    0 11.63 -18.58 ----- 8.7 5.8 157.8 13.0 23.7 -27.1 22.6 -26.4 24.0 -27.3 25.3 -28.3
2025-09-29T13:55:37.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:55:37.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:55:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.496596
2025-09-29T13:55:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:55:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:55:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:55:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:55:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:55:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:55:09', tmtdew=13.71, humidity=39.37, cloud=0.0, wind=14.06, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:55:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:55:37.290 [DEBUG] [Thread-157807] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:55:37.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:55:37.377 [DEBUG] [Thread-157810] [transport.py] [_log()] starting thread (client mode): 0x2b96c610
2025-09-29T13:55:37.377 [DEBUG] [Thread-157810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:55:37.392 [DEBUG] [Thread-157810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:55:37.392 [INFO] [Thread-157810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] client lang: <none>
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] server lang: <none>
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] kex follows: False
2025-09-29T13:55:37.399 [DEBUG] [Thread-157810] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:55:37.400 [DEBUG] [Thread-157810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:55:37.400 [DEBUG] [Thread-157810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:55:37.400 [DEBUG] [Thread-157810] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:55:37.400 [DEBUG] [Thread-157810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:55:37.400 [DEBUG] [Thread-157810] [transport.py] [_log()] Compression: none
2025-09-29T13:55:37.400 [DEBUG] [Thread-157810] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:55:37.460 [DEBUG] [Thread-157810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:55:37.460 [DEBUG] [Thread-157810] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:55:37.461 [DEBUG] [Thread-157810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:55:37.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:55:37.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:55:37.521 [DEBUG] [Thread-157810] [transport.py] [_log()] userauth is OK
2025-09-29T13:55:37.521 [DEBUG] [Thread-157810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:55:37.521 [DEBUG] [Thread-157810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:55:37.521 [DEBUG] [Thread-157810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:55:37.521 [DEBUG] [Thread-157810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:55:37.536 [INFO] [Thread-157810] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:55:37.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:55:37.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:55:38.504 [DEBUG] [Thread-157810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:55:38.504 [DEBUG] [Thread-157810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:55:38.552 [DEBUG] [Thread-157810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:55:38.552 [DEBUG] [Thread-157810] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:55:38.560 [DEBUG] [Thread-157810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:55:38.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:55:38.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:55:38.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:55:38.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:55:38.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:55:38.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:55:38.592 [DEBUG] [Thread-157810] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:55:42.711 [DEBUG] [Thread-157812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:55:43.295 [DEBUG] [Thread-157813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:55:48.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:55:48.595 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:55:48.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:55:49.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 55, 41), 13.81, 38.85, 0.0, 8.8, 14.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:55:49.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:55:41
2025-09-29T13:55:49.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:55:49.418 [DEBUG] [Thread-157814] [transport.py] [_log()] starting thread (client mode): 0x2b96d330
2025-09-29T13:55:49.418 [DEBUG] [Thread-157814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:55:49.437 [DEBUG] [Thread-157814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:55:49.437 [INFO] [Thread-157814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:55:49.440 [DEBUG] [Thread-157814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:55:49.440 [DEBUG] [Thread-157814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:55:49.440 [DEBUG] [Thread-157814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] client lang: <none>
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] server lang: <none>
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] kex follows: False
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] Compression: none
2025-09-29T13:55:49.441 [DEBUG] [Thread-157814] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:55:49.449 [DEBUG] [Thread-157814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:55:49.449 [DEBUG] [Thread-157814] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:55:49.450 [DEBUG] [Thread-157814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:55:49.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:55:49.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:55:49.451 [DEBUG] [Thread-157814] [transport.py] [_log()] userauth is OK
2025-09-29T13:55:49.451 [DEBUG] [Thread-157814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:55:49.451 [DEBUG] [Thread-157814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:55:49.451 [DEBUG] [Thread-157814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:55:49.451 [DEBUG] [Thread-157814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:55:49.486 [INFO] [Thread-157814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:55:49.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:55:50.050 [DEBUG] [Thread-157814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:55:50.051 [DEBUG] [Thread-157814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:55:50.051 [DEBUG] [Thread-157814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:55:50.091 [DEBUG] [Thread-157814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:55:50.091 [DEBUG] [Thread-157814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:55:50.094 [DEBUG] [Thread-157814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:55:50.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:55:50.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:55:50.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:55:50.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:55:50.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:55:50.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:55:50.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:55:50.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:55:50.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:55:50.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.496944 -999.00  +14.80   3.74     42   +2.30 1 1 1 1 1   888    0 11.66 -22.03 ----- 3.9 3.7 172.1 8.9 23.9 -27.7 22.8 -27.4 24.2 -27.1 25.5 -28.5
2025-09-29T13:55:50.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:55:50.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:55:50.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.496944
2025-09-29T13:55:50.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:55:50.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:55:50.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:55:50.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:55:50.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:55:50.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:55:41', tmtdew=13.81, humidity=38.85, cloud=0.0, wind=8.8, temperature=14.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:55:35.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:55:50.117 [DEBUG] [Thread-157814] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:55:50.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:55:50.212 [DEBUG] [Thread-157817] [transport.py] [_log()] starting thread (client mode): 0x2b96de10
2025-09-29T13:55:50.212 [DEBUG] [Thread-157817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:55:50.227 [DEBUG] [Thread-157817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:55:50.227 [INFO] [Thread-157817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] client lang: <none>
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] server lang: <none>
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] kex follows: False
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] Compression: none
2025-09-29T13:55:50.235 [DEBUG] [Thread-157817] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:55:50.297 [DEBUG] [Thread-157817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:55:50.297 [DEBUG] [Thread-157817] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:55:50.298 [DEBUG] [Thread-157817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:55:50.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:55:50.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:55:50.358 [DEBUG] [Thread-157817] [transport.py] [_log()] userauth is OK
2025-09-29T13:55:50.358 [DEBUG] [Thread-157817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:55:50.359 [DEBUG] [Thread-157817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:55:50.359 [DEBUG] [Thread-157817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:55:50.359 [DEBUG] [Thread-157817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:55:50.378 [INFO] [Thread-157817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:55:50.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:55:50.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:55:51.366 [DEBUG] [Thread-157817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:55:51.366 [DEBUG] [Thread-157817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:55:51.414 [DEBUG] [Thread-157817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:55:51.414 [DEBUG] [Thread-157817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:55:51.423 [DEBUG] [Thread-157817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:55:51.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:55:51.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:55:51.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:55:51.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:55:51.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:55:51.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:55:51.458 [DEBUG] [Thread-157817] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:55:57.739 [DEBUG] [Thread-157819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:55:59.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:55:59.755 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:56:01.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:56:01.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:56:01.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:56:02.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 55, 41), 13.81, 38.85, 0.0, 8.8, 14.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:56:02.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:55:41
2025-09-29T13:56:02.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:56:02.295 [DEBUG] [Thread-157820] [transport.py] [_log()] starting thread (client mode): 0x2b96dab0
2025-09-29T13:56:02.296 [DEBUG] [Thread-157820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:02.316 [DEBUG] [Thread-157820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:56:02.317 [INFO] [Thread-157820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:56:02.320 [DEBUG] [Thread-157820] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:02.320 [DEBUG] [Thread-157820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:56:02.320 [DEBUG] [Thread-157820] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:02.320 [DEBUG] [Thread-157820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:02.320 [DEBUG] [Thread-157820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:02.320 [DEBUG] [Thread-157820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:02.320 [DEBUG] [Thread-157820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] Compression: none
2025-09-29T13:56:02.321 [DEBUG] [Thread-157820] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:02.337 [DEBUG] [Thread-157820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:02.337 [DEBUG] [Thread-157820] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:02.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:56:02.338 [DEBUG] [Thread-157820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:56:02.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:02.340 [DEBUG] [Thread-157820] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:02.341 [DEBUG] [Thread-157820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:02.341 [DEBUG] [Thread-157820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:02.341 [DEBUG] [Thread-157820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:56:02.341 [DEBUG] [Thread-157820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:02.364 [INFO] [Thread-157820] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:02.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:02.986 [DEBUG] [Thread-157820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:02.986 [DEBUG] [Thread-157820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:02.987 [DEBUG] [Thread-157820] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:56:03.027 [DEBUG] [Thread-157820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:03.027 [DEBUG] [Thread-157820] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:03.030 [DEBUG] [Thread-157820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:03.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:03.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:56:03.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:56:03.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:56:03.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:03.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:56:03.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:03.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:56:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.496944 -999.00  +14.80   3.74     42   +2.30 1 1 1 1 1   888    0 11.66 -22.03 ----- 3.9 3.7 172.1 8.9 23.9 -27.7 22.8 -27.4 24.2 -27.1 25.5 -28.5
2025-09-29T13:56:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:56:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:56:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.496944
2025-09-29T13:56:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:56:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:56:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:56:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:56:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:56:03.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:55:41', tmtdew=13.81, humidity=38.85, cloud=0.0, wind=8.8, temperature=14.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:55:35.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:56:03.056 [DEBUG] [Thread-157820] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:03.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:56:03.152 [DEBUG] [Thread-157823] [transport.py] [_log()] starting thread (client mode): 0x2b96fd30
2025-09-29T13:56:03.152 [DEBUG] [Thread-157823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:03.172 [DEBUG] [Thread-157823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:56:03.172 [INFO] [Thread-157823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:56:03.179 [DEBUG] [Thread-157823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:03.179 [DEBUG] [Thread-157823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:56:03.179 [DEBUG] [Thread-157823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] Compression: none
2025-09-29T13:56:03.180 [DEBUG] [Thread-157823] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:03.237 [DEBUG] [Thread-157823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:03.237 [DEBUG] [Thread-157823] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:03.238 [DEBUG] [Thread-157823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:56:03.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:56:03.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:03.294 [DEBUG] [Thread-157823] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:03.294 [DEBUG] [Thread-157823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:03.294 [DEBUG] [Thread-157823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:03.294 [DEBUG] [Thread-157823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:56:03.294 [DEBUG] [Thread-157823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:03.310 [INFO] [Thread-157823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:03.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:56:03.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:04.282 [DEBUG] [Thread-157823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:04.282 [DEBUG] [Thread-157823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:04.330 [DEBUG] [Thread-157823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:04.330 [DEBUG] [Thread-157823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:04.339 [DEBUG] [Thread-157823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:04.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:04.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:56:04.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:56:04.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:04.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:04.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:04.374 [DEBUG] [Thread-157823] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:12.777 [DEBUG] [Thread-157825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:56:14.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:56:14.375 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:56:14.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:56:14.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 55, 41), 13.81, 38.85, 0.0, 8.8, 14.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:56:14.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:55:41
2025-09-29T13:56:15.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:56:15.253 [DEBUG] [Thread-157826] [transport.py] [_log()] starting thread (client mode): 0x2b96f130
2025-09-29T13:56:15.253 [DEBUG] [Thread-157826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:15.268 [DEBUG] [Thread-157826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:56:15.268 [INFO] [Thread-157826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:15.271 [DEBUG] [Thread-157826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] Compression: none
2025-09-29T13:56:15.272 [DEBUG] [Thread-157826] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:15.287 [DEBUG] [Thread-157826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:15.287 [DEBUG] [Thread-157826] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:15.288 [DEBUG] [Thread-157826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:56:15.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:56:15.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:15.288 [DEBUG] [Thread-157826] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:15.288 [DEBUG] [Thread-157826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:15.288 [DEBUG] [Thread-157826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:15.288 [DEBUG] [Thread-157826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:56:15.289 [DEBUG] [Thread-157826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:15.305 [INFO] [Thread-157826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:15.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:15.992 [DEBUG] [Thread-157826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:15.992 [DEBUG] [Thread-157826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:15.992 [DEBUG] [Thread-157826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:56:16.033 [DEBUG] [Thread-157826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:16.033 [DEBUG] [Thread-157826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:16.035 [DEBUG] [Thread-157826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:16.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:16.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:56:16.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:56:16.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:56:16.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:16.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:56:16.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:16.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:16.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:56:16.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.496944 -999.00  +14.80   3.74     42   +2.30 1 1 1 1 1   888    0 11.66 -22.03 ----- 3.9 3.7 172.1 8.9 23.9 -27.7 22.8 -27.4 24.2 -27.1 25.5 -28.5
2025-09-29T13:56:16.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:56:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:56:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.496944
2025-09-29T13:56:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:56:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:56:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:56:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:56:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:56:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:55:41', tmtdew=13.81, humidity=38.85, cloud=0.0, wind=8.8, temperature=14.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:55:35.962', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:56:16.054 [DEBUG] [Thread-157826] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:16.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:56:16.138 [DEBUG] [Thread-157829] [transport.py] [_log()] starting thread (client mode): 0x2b96e4d0
2025-09-29T13:56:16.138 [DEBUG] [Thread-157829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:16.153 [DEBUG] [Thread-157829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:56:16.153 [INFO] [Thread-157829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] Compression: none
2025-09-29T13:56:16.161 [DEBUG] [Thread-157829] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:16.221 [DEBUG] [Thread-157829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:16.222 [DEBUG] [Thread-157829] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:16.222 [DEBUG] [Thread-157829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:56:16.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:56:16.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:16.282 [DEBUG] [Thread-157829] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:16.282 [DEBUG] [Thread-157829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:16.282 [DEBUG] [Thread-157829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:16.282 [DEBUG] [Thread-157829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:56:16.282 [DEBUG] [Thread-157829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:16.299 [INFO] [Thread-157829] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:16.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:56:16.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:17.357 [DEBUG] [Thread-157829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:17.357 [DEBUG] [Thread-157829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:17.405 [DEBUG] [Thread-157829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:17.405 [DEBUG] [Thread-157829] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:17.413 [DEBUG] [Thread-157829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:17.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:17.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:56:17.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:56:17.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:17.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:17.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:17.445 [DEBUG] [Thread-157829] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:27.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:56:27.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:56:27.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:56:27.801 [DEBUG] [Thread-157831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:56:28.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 56, 13), 13.82, 38.8, 0.0, 9.65, 14.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:56:28.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:56:13
2025-09-29T13:56:28.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:56:28.270 [DEBUG] [Thread-157832] [transport.py] [_log()] starting thread (client mode): 0x2b96fdc0
2025-09-29T13:56:28.270 [DEBUG] [Thread-157832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:28.292 [DEBUG] [Thread-157832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:56:28.292 [INFO] [Thread-157832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:56:28.296 [DEBUG] [Thread-157832] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:28.296 [DEBUG] [Thread-157832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] Compression: none
2025-09-29T13:56:28.297 [DEBUG] [Thread-157832] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:28.314 [DEBUG] [Thread-157832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:28.314 [DEBUG] [Thread-157832] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:28.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:56:28.315 [DEBUG] [Thread-157832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:56:28.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:28.317 [DEBUG] [Thread-157832] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:28.318 [DEBUG] [Thread-157832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:28.318 [DEBUG] [Thread-157832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:28.318 [DEBUG] [Thread-157832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:56:28.318 [DEBUG] [Thread-157832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:28.333 [INFO] [Thread-157832] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:28.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:28.936 [DEBUG] [Thread-157832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:28.937 [DEBUG] [Thread-157832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:28.937 [DEBUG] [Thread-157832] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:56:28.977 [DEBUG] [Thread-157832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:28.977 [DEBUG] [Thread-157832] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:28.981 [DEBUG] [Thread-157832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:28.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:28.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:56:28.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:56:28.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:56:29.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:29.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:56:29.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:29.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:56:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.497291 -999.00  +14.70  11.38     42   +2.20 1 1 1 1 1   888    0 11.45 -26.54 ----- 9.0 11.4 183.6 14.5 23.7 -28.9 22.4 -34.9 24.1 -28.3 25.3 -29.9
2025-09-29T13:56:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:56:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:56:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.497291
2025-09-29T13:56:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:56:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:56:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:56:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:56:29.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:56:29.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:56:13', tmtdew=13.82, humidity=38.8, cloud=0.0, wind=9.65, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:56:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:56:29.011 [DEBUG] [Thread-157832] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:29.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:56:29.107 [DEBUG] [Thread-157835] [transport.py] [_log()] starting thread (client mode): 0x2b96c910
2025-09-29T13:56:29.107 [DEBUG] [Thread-157835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:29.122 [DEBUG] [Thread-157835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:56:29.122 [INFO] [Thread-157835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:29.129 [DEBUG] [Thread-157835] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:29.130 [DEBUG] [Thread-157835] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:29.130 [DEBUG] [Thread-157835] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:29.130 [DEBUG] [Thread-157835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:29.130 [DEBUG] [Thread-157835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:29.130 [DEBUG] [Thread-157835] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:29.130 [DEBUG] [Thread-157835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:29.130 [DEBUG] [Thread-157835] [transport.py] [_log()] Compression: none
2025-09-29T13:56:29.130 [DEBUG] [Thread-157835] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:29.186 [DEBUG] [Thread-157835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:29.187 [DEBUG] [Thread-157835] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:29.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:56:29.187 [DEBUG] [Thread-157835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:56:29.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:29.242 [DEBUG] [Thread-157835] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:29.243 [DEBUG] [Thread-157835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:29.243 [DEBUG] [Thread-157835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:29.243 [DEBUG] [Thread-157835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:56:29.243 [DEBUG] [Thread-157835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:29.260 [INFO] [Thread-157835] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:29.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:56:29.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:30.274 [DEBUG] [Thread-157835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:30.275 [DEBUG] [Thread-157835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:30.322 [DEBUG] [Thread-157835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:30.322 [DEBUG] [Thread-157835] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:30.331 [DEBUG] [Thread-157835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:30.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:30.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:56:30.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:56:30.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:30.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:30.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:30.370 [DEBUG] [Thread-157835] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:40.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:56:40.373 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:56:40.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:56:40.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 56, 13), 13.82, 38.8, 0.0, 9.65, 14.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:56:40.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:56:13
2025-09-29T13:56:41.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:56:41.194 [DEBUG] [Thread-157837] [transport.py] [_log()] starting thread (client mode): 0x2b96fb80
2025-09-29T13:56:41.194 [DEBUG] [Thread-157837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:41.215 [DEBUG] [Thread-157837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:56:41.215 [INFO] [Thread-157837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:56:41.218 [DEBUG] [Thread-157837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:41.218 [DEBUG] [Thread-157837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:56:41.218 [DEBUG] [Thread-157837] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:41.218 [DEBUG] [Thread-157837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:41.218 [DEBUG] [Thread-157837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:41.219 [DEBUG] [Thread-157837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:41.220 [DEBUG] [Thread-157837] [transport.py] [_log()] Compression: none
2025-09-29T13:56:41.220 [DEBUG] [Thread-157837] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:41.238 [DEBUG] [Thread-157837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:41.239 [DEBUG] [Thread-157837] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:41.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:56:41.240 [DEBUG] [Thread-157837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:56:41.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:41.241 [DEBUG] [Thread-157837] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:41.242 [DEBUG] [Thread-157837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:41.242 [DEBUG] [Thread-157837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:41.242 [DEBUG] [Thread-157837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:56:41.242 [DEBUG] [Thread-157837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:41.260 [INFO] [Thread-157837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:41.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:41.998 [DEBUG] [Thread-157837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:41.998 [DEBUG] [Thread-157837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:41.998 [DEBUG] [Thread-157837] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:56:42.039 [DEBUG] [Thread-157837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:42.040 [DEBUG] [Thread-157837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:42.042 [DEBUG] [Thread-157837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:42.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:42.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:56:42.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:56:42.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:56:42.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:42.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:56:42.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:42.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:42.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:56:42.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.497291 -999.00  +14.70  11.38     42   +2.20 1 1 1 1 1   888    0 11.45 -26.54 ----- 9.0 11.4 183.6 14.5 23.7 -28.9 22.4 -34.9 24.1 -28.3 25.3 -29.9
2025-09-29T13:56:42.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:56:42.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:56:42.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.497291
2025-09-29T13:56:42.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:56:42.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:56:42.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:56:42.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:56:42.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:56:42.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:56:13', tmtdew=13.82, humidity=38.8, cloud=0.0, wind=9.65, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:56:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:56:42.066 [DEBUG] [Thread-157837] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:42.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:56:42.149 [DEBUG] [Thread-157840] [transport.py] [_log()] starting thread (client mode): 0x2b9bbe50
2025-09-29T13:56:42.149 [DEBUG] [Thread-157840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:42.169 [DEBUG] [Thread-157840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:56:42.169 [INFO] [Thread-157840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:56:42.176 [DEBUG] [Thread-157840] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:42.176 [DEBUG] [Thread-157840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] Compression: none
2025-09-29T13:56:42.177 [DEBUG] [Thread-157840] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:42.234 [DEBUG] [Thread-157840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:42.235 [DEBUG] [Thread-157840] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:42.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:56:42.236 [DEBUG] [Thread-157840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:56:42.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:42.290 [DEBUG] [Thread-157840] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:42.291 [DEBUG] [Thread-157840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:42.291 [DEBUG] [Thread-157840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:42.291 [DEBUG] [Thread-157840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:56:42.291 [DEBUG] [Thread-157840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:42.309 [INFO] [Thread-157840] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:42.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:56:42.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:42.827 [DEBUG] [Thread-157842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:56:43.267 [DEBUG] [Thread-157840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:43.268 [DEBUG] [Thread-157840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:43.319 [DEBUG] [Thread-157840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:43.319 [DEBUG] [Thread-157840] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:43.329 [DEBUG] [Thread-157840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:43.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:43.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:56:43.347 [DEBUG] [Thread-157843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:56:43.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:56:43.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:43.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:43.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:43.367 [DEBUG] [Thread-157840] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:53.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:56:53.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:56:53.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:56:53.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 56, 45), 13.85, 38.7, 0.0, 14.35, 14.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:56:53.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:56:45
2025-09-29T13:56:54.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:56:54.240 [DEBUG] [Thread-157844] [transport.py] [_log()] starting thread (client mode): 0x2b9b91b0
2025-09-29T13:56:54.240 [DEBUG] [Thread-157844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:54.261 [DEBUG] [Thread-157844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:56:54.261 [INFO] [Thread-157844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] Compression: none
2025-09-29T13:56:54.264 [DEBUG] [Thread-157844] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:54.279 [DEBUG] [Thread-157844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:54.279 [DEBUG] [Thread-157844] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:54.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:56:54.280 [DEBUG] [Thread-157844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:56:54.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:54.280 [DEBUG] [Thread-157844] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:54.280 [DEBUG] [Thread-157844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:54.280 [DEBUG] [Thread-157844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:54.280 [DEBUG] [Thread-157844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:56:54.280 [DEBUG] [Thread-157844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:54.295 [INFO] [Thread-157844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:54.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:55.073 [DEBUG] [Thread-157844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:55.073 [DEBUG] [Thread-157844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:55.073 [DEBUG] [Thread-157844] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:56:55.114 [DEBUG] [Thread-157844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:55.114 [DEBUG] [Thread-157844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:55.116 [DEBUG] [Thread-157844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:55.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:55.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:56:55.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:56:55.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:56:55.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:55.135 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:56:55.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.497291 -999.00  +14.70  11.38     42   +2.20 1 1 1 1 1   888    0 11.45 -26.54 ----- 9.0 11.4 183.6 14.5 23.7 -28.9 22.4 -34.9 24.1 -28.3 25.3 -29.9
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.497291
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:56:55.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:56:45', tmtdew=13.85, humidity=38.7, cloud=0.0, wind=14.35, temperature=14.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:56:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:56:55.136 [DEBUG] [Thread-157844] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:55.210 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:56:55.219 [DEBUG] [Thread-157847] [transport.py] [_log()] starting thread (client mode): 0x2b96ea70
2025-09-29T13:56:55.219 [DEBUG] [Thread-157847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:56:55.234 [DEBUG] [Thread-157847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:56:55.234 [INFO] [Thread-157847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:56:55.241 [DEBUG] [Thread-157847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:56:55.241 [DEBUG] [Thread-157847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:56:55.241 [DEBUG] [Thread-157847] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:56:55.241 [DEBUG] [Thread-157847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:55.241 [DEBUG] [Thread-157847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:56:55.241 [DEBUG] [Thread-157847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:55.241 [DEBUG] [Thread-157847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:56:55.241 [DEBUG] [Thread-157847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] client lang: <none>
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] server lang: <none>
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] kex follows: False
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] Compression: none
2025-09-29T13:56:55.242 [DEBUG] [Thread-157847] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:56:55.296 [DEBUG] [Thread-157847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:56:55.297 [DEBUG] [Thread-157847] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:56:55.297 [DEBUG] [Thread-157847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:56:55.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:56:55.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:56:55.354 [DEBUG] [Thread-157847] [transport.py] [_log()] userauth is OK
2025-09-29T13:56:55.354 [DEBUG] [Thread-157847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:56:55.354 [DEBUG] [Thread-157847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:56:55.354 [DEBUG] [Thread-157847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:56:55.354 [DEBUG] [Thread-157847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:56:55.368 [INFO] [Thread-157847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:56:55.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:56:55.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:56:56.413 [DEBUG] [Thread-157847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:56:56.413 [DEBUG] [Thread-157847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:56:56.461 [DEBUG] [Thread-157847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:56:56.461 [DEBUG] [Thread-157847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:56:56.469 [DEBUG] [Thread-157847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:56:56.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:56:56.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:56:56.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:56:56.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:56:56.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:56:56.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:56:56.500 [DEBUG] [Thread-157847] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:56:57.866 [DEBUG] [Thread-157849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:56:59.894 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:56:59.895 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:57:06.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:57:06.499 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:57:06.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:57:07.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 56, 45), 13.85, 38.7, 0.0, 14.35, 14.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:57:07.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:56:45
2025-09-29T13:57:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:57:07.350 [DEBUG] [Thread-157850] [transport.py] [_log()] starting thread (client mode): 0x2b90cf70
2025-09-29T13:57:07.350 [DEBUG] [Thread-157850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:07.370 [DEBUG] [Thread-157850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:57:07.370 [INFO] [Thread-157850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:57:07.373 [DEBUG] [Thread-157850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:07.373 [DEBUG] [Thread-157850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:57:07.373 [DEBUG] [Thread-157850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:07.373 [DEBUG] [Thread-157850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:07.373 [DEBUG] [Thread-157850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:07.373 [DEBUG] [Thread-157850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:07.373 [DEBUG] [Thread-157850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] Compression: none
2025-09-29T13:57:07.374 [DEBUG] [Thread-157850] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:07.391 [DEBUG] [Thread-157850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:07.391 [DEBUG] [Thread-157850] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:07.392 [DEBUG] [Thread-157850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:57:07.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:57:07.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:07.394 [DEBUG] [Thread-157850] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:07.394 [DEBUG] [Thread-157850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:07.394 [DEBUG] [Thread-157850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:07.394 [DEBUG] [Thread-157850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:57:07.394 [DEBUG] [Thread-157850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:07.412 [INFO] [Thread-157850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:07.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:57:08.015 [DEBUG] [Thread-157850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:57:08.015 [DEBUG] [Thread-157850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:57:08.015 [DEBUG] [Thread-157850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:57:08.056 [DEBUG] [Thread-157850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:57:08.056 [DEBUG] [Thread-157850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:57:08.061 [DEBUG] [Thread-157850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:57:08.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:57:08.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:57:08.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:57:08.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:57:08.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:57:08.082 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:57:08.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:57:08.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:57:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:57:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.497638 -999.00  +15.00  12.91     42   +2.40 1 1 1 1 1   888    0 11.43 -26.89 ----- 11.4 12.9 164.6 14.6 23.9 -28.3 22.5 -27.7 24.1 -27.8 25.3 -29.9
2025-09-29T13:57:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:57:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:57:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.497638
2025-09-29T13:57:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:57:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:57:08.084 [DEBUG] [Thread-157850] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:57:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:57:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:57:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:57:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:56:45', tmtdew=13.85, humidity=38.7, cloud=0.0, wind=14.35, temperature=14.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:56:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:57:08.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:57:08.179 [DEBUG] [Thread-157853] [transport.py] [_log()] starting thread (client mode): 0x2b90eda0
2025-09-29T13:57:08.180 [DEBUG] [Thread-157853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:08.194 [DEBUG] [Thread-157853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:57:08.194 [INFO] [Thread-157853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:57:08.201 [DEBUG] [Thread-157853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] Compression: none
2025-09-29T13:57:08.202 [DEBUG] [Thread-157853] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:08.257 [DEBUG] [Thread-157853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:08.257 [DEBUG] [Thread-157853] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:08.257 [DEBUG] [Thread-157853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:57:08.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:57:08.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:08.315 [DEBUG] [Thread-157853] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:08.315 [DEBUG] [Thread-157853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:08.315 [DEBUG] [Thread-157853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:08.315 [DEBUG] [Thread-157853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:57:08.315 [DEBUG] [Thread-157853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:08.338 [INFO] [Thread-157853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:08.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:57:08.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:57:09.296 [DEBUG] [Thread-157853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:57:09.296 [DEBUG] [Thread-157853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:57:09.344 [DEBUG] [Thread-157853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:57:09.344 [DEBUG] [Thread-157853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:57:09.352 [DEBUG] [Thread-157853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:57:09.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:57:09.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:57:09.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:57:09.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:57:09.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:57:09.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:57:09.384 [DEBUG] [Thread-157853] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:57:12.903 [DEBUG] [Thread-157855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:57:19.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:57:19.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:57:19.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:57:19.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 56, 45), 13.85, 38.7, 0.0, 14.35, 14.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:57:19.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:56:45
2025-09-29T13:57:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:57:20.214 [DEBUG] [Thread-157856] [transport.py] [_log()] starting thread (client mode): 0x2b96e7a0
2025-09-29T13:57:20.214 [DEBUG] [Thread-157856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:20.234 [DEBUG] [Thread-157856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:57:20.235 [INFO] [Thread-157856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:57:20.236 [DEBUG] [Thread-157856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:20.236 [DEBUG] [Thread-157856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:57:20.236 [DEBUG] [Thread-157856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] Compression: none
2025-09-29T13:57:20.237 [DEBUG] [Thread-157856] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:20.256 [DEBUG] [Thread-157856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:20.256 [DEBUG] [Thread-157856] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:20.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:57:20.257 [DEBUG] [Thread-157856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:57:20.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:20.259 [DEBUG] [Thread-157856] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:20.260 [DEBUG] [Thread-157856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:20.260 [DEBUG] [Thread-157856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:20.260 [DEBUG] [Thread-157856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:57:20.260 [DEBUG] [Thread-157856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:20.283 [INFO] [Thread-157856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:20.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:57:21.048 [DEBUG] [Thread-157856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:57:21.048 [DEBUG] [Thread-157856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:57:21.048 [DEBUG] [Thread-157856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:57:21.089 [DEBUG] [Thread-157856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:57:21.089 [DEBUG] [Thread-157856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:57:21.091 [DEBUG] [Thread-157856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:57:21.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:57:21.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:57:21.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:57:21.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:57:21.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:57:21.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:57:21.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:57:21.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:57:21.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:57:21.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.497638 -999.00  +15.00  12.91     42   +2.40 1 1 1 1 1   888    0 11.43 -26.89 ----- 11.4 12.9 164.6 14.6 23.9 -28.3 22.5 -27.7 24.1 -27.8 25.3 -29.9
2025-09-29T13:57:21.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:57:21.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:57:21.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.497638
2025-09-29T13:57:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:57:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:57:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:57:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:57:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:57:21.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:56:45', tmtdew=13.85, humidity=38.7, cloud=0.0, wind=14.35, temperature=14.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:56:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:57:21.109 [DEBUG] [Thread-157856] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:57:21.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:57:21.200 [DEBUG] [Thread-157859] [transport.py] [_log()] starting thread (client mode): 0x2b9b9990
2025-09-29T13:57:21.200 [DEBUG] [Thread-157859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:21.215 [DEBUG] [Thread-157859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:57:21.215 [INFO] [Thread-157859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:57:21.222 [DEBUG] [Thread-157859] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] Compression: none
2025-09-29T13:57:21.223 [DEBUG] [Thread-157859] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:21.282 [DEBUG] [Thread-157859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:21.282 [DEBUG] [Thread-157859] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:21.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:57:21.283 [DEBUG] [Thread-157859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:57:21.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:21.338 [DEBUG] [Thread-157859] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:21.339 [DEBUG] [Thread-157859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:21.339 [DEBUG] [Thread-157859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:21.339 [DEBUG] [Thread-157859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:57:21.339 [DEBUG] [Thread-157859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:21.358 [INFO] [Thread-157859] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:21.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:57:21.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:57:22.417 [DEBUG] [Thread-157859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:57:22.417 [DEBUG] [Thread-157859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:57:22.465 [DEBUG] [Thread-157859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:57:22.465 [DEBUG] [Thread-157859] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:57:22.474 [DEBUG] [Thread-157859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:57:22.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:57:22.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:57:22.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:57:22.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:57:22.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:57:22.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:57:22.508 [DEBUG] [Thread-157859] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:57:27.950 [DEBUG] [Thread-157861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:57:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:57:32.510 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:57:32.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:57:33.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 57, 17), 13.84, 38.7, 0.0, 15.32, 14.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:57:33.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:57:17
2025-09-29T13:57:33.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:57:33.376 [DEBUG] [Thread-157862] [transport.py] [_log()] starting thread (client mode): 0x2b90ec20
2025-09-29T13:57:33.376 [DEBUG] [Thread-157862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:33.396 [DEBUG] [Thread-157862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:57:33.396 [INFO] [Thread-157862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] Compression: none
2025-09-29T13:57:33.399 [DEBUG] [Thread-157862] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:33.415 [DEBUG] [Thread-157862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:33.415 [DEBUG] [Thread-157862] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:33.415 [DEBUG] [Thread-157862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:57:33.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:57:33.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:33.416 [DEBUG] [Thread-157862] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:33.416 [DEBUG] [Thread-157862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:33.416 [DEBUG] [Thread-157862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:33.416 [DEBUG] [Thread-157862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:57:33.416 [DEBUG] [Thread-157862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:33.430 [INFO] [Thread-157862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:33.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:57:34.064 [DEBUG] [Thread-157862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:57:34.064 [DEBUG] [Thread-157862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:57:34.064 [DEBUG] [Thread-157862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:57:34.105 [DEBUG] [Thread-157862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:57:34.105 [DEBUG] [Thread-157862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:57:34.106 [DEBUG] [Thread-157862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:57:34.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:57:34.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:57:34.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:57:34.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:57:34.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:57:34.128 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:57:34.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.497986 -999.00  +14.80   9.54     42   +2.10 1 1 1 1 1   888    0 11.62 -26.05 ----- 10.0 9.5 185.4 15.3 23.9 -29.1 22.5 -32.6 24.1 -27.9 25.4 -28.8
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.497986
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:57:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:57:17', tmtdew=13.84, humidity=38.7, cloud=0.0, wind=15.32, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:57:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:57:34.128 [DEBUG] [Thread-157862] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:57:34.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:57:34.212 [DEBUG] [Thread-157865] [transport.py] [_log()] starting thread (client mode): 0x2b90fa30
2025-09-29T13:57:34.213 [DEBUG] [Thread-157865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:34.227 [DEBUG] [Thread-157865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:57:34.227 [INFO] [Thread-157865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] Compression: none
2025-09-29T13:57:34.235 [DEBUG] [Thread-157865] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:34.292 [DEBUG] [Thread-157865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:34.293 [DEBUG] [Thread-157865] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:34.293 [DEBUG] [Thread-157865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:57:34.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:57:34.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:34.350 [DEBUG] [Thread-157865] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:34.350 [DEBUG] [Thread-157865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:34.350 [DEBUG] [Thread-157865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:34.350 [DEBUG] [Thread-157865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:57:34.350 [DEBUG] [Thread-157865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:34.364 [INFO] [Thread-157865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:34.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:57:34.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:57:35.323 [DEBUG] [Thread-157865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:57:35.324 [DEBUG] [Thread-157865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:57:35.372 [DEBUG] [Thread-157865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:57:35.372 [DEBUG] [Thread-157865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:57:35.380 [DEBUG] [Thread-157865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:57:35.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:57:35.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:57:35.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:57:35.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:57:35.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:57:35.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:57:35.411 [DEBUG] [Thread-157865] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:57:42.980 [DEBUG] [Thread-157867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:57:43.383 [DEBUG] [Thread-157868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:57:45.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:57:45.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:57:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:57:45.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 57, 17), 13.84, 38.7, 0.0, 15.32, 14.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:57:45.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:57:17
2025-09-29T13:57:46.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:57:46.253 [DEBUG] [Thread-157869] [transport.py] [_log()] starting thread (client mode): 0x2b96d870
2025-09-29T13:57:46.253 [DEBUG] [Thread-157869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:46.274 [DEBUG] [Thread-157869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:57:46.274 [INFO] [Thread-157869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:46.277 [DEBUG] [Thread-157869] [transport.py] [_log()] Compression: none
2025-09-29T13:57:46.278 [DEBUG] [Thread-157869] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:46.296 [DEBUG] [Thread-157869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:46.297 [DEBUG] [Thread-157869] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:46.297 [DEBUG] [Thread-157869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:57:46.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:57:46.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:46.299 [DEBUG] [Thread-157869] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:46.300 [DEBUG] [Thread-157869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:46.300 [DEBUG] [Thread-157869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:46.300 [DEBUG] [Thread-157869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:57:46.300 [DEBUG] [Thread-157869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:46.335 [INFO] [Thread-157869] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:46.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:57:47.125 [DEBUG] [Thread-157869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:57:47.125 [DEBUG] [Thread-157869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:57:47.125 [DEBUG] [Thread-157869] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:57:47.166 [DEBUG] [Thread-157869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:57:47.166 [DEBUG] [Thread-157869] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:57:47.168 [DEBUG] [Thread-157869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:57:47.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:57:47.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:57:47.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:57:47.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:57:47.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:57:47.193 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:57:47.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:57:47.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:57:47.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:57:47.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.497986 -999.00  +14.80   9.54     42   +2.10 1 1 1 1 1   888    0 11.62 -26.05 ----- 10.0 9.5 185.4 15.3 23.9 -29.1 22.5 -32.6 24.1 -27.9 25.4 -28.8
2025-09-29T13:57:47.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:57:47.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:57:47.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.497986
2025-09-29T13:57:47.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:57:47.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:57:47.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:57:47.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:57:47.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:57:47.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:57:17', tmtdew=13.84, humidity=38.7, cloud=0.0, wind=15.32, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:57:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:57:47.196 [DEBUG] [Thread-157869] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:57:47.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:57:47.293 [DEBUG] [Thread-157872] [transport.py] [_log()] starting thread (client mode): 0x2b96ebc0
2025-09-29T13:57:47.293 [DEBUG] [Thread-157872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:47.308 [DEBUG] [Thread-157872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:57:47.308 [INFO] [Thread-157872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:47.316 [DEBUG] [Thread-157872] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:47.317 [DEBUG] [Thread-157872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:47.317 [DEBUG] [Thread-157872] [transport.py] [_log()] Compression: none
2025-09-29T13:57:47.317 [DEBUG] [Thread-157872] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:47.378 [DEBUG] [Thread-157872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:47.378 [DEBUG] [Thread-157872] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:47.379 [DEBUG] [Thread-157872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:57:47.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:57:47.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:47.435 [DEBUG] [Thread-157872] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:47.435 [DEBUG] [Thread-157872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:47.435 [DEBUG] [Thread-157872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:47.435 [DEBUG] [Thread-157872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:57:47.435 [DEBUG] [Thread-157872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:47.455 [INFO] [Thread-157872] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:47.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:57:47.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:57:48.461 [DEBUG] [Thread-157872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:57:48.461 [DEBUG] [Thread-157872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:57:48.509 [DEBUG] [Thread-157872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:57:48.509 [DEBUG] [Thread-157872] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:57:48.518 [DEBUG] [Thread-157872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:57:48.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:57:48.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:57:48.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:57:48.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:57:48.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:57:48.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:57:48.553 [DEBUG] [Thread-157872] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:57:58.025 [DEBUG] [Thread-157874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:57:58.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:57:58.556 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:57:58.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:57:59.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 57, 49), 14.02, 38.27, 0.0, 11.15, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:57:59.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:57:49
2025-09-29T13:57:59.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:57:59.390 [DEBUG] [Thread-157875] [transport.py] [_log()] starting thread (client mode): 0x2b96f3a0
2025-09-29T13:57:59.391 [DEBUG] [Thread-157875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:57:59.411 [DEBUG] [Thread-157875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:57:59.411 [INFO] [Thread-157875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:57:59.414 [DEBUG] [Thread-157875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:57:59.414 [DEBUG] [Thread-157875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:57:59.414 [DEBUG] [Thread-157875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:57:59.414 [DEBUG] [Thread-157875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:59.414 [DEBUG] [Thread-157875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] client lang: <none>
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] server lang: <none>
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] kex follows: False
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] Compression: none
2025-09-29T13:57:59.415 [DEBUG] [Thread-157875] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:57:59.434 [DEBUG] [Thread-157875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:57:59.435 [DEBUG] [Thread-157875] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:57:59.436 [DEBUG] [Thread-157875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:57:59.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:57:59.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:57:59.439 [DEBUG] [Thread-157875] [transport.py] [_log()] userauth is OK
2025-09-29T13:57:59.439 [DEBUG] [Thread-157875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:57:59.439 [DEBUG] [Thread-157875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:57:59.439 [DEBUG] [Thread-157875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:57:59.439 [DEBUG] [Thread-157875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:57:59.462 [INFO] [Thread-157875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:57:59.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:00.037 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:58:00.039 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:58:00.242 [DEBUG] [Thread-157875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:00.242 [DEBUG] [Thread-157875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:00.242 [DEBUG] [Thread-157875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:58:00.283 [DEBUG] [Thread-157875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:00.284 [DEBUG] [Thread-157875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:00.287 [DEBUG] [Thread-157875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:00.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:00.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:58:00.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:58:00.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:58:00.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:00.309 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:58:00.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:00.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:00.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:58:00.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.497986 -999.00  +14.80   9.54     42   +2.10 1 1 1 1 1   888    0 11.62 -26.05 ----- 10.0 9.5 185.4 15.3 23.9 -29.1 22.5 -32.6 24.1 -27.9 25.4 -28.8
2025-09-29T13:58:00.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:58:00.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:58:00.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.497986
2025-09-29T13:58:00.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:58:00.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:58:00.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:58:00.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:58:00.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:58:00.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:57:49', tmtdew=14.02, humidity=38.27, cloud=0.0, wind=11.15, temperature=14.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:57:05.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:58:00.312 [DEBUG] [Thread-157875] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:00.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:58:00.406 [DEBUG] [Thread-157878] [transport.py] [_log()] starting thread (client mode): 0x2b90ec50
2025-09-29T13:58:00.407 [DEBUG] [Thread-157878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:00.421 [DEBUG] [Thread-157878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:58:00.421 [INFO] [Thread-157878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:58:00.429 [DEBUG] [Thread-157878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:00.429 [DEBUG] [Thread-157878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:58:00.429 [DEBUG] [Thread-157878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:00.429 [DEBUG] [Thread-157878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:00.429 [DEBUG] [Thread-157878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:00.429 [DEBUG] [Thread-157878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] Compression: none
2025-09-29T13:58:00.430 [DEBUG] [Thread-157878] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:00.486 [DEBUG] [Thread-157878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:00.487 [DEBUG] [Thread-157878] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:00.487 [DEBUG] [Thread-157878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:58:00.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:58:00.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:00.542 [DEBUG] [Thread-157878] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:00.543 [DEBUG] [Thread-157878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:00.543 [DEBUG] [Thread-157878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:00.543 [DEBUG] [Thread-157878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:58:00.543 [DEBUG] [Thread-157878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:00.561 [INFO] [Thread-157878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:00.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:58:00.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:01.531 [DEBUG] [Thread-157878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:01.532 [DEBUG] [Thread-157878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:01.579 [DEBUG] [Thread-157878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:01.580 [DEBUG] [Thread-157878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:01.589 [DEBUG] [Thread-157878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:01.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:01.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:58:01.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:58:01.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:01.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:01.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:01.626 [DEBUG] [Thread-157878] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:11.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:58:11.628 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:58:11.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:58:12.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 57, 49), 14.02, 38.27, 0.0, 11.15, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:58:12.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:57:49
2025-09-29T13:58:12.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:58:12.489 [DEBUG] [Thread-157880] [transport.py] [_log()] starting thread (client mode): 0x2b90cf10
2025-09-29T13:58:12.489 [DEBUG] [Thread-157880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:12.510 [DEBUG] [Thread-157880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:58:12.510 [INFO] [Thread-157880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:12.512 [DEBUG] [Thread-157880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] Compression: none
2025-09-29T13:58:12.513 [DEBUG] [Thread-157880] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:12.530 [DEBUG] [Thread-157880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:12.530 [DEBUG] [Thread-157880] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:12.530 [DEBUG] [Thread-157880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:58:12.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:58:12.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:12.531 [DEBUG] [Thread-157880] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:12.531 [DEBUG] [Thread-157880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:12.531 [DEBUG] [Thread-157880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:12.531 [DEBUG] [Thread-157880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:58:12.531 [DEBUG] [Thread-157880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:12.540 [INFO] [Thread-157880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:12.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:13.051 [DEBUG] [Thread-157882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:58:13.188 [DEBUG] [Thread-157880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:13.188 [DEBUG] [Thread-157880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:13.188 [DEBUG] [Thread-157880] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:58:13.229 [DEBUG] [Thread-157880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:13.229 [DEBUG] [Thread-157880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:13.231 [DEBUG] [Thread-157880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:13.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:13.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:58:13.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:58:13.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:58:13.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:13.247 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:58:13.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:13.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:13.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:58:13.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.498333 -999.00  +14.80   6.36     42   +2.20 1 1 1 1 1   888    0 11.42 -26.05 ----- 2.9 6.4 194.0 11.4 24.0 -28.6 22.7 -27.2 24.2 -27.5 25.4 -29.8
2025-09-29T13:58:13.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:58:13.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:58:13.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.498333
2025-09-29T13:58:13.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:58:13.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:58:13.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:58:13.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:58:13.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:58:13.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:57:49', tmtdew=14.02, humidity=38.27, cloud=0.0, wind=11.15, temperature=14.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:57:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:58:13.248 [DEBUG] [Thread-157880] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:13.321 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:58:13.332 [DEBUG] [Thread-157884] [transport.py] [_log()] starting thread (client mode): 0x2b90e410
2025-09-29T13:58:13.332 [DEBUG] [Thread-157884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:13.347 [DEBUG] [Thread-157884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:58:13.347 [INFO] [Thread-157884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:58:13.354 [DEBUG] [Thread-157884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:13.354 [DEBUG] [Thread-157884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:58:13.354 [DEBUG] [Thread-157884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:13.354 [DEBUG] [Thread-157884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:13.354 [DEBUG] [Thread-157884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:13.354 [DEBUG] [Thread-157884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:13.354 [DEBUG] [Thread-157884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] Compression: none
2025-09-29T13:58:13.355 [DEBUG] [Thread-157884] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:13.413 [DEBUG] [Thread-157884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:13.413 [DEBUG] [Thread-157884] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:13.413 [DEBUG] [Thread-157884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:58:13.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:58:13.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:13.470 [DEBUG] [Thread-157884] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:13.470 [DEBUG] [Thread-157884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:13.470 [DEBUG] [Thread-157884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:13.470 [DEBUG] [Thread-157884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:58:13.470 [DEBUG] [Thread-157884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:13.484 [INFO] [Thread-157884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:13.485 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:58:13.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:14.468 [DEBUG] [Thread-157884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:14.468 [DEBUG] [Thread-157884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:14.516 [DEBUG] [Thread-157884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:14.516 [DEBUG] [Thread-157884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:14.524 [DEBUG] [Thread-157884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:14.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:14.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:58:14.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:58:14.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:14.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:14.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:14.557 [DEBUG] [Thread-157884] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:24.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:58:24.560 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:58:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:58:25.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 58, 21), 13.99, 38.35, 0.0, 10.29, 14.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:58:25.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:58:21
2025-09-29T13:58:25.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:58:25.396 [DEBUG] [Thread-157886] [transport.py] [_log()] starting thread (client mode): 0x2b9bb160
2025-09-29T13:58:25.396 [DEBUG] [Thread-157886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:25.417 [DEBUG] [Thread-157886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:58:25.417 [INFO] [Thread-157886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:58:25.420 [DEBUG] [Thread-157886] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:25.420 [DEBUG] [Thread-157886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:58:25.420 [DEBUG] [Thread-157886] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:25.420 [DEBUG] [Thread-157886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:25.420 [DEBUG] [Thread-157886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:25.420 [DEBUG] [Thread-157886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:25.420 [DEBUG] [Thread-157886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:25.420 [DEBUG] [Thread-157886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] Compression: none
2025-09-29T13:58:25.421 [DEBUG] [Thread-157886] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:25.441 [DEBUG] [Thread-157886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:25.441 [DEBUG] [Thread-157886] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:25.442 [DEBUG] [Thread-157886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:58:25.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:58:25.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:25.444 [DEBUG] [Thread-157886] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:25.445 [DEBUG] [Thread-157886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:25.445 [DEBUG] [Thread-157886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:25.445 [DEBUG] [Thread-157886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:58:25.445 [DEBUG] [Thread-157886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:25.468 [INFO] [Thread-157886] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:25.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:26.285 [DEBUG] [Thread-157886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:26.285 [DEBUG] [Thread-157886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:26.285 [DEBUG] [Thread-157886] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:58:26.326 [DEBUG] [Thread-157886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:26.326 [DEBUG] [Thread-157886] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:26.330 [DEBUG] [Thread-157886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:26.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:26.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:58:26.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:58:26.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:58:26.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:26.354 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:58:26.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:26.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:26.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:58:26.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.498333 -999.00  +14.80   6.36     42   +2.20 1 1 1 1 1   888    0 11.42 -26.05 ----- 2.9 6.4 194.0 11.4 24.0 -28.6 22.7 -27.2 24.2 -27.5 25.4 -29.8
2025-09-29T13:58:26.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:58:26.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:58:26.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.498333
2025-09-29T13:58:26.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:58:26.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:58:26.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:58:26.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:58:26.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:58:26.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:58:21', tmtdew=13.99, humidity=38.35, cloud=0.0, wind=10.29, temperature=14.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:57:35.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:58:26.356 [DEBUG] [Thread-157886] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:26.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:58:26.452 [DEBUG] [Thread-157889] [transport.py] [_log()] starting thread (client mode): 0x2b9baef0
2025-09-29T13:58:26.452 [DEBUG] [Thread-157889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:26.467 [DEBUG] [Thread-157889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:58:26.467 [INFO] [Thread-157889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:58:26.474 [DEBUG] [Thread-157889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:26.475 [DEBUG] [Thread-157889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:26.476 [DEBUG] [Thread-157889] [transport.py] [_log()] Compression: none
2025-09-29T13:58:26.476 [DEBUG] [Thread-157889] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:26.535 [DEBUG] [Thread-157889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:26.535 [DEBUG] [Thread-157889] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:26.536 [DEBUG] [Thread-157889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:58:26.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:58:26.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:26.594 [DEBUG] [Thread-157889] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:26.595 [DEBUG] [Thread-157889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:26.595 [DEBUG] [Thread-157889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:26.595 [DEBUG] [Thread-157889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:58:26.595 [DEBUG] [Thread-157889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:26.614 [INFO] [Thread-157889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:26.614 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:58:26.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:27.576 [DEBUG] [Thread-157889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:27.576 [DEBUG] [Thread-157889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:27.624 [DEBUG] [Thread-157889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:27.624 [DEBUG] [Thread-157889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:27.634 [DEBUG] [Thread-157889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:27.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:27.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:58:27.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:58:27.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:27.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:27.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:27.669 [DEBUG] [Thread-157889] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:28.083 [DEBUG] [Thread-157891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:58:37.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:58:37.672 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:58:37.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:58:38.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 58, 21), 13.99, 38.35, 0.0, 10.29, 14.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:58:38.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:58:21
2025-09-29T13:58:38.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:58:38.510 [DEBUG] [Thread-157892] [transport.py] [_log()] starting thread (client mode): 0x2b96ebc0
2025-09-29T13:58:38.510 [DEBUG] [Thread-157892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:38.529 [DEBUG] [Thread-157892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:58:38.529 [INFO] [Thread-157892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:38.532 [DEBUG] [Thread-157892] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:38.533 [DEBUG] [Thread-157892] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:38.533 [DEBUG] [Thread-157892] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:38.533 [DEBUG] [Thread-157892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:38.533 [DEBUG] [Thread-157892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:38.533 [DEBUG] [Thread-157892] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:38.533 [DEBUG] [Thread-157892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:38.533 [DEBUG] [Thread-157892] [transport.py] [_log()] Compression: none
2025-09-29T13:58:38.533 [DEBUG] [Thread-157892] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:38.550 [DEBUG] [Thread-157892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:38.550 [DEBUG] [Thread-157892] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:38.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:58:38.551 [DEBUG] [Thread-157892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:58:38.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:38.552 [DEBUG] [Thread-157892] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:38.552 [DEBUG] [Thread-157892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:38.552 [DEBUG] [Thread-157892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:38.553 [DEBUG] [Thread-157892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:58:38.553 [DEBUG] [Thread-157892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:38.584 [INFO] [Thread-157892] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:38.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:39.244 [DEBUG] [Thread-157892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:39.244 [DEBUG] [Thread-157892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:39.245 [DEBUG] [Thread-157892] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:58:39.285 [DEBUG] [Thread-157892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:39.285 [DEBUG] [Thread-157892] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:39.288 [DEBUG] [Thread-157892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:39.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:39.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:58:39.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:58:39.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:58:39.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:39.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:58:39.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:39.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:39.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:58:39.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.498680 -999.00  +15.10   8.50     42   +2.30 1 1 1 1 1   888    0 11.71 -23.07 ----- 5.8 8.5 169.6 11.0 24.1 -27.8 22.9 -27.1 24.3 -27.4 25.6 -28.6
2025-09-29T13:58:39.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:58:39.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:58:39.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.498680
2025-09-29T13:58:39.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:58:39.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:58:39.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:58:39.313 [DEBUG] [Thread-157892] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:39.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:58:39.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:58:39.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:58:21', tmtdew=13.99, humidity=38.35, cloud=0.0, wind=10.29, temperature=14.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:58:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:58:39.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:58:39.410 [DEBUG] [Thread-157895] [transport.py] [_log()] starting thread (client mode): 0x2b96edd0
2025-09-29T13:58:39.411 [DEBUG] [Thread-157895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:39.425 [DEBUG] [Thread-157895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:58:39.425 [INFO] [Thread-157895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:39.433 [DEBUG] [Thread-157895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:39.434 [DEBUG] [Thread-157895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:39.434 [DEBUG] [Thread-157895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:39.434 [DEBUG] [Thread-157895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:39.434 [DEBUG] [Thread-157895] [transport.py] [_log()] Compression: none
2025-09-29T13:58:39.434 [DEBUG] [Thread-157895] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:39.491 [DEBUG] [Thread-157895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:39.492 [DEBUG] [Thread-157895] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:39.492 [DEBUG] [Thread-157895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:58:39.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:58:39.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:39.546 [DEBUG] [Thread-157895] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:39.547 [DEBUG] [Thread-157895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:39.547 [DEBUG] [Thread-157895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:39.547 [DEBUG] [Thread-157895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:58:39.547 [DEBUG] [Thread-157895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:39.565 [INFO] [Thread-157895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:39.566 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:58:39.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:40.524 [DEBUG] [Thread-157895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:40.525 [DEBUG] [Thread-157895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:40.573 [DEBUG] [Thread-157895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:40.573 [DEBUG] [Thread-157895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:40.581 [DEBUG] [Thread-157895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:40.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:40.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:58:40.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:58:40.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:40.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:40.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:40.612 [DEBUG] [Thread-157895] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:43.118 [DEBUG] [Thread-157897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:58:43.441 [DEBUG] [Thread-157898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:58:50.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:58:50.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:58:50.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:58:51.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 58, 21), 13.99, 38.35, 0.0, 10.29, 14.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:58:51.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:58:21
2025-09-29T13:58:51.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:58:51.450 [DEBUG] [Thread-157899] [transport.py] [_log()] starting thread (client mode): 0x2b96c040
2025-09-29T13:58:51.450 [DEBUG] [Thread-157899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:51.469 [DEBUG] [Thread-157899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:58:51.470 [INFO] [Thread-157899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] Compression: none
2025-09-29T13:58:51.473 [DEBUG] [Thread-157899] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:51.490 [DEBUG] [Thread-157899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:51.491 [DEBUG] [Thread-157899] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:51.491 [DEBUG] [Thread-157899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:58:51.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:58:51.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:51.493 [DEBUG] [Thread-157899] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:51.493 [DEBUG] [Thread-157899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:51.493 [DEBUG] [Thread-157899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:51.493 [DEBUG] [Thread-157899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:58:51.493 [DEBUG] [Thread-157899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:51.508 [INFO] [Thread-157899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:51.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:52.316 [DEBUG] [Thread-157899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:52.316 [DEBUG] [Thread-157899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:52.317 [DEBUG] [Thread-157899] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:58:52.357 [DEBUG] [Thread-157899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:52.357 [DEBUG] [Thread-157899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:52.360 [DEBUG] [Thread-157899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:52.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:52.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:58:52.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:58:52.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:58:52.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:52.383 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:58:52.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:52.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:58:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.498680 -999.00  +15.10   8.50     42   +2.30 1 1 1 1 1   888    0 11.71 -23.07 ----- 5.8 8.5 169.6 11.0 24.1 -27.8 22.9 -27.1 24.3 -27.4 25.6 -28.6
2025-09-29T13:58:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:58:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:58:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.498680
2025-09-29T13:58:52.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:58:52.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:58:52.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:58:52.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:58:52.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:58:52.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:58:21', tmtdew=13.99, humidity=38.35, cloud=0.0, wind=10.29, temperature=14.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:58:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:58:52.386 [DEBUG] [Thread-157899] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:52.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:58:52.480 [DEBUG] [Thread-157902] [transport.py] [_log()] starting thread (client mode): 0x2b9555a0
2025-09-29T13:58:52.480 [DEBUG] [Thread-157902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:58:52.495 [DEBUG] [Thread-157902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:58:52.495 [INFO] [Thread-157902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:58:52.503 [DEBUG] [Thread-157902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:58:52.503 [DEBUG] [Thread-157902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:58:52.503 [DEBUG] [Thread-157902] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:58:52.503 [DEBUG] [Thread-157902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:52.503 [DEBUG] [Thread-157902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:58:52.504 [DEBUG] [Thread-157902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:52.504 [DEBUG] [Thread-157902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:58:52.504 [DEBUG] [Thread-157902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:58:52.504 [DEBUG] [Thread-157902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:58:52.504 [DEBUG] [Thread-157902] [transport.py] [_log()] client lang: <none>
2025-09-29T13:58:52.504 [DEBUG] [Thread-157902] [transport.py] [_log()] server lang: <none>
2025-09-29T13:58:52.504 [DEBUG] [Thread-157902] [transport.py] [_log()] kex follows: False
2025-09-29T13:58:52.505 [DEBUG] [Thread-157902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:58:52.505 [DEBUG] [Thread-157902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:58:52.505 [DEBUG] [Thread-157902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:58:52.505 [DEBUG] [Thread-157902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:58:52.505 [DEBUG] [Thread-157902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:58:52.505 [DEBUG] [Thread-157902] [transport.py] [_log()] Compression: none
2025-09-29T13:58:52.505 [DEBUG] [Thread-157902] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:58:52.567 [DEBUG] [Thread-157902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:58:52.567 [DEBUG] [Thread-157902] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:58:52.568 [DEBUG] [Thread-157902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:58:52.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:58:52.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:58:52.623 [DEBUG] [Thread-157902] [transport.py] [_log()] userauth is OK
2025-09-29T13:58:52.623 [DEBUG] [Thread-157902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:58:52.623 [DEBUG] [Thread-157902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:58:52.623 [DEBUG] [Thread-157902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:58:52.623 [DEBUG] [Thread-157902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:58:52.643 [INFO] [Thread-157902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:58:52.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:58:52.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:58:53.646 [DEBUG] [Thread-157902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:58:53.646 [DEBUG] [Thread-157902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:58:53.695 [DEBUG] [Thread-157902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:58:53.695 [DEBUG] [Thread-157902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:58:53.703 [DEBUG] [Thread-157902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:58:53.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:58:53.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:58:53.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:58:53.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:58:53.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:58:53.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:58:53.734 [DEBUG] [Thread-157902] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:58:58.162 [DEBUG] [Thread-157904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:59:00.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:59:00.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:59:03.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:59:03.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:59:03.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:59:04.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 58, 53), 13.91, 38.57, 0.0, 12.09, 14.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:59:04.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:58:53
2025-09-29T13:59:04.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:59:04.617 [DEBUG] [Thread-157905] [transport.py] [_log()] starting thread (client mode): 0x2b957970
2025-09-29T13:59:04.617 [DEBUG] [Thread-157905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:04.637 [DEBUG] [Thread-157905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:59:04.637 [INFO] [Thread-157905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:59:04.641 [DEBUG] [Thread-157905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:04.641 [DEBUG] [Thread-157905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:59:04.641 [DEBUG] [Thread-157905] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:04.641 [DEBUG] [Thread-157905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:04.641 [DEBUG] [Thread-157905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] Compression: none
2025-09-29T13:59:04.642 [DEBUG] [Thread-157905] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:04.659 [DEBUG] [Thread-157905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:04.660 [DEBUG] [Thread-157905] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:04.660 [DEBUG] [Thread-157905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:59:04.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:59:04.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:04.662 [DEBUG] [Thread-157905] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:04.663 [DEBUG] [Thread-157905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:04.663 [DEBUG] [Thread-157905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:04.663 [DEBUG] [Thread-157905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:59:04.663 [DEBUG] [Thread-157905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:04.686 [INFO] [Thread-157905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:04.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:05.486 [DEBUG] [Thread-157905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:05.486 [DEBUG] [Thread-157905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:05.486 [DEBUG] [Thread-157905] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:59:05.527 [DEBUG] [Thread-157905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:05.527 [DEBUG] [Thread-157905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:05.530 [DEBUG] [Thread-157905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:05.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:05.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:59:05.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:59:05.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:59:05.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:05.545 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:59:05.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:05.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:59:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.498680 -999.00  +15.10   8.50     42   +2.30 1 1 1 1 1   888    0 11.71 -23.07 ----- 5.8 8.5 169.6 11.0 24.1 -27.8 22.9 -27.1 24.3 -27.4 25.6 -28.6
2025-09-29T13:59:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:59:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:59:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.498680
2025-09-29T13:59:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:59:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:59:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:59:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:59:05.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:59:05.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:58:53', tmtdew=13.91, humidity=38.57, cloud=0.0, wind=12.09, temperature=14.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:58:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:59:05.548 [DEBUG] [Thread-157905] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:05.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:59:05.645 [DEBUG] [Thread-157908] [transport.py] [_log()] starting thread (client mode): 0x2b90ca30
2025-09-29T13:59:05.645 [DEBUG] [Thread-157908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:05.660 [DEBUG] [Thread-157908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:59:05.660 [INFO] [Thread-157908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:05.668 [DEBUG] [Thread-157908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:05.669 [DEBUG] [Thread-157908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:05.669 [DEBUG] [Thread-157908] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:05.669 [DEBUG] [Thread-157908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:05.669 [DEBUG] [Thread-157908] [transport.py] [_log()] Compression: none
2025-09-29T13:59:05.669 [DEBUG] [Thread-157908] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:05.726 [DEBUG] [Thread-157908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:05.726 [DEBUG] [Thread-157908] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:05.727 [DEBUG] [Thread-157908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:59:05.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:59:05.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:05.782 [DEBUG] [Thread-157908] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:05.782 [DEBUG] [Thread-157908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:05.782 [DEBUG] [Thread-157908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:05.782 [DEBUG] [Thread-157908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:59:05.782 [DEBUG] [Thread-157908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:05.796 [INFO] [Thread-157908] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:05.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:59:05.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:06.749 [DEBUG] [Thread-157908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:06.749 [DEBUG] [Thread-157908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:06.797 [DEBUG] [Thread-157908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:06.797 [DEBUG] [Thread-157908] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:06.808 [DEBUG] [Thread-157908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:06.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:06.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:59:06.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:59:06.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:06.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:06.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:06.851 [DEBUG] [Thread-157908] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:13.189 [DEBUG] [Thread-157910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:59:16.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:59:16.853 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:59:16.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:59:17.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 58, 53), 13.91, 38.57, 0.0, 12.09, 14.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:59:17.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:58:53
2025-09-29T13:59:17.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:59:17.699 [DEBUG] [Thread-157911] [transport.py] [_log()] starting thread (client mode): 0x2b96c3a0
2025-09-29T13:59:17.700 [DEBUG] [Thread-157911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:17.720 [DEBUG] [Thread-157911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:59:17.720 [INFO] [Thread-157911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:59:17.723 [DEBUG] [Thread-157911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] Compression: none
2025-09-29T13:59:17.724 [DEBUG] [Thread-157911] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:17.741 [DEBUG] [Thread-157911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:17.741 [DEBUG] [Thread-157911] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:17.742 [DEBUG] [Thread-157911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:59:17.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:59:17.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:17.743 [DEBUG] [Thread-157911] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:17.744 [DEBUG] [Thread-157911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:17.744 [DEBUG] [Thread-157911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:17.744 [DEBUG] [Thread-157911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:59:17.744 [DEBUG] [Thread-157911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:17.767 [INFO] [Thread-157911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:17.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:18.366 [DEBUG] [Thread-157911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:18.366 [DEBUG] [Thread-157911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:18.367 [DEBUG] [Thread-157911] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:59:18.407 [DEBUG] [Thread-157911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:18.407 [DEBUG] [Thread-157911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:18.409 [DEBUG] [Thread-157911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:18.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:18.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:59:18.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:59:18.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:59:18.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:18.425 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:59:18.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:18.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.499027 -999.00  +15.10   9.57     41   +2.10 1 1 1 1 1   888    0 11.67 -20.71 ----- 8.2 9.6 185.6 12.5 24.1 -28.7 22.8 -33.2 24.3 -28.0 25.7 -28.3
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.499027
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:59:18.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:58:53', tmtdew=13.91, humidity=38.57, cloud=0.0, wind=12.09, temperature=14.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:58:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:59:18.426 [DEBUG] [Thread-157911] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:18.501 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:59:18.511 [DEBUG] [Thread-157914] [transport.py] [_log()] starting thread (client mode): 0x2b96da20
2025-09-29T13:59:18.511 [DEBUG] [Thread-157914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:18.525 [DEBUG] [Thread-157914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:59:18.525 [INFO] [Thread-157914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:59:18.533 [DEBUG] [Thread-157914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:18.533 [DEBUG] [Thread-157914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] Compression: none
2025-09-29T13:59:18.534 [DEBUG] [Thread-157914] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:18.590 [DEBUG] [Thread-157914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:18.591 [DEBUG] [Thread-157914] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:18.591 [DEBUG] [Thread-157914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:59:18.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:59:18.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:18.647 [DEBUG] [Thread-157914] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:18.647 [DEBUG] [Thread-157914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:18.647 [DEBUG] [Thread-157914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:18.647 [DEBUG] [Thread-157914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:59:18.647 [DEBUG] [Thread-157914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:18.667 [INFO] [Thread-157914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:18.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:59:18.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:19.653 [DEBUG] [Thread-157914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:19.654 [DEBUG] [Thread-157914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:19.701 [DEBUG] [Thread-157914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:19.701 [DEBUG] [Thread-157914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:19.710 [DEBUG] [Thread-157914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:19.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:19.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:59:19.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:59:19.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:19.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:19.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:19.746 [DEBUG] [Thread-157914] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:28.233 [DEBUG] [Thread-157916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:59:29.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:59:29.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:59:29.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:59:30.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 59, 25), 13.99, 38.34, 0.0, 10.13, 14.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:59:30.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:59:25
2025-09-29T13:59:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:59:30.607 [DEBUG] [Thread-157917] [transport.py] [_log()] starting thread (client mode): 0x2b96dc00
2025-09-29T13:59:30.607 [DEBUG] [Thread-157917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:30.627 [DEBUG] [Thread-157917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:59:30.627 [INFO] [Thread-157917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:59:30.630 [DEBUG] [Thread-157917] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:30.630 [DEBUG] [Thread-157917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:30.631 [DEBUG] [Thread-157917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:30.632 [DEBUG] [Thread-157917] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:30.632 [DEBUG] [Thread-157917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:30.632 [DEBUG] [Thread-157917] [transport.py] [_log()] Compression: none
2025-09-29T13:59:30.632 [DEBUG] [Thread-157917] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:30.649 [DEBUG] [Thread-157917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:30.650 [DEBUG] [Thread-157917] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:30.650 [DEBUG] [Thread-157917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:59:30.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:59:30.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:30.652 [DEBUG] [Thread-157917] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:30.652 [DEBUG] [Thread-157917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:30.652 [DEBUG] [Thread-157917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:30.652 [DEBUG] [Thread-157917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:59:30.652 [DEBUG] [Thread-157917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:30.669 [INFO] [Thread-157917] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:30.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:31.470 [DEBUG] [Thread-157917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:31.470 [DEBUG] [Thread-157917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:31.471 [DEBUG] [Thread-157917] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:59:31.511 [DEBUG] [Thread-157917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:31.512 [DEBUG] [Thread-157917] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:31.514 [DEBUG] [Thread-157917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:31.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:31.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:59:31.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:59:31.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:59:31.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:31.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:59:31.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:31.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:31.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:59:31.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.499027 -999.00  +15.10   9.57     41   +2.10 1 1 1 1 1   888    0 11.67 -20.71 ----- 8.2 9.6 185.6 12.5 24.1 -28.7 22.8 -33.2 24.3 -28.0 25.7 -28.3
2025-09-29T13:59:31.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:59:31.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:59:31.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.499027
2025-09-29T13:59:31.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:59:31.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:59:31.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:59:31.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:59:31.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:59:31.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:59:25', tmtdew=13.99, humidity=38.34, cloud=0.0, wind=10.13, temperature=14.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:58:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:59:31.540 [DEBUG] [Thread-157917] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:31.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:59:31.636 [DEBUG] [Thread-157920] [transport.py] [_log()] starting thread (client mode): 0x2b90ded0
2025-09-29T13:59:31.637 [DEBUG] [Thread-157920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:31.652 [DEBUG] [Thread-157920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:59:31.652 [INFO] [Thread-157920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:59:31.660 [DEBUG] [Thread-157920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:31.660 [DEBUG] [Thread-157920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:59:31.660 [DEBUG] [Thread-157920] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:31.660 [DEBUG] [Thread-157920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:31.660 [DEBUG] [Thread-157920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:31.660 [DEBUG] [Thread-157920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:31.660 [DEBUG] [Thread-157920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:31.661 [DEBUG] [Thread-157920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:31.662 [DEBUG] [Thread-157920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:31.662 [DEBUG] [Thread-157920] [transport.py] [_log()] Compression: none
2025-09-29T13:59:31.662 [DEBUG] [Thread-157920] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:31.719 [DEBUG] [Thread-157920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:31.719 [DEBUG] [Thread-157920] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:31.720 [DEBUG] [Thread-157920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:59:31.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:59:31.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:31.774 [DEBUG] [Thread-157920] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:31.775 [DEBUG] [Thread-157920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:31.775 [DEBUG] [Thread-157920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:31.775 [DEBUG] [Thread-157920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:59:31.775 [DEBUG] [Thread-157920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:31.794 [INFO] [Thread-157920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:31.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:59:31.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:32.794 [DEBUG] [Thread-157920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:32.794 [DEBUG] [Thread-157920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:32.842 [DEBUG] [Thread-157920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:32.842 [DEBUG] [Thread-157920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:32.851 [DEBUG] [Thread-157920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:32.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:32.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:59:32.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:59:32.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:32.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:32.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:32.886 [DEBUG] [Thread-157920] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:42.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:59:42.889 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:59:42.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:59:43.279 [DEBUG] [Thread-157922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:59:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 59, 25), 13.99, 38.34, 0.0, 10.13, 14.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:59:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:59:25
2025-09-29T13:59:43.491 [DEBUG] [Thread-157923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:59:43.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:59:43.744 [DEBUG] [Thread-157924] [transport.py] [_log()] starting thread (client mode): 0x2b9575e0
2025-09-29T13:59:43.744 [DEBUG] [Thread-157924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:43.756 [DEBUG] [Thread-157924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:59:43.756 [INFO] [Thread-157924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:59:43.757 [DEBUG] [Thread-157924] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] Compression: none
2025-09-29T13:59:43.758 [DEBUG] [Thread-157924] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:43.768 [DEBUG] [Thread-157924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:43.768 [DEBUG] [Thread-157924] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:43.769 [DEBUG] [Thread-157924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:59:43.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:59:43.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:43.770 [DEBUG] [Thread-157924] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:43.770 [DEBUG] [Thread-157924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:43.770 [DEBUG] [Thread-157924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:43.770 [DEBUG] [Thread-157924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:59:43.770 [DEBUG] [Thread-157924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:43.783 [INFO] [Thread-157924] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:43.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:44.438 [DEBUG] [Thread-157924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:44.438 [DEBUG] [Thread-157924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:44.438 [DEBUG] [Thread-157924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:59:44.478 [DEBUG] [Thread-157924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:44.478 [DEBUG] [Thread-157924] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:44.481 [DEBUG] [Thread-157924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:44.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:44.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:59:44.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:59:44.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:59:44.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:44.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:59:44.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:44.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:59:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.499722 -999.00  +15.10   8.22     41   +2.10 1 1 1 1 1   888    0 11.87 -13.60 ----- 8.6 8.2 189.6 11.4 24.0 -27.9 22.5 -32.9 24.2 -27.1 25.6 -30.0
2025-09-29T13:59:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:59:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:59:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.499722
2025-09-29T13:59:44.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:59:44.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:59:44.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:59:44.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:59:44.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:59:44.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:59:25', tmtdew=13.99, humidity=38.34, cloud=0.0, wind=10.13, temperature=14.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:59:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:59:44.507 [DEBUG] [Thread-157924] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:44.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:59:44.603 [DEBUG] [Thread-157927] [transport.py] [_log()] starting thread (client mode): 0x2b90f130
2025-09-29T13:59:44.603 [DEBUG] [Thread-157927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:44.619 [DEBUG] [Thread-157927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:59:44.620 [INFO] [Thread-157927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:44.627 [DEBUG] [Thread-157927] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] Compression: none
2025-09-29T13:59:44.628 [DEBUG] [Thread-157927] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:44.690 [DEBUG] [Thread-157927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:44.690 [DEBUG] [Thread-157927] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:44.691 [DEBUG] [Thread-157927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:59:44.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:59:44.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:44.747 [DEBUG] [Thread-157927] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:44.748 [DEBUG] [Thread-157927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:44.748 [DEBUG] [Thread-157927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:44.748 [DEBUG] [Thread-157927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:59:44.748 [DEBUG] [Thread-157927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:44.768 [INFO] [Thread-157927] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:44.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:59:44.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:45.761 [DEBUG] [Thread-157927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:45.761 [DEBUG] [Thread-157927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:45.809 [DEBUG] [Thread-157927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:45.809 [DEBUG] [Thread-157927] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:45.818 [DEBUG] [Thread-157927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:45.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:45.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:59:45.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:59:45.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:45.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:45.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:45.852 [DEBUG] [Thread-157927] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:55.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T13:59:55.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T13:59:55.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T13:59:56.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 59, 25), 13.99, 38.34, 0.0, 10.13, 14.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T13:59:56.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:59:25
2025-09-29T13:59:56.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T13:59:56.692 [DEBUG] [Thread-157929] [transport.py] [_log()] starting thread (client mode): 0x2b90d4b0
2025-09-29T13:59:56.692 [DEBUG] [Thread-157929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:56.712 [DEBUG] [Thread-157929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T13:59:56.712 [INFO] [Thread-157929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T13:59:56.714 [DEBUG] [Thread-157929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:56.714 [DEBUG] [Thread-157929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T13:59:56.714 [DEBUG] [Thread-157929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:56.714 [DEBUG] [Thread-157929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:56.714 [DEBUG] [Thread-157929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:56.714 [DEBUG] [Thread-157929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:56.714 [DEBUG] [Thread-157929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] Compression: none
2025-09-29T13:59:56.715 [DEBUG] [Thread-157929] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:56.727 [DEBUG] [Thread-157929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:56.728 [DEBUG] [Thread-157929] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:56.728 [DEBUG] [Thread-157929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T13:59:56.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T13:59:56.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:56.730 [DEBUG] [Thread-157929] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:56.731 [DEBUG] [Thread-157929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:56.731 [DEBUG] [Thread-157929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:56.731 [DEBUG] [Thread-157929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T13:59:56.731 [DEBUG] [Thread-157929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:56.748 [INFO] [Thread-157929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:56.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:57.575 [DEBUG] [Thread-157929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:57.575 [DEBUG] [Thread-157929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:57.575 [DEBUG] [Thread-157929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T13:59:57.616 [DEBUG] [Thread-157929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:57.616 [DEBUG] [Thread-157929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:57.618 [DEBUG] [Thread-157929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:57.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:57.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T13:59:57.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T13:59:57.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T13:59:57.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:57.637 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T13:59:57.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:57.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:57.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T13:59:57.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.499722 -999.00  +15.10   8.22     41   +2.10 1 1 1 1 1   888    0 11.87 -13.60 ----- 8.6 8.2 189.6 11.4 24.0 -27.9 22.5 -32.9 24.2 -27.1 25.6 -30.0
2025-09-29T13:59:57.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T13:59:57.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T13:59:57.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.499722
2025-09-29T13:59:57.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T13:59:57.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T13:59:57.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T13:59:57.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T13:59:57.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T13:59:57.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:59:25', tmtdew=13.99, humidity=38.34, cloud=0.0, wind=10.13, temperature=14.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:59:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T13:59:57.638 [DEBUG] [Thread-157929] [transport.py] [_log()] EOF in transport thread
2025-09-29T13:59:57.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T13:59:57.722 [DEBUG] [Thread-157932] [transport.py] [_log()] starting thread (client mode): 0x2b90c5b0
2025-09-29T13:59:57.722 [DEBUG] [Thread-157932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T13:59:57.738 [DEBUG] [Thread-157932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T13:59:57.738 [INFO] [Thread-157932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] client lang: <none>
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] server lang: <none>
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] kex follows: False
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] Compression: none
2025-09-29T13:59:57.745 [DEBUG] [Thread-157932] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T13:59:57.801 [DEBUG] [Thread-157932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T13:59:57.801 [DEBUG] [Thread-157932] [transport.py] [_log()] Switch to new keys ...
2025-09-29T13:59:57.801 [DEBUG] [Thread-157932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T13:59:57.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T13:59:57.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T13:59:57.862 [DEBUG] [Thread-157932] [transport.py] [_log()] userauth is OK
2025-09-29T13:59:57.862 [DEBUG] [Thread-157932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T13:59:57.862 [DEBUG] [Thread-157932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T13:59:57.862 [DEBUG] [Thread-157932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T13:59:57.862 [DEBUG] [Thread-157932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T13:59:57.876 [INFO] [Thread-157932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T13:59:57.876 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T13:59:57.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T13:59:58.313 [DEBUG] [Thread-157934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T13:59:58.865 [DEBUG] [Thread-157932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T13:59:58.865 [DEBUG] [Thread-157932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T13:59:58.913 [DEBUG] [Thread-157932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T13:59:58.913 [DEBUG] [Thread-157932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T13:59:58.921 [DEBUG] [Thread-157932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T13:59:58.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T13:59:58.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T13:59:58.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T13:59:58.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T13:59:58.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T13:59:58.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T13:59:58.952 [DEBUG] [Thread-157932] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:00.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:00:00.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:00:08.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:00:08.956 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:00:08.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:00:09.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 59, 57), 13.92, 38.62, 0.0, 9.71, 14.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:00:09.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:59:57
2025-09-29T14:00:09.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:00:09.805 [DEBUG] [Thread-157935] [transport.py] [_log()] starting thread (client mode): 0x2b954ac0
2025-09-29T14:00:09.805 [DEBUG] [Thread-157935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:00:09.823 [DEBUG] [Thread-157935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:00:09.823 [INFO] [Thread-157935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:00:09.824 [DEBUG] [Thread-157935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:00:09.824 [DEBUG] [Thread-157935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:00:09.824 [DEBUG] [Thread-157935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:00:09.824 [DEBUG] [Thread-157935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:09.824 [DEBUG] [Thread-157935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:09.824 [DEBUG] [Thread-157935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:09.824 [DEBUG] [Thread-157935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:09.824 [DEBUG] [Thread-157935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] client lang: <none>
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] server lang: <none>
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] kex follows: False
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] Compression: none
2025-09-29T14:00:09.825 [DEBUG] [Thread-157935] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:00:09.833 [DEBUG] [Thread-157935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:00:09.833 [DEBUG] [Thread-157935] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:00:09.834 [DEBUG] [Thread-157935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:00:09.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:00:09.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:00:09.835 [DEBUG] [Thread-157935] [transport.py] [_log()] userauth is OK
2025-09-29T14:00:09.835 [DEBUG] [Thread-157935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:00:09.835 [DEBUG] [Thread-157935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:00:09.835 [DEBUG] [Thread-157935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:00:09.835 [DEBUG] [Thread-157935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:00:09.853 [INFO] [Thread-157935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:00:09.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:00:13.347 [DEBUG] [Thread-157937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:00:17.265 [DEBUG] [Thread-157935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:00:17.265 [DEBUG] [Thread-157935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:00:17.265 [DEBUG] [Thread-157935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:00:17.306 [DEBUG] [Thread-157935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:00:17.306 [DEBUG] [Thread-157935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:00:17.308 [DEBUG] [Thread-157935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:00:17.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:00:17.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:00:17.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:00:17.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:00:17.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:00:17.331 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:00:17.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:00:17.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:00:17.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:00:17.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.499722 -999.00  +15.10   8.22     41   +2.10 1 1 1 1 1   888    0 11.87 -13.60 ----- 8.6 8.2 189.6 11.4 24.0 -27.9 22.5 -32.9 24.2 -27.1 25.6 -30.0
2025-09-29T14:00:17.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:00:17.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:00:17.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.499722
2025-09-29T14:00:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:00:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:00:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:00:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:00:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:00:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:59:57', tmtdew=13.92, humidity=38.62, cloud=0.0, wind=9.71, temperature=14.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T11:59:35.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:00:17.332 [DEBUG] [Thread-157935] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:17.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:00:17.418 [DEBUG] [Thread-157939] [transport.py] [_log()] starting thread (client mode): 0x2b954070
2025-09-29T14:00:17.419 [DEBUG] [Thread-157939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:00:17.433 [DEBUG] [Thread-157939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:00:17.433 [INFO] [Thread-157939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] client lang: <none>
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] server lang: <none>
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] kex follows: False
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] Compression: none
2025-09-29T14:00:17.441 [DEBUG] [Thread-157939] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:00:17.497 [DEBUG] [Thread-157939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:00:17.497 [DEBUG] [Thread-157939] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:00:17.497 [DEBUG] [Thread-157939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:00:17.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:00:17.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:00:17.554 [DEBUG] [Thread-157939] [transport.py] [_log()] userauth is OK
2025-09-29T14:00:17.554 [DEBUG] [Thread-157939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:00:17.554 [DEBUG] [Thread-157939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:00:17.554 [DEBUG] [Thread-157939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:00:17.554 [DEBUG] [Thread-157939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:00:17.568 [INFO] [Thread-157939] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:00:17.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:00:17.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:00:18.522 [DEBUG] [Thread-157939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:00:18.522 [DEBUG] [Thread-157939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:00:18.570 [DEBUG] [Thread-157939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:00:18.570 [DEBUG] [Thread-157939] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:00:18.578 [DEBUG] [Thread-157939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:00:18.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:00:18.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:00:18.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:00:18.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:00:18.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:00:18.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:00:18.610 [DEBUG] [Thread-157939] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:28.378 [DEBUG] [Thread-157941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:00:28.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:00:28.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:00:28.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:00:29.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 13, 59, 57), 13.92, 38.62, 0.0, 9.71, 14.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:00:29.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 13:59:57
2025-09-29T14:00:29.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:00:29.449 [DEBUG] [Thread-157942] [transport.py] [_log()] starting thread (client mode): 0x2b956bc0
2025-09-29T14:00:29.449 [DEBUG] [Thread-157942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:00:29.469 [DEBUG] [Thread-157942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:00:29.469 [INFO] [Thread-157942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:00:29.472 [DEBUG] [Thread-157942] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:00:29.472 [DEBUG] [Thread-157942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:00:29.472 [DEBUG] [Thread-157942] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:00:29.472 [DEBUG] [Thread-157942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] client lang: <none>
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] server lang: <none>
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] kex follows: False
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] Compression: none
2025-09-29T14:00:29.473 [DEBUG] [Thread-157942] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:00:29.487 [DEBUG] [Thread-157942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:00:29.487 [DEBUG] [Thread-157942] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:00:29.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:00:29.487 [DEBUG] [Thread-157942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:00:29.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:00:29.488 [DEBUG] [Thread-157942] [transport.py] [_log()] userauth is OK
2025-09-29T14:00:29.488 [DEBUG] [Thread-157942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:00:29.488 [DEBUG] [Thread-157942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:00:29.488 [DEBUG] [Thread-157942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:00:29.488 [DEBUG] [Thread-157942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:00:29.496 [INFO] [Thread-157942] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:00:29.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:00:30.092 [DEBUG] [Thread-157942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:00:30.092 [DEBUG] [Thread-157942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:00:30.092 [DEBUG] [Thread-157942] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:00:30.133 [DEBUG] [Thread-157942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:00:30.133 [DEBUG] [Thread-157942] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:00:30.135 [DEBUG] [Thread-157942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:00:30.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:00:30.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:00:30.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:00:30.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:00:30.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:00:30.151 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:00:30.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:00:30.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:00:30.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:00:30.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.500068 -999.00  +15.20   8.11     41   +2.10 1 1 1 1 1   888    0 12.03 -11.73 ----- 8.2 8.1 193.8 10.9 24.1 -28.1 22.8 -28.7 24.4 -27.6 25.7 -29.4
2025-09-29T14:00:30.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:00:30.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:00:30.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.500068
2025-09-29T14:00:30.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:00:30.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:00:30.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:00:30.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:00:30.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:00:30.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T13:59:57', tmtdew=13.92, humidity=38.62, cloud=0.0, wind=9.71, temperature=14.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:00:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:00:30.152 [DEBUG] [Thread-157942] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:30.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:00:30.236 [DEBUG] [Thread-157945] [transport.py] [_log()] starting thread (client mode): 0x2b9544c0
2025-09-29T14:00:30.236 [DEBUG] [Thread-157945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:00:30.251 [DEBUG] [Thread-157945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:00:30.251 [INFO] [Thread-157945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] client lang: <none>
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] server lang: <none>
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] kex follows: False
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] Compression: none
2025-09-29T14:00:30.259 [DEBUG] [Thread-157945] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:00:30.319 [DEBUG] [Thread-157945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:00:30.319 [DEBUG] [Thread-157945] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:00:30.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:00:30.319 [DEBUG] [Thread-157945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:00:30.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:00:30.374 [DEBUG] [Thread-157945] [transport.py] [_log()] userauth is OK
2025-09-29T14:00:30.374 [DEBUG] [Thread-157945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:00:30.374 [DEBUG] [Thread-157945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:00:30.374 [DEBUG] [Thread-157945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:00:30.374 [DEBUG] [Thread-157945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:00:30.389 [INFO] [Thread-157945] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:00:30.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:00:30.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:00:31.405 [DEBUG] [Thread-157945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:00:31.405 [DEBUG] [Thread-157945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:00:31.453 [DEBUG] [Thread-157945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:00:31.453 [DEBUG] [Thread-157945] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:00:31.462 [DEBUG] [Thread-157945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:00:31.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:00:31.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:00:31.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:00:31.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:00:31.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:00:31.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:00:31.495 [DEBUG] [Thread-157945] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:41.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:00:41.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:00:41.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:00:42.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 0, 29), 13.83, 38.87, 0.0, 10.71, 14.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:00:42.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:00:29
2025-09-29T14:00:42.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:00:42.342 [DEBUG] [Thread-157947] [transport.py] [_log()] starting thread (client mode): 0x2b90d840
2025-09-29T14:00:42.342 [DEBUG] [Thread-157947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:00:42.357 [DEBUG] [Thread-157947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:00:42.357 [INFO] [Thread-157947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:00:42.361 [DEBUG] [Thread-157947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] client lang: <none>
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] server lang: <none>
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] kex follows: False
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] Compression: none
2025-09-29T14:00:42.362 [DEBUG] [Thread-157947] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:00:42.379 [DEBUG] [Thread-157947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:00:42.380 [DEBUG] [Thread-157947] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:00:42.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:00:42.381 [DEBUG] [Thread-157947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:00:42.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:00:42.382 [DEBUG] [Thread-157947] [transport.py] [_log()] userauth is OK
2025-09-29T14:00:42.383 [DEBUG] [Thread-157947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:00:42.383 [DEBUG] [Thread-157947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:00:42.383 [DEBUG] [Thread-157947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:00:42.383 [DEBUG] [Thread-157947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:00:42.416 [INFO] [Thread-157947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:00:42.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:00:43.175 [DEBUG] [Thread-157947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:00:43.175 [DEBUG] [Thread-157947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:00:43.175 [DEBUG] [Thread-157947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:00:43.216 [DEBUG] [Thread-157947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:00:43.216 [DEBUG] [Thread-157947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:00:43.217 [DEBUG] [Thread-157947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:00:43.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:00:43.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:00:43.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:00:43.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:00:43.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:00:43.229 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:00:43.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:00:43.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.500068 -999.00  +15.20   8.11     41   +2.10 1 1 1 1 1   888    0 12.03 -11.73 ----- 8.2 8.1 193.8 10.9 24.1 -28.1 22.8 -28.7 24.4 -27.6 25.7 -29.4
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.500068
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:00:43.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:00:29', tmtdew=13.83, humidity=38.87, cloud=0.0, wind=10.71, temperature=14.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:00:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:00:43.230 [DEBUG] [Thread-157947] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:43.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:00:43.315 [DEBUG] [Thread-157950] [transport.py] [_log()] starting thread (client mode): 0x2b90cac0
2025-09-29T14:00:43.315 [DEBUG] [Thread-157950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:00:43.329 [DEBUG] [Thread-157950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:00:43.330 [INFO] [Thread-157950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:00:43.337 [DEBUG] [Thread-157950] [transport.py] [_log()] client lang: <none>
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] server lang: <none>
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] kex follows: False
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] Compression: none
2025-09-29T14:00:43.338 [DEBUG] [Thread-157950] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:00:43.398 [DEBUG] [Thread-157950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:00:43.398 [DEBUG] [Thread-157950] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:00:43.399 [DEBUG] [Thread-157950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:00:43.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:00:43.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:00:43.426 [DEBUG] [Thread-157952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:00:43.454 [DEBUG] [Thread-157950] [transport.py] [_log()] userauth is OK
2025-09-29T14:00:43.455 [DEBUG] [Thread-157950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:00:43.455 [DEBUG] [Thread-157950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:00:43.455 [DEBUG] [Thread-157950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:00:43.455 [DEBUG] [Thread-157950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:00:43.478 [INFO] [Thread-157950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:00:43.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:00:43.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:00:43.543 [DEBUG] [Thread-157953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:00:44.464 [DEBUG] [Thread-157950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:00:44.465 [DEBUG] [Thread-157950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:00:44.512 [DEBUG] [Thread-157950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:00:44.512 [DEBUG] [Thread-157950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:00:44.521 [DEBUG] [Thread-157950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:00:44.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:00:44.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:00:44.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:00:44.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:00:44.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:00:44.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:00:44.556 [DEBUG] [Thread-157950] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:54.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:00:54.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:00:54.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:00:55.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 0, 29), 13.83, 38.87, 0.0, 10.71, 14.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:00:55.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:00:29
2025-09-29T14:00:55.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:00:55.410 [DEBUG] [Thread-157954] [transport.py] [_log()] starting thread (client mode): 0x2b90faf0
2025-09-29T14:00:55.410 [DEBUG] [Thread-157954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:00:55.421 [DEBUG] [Thread-157954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:00:55.421 [INFO] [Thread-157954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] client lang: <none>
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] server lang: <none>
2025-09-29T14:00:55.424 [DEBUG] [Thread-157954] [transport.py] [_log()] kex follows: False
2025-09-29T14:00:55.425 [DEBUG] [Thread-157954] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:00:55.425 [DEBUG] [Thread-157954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:00:55.425 [DEBUG] [Thread-157954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:00:55.425 [DEBUG] [Thread-157954] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:00:55.425 [DEBUG] [Thread-157954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:00:55.425 [DEBUG] [Thread-157954] [transport.py] [_log()] Compression: none
2025-09-29T14:00:55.425 [DEBUG] [Thread-157954] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:00:55.440 [DEBUG] [Thread-157954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:00:55.440 [DEBUG] [Thread-157954] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:00:55.440 [DEBUG] [Thread-157954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:00:55.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:00:55.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:00:55.441 [DEBUG] [Thread-157954] [transport.py] [_log()] userauth is OK
2025-09-29T14:00:55.441 [DEBUG] [Thread-157954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:00:55.441 [DEBUG] [Thread-157954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:00:55.441 [DEBUG] [Thread-157954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:00:55.441 [DEBUG] [Thread-157954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:00:55.454 [INFO] [Thread-157954] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:00:55.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:00:56.049 [DEBUG] [Thread-157954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:00:56.049 [DEBUG] [Thread-157954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:00:56.049 [DEBUG] [Thread-157954] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:00:56.090 [DEBUG] [Thread-157954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:00:56.090 [DEBUG] [Thread-157954] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:00:56.092 [DEBUG] [Thread-157954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:00:56.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:00:56.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:00:56.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:00:56.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:00:56.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:00:56.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:00:56.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.500416 -999.00  +15.30   2.56     41   +2.20 1 1 1 1 1   888    0 12.11 -7.67 ----- 4.1 2.6 146.8 8.1 24.1 -27.3 23.0 -29.4 24.4 -27.7 25.7 -29.7
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.500416
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:00:56.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:00:29', tmtdew=13.83, humidity=38.87, cloud=0.0, wind=10.71, temperature=14.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:00:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:00:56.107 [DEBUG] [Thread-157954] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:56.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:00:56.189 [DEBUG] [Thread-157957] [transport.py] [_log()] starting thread (client mode): 0x2b9541c0
2025-09-29T14:00:56.189 [DEBUG] [Thread-157957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:00:56.204 [DEBUG] [Thread-157957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:00:56.204 [INFO] [Thread-157957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] client lang: <none>
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] server lang: <none>
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] kex follows: False
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] Compression: none
2025-09-29T14:00:56.212 [DEBUG] [Thread-157957] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:00:56.271 [DEBUG] [Thread-157957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:00:56.272 [DEBUG] [Thread-157957] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:00:56.272 [DEBUG] [Thread-157957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:00:56.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:00:56.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:00:56.330 [DEBUG] [Thread-157957] [transport.py] [_log()] userauth is OK
2025-09-29T14:00:56.330 [DEBUG] [Thread-157957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:00:56.330 [DEBUG] [Thread-157957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:00:56.330 [DEBUG] [Thread-157957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:00:56.330 [DEBUG] [Thread-157957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:00:56.344 [INFO] [Thread-157957] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:00:56.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:00:56.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:00:57.336 [DEBUG] [Thread-157957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:00:57.336 [DEBUG] [Thread-157957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:00:57.384 [DEBUG] [Thread-157957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:00:57.385 [DEBUG] [Thread-157957] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:00:57.394 [DEBUG] [Thread-157957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:00:57.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:00:57.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:00:57.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:00:57.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:00:57.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:00:57.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:00:57.430 [DEBUG] [Thread-157957] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:00:58.470 [DEBUG] [Thread-157959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:01:00.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:01:00.472 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:01:07.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:01:07.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:01:07.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:01:08.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 1), 13.84, 38.85, 0.0, 7.75, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:01:08.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:01:00
2025-09-29T14:01:08.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:01:08.289 [DEBUG] [Thread-157960] [transport.py] [_log()] starting thread (client mode): 0x2b9b8ac0
2025-09-29T14:01:08.289 [DEBUG] [Thread-157960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:01:08.309 [DEBUG] [Thread-157960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:01:08.309 [INFO] [Thread-157960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:01:08.313 [DEBUG] [Thread-157960] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:01:08.313 [DEBUG] [Thread-157960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:01:08.313 [DEBUG] [Thread-157960] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] client lang: <none>
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] server lang: <none>
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] kex follows: False
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] Compression: none
2025-09-29T14:01:08.314 [DEBUG] [Thread-157960] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:01:08.331 [DEBUG] [Thread-157960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:01:08.331 [DEBUG] [Thread-157960] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:01:08.331 [DEBUG] [Thread-157960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:01:08.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:01:08.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:01:08.332 [DEBUG] [Thread-157960] [transport.py] [_log()] userauth is OK
2025-09-29T14:01:08.332 [DEBUG] [Thread-157960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:01:08.332 [DEBUG] [Thread-157960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:01:08.332 [DEBUG] [Thread-157960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:01:08.332 [DEBUG] [Thread-157960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:01:08.344 [INFO] [Thread-157960] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:01:08.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:01:09.143 [DEBUG] [Thread-157960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:01:09.143 [DEBUG] [Thread-157960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:01:09.144 [DEBUG] [Thread-157960] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:01:09.184 [DEBUG] [Thread-157960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:01:09.184 [DEBUG] [Thread-157960] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:01:09.186 [DEBUG] [Thread-157960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:01:09.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:01:09.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:01:09.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:01:09.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:01:09.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:01:09.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:01:09.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:01:09.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:01:09.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:01:09.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.500416 -999.00  +15.30   2.56     41   +2.20 1 1 1 1 1   888    0 12.11 -7.67 ----- 4.1 2.6 146.8 8.1 24.1 -27.3 23.0 -29.4 24.4 -27.7 25.7 -29.7
2025-09-29T14:01:09.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:01:09.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:01:09.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.500416
2025-09-29T14:01:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:01:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:01:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:01:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:01:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:01:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:01:00', tmtdew=13.84, humidity=38.85, cloud=0.0, wind=7.75, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:00:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:01:09.211 [DEBUG] [Thread-157960] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:01:09.295 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:01:09.307 [DEBUG] [Thread-157963] [transport.py] [_log()] starting thread (client mode): 0x2b9bbf40
2025-09-29T14:01:09.307 [DEBUG] [Thread-157963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:01:09.322 [DEBUG] [Thread-157963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:01:09.322 [INFO] [Thread-157963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:01:09.329 [DEBUG] [Thread-157963] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:01:09.329 [DEBUG] [Thread-157963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:01:09.330 [DEBUG] [Thread-157963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:01:09.330 [DEBUG] [Thread-157963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:09.330 [DEBUG] [Thread-157963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:09.330 [DEBUG] [Thread-157963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:09.330 [DEBUG] [Thread-157963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:09.330 [DEBUG] [Thread-157963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] client lang: <none>
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] server lang: <none>
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] kex follows: False
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] Compression: none
2025-09-29T14:01:09.331 [DEBUG] [Thread-157963] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:01:09.386 [DEBUG] [Thread-157963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:01:09.387 [DEBUG] [Thread-157963] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:01:09.388 [DEBUG] [Thread-157963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:01:09.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:01:09.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:01:09.443 [DEBUG] [Thread-157963] [transport.py] [_log()] userauth is OK
2025-09-29T14:01:09.443 [DEBUG] [Thread-157963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:01:09.443 [DEBUG] [Thread-157963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:01:09.443 [DEBUG] [Thread-157963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:01:09.443 [DEBUG] [Thread-157963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:01:09.462 [INFO] [Thread-157963] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:01:09.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:01:09.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:01:10.428 [DEBUG] [Thread-157963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:01:10.428 [DEBUG] [Thread-157963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:01:10.476 [DEBUG] [Thread-157963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:01:10.476 [DEBUG] [Thread-157963] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:01:10.485 [DEBUG] [Thread-157963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:01:10.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:01:10.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:01:10.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:01:10.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:01:10.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:01:10.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:01:10.520 [DEBUG] [Thread-157963] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:01:13.515 [DEBUG] [Thread-157965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:01:20.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:01:20.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:01:20.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:01:21.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 1), 13.84, 38.85, 0.0, 7.75, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:01:21.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:01:00
2025-09-29T14:01:21.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:01:21.382 [DEBUG] [Thread-157966] [transport.py] [_log()] starting thread (client mode): 0x2b9549a0
2025-09-29T14:01:21.382 [DEBUG] [Thread-157966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:01:21.401 [DEBUG] [Thread-157966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:01:21.401 [INFO] [Thread-157966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] client lang: <none>
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] server lang: <none>
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] kex follows: False
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:01:21.405 [DEBUG] [Thread-157966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:01:21.406 [DEBUG] [Thread-157966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:01:21.406 [DEBUG] [Thread-157966] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:01:21.406 [DEBUG] [Thread-157966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:01:21.406 [DEBUG] [Thread-157966] [transport.py] [_log()] Compression: none
2025-09-29T14:01:21.406 [DEBUG] [Thread-157966] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:01:21.422 [DEBUG] [Thread-157966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:01:21.423 [DEBUG] [Thread-157966] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:01:21.423 [DEBUG] [Thread-157966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:01:21.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:01:21.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:01:21.425 [DEBUG] [Thread-157966] [transport.py] [_log()] userauth is OK
2025-09-29T14:01:21.425 [DEBUG] [Thread-157966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:01:21.425 [DEBUG] [Thread-157966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:01:21.426 [DEBUG] [Thread-157966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:01:21.426 [DEBUG] [Thread-157966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:01:21.443 [INFO] [Thread-157966] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:01:21.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:01:22.218 [DEBUG] [Thread-157966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:01:22.218 [DEBUG] [Thread-157966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:01:22.219 [DEBUG] [Thread-157966] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:01:22.259 [DEBUG] [Thread-157966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:01:22.259 [DEBUG] [Thread-157966] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:01:22.262 [DEBUG] [Thread-157966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:01:22.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:01:22.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:01:22.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:01:22.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:01:22.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:01:22.278 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:01:22.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:01:22.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:01:22.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:01:22.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.500416 -999.00  +15.30   2.56     41   +2.20 1 1 1 1 1   888    0 12.11 -7.67 ----- 4.1 2.6 146.8 8.1 24.1 -27.3 23.0 -29.4 24.4 -27.7 25.7 -29.7
2025-09-29T14:01:22.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:01:22.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:01:22.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.500416
2025-09-29T14:01:22.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:01:22.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:01:22.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:01:22.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:01:22.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:01:22.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:01:00', tmtdew=13.84, humidity=38.85, cloud=0.0, wind=7.75, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:00:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:01:22.280 [DEBUG] [Thread-157966] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:01:22.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:01:22.386 [DEBUG] [Thread-157969] [transport.py] [_log()] starting thread (client mode): 0x2b90faf0
2025-09-29T14:01:22.386 [DEBUG] [Thread-157969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:01:22.400 [DEBUG] [Thread-157969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:01:22.400 [INFO] [Thread-157969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] client lang: <none>
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] server lang: <none>
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] kex follows: False
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:01:22.408 [DEBUG] [Thread-157969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:01:22.409 [DEBUG] [Thread-157969] [transport.py] [_log()] Compression: none
2025-09-29T14:01:22.409 [DEBUG] [Thread-157969] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:01:22.466 [DEBUG] [Thread-157969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:01:22.467 [DEBUG] [Thread-157969] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:01:22.467 [DEBUG] [Thread-157969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:01:22.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:01:22.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:01:22.522 [DEBUG] [Thread-157969] [transport.py] [_log()] userauth is OK
2025-09-29T14:01:22.522 [DEBUG] [Thread-157969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:01:22.523 [DEBUG] [Thread-157969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:01:22.523 [DEBUG] [Thread-157969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:01:22.523 [DEBUG] [Thread-157969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:01:22.546 [INFO] [Thread-157969] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:01:22.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:01:22.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:01:23.514 [DEBUG] [Thread-157969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:01:23.514 [DEBUG] [Thread-157969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:01:23.562 [DEBUG] [Thread-157969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:01:23.562 [DEBUG] [Thread-157969] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:01:23.571 [DEBUG] [Thread-157969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:01:23.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:01:23.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:01:23.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:01:23.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:01:23.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:01:23.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:01:23.605 [DEBUG] [Thread-157969] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:01:28.570 [DEBUG] [Thread-157971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:01:33.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:01:33.607 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:01:33.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:01:34.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 1), 13.84, 38.85, 0.0, 7.75, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:01:34.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:01:00
2025-09-29T14:01:34.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:01:34.543 [DEBUG] [Thread-157972] [transport.py] [_log()] starting thread (client mode): 0x2b9bab30
2025-09-29T14:01:34.543 [DEBUG] [Thread-157972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:01:34.563 [DEBUG] [Thread-157972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:01:34.564 [INFO] [Thread-157972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] client lang: <none>
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] server lang: <none>
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] kex follows: False
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] Compression: none
2025-09-29T14:01:34.567 [DEBUG] [Thread-157972] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:01:34.582 [DEBUG] [Thread-157972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:01:34.582 [DEBUG] [Thread-157972] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:01:34.582 [DEBUG] [Thread-157972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:01:34.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:01:34.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:01:34.624 [DEBUG] [Thread-157972] [transport.py] [_log()] userauth is OK
2025-09-29T14:01:34.624 [DEBUG] [Thread-157972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:01:34.624 [DEBUG] [Thread-157972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:01:34.624 [DEBUG] [Thread-157972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:01:34.624 [DEBUG] [Thread-157972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:01:34.651 [INFO] [Thread-157972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:01:34.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:01:35.301 [DEBUG] [Thread-157972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:01:35.301 [DEBUG] [Thread-157972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:01:35.302 [DEBUG] [Thread-157972] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:01:35.343 [DEBUG] [Thread-157972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:01:35.343 [DEBUG] [Thread-157972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:01:35.346 [DEBUG] [Thread-157972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:01:35.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:01:35.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:01:35.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:01:35.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:01:35.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:01:35.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:01:35.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:01:35.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:01:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:01:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.500763 -999.00  +15.30  11.61     40   +2.10 1 1 1 1 1   888    0 12.44 -2.66 ----- 10.4 11.6 178.1 13.0 24.1 -29.1 22.7 -33.2 24.3 -28.8 25.8 -31.1
2025-09-29T14:01:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:01:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:01:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.500763
2025-09-29T14:01:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:01:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:01:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:01:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:01:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:01:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:01:00', tmtdew=13.84, humidity=38.85, cloud=0.0, wind=7.75, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:01:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:01:35.357 [DEBUG] [Thread-157972] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:01:35.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:01:35.441 [DEBUG] [Thread-157975] [transport.py] [_log()] starting thread (client mode): 0x2b9bb8b0
2025-09-29T14:01:35.441 [DEBUG] [Thread-157975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:01:35.457 [DEBUG] [Thread-157975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:01:35.457 [INFO] [Thread-157975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:01:35.464 [DEBUG] [Thread-157975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:01:35.464 [DEBUG] [Thread-157975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:01:35.464 [DEBUG] [Thread-157975] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:01:35.464 [DEBUG] [Thread-157975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:35.464 [DEBUG] [Thread-157975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:35.464 [DEBUG] [Thread-157975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:35.464 [DEBUG] [Thread-157975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:35.464 [DEBUG] [Thread-157975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] client lang: <none>
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] server lang: <none>
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] kex follows: False
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] Compression: none
2025-09-29T14:01:35.465 [DEBUG] [Thread-157975] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:01:35.521 [DEBUG] [Thread-157975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:01:35.521 [DEBUG] [Thread-157975] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:01:35.522 [DEBUG] [Thread-157975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:01:35.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:01:35.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:01:35.578 [DEBUG] [Thread-157975] [transport.py] [_log()] userauth is OK
2025-09-29T14:01:35.578 [DEBUG] [Thread-157975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:01:35.578 [DEBUG] [Thread-157975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:01:35.578 [DEBUG] [Thread-157975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:01:35.578 [DEBUG] [Thread-157975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:01:35.592 [INFO] [Thread-157975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:01:35.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:01:35.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:01:36.586 [DEBUG] [Thread-157975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:01:36.586 [DEBUG] [Thread-157975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:01:36.634 [DEBUG] [Thread-157975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:01:36.634 [DEBUG] [Thread-157975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:01:36.644 [DEBUG] [Thread-157975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:01:36.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:01:36.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:01:36.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:01:36.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:01:36.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:01:36.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:01:36.677 [DEBUG] [Thread-157975] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:01:43.599 [DEBUG] [Thread-157977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:01:43.603 [DEBUG] [Thread-157978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:01:46.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:01:46.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:01:46.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:01:47.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 1, 32), 14.08, 38.27, 0.0, 8.17, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:01:47.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:01:32
2025-09-29T14:01:47.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:01:47.534 [DEBUG] [Thread-157979] [transport.py] [_log()] starting thread (client mode): 0x2b956d10
2025-09-29T14:01:47.534 [DEBUG] [Thread-157979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:01:47.555 [DEBUG] [Thread-157979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:01:47.555 [INFO] [Thread-157979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:01:47.558 [DEBUG] [Thread-157979] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:01:47.559 [DEBUG] [Thread-157979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:01:47.568 [DEBUG] [Thread-157979] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:01:47.568 [DEBUG] [Thread-157979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:47.568 [DEBUG] [Thread-157979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:47.568 [DEBUG] [Thread-157979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:47.568 [DEBUG] [Thread-157979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:47.568 [DEBUG] [Thread-157979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:01:47.568 [DEBUG] [Thread-157979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:01:47.568 [DEBUG] [Thread-157979] [transport.py] [_log()] client lang: <none>
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] server lang: <none>
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] kex follows: False
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] Compression: none
2025-09-29T14:01:47.569 [DEBUG] [Thread-157979] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:01:47.587 [DEBUG] [Thread-157979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:01:47.588 [DEBUG] [Thread-157979] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:01:47.588 [DEBUG] [Thread-157979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:01:47.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:01:47.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:01:47.590 [DEBUG] [Thread-157979] [transport.py] [_log()] userauth is OK
2025-09-29T14:01:47.590 [DEBUG] [Thread-157979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:01:47.591 [DEBUG] [Thread-157979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:01:47.591 [DEBUG] [Thread-157979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:01:47.591 [DEBUG] [Thread-157979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:01:47.627 [INFO] [Thread-157979] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:01:47.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:01:48.360 [DEBUG] [Thread-157979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:01:48.361 [DEBUG] [Thread-157979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:01:48.361 [DEBUG] [Thread-157979] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:01:48.401 [DEBUG] [Thread-157979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:01:48.402 [DEBUG] [Thread-157979] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:01:48.404 [DEBUG] [Thread-157979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:01:48.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:01:48.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:01:48.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:01:48.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:01:48.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:01:48.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:01:48.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:01:48.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:01:48.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:01:48.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.500763 -999.00  +15.30  11.61     40   +2.10 1 1 1 1 1   888    0 12.44 -2.66 ----- 10.4 11.6 178.1 13.0 24.1 -29.1 22.7 -33.2 24.3 -28.8 25.8 -31.1
2025-09-29T14:01:48.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:01:48.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:01:48.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.500763
2025-09-29T14:01:48.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:01:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:01:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:01:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:01:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:01:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:01:32', tmtdew=14.08, humidity=38.27, cloud=0.0, wind=8.17, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:01:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:01:48.429 [DEBUG] [Thread-157979] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:01:48.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:01:48.523 [DEBUG] [Thread-157982] [transport.py] [_log()] starting thread (client mode): 0x2b955ed0
2025-09-29T14:01:48.523 [DEBUG] [Thread-157982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:01:48.539 [DEBUG] [Thread-157982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:01:48.539 [INFO] [Thread-157982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:01:48.546 [DEBUG] [Thread-157982] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:01:48.546 [DEBUG] [Thread-157982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:01:48.546 [DEBUG] [Thread-157982] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:01:48.546 [DEBUG] [Thread-157982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] client lang: <none>
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] server lang: <none>
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] kex follows: False
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] Compression: none
2025-09-29T14:01:48.547 [DEBUG] [Thread-157982] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:01:48.607 [DEBUG] [Thread-157982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:01:48.607 [DEBUG] [Thread-157982] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:01:48.608 [DEBUG] [Thread-157982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:01:48.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:01:48.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:01:48.662 [DEBUG] [Thread-157982] [transport.py] [_log()] userauth is OK
2025-09-29T14:01:48.663 [DEBUG] [Thread-157982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:01:48.663 [DEBUG] [Thread-157982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:01:48.663 [DEBUG] [Thread-157982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:01:48.663 [DEBUG] [Thread-157982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:01:48.682 [INFO] [Thread-157982] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:01:48.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:01:48.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:01:49.676 [DEBUG] [Thread-157982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:01:49.677 [DEBUG] [Thread-157982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:01:49.724 [DEBUG] [Thread-157982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:01:49.724 [DEBUG] [Thread-157982] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:01:49.733 [DEBUG] [Thread-157982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:01:49.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:01:49.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:01:49.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:01:49.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:01:49.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:01:49.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:01:49.768 [DEBUG] [Thread-157982] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:01:58.634 [DEBUG] [Thread-157984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:01:59.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:01:59.771 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:01:59.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:02:00.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 1, 32), 14.08, 38.27, 0.0, 8.17, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:02:00.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:01:32
2025-09-29T14:02:00.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:02:00.610 [DEBUG] [Thread-157985] [transport.py] [_log()] starting thread (client mode): 0x2b956a10
2025-09-29T14:02:00.610 [DEBUG] [Thread-157985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:00.613 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:02:00.614 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:02:00.630 [DEBUG] [Thread-157985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:02:00.630 [INFO] [Thread-157985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:00.634 [DEBUG] [Thread-157985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] Compression: none
2025-09-29T14:02:00.635 [DEBUG] [Thread-157985] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:00.651 [DEBUG] [Thread-157985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:00.652 [DEBUG] [Thread-157985] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:00.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:02:00.653 [DEBUG] [Thread-157985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:02:00.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:00.655 [DEBUG] [Thread-157985] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:00.655 [DEBUG] [Thread-157985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:00.655 [DEBUG] [Thread-157985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:00.655 [DEBUG] [Thread-157985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:02:00.655 [DEBUG] [Thread-157985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:00.673 [INFO] [Thread-157985] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:00.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:01.297 [DEBUG] [Thread-157985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:01.298 [DEBUG] [Thread-157985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:01.298 [DEBUG] [Thread-157985] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:02:01.338 [DEBUG] [Thread-157985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:01.338 [DEBUG] [Thread-157985] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:01.341 [DEBUG] [Thread-157985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:01.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:01.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:02:01.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:02:01.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:02:01.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:01.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:02:01.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:01.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:01.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:02:01.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.501111 -999.00  +15.10   6.96     40   +1.90 1 1 1 1 1   888    0 12.32 2.56 ----- 7.0 7.0 162.2 11.4 24.2 -28.0 22.8 -31.9 24.4 -27.2 25.7 -30.2
2025-09-29T14:02:01.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:02:01.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:02:01.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.501111
2025-09-29T14:02:01.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:02:01.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:02:01.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:02:01.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:02:01.365 [DEBUG] [Thread-157985] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:02:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:01:32', tmtdew=14.08, humidity=38.27, cloud=0.0, wind=8.17, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:01:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:02:01.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:02:01.462 [DEBUG] [Thread-157988] [transport.py] [_log()] starting thread (client mode): 0x2b90fb20
2025-09-29T14:02:01.462 [DEBUG] [Thread-157988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:01.477 [DEBUG] [Thread-157988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:02:01.477 [INFO] [Thread-157988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:02:01.484 [DEBUG] [Thread-157988] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] Compression: none
2025-09-29T14:02:01.485 [DEBUG] [Thread-157988] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:01.543 [DEBUG] [Thread-157988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:01.543 [DEBUG] [Thread-157988] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:01.544 [DEBUG] [Thread-157988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:02:01.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:02:01.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:01.599 [DEBUG] [Thread-157988] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:01.599 [DEBUG] [Thread-157988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:01.599 [DEBUG] [Thread-157988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:01.599 [DEBUG] [Thread-157988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:02:01.599 [DEBUG] [Thread-157988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:01.618 [INFO] [Thread-157988] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:01.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:02:01.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:02.661 [DEBUG] [Thread-157988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:02.661 [DEBUG] [Thread-157988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:02.709 [DEBUG] [Thread-157988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:02.709 [DEBUG] [Thread-157988] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:02.718 [DEBUG] [Thread-157988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:02.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:02.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:02:02.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:02:02.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:02.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:02.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:02.753 [DEBUG] [Thread-157988] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:12.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:02:12.755 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:02:12.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:02:13.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 2, 4), 14.1, 38.27, 0.0, 7.91, 14.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:02:13.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:02:04
2025-09-29T14:02:13.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:02:13.631 [DEBUG] [Thread-157990] [transport.py] [_log()] starting thread (client mode): 0x2b90c700
2025-09-29T14:02:13.631 [DEBUG] [Thread-157990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:13.646 [DEBUG] [Thread-157990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:02:13.646 [INFO] [Thread-157990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] Compression: none
2025-09-29T14:02:13.650 [DEBUG] [Thread-157990] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:13.666 [DEBUG] [Thread-157990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:13.666 [DEBUG] [Thread-157990] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:13.667 [DEBUG] [Thread-157990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:02:13.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:02:13.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:13.667 [DEBUG] [Thread-157990] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:13.667 [DEBUG] [Thread-157990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:13.667 [DEBUG] [Thread-157990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:13.667 [DEBUG] [Thread-157990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:02:13.668 [DEBUG] [Thread-157990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:13.675 [DEBUG] [Thread-157992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:02:13.680 [INFO] [Thread-157990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:13.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:14.406 [DEBUG] [Thread-157990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:14.407 [DEBUG] [Thread-157990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:14.407 [DEBUG] [Thread-157990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:02:14.447 [DEBUG] [Thread-157990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:14.447 [DEBUG] [Thread-157990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:14.449 [DEBUG] [Thread-157990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:14.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:14.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:02:14.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:02:14.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:02:14.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:14.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:02:14.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:14.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.501111 -999.00  +15.10   6.96     40   +1.90 1 1 1 1 1   888    0 12.32 2.56 ----- 7.0 7.0 162.2 11.4 24.2 -28.0 22.8 -31.9 24.4 -27.2 25.7 -30.2
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.501111
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:02:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:02:04', tmtdew=14.1, humidity=38.27, cloud=0.0, wind=7.91, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:01:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:02:14.462 [DEBUG] [Thread-157990] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:14.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:02:14.545 [DEBUG] [Thread-157994] [transport.py] [_log()] starting thread (client mode): 0x2b9bae30
2025-09-29T14:02:14.545 [DEBUG] [Thread-157994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:14.560 [DEBUG] [Thread-157994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:02:14.560 [INFO] [Thread-157994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:14.568 [DEBUG] [Thread-157994] [transport.py] [_log()] Compression: none
2025-09-29T14:02:14.569 [DEBUG] [Thread-157994] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:14.627 [DEBUG] [Thread-157994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:14.627 [DEBUG] [Thread-157994] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:14.628 [DEBUG] [Thread-157994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:02:14.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:02:14.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:14.683 [DEBUG] [Thread-157994] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:14.684 [DEBUG] [Thread-157994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:14.684 [DEBUG] [Thread-157994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:14.684 [DEBUG] [Thread-157994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:02:14.684 [DEBUG] [Thread-157994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:14.703 [INFO] [Thread-157994] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:14.703 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:02:14.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:15.777 [DEBUG] [Thread-157994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:15.777 [DEBUG] [Thread-157994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:15.825 [DEBUG] [Thread-157994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:15.825 [DEBUG] [Thread-157994] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:15.837 [DEBUG] [Thread-157994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:15.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:15.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:02:15.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:02:15.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:15.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:15.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:15.878 [DEBUG] [Thread-157994] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:25.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:02:25.881 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:02:25.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:02:26.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 2, 4), 14.1, 38.27, 0.0, 7.91, 14.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:02:26.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:02:04
2025-09-29T14:02:26.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:02:26.729 [DEBUG] [Thread-157996] [transport.py] [_log()] starting thread (client mode): 0x2b955ed0
2025-09-29T14:02:26.730 [DEBUG] [Thread-157996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:26.749 [DEBUG] [Thread-157996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:02:26.749 [INFO] [Thread-157996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:02:26.752 [DEBUG] [Thread-157996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:26.752 [DEBUG] [Thread-157996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:02:26.752 [DEBUG] [Thread-157996] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:26.752 [DEBUG] [Thread-157996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:26.752 [DEBUG] [Thread-157996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] Compression: none
2025-09-29T14:02:26.753 [DEBUG] [Thread-157996] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:26.769 [DEBUG] [Thread-157996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:26.770 [DEBUG] [Thread-157996] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:26.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:02:26.771 [DEBUG] [Thread-157996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:02:26.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:26.775 [DEBUG] [Thread-157996] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:26.775 [DEBUG] [Thread-157996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:26.775 [DEBUG] [Thread-157996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:26.776 [DEBUG] [Thread-157996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:02:26.776 [DEBUG] [Thread-157996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:26.797 [INFO] [Thread-157996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:26.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:27.504 [DEBUG] [Thread-157996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:27.504 [DEBUG] [Thread-157996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:27.505 [DEBUG] [Thread-157996] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:02:27.545 [DEBUG] [Thread-157996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:27.545 [DEBUG] [Thread-157996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:27.548 [DEBUG] [Thread-157996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:27.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:27.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:02:27.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:02:27.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:02:27.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:27.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:02:27.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:27.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:27.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:02:27.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.501111 -999.00  +15.10   6.96     40   +1.90 1 1 1 1 1   888    0 12.32 2.56 ----- 7.0 7.0 162.2 11.4 24.2 -28.0 22.8 -31.9 24.4 -27.2 25.7 -30.2
2025-09-29T14:02:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:02:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:02:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.501111
2025-09-29T14:02:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:02:27.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:02:27.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:02:27.572 [DEBUG] [Thread-157996] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:27.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:02:27.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:02:27.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:02:04', tmtdew=14.1, humidity=38.27, cloud=0.0, wind=7.91, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:01:35.990', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:02:27.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:02:27.669 [DEBUG] [Thread-157999] [transport.py] [_log()] starting thread (client mode): 0x2b955720
2025-09-29T14:02:27.669 [DEBUG] [Thread-157999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:27.686 [DEBUG] [Thread-157999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:02:27.686 [INFO] [Thread-157999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:02:27.694 [DEBUG] [Thread-157999] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:27.694 [DEBUG] [Thread-157999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:27.695 [DEBUG] [Thread-157999] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:27.696 [DEBUG] [Thread-157999] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:27.696 [DEBUG] [Thread-157999] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:27.696 [DEBUG] [Thread-157999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:27.696 [DEBUG] [Thread-157999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:27.696 [DEBUG] [Thread-157999] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:27.696 [DEBUG] [Thread-157999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:27.696 [DEBUG] [Thread-157999] [transport.py] [_log()] Compression: none
2025-09-29T14:02:27.696 [DEBUG] [Thread-157999] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:27.751 [DEBUG] [Thread-157999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:27.751 [DEBUG] [Thread-157999] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:27.752 [DEBUG] [Thread-157999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:02:27.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:02:27.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:27.807 [DEBUG] [Thread-157999] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:27.807 [DEBUG] [Thread-157999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:27.807 [DEBUG] [Thread-157999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:27.807 [DEBUG] [Thread-157999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:02:27.807 [DEBUG] [Thread-157999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:27.828 [INFO] [Thread-157999] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:27.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:02:27.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:28.713 [DEBUG] [Thread-158001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:02:28.818 [DEBUG] [Thread-157999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:28.818 [DEBUG] [Thread-157999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:28.868 [DEBUG] [Thread-157999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:28.868 [DEBUG] [Thread-157999] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:28.877 [DEBUG] [Thread-157999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:28.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:28.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:02:28.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:02:28.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:28.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:28.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:28.915 [DEBUG] [Thread-157999] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:38.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:02:38.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:02:38.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:02:39.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 2, 36), 14.22, 37.72, 0.0, 6.58, 14.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:02:39.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:02:36
2025-09-29T14:02:39.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:02:39.778 [DEBUG] [Thread-158002] [transport.py] [_log()] starting thread (client mode): 0x2b96f8e0
2025-09-29T14:02:39.778 [DEBUG] [Thread-158002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:39.799 [DEBUG] [Thread-158002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:02:39.799 [INFO] [Thread-158002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:39.802 [DEBUG] [Thread-158002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:39.803 [DEBUG] [Thread-158002] [transport.py] [_log()] Compression: none
2025-09-29T14:02:39.803 [DEBUG] [Thread-158002] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:39.817 [DEBUG] [Thread-158002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:39.818 [DEBUG] [Thread-158002] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:39.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:02:39.819 [DEBUG] [Thread-158002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:02:39.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:39.821 [DEBUG] [Thread-158002] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:39.821 [DEBUG] [Thread-158002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:39.821 [DEBUG] [Thread-158002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:39.822 [DEBUG] [Thread-158002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:02:39.822 [DEBUG] [Thread-158002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:39.856 [INFO] [Thread-158002] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:39.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:40.418 [DEBUG] [Thread-158002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:40.418 [DEBUG] [Thread-158002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:40.418 [DEBUG] [Thread-158002] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:02:40.459 [DEBUG] [Thread-158002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:40.459 [DEBUG] [Thread-158002] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:40.461 [DEBUG] [Thread-158002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:40.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:40.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:02:40.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:02:40.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:02:40.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:40.480 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:02:40.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:40.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:40.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:02:40.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.501458 -999.00  +15.20   1.72     40   +2.00 1 1 1 1 1   888    0 12.74 7.44 ----- 3.0 1.7 136.2 11.3 24.3 -27.2 23.0 -27.1 24.6 -27.1 25.8 -28.8
2025-09-29T14:02:40.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:02:40.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:02:40.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.501458
2025-09-29T14:02:40.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:02:40.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:02:40.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:02:40.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:02:40.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:02:40.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:02:36', tmtdew=14.22, humidity=37.72, cloud=0.0, wind=6.58, temperature=14.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:02:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:02:40.483 [DEBUG] [Thread-158002] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:40.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:02:40.584 [DEBUG] [Thread-158005] [transport.py] [_log()] starting thread (client mode): 0x2b96c460
2025-09-29T14:02:40.584 [DEBUG] [Thread-158005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:40.599 [DEBUG] [Thread-158005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:02:40.599 [INFO] [Thread-158005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:02:40.606 [DEBUG] [Thread-158005] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:40.607 [DEBUG] [Thread-158005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:02:40.607 [DEBUG] [Thread-158005] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:40.607 [DEBUG] [Thread-158005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:40.607 [DEBUG] [Thread-158005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:40.607 [DEBUG] [Thread-158005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:40.607 [DEBUG] [Thread-158005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] Compression: none
2025-09-29T14:02:40.608 [DEBUG] [Thread-158005] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:40.666 [DEBUG] [Thread-158005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:40.667 [DEBUG] [Thread-158005] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:40.667 [DEBUG] [Thread-158005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:02:40.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:02:40.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:40.723 [DEBUG] [Thread-158005] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:40.723 [DEBUG] [Thread-158005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:40.723 [DEBUG] [Thread-158005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:40.723 [DEBUG] [Thread-158005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:02:40.723 [DEBUG] [Thread-158005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:40.742 [INFO] [Thread-158005] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:40.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:02:40.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:41.712 [DEBUG] [Thread-158005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:41.712 [DEBUG] [Thread-158005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:41.760 [DEBUG] [Thread-158005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:41.760 [DEBUG] [Thread-158005] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:41.770 [DEBUG] [Thread-158005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:41.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:41.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:02:41.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:02:41.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:41.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:41.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:41.805 [DEBUG] [Thread-158005] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:43.664 [DEBUG] [Thread-158007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:02:43.754 [DEBUG] [Thread-158008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:02:51.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:02:51.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:02:51.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:02:52.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 2, 36), 14.22, 37.72, 0.0, 6.58, 14.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:02:52.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:02:36
2025-09-29T14:02:52.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:02:52.655 [DEBUG] [Thread-158009] [transport.py] [_log()] starting thread (client mode): 0x2b96e3e0
2025-09-29T14:02:52.655 [DEBUG] [Thread-158009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:52.676 [DEBUG] [Thread-158009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:02:52.676 [INFO] [Thread-158009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] Compression: none
2025-09-29T14:02:52.678 [DEBUG] [Thread-158009] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:52.690 [DEBUG] [Thread-158009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:52.691 [DEBUG] [Thread-158009] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:52.691 [DEBUG] [Thread-158009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:02:52.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:02:52.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:52.693 [DEBUG] [Thread-158009] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:52.693 [DEBUG] [Thread-158009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:52.693 [DEBUG] [Thread-158009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:52.693 [DEBUG] [Thread-158009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:02:52.693 [DEBUG] [Thread-158009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:52.717 [INFO] [Thread-158009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:52.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:53.463 [DEBUG] [Thread-158009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:53.463 [DEBUG] [Thread-158009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:53.463 [DEBUG] [Thread-158009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:02:53.504 [DEBUG] [Thread-158009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:53.505 [DEBUG] [Thread-158009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:53.507 [DEBUG] [Thread-158009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:53.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:53.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:02:53.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:02:53.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:02:53.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:53.529 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:02:53.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:53.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:53.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:02:53.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.501458 -999.00  +15.20   1.72     40   +2.00 1 1 1 1 1   888    0 12.74 7.44 ----- 3.0 1.7 136.2 11.3 24.3 -27.2 23.0 -27.1 24.6 -27.1 25.8 -28.8
2025-09-29T14:02:53.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:02:53.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:02:53.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.501458
2025-09-29T14:02:53.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:02:53.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:02:53.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:02:53.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:02:53.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:02:53.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:02:36', tmtdew=14.22, humidity=37.72, cloud=0.0, wind=6.58, temperature=14.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:02:05.971', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:02:53.532 [DEBUG] [Thread-158009] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:53.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:02:53.628 [DEBUG] [Thread-158012] [transport.py] [_log()] starting thread (client mode): 0x2b96ebc0
2025-09-29T14:02:53.628 [DEBUG] [Thread-158012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:02:53.643 [DEBUG] [Thread-158012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:02:53.643 [INFO] [Thread-158012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] client lang: <none>
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] server lang: <none>
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] kex follows: False
2025-09-29T14:02:53.651 [DEBUG] [Thread-158012] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:02:53.652 [DEBUG] [Thread-158012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:02:53.652 [DEBUG] [Thread-158012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:02:53.652 [DEBUG] [Thread-158012] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:02:53.652 [DEBUG] [Thread-158012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:02:53.652 [DEBUG] [Thread-158012] [transport.py] [_log()] Compression: none
2025-09-29T14:02:53.652 [DEBUG] [Thread-158012] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:02:53.711 [DEBUG] [Thread-158012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:02:53.712 [DEBUG] [Thread-158012] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:02:53.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:02:53.713 [DEBUG] [Thread-158012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:02:53.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:02:53.767 [DEBUG] [Thread-158012] [transport.py] [_log()] userauth is OK
2025-09-29T14:02:53.767 [DEBUG] [Thread-158012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:02:53.767 [DEBUG] [Thread-158012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:02:53.767 [DEBUG] [Thread-158012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:02:53.767 [DEBUG] [Thread-158012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:02:53.783 [INFO] [Thread-158012] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:02:53.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:02:53.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:02:54.778 [DEBUG] [Thread-158012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:02:54.778 [DEBUG] [Thread-158012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:02:54.826 [DEBUG] [Thread-158012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:02:54.826 [DEBUG] [Thread-158012] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:02:54.834 [DEBUG] [Thread-158012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:02:54.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:02:54.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:02:54.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:02:54.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:02:54.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:02:54.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:02:54.870 [DEBUG] [Thread-158012] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:02:58.793 [DEBUG] [Thread-158014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:03:00.757 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:03:00.758 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:03:04.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:03:04.871 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:03:04.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:03:05.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 2, 36), 14.22, 37.72, 0.0, 6.58, 14.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:03:05.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:02:36
2025-09-29T14:03:05.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:03:05.715 [DEBUG] [Thread-158015] [transport.py] [_log()] starting thread (client mode): 0x2b96ceb0
2025-09-29T14:03:05.715 [DEBUG] [Thread-158015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:05.735 [DEBUG] [Thread-158015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:03:05.735 [INFO] [Thread-158015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:05.738 [DEBUG] [Thread-158015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] Compression: none
2025-09-29T14:03:05.739 [DEBUG] [Thread-158015] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:05.754 [DEBUG] [Thread-158015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:05.755 [DEBUG] [Thread-158015] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:05.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:03:05.755 [DEBUG] [Thread-158015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:03:05.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:05.797 [DEBUG] [Thread-158015] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:05.797 [DEBUG] [Thread-158015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:05.797 [DEBUG] [Thread-158015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:05.797 [DEBUG] [Thread-158015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:03:05.797 [DEBUG] [Thread-158015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:05.828 [INFO] [Thread-158015] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:05.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:06.420 [DEBUG] [Thread-158015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:06.420 [DEBUG] [Thread-158015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:06.421 [DEBUG] [Thread-158015] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:03:06.461 [DEBUG] [Thread-158015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:06.461 [DEBUG] [Thread-158015] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:06.464 [DEBUG] [Thread-158015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:06.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:06.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:03:06.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:03:06.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:03:06.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:06.485 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:03:06.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:06.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:06.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:03:06.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.501805 -999.00  +15.40   1.56     40   +2.10 1 1 1 1 1   888    0 13.12 12.75 ----- 2.9 1.6 145.4 4.2 24.6 -27.0 23.4 -26.7 24.8 -26.5 26.1 -28.0
2025-09-29T14:03:06.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:03:06.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:03:06.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.501805
2025-09-29T14:03:06.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:03:06.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:03:06.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:03:06.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:03:06.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:03:06.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:02:36', tmtdew=14.22, humidity=37.72, cloud=0.0, wind=6.58, temperature=14.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:02:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:03:06.488 [DEBUG] [Thread-158015] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:06.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:03:06.586 [DEBUG] [Thread-158018] [transport.py] [_log()] starting thread (client mode): 0x2b956950
2025-09-29T14:03:06.586 [DEBUG] [Thread-158018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:06.601 [DEBUG] [Thread-158018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:03:06.601 [INFO] [Thread-158018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:03:06.609 [DEBUG] [Thread-158018] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:06.609 [DEBUG] [Thread-158018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:03:06.609 [DEBUG] [Thread-158018] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:06.609 [DEBUG] [Thread-158018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:06.609 [DEBUG] [Thread-158018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] Compression: none
2025-09-29T14:03:06.610 [DEBUG] [Thread-158018] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:06.672 [DEBUG] [Thread-158018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:06.673 [DEBUG] [Thread-158018] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:06.673 [DEBUG] [Thread-158018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:03:06.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:03:06.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:06.736 [DEBUG] [Thread-158018] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:06.736 [DEBUG] [Thread-158018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:06.736 [DEBUG] [Thread-158018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:06.736 [DEBUG] [Thread-158018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:03:06.736 [DEBUG] [Thread-158018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:06.759 [INFO] [Thread-158018] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:06.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:03:06.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:07.762 [DEBUG] [Thread-158018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:07.762 [DEBUG] [Thread-158018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:07.810 [DEBUG] [Thread-158018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:07.810 [DEBUG] [Thread-158018] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:07.819 [DEBUG] [Thread-158018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:07.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:07.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:03:07.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:03:07.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:07.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:07.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:07.854 [DEBUG] [Thread-158018] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:13.826 [DEBUG] [Thread-158020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:03:17.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:03:17.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:03:17.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:03:18.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 3, 8), 14.43, 37.19, 0.0, 6.71, 14.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:03:18.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:03:08
2025-09-29T14:03:18.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:03:18.697 [DEBUG] [Thread-158021] [transport.py] [_log()] starting thread (client mode): 0x2b9dea70
2025-09-29T14:03:18.697 [DEBUG] [Thread-158021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:18.718 [DEBUG] [Thread-158021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:03:18.718 [INFO] [Thread-158021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:03:18.721 [DEBUG] [Thread-158021] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:18.721 [DEBUG] [Thread-158021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:03:18.721 [DEBUG] [Thread-158021] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:18.721 [DEBUG] [Thread-158021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:18.721 [DEBUG] [Thread-158021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] Compression: none
2025-09-29T14:03:18.722 [DEBUG] [Thread-158021] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:18.740 [DEBUG] [Thread-158021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:18.741 [DEBUG] [Thread-158021] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:18.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:03:18.742 [DEBUG] [Thread-158021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:03:18.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:18.744 [DEBUG] [Thread-158021] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:18.744 [DEBUG] [Thread-158021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:18.744 [DEBUG] [Thread-158021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:18.744 [DEBUG] [Thread-158021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:03:18.744 [DEBUG] [Thread-158021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:18.779 [INFO] [Thread-158021] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:18.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:19.507 [DEBUG] [Thread-158021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:19.507 [DEBUG] [Thread-158021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:19.507 [DEBUG] [Thread-158021] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:03:19.548 [DEBUG] [Thread-158021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:19.548 [DEBUG] [Thread-158021] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:19.551 [DEBUG] [Thread-158021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:19.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:19.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:03:19.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:03:19.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:03:19.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:19.573 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:03:19.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:19.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:19.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:03:19.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.501805 -999.00  +15.40   1.56     40   +2.10 1 1 1 1 1   888    0 13.12 12.75 ----- 2.9 1.6 145.4 4.2 24.6 -27.0 23.4 -26.7 24.8 -26.5 26.1 -28.0
2025-09-29T14:03:19.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:03:19.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:03:19.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.501805
2025-09-29T14:03:19.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:03:19.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:03:19.576 [DEBUG] [Thread-158021] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:19.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:03:19.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:03:19.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:03:19.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:03:08', tmtdew=14.43, humidity=37.19, cloud=0.0, wind=6.71, temperature=14.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:02:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:03:19.660 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:03:19.670 [DEBUG] [Thread-158024] [transport.py] [_log()] starting thread (client mode): 0x2b9dfe20
2025-09-29T14:03:19.671 [DEBUG] [Thread-158024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:19.685 [DEBUG] [Thread-158024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:03:19.685 [INFO] [Thread-158024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:03:19.693 [DEBUG] [Thread-158024] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:19.693 [DEBUG] [Thread-158024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:03:19.693 [DEBUG] [Thread-158024] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:19.693 [DEBUG] [Thread-158024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:19.693 [DEBUG] [Thread-158024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:19.693 [DEBUG] [Thread-158024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] Compression: none
2025-09-29T14:03:19.694 [DEBUG] [Thread-158024] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:19.752 [DEBUG] [Thread-158024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:19.752 [DEBUG] [Thread-158024] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:19.753 [DEBUG] [Thread-158024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:03:19.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:03:19.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:19.810 [DEBUG] [Thread-158024] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:19.811 [DEBUG] [Thread-158024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:19.811 [DEBUG] [Thread-158024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:19.811 [DEBUG] [Thread-158024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:03:19.811 [DEBUG] [Thread-158024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:19.836 [INFO] [Thread-158024] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:19.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:03:19.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:20.784 [DEBUG] [Thread-158024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:20.784 [DEBUG] [Thread-158024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:20.832 [DEBUG] [Thread-158024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:20.832 [DEBUG] [Thread-158024] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:20.841 [DEBUG] [Thread-158024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:20.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:20.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:03:20.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:03:20.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:20.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:20.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:20.876 [DEBUG] [Thread-158024] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:28.865 [DEBUG] [Thread-158026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:03:30.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:03:30.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:03:30.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:03:31.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 3, 8), 14.43, 37.19, 0.0, 6.71, 14.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:03:31.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:03:08
2025-09-29T14:03:31.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:03:31.727 [DEBUG] [Thread-158027] [transport.py] [_log()] starting thread (client mode): 0x2b9dcac0
2025-09-29T14:03:31.728 [DEBUG] [Thread-158027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:31.748 [DEBUG] [Thread-158027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:03:31.749 [INFO] [Thread-158027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:03:31.751 [DEBUG] [Thread-158027] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:31.752 [DEBUG] [Thread-158027] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:31.753 [DEBUG] [Thread-158027] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:31.753 [DEBUG] [Thread-158027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:31.753 [DEBUG] [Thread-158027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:31.753 [DEBUG] [Thread-158027] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:31.753 [DEBUG] [Thread-158027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:31.753 [DEBUG] [Thread-158027] [transport.py] [_log()] Compression: none
2025-09-29T14:03:31.753 [DEBUG] [Thread-158027] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:31.763 [DEBUG] [Thread-158027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:31.764 [DEBUG] [Thread-158027] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:31.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:03:31.765 [DEBUG] [Thread-158027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:03:31.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:31.767 [DEBUG] [Thread-158027] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:31.767 [DEBUG] [Thread-158027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:31.767 [DEBUG] [Thread-158027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:31.768 [DEBUG] [Thread-158027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:03:31.768 [DEBUG] [Thread-158027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:31.791 [INFO] [Thread-158027] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:31.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:32.534 [DEBUG] [Thread-158027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:32.534 [DEBUG] [Thread-158027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:32.535 [DEBUG] [Thread-158027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:03:32.575 [DEBUG] [Thread-158027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:32.575 [DEBUG] [Thread-158027] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:32.577 [DEBUG] [Thread-158027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:32.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:32.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:03:32.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:03:32.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:03:32.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:32.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:03:32.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:32.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:32.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:03:32.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.501805 -999.00  +15.40   1.56     40   +2.10 1 1 1 1 1   888    0 13.12 12.75 ----- 2.9 1.6 145.4 4.2 24.6 -27.0 23.4 -26.7 24.8 -26.5 26.1 -28.0
2025-09-29T14:03:32.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:03:32.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:03:32.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.501805
2025-09-29T14:03:32.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:03:32.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:03:32.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:03:32.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:03:32.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:03:32.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:03:08', tmtdew=14.43, humidity=37.19, cloud=0.0, wind=6.71, temperature=14.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:02:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:03:32.598 [DEBUG] [Thread-158027] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:32.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:03:32.700 [DEBUG] [Thread-158030] [transport.py] [_log()] starting thread (client mode): 0x2b96c340
2025-09-29T14:03:32.700 [DEBUG] [Thread-158030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:32.715 [DEBUG] [Thread-158030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:03:32.715 [INFO] [Thread-158030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] Compression: none
2025-09-29T14:03:32.723 [DEBUG] [Thread-158030] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:32.782 [DEBUG] [Thread-158030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:32.783 [DEBUG] [Thread-158030] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:32.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:03:32.783 [DEBUG] [Thread-158030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:03:32.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:32.839 [DEBUG] [Thread-158030] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:32.839 [DEBUG] [Thread-158030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:32.839 [DEBUG] [Thread-158030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:32.839 [DEBUG] [Thread-158030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:03:32.839 [DEBUG] [Thread-158030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:32.859 [INFO] [Thread-158030] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:32.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:03:32.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:33.848 [DEBUG] [Thread-158030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:33.849 [DEBUG] [Thread-158030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:33.896 [DEBUG] [Thread-158030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:33.896 [DEBUG] [Thread-158030] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:33.905 [DEBUG] [Thread-158030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:33.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:33.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:03:33.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:03:33.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:33.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:33.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:33.940 [DEBUG] [Thread-158030] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:43.717 [DEBUG] [Thread-158032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:03:43.895 [DEBUG] [Thread-158033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:03:43.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:03:43.943 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:03:43.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:03:44.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 3, 40), 14.56, 36.86, 0.0, 12.32, 14.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:03:44.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:03:40
2025-09-29T14:03:44.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:03:44.787 [DEBUG] [Thread-158034] [transport.py] [_log()] starting thread (client mode): 0x2b9de320
2025-09-29T14:03:44.787 [DEBUG] [Thread-158034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:44.807 [DEBUG] [Thread-158034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:03:44.807 [INFO] [Thread-158034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:03:44.810 [DEBUG] [Thread-158034] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:44.810 [DEBUG] [Thread-158034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:03:44.810 [DEBUG] [Thread-158034] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:44.810 [DEBUG] [Thread-158034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:44.810 [DEBUG] [Thread-158034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] Compression: none
2025-09-29T14:03:44.811 [DEBUG] [Thread-158034] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:44.828 [DEBUG] [Thread-158034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:44.828 [DEBUG] [Thread-158034] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:44.829 [DEBUG] [Thread-158034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:03:44.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:03:44.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:44.831 [DEBUG] [Thread-158034] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:44.831 [DEBUG] [Thread-158034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:44.831 [DEBUG] [Thread-158034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:44.831 [DEBUG] [Thread-158034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:03:44.831 [DEBUG] [Thread-158034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:44.854 [INFO] [Thread-158034] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:44.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:45.438 [DEBUG] [Thread-158034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:45.438 [DEBUG] [Thread-158034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:45.438 [DEBUG] [Thread-158034] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:03:45.479 [DEBUG] [Thread-158034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:45.479 [DEBUG] [Thread-158034] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:45.481 [DEBUG] [Thread-158034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:45.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:45.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:03:45.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:03:45.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:03:45.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:45.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:03:45.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:45.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:03:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.502152 -999.00  +15.70   7.67     40   +2.30 1 1 1 1 1   888    0 12.85 17.06 ----- 12.6 7.7 178.8 10.8 24.6 -28.9 23.4 -31.4 24.7 -28.0 26.2 -27.7
2025-09-29T14:03:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:03:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:03:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.502152
2025-09-29T14:03:45.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:03:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:03:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:03:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:03:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:03:45.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:03:40', tmtdew=14.56, humidity=36.86, cloud=0.0, wind=12.32, temperature=14.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:03:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:03:45.502 [DEBUG] [Thread-158034] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:45.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:03:45.594 [DEBUG] [Thread-158037] [transport.py] [_log()] starting thread (client mode): 0x2b9ddb10
2025-09-29T14:03:45.594 [DEBUG] [Thread-158037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:45.609 [DEBUG] [Thread-158037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:03:45.609 [INFO] [Thread-158037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:03:45.616 [DEBUG] [Thread-158037] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] Compression: none
2025-09-29T14:03:45.617 [DEBUG] [Thread-158037] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:45.673 [DEBUG] [Thread-158037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:45.673 [DEBUG] [Thread-158037] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:45.674 [DEBUG] [Thread-158037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:03:45.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:03:45.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:45.730 [DEBUG] [Thread-158037] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:45.730 [DEBUG] [Thread-158037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:45.730 [DEBUG] [Thread-158037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:45.730 [DEBUG] [Thread-158037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:03:45.730 [DEBUG] [Thread-158037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:45.744 [INFO] [Thread-158037] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:45.744 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:03:45.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:46.719 [DEBUG] [Thread-158037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:46.719 [DEBUG] [Thread-158037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:46.767 [DEBUG] [Thread-158037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:46.767 [DEBUG] [Thread-158037] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:46.776 [DEBUG] [Thread-158037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:46.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:46.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:03:46.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:03:46.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:46.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:46.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:46.811 [DEBUG] [Thread-158037] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:56.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:03:56.814 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:03:56.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:03:57.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 3, 40), 14.56, 36.86, 0.0, 12.32, 14.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:03:57.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:03:40
2025-09-29T14:03:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:03:57.658 [DEBUG] [Thread-158039] [transport.py] [_log()] starting thread (client mode): 0x2b9dfd90
2025-09-29T14:03:57.658 [DEBUG] [Thread-158039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:57.678 [DEBUG] [Thread-158039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:03:57.678 [INFO] [Thread-158039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:03:57.681 [DEBUG] [Thread-158039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:57.681 [DEBUG] [Thread-158039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:03:57.681 [DEBUG] [Thread-158039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:57.681 [DEBUG] [Thread-158039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] Compression: none
2025-09-29T14:03:57.682 [DEBUG] [Thread-158039] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:57.703 [DEBUG] [Thread-158039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:57.703 [DEBUG] [Thread-158039] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:57.704 [DEBUG] [Thread-158039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:03:57.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:03:57.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:57.706 [DEBUG] [Thread-158039] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:57.707 [DEBUG] [Thread-158039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:57.707 [DEBUG] [Thread-158039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:57.707 [DEBUG] [Thread-158039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:03:57.707 [DEBUG] [Thread-158039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:57.727 [INFO] [Thread-158039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:57.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:58.477 [DEBUG] [Thread-158039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:58.477 [DEBUG] [Thread-158039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:58.477 [DEBUG] [Thread-158039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:03:58.518 [DEBUG] [Thread-158039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:58.518 [DEBUG] [Thread-158039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:58.521 [DEBUG] [Thread-158039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:58.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:58.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:03:58.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:03:58.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:03:58.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:58.540 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:03:58.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:58.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:58.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:03:58.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.502152 -999.00  +15.70   7.67     40   +2.30 1 1 1 1 1   888    0 12.85 17.06 ----- 12.6 7.7 178.8 10.8 24.6 -28.9 23.4 -31.4 24.7 -28.0 26.2 -27.7
2025-09-29T14:03:58.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:03:58.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:03:58.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.502152
2025-09-29T14:03:58.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:03:58.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:03:58.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:03:58.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:03:58.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:03:58.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:03:40', tmtdew=14.56, humidity=36.86, cloud=0.0, wind=12.32, temperature=14.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:03:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:03:58.543 [DEBUG] [Thread-158039] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:03:58.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:03:58.644 [DEBUG] [Thread-158042] [transport.py] [_log()] starting thread (client mode): 0x2b956a10
2025-09-29T14:03:58.644 [DEBUG] [Thread-158042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:03:58.659 [DEBUG] [Thread-158042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:03:58.659 [INFO] [Thread-158042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:03:58.667 [DEBUG] [Thread-158042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:03:58.667 [DEBUG] [Thread-158042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:03:58.667 [DEBUG] [Thread-158042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] client lang: <none>
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] server lang: <none>
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] kex follows: False
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:03:58.668 [DEBUG] [Thread-158042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:03:58.669 [DEBUG] [Thread-158042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:03:58.669 [DEBUG] [Thread-158042] [transport.py] [_log()] Compression: none
2025-09-29T14:03:58.669 [DEBUG] [Thread-158042] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:03:58.727 [DEBUG] [Thread-158042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:03:58.728 [DEBUG] [Thread-158042] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:03:58.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:03:58.729 [DEBUG] [Thread-158042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:03:58.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:03:58.787 [DEBUG] [Thread-158042] [transport.py] [_log()] userauth is OK
2025-09-29T14:03:58.787 [DEBUG] [Thread-158042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:03:58.787 [DEBUG] [Thread-158042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:03:58.787 [DEBUG] [Thread-158042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:03:58.787 [DEBUG] [Thread-158042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:03:58.806 [INFO] [Thread-158042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:03:58.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:03:58.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:03:58.926 [DEBUG] [Thread-158044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:03:59.769 [DEBUG] [Thread-158042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:03:59.769 [DEBUG] [Thread-158042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:03:59.817 [DEBUG] [Thread-158042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:03:59.817 [DEBUG] [Thread-158042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:03:59.826 [DEBUG] [Thread-158042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:03:59.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:03:59.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:03:59.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:03:59.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:03:59.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:03:59.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:03:59.862 [DEBUG] [Thread-158042] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:00.899 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:04:00.901 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:04:09.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:04:09.865 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:04:09.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:04:10.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 3, 40), 14.56, 36.86, 0.0, 12.32, 14.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:04:10.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:03:40
2025-09-29T14:04:10.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:04:10.704 [DEBUG] [Thread-158045] [transport.py] [_log()] starting thread (client mode): 0x2b9dcc10
2025-09-29T14:04:10.704 [DEBUG] [Thread-158045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:04:10.717 [DEBUG] [Thread-158045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:04:10.717 [INFO] [Thread-158045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] client lang: <none>
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] server lang: <none>
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] kex follows: False
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:04:10.720 [DEBUG] [Thread-158045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:04:10.721 [DEBUG] [Thread-158045] [transport.py] [_log()] Compression: none
2025-09-29T14:04:10.721 [DEBUG] [Thread-158045] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:04:10.739 [DEBUG] [Thread-158045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:04:10.740 [DEBUG] [Thread-158045] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:04:10.741 [DEBUG] [Thread-158045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:04:10.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:04:10.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:04:10.744 [DEBUG] [Thread-158045] [transport.py] [_log()] userauth is OK
2025-09-29T14:04:10.744 [DEBUG] [Thread-158045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:04:10.744 [DEBUG] [Thread-158045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:04:10.744 [DEBUG] [Thread-158045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:04:10.744 [DEBUG] [Thread-158045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:04:10.764 [INFO] [Thread-158045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:04:10.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:04:11.327 [DEBUG] [Thread-158045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:04:11.327 [DEBUG] [Thread-158045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:04:11.327 [DEBUG] [Thread-158045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:04:11.368 [DEBUG] [Thread-158045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:04:11.368 [DEBUG] [Thread-158045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:04:11.370 [DEBUG] [Thread-158045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:04:11.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:04:11.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:04:11.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:04:11.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:04:11.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:04:11.385 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:04:11.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:04:11.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:04:11.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:04:11.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.502847 -999.00  +15.70   7.46     39   +2.10 1 1 1 1 1   888    0 13.42 27.00 ----- 7.0 7.5 196.2 15.1 24.6 -27.9 22.9 -28.4 24.7 -27.3 26.2 -30.1
2025-09-29T14:04:11.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:04:11.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:04:11.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.502847
2025-09-29T14:04:11.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:04:11.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:04:11.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:04:11.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:04:11.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:04:11.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:03:40', tmtdew=14.56, humidity=36.86, cloud=0.0, wind=12.32, temperature=14.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:04:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:04:11.388 [DEBUG] [Thread-158045] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:11.471 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:04:11.483 [DEBUG] [Thread-158048] [transport.py] [_log()] starting thread (client mode): 0x2b96d690
2025-09-29T14:04:11.483 [DEBUG] [Thread-158048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:04:11.501 [DEBUG] [Thread-158048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:04:11.501 [INFO] [Thread-158048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:04:11.508 [DEBUG] [Thread-158048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:04:11.508 [DEBUG] [Thread-158048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] client lang: <none>
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] server lang: <none>
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] kex follows: False
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] Compression: none
2025-09-29T14:04:11.509 [DEBUG] [Thread-158048] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:04:11.566 [DEBUG] [Thread-158048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:04:11.567 [DEBUG] [Thread-158048] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:04:11.568 [DEBUG] [Thread-158048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:04:11.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:04:11.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:04:11.623 [DEBUG] [Thread-158048] [transport.py] [_log()] userauth is OK
2025-09-29T14:04:11.623 [DEBUG] [Thread-158048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:04:11.623 [DEBUG] [Thread-158048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:04:11.623 [DEBUG] [Thread-158048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:04:11.623 [DEBUG] [Thread-158048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:04:11.642 [INFO] [Thread-158048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:04:11.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:04:11.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:04:12.661 [DEBUG] [Thread-158048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:04:12.661 [DEBUG] [Thread-158048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:04:12.709 [DEBUG] [Thread-158048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:04:12.709 [DEBUG] [Thread-158048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:04:12.719 [DEBUG] [Thread-158048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:04:12.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:04:12.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:04:12.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:04:12.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:04:12.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:04:12.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:04:12.753 [DEBUG] [Thread-158048] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:13.966 [DEBUG] [Thread-158050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:04:22.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:04:22.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:04:22.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:04:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 4, 12), 14.59, 36.76, 0.0, 13.09, 14.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:04:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:04:12
2025-09-29T14:04:23.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:04:23.597 [DEBUG] [Thread-158051] [transport.py] [_log()] starting thread (client mode): 0x2b9df9a0
2025-09-29T14:04:23.597 [DEBUG] [Thread-158051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:04:23.617 [DEBUG] [Thread-158051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:04:23.618 [INFO] [Thread-158051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:04:23.621 [DEBUG] [Thread-158051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:04:23.621 [DEBUG] [Thread-158051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:04:23.621 [DEBUG] [Thread-158051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:04:23.621 [DEBUG] [Thread-158051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:23.621 [DEBUG] [Thread-158051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:23.621 [DEBUG] [Thread-158051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] client lang: <none>
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] server lang: <none>
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] kex follows: False
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] Compression: none
2025-09-29T14:04:23.622 [DEBUG] [Thread-158051] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:04:23.639 [DEBUG] [Thread-158051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:04:23.639 [DEBUG] [Thread-158051] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:04:23.640 [DEBUG] [Thread-158051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:04:23.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:04:23.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:04:23.642 [DEBUG] [Thread-158051] [transport.py] [_log()] userauth is OK
2025-09-29T14:04:23.642 [DEBUG] [Thread-158051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:04:23.642 [DEBUG] [Thread-158051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:04:23.642 [DEBUG] [Thread-158051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:04:23.642 [DEBUG] [Thread-158051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:04:23.677 [INFO] [Thread-158051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:04:23.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:04:24.439 [DEBUG] [Thread-158051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:04:24.439 [DEBUG] [Thread-158051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:04:24.439 [DEBUG] [Thread-158051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:04:24.480 [DEBUG] [Thread-158051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:04:24.480 [DEBUG] [Thread-158051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:04:24.485 [DEBUG] [Thread-158051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:04:24.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:04:24.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:04:24.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:04:24.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:04:24.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:04:24.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:04:24.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:04:24.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:04:24.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:04:24.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.502847 -999.00  +15.70   7.46     39   +2.10 1 1 1 1 1   888    0 13.42 27.00 ----- 7.0 7.5 196.2 15.1 24.6 -27.9 22.9 -28.4 24.7 -27.3 26.2 -30.1
2025-09-29T14:04:24.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:04:24.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:04:24.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.502847
2025-09-29T14:04:24.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:04:24.510 [DEBUG] [Thread-158051] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:24.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:04:24.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:04:24.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:04:24.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:04:24.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:04:12', tmtdew=14.59, humidity=36.76, cloud=0.0, wind=13.09, temperature=14.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:04:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:04:24.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:04:24.605 [DEBUG] [Thread-158054] [transport.py] [_log()] starting thread (client mode): 0x2b9dcd00
2025-09-29T14:04:24.605 [DEBUG] [Thread-158054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:04:24.620 [DEBUG] [Thread-158054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:04:24.620 [INFO] [Thread-158054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:04:24.627 [DEBUG] [Thread-158054] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] client lang: <none>
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] server lang: <none>
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] kex follows: False
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] Compression: none
2025-09-29T14:04:24.628 [DEBUG] [Thread-158054] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:04:24.686 [DEBUG] [Thread-158054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:04:24.687 [DEBUG] [Thread-158054] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:04:24.687 [DEBUG] [Thread-158054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:04:24.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:04:24.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:04:24.747 [DEBUG] [Thread-158054] [transport.py] [_log()] userauth is OK
2025-09-29T14:04:24.747 [DEBUG] [Thread-158054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:04:24.747 [DEBUG] [Thread-158054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:04:24.747 [DEBUG] [Thread-158054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:04:24.747 [DEBUG] [Thread-158054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:04:24.767 [INFO] [Thread-158054] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:04:24.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:04:24.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:04:25.779 [DEBUG] [Thread-158054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:04:25.779 [DEBUG] [Thread-158054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:04:25.827 [DEBUG] [Thread-158054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:04:25.827 [DEBUG] [Thread-158054] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:04:25.836 [DEBUG] [Thread-158054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:04:25.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:04:25.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:04:25.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:04:25.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:04:25.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:04:25.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:04:25.871 [DEBUG] [Thread-158054] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:29.001 [DEBUG] [Thread-158056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:04:35.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:04:35.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:04:35.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:04:36.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 4, 12), 14.59, 36.76, 0.0, 13.09, 14.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:04:36.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:04:12
2025-09-29T14:04:36.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:04:36.714 [DEBUG] [Thread-158057] [transport.py] [_log()] starting thread (client mode): 0x2b9de6b0
2025-09-29T14:04:36.715 [DEBUG] [Thread-158057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:04:36.736 [DEBUG] [Thread-158057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:04:36.736 [INFO] [Thread-158057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] client lang: <none>
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] server lang: <none>
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] kex follows: False
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] Compression: none
2025-09-29T14:04:36.740 [DEBUG] [Thread-158057] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:04:36.757 [DEBUG] [Thread-158057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:04:36.758 [DEBUG] [Thread-158057] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:04:36.758 [DEBUG] [Thread-158057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:04:36.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:04:36.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:04:36.760 [DEBUG] [Thread-158057] [transport.py] [_log()] userauth is OK
2025-09-29T14:04:36.760 [DEBUG] [Thread-158057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:04:36.760 [DEBUG] [Thread-158057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:04:36.760 [DEBUG] [Thread-158057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:04:36.760 [DEBUG] [Thread-158057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:04:36.778 [INFO] [Thread-158057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:04:36.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:04:37.524 [DEBUG] [Thread-158057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:04:37.524 [DEBUG] [Thread-158057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:04:37.524 [DEBUG] [Thread-158057] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:04:37.564 [DEBUG] [Thread-158057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:04:37.564 [DEBUG] [Thread-158057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:04:37.567 [DEBUG] [Thread-158057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:04:37.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:04:37.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:04:37.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:04:37.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:04:37.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:04:37.590 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:04:37.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:04:37.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:04:37.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:04:37.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.502847 -999.00  +15.70   7.46     39   +2.10 1 1 1 1 1   888    0 13.42 27.00 ----- 7.0 7.5 196.2 15.1 24.6 -27.9 22.9 -28.4 24.7 -27.3 26.2 -30.1
2025-09-29T14:04:37.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:04:37.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:04:37.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.502847
2025-09-29T14:04:37.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:04:37.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:04:37.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:04:37.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:04:37.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:04:37.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:04:12', tmtdew=14.59, humidity=36.76, cloud=0.0, wind=13.09, temperature=14.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:04:05.981', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:04:37.593 [DEBUG] [Thread-158057] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:37.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:04:37.688 [DEBUG] [Thread-158060] [transport.py] [_log()] starting thread (client mode): 0x2b954670
2025-09-29T14:04:37.688 [DEBUG] [Thread-158060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:04:37.703 [DEBUG] [Thread-158060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:04:37.703 [INFO] [Thread-158060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:04:37.710 [DEBUG] [Thread-158060] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] client lang: <none>
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] server lang: <none>
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] kex follows: False
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:04:37.711 [DEBUG] [Thread-158060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:04:37.712 [DEBUG] [Thread-158060] [transport.py] [_log()] Compression: none
2025-09-29T14:04:37.712 [DEBUG] [Thread-158060] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:04:37.767 [DEBUG] [Thread-158060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:04:37.767 [DEBUG] [Thread-158060] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:04:37.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:04:37.769 [DEBUG] [Thread-158060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:04:37.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:04:37.823 [DEBUG] [Thread-158060] [transport.py] [_log()] userauth is OK
2025-09-29T14:04:37.823 [DEBUG] [Thread-158060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:04:37.823 [DEBUG] [Thread-158060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:04:37.823 [DEBUG] [Thread-158060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:04:37.823 [DEBUG] [Thread-158060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:04:37.843 [INFO] [Thread-158060] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:04:37.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:04:37.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:04:38.837 [DEBUG] [Thread-158060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:04:38.837 [DEBUG] [Thread-158060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:04:38.885 [DEBUG] [Thread-158060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:04:38.885 [DEBUG] [Thread-158060] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:04:38.894 [DEBUG] [Thread-158060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:04:38.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:04:38.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:04:38.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:04:38.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:04:38.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:04:38.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:04:38.928 [DEBUG] [Thread-158060] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:43.764 [DEBUG] [Thread-158062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:04:44.054 [DEBUG] [Thread-158063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:04:48.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:04:48.931 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:04:48.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:04:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 4, 44), 14.22, 37.77, 0.0, 6.95, 14.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:04:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:04:44
2025-09-29T14:04:49.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:04:49.764 [DEBUG] [Thread-158064] [transport.py] [_log()] starting thread (client mode): 0x2b9544c0
2025-09-29T14:04:49.764 [DEBUG] [Thread-158064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:04:49.779 [DEBUG] [Thread-158064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:04:49.779 [INFO] [Thread-158064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] client lang: <none>
2025-09-29T14:04:49.782 [DEBUG] [Thread-158064] [transport.py] [_log()] server lang: <none>
2025-09-29T14:04:49.783 [DEBUG] [Thread-158064] [transport.py] [_log()] kex follows: False
2025-09-29T14:04:49.783 [DEBUG] [Thread-158064] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:04:49.783 [DEBUG] [Thread-158064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:04:49.783 [DEBUG] [Thread-158064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:04:49.783 [DEBUG] [Thread-158064] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:04:49.783 [DEBUG] [Thread-158064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:04:49.783 [DEBUG] [Thread-158064] [transport.py] [_log()] Compression: none
2025-09-29T14:04:49.783 [DEBUG] [Thread-158064] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:04:49.800 [DEBUG] [Thread-158064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:04:49.801 [DEBUG] [Thread-158064] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:04:49.802 [DEBUG] [Thread-158064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:04:49.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:04:49.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:04:49.804 [DEBUG] [Thread-158064] [transport.py] [_log()] userauth is OK
2025-09-29T14:04:49.804 [DEBUG] [Thread-158064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:04:49.804 [DEBUG] [Thread-158064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:04:49.804 [DEBUG] [Thread-158064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:04:49.805 [DEBUG] [Thread-158064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:04:49.819 [INFO] [Thread-158064] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:04:49.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:04:50.437 [DEBUG] [Thread-158064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:04:50.437 [DEBUG] [Thread-158064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:04:50.438 [DEBUG] [Thread-158064] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:04:50.478 [DEBUG] [Thread-158064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:04:50.478 [DEBUG] [Thread-158064] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:04:50.481 [DEBUG] [Thread-158064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:04:50.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:04:50.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:04:50.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:04:50.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:04:50.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:04:50.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:04:50.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:04:50.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:04:50.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:04:50.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.503195 -999.00  +15.60   8.73     39   +2.00 1 1 1 1 1   888    0 13.68 34.39 ----- 7.9 8.7 181.8 12.3 24.6 -29.0 23.2 -32.4 24.7 -27.4 26.2 -28.5
2025-09-29T14:04:50.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:04:50.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:04:50.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.503195
2025-09-29T14:04:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:04:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:04:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:04:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:04:50.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:04:50.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:04:44', tmtdew=14.22, humidity=37.77, cloud=0.0, wind=6.95, temperature=14.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:04:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:04:50.507 [DEBUG] [Thread-158064] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:50.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:04:50.601 [DEBUG] [Thread-158067] [transport.py] [_log()] starting thread (client mode): 0x2b9dcf70
2025-09-29T14:04:50.601 [DEBUG] [Thread-158067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:04:50.616 [DEBUG] [Thread-158067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:04:50.616 [INFO] [Thread-158067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:04:50.623 [DEBUG] [Thread-158067] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:04:50.624 [DEBUG] [Thread-158067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:04:50.624 [DEBUG] [Thread-158067] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:04:50.624 [DEBUG] [Thread-158067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:50.624 [DEBUG] [Thread-158067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:04:50.624 [DEBUG] [Thread-158067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:50.624 [DEBUG] [Thread-158067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:04:50.624 [DEBUG] [Thread-158067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:04:50.624 [DEBUG] [Thread-158067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] client lang: <none>
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] server lang: <none>
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] kex follows: False
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:04:50.625 [DEBUG] [Thread-158067] [transport.py] [_log()] Compression: none
2025-09-29T14:04:50.626 [DEBUG] [Thread-158067] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:04:50.683 [DEBUG] [Thread-158067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:04:50.684 [DEBUG] [Thread-158067] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:04:50.684 [DEBUG] [Thread-158067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:04:50.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:04:50.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:04:50.739 [DEBUG] [Thread-158067] [transport.py] [_log()] userauth is OK
2025-09-29T14:04:50.739 [DEBUG] [Thread-158067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:04:50.739 [DEBUG] [Thread-158067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:04:50.740 [DEBUG] [Thread-158067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:04:50.740 [DEBUG] [Thread-158067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:04:50.760 [INFO] [Thread-158067] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:04:50.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:04:50.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:04:51.709 [DEBUG] [Thread-158067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:04:51.710 [DEBUG] [Thread-158067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:04:51.757 [DEBUG] [Thread-158067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:04:51.757 [DEBUG] [Thread-158067] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:04:51.765 [DEBUG] [Thread-158067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:04:51.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:04:51.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:04:51.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:04:51.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:04:51.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:04:51.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:04:51.797 [DEBUG] [Thread-158067] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:04:59.080 [DEBUG] [Thread-158069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:05:01.044 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:05:01.045 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:05:01.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:05:01.798 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:05:01.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:05:02.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 4, 44), 14.22, 37.77, 0.0, 6.95, 14.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:05:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:04:44
2025-09-29T14:05:02.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:05:02.646 [DEBUG] [Thread-158070] [transport.py] [_log()] starting thread (client mode): 0x2b9dc340
2025-09-29T14:05:02.646 [DEBUG] [Thread-158070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:05:02.666 [DEBUG] [Thread-158070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:05:02.666 [INFO] [Thread-158070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:05:02.669 [DEBUG] [Thread-158070] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:05:02.669 [DEBUG] [Thread-158070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] client lang: <none>
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] server lang: <none>
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] kex follows: False
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] Compression: none
2025-09-29T14:05:02.670 [DEBUG] [Thread-158070] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:05:02.686 [DEBUG] [Thread-158070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:05:02.687 [DEBUG] [Thread-158070] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:05:02.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:05:02.688 [DEBUG] [Thread-158070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:05:02.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:05:02.690 [DEBUG] [Thread-158070] [transport.py] [_log()] userauth is OK
2025-09-29T14:05:02.690 [DEBUG] [Thread-158070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:05:02.690 [DEBUG] [Thread-158070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:05:02.690 [DEBUG] [Thread-158070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:05:02.690 [DEBUG] [Thread-158070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:05:02.715 [INFO] [Thread-158070] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:05:02.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:05:10.288 [DEBUG] [Thread-158070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:05:10.289 [DEBUG] [Thread-158070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:05:10.289 [DEBUG] [Thread-158070] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:05:10.329 [DEBUG] [Thread-158070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:05:10.329 [DEBUG] [Thread-158070] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:05:10.331 [DEBUG] [Thread-158070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:05:10.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:05:10.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:05:10.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:05:10.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:05:10.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:05:10.430 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:05:10.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:05:10.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:05:10.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:05:10.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.503195 -999.00  +15.60   8.73     39   +2.00 1 1 1 1 1   888    0 13.68 34.39 ----- 7.9 8.7 181.8 12.3 24.6 -29.0 23.2 -32.4 24.7 -27.4 26.2 -28.5
2025-09-29T14:05:10.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:05:10.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:05:10.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.503195
2025-09-29T14:05:10.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:05:10.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:05:10.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:05:10.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:05:10.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:05:10.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:04:44', tmtdew=14.22, humidity=37.77, cloud=0.0, wind=6.95, temperature=14.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:04:36.048', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:05:10.434 [DEBUG] [Thread-158070] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:05:10.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:05:10.532 [DEBUG] [Thread-158073] [transport.py] [_log()] starting thread (client mode): 0x2b9dd9f0
2025-09-29T14:05:10.532 [DEBUG] [Thread-158073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:05:10.547 [DEBUG] [Thread-158073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:05:10.547 [INFO] [Thread-158073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:05:10.555 [DEBUG] [Thread-158073] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:05:10.555 [DEBUG] [Thread-158073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:05:10.555 [DEBUG] [Thread-158073] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:05:10.555 [DEBUG] [Thread-158073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:10.555 [DEBUG] [Thread-158073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:10.555 [DEBUG] [Thread-158073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] client lang: <none>
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] server lang: <none>
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] kex follows: False
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] Compression: none
2025-09-29T14:05:10.556 [DEBUG] [Thread-158073] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:05:10.614 [DEBUG] [Thread-158073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:05:10.615 [DEBUG] [Thread-158073] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:05:10.615 [DEBUG] [Thread-158073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:05:10.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:05:10.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:05:10.674 [DEBUG] [Thread-158073] [transport.py] [_log()] userauth is OK
2025-09-29T14:05:10.675 [DEBUG] [Thread-158073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:05:10.675 [DEBUG] [Thread-158073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:05:10.675 [DEBUG] [Thread-158073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:05:10.675 [DEBUG] [Thread-158073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:05:10.688 [INFO] [Thread-158073] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:05:10.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:05:10.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:05:11.675 [DEBUG] [Thread-158073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:05:11.675 [DEBUG] [Thread-158073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:05:11.723 [DEBUG] [Thread-158073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:05:11.723 [DEBUG] [Thread-158073] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:05:11.732 [DEBUG] [Thread-158073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:05:11.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:05:11.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:05:11.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:05:11.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:05:11.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:05:11.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:05:11.767 [DEBUG] [Thread-158073] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:05:14.126 [DEBUG] [Thread-158075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:05:21.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:05:21.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:05:21.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:05:22.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 5, 16), 14.18, 37.92, 0.0, 7.06, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:05:22.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:05:16
2025-09-29T14:05:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:05:22.638 [DEBUG] [Thread-158076] [transport.py] [_log()] starting thread (client mode): 0x2b956e00
2025-09-29T14:05:22.638 [DEBUG] [Thread-158076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:05:22.658 [DEBUG] [Thread-158076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:05:22.658 [INFO] [Thread-158076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] client lang: <none>
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] server lang: <none>
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] kex follows: False
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] Compression: none
2025-09-29T14:05:22.662 [DEBUG] [Thread-158076] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:05:22.676 [DEBUG] [Thread-158076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:05:22.676 [DEBUG] [Thread-158076] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:05:22.676 [DEBUG] [Thread-158076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:05:22.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:05:22.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:05:22.677 [DEBUG] [Thread-158076] [transport.py] [_log()] userauth is OK
2025-09-29T14:05:22.677 [DEBUG] [Thread-158076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:05:22.677 [DEBUG] [Thread-158076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:05:22.677 [DEBUG] [Thread-158076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:05:22.677 [DEBUG] [Thread-158076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:05:22.687 [INFO] [Thread-158076] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:05:22.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:05:23.284 [DEBUG] [Thread-158076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:05:23.285 [DEBUG] [Thread-158076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:05:23.285 [DEBUG] [Thread-158076] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:05:23.326 [DEBUG] [Thread-158076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:05:23.326 [DEBUG] [Thread-158076] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:05:23.328 [DEBUG] [Thread-158076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:05:23.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:05:23.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:05:23.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:05:23.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:05:23.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:05:23.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:05:23.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.503541 -999.00  +15.50   5.26     40   +2.00 1 1 1 1 1   888    0 13.74 39.72 ----- 5.5 5.3 169.6 7.6 24.8 -27.4 23.3 -27.5 24.9 -26.9 26.1 -29.6
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.503541
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:05:23.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:05:16', tmtdew=14.18, humidity=37.92, cloud=0.0, wind=7.06, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:05:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:05:23.342 [DEBUG] [Thread-158076] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:05:23.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:05:23.426 [DEBUG] [Thread-158079] [transport.py] [_log()] starting thread (client mode): 0x2b955f30
2025-09-29T14:05:23.426 [DEBUG] [Thread-158079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:05:23.440 [DEBUG] [Thread-158079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:05:23.440 [INFO] [Thread-158079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] client lang: <none>
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] server lang: <none>
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] kex follows: False
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] Compression: none
2025-09-29T14:05:23.448 [DEBUG] [Thread-158079] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:05:23.506 [DEBUG] [Thread-158079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:05:23.506 [DEBUG] [Thread-158079] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:05:23.506 [DEBUG] [Thread-158079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:05:23.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:05:23.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:05:23.562 [DEBUG] [Thread-158079] [transport.py] [_log()] userauth is OK
2025-09-29T14:05:23.562 [DEBUG] [Thread-158079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:05:23.562 [DEBUG] [Thread-158079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:05:23.563 [DEBUG] [Thread-158079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:05:23.563 [DEBUG] [Thread-158079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:05:23.580 [INFO] [Thread-158079] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:05:23.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:05:23.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:05:24.622 [DEBUG] [Thread-158079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:05:24.622 [DEBUG] [Thread-158079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:05:24.672 [DEBUG] [Thread-158079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:05:24.672 [DEBUG] [Thread-158079] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:05:24.682 [DEBUG] [Thread-158079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:05:24.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:05:24.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:05:24.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:05:24.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:05:24.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:05:24.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:05:24.725 [DEBUG] [Thread-158079] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:05:29.154 [DEBUG] [Thread-158081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:05:34.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:05:34.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:05:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:05:35.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 5, 16), 14.18, 37.92, 0.0, 7.06, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:05:35.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:05:16
2025-09-29T14:05:35.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:05:35.566 [DEBUG] [Thread-158082] [transport.py] [_log()] starting thread (client mode): 0x2b9df9a0
2025-09-29T14:05:35.566 [DEBUG] [Thread-158082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:05:35.588 [DEBUG] [Thread-158082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:05:35.588 [INFO] [Thread-158082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] client lang: <none>
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] server lang: <none>
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] kex follows: False
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] Compression: none
2025-09-29T14:05:35.592 [DEBUG] [Thread-158082] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:05:35.609 [DEBUG] [Thread-158082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:05:35.609 [DEBUG] [Thread-158082] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:05:35.610 [DEBUG] [Thread-158082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:05:35.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:05:35.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:05:35.612 [DEBUG] [Thread-158082] [transport.py] [_log()] userauth is OK
2025-09-29T14:05:35.612 [DEBUG] [Thread-158082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:05:35.613 [DEBUG] [Thread-158082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:05:35.613 [DEBUG] [Thread-158082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:05:35.613 [DEBUG] [Thread-158082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:05:35.626 [INFO] [Thread-158082] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:05:35.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:05:36.355 [DEBUG] [Thread-158082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:05:36.355 [DEBUG] [Thread-158082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:05:36.355 [DEBUG] [Thread-158082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:05:36.396 [DEBUG] [Thread-158082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:05:36.396 [DEBUG] [Thread-158082] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:05:36.399 [DEBUG] [Thread-158082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:05:36.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:05:36.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:05:36.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:05:36.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:05:36.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:05:36.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:05:36.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:05:36.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:05:36.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:05:36.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.503541 -999.00  +15.50   5.26     40   +2.00 1 1 1 1 1   888    0 13.74 39.72 ----- 5.5 5.3 169.6 7.6 24.8 -27.4 23.3 -27.5 24.9 -26.9 26.1 -29.6
2025-09-29T14:05:36.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:05:36.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:05:36.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.503541
2025-09-29T14:05:36.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:05:36.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:05:36.420 [DEBUG] [Thread-158082] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:05:36.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:05:36.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:05:36.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:05:36.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:05:16', tmtdew=14.18, humidity=37.92, cloud=0.0, wind=7.06, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:05:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:05:36.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:05:36.519 [DEBUG] [Thread-158085] [transport.py] [_log()] starting thread (client mode): 0x2b9de2c0
2025-09-29T14:05:36.519 [DEBUG] [Thread-158085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:05:36.533 [DEBUG] [Thread-158085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:05:36.533 [INFO] [Thread-158085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:05:36.540 [DEBUG] [Thread-158085] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:05:36.540 [DEBUG] [Thread-158085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:05:36.540 [DEBUG] [Thread-158085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:05:36.540 [DEBUG] [Thread-158085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:36.540 [DEBUG] [Thread-158085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:36.540 [DEBUG] [Thread-158085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] client lang: <none>
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] server lang: <none>
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] kex follows: False
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] Compression: none
2025-09-29T14:05:36.541 [DEBUG] [Thread-158085] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:05:36.598 [DEBUG] [Thread-158085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:05:36.598 [DEBUG] [Thread-158085] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:05:36.599 [DEBUG] [Thread-158085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:05:36.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:05:36.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:05:36.655 [DEBUG] [Thread-158085] [transport.py] [_log()] userauth is OK
2025-09-29T14:05:36.655 [DEBUG] [Thread-158085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:05:36.655 [DEBUG] [Thread-158085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:05:36.655 [DEBUG] [Thread-158085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:05:36.655 [DEBUG] [Thread-158085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:05:36.674 [INFO] [Thread-158085] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:05:36.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:05:36.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:05:37.625 [DEBUG] [Thread-158085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:05:37.625 [DEBUG] [Thread-158085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:05:37.672 [DEBUG] [Thread-158085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:05:37.672 [DEBUG] [Thread-158085] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:05:37.681 [DEBUG] [Thread-158085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:05:37.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:05:37.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:05:37.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:05:37.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:05:37.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:05:37.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:05:37.719 [DEBUG] [Thread-158085] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:05:43.815 [DEBUG] [Thread-158087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:05:44.196 [DEBUG] [Thread-158088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:05:47.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:05:47.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:05:47.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:05:48.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 5, 16), 14.18, 37.92, 0.0, 7.06, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:05:48.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:05:16
2025-09-29T14:05:48.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:05:48.556 [DEBUG] [Thread-158089] [transport.py] [_log()] starting thread (client mode): 0x2b9de4a0
2025-09-29T14:05:48.557 [DEBUG] [Thread-158089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:05:48.577 [DEBUG] [Thread-158089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:05:48.577 [INFO] [Thread-158089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] client lang: <none>
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] server lang: <none>
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] kex follows: False
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] Compression: none
2025-09-29T14:05:48.580 [DEBUG] [Thread-158089] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:05:48.596 [DEBUG] [Thread-158089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:05:48.597 [DEBUG] [Thread-158089] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:05:48.597 [DEBUG] [Thread-158089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:05:48.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:05:48.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:05:48.599 [DEBUG] [Thread-158089] [transport.py] [_log()] userauth is OK
2025-09-29T14:05:48.599 [DEBUG] [Thread-158089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:05:48.599 [DEBUG] [Thread-158089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:05:48.599 [DEBUG] [Thread-158089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:05:48.599 [DEBUG] [Thread-158089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:05:48.633 [INFO] [Thread-158089] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:05:48.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:05:49.360 [DEBUG] [Thread-158089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:05:49.360 [DEBUG] [Thread-158089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:05:49.361 [DEBUG] [Thread-158089] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:05:49.402 [DEBUG] [Thread-158089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:05:49.402 [DEBUG] [Thread-158089] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:05:49.405 [DEBUG] [Thread-158089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:05:49.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:05:49.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:05:49.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:05:49.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:05:49.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:05:49.424 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:05:49.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.503541 -999.00  +15.50   5.26     40   +2.00 1 1 1 1 1   888    0 13.74 39.72 ----- 5.5 5.3 169.6 7.6 24.8 -27.4 23.3 -27.5 24.9 -26.9 26.1 -29.6
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.503541
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:05:49.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:05:16', tmtdew=14.18, humidity=37.92, cloud=0.0, wind=7.06, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:05:05.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:05:49.425 [DEBUG] [Thread-158089] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:05:49.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:05:49.512 [DEBUG] [Thread-158092] [transport.py] [_log()] starting thread (client mode): 0x2b96d540
2025-09-29T14:05:49.512 [DEBUG] [Thread-158092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:05:49.530 [DEBUG] [Thread-158092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:05:49.530 [INFO] [Thread-158092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] client lang: <none>
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] server lang: <none>
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] kex follows: False
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] Compression: none
2025-09-29T14:05:49.542 [DEBUG] [Thread-158092] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:05:49.597 [DEBUG] [Thread-158092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:05:49.597 [DEBUG] [Thread-158092] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:05:49.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:05:49.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:05:49.598 [DEBUG] [Thread-158092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:05:49.654 [DEBUG] [Thread-158092] [transport.py] [_log()] userauth is OK
2025-09-29T14:05:49.654 [DEBUG] [Thread-158092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:05:49.654 [DEBUG] [Thread-158092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:05:49.654 [DEBUG] [Thread-158092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:05:49.654 [DEBUG] [Thread-158092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:05:49.673 [INFO] [Thread-158092] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:05:49.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:05:49.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:05:50.682 [DEBUG] [Thread-158092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:05:50.682 [DEBUG] [Thread-158092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:05:50.729 [DEBUG] [Thread-158092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:05:50.730 [DEBUG] [Thread-158092] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:05:50.739 [DEBUG] [Thread-158092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:05:50.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:05:50.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:05:50.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:05:50.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:05:50.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:05:50.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:05:50.774 [DEBUG] [Thread-158092] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:05:59.226 [DEBUG] [Thread-158094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:06:00.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:06:00.776 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:06:00.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:06:01.188 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:06:01.192 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:06:01.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 5, 48), 14.58, 36.94, 0.0, 12.1, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:06:01.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:05:48
2025-09-29T14:06:01.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:06:01.661 [DEBUG] [Thread-158095] [transport.py] [_log()] starting thread (client mode): 0x2b9df130
2025-09-29T14:06:01.661 [DEBUG] [Thread-158095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:01.682 [DEBUG] [Thread-158095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:06:01.682 [INFO] [Thread-158095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:06:01.685 [DEBUG] [Thread-158095] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:01.685 [DEBUG] [Thread-158095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:06:01.685 [DEBUG] [Thread-158095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:01.685 [DEBUG] [Thread-158095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:01.685 [DEBUG] [Thread-158095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:01.685 [DEBUG] [Thread-158095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:01.685 [DEBUG] [Thread-158095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] Compression: none
2025-09-29T14:06:01.686 [DEBUG] [Thread-158095] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:01.701 [DEBUG] [Thread-158095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:01.701 [DEBUG] [Thread-158095] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:01.702 [DEBUG] [Thread-158095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:06:01.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:06:01.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:01.702 [DEBUG] [Thread-158095] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:01.703 [DEBUG] [Thread-158095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:01.703 [DEBUG] [Thread-158095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:01.703 [DEBUG] [Thread-158095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:06:01.703 [DEBUG] [Thread-158095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:01.711 [INFO] [Thread-158095] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:01.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:02.300 [DEBUG] [Thread-158095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:02.300 [DEBUG] [Thread-158095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:02.300 [DEBUG] [Thread-158095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:06:02.341 [DEBUG] [Thread-158095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:02.341 [DEBUG] [Thread-158095] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:02.343 [DEBUG] [Thread-158095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:02.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:02.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:06:02.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:06:02.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:06:02.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:02.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:06:02.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:02.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:02.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:06:02.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.503888 -999.00  +15.90   9.93     39   +2.00 1 1 1 1 1   888    0 14.14 45.77 ----- 9.7 9.9 193.0 11.3 24.7 -29.0 23.3 -30.5 24.9 -29.1 26.5 -28.0
2025-09-29T14:06:02.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:06:02.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:06:02.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.503888
2025-09-29T14:06:02.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:06:02.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:06:02.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:06:02.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:06:02.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:06:02.367 [DEBUG] [Thread-158095] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:02.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:05:48', tmtdew=14.58, humidity=36.94, cloud=0.0, wind=12.1, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:05:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:06:02.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:06:02.461 [DEBUG] [Thread-158098] [transport.py] [_log()] starting thread (client mode): 0x2b9de230
2025-09-29T14:06:02.461 [DEBUG] [Thread-158098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:02.476 [DEBUG] [Thread-158098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:06:02.476 [INFO] [Thread-158098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] Compression: none
2025-09-29T14:06:02.484 [DEBUG] [Thread-158098] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:02.541 [DEBUG] [Thread-158098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:02.542 [DEBUG] [Thread-158098] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:02.542 [DEBUG] [Thread-158098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:06:02.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:06:02.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:02.598 [DEBUG] [Thread-158098] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:02.598 [DEBUG] [Thread-158098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:02.598 [DEBUG] [Thread-158098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:02.598 [DEBUG] [Thread-158098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:06:02.599 [DEBUG] [Thread-158098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:02.613 [INFO] [Thread-158098] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:02.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:06:02.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:03.617 [DEBUG] [Thread-158098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:03.617 [DEBUG] [Thread-158098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:03.665 [DEBUG] [Thread-158098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:03.665 [DEBUG] [Thread-158098] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:03.673 [DEBUG] [Thread-158098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:03.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:03.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:06:03.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:06:03.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:03.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:03.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:03.705 [DEBUG] [Thread-158098] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:13.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:06:13.698 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:06:13.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:06:14.251 [DEBUG] [Thread-158100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:06:14.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 5, 48), 14.58, 36.94, 0.0, 12.1, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:06:14.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:05:48
2025-09-29T14:06:14.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:06:14.529 [DEBUG] [Thread-158101] [transport.py] [_log()] starting thread (client mode): 0x2b90fa30
2025-09-29T14:06:14.530 [DEBUG] [Thread-158101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:14.554 [DEBUG] [Thread-158101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:06:14.554 [INFO] [Thread-158101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:06:14.557 [DEBUG] [Thread-158101] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] Compression: none
2025-09-29T14:06:14.558 [DEBUG] [Thread-158101] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:14.575 [DEBUG] [Thread-158101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:14.576 [DEBUG] [Thread-158101] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:14.576 [DEBUG] [Thread-158101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:06:14.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:06:14.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:14.578 [DEBUG] [Thread-158101] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:14.579 [DEBUG] [Thread-158101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:14.579 [DEBUG] [Thread-158101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:14.579 [DEBUG] [Thread-158101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:06:14.579 [DEBUG] [Thread-158101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:14.613 [INFO] [Thread-158101] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:14.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:15.354 [DEBUG] [Thread-158101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:15.355 [DEBUG] [Thread-158101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:15.355 [DEBUG] [Thread-158101] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:06:15.395 [DEBUG] [Thread-158101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:15.396 [DEBUG] [Thread-158101] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:15.399 [DEBUG] [Thread-158101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:15.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:15.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:06:15.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:06:15.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:06:15.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:15.420 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:06:15.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:15.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:15.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:06:15.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.503888 -999.00  +15.90   9.93     39   +2.00 1 1 1 1 1   888    0 14.14 45.77 ----- 9.7 9.9 193.0 11.3 24.7 -29.0 23.3 -30.5 24.9 -29.1 26.5 -28.0
2025-09-29T14:06:15.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:06:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:06:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.503888
2025-09-29T14:06:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:06:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:06:15.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:06:15.423 [DEBUG] [Thread-158101] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:15.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:06:15.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:06:15.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:05:48', tmtdew=14.58, humidity=36.94, cloud=0.0, wind=12.1, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:05:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:06:15.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:06:15.517 [DEBUG] [Thread-158104] [transport.py] [_log()] starting thread (client mode): 0x2b90c5e0
2025-09-29T14:06:15.517 [DEBUG] [Thread-158104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:15.532 [DEBUG] [Thread-158104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:06:15.533 [INFO] [Thread-158104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:06:15.540 [DEBUG] [Thread-158104] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] Compression: none
2025-09-29T14:06:15.541 [DEBUG] [Thread-158104] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:15.604 [DEBUG] [Thread-158104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:15.604 [DEBUG] [Thread-158104] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:15.605 [DEBUG] [Thread-158104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:06:15.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:06:15.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:15.667 [DEBUG] [Thread-158104] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:15.667 [DEBUG] [Thread-158104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:15.667 [DEBUG] [Thread-158104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:15.668 [DEBUG] [Thread-158104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:06:15.668 [DEBUG] [Thread-158104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:15.687 [INFO] [Thread-158104] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:15.687 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:06:15.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:16.677 [DEBUG] [Thread-158104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:16.678 [DEBUG] [Thread-158104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:16.725 [DEBUG] [Thread-158104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:16.725 [DEBUG] [Thread-158104] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:16.733 [DEBUG] [Thread-158104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:16.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:16.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:06:16.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:06:16.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:16.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:16.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:16.767 [DEBUG] [Thread-158104] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:26.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:06:26.768 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:06:26.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:06:27.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 6, 20), 14.8, 36.41, 0.0, 12.63, 14.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:06:27.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:06:20
2025-09-29T14:06:27.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:06:27.606 [DEBUG] [Thread-158106] [transport.py] [_log()] starting thread (client mode): 0x2b96c280
2025-09-29T14:06:27.606 [DEBUG] [Thread-158106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:27.626 [DEBUG] [Thread-158106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:06:27.626 [INFO] [Thread-158106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] Compression: none
2025-09-29T14:06:27.629 [DEBUG] [Thread-158106] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:27.646 [DEBUG] [Thread-158106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:27.646 [DEBUG] [Thread-158106] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:27.647 [DEBUG] [Thread-158106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:06:27.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:06:27.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:27.649 [DEBUG] [Thread-158106] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:27.649 [DEBUG] [Thread-158106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:27.649 [DEBUG] [Thread-158106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:27.649 [DEBUG] [Thread-158106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:06:27.649 [DEBUG] [Thread-158106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:27.673 [INFO] [Thread-158106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:27.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:28.253 [DEBUG] [Thread-158106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:28.254 [DEBUG] [Thread-158106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:28.254 [DEBUG] [Thread-158106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:06:28.294 [DEBUG] [Thread-158106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:28.295 [DEBUG] [Thread-158106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:28.297 [DEBUG] [Thread-158106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:28.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:28.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:06:28.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:06:28.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:06:28.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:28.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:06:28.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:28.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:28.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:06:28.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.504235 -999.00  +15.70   6.34     39   +1.90 1 1 1 1 1   888    0 14.30 50.29 ----- 4.2 6.3 190.6 16.0 24.8 -27.5 23.5 -27.2 25.0 -26.9 26.3 -29.9
2025-09-29T14:06:28.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:06:28.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:06:28.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.504235
2025-09-29T14:06:28.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:06:28.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:06:28.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:06:28.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:06:28.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:06:28.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:06:20', tmtdew=14.8, humidity=36.41, cloud=0.0, wind=12.63, temperature=14.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:06:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:06:28.316 [DEBUG] [Thread-158106] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:28.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:06:28.412 [DEBUG] [Thread-158109] [transport.py] [_log()] starting thread (client mode): 0x2b96ef80
2025-09-29T14:06:28.412 [DEBUG] [Thread-158109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:28.426 [DEBUG] [Thread-158109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:06:28.427 [INFO] [Thread-158109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:06:28.434 [DEBUG] [Thread-158109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] Compression: none
2025-09-29T14:06:28.435 [DEBUG] [Thread-158109] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:28.495 [DEBUG] [Thread-158109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:28.495 [DEBUG] [Thread-158109] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:28.496 [DEBUG] [Thread-158109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:06:28.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:06:28.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:28.551 [DEBUG] [Thread-158109] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:28.551 [DEBUG] [Thread-158109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:28.551 [DEBUG] [Thread-158109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:28.551 [DEBUG] [Thread-158109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:06:28.551 [DEBUG] [Thread-158109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:28.570 [INFO] [Thread-158109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:28.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:06:28.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:29.292 [DEBUG] [Thread-158111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:06:29.579 [DEBUG] [Thread-158109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:29.579 [DEBUG] [Thread-158109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:29.626 [DEBUG] [Thread-158109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:29.626 [DEBUG] [Thread-158109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:29.635 [DEBUG] [Thread-158109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:29.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:29.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:06:29.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:06:29.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:29.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:29.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:29.679 [DEBUG] [Thread-158109] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:39.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:06:39.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:06:39.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:06:40.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 6, 20), 14.8, 36.41, 0.0, 12.63, 14.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:06:40.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:06:20
2025-09-29T14:06:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:06:40.533 [DEBUG] [Thread-158112] [transport.py] [_log()] starting thread (client mode): 0x2b96c6d0
2025-09-29T14:06:40.533 [DEBUG] [Thread-158112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:40.553 [DEBUG] [Thread-158112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:06:40.553 [INFO] [Thread-158112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] Compression: none
2025-09-29T14:06:40.556 [DEBUG] [Thread-158112] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:40.571 [DEBUG] [Thread-158112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:40.571 [DEBUG] [Thread-158112] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:40.571 [DEBUG] [Thread-158112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:06:40.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:06:40.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:40.572 [DEBUG] [Thread-158112] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:40.572 [DEBUG] [Thread-158112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:40.572 [DEBUG] [Thread-158112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:40.572 [DEBUG] [Thread-158112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:06:40.572 [DEBUG] [Thread-158112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:40.598 [INFO] [Thread-158112] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:40.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:41.329 [DEBUG] [Thread-158112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:41.329 [DEBUG] [Thread-158112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:41.329 [DEBUG] [Thread-158112] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:06:41.370 [DEBUG] [Thread-158112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:41.370 [DEBUG] [Thread-158112] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:41.373 [DEBUG] [Thread-158112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:41.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:41.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:06:41.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:06:41.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:06:41.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:41.395 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:06:41.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:41.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:41.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:06:41.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.504235 -999.00  +15.70   6.34     39   +1.90 1 1 1 1 1   888    0 14.30 50.29 ----- 4.2 6.3 190.6 16.0 24.8 -27.5 23.5 -27.2 25.0 -26.9 26.3 -29.9
2025-09-29T14:06:41.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:06:41.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:06:41.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.504235
2025-09-29T14:06:41.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:06:41.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:06:41.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:06:41.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:06:41.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:06:41.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:06:20', tmtdew=14.8, humidity=36.41, cloud=0.0, wind=12.63, temperature=14.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:06:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:06:41.396 [DEBUG] [Thread-158112] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:41.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:06:41.481 [DEBUG] [Thread-158115] [transport.py] [_log()] starting thread (client mode): 0x2b9ddd50
2025-09-29T14:06:41.481 [DEBUG] [Thread-158115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:41.495 [DEBUG] [Thread-158115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:06:41.495 [INFO] [Thread-158115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] Compression: none
2025-09-29T14:06:41.503 [DEBUG] [Thread-158115] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:41.557 [DEBUG] [Thread-158115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:41.557 [DEBUG] [Thread-158115] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:41.557 [DEBUG] [Thread-158115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:06:41.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:06:41.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:41.615 [DEBUG] [Thread-158115] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:41.615 [DEBUG] [Thread-158115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:41.615 [DEBUG] [Thread-158115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:41.615 [DEBUG] [Thread-158115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:06:41.615 [DEBUG] [Thread-158115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:41.628 [INFO] [Thread-158115] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:41.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:06:41.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:42.641 [DEBUG] [Thread-158115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:42.641 [DEBUG] [Thread-158115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:42.689 [DEBUG] [Thread-158115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:42.689 [DEBUG] [Thread-158115] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:42.699 [DEBUG] [Thread-158115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:42.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:42.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:06:42.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:06:42.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:42.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:42.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:42.735 [DEBUG] [Thread-158115] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:43.872 [DEBUG] [Thread-158117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:06:44.330 [DEBUG] [Thread-158118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:06:52.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:06:52.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:06:52.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:06:53.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 6, 20), 14.8, 36.41, 0.0, 12.63, 14.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:06:53.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:06:20
2025-09-29T14:06:53.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:06:53.643 [DEBUG] [Thread-158119] [transport.py] [_log()] starting thread (client mode): 0x5effb1f0
2025-09-29T14:06:53.643 [DEBUG] [Thread-158119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:53.663 [DEBUG] [Thread-158119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:06:53.663 [INFO] [Thread-158119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:06:53.664 [DEBUG] [Thread-158119] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:53.664 [DEBUG] [Thread-158119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:06:53.664 [DEBUG] [Thread-158119] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:53.664 [DEBUG] [Thread-158119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:53.664 [DEBUG] [Thread-158119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:53.664 [DEBUG] [Thread-158119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:53.664 [DEBUG] [Thread-158119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:53.664 [DEBUG] [Thread-158119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] Compression: none
2025-09-29T14:06:53.665 [DEBUG] [Thread-158119] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:53.673 [DEBUG] [Thread-158119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:53.673 [DEBUG] [Thread-158119] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:53.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:06:53.673 [DEBUG] [Thread-158119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:06:53.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:53.675 [DEBUG] [Thread-158119] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:53.675 [DEBUG] [Thread-158119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:53.675 [DEBUG] [Thread-158119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:53.675 [DEBUG] [Thread-158119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:06:53.675 [DEBUG] [Thread-158119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:53.688 [INFO] [Thread-158119] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:53.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:54.414 [DEBUG] [Thread-158119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:54.414 [DEBUG] [Thread-158119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:54.415 [DEBUG] [Thread-158119] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:06:54.455 [DEBUG] [Thread-158119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:54.456 [DEBUG] [Thread-158119] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:54.459 [DEBUG] [Thread-158119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:54.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:54.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:06:54.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:06:54.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:06:54.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:54.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:06:54.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.504235 -999.00  +15.70   6.34     39   +1.90 1 1 1 1 1   888    0 14.30 50.29 ----- 4.2 6.3 190.6 16.0 24.8 -27.5 23.5 -27.2 25.0 -26.9 26.3 -29.9
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.504235
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:06:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:06:20', tmtdew=14.8, humidity=36.41, cloud=0.0, wind=12.63, temperature=14.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:06:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:06:54.478 [DEBUG] [Thread-158119] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:54.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:06:54.561 [DEBUG] [Thread-158122] [transport.py] [_log()] starting thread (client mode): 0x2b9b92d0
2025-09-29T14:06:54.561 [DEBUG] [Thread-158122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:06:54.576 [DEBUG] [Thread-158122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:06:54.576 [INFO] [Thread-158122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] client lang: <none>
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] server lang: <none>
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] kex follows: False
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] Compression: none
2025-09-29T14:06:54.584 [DEBUG] [Thread-158122] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:06:54.643 [DEBUG] [Thread-158122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:06:54.644 [DEBUG] [Thread-158122] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:06:54.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:06:54.645 [DEBUG] [Thread-158122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:06:54.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:06:54.703 [DEBUG] [Thread-158122] [transport.py] [_log()] userauth is OK
2025-09-29T14:06:54.703 [DEBUG] [Thread-158122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:06:54.703 [DEBUG] [Thread-158122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:06:54.703 [DEBUG] [Thread-158122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:06:54.704 [DEBUG] [Thread-158122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:06:54.726 [INFO] [Thread-158122] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:06:54.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:06:54.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:06:55.724 [DEBUG] [Thread-158122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:06:55.724 [DEBUG] [Thread-158122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:06:55.772 [DEBUG] [Thread-158122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:06:55.772 [DEBUG] [Thread-158122] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:06:55.782 [DEBUG] [Thread-158122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:06:55.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:06:55.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:06:55.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:06:55.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:06:55.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:06:55.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:06:55.817 [DEBUG] [Thread-158122] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:06:59.360 [DEBUG] [Thread-158124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:07:01.370 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:07:01.371 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:07:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:07:05.820 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:07:05.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:07:06.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 6, 52), 14.78, 36.44, 0.0, 13.13, 14.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:07:06.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:06:52
2025-09-29T14:07:06.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:07:06.643 [DEBUG] [Thread-158125] [transport.py] [_log()] starting thread (client mode): 0x2b9dec20
2025-09-29T14:07:06.643 [DEBUG] [Thread-158125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:06.663 [DEBUG] [Thread-158125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:07:06.663 [INFO] [Thread-158125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:06.667 [DEBUG] [Thread-158125] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:06.668 [DEBUG] [Thread-158125] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:06.668 [DEBUG] [Thread-158125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:06.668 [DEBUG] [Thread-158125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:06.668 [DEBUG] [Thread-158125] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:06.668 [DEBUG] [Thread-158125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:06.668 [DEBUG] [Thread-158125] [transport.py] [_log()] Compression: none
2025-09-29T14:07:06.668 [DEBUG] [Thread-158125] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:06.684 [DEBUG] [Thread-158125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:06.684 [DEBUG] [Thread-158125] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:06.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:07:06.685 [DEBUG] [Thread-158125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:07:06.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:06.728 [DEBUG] [Thread-158125] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:06.729 [DEBUG] [Thread-158125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:06.729 [DEBUG] [Thread-158125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:06.729 [DEBUG] [Thread-158125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:07:06.729 [DEBUG] [Thread-158125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:06.750 [INFO] [Thread-158125] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:06.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:07.342 [DEBUG] [Thread-158125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:07.343 [DEBUG] [Thread-158125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:07.343 [DEBUG] [Thread-158125] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:07:07.383 [DEBUG] [Thread-158125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:07.383 [DEBUG] [Thread-158125] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:07.386 [DEBUG] [Thread-158125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:07.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:07.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:07:07.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:07:07.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:07:07.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:07.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:07:07.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:07.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:07.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:07:07.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.504582 -999.00  +15.90  10.85     39   +2.00 1 1 1 1 1   888    0 14.39 58.34 ----- 10.0 10.8 170.8 11.8 24.8 -28.7 23.5 -27.4 25.0 -28.1 26.6 -27.6
2025-09-29T14:07:07.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:07:07.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:07:07.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.504582
2025-09-29T14:07:07.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:07:07.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:07:07.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:07:07.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:07:07.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:07:07.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:06:52', tmtdew=14.78, humidity=36.44, cloud=0.0, wind=13.13, temperature=14.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:06:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:07:07.407 [DEBUG] [Thread-158125] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:07.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:07:07.500 [DEBUG] [Thread-158128] [transport.py] [_log()] starting thread (client mode): 0x2b9dc190
2025-09-29T14:07:07.500 [DEBUG] [Thread-158128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:07.516 [DEBUG] [Thread-158128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:07:07.516 [INFO] [Thread-158128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:07:07.523 [DEBUG] [Thread-158128] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:07.523 [DEBUG] [Thread-158128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:07:07.523 [DEBUG] [Thread-158128] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:07.523 [DEBUG] [Thread-158128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:07.523 [DEBUG] [Thread-158128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:07.523 [DEBUG] [Thread-158128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] Compression: none
2025-09-29T14:07:07.524 [DEBUG] [Thread-158128] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:07.582 [DEBUG] [Thread-158128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:07.583 [DEBUG] [Thread-158128] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:07.583 [DEBUG] [Thread-158128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:07:07.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:07:07.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:07.639 [DEBUG] [Thread-158128] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:07.639 [DEBUG] [Thread-158128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:07.639 [DEBUG] [Thread-158128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:07.639 [DEBUG] [Thread-158128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:07:07.639 [DEBUG] [Thread-158128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:07.658 [INFO] [Thread-158128] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:07.659 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:07:07.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:08.647 [DEBUG] [Thread-158128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:08.648 [DEBUG] [Thread-158128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:08.695 [DEBUG] [Thread-158128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:08.695 [DEBUG] [Thread-158128] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:08.704 [DEBUG] [Thread-158128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:08.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:08.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:07:08.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:07:08.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:08.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:08.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:08.738 [DEBUG] [Thread-158128] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:14.391 [DEBUG] [Thread-158130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:07:18.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:07:18.740 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:07:18.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:07:19.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 6, 52), 14.78, 36.44, 0.0, 13.13, 14.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:07:19.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:06:52
2025-09-29T14:07:19.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:07:19.596 [DEBUG] [Thread-158131] [transport.py] [_log()] starting thread (client mode): 0x2b90cfd0
2025-09-29T14:07:19.596 [DEBUG] [Thread-158131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:19.617 [DEBUG] [Thread-158131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:07:19.617 [INFO] [Thread-158131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] Compression: none
2025-09-29T14:07:19.621 [DEBUG] [Thread-158131] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:19.638 [DEBUG] [Thread-158131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:19.639 [DEBUG] [Thread-158131] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:19.639 [DEBUG] [Thread-158131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:07:19.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:07:19.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:19.639 [DEBUG] [Thread-158131] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:19.639 [DEBUG] [Thread-158131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:19.640 [DEBUG] [Thread-158131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:19.640 [DEBUG] [Thread-158131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:07:19.640 [DEBUG] [Thread-158131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:19.654 [INFO] [Thread-158131] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:19.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:20.414 [DEBUG] [Thread-158131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:20.414 [DEBUG] [Thread-158131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:20.414 [DEBUG] [Thread-158131] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:07:20.455 [DEBUG] [Thread-158131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:20.455 [DEBUG] [Thread-158131] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:20.457 [DEBUG] [Thread-158131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:20.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:20.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:07:20.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:07:20.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:07:20.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:20.475 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:07:20.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:20.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.504582 -999.00  +15.90  10.85     39   +2.00 1 1 1 1 1   888    0 14.39 58.34 ----- 10.0 10.8 170.8 11.8 24.8 -28.7 23.5 -27.4 25.0 -28.1 26.6 -27.6
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.504582
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:07:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:06:52', tmtdew=14.78, humidity=36.44, cloud=0.0, wind=13.13, temperature=14.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:06:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:07:20.478 [DEBUG] [Thread-158131] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:20.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:07:20.561 [DEBUG] [Thread-158134] [transport.py] [_log()] starting thread (client mode): 0x2b90d0f0
2025-09-29T14:07:20.561 [DEBUG] [Thread-158134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:20.577 [DEBUG] [Thread-158134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:07:20.577 [INFO] [Thread-158134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:07:20.584 [DEBUG] [Thread-158134] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] Compression: none
2025-09-29T14:07:20.585 [DEBUG] [Thread-158134] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:20.642 [DEBUG] [Thread-158134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:20.643 [DEBUG] [Thread-158134] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:20.644 [DEBUG] [Thread-158134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:07:20.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:07:20.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:20.699 [DEBUG] [Thread-158134] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:20.699 [DEBUG] [Thread-158134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:20.699 [DEBUG] [Thread-158134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:20.700 [DEBUG] [Thread-158134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:07:20.700 [DEBUG] [Thread-158134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:20.718 [INFO] [Thread-158134] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:20.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:07:20.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:21.695 [DEBUG] [Thread-158134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:21.695 [DEBUG] [Thread-158134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:21.745 [DEBUG] [Thread-158134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:21.745 [DEBUG] [Thread-158134] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:21.756 [DEBUG] [Thread-158134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:21.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:21.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:07:21.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:07:21.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:21.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:21.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:21.803 [DEBUG] [Thread-158134] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:29.440 [DEBUG] [Thread-158136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:07:31.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:07:31.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:07:31.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:07:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 7, 24), 14.64, 36.76, 0.0, 13.11, 14.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:07:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:07:24
2025-09-29T14:07:32.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:07:32.642 [DEBUG] [Thread-158137] [transport.py] [_log()] starting thread (client mode): 0x2b9dded0
2025-09-29T14:07:32.643 [DEBUG] [Thread-158137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:32.664 [DEBUG] [Thread-158137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:07:32.664 [INFO] [Thread-158137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:07:32.667 [DEBUG] [Thread-158137] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] Compression: none
2025-09-29T14:07:32.668 [DEBUG] [Thread-158137] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:32.685 [DEBUG] [Thread-158137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:32.686 [DEBUG] [Thread-158137] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:32.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:07:32.687 [DEBUG] [Thread-158137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:07:32.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:32.688 [DEBUG] [Thread-158137] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:32.689 [DEBUG] [Thread-158137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:32.689 [DEBUG] [Thread-158137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:32.689 [DEBUG] [Thread-158137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:07:32.689 [DEBUG] [Thread-158137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:32.711 [INFO] [Thread-158137] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:32.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:33.285 [DEBUG] [Thread-158137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:33.285 [DEBUG] [Thread-158137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:33.286 [DEBUG] [Thread-158137] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:07:33.326 [DEBUG] [Thread-158137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:33.326 [DEBUG] [Thread-158137] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:33.329 [DEBUG] [Thread-158137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:33.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:33.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:07:33.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:07:33.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:07:33.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:33.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:07:33.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:33.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:33.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:07:33.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.504930 -999.00  +15.90   8.61     39   +2.20 1 1 1 1 1   888    0 14.61 61.03 ----- 9.6 8.6 164.0 10.6 24.9 -28.0 23.6 -27.7 25.1 -28.1 26.5 -29.3
2025-09-29T14:07:33.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:07:33.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:07:33.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.504930
2025-09-29T14:07:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:07:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:07:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:07:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:07:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:07:33.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:07:24', tmtdew=14.64, humidity=36.76, cloud=0.0, wind=13.11, temperature=14.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:07:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:07:33.349 [DEBUG] [Thread-158137] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:33.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:07:33.450 [DEBUG] [Thread-158140] [transport.py] [_log()] starting thread (client mode): 0x2b9b8820
2025-09-29T14:07:33.450 [DEBUG] [Thread-158140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:33.465 [DEBUG] [Thread-158140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:07:33.465 [INFO] [Thread-158140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:33.473 [DEBUG] [Thread-158140] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:33.474 [DEBUG] [Thread-158140] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:33.474 [DEBUG] [Thread-158140] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:33.474 [DEBUG] [Thread-158140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:33.474 [DEBUG] [Thread-158140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:33.474 [DEBUG] [Thread-158140] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:33.474 [DEBUG] [Thread-158140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:33.474 [DEBUG] [Thread-158140] [transport.py] [_log()] Compression: none
2025-09-29T14:07:33.474 [DEBUG] [Thread-158140] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:33.530 [DEBUG] [Thread-158140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:33.531 [DEBUG] [Thread-158140] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:33.531 [DEBUG] [Thread-158140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:07:33.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:07:33.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:33.587 [DEBUG] [Thread-158140] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:33.587 [DEBUG] [Thread-158140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:33.587 [DEBUG] [Thread-158140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:33.587 [DEBUG] [Thread-158140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:07:33.588 [DEBUG] [Thread-158140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:33.610 [INFO] [Thread-158140] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:33.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:07:33.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:34.588 [DEBUG] [Thread-158140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:34.588 [DEBUG] [Thread-158140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:34.636 [DEBUG] [Thread-158140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:34.636 [DEBUG] [Thread-158140] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:34.646 [DEBUG] [Thread-158140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:34.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:34.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:07:34.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:07:34.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:34.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:34.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:34.681 [DEBUG] [Thread-158140] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:43.904 [DEBUG] [Thread-158142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:07:44.465 [DEBUG] [Thread-158143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:07:44.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:07:44.683 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:07:44.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:07:45.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 7, 24), 14.64, 36.76, 0.0, 13.11, 14.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:07:45.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:07:24
2025-09-29T14:07:45.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:07:45.536 [DEBUG] [Thread-158144] [transport.py] [_log()] starting thread (client mode): 0x2b9b91e0
2025-09-29T14:07:45.536 [DEBUG] [Thread-158144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:45.556 [DEBUG] [Thread-158144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:07:45.556 [INFO] [Thread-158144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:45.559 [DEBUG] [Thread-158144] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:45.560 [DEBUG] [Thread-158144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:45.560 [DEBUG] [Thread-158144] [transport.py] [_log()] Compression: none
2025-09-29T14:07:45.560 [DEBUG] [Thread-158144] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:45.575 [DEBUG] [Thread-158144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:45.575 [DEBUG] [Thread-158144] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:45.575 [DEBUG] [Thread-158144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:07:45.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:07:45.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:45.576 [DEBUG] [Thread-158144] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:45.576 [DEBUG] [Thread-158144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:45.576 [DEBUG] [Thread-158144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:45.576 [DEBUG] [Thread-158144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:07:45.576 [DEBUG] [Thread-158144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:45.585 [INFO] [Thread-158144] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:45.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:46.312 [DEBUG] [Thread-158144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:46.312 [DEBUG] [Thread-158144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:46.313 [DEBUG] [Thread-158144] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:07:46.353 [DEBUG] [Thread-158144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:46.354 [DEBUG] [Thread-158144] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:46.356 [DEBUG] [Thread-158144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:46.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:46.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:07:46.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:07:46.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:07:46.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:46.380 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:07:46.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:46.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:46.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:07:46.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.504930 -999.00  +15.90   8.61     39   +2.20 1 1 1 1 1   888    0 14.61 61.03 ----- 9.6 8.6 164.0 10.6 24.9 -28.0 23.6 -27.7 25.1 -28.1 26.5 -29.3
2025-09-29T14:07:46.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:07:46.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:07:46.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.504930
2025-09-29T14:07:46.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:07:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:07:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:07:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:07:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:07:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:07:24', tmtdew=14.64, humidity=36.76, cloud=0.0, wind=13.11, temperature=14.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:07:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:07:46.382 [DEBUG] [Thread-158144] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:46.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:07:46.481 [DEBUG] [Thread-158147] [transport.py] [_log()] starting thread (client mode): 0x2b9dc1c0
2025-09-29T14:07:46.482 [DEBUG] [Thread-158147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:46.496 [DEBUG] [Thread-158147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:07:46.496 [INFO] [Thread-158147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:07:46.504 [DEBUG] [Thread-158147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:46.504 [DEBUG] [Thread-158147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:07:46.504 [DEBUG] [Thread-158147] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] Compression: none
2025-09-29T14:07:46.505 [DEBUG] [Thread-158147] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:46.562 [DEBUG] [Thread-158147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:46.563 [DEBUG] [Thread-158147] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:46.563 [DEBUG] [Thread-158147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:07:46.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:07:46.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:46.623 [DEBUG] [Thread-158147] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:46.623 [DEBUG] [Thread-158147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:46.623 [DEBUG] [Thread-158147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:46.623 [DEBUG] [Thread-158147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:07:46.623 [DEBUG] [Thread-158147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:46.642 [INFO] [Thread-158147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:46.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:07:46.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:47.639 [DEBUG] [Thread-158147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:47.639 [DEBUG] [Thread-158147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:47.687 [DEBUG] [Thread-158147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:47.688 [DEBUG] [Thread-158147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:47.696 [DEBUG] [Thread-158147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:47.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:47.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:07:47.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:07:47.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:47.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:47.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:47.733 [DEBUG] [Thread-158147] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:57.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:07:57.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:07:57.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:07:58.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 7, 24), 14.64, 36.76, 0.0, 13.11, 14.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:07:58.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:07:24
2025-09-29T14:07:58.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:07:58.623 [DEBUG] [Thread-158149] [transport.py] [_log()] starting thread (client mode): 0x2b9dd480
2025-09-29T14:07:58.623 [DEBUG] [Thread-158149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:58.643 [DEBUG] [Thread-158149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:07:58.643 [INFO] [Thread-158149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] Compression: none
2025-09-29T14:07:58.645 [DEBUG] [Thread-158149] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:58.662 [DEBUG] [Thread-158149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:58.663 [DEBUG] [Thread-158149] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:58.663 [DEBUG] [Thread-158149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:07:58.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:07:58.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:58.664 [DEBUG] [Thread-158149] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:58.664 [DEBUG] [Thread-158149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:58.664 [DEBUG] [Thread-158149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:58.664 [DEBUG] [Thread-158149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:07:58.664 [DEBUG] [Thread-158149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:58.673 [INFO] [Thread-158149] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:58.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:07:59.364 [DEBUG] [Thread-158149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:07:59.364 [DEBUG] [Thread-158149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:07:59.365 [DEBUG] [Thread-158149] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:07:59.405 [DEBUG] [Thread-158149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:07:59.405 [DEBUG] [Thread-158149] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:07:59.408 [DEBUG] [Thread-158149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:07:59.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:07:59.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:07:59.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:07:59.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:07:59.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:07:59.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:07:59.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:07:59.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:07:59.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:07:59.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.504930 -999.00  +15.90   8.61     39   +2.20 1 1 1 1 1   888    0 14.61 61.03 ----- 9.6 8.6 164.0 10.6 24.9 -28.0 23.6 -27.7 25.1 -28.1 26.5 -29.3
2025-09-29T14:07:59.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:07:59.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:07:59.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.504930
2025-09-29T14:07:59.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:07:59.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:07:59.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:07:59.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:07:59.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:07:59.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:07:24', tmtdew=14.64, humidity=36.76, cloud=0.0, wind=13.11, temperature=14.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:07:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:07:59.441 [DEBUG] [Thread-158149] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:07:59.507 [DEBUG] [Thread-158152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:07:59.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:07:59.538 [DEBUG] [Thread-158153] [transport.py] [_log()] starting thread (client mode): 0x2b90fca0
2025-09-29T14:07:59.538 [DEBUG] [Thread-158153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:07:59.552 [DEBUG] [Thread-158153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:07:59.552 [INFO] [Thread-158153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] client lang: <none>
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] server lang: <none>
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] kex follows: False
2025-09-29T14:07:59.560 [DEBUG] [Thread-158153] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:07:59.561 [DEBUG] [Thread-158153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:07:59.561 [DEBUG] [Thread-158153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:07:59.561 [DEBUG] [Thread-158153] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:07:59.561 [DEBUG] [Thread-158153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:07:59.561 [DEBUG] [Thread-158153] [transport.py] [_log()] Compression: none
2025-09-29T14:07:59.561 [DEBUG] [Thread-158153] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:07:59.618 [DEBUG] [Thread-158153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:07:59.619 [DEBUG] [Thread-158153] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:07:59.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:07:59.620 [DEBUG] [Thread-158153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:07:59.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:07:59.676 [DEBUG] [Thread-158153] [transport.py] [_log()] userauth is OK
2025-09-29T14:07:59.676 [DEBUG] [Thread-158153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:07:59.676 [DEBUG] [Thread-158153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:07:59.676 [DEBUG] [Thread-158153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:07:59.677 [DEBUG] [Thread-158153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:07:59.695 [INFO] [Thread-158153] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:07:59.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:07:59.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:00.669 [DEBUG] [Thread-158153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:00.670 [DEBUG] [Thread-158153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:00.718 [DEBUG] [Thread-158153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:00.718 [DEBUG] [Thread-158153] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:00.727 [DEBUG] [Thread-158153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:00.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:00.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:08:00.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:08:00.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:00.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:00.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:00.762 [DEBUG] [Thread-158153] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:01.512 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:08:01.514 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:08:10.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:08:10.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:08:10.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:08:11.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 7, 56), 14.36, 37.6, 0.0, 14.13, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:08:11.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:07:56
2025-09-29T14:08:11.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:08:11.596 [DEBUG] [Thread-158155] [transport.py] [_log()] starting thread (client mode): 0x2b9b89d0
2025-09-29T14:08:11.596 [DEBUG] [Thread-158155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:08:11.615 [DEBUG] [Thread-158155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:08:11.615 [INFO] [Thread-158155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:08:11.618 [DEBUG] [Thread-158155] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:08:11.618 [DEBUG] [Thread-158155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] client lang: <none>
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] server lang: <none>
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] kex follows: False
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] Compression: none
2025-09-29T14:08:11.619 [DEBUG] [Thread-158155] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:08:11.634 [DEBUG] [Thread-158155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:08:11.635 [DEBUG] [Thread-158155] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:08:11.635 [DEBUG] [Thread-158155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:08:11.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:08:11.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:08:11.637 [DEBUG] [Thread-158155] [transport.py] [_log()] userauth is OK
2025-09-29T14:08:11.638 [DEBUG] [Thread-158155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:08:11.638 [DEBUG] [Thread-158155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:08:11.638 [DEBUG] [Thread-158155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:08:11.638 [DEBUG] [Thread-158155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:08:11.658 [INFO] [Thread-158155] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:08:11.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:12.264 [DEBUG] [Thread-158155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:12.264 [DEBUG] [Thread-158155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:12.264 [DEBUG] [Thread-158155] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:08:12.305 [DEBUG] [Thread-158155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:12.305 [DEBUG] [Thread-158155] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:12.308 [DEBUG] [Thread-158155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:12.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:12.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:08:12.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:08:12.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:08:12.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:12.329 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:08:12.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:12.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:12.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:08:12.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.505277 -999.00  +15.80   9.53     40   +2.40 1 1 1 1 1   888    0 14.55 65.36 ----- 12.0 9.5 154.6 13.3 24.9 -28.2 23.8 -28.4 25.1 -28.4 26.6 -28.6
2025-09-29T14:08:12.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:08:12.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:08:12.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.505277
2025-09-29T14:08:12.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:08:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:08:12.331 [DEBUG] [Thread-158155] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:08:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:08:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:08:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:07:56', tmtdew=14.36, humidity=37.6, cloud=0.0, wind=14.13, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:07:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:08:12.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:08:12.423 [DEBUG] [Thread-158158] [transport.py] [_log()] starting thread (client mode): 0x2b9baef0
2025-09-29T14:08:12.423 [DEBUG] [Thread-158158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:08:12.438 [DEBUG] [Thread-158158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:08:12.438 [INFO] [Thread-158158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:08:12.445 [DEBUG] [Thread-158158] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:08:12.445 [DEBUG] [Thread-158158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:08:12.445 [DEBUG] [Thread-158158] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:08:12.445 [DEBUG] [Thread-158158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] client lang: <none>
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] server lang: <none>
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] kex follows: False
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] Compression: none
2025-09-29T14:08:12.446 [DEBUG] [Thread-158158] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:08:12.502 [DEBUG] [Thread-158158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:08:12.503 [DEBUG] [Thread-158158] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:08:12.503 [DEBUG] [Thread-158158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:08:12.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:08:12.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:08:12.559 [DEBUG] [Thread-158158] [transport.py] [_log()] userauth is OK
2025-09-29T14:08:12.559 [DEBUG] [Thread-158158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:08:12.559 [DEBUG] [Thread-158158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:08:12.560 [DEBUG] [Thread-158158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:08:12.560 [DEBUG] [Thread-158158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:08:12.579 [INFO] [Thread-158158] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:08:12.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:08:12.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:13.560 [DEBUG] [Thread-158158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:13.561 [DEBUG] [Thread-158158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:13.608 [DEBUG] [Thread-158158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:13.608 [DEBUG] [Thread-158158] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:13.617 [DEBUG] [Thread-158158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:13.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:13.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:08:13.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:08:13.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:13.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:13.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:13.652 [DEBUG] [Thread-158158] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:14.538 [DEBUG] [Thread-158160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:08:23.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:08:23.655 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:08:23.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:08:24.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 7, 56), 14.36, 37.6, 0.0, 14.13, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:08:24.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:07:56
2025-09-29T14:08:24.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:08:24.483 [DEBUG] [Thread-158161] [transport.py] [_log()] starting thread (client mode): 0x2b9b9180
2025-09-29T14:08:24.483 [DEBUG] [Thread-158161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:08:24.503 [DEBUG] [Thread-158161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:08:24.503 [INFO] [Thread-158161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:08:24.507 [DEBUG] [Thread-158161] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:08:24.507 [DEBUG] [Thread-158161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:08:24.507 [DEBUG] [Thread-158161] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:08:24.507 [DEBUG] [Thread-158161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:24.507 [DEBUG] [Thread-158161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:24.507 [DEBUG] [Thread-158161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:24.507 [DEBUG] [Thread-158161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:24.507 [DEBUG] [Thread-158161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] client lang: <none>
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] server lang: <none>
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] kex follows: False
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] Compression: none
2025-09-29T14:08:24.508 [DEBUG] [Thread-158161] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:08:24.524 [DEBUG] [Thread-158161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:08:24.525 [DEBUG] [Thread-158161] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:08:24.525 [DEBUG] [Thread-158161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:08:24.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:08:24.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:08:24.527 [DEBUG] [Thread-158161] [transport.py] [_log()] userauth is OK
2025-09-29T14:08:24.528 [DEBUG] [Thread-158161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:08:24.528 [DEBUG] [Thread-158161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:08:24.528 [DEBUG] [Thread-158161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:08:24.528 [DEBUG] [Thread-158161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:08:24.545 [INFO] [Thread-158161] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:08:24.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:25.314 [DEBUG] [Thread-158161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:25.315 [DEBUG] [Thread-158161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:25.315 [DEBUG] [Thread-158161] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:08:25.355 [DEBUG] [Thread-158161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:25.355 [DEBUG] [Thread-158161] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:25.358 [DEBUG] [Thread-158161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:25.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:25.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:08:25.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:08:25.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:08:25.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:25.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:08:25.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:25.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:08:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.505277 -999.00  +15.80   9.53     40   +2.40 1 1 1 1 1   888    0 14.55 65.36 ----- 12.0 9.5 154.6 13.3 24.9 -28.2 23.8 -28.4 25.1 -28.4 26.6 -28.6
2025-09-29T14:08:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:08:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:08:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.505277
2025-09-29T14:08:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:08:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:08:25.383 [DEBUG] [Thread-158161] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:25.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:08:25.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:08:25.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:08:25.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:07:56', tmtdew=14.36, humidity=37.6, cloud=0.0, wind=14.13, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:07:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:08:25.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:08:25.478 [DEBUG] [Thread-158164] [transport.py] [_log()] starting thread (client mode): 0x2b9b82b0
2025-09-29T14:08:25.478 [DEBUG] [Thread-158164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:08:25.493 [DEBUG] [Thread-158164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:08:25.493 [INFO] [Thread-158164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:08:25.500 [DEBUG] [Thread-158164] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:08:25.501 [DEBUG] [Thread-158164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:08:25.501 [DEBUG] [Thread-158164] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:08:25.501 [DEBUG] [Thread-158164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:25.501 [DEBUG] [Thread-158164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:25.501 [DEBUG] [Thread-158164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:25.501 [DEBUG] [Thread-158164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:25.501 [DEBUG] [Thread-158164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] client lang: <none>
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] server lang: <none>
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] kex follows: False
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] Compression: none
2025-09-29T14:08:25.502 [DEBUG] [Thread-158164] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:08:25.563 [DEBUG] [Thread-158164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:08:25.563 [DEBUG] [Thread-158164] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:08:25.564 [DEBUG] [Thread-158164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:08:25.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:08:25.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:08:25.619 [DEBUG] [Thread-158164] [transport.py] [_log()] userauth is OK
2025-09-29T14:08:25.619 [DEBUG] [Thread-158164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:08:25.619 [DEBUG] [Thread-158164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:08:25.619 [DEBUG] [Thread-158164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:08:25.619 [DEBUG] [Thread-158164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:08:25.638 [INFO] [Thread-158164] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:08:25.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:08:25.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:26.605 [DEBUG] [Thread-158164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:26.606 [DEBUG] [Thread-158164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:26.653 [DEBUG] [Thread-158164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:26.653 [DEBUG] [Thread-158164] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:26.662 [DEBUG] [Thread-158164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:26.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:26.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:08:26.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:08:26.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:26.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:26.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:26.697 [DEBUG] [Thread-158164] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:29.582 [DEBUG] [Thread-158166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:08:36.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:08:36.700 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:08:36.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:08:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 8, 28), 14.47, 37.32, 0.0, 13.04, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:08:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:08:28
2025-09-29T14:08:37.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:08:37.547 [DEBUG] [Thread-158167] [transport.py] [_log()] starting thread (client mode): 0x2b9dcbb0
2025-09-29T14:08:37.547 [DEBUG] [Thread-158167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:08:37.559 [DEBUG] [Thread-158167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:08:37.559 [INFO] [Thread-158167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:08:37.562 [DEBUG] [Thread-158167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] client lang: <none>
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] server lang: <none>
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] kex follows: False
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] Compression: none
2025-09-29T14:08:37.563 [DEBUG] [Thread-158167] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:08:37.578 [DEBUG] [Thread-158167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:08:37.578 [DEBUG] [Thread-158167] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:08:37.578 [DEBUG] [Thread-158167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:08:37.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:08:37.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:08:37.580 [DEBUG] [Thread-158167] [transport.py] [_log()] userauth is OK
2025-09-29T14:08:37.580 [DEBUG] [Thread-158167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:08:37.580 [DEBUG] [Thread-158167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:08:37.580 [DEBUG] [Thread-158167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:08:37.580 [DEBUG] [Thread-158167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:08:37.598 [INFO] [Thread-158167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:08:37.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:38.165 [DEBUG] [Thread-158167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:38.166 [DEBUG] [Thread-158167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:38.166 [DEBUG] [Thread-158167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:08:38.207 [DEBUG] [Thread-158167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:38.207 [DEBUG] [Thread-158167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:38.210 [DEBUG] [Thread-158167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:38.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:38.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:08:38.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:08:38.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:08:38.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:38.231 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:08:38.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:38.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:38.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:08:38.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.505624 -999.00  +15.50  12.10     40   +2.20 1 1 1 1 1   888    0 14.88 68.11 ----- 16.1 12.1 133.6 20.7 24.8 -28.5 23.8 -28.6 25.1 -29.3 26.5 -29.9
2025-09-29T14:08:38.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:08:38.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:08:38.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.505624
2025-09-29T14:08:38.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:08:38.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:08:38.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:08:38.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:08:38.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:08:38.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:08:28', tmtdew=14.47, humidity=37.32, cloud=0.0, wind=13.04, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:08:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:08:38.234 [DEBUG] [Thread-158167] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:38.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:08:38.330 [DEBUG] [Thread-158170] [transport.py] [_log()] starting thread (client mode): 0x2b9df0a0
2025-09-29T14:08:38.331 [DEBUG] [Thread-158170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:08:38.345 [DEBUG] [Thread-158170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:08:38.345 [INFO] [Thread-158170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] client lang: <none>
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] server lang: <none>
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] kex follows: False
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:08:38.352 [DEBUG] [Thread-158170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:08:38.353 [DEBUG] [Thread-158170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:08:38.353 [DEBUG] [Thread-158170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:08:38.353 [DEBUG] [Thread-158170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:08:38.353 [DEBUG] [Thread-158170] [transport.py] [_log()] Compression: none
2025-09-29T14:08:38.353 [DEBUG] [Thread-158170] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:08:38.409 [DEBUG] [Thread-158170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:08:38.409 [DEBUG] [Thread-158170] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:08:38.409 [DEBUG] [Thread-158170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:08:38.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:08:38.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:08:38.466 [DEBUG] [Thread-158170] [transport.py] [_log()] userauth is OK
2025-09-29T14:08:38.466 [DEBUG] [Thread-158170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:08:38.466 [DEBUG] [Thread-158170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:08:38.466 [DEBUG] [Thread-158170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:08:38.466 [DEBUG] [Thread-158170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:08:38.480 [INFO] [Thread-158170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:08:38.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:08:38.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:39.461 [DEBUG] [Thread-158170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:39.461 [DEBUG] [Thread-158170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:39.509 [DEBUG] [Thread-158170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:39.509 [DEBUG] [Thread-158170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:39.518 [DEBUG] [Thread-158170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:39.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:39.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:08:39.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:08:39.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:39.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:39.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:39.553 [DEBUG] [Thread-158170] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:43.938 [DEBUG] [Thread-158172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:08:44.613 [DEBUG] [Thread-158173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:08:49.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:08:49.547 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:08:49.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:08:50.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 8, 28), 14.47, 37.32, 0.0, 13.04, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:08:50.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:08:28
2025-09-29T14:08:50.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:08:50.392 [DEBUG] [Thread-158174] [transport.py] [_log()] starting thread (client mode): 0x2b9b92a0
2025-09-29T14:08:50.392 [DEBUG] [Thread-158174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:08:50.411 [DEBUG] [Thread-158174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:08:50.411 [INFO] [Thread-158174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:08:50.414 [DEBUG] [Thread-158174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:08:50.414 [DEBUG] [Thread-158174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:08:50.414 [DEBUG] [Thread-158174] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:08:50.414 [DEBUG] [Thread-158174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:50.414 [DEBUG] [Thread-158174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] client lang: <none>
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] server lang: <none>
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] kex follows: False
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] Compression: none
2025-09-29T14:08:50.415 [DEBUG] [Thread-158174] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:08:50.430 [DEBUG] [Thread-158174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:08:50.431 [DEBUG] [Thread-158174] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:08:50.431 [DEBUG] [Thread-158174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:08:50.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:08:50.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:08:50.433 [DEBUG] [Thread-158174] [transport.py] [_log()] userauth is OK
2025-09-29T14:08:50.434 [DEBUG] [Thread-158174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:08:50.434 [DEBUG] [Thread-158174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:08:50.434 [DEBUG] [Thread-158174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:08:50.434 [DEBUG] [Thread-158174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:08:50.458 [INFO] [Thread-158174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:08:50.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:51.230 [DEBUG] [Thread-158174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:51.231 [DEBUG] [Thread-158174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:51.231 [DEBUG] [Thread-158174] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:08:51.271 [DEBUG] [Thread-158174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:51.271 [DEBUG] [Thread-158174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:51.274 [DEBUG] [Thread-158174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:51.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:51.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:08:51.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:08:51.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:08:51.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:51.295 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:08:51.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:51.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:08:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.505624 -999.00  +15.50  12.10     40   +2.20 1 1 1 1 1   888    0 14.88 68.11 ----- 16.1 12.1 133.6 20.7 24.8 -28.5 23.8 -28.6 25.1 -29.3 26.5 -29.9
2025-09-29T14:08:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:08:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:08:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.505624
2025-09-29T14:08:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:08:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:08:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:08:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:08:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:08:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:08:28', tmtdew=14.47, humidity=37.32, cloud=0.0, wind=13.04, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:08:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:08:51.298 [DEBUG] [Thread-158174] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:51.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:08:51.403 [DEBUG] [Thread-158177] [transport.py] [_log()] starting thread (client mode): 0x2b9bb310
2025-09-29T14:08:51.403 [DEBUG] [Thread-158177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:08:51.418 [DEBUG] [Thread-158177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:08:51.418 [INFO] [Thread-158177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:08:51.426 [DEBUG] [Thread-158177] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:08:51.426 [DEBUG] [Thread-158177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:08:51.426 [DEBUG] [Thread-158177] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:08:51.426 [DEBUG] [Thread-158177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] client lang: <none>
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] server lang: <none>
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] kex follows: False
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] Compression: none
2025-09-29T14:08:51.427 [DEBUG] [Thread-158177] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:08:51.482 [DEBUG] [Thread-158177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:08:51.483 [DEBUG] [Thread-158177] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:08:51.483 [DEBUG] [Thread-158177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:08:51.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:08:51.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:08:51.539 [DEBUG] [Thread-158177] [transport.py] [_log()] userauth is OK
2025-09-29T14:08:51.539 [DEBUG] [Thread-158177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:08:51.539 [DEBUG] [Thread-158177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:08:51.539 [DEBUG] [Thread-158177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:08:51.539 [DEBUG] [Thread-158177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:08:51.558 [INFO] [Thread-158177] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:08:51.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:08:51.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:08:52.516 [DEBUG] [Thread-158177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:08:52.517 [DEBUG] [Thread-158177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:08:52.564 [DEBUG] [Thread-158177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:08:52.564 [DEBUG] [Thread-158177] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:08:52.573 [DEBUG] [Thread-158177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:08:52.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:08:52.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:08:52.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:08:52.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:08:52.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:08:52.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:08:52.607 [DEBUG] [Thread-158177] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:08:59.656 [DEBUG] [Thread-158179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:09:01.671 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:09:01.672 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:09:02.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:09:02.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:09:02.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:09:03.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 8, 28), 14.62, 36.82, 0.0, 16.64, 14.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:09:03.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:08:28
2025-09-29T14:09:03.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:09:03.455 [DEBUG] [Thread-158180] [transport.py] [_log()] starting thread (client mode): 0x2b9b9480
2025-09-29T14:09:03.456 [DEBUG] [Thread-158180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:03.476 [DEBUG] [Thread-158180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:09:03.476 [INFO] [Thread-158180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:09:03.480 [DEBUG] [Thread-158180] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:03.480 [DEBUG] [Thread-158180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:09:03.480 [DEBUG] [Thread-158180] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:03.480 [DEBUG] [Thread-158180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:03.480 [DEBUG] [Thread-158180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:03.480 [DEBUG] [Thread-158180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] Compression: none
2025-09-29T14:09:03.481 [DEBUG] [Thread-158180] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:03.498 [DEBUG] [Thread-158180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:03.498 [DEBUG] [Thread-158180] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:03.499 [DEBUG] [Thread-158180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:09:03.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:09:03.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:03.500 [DEBUG] [Thread-158180] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:03.501 [DEBUG] [Thread-158180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:03.501 [DEBUG] [Thread-158180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:03.501 [DEBUG] [Thread-158180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:09:03.501 [DEBUG] [Thread-158180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:03.521 [INFO] [Thread-158180] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:03.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:04.282 [DEBUG] [Thread-158180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:04.282 [DEBUG] [Thread-158180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:04.283 [DEBUG] [Thread-158180] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:09:04.323 [DEBUG] [Thread-158180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:04.324 [DEBUG] [Thread-158180] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:04.327 [DEBUG] [Thread-158180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:04.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:04.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:09:04.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:09:04.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:09:04.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:04.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:09:04.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:04.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:04.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:09:04.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.505624 -999.00  +15.50  12.10     40   +2.20 1 1 1 1 1   888    0 14.88 68.11 ----- 16.1 12.1 133.6 20.7 24.8 -28.5 23.8 -28.6 25.1 -29.3 26.5 -29.9
2025-09-29T14:09:04.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:09:04.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:09:04.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.505624
2025-09-29T14:09:04.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:09:04.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:09:04.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:09:04.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:09:04.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:09:04.352 [DEBUG] [Thread-158180] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:04.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:08:28', tmtdew=14.62, humidity=36.82, cloud=0.0, wind=16.64, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:08:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:09:04.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:09:04.448 [DEBUG] [Thread-158183] [transport.py] [_log()] starting thread (client mode): 0x2b9bb910
2025-09-29T14:09:04.449 [DEBUG] [Thread-158183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:04.463 [DEBUG] [Thread-158183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:09:04.463 [INFO] [Thread-158183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:09:04.471 [DEBUG] [Thread-158183] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:04.471 [DEBUG] [Thread-158183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:09:04.471 [DEBUG] [Thread-158183] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:04.471 [DEBUG] [Thread-158183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:04.471 [DEBUG] [Thread-158183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:04.471 [DEBUG] [Thread-158183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:04.472 [DEBUG] [Thread-158183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:04.473 [DEBUG] [Thread-158183] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:04.473 [DEBUG] [Thread-158183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:04.473 [DEBUG] [Thread-158183] [transport.py] [_log()] Compression: none
2025-09-29T14:09:04.473 [DEBUG] [Thread-158183] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:04.532 [DEBUG] [Thread-158183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:04.533 [DEBUG] [Thread-158183] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:04.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:09:04.534 [DEBUG] [Thread-158183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:09:04.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:04.591 [DEBUG] [Thread-158183] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:04.591 [DEBUG] [Thread-158183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:04.591 [DEBUG] [Thread-158183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:04.592 [DEBUG] [Thread-158183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:09:04.592 [DEBUG] [Thread-158183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:04.612 [INFO] [Thread-158183] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:04.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:09:04.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:05.618 [DEBUG] [Thread-158183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:05.619 [DEBUG] [Thread-158183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:05.666 [DEBUG] [Thread-158183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:05.667 [DEBUG] [Thread-158183] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:05.676 [DEBUG] [Thread-158183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:05.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:05.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:09:05.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:09:05.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:05.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:05.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:05.710 [DEBUG] [Thread-158183] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:14.680 [DEBUG] [Thread-158185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:09:15.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:09:15.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:09:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:09:16.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 8, 28), 14.62, 36.82, 0.0, 16.64, 14.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:09:16.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:08:28
2025-09-29T14:09:16.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:09:16.544 [DEBUG] [Thread-158186] [transport.py] [_log()] starting thread (client mode): 0x2e3df1c0
2025-09-29T14:09:16.544 [DEBUG] [Thread-158186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:16.564 [DEBUG] [Thread-158186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:09:16.564 [INFO] [Thread-158186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:09:16.567 [DEBUG] [Thread-158186] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:16.567 [DEBUG] [Thread-158186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:16.568 [DEBUG] [Thread-158186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:16.569 [DEBUG] [Thread-158186] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:16.569 [DEBUG] [Thread-158186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:16.569 [DEBUG] [Thread-158186] [transport.py] [_log()] Compression: none
2025-09-29T14:09:16.569 [DEBUG] [Thread-158186] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:16.585 [DEBUG] [Thread-158186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:16.586 [DEBUG] [Thread-158186] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:16.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:09:16.587 [DEBUG] [Thread-158186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:09:16.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:16.589 [DEBUG] [Thread-158186] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:16.589 [DEBUG] [Thread-158186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:16.589 [DEBUG] [Thread-158186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:16.589 [DEBUG] [Thread-158186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:09:16.589 [DEBUG] [Thread-158186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:16.614 [INFO] [Thread-158186] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:16.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:17.253 [DEBUG] [Thread-158186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:17.254 [DEBUG] [Thread-158186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:17.254 [DEBUG] [Thread-158186] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:09:17.294 [DEBUG] [Thread-158186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:17.294 [DEBUG] [Thread-158186] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:17.297 [DEBUG] [Thread-158186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:17.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:17.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:09:17.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:09:17.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:09:17.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:17.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:09:17.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:17.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:17.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:09:17.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.505971 -999.00  +15.20  20.04     41   +2.10 1 1 1 1 1   888    0 14.57 69.49 ----- 17.5 20.0 131.6 24.4 24.4 -29.0 23.8 -29.1 25.1 -28.6 26.5 -29.5
2025-09-29T14:09:17.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:09:17.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:09:17.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.505971
2025-09-29T14:09:17.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:09:17.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:09:17.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:09:17.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:09:17.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:09:17.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:08:28', tmtdew=14.62, humidity=36.82, cloud=0.0, wind=16.64, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:08:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:09:17.322 [DEBUG] [Thread-158186] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:17.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:09:17.414 [DEBUG] [Thread-158189] [transport.py] [_log()] starting thread (client mode): 0x2e3dc9d0
2025-09-29T14:09:17.414 [DEBUG] [Thread-158189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:17.428 [DEBUG] [Thread-158189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:09:17.428 [INFO] [Thread-158189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:09:17.436 [DEBUG] [Thread-158189] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:17.436 [DEBUG] [Thread-158189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:09:17.436 [DEBUG] [Thread-158189] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:17.436 [DEBUG] [Thread-158189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:17.436 [DEBUG] [Thread-158189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] Compression: none
2025-09-29T14:09:17.437 [DEBUG] [Thread-158189] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:17.494 [DEBUG] [Thread-158189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:17.495 [DEBUG] [Thread-158189] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:17.495 [DEBUG] [Thread-158189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:09:17.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:09:17.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:17.551 [DEBUG] [Thread-158189] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:17.551 [DEBUG] [Thread-158189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:17.551 [DEBUG] [Thread-158189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:17.551 [DEBUG] [Thread-158189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:09:17.551 [DEBUG] [Thread-158189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:17.571 [INFO] [Thread-158189] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:17.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:09:17.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:18.559 [DEBUG] [Thread-158189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:18.559 [DEBUG] [Thread-158189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:18.607 [DEBUG] [Thread-158189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:18.607 [DEBUG] [Thread-158189] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:18.616 [DEBUG] [Thread-158189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:18.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:18.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:09:18.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:09:18.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:18.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:18.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:18.651 [DEBUG] [Thread-158189] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:28.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:09:28.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:09:28.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:09:29.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 8, 28), 14.62, 36.82, 0.0, 16.64, 14.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:09:29.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:08:28
2025-09-29T14:09:29.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:09:29.489 [DEBUG] [Thread-158191] [transport.py] [_log()] starting thread (client mode): 0x2b90c4c0
2025-09-29T14:09:29.489 [DEBUG] [Thread-158191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:29.508 [DEBUG] [Thread-158191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:09:29.508 [INFO] [Thread-158191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:09:29.512 [DEBUG] [Thread-158191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] Compression: none
2025-09-29T14:09:29.513 [DEBUG] [Thread-158191] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:29.531 [DEBUG] [Thread-158191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:29.531 [DEBUG] [Thread-158191] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:29.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:09:29.532 [DEBUG] [Thread-158191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:09:29.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:29.534 [DEBUG] [Thread-158191] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:29.534 [DEBUG] [Thread-158191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:29.534 [DEBUG] [Thread-158191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:29.534 [DEBUG] [Thread-158191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:09:29.534 [DEBUG] [Thread-158191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:29.555 [INFO] [Thread-158191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:29.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:29.717 [DEBUG] [Thread-158193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:09:30.274 [DEBUG] [Thread-158191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:30.275 [DEBUG] [Thread-158191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:30.275 [DEBUG] [Thread-158191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:09:30.315 [DEBUG] [Thread-158191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:30.315 [DEBUG] [Thread-158191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:30.318 [DEBUG] [Thread-158191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:30.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:30.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:09:30.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:09:30.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:09:30.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:30.343 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:09:30.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:30.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:30.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:09:30.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.505971 -999.00  +15.20  20.04     41   +2.10 1 1 1 1 1   888    0 14.57 69.49 ----- 17.5 20.0 131.6 24.4 24.4 -29.0 23.8 -29.1 25.1 -28.6 26.5 -29.5
2025-09-29T14:09:30.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:09:30.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:09:30.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.505971
2025-09-29T14:09:30.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:09:30.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:09:30.346 [DEBUG] [Thread-158191] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:30.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:09:30.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:09:30.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:09:30.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:08:28', tmtdew=14.62, humidity=36.82, cloud=0.0, wind=16.64, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:08:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:09:30.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:09:30.441 [DEBUG] [Thread-158195] [transport.py] [_log()] starting thread (client mode): 0x2b90d0f0
2025-09-29T14:09:30.441 [DEBUG] [Thread-158195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:30.455 [DEBUG] [Thread-158195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:09:30.455 [INFO] [Thread-158195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:09:30.463 [DEBUG] [Thread-158195] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:30.463 [DEBUG] [Thread-158195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:09:30.463 [DEBUG] [Thread-158195] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:30.463 [DEBUG] [Thread-158195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:30.464 [DEBUG] [Thread-158195] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:30.465 [DEBUG] [Thread-158195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:30.465 [DEBUG] [Thread-158195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:30.465 [DEBUG] [Thread-158195] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:30.465 [DEBUG] [Thread-158195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:30.465 [DEBUG] [Thread-158195] [transport.py] [_log()] Compression: none
2025-09-29T14:09:30.465 [DEBUG] [Thread-158195] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:30.523 [DEBUG] [Thread-158195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:30.524 [DEBUG] [Thread-158195] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:30.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:09:30.524 [DEBUG] [Thread-158195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:09:30.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:30.579 [DEBUG] [Thread-158195] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:30.579 [DEBUG] [Thread-158195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:30.579 [DEBUG] [Thread-158195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:30.579 [DEBUG] [Thread-158195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:09:30.580 [DEBUG] [Thread-158195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:30.598 [INFO] [Thread-158195] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:30.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:09:30.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:31.581 [DEBUG] [Thread-158195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:31.582 [DEBUG] [Thread-158195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:31.630 [DEBUG] [Thread-158195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:31.630 [DEBUG] [Thread-158195] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:31.639 [DEBUG] [Thread-158195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:31.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:31.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:09:31.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:09:31.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:31.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:31.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:31.673 [DEBUG] [Thread-158195] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:41.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:09:41.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:09:41.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:09:42.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 9, 31), 14.57, 36.96, 0.0, 18.03, 15.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:09:42.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:09:31
2025-09-29T14:09:42.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:09:42.505 [DEBUG] [Thread-158197] [transport.py] [_log()] starting thread (client mode): 0x2e3de200
2025-09-29T14:09:42.505 [DEBUG] [Thread-158197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:42.526 [DEBUG] [Thread-158197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:09:42.526 [INFO] [Thread-158197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:42.529 [DEBUG] [Thread-158197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:42.530 [DEBUG] [Thread-158197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:42.530 [DEBUG] [Thread-158197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:42.530 [DEBUG] [Thread-158197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:42.530 [DEBUG] [Thread-158197] [transport.py] [_log()] Compression: none
2025-09-29T14:09:42.530 [DEBUG] [Thread-158197] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:42.547 [DEBUG] [Thread-158197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:42.547 [DEBUG] [Thread-158197] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:42.548 [DEBUG] [Thread-158197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:09:42.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:09:42.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:42.550 [DEBUG] [Thread-158197] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:42.550 [DEBUG] [Thread-158197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:42.550 [DEBUG] [Thread-158197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:42.550 [DEBUG] [Thread-158197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:09:42.550 [DEBUG] [Thread-158197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:42.568 [INFO] [Thread-158197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:42.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:43.173 [DEBUG] [Thread-158197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:43.173 [DEBUG] [Thread-158197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:43.174 [DEBUG] [Thread-158197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:09:43.214 [DEBUG] [Thread-158197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:43.214 [DEBUG] [Thread-158197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:43.216 [DEBUG] [Thread-158197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:43.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:43.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:09:43.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:09:43.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:09:43.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:43.238 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:09:43.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:43.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:43.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:09:43.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.506666 -999.00  +14.60  12.61     42   +2.00 1 1 1 1 1   888    0 14.96 71.15 ----- 12.1 12.6 124.4 19.2 24.2 -28.0 23.7 -29.1 25.1 -29.1 26.2 -29.8
2025-09-29T14:09:43.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:09:43.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:09:43.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.506666
2025-09-29T14:09:43.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:09:43.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:09:43.240 [DEBUG] [Thread-158197] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:43.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:09:43.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:09:43.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:09:43.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:09:31', tmtdew=14.57, humidity=36.96, cloud=0.0, wind=18.03, temperature=15.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:09:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:09:43.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:09:43.335 [DEBUG] [Thread-158200] [transport.py] [_log()] starting thread (client mode): 0x2b9b96f0
2025-09-29T14:09:43.335 [DEBUG] [Thread-158200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:43.349 [DEBUG] [Thread-158200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:09:43.349 [INFO] [Thread-158200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] Compression: none
2025-09-29T14:09:43.357 [DEBUG] [Thread-158200] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:43.414 [DEBUG] [Thread-158200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:43.415 [DEBUG] [Thread-158200] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:43.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:09:43.416 [DEBUG] [Thread-158200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:09:43.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:43.471 [DEBUG] [Thread-158200] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:43.471 [DEBUG] [Thread-158200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:43.471 [DEBUG] [Thread-158200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:43.471 [DEBUG] [Thread-158200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:09:43.471 [DEBUG] [Thread-158200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:43.489 [INFO] [Thread-158200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:43.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:09:43.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:43.970 [DEBUG] [Thread-158202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:09:44.423 [DEBUG] [Thread-158200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:44.423 [DEBUG] [Thread-158200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:44.471 [DEBUG] [Thread-158200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:44.471 [DEBUG] [Thread-158200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:44.479 [DEBUG] [Thread-158200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:44.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:44.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:09:44.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:09:44.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:44.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:44.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:44.510 [DEBUG] [Thread-158200] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:44.774 [DEBUG] [Thread-158203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:09:54.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:09:54.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:09:54.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:09:55.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 9, 31), 14.57, 36.96, 0.0, 18.03, 15.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:09:55.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:09:31
2025-09-29T14:09:55.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:09:55.340 [DEBUG] [Thread-158204] [transport.py] [_log()] starting thread (client mode): 0x2e3dd360
2025-09-29T14:09:55.341 [DEBUG] [Thread-158204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:55.360 [DEBUG] [Thread-158204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:09:55.360 [INFO] [Thread-158204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:09:55.363 [DEBUG] [Thread-158204] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] Compression: none
2025-09-29T14:09:55.364 [DEBUG] [Thread-158204] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:55.380 [DEBUG] [Thread-158204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:55.380 [DEBUG] [Thread-158204] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:55.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:09:55.381 [DEBUG] [Thread-158204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:09:55.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:55.383 [DEBUG] [Thread-158204] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:55.383 [DEBUG] [Thread-158204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:55.384 [DEBUG] [Thread-158204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:55.384 [DEBUG] [Thread-158204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:09:55.384 [DEBUG] [Thread-158204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:55.402 [INFO] [Thread-158204] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:55.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:56.203 [DEBUG] [Thread-158204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:56.204 [DEBUG] [Thread-158204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:56.204 [DEBUG] [Thread-158204] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:09:56.244 [DEBUG] [Thread-158204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:56.244 [DEBUG] [Thread-158204] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:56.247 [DEBUG] [Thread-158204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:56.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:56.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:09:56.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:09:56.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:09:56.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:56.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:09:56.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:56.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:56.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:09:56.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.506666 -999.00  +14.60  12.61     42   +2.00 1 1 1 1 1   888    0 14.96 71.15 ----- 12.1 12.6 124.4 19.2 24.2 -28.0 23.7 -29.1 25.1 -29.1 26.2 -29.8
2025-09-29T14:09:56.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:09:56.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:09:56.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.506666
2025-09-29T14:09:56.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:09:56.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:09:56.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:09:56.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:09:56.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:09:56.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:09:31', tmtdew=14.57, humidity=36.96, cloud=0.0, wind=18.03, temperature=15.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:09:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:09:56.274 [DEBUG] [Thread-158204] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:56.359 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:09:56.368 [DEBUG] [Thread-158207] [transport.py] [_log()] starting thread (client mode): 0x2e3de800
2025-09-29T14:09:56.368 [DEBUG] [Thread-158207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:09:56.383 [DEBUG] [Thread-158207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:09:56.383 [INFO] [Thread-158207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] client lang: <none>
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] server lang: <none>
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] kex follows: False
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:09:56.391 [DEBUG] [Thread-158207] [transport.py] [_log()] Compression: none
2025-09-29T14:09:56.392 [DEBUG] [Thread-158207] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:09:56.450 [DEBUG] [Thread-158207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:09:56.451 [DEBUG] [Thread-158207] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:09:56.451 [DEBUG] [Thread-158207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:09:56.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:09:56.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:09:56.507 [DEBUG] [Thread-158207] [transport.py] [_log()] userauth is OK
2025-09-29T14:09:56.507 [DEBUG] [Thread-158207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:09:56.507 [DEBUG] [Thread-158207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:09:56.507 [DEBUG] [Thread-158207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:09:56.507 [DEBUG] [Thread-158207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:09:56.526 [INFO] [Thread-158207] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:09:56.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:09:56.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:09:57.500 [DEBUG] [Thread-158207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:09:57.500 [DEBUG] [Thread-158207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:09:57.548 [DEBUG] [Thread-158207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:09:57.548 [DEBUG] [Thread-158207] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:09:57.557 [DEBUG] [Thread-158207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:09:57.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:09:57.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:09:57.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:09:57.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:09:57.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:09:57.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:09:57.591 [DEBUG] [Thread-158207] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:09:59.829 [DEBUG] [Thread-158209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:10:01.852 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:10:01.856 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:10:07.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:10:07.594 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:10:07.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:10:08.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 10, 5), 14.88, 36.23, 0.0, 16.94, 15.18, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:10:08.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:10:05
2025-09-29T14:10:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:10:08.429 [DEBUG] [Thread-158210] [transport.py] [_log()] starting thread (client mode): 0x2b955720
2025-09-29T14:10:08.429 [DEBUG] [Thread-158210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:10:08.449 [DEBUG] [Thread-158210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:10:08.449 [INFO] [Thread-158210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:10:08.452 [DEBUG] [Thread-158210] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:10:08.452 [DEBUG] [Thread-158210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:10:08.452 [DEBUG] [Thread-158210] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:10:08.452 [DEBUG] [Thread-158210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:08.452 [DEBUG] [Thread-158210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:08.452 [DEBUG] [Thread-158210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:08.452 [DEBUG] [Thread-158210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:08.452 [DEBUG] [Thread-158210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] client lang: <none>
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] server lang: <none>
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] kex follows: False
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] Compression: none
2025-09-29T14:10:08.453 [DEBUG] [Thread-158210] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:10:08.471 [DEBUG] [Thread-158210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:10:08.471 [DEBUG] [Thread-158210] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:10:08.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:10:08.472 [DEBUG] [Thread-158210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:10:08.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:10:08.474 [DEBUG] [Thread-158210] [transport.py] [_log()] userauth is OK
2025-09-29T14:10:08.474 [DEBUG] [Thread-158210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:10:08.474 [DEBUG] [Thread-158210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:10:08.474 [DEBUG] [Thread-158210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:10:08.474 [DEBUG] [Thread-158210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:10:08.498 [INFO] [Thread-158210] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:10:08.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:10:14.859 [DEBUG] [Thread-158212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:10:15.887 [DEBUG] [Thread-158210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:10:15.887 [DEBUG] [Thread-158210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:10:15.887 [DEBUG] [Thread-158210] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:10:15.928 [DEBUG] [Thread-158210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:10:15.928 [DEBUG] [Thread-158210] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:10:15.930 [DEBUG] [Thread-158210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:10:16.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:10:16.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:10:16.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:10:16.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:10:16.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:10:16.139 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:10:16.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:10:16.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:10:16.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:10:16.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.506666 -999.00  +14.60  12.61     42   +2.00 1 1 1 1 1   888    0 14.96 71.15 ----- 12.1 12.6 124.4 19.2 24.2 -28.0 23.7 -29.1 25.1 -29.1 26.2 -29.8
2025-09-29T14:10:16.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:10:16.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:10:16.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.506666
2025-09-29T14:10:16.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:10:16.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:10:16.141 [DEBUG] [Thread-158210] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:10:16.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:10:16.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:10:16.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:10:16.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:10:05', tmtdew=14.88, humidity=36.23, cloud=0.0, wind=16.94, temperature=15.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:09:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:10:16.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:10:16.240 [DEBUG] [Thread-158214] [transport.py] [_log()] starting thread (client mode): 0x2b957580
2025-09-29T14:10:16.240 [DEBUG] [Thread-158214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:10:16.256 [DEBUG] [Thread-158214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:10:16.256 [INFO] [Thread-158214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:10:16.263 [DEBUG] [Thread-158214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:10:16.264 [DEBUG] [Thread-158214] [transport.py] [_log()] client lang: <none>
2025-09-29T14:10:16.265 [DEBUG] [Thread-158214] [transport.py] [_log()] server lang: <none>
2025-09-29T14:10:16.265 [DEBUG] [Thread-158214] [transport.py] [_log()] kex follows: False
2025-09-29T14:10:16.265 [DEBUG] [Thread-158214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:10:16.265 [DEBUG] [Thread-158214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:10:16.265 [DEBUG] [Thread-158214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:10:16.265 [DEBUG] [Thread-158214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:10:16.265 [DEBUG] [Thread-158214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:10:16.265 [DEBUG] [Thread-158214] [transport.py] [_log()] Compression: none
2025-09-29T14:10:16.266 [DEBUG] [Thread-158214] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:10:16.324 [DEBUG] [Thread-158214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:10:16.324 [DEBUG] [Thread-158214] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:10:16.325 [DEBUG] [Thread-158214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:10:16.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:10:16.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:10:16.383 [DEBUG] [Thread-158214] [transport.py] [_log()] userauth is OK
2025-09-29T14:10:16.383 [DEBUG] [Thread-158214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:10:16.383 [DEBUG] [Thread-158214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:10:16.383 [DEBUG] [Thread-158214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:10:16.383 [DEBUG] [Thread-158214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:10:16.403 [INFO] [Thread-158214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:10:16.403 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:10:16.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:10:17.392 [DEBUG] [Thread-158214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:10:17.393 [DEBUG] [Thread-158214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:10:17.440 [DEBUG] [Thread-158214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:10:17.440 [DEBUG] [Thread-158214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:10:17.448 [DEBUG] [Thread-158214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:10:17.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:10:17.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:10:17.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:10:17.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:10:17.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:10:17.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:10:17.481 [DEBUG] [Thread-158214] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:10:27.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:10:27.484 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:10:27.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:10:28.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 10, 5), 14.88, 36.23, 0.0, 16.94, 15.18, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:10:28.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:10:05
2025-09-29T14:10:28.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:10:28.349 [DEBUG] [Thread-158216] [transport.py] [_log()] starting thread (client mode): 0x2b9bbe20
2025-09-29T14:10:28.349 [DEBUG] [Thread-158216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:10:28.371 [DEBUG] [Thread-158216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:10:28.371 [INFO] [Thread-158216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] client lang: <none>
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] server lang: <none>
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] kex follows: False
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:10:28.373 [DEBUG] [Thread-158216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:10:28.374 [DEBUG] [Thread-158216] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:10:28.374 [DEBUG] [Thread-158216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:10:28.374 [DEBUG] [Thread-158216] [transport.py] [_log()] Compression: none
2025-09-29T14:10:28.374 [DEBUG] [Thread-158216] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:10:28.384 [DEBUG] [Thread-158216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:10:28.384 [DEBUG] [Thread-158216] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:10:28.384 [DEBUG] [Thread-158216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:10:28.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:10:28.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:10:28.385 [DEBUG] [Thread-158216] [transport.py] [_log()] userauth is OK
2025-09-29T14:10:28.385 [DEBUG] [Thread-158216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:10:28.385 [DEBUG] [Thread-158216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:10:28.385 [DEBUG] [Thread-158216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:10:28.385 [DEBUG] [Thread-158216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:10:28.401 [INFO] [Thread-158216] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:10:28.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:10:28.976 [DEBUG] [Thread-158216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:10:28.977 [DEBUG] [Thread-158216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:10:28.977 [DEBUG] [Thread-158216] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:10:29.018 [DEBUG] [Thread-158216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:10:29.018 [DEBUG] [Thread-158216] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:10:29.020 [DEBUG] [Thread-158216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:10:29.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:10:29.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:10:29.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:10:29.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:10:29.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:10:29.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:10:29.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.507013 -999.00  +14.90   8.83     42   +2.20 1 1 1 1 1   888    0 15.06 74.44 ----- 8.6 8.8 145.0 12.8 24.4 -28.2 23.8 -27.7 24.9 -28.9 26.2 -29.0
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.507013
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:10:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:10:05', tmtdew=14.88, humidity=36.23, cloud=0.0, wind=16.94, temperature=15.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:10:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:10:29.032 [DEBUG] [Thread-158216] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:10:29.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:10:29.115 [DEBUG] [Thread-158219] [transport.py] [_log()] starting thread (client mode): 0x2b90c940
2025-09-29T14:10:29.115 [DEBUG] [Thread-158219] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:10:29.130 [DEBUG] [Thread-158219] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:10:29.130 [INFO] [Thread-158219] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:10:29.137 [DEBUG] [Thread-158219] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:10:29.137 [DEBUG] [Thread-158219] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:10:29.137 [DEBUG] [Thread-158219] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] client lang: <none>
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] server lang: <none>
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] kex follows: False
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] Compression: none
2025-09-29T14:10:29.138 [DEBUG] [Thread-158219] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:10:29.194 [DEBUG] [Thread-158219] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:10:29.194 [DEBUG] [Thread-158219] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:10:29.195 [DEBUG] [Thread-158219] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:10:29.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:10:29.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:10:29.251 [DEBUG] [Thread-158219] [transport.py] [_log()] userauth is OK
2025-09-29T14:10:29.251 [DEBUG] [Thread-158219] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:10:29.251 [DEBUG] [Thread-158219] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:10:29.251 [DEBUG] [Thread-158219] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:10:29.251 [DEBUG] [Thread-158219] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:10:29.265 [INFO] [Thread-158219] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:10:29.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:10:29.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:10:29.890 [DEBUG] [Thread-158221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:10:30.294 [DEBUG] [Thread-158219] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:10:30.294 [DEBUG] [Thread-158219] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:10:30.342 [DEBUG] [Thread-158219] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:10:30.342 [DEBUG] [Thread-158219] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:10:30.350 [DEBUG] [Thread-158219] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:10:30.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:10:30.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:10:30.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:10:30.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:10:30.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:10:30.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:10:30.382 [DEBUG] [Thread-158219] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:10:40.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:10:40.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:10:40.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:10:40.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 10, 37), 14.72, 36.64, 0.0, 12.95, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:10:40.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:10:37
2025-09-29T14:10:41.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:10:41.220 [DEBUG] [Thread-158222] [transport.py] [_log()] starting thread (client mode): 0x2b9b80a0
2025-09-29T14:10:41.220 [DEBUG] [Thread-158222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:10:41.240 [DEBUG] [Thread-158222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:10:41.240 [INFO] [Thread-158222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] client lang: <none>
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] server lang: <none>
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] kex follows: False
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] Compression: none
2025-09-29T14:10:41.243 [DEBUG] [Thread-158222] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:10:41.260 [DEBUG] [Thread-158222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:10:41.260 [DEBUG] [Thread-158222] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:10:41.261 [DEBUG] [Thread-158222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:10:41.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:10:41.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:10:41.263 [DEBUG] [Thread-158222] [transport.py] [_log()] userauth is OK
2025-09-29T14:10:41.263 [DEBUG] [Thread-158222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:10:41.263 [DEBUG] [Thread-158222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:10:41.263 [DEBUG] [Thread-158222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:10:41.263 [DEBUG] [Thread-158222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:10:41.281 [INFO] [Thread-158222] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:10:41.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:10:42.022 [DEBUG] [Thread-158222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:10:42.022 [DEBUG] [Thread-158222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:10:42.022 [DEBUG] [Thread-158222] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:10:42.063 [DEBUG] [Thread-158222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:10:42.063 [DEBUG] [Thread-158222] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:10:42.066 [DEBUG] [Thread-158222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:10:42.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:10:42.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:10:42.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:10:42.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:10:42.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:10:42.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:10:42.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:10:42.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:10:42.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:10:42.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.507013 -999.00  +14.90   8.83     42   +2.20 1 1 1 1 1   888    0 15.06 74.44 ----- 8.6 8.8 145.0 12.8 24.4 -28.2 23.8 -27.7 24.9 -28.9 26.2 -29.0
2025-09-29T14:10:42.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:10:42.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:10:42.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.507013
2025-09-29T14:10:42.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:10:42.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:10:42.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:10:42.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:10:42.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:10:42.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:10:37', tmtdew=14.72, humidity=36.64, cloud=0.0, wind=12.95, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:10:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:10:42.091 [DEBUG] [Thread-158222] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:10:42.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:10:42.191 [DEBUG] [Thread-158225] [transport.py] [_log()] starting thread (client mode): 0x2b9bb8b0
2025-09-29T14:10:42.192 [DEBUG] [Thread-158225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:10:42.207 [DEBUG] [Thread-158225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:10:42.207 [INFO] [Thread-158225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:10:42.215 [DEBUG] [Thread-158225] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:10:42.215 [DEBUG] [Thread-158225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:10:42.215 [DEBUG] [Thread-158225] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:10:42.215 [DEBUG] [Thread-158225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:42.215 [DEBUG] [Thread-158225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:42.215 [DEBUG] [Thread-158225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:42.215 [DEBUG] [Thread-158225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] client lang: <none>
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] server lang: <none>
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] kex follows: False
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:10:42.216 [DEBUG] [Thread-158225] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:10:42.217 [DEBUG] [Thread-158225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:10:42.217 [DEBUG] [Thread-158225] [transport.py] [_log()] Compression: none
2025-09-29T14:10:42.217 [DEBUG] [Thread-158225] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:10:42.275 [DEBUG] [Thread-158225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:10:42.275 [DEBUG] [Thread-158225] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:10:42.276 [DEBUG] [Thread-158225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:10:42.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:10:42.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:10:42.331 [DEBUG] [Thread-158225] [transport.py] [_log()] userauth is OK
2025-09-29T14:10:42.331 [DEBUG] [Thread-158225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:10:42.331 [DEBUG] [Thread-158225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:10:42.331 [DEBUG] [Thread-158225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:10:42.331 [DEBUG] [Thread-158225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:10:42.351 [INFO] [Thread-158225] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:10:42.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:10:42.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:10:43.355 [DEBUG] [Thread-158225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:10:43.355 [DEBUG] [Thread-158225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:10:43.403 [DEBUG] [Thread-158225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:10:43.403 [DEBUG] [Thread-158225] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:10:43.412 [DEBUG] [Thread-158225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:10:43.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:10:43.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:10:43.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:10:43.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:10:43.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:10:43.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:10:43.447 [DEBUG] [Thread-158225] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:10:44.006 [DEBUG] [Thread-158227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:10:44.930 [DEBUG] [Thread-158228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:10:53.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:10:53.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:10:53.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:10:54.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 10, 37), 14.72, 36.64, 0.0, 12.95, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:10:54.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:10:37
2025-09-29T14:10:54.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:10:54.296 [DEBUG] [Thread-158229] [transport.py] [_log()] starting thread (client mode): 0x2e3dc0a0
2025-09-29T14:10:54.296 [DEBUG] [Thread-158229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:10:54.316 [DEBUG] [Thread-158229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:10:54.316 [INFO] [Thread-158229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] client lang: <none>
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] server lang: <none>
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] kex follows: False
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:10:54.319 [DEBUG] [Thread-158229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:10:54.320 [DEBUG] [Thread-158229] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:10:54.320 [DEBUG] [Thread-158229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:10:54.320 [DEBUG] [Thread-158229] [transport.py] [_log()] Compression: none
2025-09-29T14:10:54.320 [DEBUG] [Thread-158229] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:10:54.337 [DEBUG] [Thread-158229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:10:54.337 [DEBUG] [Thread-158229] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:10:54.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:10:54.338 [DEBUG] [Thread-158229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:10:54.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:10:54.340 [DEBUG] [Thread-158229] [transport.py] [_log()] userauth is OK
2025-09-29T14:10:54.341 [DEBUG] [Thread-158229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:10:54.341 [DEBUG] [Thread-158229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:10:54.341 [DEBUG] [Thread-158229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:10:54.341 [DEBUG] [Thread-158229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:10:54.365 [INFO] [Thread-158229] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:10:54.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:10:54.940 [DEBUG] [Thread-158229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:10:54.940 [DEBUG] [Thread-158229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:10:54.941 [DEBUG] [Thread-158229] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:10:54.981 [DEBUG] [Thread-158229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:10:54.981 [DEBUG] [Thread-158229] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:10:54.984 [DEBUG] [Thread-158229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:10:54.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:10:54.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:10:54.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:10:54.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:10:55.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:10:55.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:10:55.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:10:55.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.507360 -999.00  +15.00   8.05     42   +2.30 1 1 1 1 1   888    0 14.88 75.24 ----- 8.3 8.1 129.9 11.2 24.5 -27.5 23.9 -27.9 25.1 -28.6 26.2 -29.4
2025-09-29T14:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.507360
2025-09-29T14:10:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:10:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:10:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:10:55.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:10:55.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:10:55.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:10:37', tmtdew=14.72, humidity=36.64, cloud=0.0, wind=12.95, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:10:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:10:55.004 [DEBUG] [Thread-158229] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:10:55.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:10:55.098 [DEBUG] [Thread-158232] [transport.py] [_log()] starting thread (client mode): 0x2b96df60
2025-09-29T14:10:55.098 [DEBUG] [Thread-158232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:10:55.112 [DEBUG] [Thread-158232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:10:55.112 [INFO] [Thread-158232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:10:55.120 [DEBUG] [Thread-158232] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:10:55.120 [DEBUG] [Thread-158232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:10:55.120 [DEBUG] [Thread-158232] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:10:55.120 [DEBUG] [Thread-158232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] client lang: <none>
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] server lang: <none>
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] kex follows: False
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:10:55.121 [DEBUG] [Thread-158232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:10:55.122 [DEBUG] [Thread-158232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:10:55.122 [DEBUG] [Thread-158232] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:10:55.122 [DEBUG] [Thread-158232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:10:55.122 [DEBUG] [Thread-158232] [transport.py] [_log()] Compression: none
2025-09-29T14:10:55.122 [DEBUG] [Thread-158232] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:10:55.178 [DEBUG] [Thread-158232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:10:55.179 [DEBUG] [Thread-158232] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:10:55.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:10:55.180 [DEBUG] [Thread-158232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:10:55.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:10:55.237 [DEBUG] [Thread-158232] [transport.py] [_log()] userauth is OK
2025-09-29T14:10:55.237 [DEBUG] [Thread-158232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:10:55.237 [DEBUG] [Thread-158232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:10:55.237 [DEBUG] [Thread-158232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:10:55.237 [DEBUG] [Thread-158232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:10:55.256 [INFO] [Thread-158232] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:10:55.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:10:55.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:10:56.215 [DEBUG] [Thread-158232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:10:56.215 [DEBUG] [Thread-158232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:10:56.263 [DEBUG] [Thread-158232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:10:56.263 [DEBUG] [Thread-158232] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:10:56.272 [DEBUG] [Thread-158232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:10:56.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:10:56.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:10:56.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:10:56.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:10:56.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:10:56.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:10:56.307 [DEBUG] [Thread-158232] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:10:59.972 [DEBUG] [Thread-158234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:11:02.062 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:11:02.063 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:11:06.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:11:06.309 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:11:06.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:11:06.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 10, 37), 14.72, 36.64, 0.0, 12.95, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:11:06.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:10:37
2025-09-29T14:11:06.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:11:07.161 [DEBUG] [Thread-158235] [transport.py] [_log()] starting thread (client mode): 0x2e3dfac0
2025-09-29T14:11:07.161 [DEBUG] [Thread-158235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:07.182 [DEBUG] [Thread-158235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:11:07.182 [INFO] [Thread-158235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] Compression: none
2025-09-29T14:11:07.185 [DEBUG] [Thread-158235] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:07.197 [DEBUG] [Thread-158235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:07.197 [DEBUG] [Thread-158235] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:07.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:11:07.197 [DEBUG] [Thread-158235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:11:07.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:07.198 [DEBUG] [Thread-158235] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:07.198 [DEBUG] [Thread-158235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:07.198 [DEBUG] [Thread-158235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:07.198 [DEBUG] [Thread-158235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:11:07.198 [DEBUG] [Thread-158235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:07.213 [INFO] [Thread-158235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:07.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:07.930 [DEBUG] [Thread-158235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:07.930 [DEBUG] [Thread-158235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:07.930 [DEBUG] [Thread-158235] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:11:07.971 [DEBUG] [Thread-158235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:07.971 [DEBUG] [Thread-158235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:07.973 [DEBUG] [Thread-158235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:07.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:07.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:11:07.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:11:07.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:11:07.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:07.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:11:07.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.507360 -999.00  +15.00   8.05     42   +2.30 1 1 1 1 1   888    0 14.88 75.24 ----- 8.3 8.1 129.9 11.2 24.5 -27.5 23.9 -27.9 25.1 -28.6 26.2 -29.4
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.507360
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:11:07.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:10:37', tmtdew=14.72, humidity=36.64, cloud=0.0, wind=12.95, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:10:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:11:07.990 [DEBUG] [Thread-158235] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:08.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:11:08.076 [DEBUG] [Thread-158238] [transport.py] [_log()] starting thread (client mode): 0x2e3de650
2025-09-29T14:11:08.076 [DEBUG] [Thread-158238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:08.090 [DEBUG] [Thread-158238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:11:08.090 [INFO] [Thread-158238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:11:08.097 [DEBUG] [Thread-158238] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:08.097 [DEBUG] [Thread-158238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:11:08.097 [DEBUG] [Thread-158238] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:08.097 [DEBUG] [Thread-158238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] Compression: none
2025-09-29T14:11:08.098 [DEBUG] [Thread-158238] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:08.154 [DEBUG] [Thread-158238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:08.154 [DEBUG] [Thread-158238] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:08.154 [DEBUG] [Thread-158238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:11:08.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:11:08.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:08.210 [DEBUG] [Thread-158238] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:08.210 [DEBUG] [Thread-158238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:08.210 [DEBUG] [Thread-158238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:08.210 [DEBUG] [Thread-158238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:11:08.210 [DEBUG] [Thread-158238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:08.224 [INFO] [Thread-158238] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:08.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:11:08.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:09.235 [DEBUG] [Thread-158238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:09.235 [DEBUG] [Thread-158238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:09.283 [DEBUG] [Thread-158238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:09.283 [DEBUG] [Thread-158238] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:09.291 [DEBUG] [Thread-158238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:09.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:09.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:11:09.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:11:09.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:09.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:09.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:09.323 [DEBUG] [Thread-158238] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:15.005 [DEBUG] [Thread-158240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:11:19.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:11:19.325 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:11:19.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:11:19.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 11, 9), 14.62, 36.81, 0.0, 9.39, 14.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:11:19.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:11:09
2025-09-29T14:11:20.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:11:20.157 [DEBUG] [Thread-158241] [transport.py] [_log()] starting thread (client mode): 0x2b9b8550
2025-09-29T14:11:20.157 [DEBUG] [Thread-158241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:20.176 [DEBUG] [Thread-158241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:11:20.176 [INFO] [Thread-158241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:11:20.179 [DEBUG] [Thread-158241] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:20.179 [DEBUG] [Thread-158241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:11:20.179 [DEBUG] [Thread-158241] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] Compression: none
2025-09-29T14:11:20.180 [DEBUG] [Thread-158241] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:20.196 [DEBUG] [Thread-158241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:20.196 [DEBUG] [Thread-158241] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:20.197 [DEBUG] [Thread-158241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:11:20.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:11:20.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:20.199 [DEBUG] [Thread-158241] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:20.199 [DEBUG] [Thread-158241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:20.199 [DEBUG] [Thread-158241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:20.199 [DEBUG] [Thread-158241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:11:20.199 [DEBUG] [Thread-158241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:20.218 [INFO] [Thread-158241] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:20.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:20.944 [DEBUG] [Thread-158241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:20.944 [DEBUG] [Thread-158241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:20.945 [DEBUG] [Thread-158241] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:11:20.985 [DEBUG] [Thread-158241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:20.985 [DEBUG] [Thread-158241] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:20.988 [DEBUG] [Thread-158241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:21.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:21.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:11:21.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:11:21.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:11:21.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:21.012 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:11:21.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:21.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:11:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.507360 -999.00  +15.00   8.05     42   +2.30 1 1 1 1 1   888    0 14.88 75.24 ----- 8.3 8.1 129.9 11.2 24.5 -27.5 23.9 -27.9 25.1 -28.6 26.2 -29.4
2025-09-29T14:11:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:11:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:11:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.507360
2025-09-29T14:11:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:11:21.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:11:21.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:11:21.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:11:21.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:11:21.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:11:09', tmtdew=14.62, humidity=36.81, cloud=0.0, wind=9.39, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:10:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:11:21.015 [DEBUG] [Thread-158241] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:21.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:11:21.110 [DEBUG] [Thread-158244] [transport.py] [_log()] starting thread (client mode): 0x2b9dcb50
2025-09-29T14:11:21.110 [DEBUG] [Thread-158244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:21.125 [DEBUG] [Thread-158244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:11:21.125 [INFO] [Thread-158244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] Compression: none
2025-09-29T14:11:21.133 [DEBUG] [Thread-158244] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:21.190 [DEBUG] [Thread-158244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:21.190 [DEBUG] [Thread-158244] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:21.191 [DEBUG] [Thread-158244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:11:21.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:11:21.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:21.246 [DEBUG] [Thread-158244] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:21.247 [DEBUG] [Thread-158244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:21.247 [DEBUG] [Thread-158244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:21.247 [DEBUG] [Thread-158244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:11:21.247 [DEBUG] [Thread-158244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:21.265 [INFO] [Thread-158244] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:21.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:11:21.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:22.265 [DEBUG] [Thread-158244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:22.265 [DEBUG] [Thread-158244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:22.315 [DEBUG] [Thread-158244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:22.315 [DEBUG] [Thread-158244] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:22.328 [DEBUG] [Thread-158244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:22.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:22.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:11:22.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:11:22.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:22.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:22.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:22.366 [DEBUG] [Thread-158244] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:30.034 [DEBUG] [Thread-158246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:11:32.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:11:32.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:11:32.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:11:32.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 11, 9), 14.62, 36.81, 0.0, 9.39, 14.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:11:32.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:11:09
2025-09-29T14:11:33.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:11:33.197 [DEBUG] [Thread-158247] [transport.py] [_log()] starting thread (client mode): 0x2e3def20
2025-09-29T14:11:33.198 [DEBUG] [Thread-158247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:33.213 [DEBUG] [Thread-158247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:11:33.213 [INFO] [Thread-158247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:11:33.216 [DEBUG] [Thread-158247] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:33.216 [DEBUG] [Thread-158247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:11:33.216 [DEBUG] [Thread-158247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] Compression: none
2025-09-29T14:11:33.217 [DEBUG] [Thread-158247] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:33.237 [DEBUG] [Thread-158247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:33.238 [DEBUG] [Thread-158247] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:33.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:11:33.239 [DEBUG] [Thread-158247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:11:33.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:33.241 [DEBUG] [Thread-158247] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:33.241 [DEBUG] [Thread-158247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:33.241 [DEBUG] [Thread-158247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:33.241 [DEBUG] [Thread-158247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:11:33.242 [DEBUG] [Thread-158247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:33.262 [INFO] [Thread-158247] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:33.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:33.861 [DEBUG] [Thread-158247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:33.862 [DEBUG] [Thread-158247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:33.862 [DEBUG] [Thread-158247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:11:33.902 [DEBUG] [Thread-158247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:33.902 [DEBUG] [Thread-158247] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:33.905 [DEBUG] [Thread-158247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:33.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:33.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:11:33.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:11:33.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:11:33.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:33.923 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:11:33.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:33.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:33.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:11:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.507707 -999.00  +15.10  12.08     41   +2.20 1 1 1 1 1   888    0 15.04 78.70 ----- 8.9 12.1 107.6 15.0 24.4 -30.6 23.9 -28.5 25.2 -27.5 26.5 -27.8
2025-09-29T14:11:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:11:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:11:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.507707
2025-09-29T14:11:33.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:11:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:11:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:11:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:11:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:11:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:11:09', tmtdew=14.62, humidity=36.81, cloud=0.0, wind=9.39, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:11:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:11:33.925 [DEBUG] [Thread-158247] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:34.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:11:34.020 [DEBUG] [Thread-158250] [transport.py] [_log()] starting thread (client mode): 0x2b96c460
2025-09-29T14:11:34.021 [DEBUG] [Thread-158250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:34.036 [DEBUG] [Thread-158250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:11:34.036 [INFO] [Thread-158250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] Compression: none
2025-09-29T14:11:34.044 [DEBUG] [Thread-158250] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:34.102 [DEBUG] [Thread-158250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:34.103 [DEBUG] [Thread-158250] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:34.103 [DEBUG] [Thread-158250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:11:34.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:11:34.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:34.159 [DEBUG] [Thread-158250] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:34.159 [DEBUG] [Thread-158250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:34.159 [DEBUG] [Thread-158250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:34.159 [DEBUG] [Thread-158250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:11:34.159 [DEBUG] [Thread-158250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:34.178 [INFO] [Thread-158250] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:34.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:11:34.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:35.178 [DEBUG] [Thread-158250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:35.178 [DEBUG] [Thread-158250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:35.226 [DEBUG] [Thread-158250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:35.226 [DEBUG] [Thread-158250] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:35.235 [DEBUG] [Thread-158250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:35.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:35.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:11:35.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:11:35.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:35.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:35.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:35.272 [DEBUG] [Thread-158250] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:44.036 [DEBUG] [Thread-158252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:11:45.074 [DEBUG] [Thread-158253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:11:45.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:11:45.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:11:45.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:11:45.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 11, 40), 14.37, 37.29, 0.0, 8.58, 14.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:11:45.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:11:40
2025-09-29T14:11:45.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:11:46.141 [DEBUG] [Thread-158254] [transport.py] [_log()] starting thread (client mode): 0x2b96da80
2025-09-29T14:11:46.141 [DEBUG] [Thread-158254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:46.162 [DEBUG] [Thread-158254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:11:46.162 [INFO] [Thread-158254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:46.165 [DEBUG] [Thread-158254] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:46.166 [DEBUG] [Thread-158254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:46.166 [DEBUG] [Thread-158254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:46.166 [DEBUG] [Thread-158254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:46.166 [DEBUG] [Thread-158254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:46.166 [DEBUG] [Thread-158254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:46.166 [DEBUG] [Thread-158254] [transport.py] [_log()] Compression: none
2025-09-29T14:11:46.166 [DEBUG] [Thread-158254] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:46.182 [DEBUG] [Thread-158254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:46.182 [DEBUG] [Thread-158254] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:46.182 [DEBUG] [Thread-158254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:11:46.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:11:46.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:46.183 [DEBUG] [Thread-158254] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:46.183 [DEBUG] [Thread-158254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:46.183 [DEBUG] [Thread-158254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:46.183 [DEBUG] [Thread-158254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:11:46.183 [DEBUG] [Thread-158254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:46.194 [INFO] [Thread-158254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:46.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:46.925 [DEBUG] [Thread-158254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:46.925 [DEBUG] [Thread-158254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:46.925 [DEBUG] [Thread-158254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:11:46.966 [DEBUG] [Thread-158254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:46.966 [DEBUG] [Thread-158254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:46.968 [DEBUG] [Thread-158254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:46.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:46.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:11:46.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:11:46.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:11:46.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:46.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:11:46.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:46.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:46.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:11:46.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.507707 -999.00  +15.10  12.08     41   +2.20 1 1 1 1 1   888    0 15.04 78.70 ----- 8.9 12.1 107.6 15.0 24.4 -30.6 23.9 -28.5 25.2 -27.5 26.5 -27.8
2025-09-29T14:11:46.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:11:46.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:11:46.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.507707
2025-09-29T14:11:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:11:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:11:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:11:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:11:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:11:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:11:40', tmtdew=14.37, humidity=37.29, cloud=0.0, wind=8.58, temperature=14.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:11:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:11:46.990 [DEBUG] [Thread-158254] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:47.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:11:47.075 [DEBUG] [Thread-158257] [transport.py] [_log()] starting thread (client mode): 0x2b9dfb80
2025-09-29T14:11:47.075 [DEBUG] [Thread-158257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:47.091 [DEBUG] [Thread-158257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:11:47.091 [INFO] [Thread-158257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] Compression: none
2025-09-29T14:11:47.102 [DEBUG] [Thread-158257] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:47.162 [DEBUG] [Thread-158257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:47.162 [DEBUG] [Thread-158257] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:47.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:11:47.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:47.162 [DEBUG] [Thread-158257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:11:47.222 [DEBUG] [Thread-158257] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:47.223 [DEBUG] [Thread-158257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:47.223 [DEBUG] [Thread-158257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:47.223 [DEBUG] [Thread-158257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:11:47.223 [DEBUG] [Thread-158257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:47.239 [INFO] [Thread-158257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:47.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:11:47.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:48.231 [DEBUG] [Thread-158257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:48.232 [DEBUG] [Thread-158257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:48.279 [DEBUG] [Thread-158257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:48.279 [DEBUG] [Thread-158257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:48.288 [DEBUG] [Thread-158257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:48.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:48.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:11:48.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:11:48.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:48.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:48.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:48.324 [DEBUG] [Thread-158257] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:58.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:11:58.318 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:11:58.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:11:58.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 11, 40), 14.37, 37.29, 0.0, 8.58, 14.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:11:58.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:11:40
2025-09-29T14:11:59.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:11:59.165 [DEBUG] [Thread-158259] [transport.py] [_log()] starting thread (client mode): 0x2e3df6a0
2025-09-29T14:11:59.165 [DEBUG] [Thread-158259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:59.185 [DEBUG] [Thread-158259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:11:59.185 [INFO] [Thread-158259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:59.188 [DEBUG] [Thread-158259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:59.189 [DEBUG] [Thread-158259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:59.189 [DEBUG] [Thread-158259] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:59.189 [DEBUG] [Thread-158259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:59.189 [DEBUG] [Thread-158259] [transport.py] [_log()] Compression: none
2025-09-29T14:11:59.189 [DEBUG] [Thread-158259] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:11:59.205 [DEBUG] [Thread-158259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:11:59.206 [DEBUG] [Thread-158259] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:11:59.206 [DEBUG] [Thread-158259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:11:59.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:11:59.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:11:59.208 [DEBUG] [Thread-158259] [transport.py] [_log()] userauth is OK
2025-09-29T14:11:59.208 [DEBUG] [Thread-158259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:11:59.209 [DEBUG] [Thread-158259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:11:59.209 [DEBUG] [Thread-158259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:11:59.209 [DEBUG] [Thread-158259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:11:59.244 [INFO] [Thread-158259] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:11:59.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:11:59.807 [DEBUG] [Thread-158259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:11:59.807 [DEBUG] [Thread-158259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:11:59.807 [DEBUG] [Thread-158259] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:11:59.848 [DEBUG] [Thread-158259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:11:59.848 [DEBUG] [Thread-158259] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:11:59.850 [DEBUG] [Thread-158259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:11:59.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:11:59.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:11:59.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:11:59.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:11:59.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:11:59.866 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:11:59.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.508055 -999.00  +15.10  10.02     41   +2.20 1 1 1 1 1   888    0 14.90 77.39 ----- 8.0 10.0 143.2 13.9 24.5 -28.5 23.9 -27.9 25.2 -28.5 26.5 -28.8
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.508055
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:11:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:11:40', tmtdew=14.37, humidity=37.29, cloud=0.0, wind=8.58, temperature=14.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:11:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:11:59.867 [DEBUG] [Thread-158259] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:11:59.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:11:59.949 [DEBUG] [Thread-158262] [transport.py] [_log()] starting thread (client mode): 0x2b96d000
2025-09-29T14:11:59.950 [DEBUG] [Thread-158262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:11:59.964 [DEBUG] [Thread-158262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:11:59.964 [INFO] [Thread-158262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:11:59.971 [DEBUG] [Thread-158262] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] client lang: <none>
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] server lang: <none>
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] kex follows: False
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] Compression: none
2025-09-29T14:11:59.972 [DEBUG] [Thread-158262] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:00.031 [DEBUG] [Thread-158262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:00.031 [DEBUG] [Thread-158262] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:00.032 [DEBUG] [Thread-158262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:12:00.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:12:00.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:00.086 [DEBUG] [Thread-158262] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:00.087 [DEBUG] [Thread-158262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:00.087 [DEBUG] [Thread-158262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:00.087 [DEBUG] [Thread-158262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:12:00.087 [DEBUG] [Thread-158262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:00.106 [INFO] [Thread-158262] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:00.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:12:00.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:00.119 [DEBUG] [Thread-158264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:12:01.124 [DEBUG] [Thread-158262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:01.124 [DEBUG] [Thread-158262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:01.172 [DEBUG] [Thread-158262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:01.172 [DEBUG] [Thread-158262] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:01.182 [DEBUG] [Thread-158262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:01.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:01.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:12:01.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:12:01.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:01.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:01.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:01.216 [DEBUG] [Thread-158262] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:12:02.235 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:12:02.236 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:12:11.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:12:11.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:12:11.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:12:11.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 11, 40), 14.37, 37.29, 0.0, 8.58, 14.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:12:11.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:11:40
2025-09-29T14:12:11.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:12:12.046 [DEBUG] [Thread-158265] [transport.py] [_log()] starting thread (client mode): 0x2b90e050
2025-09-29T14:12:12.047 [DEBUG] [Thread-158265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:12:12.067 [DEBUG] [Thread-158265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:12:12.067 [INFO] [Thread-158265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:12:12.070 [DEBUG] [Thread-158265] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:12:12.070 [DEBUG] [Thread-158265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:12:12.070 [DEBUG] [Thread-158265] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:12:12.070 [DEBUG] [Thread-158265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] client lang: <none>
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] server lang: <none>
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] kex follows: False
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:12:12.071 [DEBUG] [Thread-158265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:12:12.072 [DEBUG] [Thread-158265] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:12:12.072 [DEBUG] [Thread-158265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:12:12.072 [DEBUG] [Thread-158265] [transport.py] [_log()] Compression: none
2025-09-29T14:12:12.072 [DEBUG] [Thread-158265] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:12.089 [DEBUG] [Thread-158265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:12.090 [DEBUG] [Thread-158265] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:12.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:12:12.090 [DEBUG] [Thread-158265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:12:12.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:12.092 [DEBUG] [Thread-158265] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:12.093 [DEBUG] [Thread-158265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:12.093 [DEBUG] [Thread-158265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:12.093 [DEBUG] [Thread-158265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:12:12.093 [DEBUG] [Thread-158265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:12.110 [INFO] [Thread-158265] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:12.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:12.831 [DEBUG] [Thread-158265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:12.832 [DEBUG] [Thread-158265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:12.832 [DEBUG] [Thread-158265] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:12:12.872 [DEBUG] [Thread-158265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:12.872 [DEBUG] [Thread-158265] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:12.874 [DEBUG] [Thread-158265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:12.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:12.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:12:12.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:12:12.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:12:12.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:12.893 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:12:12.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:12.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:12.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:12:12.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.508055 -999.00  +15.10  10.02     41   +2.20 1 1 1 1 1   888    0 14.90 77.39 ----- 8.0 10.0 143.2 13.9 24.5 -28.5 23.9 -27.9 25.2 -28.5 26.5 -28.8
2025-09-29T14:12:12.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:12:12.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:12:12.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.508055
2025-09-29T14:12:12.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:12:12.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:12:12.896 [DEBUG] [Thread-158265] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:12:12.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:12:12.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:12:12.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:12:12.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:11:40', tmtdew=14.37, humidity=37.29, cloud=0.0, wind=8.58, temperature=14.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:11:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:12:12.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:12:12.993 [DEBUG] [Thread-158268] [transport.py] [_log()] starting thread (client mode): 0x2b9dc8e0
2025-09-29T14:12:12.993 [DEBUG] [Thread-158268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:12:13.007 [DEBUG] [Thread-158268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:12:13.008 [INFO] [Thread-158268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:12:13.015 [DEBUG] [Thread-158268] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:12:13.015 [DEBUG] [Thread-158268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] client lang: <none>
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] server lang: <none>
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] kex follows: False
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] Compression: none
2025-09-29T14:12:13.016 [DEBUG] [Thread-158268] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:13.077 [DEBUG] [Thread-158268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:13.078 [DEBUG] [Thread-158268] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:13.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:12:13.079 [DEBUG] [Thread-158268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:12:13.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:13.138 [DEBUG] [Thread-158268] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:13.139 [DEBUG] [Thread-158268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:13.139 [DEBUG] [Thread-158268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:13.139 [DEBUG] [Thread-158268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:12:13.139 [DEBUG] [Thread-158268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:13.152 [INFO] [Thread-158268] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:13.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:12:13.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:14.122 [DEBUG] [Thread-158268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:14.122 [DEBUG] [Thread-158268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:14.170 [DEBUG] [Thread-158268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:14.170 [DEBUG] [Thread-158268] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:14.178 [DEBUG] [Thread-158268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:14.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:14.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:12:14.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:12:14.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:14.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:14.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:14.209 [DEBUG] [Thread-158268] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:12:15.167 [DEBUG] [Thread-158270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:12:24.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:12:24.211 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:12:24.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:12:24.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 12, 12), 14.33, 37.37, 0.0, 7.4, 14.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:12:24.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:12:12
2025-09-29T14:12:24.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:12:25.077 [DEBUG] [Thread-158271] [transport.py] [_log()] starting thread (client mode): 0x2b90cf70
2025-09-29T14:12:25.077 [DEBUG] [Thread-158271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:12:25.098 [DEBUG] [Thread-158271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:12:25.098 [INFO] [Thread-158271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] client lang: <none>
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] server lang: <none>
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] kex follows: False
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] Compression: none
2025-09-29T14:12:25.102 [DEBUG] [Thread-158271] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:25.118 [DEBUG] [Thread-158271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:25.118 [DEBUG] [Thread-158271] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:25.118 [DEBUG] [Thread-158271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:12:25.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:12:25.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:25.119 [DEBUG] [Thread-158271] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:25.119 [DEBUG] [Thread-158271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:25.119 [DEBUG] [Thread-158271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:25.119 [DEBUG] [Thread-158271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:12:25.119 [DEBUG] [Thread-158271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:25.129 [INFO] [Thread-158271] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:25.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:25.889 [DEBUG] [Thread-158271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:25.889 [DEBUG] [Thread-158271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:25.889 [DEBUG] [Thread-158271] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:12:25.930 [DEBUG] [Thread-158271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:25.930 [DEBUG] [Thread-158271] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:25.932 [DEBUG] [Thread-158271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:25.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:25.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:12:25.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:12:25.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:12:25.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:25.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:12:25.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.508055 -999.00  +15.10  10.02     41   +2.20 1 1 1 1 1   888    0 14.90 77.39 ----- 8.0 10.0 143.2 13.9 24.5 -28.5 23.9 -27.9 25.2 -28.5 26.5 -28.8
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.508055
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:12:25.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:12:12', tmtdew=14.33, humidity=37.37, cloud=0.0, wind=7.4, temperature=14.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:11:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:12:25.953 [DEBUG] [Thread-158271] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:12:26.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:12:26.043 [DEBUG] [Thread-158274] [transport.py] [_log()] starting thread (client mode): 0x2b9dc1f0
2025-09-29T14:12:26.043 [DEBUG] [Thread-158274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:12:26.060 [DEBUG] [Thread-158274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:12:26.060 [INFO] [Thread-158274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] client lang: <none>
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] server lang: <none>
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] kex follows: False
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:12:26.068 [DEBUG] [Thread-158274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:12:26.069 [DEBUG] [Thread-158274] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:12:26.069 [DEBUG] [Thread-158274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:12:26.069 [DEBUG] [Thread-158274] [transport.py] [_log()] Compression: none
2025-09-29T14:12:26.069 [DEBUG] [Thread-158274] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:26.125 [DEBUG] [Thread-158274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:26.125 [DEBUG] [Thread-158274] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:26.126 [DEBUG] [Thread-158274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:12:26.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:12:26.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:26.182 [DEBUG] [Thread-158274] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:26.182 [DEBUG] [Thread-158274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:26.182 [DEBUG] [Thread-158274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:26.182 [DEBUG] [Thread-158274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:12:26.182 [DEBUG] [Thread-158274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:26.197 [INFO] [Thread-158274] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:26.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:12:26.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:27.271 [DEBUG] [Thread-158274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:27.272 [DEBUG] [Thread-158274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:27.320 [DEBUG] [Thread-158274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:27.321 [DEBUG] [Thread-158274] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:27.334 [DEBUG] [Thread-158274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:27.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:27.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:12:27.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:12:27.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:27.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:27.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:27.375 [DEBUG] [Thread-158274] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:12:30.195 [DEBUG] [Thread-158276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:12:37.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:12:37.378 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:12:37.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:12:37.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 12, 12), 14.33, 37.37, 0.0, 7.4, 14.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:12:37.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:12:12
2025-09-29T14:12:38.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:12:38.211 [DEBUG] [Thread-158277] [transport.py] [_log()] starting thread (client mode): 0x2b9de050
2025-09-29T14:12:38.212 [DEBUG] [Thread-158277] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:12:38.232 [DEBUG] [Thread-158277] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:12:38.232 [INFO] [Thread-158277] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:12:38.235 [DEBUG] [Thread-158277] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:12:38.235 [DEBUG] [Thread-158277] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:12:38.235 [DEBUG] [Thread-158277] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:12:38.235 [DEBUG] [Thread-158277] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:38.235 [DEBUG] [Thread-158277] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:38.235 [DEBUG] [Thread-158277] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:38.235 [DEBUG] [Thread-158277] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] client lang: <none>
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] server lang: <none>
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] kex follows: False
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] Compression: none
2025-09-29T14:12:38.236 [DEBUG] [Thread-158277] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:38.255 [DEBUG] [Thread-158277] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:38.255 [DEBUG] [Thread-158277] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:38.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:12:38.256 [DEBUG] [Thread-158277] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:12:38.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:38.258 [DEBUG] [Thread-158277] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:38.258 [DEBUG] [Thread-158277] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:38.258 [DEBUG] [Thread-158277] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:38.258 [DEBUG] [Thread-158277] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:12:38.258 [DEBUG] [Thread-158277] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:38.276 [INFO] [Thread-158277] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:38.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:38.853 [DEBUG] [Thread-158277] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:38.853 [DEBUG] [Thread-158277] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:38.853 [DEBUG] [Thread-158277] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:12:38.894 [DEBUG] [Thread-158277] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:38.894 [DEBUG] [Thread-158277] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:38.897 [DEBUG] [Thread-158277] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:38.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:38.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:12:38.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:12:38.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:12:38.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:38.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:12:38.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:38.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:38.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:12:38.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.508402 -999.00  +15.10   5.64     41   +2.10 1 1 1 1 1   888    0 15.01 77.21 ----- 4.8 5.6 163.2 9.4 24.7 -28.2 23.9 -28.1 25.2 -28.2 26.4 -27.8
2025-09-29T14:12:38.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:12:38.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:12:38.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.508402
2025-09-29T14:12:38.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:12:38.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:12:38.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:12:38.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:12:38.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:12:38.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:12:12', tmtdew=14.33, humidity=37.37, cloud=0.0, wind=7.4, temperature=14.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:12:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:12:38.921 [DEBUG] [Thread-158277] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:12:39.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:12:39.018 [DEBUG] [Thread-158280] [transport.py] [_log()] starting thread (client mode): 0x2b9df640
2025-09-29T14:12:39.019 [DEBUG] [Thread-158280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:12:39.033 [DEBUG] [Thread-158280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:12:39.033 [INFO] [Thread-158280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:12:39.041 [DEBUG] [Thread-158280] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:12:39.041 [DEBUG] [Thread-158280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:12:39.041 [DEBUG] [Thread-158280] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:12:39.041 [DEBUG] [Thread-158280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] client lang: <none>
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] server lang: <none>
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] kex follows: False
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:12:39.042 [DEBUG] [Thread-158280] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:12:39.043 [DEBUG] [Thread-158280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:12:39.043 [DEBUG] [Thread-158280] [transport.py] [_log()] Compression: none
2025-09-29T14:12:39.043 [DEBUG] [Thread-158280] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:39.100 [DEBUG] [Thread-158280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:39.100 [DEBUG] [Thread-158280] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:39.101 [DEBUG] [Thread-158280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:12:39.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:12:39.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:39.158 [DEBUG] [Thread-158280] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:39.159 [DEBUG] [Thread-158280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:39.159 [DEBUG] [Thread-158280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:39.159 [DEBUG] [Thread-158280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:12:39.159 [DEBUG] [Thread-158280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:39.181 [INFO] [Thread-158280] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:39.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:12:39.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:40.174 [DEBUG] [Thread-158280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:40.174 [DEBUG] [Thread-158280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:40.222 [DEBUG] [Thread-158280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:40.222 [DEBUG] [Thread-158280] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:40.231 [DEBUG] [Thread-158280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:40.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:40.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:12:40.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:12:40.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:40.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:40.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:40.266 [DEBUG] [Thread-158280] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:12:44.068 [DEBUG] [Thread-158282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:12:45.239 [DEBUG] [Thread-158283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:12:50.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:12:50.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:12:50.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:12:50.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 12, 44), 14.02, 38.17, 0.0, 4.06, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:12:50.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:12:44
2025-09-29T14:12:50.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:12:51.113 [DEBUG] [Thread-158284] [transport.py] [_log()] starting thread (client mode): 0x2b90ecb0
2025-09-29T14:12:51.113 [DEBUG] [Thread-158284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:12:51.133 [DEBUG] [Thread-158284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:12:51.133 [INFO] [Thread-158284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:12:51.136 [DEBUG] [Thread-158284] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:12:51.136 [DEBUG] [Thread-158284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:12:51.136 [DEBUG] [Thread-158284] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:12:51.136 [DEBUG] [Thread-158284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:51.136 [DEBUG] [Thread-158284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] client lang: <none>
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] server lang: <none>
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] kex follows: False
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:12:51.137 [DEBUG] [Thread-158284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:12:51.138 [DEBUG] [Thread-158284] [transport.py] [_log()] Compression: none
2025-09-29T14:12:51.138 [DEBUG] [Thread-158284] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:51.154 [DEBUG] [Thread-158284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:51.155 [DEBUG] [Thread-158284] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:51.155 [DEBUG] [Thread-158284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:12:51.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:12:51.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:51.157 [DEBUG] [Thread-158284] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:51.157 [DEBUG] [Thread-158284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:51.157 [DEBUG] [Thread-158284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:51.158 [DEBUG] [Thread-158284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:12:51.158 [DEBUG] [Thread-158284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:51.181 [INFO] [Thread-158284] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:51.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:51.909 [DEBUG] [Thread-158284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:51.909 [DEBUG] [Thread-158284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:51.909 [DEBUG] [Thread-158284] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:12:51.949 [DEBUG] [Thread-158284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:51.949 [DEBUG] [Thread-158284] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:51.952 [DEBUG] [Thread-158284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:51.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:51.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:12:51.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:12:51.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:12:51.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:51.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:12:51.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:51.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:51.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:12:51.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.508402 -999.00  +15.10   5.64     41   +2.10 1 1 1 1 1   888    0 15.01 77.21 ----- 4.8 5.6 163.2 9.4 24.7 -28.2 23.9 -28.1 25.2 -28.2 26.4 -27.8
2025-09-29T14:12:51.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:12:51.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:12:51.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.508402
2025-09-29T14:12:51.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:12:51.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:12:51.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:12:51.975 [DEBUG] [Thread-158284] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:12:51.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:12:51.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:12:51.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:12:44', tmtdew=14.02, humidity=38.17, cloud=0.0, wind=4.06, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:12:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:12:52.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:12:52.070 [DEBUG] [Thread-158287] [transport.py] [_log()] starting thread (client mode): 0x2b9dcc40
2025-09-29T14:12:52.070 [DEBUG] [Thread-158287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:12:52.085 [DEBUG] [Thread-158287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:12:52.085 [INFO] [Thread-158287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:12:52.093 [DEBUG] [Thread-158287] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:12:52.093 [DEBUG] [Thread-158287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:12:52.093 [DEBUG] [Thread-158287] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:12:52.093 [DEBUG] [Thread-158287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:52.093 [DEBUG] [Thread-158287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:12:52.093 [DEBUG] [Thread-158287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] client lang: <none>
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] server lang: <none>
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] kex follows: False
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] Compression: none
2025-09-29T14:12:52.094 [DEBUG] [Thread-158287] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:12:52.150 [DEBUG] [Thread-158287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:12:52.151 [DEBUG] [Thread-158287] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:12:52.151 [DEBUG] [Thread-158287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:12:52.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:12:52.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:12:52.207 [DEBUG] [Thread-158287] [transport.py] [_log()] userauth is OK
2025-09-29T14:12:52.207 [DEBUG] [Thread-158287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:12:52.207 [DEBUG] [Thread-158287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:12:52.207 [DEBUG] [Thread-158287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:12:52.207 [DEBUG] [Thread-158287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:12:52.227 [INFO] [Thread-158287] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:12:52.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:12:52.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:12:53.285 [DEBUG] [Thread-158287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:12:53.285 [DEBUG] [Thread-158287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:12:53.333 [DEBUG] [Thread-158287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:12:53.333 [DEBUG] [Thread-158287] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:12:53.340 [DEBUG] [Thread-158287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:12:53.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:12:53.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:12:53.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:12:53.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:12:53.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:12:53.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:12:53.371 [DEBUG] [Thread-158287] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:00.274 [DEBUG] [Thread-158289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:13:02.376 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:13:02.377 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:13:03.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:13:03.373 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:13:03.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:13:03.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 12, 44), 14.02, 38.17, 0.0, 4.06, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:13:03.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:12:44
2025-09-29T14:13:04.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:13:04.226 [DEBUG] [Thread-158290] [transport.py] [_log()] starting thread (client mode): 0x2e3de110
2025-09-29T14:13:04.226 [DEBUG] [Thread-158290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:04.240 [DEBUG] [Thread-158290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:13:04.240 [INFO] [Thread-158290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] Compression: none
2025-09-29T14:13:04.244 [DEBUG] [Thread-158290] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:04.256 [DEBUG] [Thread-158290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:04.256 [DEBUG] [Thread-158290] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:04.256 [DEBUG] [Thread-158290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:13:04.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:13:04.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:04.257 [DEBUG] [Thread-158290] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:04.257 [DEBUG] [Thread-158290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:04.257 [DEBUG] [Thread-158290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:04.257 [DEBUG] [Thread-158290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:13:04.257 [DEBUG] [Thread-158290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:04.271 [INFO] [Thread-158290] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:04.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:04.839 [DEBUG] [Thread-158290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:04.839 [DEBUG] [Thread-158290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:04.840 [DEBUG] [Thread-158290] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:13:04.880 [DEBUG] [Thread-158290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:04.880 [DEBUG] [Thread-158290] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:04.881 [DEBUG] [Thread-158290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:04.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:04.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:13:04.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:13:04.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:13:04.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:04.903 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:13:04.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:04.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:04.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:13:04.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.508749 -999.00  +15.10   3.95     41   +2.10 1 1 1 1 1   888    0 15.19 79.49 ----- 3.9 4.0 189.9 5.5 24.9 -27.9 23.9 -28.5 25.4 -28.4 26.6 -29.3
2025-09-29T14:13:04.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:13:04.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:13:04.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.508749
2025-09-29T14:13:04.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:13:04.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:13:04.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:13:04.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:13:04.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:13:04.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:12:44', tmtdew=14.02, humidity=38.17, cloud=0.0, wind=4.06, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:12:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:13:04.904 [DEBUG] [Thread-158290] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:04.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:13:04.991 [DEBUG] [Thread-158293] [transport.py] [_log()] starting thread (client mode): 0x2b9dd2d0
2025-09-29T14:13:04.991 [DEBUG] [Thread-158293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:05.006 [DEBUG] [Thread-158293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:13:05.006 [INFO] [Thread-158293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:05.014 [DEBUG] [Thread-158293] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:05.015 [DEBUG] [Thread-158293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:05.015 [DEBUG] [Thread-158293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:05.015 [DEBUG] [Thread-158293] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:05.015 [DEBUG] [Thread-158293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:05.015 [DEBUG] [Thread-158293] [transport.py] [_log()] Compression: none
2025-09-29T14:13:05.015 [DEBUG] [Thread-158293] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:05.070 [DEBUG] [Thread-158293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:05.071 [DEBUG] [Thread-158293] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:05.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:13:05.072 [DEBUG] [Thread-158293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:13:05.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:05.127 [DEBUG] [Thread-158293] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:05.127 [DEBUG] [Thread-158293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:05.127 [DEBUG] [Thread-158293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:05.127 [DEBUG] [Thread-158293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:13:05.127 [DEBUG] [Thread-158293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:05.146 [INFO] [Thread-158293] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:05.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:13:05.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:06.146 [DEBUG] [Thread-158293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:06.146 [DEBUG] [Thread-158293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:06.194 [DEBUG] [Thread-158293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:06.194 [DEBUG] [Thread-158293] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:06.203 [DEBUG] [Thread-158293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:06.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:06.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:13:06.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:13:06.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:06.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:06.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:06.238 [DEBUG] [Thread-158293] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:15.315 [DEBUG] [Thread-158295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:13:16.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:13:16.241 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:13:16.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:13:16.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 12, 44), 14.02, 38.17, 0.0, 4.06, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:13:16.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:12:44
2025-09-29T14:13:16.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:13:17.080 [DEBUG] [Thread-158296] [transport.py] [_log()] starting thread (client mode): 0x2e360880
2025-09-29T14:13:17.080 [DEBUG] [Thread-158296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:17.100 [DEBUG] [Thread-158296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:13:17.100 [INFO] [Thread-158296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:17.103 [DEBUG] [Thread-158296] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:17.104 [DEBUG] [Thread-158296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:17.104 [DEBUG] [Thread-158296] [transport.py] [_log()] Compression: none
2025-09-29T14:13:17.104 [DEBUG] [Thread-158296] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:17.119 [DEBUG] [Thread-158296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:17.120 [DEBUG] [Thread-158296] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:17.120 [DEBUG] [Thread-158296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:13:17.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:13:17.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:17.121 [DEBUG] [Thread-158296] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:17.121 [DEBUG] [Thread-158296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:17.121 [DEBUG] [Thread-158296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:17.121 [DEBUG] [Thread-158296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:13:17.121 [DEBUG] [Thread-158296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:17.133 [INFO] [Thread-158296] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:17.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:17.872 [DEBUG] [Thread-158296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:17.872 [DEBUG] [Thread-158296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:17.872 [DEBUG] [Thread-158296] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:13:17.913 [DEBUG] [Thread-158296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:17.913 [DEBUG] [Thread-158296] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:17.915 [DEBUG] [Thread-158296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:17.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:17.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:13:17.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:13:17.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:13:17.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:17.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:13:17.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.508749 -999.00  +15.10   3.95     41   +2.10 1 1 1 1 1   888    0 15.19 79.49 ----- 3.9 4.0 189.9 5.5 24.9 -27.9 23.9 -28.5 25.4 -28.4 26.6 -29.3
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.508749
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:13:17.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:12:44', tmtdew=14.02, humidity=38.17, cloud=0.0, wind=4.06, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:12:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:13:17.935 [DEBUG] [Thread-158296] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:18.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:13:18.018 [DEBUG] [Thread-158299] [transport.py] [_log()] starting thread (client mode): 0x2e360e80
2025-09-29T14:13:18.018 [DEBUG] [Thread-158299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:18.036 [DEBUG] [Thread-158299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:13:18.036 [INFO] [Thread-158299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:18.043 [DEBUG] [Thread-158299] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] Compression: none
2025-09-29T14:13:18.044 [DEBUG] [Thread-158299] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:18.104 [DEBUG] [Thread-158299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:18.104 [DEBUG] [Thread-158299] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:18.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:13:18.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:18.104 [DEBUG] [Thread-158299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:13:18.167 [DEBUG] [Thread-158299] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:18.167 [DEBUG] [Thread-158299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:18.167 [DEBUG] [Thread-158299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:18.167 [DEBUG] [Thread-158299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:13:18.167 [DEBUG] [Thread-158299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:18.185 [INFO] [Thread-158299] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:18.185 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:13:18.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:19.139 [DEBUG] [Thread-158299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:19.139 [DEBUG] [Thread-158299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:19.187 [DEBUG] [Thread-158299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:19.187 [DEBUG] [Thread-158299] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:19.196 [DEBUG] [Thread-158299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:19.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:19.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:13:19.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:13:19.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:19.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:19.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:19.234 [DEBUG] [Thread-158299] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:29.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:13:29.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:13:29.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:13:29.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 13, 16), 14.11, 37.96, 0.0, 4.02, 14.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:13:29.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:13:16
2025-09-29T14:13:29.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:13:30.059 [DEBUG] [Thread-158301] [transport.py] [_log()] starting thread (client mode): 0x2e361570
2025-09-29T14:13:30.059 [DEBUG] [Thread-158301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:30.080 [DEBUG] [Thread-158301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:13:30.080 [INFO] [Thread-158301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:13:30.083 [DEBUG] [Thread-158301] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:30.083 [DEBUG] [Thread-158301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:13:30.083 [DEBUG] [Thread-158301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:30.083 [DEBUG] [Thread-158301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:30.083 [DEBUG] [Thread-158301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:30.083 [DEBUG] [Thread-158301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:30.084 [DEBUG] [Thread-158301] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:30.085 [DEBUG] [Thread-158301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:30.085 [DEBUG] [Thread-158301] [transport.py] [_log()] Compression: none
2025-09-29T14:13:30.085 [DEBUG] [Thread-158301] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:30.104 [DEBUG] [Thread-158301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:30.104 [DEBUG] [Thread-158301] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:30.105 [DEBUG] [Thread-158301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:13:30.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:13:30.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:30.148 [DEBUG] [Thread-158301] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:30.149 [DEBUG] [Thread-158301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:30.149 [DEBUG] [Thread-158301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:30.149 [DEBUG] [Thread-158301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:13:30.149 [DEBUG] [Thread-158301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:30.169 [INFO] [Thread-158301] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:30.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:30.349 [DEBUG] [Thread-158303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:13:30.898 [DEBUG] [Thread-158301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:30.898 [DEBUG] [Thread-158301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:30.899 [DEBUG] [Thread-158301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:13:30.939 [DEBUG] [Thread-158301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:30.939 [DEBUG] [Thread-158301] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:30.942 [DEBUG] [Thread-158301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:30.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:30.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:13:30.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:13:30.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:13:30.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:30.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:13:30.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:30.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:30.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:13:30.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.508749 -999.00  +15.10   3.95     41   +2.10 1 1 1 1 1   888    0 15.19 79.49 ----- 3.9 4.0 189.9 5.5 24.9 -27.9 23.9 -28.5 25.4 -28.4 26.6 -29.3
2025-09-29T14:13:30.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:13:30.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:13:30.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.508749
2025-09-29T14:13:30.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:13:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:13:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:13:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:13:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:13:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:13:16', tmtdew=14.11, humidity=37.96, cloud=0.0, wind=4.02, temperature=14.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:12:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:13:30.967 [DEBUG] [Thread-158301] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:31.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:13:31.067 [DEBUG] [Thread-158305] [transport.py] [_log()] starting thread (client mode): 0x2e363ac0
2025-09-29T14:13:31.067 [DEBUG] [Thread-158305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:31.082 [DEBUG] [Thread-158305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:13:31.083 [INFO] [Thread-158305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] Compression: none
2025-09-29T14:13:31.090 [DEBUG] [Thread-158305] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:31.150 [DEBUG] [Thread-158305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:31.150 [DEBUG] [Thread-158305] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:31.151 [DEBUG] [Thread-158305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:13:31.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:13:31.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:31.210 [DEBUG] [Thread-158305] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:31.210 [DEBUG] [Thread-158305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:31.210 [DEBUG] [Thread-158305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:31.210 [DEBUG] [Thread-158305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:13:31.210 [DEBUG] [Thread-158305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:31.229 [INFO] [Thread-158305] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:31.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:13:31.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:32.259 [DEBUG] [Thread-158305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:32.259 [DEBUG] [Thread-158305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:32.307 [DEBUG] [Thread-158305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:32.307 [DEBUG] [Thread-158305] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:32.316 [DEBUG] [Thread-158305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:32.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:32.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:13:32.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:13:32.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:32.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:32.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:32.349 [DEBUG] [Thread-158305] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:42.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:13:42.352 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:13:42.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:13:42.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 13, 16), 14.11, 37.96, 0.0, 4.02, 14.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:13:42.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:13:16
2025-09-29T14:13:43.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:13:43.191 [DEBUG] [Thread-158307] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-29T14:13:43.191 [DEBUG] [Thread-158307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:43.210 [DEBUG] [Thread-158307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:13:43.210 [INFO] [Thread-158307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:13:43.214 [DEBUG] [Thread-158307] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:43.214 [DEBUG] [Thread-158307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:13:43.214 [DEBUG] [Thread-158307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:43.214 [DEBUG] [Thread-158307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:43.214 [DEBUG] [Thread-158307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:43.214 [DEBUG] [Thread-158307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:43.214 [DEBUG] [Thread-158307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:43.214 [DEBUG] [Thread-158307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] Compression: none
2025-09-29T14:13:43.215 [DEBUG] [Thread-158307] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:43.235 [DEBUG] [Thread-158307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:43.236 [DEBUG] [Thread-158307] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:43.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:13:43.236 [DEBUG] [Thread-158307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:13:43.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:43.238 [DEBUG] [Thread-158307] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:43.239 [DEBUG] [Thread-158307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:43.239 [DEBUG] [Thread-158307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:43.239 [DEBUG] [Thread-158307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:13:43.239 [DEBUG] [Thread-158307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:43.274 [INFO] [Thread-158307] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:43.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:43.841 [DEBUG] [Thread-158307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:43.842 [DEBUG] [Thread-158307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:43.842 [DEBUG] [Thread-158307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:13:43.882 [DEBUG] [Thread-158307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:43.882 [DEBUG] [Thread-158307] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:43.885 [DEBUG] [Thread-158307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:43.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:43.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:13:43.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:13:43.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:13:43.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:43.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:13:43.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:43.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:43.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:13:43.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.509096 -999.00  +15.20   4.66     41   +2.20 1 1 1 1 1   888    0 14.94 76.99 ----- 3.5 4.7 172.6 6.3 25.1 -27.9 24.1 -29.0 25.6 -27.7 26.9 -29.1
2025-09-29T14:13:43.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:13:43.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:13:43.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.509096
2025-09-29T14:13:43.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:13:43.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:13:43.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:13:43.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:13:43.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:13:43.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:13:16', tmtdew=14.11, humidity=37.96, cloud=0.0, wind=4.02, temperature=14.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:13:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:13:43.911 [DEBUG] [Thread-158307] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:43.996 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:13:44.008 [DEBUG] [Thread-158310] [transport.py] [_log()] starting thread (client mode): 0x2b9dda80
2025-09-29T14:13:44.008 [DEBUG] [Thread-158310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:44.022 [DEBUG] [Thread-158310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:13:44.022 [INFO] [Thread-158310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:44.030 [DEBUG] [Thread-158310] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:44.031 [DEBUG] [Thread-158310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:44.031 [DEBUG] [Thread-158310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:44.031 [DEBUG] [Thread-158310] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:44.031 [DEBUG] [Thread-158310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:44.031 [DEBUG] [Thread-158310] [transport.py] [_log()] Compression: none
2025-09-29T14:13:44.031 [DEBUG] [Thread-158310] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:44.085 [DEBUG] [Thread-158310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:44.085 [DEBUG] [Thread-158310] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:44.085 [DEBUG] [Thread-158310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:13:44.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:13:44.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:44.100 [DEBUG] [Thread-158312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:13:44.143 [DEBUG] [Thread-158310] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:44.143 [DEBUG] [Thread-158310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:44.143 [DEBUG] [Thread-158310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:44.143 [DEBUG] [Thread-158310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:13:44.143 [DEBUG] [Thread-158310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:44.164 [INFO] [Thread-158310] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:44.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:13:44.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:45.157 [DEBUG] [Thread-158310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:45.157 [DEBUG] [Thread-158310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:45.205 [DEBUG] [Thread-158310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:45.205 [DEBUG] [Thread-158310] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:45.214 [DEBUG] [Thread-158310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:45.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:45.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:13:45.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:13:45.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:45.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:45.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:45.247 [DEBUG] [Thread-158310] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:45.375 [DEBUG] [Thread-158313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:13:55.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:13:55.250 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:13:55.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:13:55.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 13, 48), 14.27, 37.71, 0.0, 6.19, 14.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:13:55.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:13:48
2025-09-29T14:13:55.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:13:56.089 [DEBUG] [Thread-158314] [transport.py] [_log()] starting thread (client mode): 0x2e361c60
2025-09-29T14:13:56.089 [DEBUG] [Thread-158314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:56.110 [DEBUG] [Thread-158314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:13:56.111 [INFO] [Thread-158314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:13:56.112 [DEBUG] [Thread-158314] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:56.113 [DEBUG] [Thread-158314] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:56.114 [DEBUG] [Thread-158314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:56.114 [DEBUG] [Thread-158314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:56.114 [DEBUG] [Thread-158314] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:56.114 [DEBUG] [Thread-158314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:56.114 [DEBUG] [Thread-158314] [transport.py] [_log()] Compression: none
2025-09-29T14:13:56.114 [DEBUG] [Thread-158314] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:56.126 [DEBUG] [Thread-158314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:56.127 [DEBUG] [Thread-158314] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:56.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:13:56.128 [DEBUG] [Thread-158314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:13:56.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:56.130 [DEBUG] [Thread-158314] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:56.130 [DEBUG] [Thread-158314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:56.130 [DEBUG] [Thread-158314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:56.130 [DEBUG] [Thread-158314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:13:56.130 [DEBUG] [Thread-158314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:56.148 [INFO] [Thread-158314] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:56.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:56.871 [DEBUG] [Thread-158314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:56.871 [DEBUG] [Thread-158314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:56.872 [DEBUG] [Thread-158314] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:13:56.912 [DEBUG] [Thread-158314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:56.913 [DEBUG] [Thread-158314] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:56.916 [DEBUG] [Thread-158314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:56.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:56.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:13:56.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:13:56.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:13:56.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:56.936 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:13:56.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:56.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:56.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:13:56.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.509096 -999.00  +15.20   4.66     41   +2.20 1 1 1 1 1   888    0 14.94 76.99 ----- 3.5 4.7 172.6 6.3 25.1 -27.9 24.1 -29.0 25.6 -27.7 26.9 -29.1
2025-09-29T14:13:56.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:13:56.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:13:56.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.509096
2025-09-29T14:13:56.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:13:56.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:13:56.938 [DEBUG] [Thread-158314] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:13:56.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:13:56.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:13:56.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:13:56.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:13:48', tmtdew=14.27, humidity=37.71, cloud=0.0, wind=6.19, temperature=14.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:13:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:13:57.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:13:57.032 [DEBUG] [Thread-158317] [transport.py] [_log()] starting thread (client mode): 0x2e3635b0
2025-09-29T14:13:57.032 [DEBUG] [Thread-158317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:13:57.047 [DEBUG] [Thread-158317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:13:57.047 [INFO] [Thread-158317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] client lang: <none>
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] server lang: <none>
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] kex follows: False
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] Compression: none
2025-09-29T14:13:57.055 [DEBUG] [Thread-158317] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:13:57.115 [DEBUG] [Thread-158317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:13:57.115 [DEBUG] [Thread-158317] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:13:57.116 [DEBUG] [Thread-158317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:13:57.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:13:57.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:13:57.171 [DEBUG] [Thread-158317] [transport.py] [_log()] userauth is OK
2025-09-29T14:13:57.171 [DEBUG] [Thread-158317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:13:57.171 [DEBUG] [Thread-158317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:13:57.171 [DEBUG] [Thread-158317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:13:57.172 [DEBUG] [Thread-158317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:13:57.191 [INFO] [Thread-158317] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:13:57.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:13:57.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:13:58.254 [DEBUG] [Thread-158317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:13:58.254 [DEBUG] [Thread-158317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:13:58.302 [DEBUG] [Thread-158317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:13:58.302 [DEBUG] [Thread-158317] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:13:58.311 [DEBUG] [Thread-158317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:13:58.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:13:58.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:13:58.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:13:58.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:13:58.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:13:58.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:13:58.346 [DEBUG] [Thread-158317] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:14:00.422 [DEBUG] [Thread-158319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:14:02.515 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:14:02.516 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:14:08.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:14:08.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:14:08.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:14:08.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 13, 48), 14.27, 37.71, 0.0, 6.19, 14.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:14:08.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:13:48
2025-09-29T14:14:09.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:14:09.206 [DEBUG] [Thread-158320] [transport.py] [_log()] starting thread (client mode): 0x2e361b40
2025-09-29T14:14:09.206 [DEBUG] [Thread-158320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:14:09.222 [DEBUG] [Thread-158320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:14:09.222 [INFO] [Thread-158320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] client lang: <none>
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] server lang: <none>
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] kex follows: False
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] Compression: none
2025-09-29T14:14:09.224 [DEBUG] [Thread-158320] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:14:09.235 [DEBUG] [Thread-158320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:14:09.235 [DEBUG] [Thread-158320] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:14:09.236 [DEBUG] [Thread-158320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:14:09.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:14:09.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:14:09.237 [DEBUG] [Thread-158320] [transport.py] [_log()] userauth is OK
2025-09-29T14:14:09.237 [DEBUG] [Thread-158320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:14:09.237 [DEBUG] [Thread-158320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:14:09.237 [DEBUG] [Thread-158320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:14:09.238 [DEBUG] [Thread-158320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:14:09.255 [INFO] [Thread-158320] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:14:09.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:14:09.868 [DEBUG] [Thread-158320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:14:09.869 [DEBUG] [Thread-158320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:14:09.869 [DEBUG] [Thread-158320] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:14:09.909 [DEBUG] [Thread-158320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:14:09.909 [DEBUG] [Thread-158320] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:14:09.911 [DEBUG] [Thread-158320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:14:09.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:14:09.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:14:09.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:14:09.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:14:09.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:14:09.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:14:09.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:14:09.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:14:09.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:14:09.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.509443 -999.00  +15.30   4.61     41   +2.20 1 1 1 1 1   888    0 15.06 77.87 ----- 6.8 4.6 43.4 5.2 25.2 -28.1 24.2 -28.6 25.6 -28.2 27.1 -28.2
2025-09-29T14:14:09.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:14:09.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:14:09.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.509443
2025-09-29T14:14:09.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:14:09.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:14:09.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:14:09.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:14:09.929 [DEBUG] [Thread-158320] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:14:09.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:14:09.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:13:48', tmtdew=14.27, humidity=37.71, cloud=0.0, wind=6.19, temperature=14.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:13:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:14:10.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:14:10.026 [DEBUG] [Thread-158323] [transport.py] [_log()] starting thread (client mode): 0x2b96f6a0
2025-09-29T14:14:10.026 [DEBUG] [Thread-158323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:14:10.040 [DEBUG] [Thread-158323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:14:10.040 [INFO] [Thread-158323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] client lang: <none>
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] server lang: <none>
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] kex follows: False
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:14:10.048 [DEBUG] [Thread-158323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:14:10.049 [DEBUG] [Thread-158323] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:14:10.049 [DEBUG] [Thread-158323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:14:10.049 [DEBUG] [Thread-158323] [transport.py] [_log()] Compression: none
2025-09-29T14:14:10.049 [DEBUG] [Thread-158323] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:14:10.106 [DEBUG] [Thread-158323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:14:10.107 [DEBUG] [Thread-158323] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:14:10.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:14:10.107 [DEBUG] [Thread-158323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:14:10.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:14:10.163 [DEBUG] [Thread-158323] [transport.py] [_log()] userauth is OK
2025-09-29T14:14:10.163 [DEBUG] [Thread-158323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:14:10.163 [DEBUG] [Thread-158323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:14:10.163 [DEBUG] [Thread-158323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:14:10.163 [DEBUG] [Thread-158323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:14:10.182 [INFO] [Thread-158323] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:14:10.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:14:10.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:14:11.174 [DEBUG] [Thread-158323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:14:11.174 [DEBUG] [Thread-158323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:14:11.222 [DEBUG] [Thread-158323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:14:11.222 [DEBUG] [Thread-158323] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:14:11.231 [DEBUG] [Thread-158323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:14:11.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:14:11.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:14:11.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:14:11.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:14:11.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:14:11.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:14:11.273 [DEBUG] [Thread-158323] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:14:15.474 [DEBUG] [Thread-158325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:14:21.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:14:21.275 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:14:21.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:14:21.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 13, 48), 14.27, 37.71, 0.0, 6.19, 14.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:14:21.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:13:48
2025-09-29T14:14:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:14:22.148 [DEBUG] [Thread-158326] [transport.py] [_log()] starting thread (client mode): 0x2e361240
2025-09-29T14:14:22.148 [DEBUG] [Thread-158326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:14:22.170 [DEBUG] [Thread-158326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:14:22.170 [INFO] [Thread-158326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] client lang: <none>
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] server lang: <none>
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] kex follows: False
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] Compression: none
2025-09-29T14:14:22.174 [DEBUG] [Thread-158326] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:14:22.189 [DEBUG] [Thread-158326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:14:22.189 [DEBUG] [Thread-158326] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:14:22.189 [DEBUG] [Thread-158326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:14:22.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:14:22.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:14:22.190 [DEBUG] [Thread-158326] [transport.py] [_log()] userauth is OK
2025-09-29T14:14:22.190 [DEBUG] [Thread-158326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:14:22.190 [DEBUG] [Thread-158326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:14:22.190 [DEBUG] [Thread-158326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:14:22.190 [DEBUG] [Thread-158326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:14:22.209 [INFO] [Thread-158326] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:14:22.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:14:22.958 [DEBUG] [Thread-158326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:14:22.959 [DEBUG] [Thread-158326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:14:22.959 [DEBUG] [Thread-158326] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:14:22.999 [DEBUG] [Thread-158326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:14:22.999 [DEBUG] [Thread-158326] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:14:23.002 [DEBUG] [Thread-158326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:14:23.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:14:23.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:14:23.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:14:23.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:14:23.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:14:23.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:14:23.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:14:23.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:14:23.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:14:23.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.509443 -999.00  +15.30   4.61     41   +2.20 1 1 1 1 1   888    0 15.06 77.87 ----- 6.8 4.6 43.4 5.2 25.2 -28.1 24.2 -28.6 25.6 -28.2 27.1 -28.2
2025-09-29T14:14:23.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:14:23.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:14:23.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.509443
2025-09-29T14:14:23.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:14:23.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:14:23.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:14:23.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:14:23.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:14:23.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:13:48', tmtdew=14.27, humidity=37.71, cloud=0.0, wind=6.19, temperature=14.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:13:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:14:23.030 [DEBUG] [Thread-158326] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:14:23.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:14:23.133 [DEBUG] [Thread-158329] [transport.py] [_log()] starting thread (client mode): 0x2e360e80
2025-09-29T14:14:23.133 [DEBUG] [Thread-158329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:14:23.148 [DEBUG] [Thread-158329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:14:23.148 [INFO] [Thread-158329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:14:23.155 [DEBUG] [Thread-158329] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:14:23.155 [DEBUG] [Thread-158329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:14:23.155 [DEBUG] [Thread-158329] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:14:23.155 [DEBUG] [Thread-158329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] client lang: <none>
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] server lang: <none>
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] kex follows: False
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] Compression: none
2025-09-29T14:14:23.156 [DEBUG] [Thread-158329] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:14:23.215 [DEBUG] [Thread-158329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:14:23.216 [DEBUG] [Thread-158329] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:14:23.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:14:23.217 [DEBUG] [Thread-158329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:14:23.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:14:23.271 [DEBUG] [Thread-158329] [transport.py] [_log()] userauth is OK
2025-09-29T14:14:23.271 [DEBUG] [Thread-158329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:14:23.272 [DEBUG] [Thread-158329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:14:23.272 [DEBUG] [Thread-158329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:14:23.272 [DEBUG] [Thread-158329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:14:23.291 [INFO] [Thread-158329] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:14:23.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:14:23.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:14:24.320 [DEBUG] [Thread-158329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:14:24.320 [DEBUG] [Thread-158329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:14:24.367 [DEBUG] [Thread-158329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:14:24.367 [DEBUG] [Thread-158329] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:14:24.376 [DEBUG] [Thread-158329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:14:24.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:14:24.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:14:24.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:14:24.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:14:24.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:14:24.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:14:24.410 [DEBUG] [Thread-158329] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:14:30.521 [DEBUG] [Thread-158331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:14:34.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:14:34.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:14:34.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:14:34.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 14, 20), 14.27, 37.71, 0.0, 5.7, 14.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:14:34.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:14:20
2025-09-29T14:14:35.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:14:35.251 [DEBUG] [Thread-158332] [transport.py] [_log()] starting thread (client mode): 0x2b9568c0
2025-09-29T14:14:35.251 [DEBUG] [Thread-158332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:14:35.273 [DEBUG] [Thread-158332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:14:35.273 [INFO] [Thread-158332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:14:35.276 [DEBUG] [Thread-158332] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:14:35.276 [DEBUG] [Thread-158332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:14:35.276 [DEBUG] [Thread-158332] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:14:35.276 [DEBUG] [Thread-158332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:35.276 [DEBUG] [Thread-158332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:35.276 [DEBUG] [Thread-158332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] client lang: <none>
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] server lang: <none>
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] kex follows: False
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:14:35.277 [DEBUG] [Thread-158332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:14:35.278 [DEBUG] [Thread-158332] [transport.py] [_log()] Compression: none
2025-09-29T14:14:35.278 [DEBUG] [Thread-158332] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:14:35.297 [DEBUG] [Thread-158332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:14:35.298 [DEBUG] [Thread-158332] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:14:35.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:14:35.299 [DEBUG] [Thread-158332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:14:35.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:14:35.301 [DEBUG] [Thread-158332] [transport.py] [_log()] userauth is OK
2025-09-29T14:14:35.302 [DEBUG] [Thread-158332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:14:35.302 [DEBUG] [Thread-158332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:14:35.302 [DEBUG] [Thread-158332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:14:35.302 [DEBUG] [Thread-158332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:14:35.322 [INFO] [Thread-158332] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:14:35.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:14:36.024 [DEBUG] [Thread-158332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:14:36.024 [DEBUG] [Thread-158332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:14:36.024 [DEBUG] [Thread-158332] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:14:36.065 [DEBUG] [Thread-158332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:14:36.065 [DEBUG] [Thread-158332] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:14:36.068 [DEBUG] [Thread-158332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:14:36.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:14:36.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:14:36.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:14:36.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:14:36.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:14:36.095 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:14:36.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:14:36.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:14:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:14:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.509443 -999.00  +15.30   4.61     41   +2.20 1 1 1 1 1   888    0 15.06 77.87 ----- 6.8 4.6 43.4 5.2 25.2 -28.1 24.2 -28.6 25.6 -28.2 27.1 -28.2
2025-09-29T14:14:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:14:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:14:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.509443
2025-09-29T14:14:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:14:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:14:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:14:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:14:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:14:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:14:20', tmtdew=14.27, humidity=37.71, cloud=0.0, wind=5.7, temperature=14.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:13:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:14:36.098 [DEBUG] [Thread-158332] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:14:36.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:14:36.192 [DEBUG] [Thread-158335] [transport.py] [_log()] starting thread (client mode): 0x2b955bd0
2025-09-29T14:14:36.192 [DEBUG] [Thread-158335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:14:36.206 [DEBUG] [Thread-158335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:14:36.206 [INFO] [Thread-158335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:14:36.214 [DEBUG] [Thread-158335] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:14:36.214 [DEBUG] [Thread-158335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:14:36.214 [DEBUG] [Thread-158335] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:14:36.215 [DEBUG] [Thread-158335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:36.215 [DEBUG] [Thread-158335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:36.215 [DEBUG] [Thread-158335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:36.215 [DEBUG] [Thread-158335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:36.215 [DEBUG] [Thread-158335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] client lang: <none>
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] server lang: <none>
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] kex follows: False
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] Compression: none
2025-09-29T14:14:36.216 [DEBUG] [Thread-158335] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:14:36.270 [DEBUG] [Thread-158335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:14:36.271 [DEBUG] [Thread-158335] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:14:36.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:14:36.271 [DEBUG] [Thread-158335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:14:36.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:14:36.327 [DEBUG] [Thread-158335] [transport.py] [_log()] userauth is OK
2025-09-29T14:14:36.327 [DEBUG] [Thread-158335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:14:36.327 [DEBUG] [Thread-158335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:14:36.327 [DEBUG] [Thread-158335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:14:36.327 [DEBUG] [Thread-158335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:14:36.345 [INFO] [Thread-158335] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:14:36.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:14:36.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:14:37.348 [DEBUG] [Thread-158335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:14:37.348 [DEBUG] [Thread-158335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:14:37.396 [DEBUG] [Thread-158335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:14:37.396 [DEBUG] [Thread-158335] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:14:37.405 [DEBUG] [Thread-158335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:14:37.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:14:37.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:14:37.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:14:37.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:14:37.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:14:37.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:14:37.439 [DEBUG] [Thread-158335] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:14:44.133 [DEBUG] [Thread-158337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:14:45.553 [DEBUG] [Thread-158338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:14:47.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:14:47.439 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:14:47.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:14:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 14, 20), 14.27, 37.71, 0.0, 5.7, 14.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:14:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:14:20
2025-09-29T14:14:48.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:14:48.262 [DEBUG] [Thread-158339] [transport.py] [_log()] starting thread (client mode): 0x2b9566e0
2025-09-29T14:14:48.262 [DEBUG] [Thread-158339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:14:48.282 [DEBUG] [Thread-158339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:14:48.282 [INFO] [Thread-158339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:14:48.285 [DEBUG] [Thread-158339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:14:48.285 [DEBUG] [Thread-158339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] client lang: <none>
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] server lang: <none>
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] kex follows: False
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:14:48.286 [DEBUG] [Thread-158339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:14:48.287 [DEBUG] [Thread-158339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:14:48.287 [DEBUG] [Thread-158339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:14:48.287 [DEBUG] [Thread-158339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:14:48.287 [DEBUG] [Thread-158339] [transport.py] [_log()] Compression: none
2025-09-29T14:14:48.287 [DEBUG] [Thread-158339] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:14:48.304 [DEBUG] [Thread-158339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:14:48.304 [DEBUG] [Thread-158339] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:14:48.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:14:48.305 [DEBUG] [Thread-158339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:14:48.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:14:48.307 [DEBUG] [Thread-158339] [transport.py] [_log()] userauth is OK
2025-09-29T14:14:48.307 [DEBUG] [Thread-158339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:14:48.307 [DEBUG] [Thread-158339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:14:48.307 [DEBUG] [Thread-158339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:14:48.307 [DEBUG] [Thread-158339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:14:48.325 [INFO] [Thread-158339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:14:48.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:14:48.926 [DEBUG] [Thread-158339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:14:48.926 [DEBUG] [Thread-158339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:14:48.926 [DEBUG] [Thread-158339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:14:48.967 [DEBUG] [Thread-158339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:14:48.967 [DEBUG] [Thread-158339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:14:48.970 [DEBUG] [Thread-158339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:14:48.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:14:48.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:14:48.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:14:48.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:14:48.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:14:48.996 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:14:48.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:14:48.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:14:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:14:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.510138 -999.00  +15.20  15.15     42   +2.40 1 1 1 1 1   888    0 15.03 70.93 ----- 18.9 15.2 140.6 21.5 25.1 -29.7 24.4 -29.5 25.6 -29.6 26.9 -29.5
2025-09-29T14:14:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:14:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:14:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.510138
2025-09-29T14:14:48.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:14:48.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:14:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:14:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:14:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:14:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:14:20', tmtdew=14.27, humidity=37.71, cloud=0.0, wind=5.7, temperature=14.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:14:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:14:48.999 [DEBUG] [Thread-158339] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:14:49.085 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:14:49.094 [DEBUG] [Thread-158342] [transport.py] [_log()] starting thread (client mode): 0x2e362560
2025-09-29T14:14:49.094 [DEBUG] [Thread-158342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:14:49.109 [DEBUG] [Thread-158342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:14:49.109 [INFO] [Thread-158342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:14:49.116 [DEBUG] [Thread-158342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:14:49.116 [DEBUG] [Thread-158342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] client lang: <none>
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] server lang: <none>
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] kex follows: False
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:14:49.117 [DEBUG] [Thread-158342] [transport.py] [_log()] Compression: none
2025-09-29T14:14:49.118 [DEBUG] [Thread-158342] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:14:49.178 [DEBUG] [Thread-158342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:14:49.179 [DEBUG] [Thread-158342] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:14:49.180 [DEBUG] [Thread-158342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:14:49.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:14:49.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:14:49.235 [DEBUG] [Thread-158342] [transport.py] [_log()] userauth is OK
2025-09-29T14:14:49.235 [DEBUG] [Thread-158342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:14:49.235 [DEBUG] [Thread-158342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:14:49.235 [DEBUG] [Thread-158342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:14:49.235 [DEBUG] [Thread-158342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:14:49.255 [INFO] [Thread-158342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:14:49.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:14:49.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:14:50.262 [DEBUG] [Thread-158342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:14:50.262 [DEBUG] [Thread-158342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:14:50.310 [DEBUG] [Thread-158342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:14:50.310 [DEBUG] [Thread-158342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:14:50.320 [DEBUG] [Thread-158342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:14:50.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:14:50.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:14:50.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:14:50.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:14:50.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:14:50.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:14:50.359 [DEBUG] [Thread-158342] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:15:00.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:15:00.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:15:00.593 [DEBUG] [Thread-158344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:15:00.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 14, 52), 14.38, 37.66, 0.0, 10.7, 14.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:15:00.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:14:52
2025-09-29T14:15:01.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:15:01.199 [DEBUG] [Thread-158345] [transport.py] [_log()] starting thread (client mode): 0x2b957160
2025-09-29T14:15:01.199 [DEBUG] [Thread-158345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:01.221 [DEBUG] [Thread-158345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:15:01.221 [INFO] [Thread-158345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:15:01.224 [DEBUG] [Thread-158345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:01.224 [DEBUG] [Thread-158345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:15:01.224 [DEBUG] [Thread-158345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:01.224 [DEBUG] [Thread-158345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:01.224 [DEBUG] [Thread-158345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:01.224 [DEBUG] [Thread-158345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:01.224 [DEBUG] [Thread-158345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:01.224 [DEBUG] [Thread-158345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] Compression: none
2025-09-29T14:15:01.225 [DEBUG] [Thread-158345] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:01.235 [DEBUG] [Thread-158345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:01.235 [DEBUG] [Thread-158345] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:01.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:15:01.237 [DEBUG] [Thread-158345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:15:01.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:01.239 [DEBUG] [Thread-158345] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:01.239 [DEBUG] [Thread-158345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:01.239 [DEBUG] [Thread-158345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:01.239 [DEBUG] [Thread-158345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:15:01.239 [DEBUG] [Thread-158345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:01.276 [INFO] [Thread-158345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:01.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:02.024 [DEBUG] [Thread-158345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:02.024 [DEBUG] [Thread-158345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:02.024 [DEBUG] [Thread-158345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:15:02.065 [DEBUG] [Thread-158345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:02.065 [DEBUG] [Thread-158345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:02.066 [DEBUG] [Thread-158345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:02.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:02.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:15:02.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:15:02.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:15:02.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:02.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:15:02.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:02.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:02.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:15:02.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.510138 -999.00  +15.20  15.15     42   +2.40 1 1 1 1 1   888    0 15.03 70.93 ----- 18.9 15.2 140.6 21.5 25.1 -29.7 24.4 -29.5 25.6 -29.6 26.9 -29.5
2025-09-29T14:15:02.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:15:02.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:15:02.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.510138
2025-09-29T14:15:02.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:15:02.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:15:02.077 [DEBUG] [Thread-158345] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:02.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:15:02.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:15:02.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:15:02.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:14:52', tmtdew=14.38, humidity=37.66, cloud=0.0, wind=10.7, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:14:35.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:15:02.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:15:02.168 [DEBUG] [Thread-158348] [transport.py] [_log()] starting thread (client mode): 0x2b90d150
2025-09-29T14:15:02.168 [DEBUG] [Thread-158348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:02.183 [DEBUG] [Thread-158348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:15:02.183 [INFO] [Thread-158348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:02.190 [DEBUG] [Thread-158348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:02.191 [DEBUG] [Thread-158348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:02.191 [DEBUG] [Thread-158348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:02.191 [DEBUG] [Thread-158348] [transport.py] [_log()] Compression: none
2025-09-29T14:15:02.191 [DEBUG] [Thread-158348] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:02.245 [DEBUG] [Thread-158348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:02.245 [DEBUG] [Thread-158348] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:02.245 [DEBUG] [Thread-158348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:15:02.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:15:02.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:02.303 [DEBUG] [Thread-158348] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:02.303 [DEBUG] [Thread-158348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:02.303 [DEBUG] [Thread-158348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:02.303 [DEBUG] [Thread-158348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:15:02.303 [DEBUG] [Thread-158348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:02.317 [INFO] [Thread-158348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:02.317 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:15:02.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:02.654 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:15:02.655 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:15:03.316 [DEBUG] [Thread-158348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:03.316 [DEBUG] [Thread-158348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:03.364 [DEBUG] [Thread-158348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:03.364 [DEBUG] [Thread-158348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:03.372 [DEBUG] [Thread-158348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:03.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:03.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:15:03.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:15:03.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:03.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:03.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:03.405 [DEBUG] [Thread-158348] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:13.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:15:13.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:15:13.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:15:13.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 14, 52), 14.38, 37.66, 0.0, 10.7, 14.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:15:13.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:14:52
2025-09-29T14:15:14.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:15:14.215 [DEBUG] [Thread-158350] [transport.py] [_log()] starting thread (client mode): 0x2b90c5b0
2025-09-29T14:15:14.215 [DEBUG] [Thread-158350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:14.234 [DEBUG] [Thread-158350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:15:14.234 [INFO] [Thread-158350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:15:14.236 [DEBUG] [Thread-158350] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:14.236 [DEBUG] [Thread-158350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:15:14.236 [DEBUG] [Thread-158350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:14.236 [DEBUG] [Thread-158350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:14.236 [DEBUG] [Thread-158350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:14.236 [DEBUG] [Thread-158350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:14.236 [DEBUG] [Thread-158350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:14.236 [DEBUG] [Thread-158350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] Compression: none
2025-09-29T14:15:14.237 [DEBUG] [Thread-158350] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:14.250 [DEBUG] [Thread-158350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:14.250 [DEBUG] [Thread-158350] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:14.251 [DEBUG] [Thread-158350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:15:14.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:15:14.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:14.252 [DEBUG] [Thread-158350] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:14.252 [DEBUG] [Thread-158350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:14.252 [DEBUG] [Thread-158350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:14.252 [DEBUG] [Thread-158350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:15:14.252 [DEBUG] [Thread-158350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:14.271 [INFO] [Thread-158350] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:14.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:15.629 [DEBUG] [Thread-158352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:15:20.350 [DEBUG] [Thread-158350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:20.350 [DEBUG] [Thread-158350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:20.351 [DEBUG] [Thread-158350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:15:20.391 [DEBUG] [Thread-158350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:20.391 [DEBUG] [Thread-158350] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:20.394 [DEBUG] [Thread-158350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:20.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:20.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:15:20.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:15:20.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:15:20.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:20.428 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:15:20.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:20.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:20.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:15:20.430 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-09-29T14:15:20.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:14:52', tmtdew=14.38, humidity=37.66, cloud=0.0, wind=10.7, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:15:20.434 [DEBUG] [Thread-158350] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:20.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:15:20.515 [DEBUG] [Thread-158354] [transport.py] [_log()] starting thread (client mode): 0x2b957b80
2025-09-29T14:15:20.515 [DEBUG] [Thread-158354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:20.530 [DEBUG] [Thread-158354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:15:20.530 [INFO] [Thread-158354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:15:20.538 [DEBUG] [Thread-158354] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:20.538 [DEBUG] [Thread-158354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:15:20.538 [DEBUG] [Thread-158354] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:20.538 [DEBUG] [Thread-158354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:20.538 [DEBUG] [Thread-158354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] Compression: none
2025-09-29T14:15:20.539 [DEBUG] [Thread-158354] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:20.595 [DEBUG] [Thread-158354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:20.596 [DEBUG] [Thread-158354] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:20.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:15:20.597 [DEBUG] [Thread-158354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:15:20.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:20.651 [DEBUG] [Thread-158354] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:20.651 [DEBUG] [Thread-158354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:20.651 [DEBUG] [Thread-158354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:20.652 [DEBUG] [Thread-158354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:15:20.652 [DEBUG] [Thread-158354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:20.671 [INFO] [Thread-158354] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:20.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:15:20.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:21.660 [DEBUG] [Thread-158354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:21.660 [DEBUG] [Thread-158354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:21.708 [DEBUG] [Thread-158354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:21.708 [DEBUG] [Thread-158354] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:21.717 [DEBUG] [Thread-158354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:21.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:21.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:15:21.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:15:21.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:21.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:21.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:21.751 [DEBUG] [Thread-158354] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:30.673 [DEBUG] [Thread-158356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:15:31.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:15:31.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:15:31.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:15:32.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 15, 24), 14.29, 37.86, 0.0, 14.15, 14.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:15:32.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:15:24
2025-09-29T14:15:32.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:15:32.591 [DEBUG] [Thread-158357] [transport.py] [_log()] starting thread (client mode): 0x2e362aa0
2025-09-29T14:15:32.591 [DEBUG] [Thread-158357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:32.613 [DEBUG] [Thread-158357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:15:32.613 [INFO] [Thread-158357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:15:32.616 [DEBUG] [Thread-158357] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:32.616 [DEBUG] [Thread-158357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:15:32.616 [DEBUG] [Thread-158357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:32.616 [DEBUG] [Thread-158357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] Compression: none
2025-09-29T14:15:32.617 [DEBUG] [Thread-158357] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:32.633 [DEBUG] [Thread-158357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:32.633 [DEBUG] [Thread-158357] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:32.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:15:32.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:32.633 [DEBUG] [Thread-158357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:15:32.634 [DEBUG] [Thread-158357] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:32.634 [DEBUG] [Thread-158357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:32.634 [DEBUG] [Thread-158357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:32.634 [DEBUG] [Thread-158357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:15:32.634 [DEBUG] [Thread-158357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:32.650 [INFO] [Thread-158357] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:32.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:33.230 [DEBUG] [Thread-158357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:33.230 [DEBUG] [Thread-158357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:33.231 [DEBUG] [Thread-158357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:15:33.272 [DEBUG] [Thread-158357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:33.272 [DEBUG] [Thread-158357] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:33.273 [DEBUG] [Thread-158357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:33.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:33.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:15:33.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:15:33.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:15:33.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:33.287 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:15:33.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.510485 -999.00  +14.80  21.58     42   +2.00 1 1 1 1 1   888    0 14.71 65.43 ----- 19.8 21.6 146.0 27.2 24.8 -29.3 24.1 -29.5 25.6 -30.0 26.9 -30.8
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.510485
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:15:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:15:24', tmtdew=14.29, humidity=37.86, cloud=0.0, wind=14.15, temperature=14.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:15:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:15:33.288 [DEBUG] [Thread-158357] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:33.361 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:15:33.371 [DEBUG] [Thread-158360] [transport.py] [_log()] starting thread (client mode): 0x2e363070
2025-09-29T14:15:33.371 [DEBUG] [Thread-158360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:33.386 [DEBUG] [Thread-158360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:15:33.386 [INFO] [Thread-158360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] Compression: none
2025-09-29T14:15:33.394 [DEBUG] [Thread-158360] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:33.449 [DEBUG] [Thread-158360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:33.449 [DEBUG] [Thread-158360] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:33.449 [DEBUG] [Thread-158360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:15:33.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:15:33.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:33.506 [DEBUG] [Thread-158360] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:33.506 [DEBUG] [Thread-158360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:33.506 [DEBUG] [Thread-158360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:33.506 [DEBUG] [Thread-158360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:15:33.506 [DEBUG] [Thread-158360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:33.520 [INFO] [Thread-158360] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:33.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:15:33.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:34.501 [DEBUG] [Thread-158360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:34.502 [DEBUG] [Thread-158360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:34.550 [DEBUG] [Thread-158360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:34.550 [DEBUG] [Thread-158360] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:34.558 [DEBUG] [Thread-158360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:34.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:34.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:15:34.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:15:34.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:34.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:34.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:34.590 [DEBUG] [Thread-158360] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:44.165 [DEBUG] [Thread-158362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:15:44.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:15:44.592 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:15:44.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:15:45.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 15, 24), 14.29, 37.86, 0.0, 14.15, 14.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:15:45.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:15:24
2025-09-29T14:15:45.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:15:45.420 [DEBUG] [Thread-158363] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-29T14:15:45.420 [DEBUG] [Thread-158363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:45.441 [DEBUG] [Thread-158363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:15:45.441 [INFO] [Thread-158363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:45.443 [DEBUG] [Thread-158363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:45.444 [DEBUG] [Thread-158363] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:45.444 [DEBUG] [Thread-158363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:45.444 [DEBUG] [Thread-158363] [transport.py] [_log()] Compression: none
2025-09-29T14:15:45.444 [DEBUG] [Thread-158363] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:45.459 [DEBUG] [Thread-158363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:45.459 [DEBUG] [Thread-158363] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:45.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:15:45.460 [DEBUG] [Thread-158363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:15:45.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:45.462 [DEBUG] [Thread-158363] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:45.462 [DEBUG] [Thread-158363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:45.462 [DEBUG] [Thread-158363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:45.462 [DEBUG] [Thread-158363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:15:45.462 [DEBUG] [Thread-158363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:45.480 [INFO] [Thread-158363] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:45.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:45.707 [DEBUG] [Thread-158365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:15:46.259 [DEBUG] [Thread-158363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:46.259 [DEBUG] [Thread-158363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:46.259 [DEBUG] [Thread-158363] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:15:46.301 [DEBUG] [Thread-158363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:46.301 [DEBUG] [Thread-158363] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:46.304 [DEBUG] [Thread-158363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:46.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:46.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:15:46.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:15:46.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:15:46.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:46.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:15:46.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:46.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:15:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.510485 -999.00  +14.80  21.58     42   +2.00 1 1 1 1 1   888    0 14.71 65.43 ----- 19.8 21.6 146.0 27.2 24.8 -29.3 24.1 -29.5 25.6 -30.0 26.9 -30.8
2025-09-29T14:15:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:15:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:15:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.510485
2025-09-29T14:15:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:15:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:15:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:15:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:15:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:15:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:15:24', tmtdew=14.29, humidity=37.86, cloud=0.0, wind=14.15, temperature=14.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:15:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:15:46.322 [DEBUG] [Thread-158363] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:46.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:15:46.412 [DEBUG] [Thread-158367] [transport.py] [_log()] starting thread (client mode): 0x2e361630
2025-09-29T14:15:46.412 [DEBUG] [Thread-158367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:46.426 [DEBUG] [Thread-158367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:15:46.426 [INFO] [Thread-158367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] Compression: none
2025-09-29T14:15:46.434 [DEBUG] [Thread-158367] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:46.491 [DEBUG] [Thread-158367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:46.491 [DEBUG] [Thread-158367] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:46.492 [DEBUG] [Thread-158367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:15:46.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:15:46.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:46.547 [DEBUG] [Thread-158367] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:46.547 [DEBUG] [Thread-158367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:46.547 [DEBUG] [Thread-158367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:46.547 [DEBUG] [Thread-158367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:15:46.547 [DEBUG] [Thread-158367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:46.566 [INFO] [Thread-158367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:46.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:15:46.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:47.599 [DEBUG] [Thread-158367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:47.600 [DEBUG] [Thread-158367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:47.647 [DEBUG] [Thread-158367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:47.647 [DEBUG] [Thread-158367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:47.656 [DEBUG] [Thread-158367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:47.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:47.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:15:47.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:15:47.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:47.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:47.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:47.690 [DEBUG] [Thread-158367] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:57.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:15:57.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:15:57.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:15:58.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 15, 24), 14.29, 37.86, 0.0, 14.15, 14.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:15:58.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:15:24
2025-09-29T14:15:58.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:15:58.559 [DEBUG] [Thread-158369] [transport.py] [_log()] starting thread (client mode): 0x2e3618a0
2025-09-29T14:15:58.559 [DEBUG] [Thread-158369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:58.580 [DEBUG] [Thread-158369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:15:58.580 [INFO] [Thread-158369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:15:58.583 [DEBUG] [Thread-158369] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:58.583 [DEBUG] [Thread-158369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:15:58.583 [DEBUG] [Thread-158369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:58.583 [DEBUG] [Thread-158369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:58.584 [DEBUG] [Thread-158369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:58.585 [DEBUG] [Thread-158369] [transport.py] [_log()] Compression: none
2025-09-29T14:15:58.585 [DEBUG] [Thread-158369] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:58.603 [DEBUG] [Thread-158369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:58.604 [DEBUG] [Thread-158369] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:58.604 [DEBUG] [Thread-158369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:15:58.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:15:58.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:58.607 [DEBUG] [Thread-158369] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:58.607 [DEBUG] [Thread-158369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:58.607 [DEBUG] [Thread-158369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:58.607 [DEBUG] [Thread-158369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:15:58.607 [DEBUG] [Thread-158369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:58.625 [INFO] [Thread-158369] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:58.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:15:59.248 [DEBUG] [Thread-158369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:15:59.248 [DEBUG] [Thread-158369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:15:59.249 [DEBUG] [Thread-158369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:15:59.289 [DEBUG] [Thread-158369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:15:59.289 [DEBUG] [Thread-158369] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:15:59.292 [DEBUG] [Thread-158369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:15:59.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:15:59.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:15:59.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:15:59.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:15:59.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:15:59.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:15:59.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:15:59.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:15:59.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:15:59.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.510832 -999.00  +14.60  13.32     42   +2.00 1 1 1 1 1   888    0 14.50 61.24 ----- 9.1 13.3 118.4 20.2 24.8 -29.3 24.1 -28.9 25.4 -30.8 26.6 -31.9
2025-09-29T14:15:59.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:15:59.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:15:59.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.510832
2025-09-29T14:15:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:15:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:15:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:15:59.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:15:59.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:15:59.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:15:24', tmtdew=14.29, humidity=37.86, cloud=0.0, wind=14.15, temperature=14.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:15:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:15:59.315 [DEBUG] [Thread-158369] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:15:59.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:15:59.409 [DEBUG] [Thread-158372] [transport.py] [_log()] starting thread (client mode): 0x2b9b93f0
2025-09-29T14:15:59.409 [DEBUG] [Thread-158372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:15:59.424 [DEBUG] [Thread-158372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:15:59.424 [INFO] [Thread-158372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:15:59.431 [DEBUG] [Thread-158372] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:15:59.431 [DEBUG] [Thread-158372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:15:59.431 [DEBUG] [Thread-158372] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] client lang: <none>
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] server lang: <none>
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] kex follows: False
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:15:59.432 [DEBUG] [Thread-158372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:15:59.433 [DEBUG] [Thread-158372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:15:59.433 [DEBUG] [Thread-158372] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:15:59.433 [DEBUG] [Thread-158372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:15:59.433 [DEBUG] [Thread-158372] [transport.py] [_log()] Compression: none
2025-09-29T14:15:59.433 [DEBUG] [Thread-158372] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:15:59.491 [DEBUG] [Thread-158372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:15:59.491 [DEBUG] [Thread-158372] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:15:59.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:15:59.492 [DEBUG] [Thread-158372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:15:59.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:15:59.547 [DEBUG] [Thread-158372] [transport.py] [_log()] userauth is OK
2025-09-29T14:15:59.547 [DEBUG] [Thread-158372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:15:59.547 [DEBUG] [Thread-158372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:15:59.547 [DEBUG] [Thread-158372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:15:59.547 [DEBUG] [Thread-158372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:15:59.565 [INFO] [Thread-158372] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:15:59.566 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:15:59.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:00.562 [DEBUG] [Thread-158372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:00.562 [DEBUG] [Thread-158372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:00.610 [DEBUG] [Thread-158372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:00.610 [DEBUG] [Thread-158372] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:00.619 [DEBUG] [Thread-158372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:00.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:00.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:16:00.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:16:00.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:00.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:00.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:00.654 [DEBUG] [Thread-158372] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:16:00.759 [DEBUG] [Thread-158374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:16:02.794 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:16:02.796 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:16:10.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:16:10.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:16:10.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:16:11.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 15, 56), 14.13, 38.02, 0.0, 14.54, 14.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:16:11.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:15:56
2025-09-29T14:16:11.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:16:11.528 [DEBUG] [Thread-158375] [transport.py] [_log()] starting thread (client mode): 0x2e3df190
2025-09-29T14:16:11.528 [DEBUG] [Thread-158375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:16:11.549 [DEBUG] [Thread-158375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:16:11.549 [INFO] [Thread-158375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] client lang: <none>
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] server lang: <none>
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] kex follows: False
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:16:11.552 [DEBUG] [Thread-158375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:16:11.553 [DEBUG] [Thread-158375] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:16:11.553 [DEBUG] [Thread-158375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:16:11.553 [DEBUG] [Thread-158375] [transport.py] [_log()] Compression: none
2025-09-29T14:16:11.553 [DEBUG] [Thread-158375] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:16:11.568 [DEBUG] [Thread-158375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:16:11.568 [DEBUG] [Thread-158375] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:16:11.568 [DEBUG] [Thread-158375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:16:11.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:16:11.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:16:11.569 [DEBUG] [Thread-158375] [transport.py] [_log()] userauth is OK
2025-09-29T14:16:11.569 [DEBUG] [Thread-158375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:16:11.569 [DEBUG] [Thread-158375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:16:11.569 [DEBUG] [Thread-158375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:16:11.569 [DEBUG] [Thread-158375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:16:11.585 [INFO] [Thread-158375] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:16:11.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:12.331 [DEBUG] [Thread-158375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:12.332 [DEBUG] [Thread-158375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:12.332 [DEBUG] [Thread-158375] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:16:12.373 [DEBUG] [Thread-158375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:12.373 [DEBUG] [Thread-158375] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:12.375 [DEBUG] [Thread-158375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:12.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:12.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:16:12.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:16:12.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:16:12.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:12.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:16:12.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.510832 -999.00  +14.60  13.32     42   +2.00 1 1 1 1 1   888    0 14.50 61.24 ----- 9.1 13.3 118.4 20.2 24.8 -29.3 24.1 -28.9 25.4 -30.8 26.6 -31.9
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.510832
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:16:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:15:56', tmtdew=14.13, humidity=38.02, cloud=0.0, wind=14.54, temperature=14.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:15:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:16:12.385 [DEBUG] [Thread-158375] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:16:12.460 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:16:12.471 [DEBUG] [Thread-158378] [transport.py] [_log()] starting thread (client mode): 0x2b90d360
2025-09-29T14:16:12.471 [DEBUG] [Thread-158378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:16:12.484 [DEBUG] [Thread-158378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:16:12.484 [INFO] [Thread-158378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] client lang: <none>
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] server lang: <none>
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] kex follows: False
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] Compression: none
2025-09-29T14:16:12.492 [DEBUG] [Thread-158378] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:16:12.549 [DEBUG] [Thread-158378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:16:12.549 [DEBUG] [Thread-158378] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:16:12.549 [DEBUG] [Thread-158378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:16:12.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:16:12.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:16:12.606 [DEBUG] [Thread-158378] [transport.py] [_log()] userauth is OK
2025-09-29T14:16:12.606 [DEBUG] [Thread-158378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:16:12.606 [DEBUG] [Thread-158378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:16:12.606 [DEBUG] [Thread-158378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:16:12.606 [DEBUG] [Thread-158378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:16:12.620 [INFO] [Thread-158378] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:16:12.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:16:12.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:13.613 [DEBUG] [Thread-158378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:13.613 [DEBUG] [Thread-158378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:13.661 [DEBUG] [Thread-158378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:13.661 [DEBUG] [Thread-158378] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:13.669 [DEBUG] [Thread-158378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:13.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:13.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:16:13.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:16:13.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:13.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:13.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:13.700 [DEBUG] [Thread-158378] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:16:15.799 [DEBUG] [Thread-158380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:16:23.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:16:23.700 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:16:23.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:16:24.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 15, 56), 14.13, 38.02, 0.0, 14.54, 14.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:16:24.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:15:56
2025-09-29T14:16:24.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:16:24.534 [DEBUG] [Thread-158381] [transport.py] [_log()] starting thread (client mode): 0x2b90ca00
2025-09-29T14:16:24.534 [DEBUG] [Thread-158381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:16:24.553 [DEBUG] [Thread-158381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:16:24.553 [INFO] [Thread-158381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] client lang: <none>
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] server lang: <none>
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] kex follows: False
2025-09-29T14:16:24.555 [DEBUG] [Thread-158381] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:16:24.556 [DEBUG] [Thread-158381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:16:24.556 [DEBUG] [Thread-158381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:16:24.556 [DEBUG] [Thread-158381] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:16:24.556 [DEBUG] [Thread-158381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:16:24.556 [DEBUG] [Thread-158381] [transport.py] [_log()] Compression: none
2025-09-29T14:16:24.556 [DEBUG] [Thread-158381] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:16:24.573 [DEBUG] [Thread-158381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:16:24.573 [DEBUG] [Thread-158381] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:16:24.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:16:24.574 [DEBUG] [Thread-158381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:16:24.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:16:24.576 [DEBUG] [Thread-158381] [transport.py] [_log()] userauth is OK
2025-09-29T14:16:24.577 [DEBUG] [Thread-158381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:16:24.577 [DEBUG] [Thread-158381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:16:24.577 [DEBUG] [Thread-158381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:16:24.577 [DEBUG] [Thread-158381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:16:24.600 [INFO] [Thread-158381] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:16:24.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:25.322 [DEBUG] [Thread-158381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:25.322 [DEBUG] [Thread-158381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:25.322 [DEBUG] [Thread-158381] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:16:25.363 [DEBUG] [Thread-158381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:25.363 [DEBUG] [Thread-158381] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:25.366 [DEBUG] [Thread-158381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:25.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:25.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:16:25.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:16:25.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:16:25.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:25.388 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:16:25.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:25.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:25.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:16:25.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.510832 -999.00  +14.60  13.32     42   +2.00 1 1 1 1 1   888    0 14.50 61.24 ----- 9.1 13.3 118.4 20.2 24.8 -29.3 24.1 -28.9 25.4 -30.8 26.6 -31.9
2025-09-29T14:16:25.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:16:25.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:16:25.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.510832
2025-09-29T14:16:25.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:16:25.390 [DEBUG] [Thread-158381] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:16:25.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:16:25.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:16:25.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:16:25.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:16:25.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:15:56', tmtdew=14.13, humidity=38.02, cloud=0.0, wind=14.54, temperature=14.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:15:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:16:25.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:16:25.487 [DEBUG] [Thread-158384] [transport.py] [_log()] starting thread (client mode): 0x2e363a60
2025-09-29T14:16:25.487 [DEBUG] [Thread-158384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:16:25.501 [DEBUG] [Thread-158384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:16:25.501 [INFO] [Thread-158384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:16:25.508 [DEBUG] [Thread-158384] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:16:25.508 [DEBUG] [Thread-158384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:16:25.508 [DEBUG] [Thread-158384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:16:25.508 [DEBUG] [Thread-158384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] client lang: <none>
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] server lang: <none>
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] kex follows: False
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] Compression: none
2025-09-29T14:16:25.509 [DEBUG] [Thread-158384] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:16:25.567 [DEBUG] [Thread-158384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:16:25.567 [DEBUG] [Thread-158384] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:16:25.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:16:25.568 [DEBUG] [Thread-158384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:16:25.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:16:25.623 [DEBUG] [Thread-158384] [transport.py] [_log()] userauth is OK
2025-09-29T14:16:25.623 [DEBUG] [Thread-158384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:16:25.623 [DEBUG] [Thread-158384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:16:25.624 [DEBUG] [Thread-158384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:16:25.624 [DEBUG] [Thread-158384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:16:25.642 [INFO] [Thread-158384] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:16:25.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:16:25.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:26.673 [DEBUG] [Thread-158384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:26.673 [DEBUG] [Thread-158384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:26.721 [DEBUG] [Thread-158384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:26.721 [DEBUG] [Thread-158384] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:26.730 [DEBUG] [Thread-158384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:26.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:26.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:16:26.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:16:26.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:26.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:26.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:26.764 [DEBUG] [Thread-158384] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:16:30.844 [DEBUG] [Thread-158386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:16:36.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:16:36.761 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:16:36.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:16:37.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 16, 28), 13.96, 38.44, 0.0, 14.22, 14.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:16:37.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:16:28
2025-09-29T14:16:37.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:16:37.590 [DEBUG] [Thread-158387] [transport.py] [_log()] starting thread (client mode): 0x2e3debf0
2025-09-29T14:16:37.590 [DEBUG] [Thread-158387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:16:37.611 [DEBUG] [Thread-158387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:16:37.611 [INFO] [Thread-158387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] client lang: <none>
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] server lang: <none>
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] kex follows: False
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] Compression: none
2025-09-29T14:16:37.614 [DEBUG] [Thread-158387] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:16:37.631 [DEBUG] [Thread-158387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:16:37.631 [DEBUG] [Thread-158387] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:16:37.631 [DEBUG] [Thread-158387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:16:37.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:16:37.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:16:37.633 [DEBUG] [Thread-158387] [transport.py] [_log()] userauth is OK
2025-09-29T14:16:37.633 [DEBUG] [Thread-158387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:16:37.633 [DEBUG] [Thread-158387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:16:37.633 [DEBUG] [Thread-158387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:16:37.633 [DEBUG] [Thread-158387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:16:37.651 [INFO] [Thread-158387] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:16:37.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:38.263 [DEBUG] [Thread-158387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:38.264 [DEBUG] [Thread-158387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:38.264 [DEBUG] [Thread-158387] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:16:38.304 [DEBUG] [Thread-158387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:38.305 [DEBUG] [Thread-158387] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:38.306 [DEBUG] [Thread-158387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:38.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:38.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:16:38.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:16:38.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:16:38.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:38.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:16:38.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:38.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:16:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.511180 -999.00  +14.50   8.51     43   +2.20 1 1 1 1 1   888    0 14.29 54.68 ----- 9.6 8.5 136.8 11.5 24.7 -28.9 24.2 -28.3 25.4 -29.6 26.6 -30.6
2025-09-29T14:16:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:16:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:16:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.511180
2025-09-29T14:16:38.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:16:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:16:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:16:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:16:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:16:38.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:16:28', tmtdew=13.96, humidity=38.44, cloud=0.0, wind=14.22, temperature=14.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:16:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:16:38.332 [DEBUG] [Thread-158387] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:16:38.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:16:38.431 [DEBUG] [Thread-158390] [transport.py] [_log()] starting thread (client mode): 0x2b90f9a0
2025-09-29T14:16:38.431 [DEBUG] [Thread-158390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:16:38.450 [DEBUG] [Thread-158390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:16:38.450 [INFO] [Thread-158390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:16:38.457 [DEBUG] [Thread-158390] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] client lang: <none>
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] server lang: <none>
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] kex follows: False
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:16:38.458 [DEBUG] [Thread-158390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:16:38.459 [DEBUG] [Thread-158390] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:16:38.459 [DEBUG] [Thread-158390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:16:38.459 [DEBUG] [Thread-158390] [transport.py] [_log()] Compression: none
2025-09-29T14:16:38.459 [DEBUG] [Thread-158390] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:16:38.515 [DEBUG] [Thread-158390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:16:38.515 [DEBUG] [Thread-158390] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:16:38.515 [DEBUG] [Thread-158390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:16:38.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:16:38.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:16:38.571 [DEBUG] [Thread-158390] [transport.py] [_log()] userauth is OK
2025-09-29T14:16:38.571 [DEBUG] [Thread-158390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:16:38.571 [DEBUG] [Thread-158390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:16:38.571 [DEBUG] [Thread-158390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:16:38.572 [DEBUG] [Thread-158390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:16:38.592 [INFO] [Thread-158390] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:16:38.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:16:38.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:39.589 [DEBUG] [Thread-158390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:39.589 [DEBUG] [Thread-158390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:39.637 [DEBUG] [Thread-158390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:39.637 [DEBUG] [Thread-158390] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:39.647 [DEBUG] [Thread-158390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:39.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:39.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:16:39.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:16:39.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:39.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:39.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:39.686 [DEBUG] [Thread-158390] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:16:44.197 [DEBUG] [Thread-158392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:16:45.874 [DEBUG] [Thread-158393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:16:49.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:16:49.687 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:16:49.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 16, 28), 13.96, 38.44, 0.0, 14.22, 14.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:16:28
2025-09-29T14:16:50.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:16:50.534 [DEBUG] [Thread-158394] [transport.py] [_log()] starting thread (client mode): 0x2e3604f0
2025-09-29T14:16:50.534 [DEBUG] [Thread-158394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:16:50.554 [DEBUG] [Thread-158394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:16:50.554 [INFO] [Thread-158394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:16:50.557 [DEBUG] [Thread-158394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:16:50.557 [DEBUG] [Thread-158394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] client lang: <none>
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] server lang: <none>
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] kex follows: False
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] Compression: none
2025-09-29T14:16:50.558 [DEBUG] [Thread-158394] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:16:50.572 [DEBUG] [Thread-158394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:16:50.572 [DEBUG] [Thread-158394] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:16:50.572 [DEBUG] [Thread-158394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:16:50.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:16:50.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:16:50.573 [DEBUG] [Thread-158394] [transport.py] [_log()] userauth is OK
2025-09-29T14:16:50.574 [DEBUG] [Thread-158394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:16:50.574 [DEBUG] [Thread-158394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:16:50.574 [DEBUG] [Thread-158394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:16:50.574 [DEBUG] [Thread-158394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:16:50.592 [INFO] [Thread-158394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:16:50.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:51.297 [DEBUG] [Thread-158394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:51.298 [DEBUG] [Thread-158394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:51.298 [DEBUG] [Thread-158394] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:16:51.339 [DEBUG] [Thread-158394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:51.339 [DEBUG] [Thread-158394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:51.343 [DEBUG] [Thread-158394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:51.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:51.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:16:51.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:16:51.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:16:51.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:51.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:16:51.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.511180 -999.00  +14.50   8.51     43   +2.20 1 1 1 1 1   888    0 14.29 54.68 ----- 9.6 8.5 136.8 11.5 24.7 -28.9 24.2 -28.3 25.4 -29.6 26.6 -30.6
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.511180
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:16:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:16:28', tmtdew=13.96, humidity=38.44, cloud=0.0, wind=14.22, temperature=14.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:16:05.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:16:51.357 [DEBUG] [Thread-158394] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:16:51.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:16:51.439 [DEBUG] [Thread-158397] [transport.py] [_log()] starting thread (client mode): 0x2b9bbd60
2025-09-29T14:16:51.439 [DEBUG] [Thread-158397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:16:51.455 [DEBUG] [Thread-158397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:16:51.455 [INFO] [Thread-158397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:16:51.462 [DEBUG] [Thread-158397] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:16:51.462 [DEBUG] [Thread-158397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:16:51.462 [DEBUG] [Thread-158397] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] client lang: <none>
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] server lang: <none>
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] kex follows: False
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] Compression: none
2025-09-29T14:16:51.463 [DEBUG] [Thread-158397] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:16:51.517 [DEBUG] [Thread-158397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:16:51.517 [DEBUG] [Thread-158397] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:16:51.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:16:51.517 [DEBUG] [Thread-158397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:16:51.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:16:51.575 [DEBUG] [Thread-158397] [transport.py] [_log()] userauth is OK
2025-09-29T14:16:51.575 [DEBUG] [Thread-158397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:16:51.575 [DEBUG] [Thread-158397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:16:51.575 [DEBUG] [Thread-158397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:16:51.575 [DEBUG] [Thread-158397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:16:51.589 [INFO] [Thread-158397] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:16:51.589 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:16:51.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:16:52.589 [DEBUG] [Thread-158397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:16:52.589 [DEBUG] [Thread-158397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:16:52.637 [DEBUG] [Thread-158397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:16:52.637 [DEBUG] [Thread-158397] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:16:52.645 [DEBUG] [Thread-158397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:16:52.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:16:52.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:16:52.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:16:52.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:16:52.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:16:52.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:16:52.677 [DEBUG] [Thread-158397] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:00.918 [DEBUG] [Thread-158399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:17:02.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:17:02.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:17:02.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:17:02.934 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:17:02.935 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:17:03.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 16, 28), 14.11, 37.94, 0.0, 12.42, 14.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:17:03.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:16:28
2025-09-29T14:17:03.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:17:03.528 [DEBUG] [Thread-158400] [transport.py] [_log()] starting thread (client mode): 0x2b9548e0
2025-09-29T14:17:03.528 [DEBUG] [Thread-158400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:03.552 [DEBUG] [Thread-158400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:17:03.552 [INFO] [Thread-158400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:03.556 [DEBUG] [Thread-158400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:03.557 [DEBUG] [Thread-158400] [transport.py] [_log()] Compression: none
2025-09-29T14:17:03.557 [DEBUG] [Thread-158400] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:03.574 [DEBUG] [Thread-158400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:03.574 [DEBUG] [Thread-158400] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:03.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:17:03.575 [DEBUG] [Thread-158400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:17:03.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:03.577 [DEBUG] [Thread-158400] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:03.578 [DEBUG] [Thread-158400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:03.578 [DEBUG] [Thread-158400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:03.578 [DEBUG] [Thread-158400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:17:03.578 [DEBUG] [Thread-158400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:03.600 [INFO] [Thread-158400] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:03.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:04.205 [DEBUG] [Thread-158400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:04.205 [DEBUG] [Thread-158400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:04.205 [DEBUG] [Thread-158400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:17:04.246 [DEBUG] [Thread-158400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:04.246 [DEBUG] [Thread-158400] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:04.249 [DEBUG] [Thread-158400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:04.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:04.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:17:04.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:17:04.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:17:04.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:04.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:17:04.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:04.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:17:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.511527 -999.00  +14.70  11.71     43   +2.40 1 1 1 1 1   888    0 14.34 52.39 ----- 11.7 11.7 111.0 16.2 24.6 -28.4 24.2 -28.5 25.5 -29.9 26.6 -29.6
2025-09-29T14:17:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:17:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:17:04.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.511527
2025-09-29T14:17:04.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:17:04.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:17:04.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:17:04.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:17:04.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:17:04.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:16:28', tmtdew=14.11, humidity=37.94, cloud=0.0, wind=12.42, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:16:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:17:04.274 [DEBUG] [Thread-158400] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:04.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:17:04.373 [DEBUG] [Thread-158403] [transport.py] [_log()] starting thread (client mode): 0x2e3604f0
2025-09-29T14:17:04.373 [DEBUG] [Thread-158403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:04.390 [DEBUG] [Thread-158403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:17:04.391 [INFO] [Thread-158403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:17:04.401 [DEBUG] [Thread-158403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:04.401 [DEBUG] [Thread-158403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:17:04.401 [DEBUG] [Thread-158403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] Compression: none
2025-09-29T14:17:04.402 [DEBUG] [Thread-158403] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:04.458 [DEBUG] [Thread-158403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:04.459 [DEBUG] [Thread-158403] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:04.459 [DEBUG] [Thread-158403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:17:04.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:17:04.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:04.515 [DEBUG] [Thread-158403] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:04.515 [DEBUG] [Thread-158403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:04.515 [DEBUG] [Thread-158403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:04.515 [DEBUG] [Thread-158403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:17:04.515 [DEBUG] [Thread-158403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:04.535 [INFO] [Thread-158403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:04.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:17:04.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:05.546 [DEBUG] [Thread-158403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:05.546 [DEBUG] [Thread-158403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:05.594 [DEBUG] [Thread-158403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:05.594 [DEBUG] [Thread-158403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:05.603 [DEBUG] [Thread-158403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:05.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:05.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:17:05.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:17:05.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:05.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:05.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:05.638 [DEBUG] [Thread-158403] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:15.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:17:15.641 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:17:15.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:17:15.943 [DEBUG] [Thread-158405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:17:16.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 16, 28), 14.11, 37.94, 0.0, 12.42, 14.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:17:16.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:16:28
2025-09-29T14:17:16.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:17:16.467 [DEBUG] [Thread-158406] [transport.py] [_log()] starting thread (client mode): 0x2b9ddba0
2025-09-29T14:17:16.467 [DEBUG] [Thread-158406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:16.488 [DEBUG] [Thread-158406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:17:16.488 [INFO] [Thread-158406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:17:16.491 [DEBUG] [Thread-158406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:16.491 [DEBUG] [Thread-158406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:17:16.491 [DEBUG] [Thread-158406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:16.491 [DEBUG] [Thread-158406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:16.491 [DEBUG] [Thread-158406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] Compression: none
2025-09-29T14:17:16.492 [DEBUG] [Thread-158406] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:16.510 [DEBUG] [Thread-158406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:16.511 [DEBUG] [Thread-158406] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:16.512 [DEBUG] [Thread-158406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:17:16.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:17:16.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:16.513 [DEBUG] [Thread-158406] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:16.514 [DEBUG] [Thread-158406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:16.514 [DEBUG] [Thread-158406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:16.514 [DEBUG] [Thread-158406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:17:16.514 [DEBUG] [Thread-158406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:16.528 [INFO] [Thread-158406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:16.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:17.316 [DEBUG] [Thread-158406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:17.316 [DEBUG] [Thread-158406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:17.316 [DEBUG] [Thread-158406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:17:17.357 [DEBUG] [Thread-158406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:17.357 [DEBUG] [Thread-158406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:17.360 [DEBUG] [Thread-158406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:17.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:17.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:17:17.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:17:17.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:17:17.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:17.377 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:17:17.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:17.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:17.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:17:17.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.511527 -999.00  +14.70  11.71     43   +2.40 1 1 1 1 1   888    0 14.34 52.39 ----- 11.7 11.7 111.0 16.2 24.6 -28.4 24.2 -28.5 25.5 -29.9 26.6 -29.6
2025-09-29T14:17:17.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:17:17.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:17:17.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.511527
2025-09-29T14:17:17.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:17:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:17:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:17:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:17:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:17:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:16:28', tmtdew=14.11, humidity=37.94, cloud=0.0, wind=12.42, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:16:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:17:17.379 [DEBUG] [Thread-158406] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:17.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:17:17.477 [DEBUG] [Thread-158409] [transport.py] [_log()] starting thread (client mode): 0x2b9b96f0
2025-09-29T14:17:17.477 [DEBUG] [Thread-158409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:17.491 [DEBUG] [Thread-158409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:17:17.491 [INFO] [Thread-158409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:17:17.499 [DEBUG] [Thread-158409] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:17.499 [DEBUG] [Thread-158409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:17:17.499 [DEBUG] [Thread-158409] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:17.499 [DEBUG] [Thread-158409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] Compression: none
2025-09-29T14:17:17.500 [DEBUG] [Thread-158409] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:17.563 [DEBUG] [Thread-158409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:17.563 [DEBUG] [Thread-158409] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:17.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:17:17.564 [DEBUG] [Thread-158409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:17:17.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:17.618 [DEBUG] [Thread-158409] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:17.618 [DEBUG] [Thread-158409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:17.618 [DEBUG] [Thread-158409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:17.618 [DEBUG] [Thread-158409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:17:17.618 [DEBUG] [Thread-158409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:17.632 [INFO] [Thread-158409] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:17.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:17:17.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:18.633 [DEBUG] [Thread-158409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:18.633 [DEBUG] [Thread-158409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:18.681 [DEBUG] [Thread-158409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:18.682 [DEBUG] [Thread-158409] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:18.691 [DEBUG] [Thread-158409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:18.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:18.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:17:18.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:17:18.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:18.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:18.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:18.726 [DEBUG] [Thread-158409] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:28.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:17:28.728 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:17:28.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:17:29.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 16, 28), 14.11, 37.94, 0.0, 12.42, 14.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:17:29.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:16:28
2025-09-29T14:17:29.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:17:29.590 [DEBUG] [Thread-158411] [transport.py] [_log()] starting thread (client mode): 0x2b90c5e0
2025-09-29T14:17:29.591 [DEBUG] [Thread-158411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:29.612 [DEBUG] [Thread-158411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:17:29.612 [INFO] [Thread-158411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:29.615 [DEBUG] [Thread-158411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:29.616 [DEBUG] [Thread-158411] [transport.py] [_log()] Compression: none
2025-09-29T14:17:29.616 [DEBUG] [Thread-158411] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:29.630 [DEBUG] [Thread-158411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:29.631 [DEBUG] [Thread-158411] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:29.631 [DEBUG] [Thread-158411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:17:29.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:17:29.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:29.631 [DEBUG] [Thread-158411] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:29.631 [DEBUG] [Thread-158411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:29.632 [DEBUG] [Thread-158411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:29.632 [DEBUG] [Thread-158411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:17:29.632 [DEBUG] [Thread-158411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:29.646 [INFO] [Thread-158411] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:29.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:30.366 [DEBUG] [Thread-158411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:30.366 [DEBUG] [Thread-158411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:30.366 [DEBUG] [Thread-158411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:17:30.407 [DEBUG] [Thread-158411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:30.407 [DEBUG] [Thread-158411] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:30.409 [DEBUG] [Thread-158411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:30.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:30.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:17:30.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:17:30.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:17:30.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:30.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:17:30.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:30.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.511527 -999.00  +14.70  11.71     43   +2.40 1 1 1 1 1   888    0 14.34 52.39 ----- 11.7 11.7 111.0 16.2 24.6 -28.4 24.2 -28.5 25.5 -29.9 26.6 -29.6
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.511527
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:17:30.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:16:28', tmtdew=14.11, humidity=37.94, cloud=0.0, wind=12.42, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:16:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:17:30.420 [DEBUG] [Thread-158411] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:30.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:17:30.505 [DEBUG] [Thread-158414] [transport.py] [_log()] starting thread (client mode): 0x2b90c700
2025-09-29T14:17:30.505 [DEBUG] [Thread-158414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:30.519 [DEBUG] [Thread-158414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:17:30.519 [INFO] [Thread-158414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] Compression: none
2025-09-29T14:17:30.527 [DEBUG] [Thread-158414] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:30.585 [DEBUG] [Thread-158414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:30.585 [DEBUG] [Thread-158414] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:30.585 [DEBUG] [Thread-158414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:17:30.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:17:30.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:30.642 [DEBUG] [Thread-158414] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:30.642 [DEBUG] [Thread-158414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:30.642 [DEBUG] [Thread-158414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:30.642 [DEBUG] [Thread-158414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:17:30.642 [DEBUG] [Thread-158414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:30.656 [INFO] [Thread-158414] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:30.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:17:30.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:30.976 [DEBUG] [Thread-158416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:17:31.649 [DEBUG] [Thread-158414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:31.650 [DEBUG] [Thread-158414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:31.698 [DEBUG] [Thread-158414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:31.698 [DEBUG] [Thread-158414] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:31.706 [DEBUG] [Thread-158414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:31.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:31.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:17:31.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:17:31.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:31.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:31.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:31.738 [DEBUG] [Thread-158414] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:41.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:17:41.741 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:17:41.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:17:42.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 17, 32), 14.05, 38.05, 0.0, 9.83, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:17:42.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:17:32
2025-09-29T14:17:42.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:17:42.592 [DEBUG] [Thread-158417] [transport.py] [_log()] starting thread (client mode): 0x2e374520
2025-09-29T14:17:42.592 [DEBUG] [Thread-158417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:42.612 [DEBUG] [Thread-158417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:17:42.612 [INFO] [Thread-158417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:42.615 [DEBUG] [Thread-158417] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:42.616 [DEBUG] [Thread-158417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:42.616 [DEBUG] [Thread-158417] [transport.py] [_log()] Compression: none
2025-09-29T14:17:42.616 [DEBUG] [Thread-158417] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:42.633 [DEBUG] [Thread-158417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:42.633 [DEBUG] [Thread-158417] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:42.634 [DEBUG] [Thread-158417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:17:42.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:17:42.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:42.636 [DEBUG] [Thread-158417] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:42.636 [DEBUG] [Thread-158417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:42.636 [DEBUG] [Thread-158417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:42.636 [DEBUG] [Thread-158417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:17:42.637 [DEBUG] [Thread-158417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:42.660 [INFO] [Thread-158417] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:42.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:43.272 [DEBUG] [Thread-158417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:43.273 [DEBUG] [Thread-158417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:43.273 [DEBUG] [Thread-158417] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:17:43.313 [DEBUG] [Thread-158417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:43.313 [DEBUG] [Thread-158417] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:43.316 [DEBUG] [Thread-158417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:43.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:43.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:17:43.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:17:43.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:17:43.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:43.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:17:43.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:43.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:43.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:17:43.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.511874 -999.00  +14.70   4.87     43   +2.30 1 1 1 1 1   888    0 14.42 47.56 ----- 6.9 4.9 119.4 10.2 24.4 -35.3 24.3 -28.4 25.4 -29.4 26.7 -28.1
2025-09-29T14:17:43.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:17:43.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:17:43.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.511874
2025-09-29T14:17:43.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:17:43.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:17:43.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:17:43.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:17:43.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:17:43.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:17:32', tmtdew=14.05, humidity=38.05, cloud=0.0, wind=9.83, temperature=14.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:17:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:17:43.339 [DEBUG] [Thread-158417] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:43.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:17:43.437 [DEBUG] [Thread-158420] [transport.py] [_log()] starting thread (client mode): 0x2e376410
2025-09-29T14:17:43.437 [DEBUG] [Thread-158420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:43.452 [DEBUG] [Thread-158420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:17:43.453 [INFO] [Thread-158420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:17:43.460 [DEBUG] [Thread-158420] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:43.460 [DEBUG] [Thread-158420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:17:43.460 [DEBUG] [Thread-158420] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:43.460 [DEBUG] [Thread-158420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:43.460 [DEBUG] [Thread-158420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] Compression: none
2025-09-29T14:17:43.461 [DEBUG] [Thread-158420] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:43.519 [DEBUG] [Thread-158420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:43.519 [DEBUG] [Thread-158420] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:43.519 [DEBUG] [Thread-158420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:17:43.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:17:43.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:43.575 [DEBUG] [Thread-158420] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:43.575 [DEBUG] [Thread-158420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:43.575 [DEBUG] [Thread-158420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:43.575 [DEBUG] [Thread-158420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:17:43.575 [DEBUG] [Thread-158420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:43.594 [INFO] [Thread-158420] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:43.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:17:43.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:44.241 [DEBUG] [Thread-158422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:17:44.584 [DEBUG] [Thread-158420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:44.584 [DEBUG] [Thread-158420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:44.632 [DEBUG] [Thread-158420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:44.632 [DEBUG] [Thread-158420] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:44.641 [DEBUG] [Thread-158420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:44.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:44.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:17:44.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:17:44.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:44.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:44.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:44.676 [DEBUG] [Thread-158420] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:46.006 [DEBUG] [Thread-158423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:17:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:17:54.679 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:17:54.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:17:55.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 17, 32), 14.05, 38.05, 0.0, 9.83, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:17:55.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:17:32
2025-09-29T14:17:55.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:17:55.515 [DEBUG] [Thread-158424] [transport.py] [_log()] starting thread (client mode): 0x2e376d40
2025-09-29T14:17:55.515 [DEBUG] [Thread-158424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:55.536 [DEBUG] [Thread-158424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:17:55.536 [INFO] [Thread-158424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:17:55.539 [DEBUG] [Thread-158424] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:55.539 [DEBUG] [Thread-158424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:17:55.539 [DEBUG] [Thread-158424] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:55.539 [DEBUG] [Thread-158424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:55.539 [DEBUG] [Thread-158424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] Compression: none
2025-09-29T14:17:55.540 [DEBUG] [Thread-158424] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:55.557 [DEBUG] [Thread-158424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:55.558 [DEBUG] [Thread-158424] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:55.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:17:55.559 [DEBUG] [Thread-158424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:17:55.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:55.562 [DEBUG] [Thread-158424] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:55.562 [DEBUG] [Thread-158424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:55.562 [DEBUG] [Thread-158424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:55.562 [DEBUG] [Thread-158424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:17:55.562 [DEBUG] [Thread-158424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:55.579 [INFO] [Thread-158424] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:55.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:56.309 [DEBUG] [Thread-158424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:56.310 [DEBUG] [Thread-158424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:56.310 [DEBUG] [Thread-158424] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:17:56.350 [DEBUG] [Thread-158424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:56.351 [DEBUG] [Thread-158424] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:56.353 [DEBUG] [Thread-158424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:56.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:56.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:17:56.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:17:56.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:17:56.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:56.374 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:17:56.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:56.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:56.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:17:56.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.511874 -999.00  +14.70   4.87     43   +2.30 1 1 1 1 1   888    0 14.42 47.56 ----- 6.9 4.9 119.4 10.2 24.4 -35.3 24.3 -28.4 25.4 -29.4 26.7 -28.1
2025-09-29T14:17:56.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:17:56.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:17:56.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.511874
2025-09-29T14:17:56.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:17:56.376 [DEBUG] [Thread-158424] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:17:56.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:17:56.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:17:56.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:17:56.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:17:56.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:17:32', tmtdew=14.05, humidity=38.05, cloud=0.0, wind=9.83, temperature=14.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:17:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:17:56.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:17:56.472 [DEBUG] [Thread-158427] [transport.py] [_log()] starting thread (client mode): 0x2e376b30
2025-09-29T14:17:56.472 [DEBUG] [Thread-158427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:17:56.492 [DEBUG] [Thread-158427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:17:56.492 [INFO] [Thread-158427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:17:56.499 [DEBUG] [Thread-158427] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:17:56.500 [DEBUG] [Thread-158427] [transport.py] [_log()] client lang: <none>
2025-09-29T14:17:56.501 [DEBUG] [Thread-158427] [transport.py] [_log()] server lang: <none>
2025-09-29T14:17:56.501 [DEBUG] [Thread-158427] [transport.py] [_log()] kex follows: False
2025-09-29T14:17:56.501 [DEBUG] [Thread-158427] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:17:56.501 [DEBUG] [Thread-158427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:17:56.501 [DEBUG] [Thread-158427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:17:56.501 [DEBUG] [Thread-158427] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:17:56.501 [DEBUG] [Thread-158427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:17:56.501 [DEBUG] [Thread-158427] [transport.py] [_log()] Compression: none
2025-09-29T14:17:56.502 [DEBUG] [Thread-158427] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:17:56.559 [DEBUG] [Thread-158427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:17:56.559 [DEBUG] [Thread-158427] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:17:56.560 [DEBUG] [Thread-158427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:17:56.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:17:56.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:17:56.615 [DEBUG] [Thread-158427] [transport.py] [_log()] userauth is OK
2025-09-29T14:17:56.615 [DEBUG] [Thread-158427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:17:56.615 [DEBUG] [Thread-158427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:17:56.615 [DEBUG] [Thread-158427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:17:56.615 [DEBUG] [Thread-158427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:17:56.634 [INFO] [Thread-158427] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:17:56.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:17:56.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:17:57.652 [DEBUG] [Thread-158427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:17:57.652 [DEBUG] [Thread-158427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:17:57.700 [DEBUG] [Thread-158427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:17:57.700 [DEBUG] [Thread-158427] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:17:57.709 [DEBUG] [Thread-158427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:17:57.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:17:57.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:17:57.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:17:57.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:17:57.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:17:57.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:17:57.743 [DEBUG] [Thread-158427] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:01.043 [DEBUG] [Thread-158429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:18:03.075 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:18:03.076 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:18:07.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:18:07.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:18:07.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:18:08.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 18, 4), 14.13, 37.95, 0.0, 11.49, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:18:08.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:18:04
2025-09-29T14:18:08.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:18:08.617 [DEBUG] [Thread-158430] [transport.py] [_log()] starting thread (client mode): 0x2b90d360
2025-09-29T14:18:08.617 [DEBUG] [Thread-158430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:18:08.636 [DEBUG] [Thread-158430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:18:08.636 [INFO] [Thread-158430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] client lang: <none>
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] server lang: <none>
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] kex follows: False
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] Compression: none
2025-09-29T14:18:08.640 [DEBUG] [Thread-158430] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:18:08.658 [DEBUG] [Thread-158430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:18:08.658 [DEBUG] [Thread-158430] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:18:08.658 [DEBUG] [Thread-158430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:18:08.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:18:08.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:18:08.659 [DEBUG] [Thread-158430] [transport.py] [_log()] userauth is OK
2025-09-29T14:18:08.659 [DEBUG] [Thread-158430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:18:08.659 [DEBUG] [Thread-158430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:18:08.659 [DEBUG] [Thread-158430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:18:08.659 [DEBUG] [Thread-158430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:18:08.667 [INFO] [Thread-158430] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:18:08.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:18:09.317 [DEBUG] [Thread-158430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:18:09.317 [DEBUG] [Thread-158430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:18:09.317 [DEBUG] [Thread-158430] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:18:09.358 [DEBUG] [Thread-158430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:18:09.358 [DEBUG] [Thread-158430] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:18:09.360 [DEBUG] [Thread-158430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:18:09.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:18:09.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:18:09.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:18:09.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:18:09.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:18:09.377 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:18:09.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.512221 -999.00  +14.50  11.76     43   +2.10 1 1 1 1 1   888    0 13.95 43.28 ----- 12.6 11.8 120.4 15.9 24.6 -28.7 24.3 -28.7 25.5 -28.8 26.8 -30.2
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.512221
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:18:09.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:18:04', tmtdew=14.13, humidity=37.95, cloud=0.0, wind=11.49, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:17:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:18:09.377 [DEBUG] [Thread-158430] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:09.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:18:09.462 [DEBUG] [Thread-158433] [transport.py] [_log()] starting thread (client mode): 0x2e375300
2025-09-29T14:18:09.462 [DEBUG] [Thread-158433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:18:09.479 [DEBUG] [Thread-158433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:18:09.479 [INFO] [Thread-158433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] client lang: <none>
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] server lang: <none>
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] kex follows: False
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:18:09.486 [DEBUG] [Thread-158433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:18:09.487 [DEBUG] [Thread-158433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:18:09.487 [DEBUG] [Thread-158433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:18:09.487 [DEBUG] [Thread-158433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:18:09.487 [DEBUG] [Thread-158433] [transport.py] [_log()] Compression: none
2025-09-29T14:18:09.487 [DEBUG] [Thread-158433] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:18:09.541 [DEBUG] [Thread-158433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:18:09.541 [DEBUG] [Thread-158433] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:18:09.541 [DEBUG] [Thread-158433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:18:09.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:18:09.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:18:09.598 [DEBUG] [Thread-158433] [transport.py] [_log()] userauth is OK
2025-09-29T14:18:09.598 [DEBUG] [Thread-158433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:18:09.598 [DEBUG] [Thread-158433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:18:09.598 [DEBUG] [Thread-158433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:18:09.598 [DEBUG] [Thread-158433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:18:09.612 [INFO] [Thread-158433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:18:09.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:18:09.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:18:10.587 [DEBUG] [Thread-158433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:18:10.587 [DEBUG] [Thread-158433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:18:10.635 [DEBUG] [Thread-158433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:18:10.635 [DEBUG] [Thread-158433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:18:10.644 [DEBUG] [Thread-158433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:18:10.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:18:10.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:18:10.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:18:10.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:18:10.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:18:10.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:18:10.676 [DEBUG] [Thread-158433] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:16.076 [DEBUG] [Thread-158435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:18:20.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:18:20.679 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:18:20.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:18:21.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 18, 4), 14.13, 37.95, 0.0, 11.49, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:18:21.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:18:04
2025-09-29T14:18:21.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:18:21.528 [DEBUG] [Thread-158436] [transport.py] [_log()] starting thread (client mode): 0x2e377ca0
2025-09-29T14:18:21.528 [DEBUG] [Thread-158436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:18:21.548 [DEBUG] [Thread-158436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:18:21.548 [INFO] [Thread-158436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:18:21.551 [DEBUG] [Thread-158436] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:18:21.551 [DEBUG] [Thread-158436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:18:21.551 [DEBUG] [Thread-158436] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:18:21.551 [DEBUG] [Thread-158436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:21.551 [DEBUG] [Thread-158436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:21.551 [DEBUG] [Thread-158436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:21.551 [DEBUG] [Thread-158436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:21.551 [DEBUG] [Thread-158436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] client lang: <none>
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] server lang: <none>
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] kex follows: False
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] Compression: none
2025-09-29T14:18:21.552 [DEBUG] [Thread-158436] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:18:21.564 [DEBUG] [Thread-158436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:18:21.565 [DEBUG] [Thread-158436] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:18:21.565 [DEBUG] [Thread-158436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:18:21.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:18:21.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:18:21.567 [DEBUG] [Thread-158436] [transport.py] [_log()] userauth is OK
2025-09-29T14:18:21.567 [DEBUG] [Thread-158436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:18:21.567 [DEBUG] [Thread-158436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:18:21.568 [DEBUG] [Thread-158436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:18:21.568 [DEBUG] [Thread-158436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:18:21.592 [INFO] [Thread-158436] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:18:21.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:18:22.353 [DEBUG] [Thread-158436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:18:22.354 [DEBUG] [Thread-158436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:18:22.354 [DEBUG] [Thread-158436] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:18:22.394 [DEBUG] [Thread-158436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:18:22.394 [DEBUG] [Thread-158436] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:18:22.397 [DEBUG] [Thread-158436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:18:22.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:18:22.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:18:22.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:18:22.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:18:22.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:18:22.423 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:18:22.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:18:22.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:18:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:18:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.512221 -999.00  +14.50  11.76     43   +2.10 1 1 1 1 1   888    0 13.95 43.28 ----- 12.6 11.8 120.4 15.9 24.6 -28.7 24.3 -28.7 25.5 -28.8 26.8 -30.2
2025-09-29T14:18:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:18:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:18:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.512221
2025-09-29T14:18:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:18:22.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:18:22.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:18:22.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:18:22.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:18:22.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:18:04', tmtdew=14.13, humidity=37.95, cloud=0.0, wind=11.49, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:17:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:18:22.426 [DEBUG] [Thread-158436] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:22.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:18:22.520 [DEBUG] [Thread-158439] [transport.py] [_log()] starting thread (client mode): 0x2e377340
2025-09-29T14:18:22.520 [DEBUG] [Thread-158439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:18:22.534 [DEBUG] [Thread-158439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:18:22.535 [INFO] [Thread-158439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:18:22.542 [DEBUG] [Thread-158439] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:18:22.542 [DEBUG] [Thread-158439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:18:22.542 [DEBUG] [Thread-158439] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:18:22.542 [DEBUG] [Thread-158439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:22.542 [DEBUG] [Thread-158439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:22.542 [DEBUG] [Thread-158439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:22.543 [DEBUG] [Thread-158439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:22.543 [DEBUG] [Thread-158439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:18:22.543 [DEBUG] [Thread-158439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:18:22.543 [DEBUG] [Thread-158439] [transport.py] [_log()] client lang: <none>
2025-09-29T14:18:22.543 [DEBUG] [Thread-158439] [transport.py] [_log()] server lang: <none>
2025-09-29T14:18:22.543 [DEBUG] [Thread-158439] [transport.py] [_log()] kex follows: False
2025-09-29T14:18:22.543 [DEBUG] [Thread-158439] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:18:22.543 [DEBUG] [Thread-158439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:18:22.544 [DEBUG] [Thread-158439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:18:22.544 [DEBUG] [Thread-158439] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:18:22.544 [DEBUG] [Thread-158439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:18:22.544 [DEBUG] [Thread-158439] [transport.py] [_log()] Compression: none
2025-09-29T14:18:22.544 [DEBUG] [Thread-158439] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:18:22.598 [DEBUG] [Thread-158439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:18:22.598 [DEBUG] [Thread-158439] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:18:22.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:18:22.599 [DEBUG] [Thread-158439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:18:22.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:18:22.654 [DEBUG] [Thread-158439] [transport.py] [_log()] userauth is OK
2025-09-29T14:18:22.655 [DEBUG] [Thread-158439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:18:22.655 [DEBUG] [Thread-158439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:18:22.655 [DEBUG] [Thread-158439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:18:22.655 [DEBUG] [Thread-158439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:18:22.673 [INFO] [Thread-158439] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:18:22.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:18:22.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:18:23.695 [DEBUG] [Thread-158439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:18:23.695 [DEBUG] [Thread-158439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:18:23.743 [DEBUG] [Thread-158439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:18:23.743 [DEBUG] [Thread-158439] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:18:23.751 [DEBUG] [Thread-158439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:18:23.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:18:23.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:18:23.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:18:23.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:18:23.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:18:23.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:18:23.784 [DEBUG] [Thread-158439] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:31.117 [DEBUG] [Thread-158441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:18:33.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:18:33.787 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:18:33.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:18:34.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 18, 4), 14.13, 37.95, 0.0, 11.49, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:18:34.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:18:04
2025-09-29T14:18:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:18:34.629 [DEBUG] [Thread-158442] [transport.py] [_log()] starting thread (client mode): 0x2b9b8670
2025-09-29T14:18:34.629 [DEBUG] [Thread-158442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:18:34.650 [DEBUG] [Thread-158442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:18:34.650 [INFO] [Thread-158442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:18:34.653 [DEBUG] [Thread-158442] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:18:34.653 [DEBUG] [Thread-158442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:18:34.653 [DEBUG] [Thread-158442] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:18:34.653 [DEBUG] [Thread-158442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:34.653 [DEBUG] [Thread-158442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:34.653 [DEBUG] [Thread-158442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:34.653 [DEBUG] [Thread-158442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:34.653 [DEBUG] [Thread-158442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] client lang: <none>
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] server lang: <none>
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] kex follows: False
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] Compression: none
2025-09-29T14:18:34.654 [DEBUG] [Thread-158442] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:18:34.672 [DEBUG] [Thread-158442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:18:34.672 [DEBUG] [Thread-158442] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:18:34.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:18:34.673 [DEBUG] [Thread-158442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:18:34.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:18:34.675 [DEBUG] [Thread-158442] [transport.py] [_log()] userauth is OK
2025-09-29T14:18:34.676 [DEBUG] [Thread-158442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:18:34.676 [DEBUG] [Thread-158442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:18:34.676 [DEBUG] [Thread-158442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:18:34.676 [DEBUG] [Thread-158442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:18:34.699 [INFO] [Thread-158442] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:18:34.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:18:35.455 [DEBUG] [Thread-158442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:18:35.455 [DEBUG] [Thread-158442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:18:35.455 [DEBUG] [Thread-158442] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:18:35.496 [DEBUG] [Thread-158442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:18:35.496 [DEBUG] [Thread-158442] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:18:35.500 [DEBUG] [Thread-158442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:18:35.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:18:35.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:18:35.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:18:35.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:18:35.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:18:35.521 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:18:35.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:18:35.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:18:35.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:18:35.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.512221 -999.00  +14.50  11.76     43   +2.10 1 1 1 1 1   888    0 13.95 43.28 ----- 12.6 11.8 120.4 15.9 24.6 -28.7 24.3 -28.7 25.5 -28.8 26.8 -30.2
2025-09-29T14:18:35.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:18:35.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:18:35.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.512221
2025-09-29T14:18:35.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:18:35.523 [DEBUG] [Thread-158442] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:35.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:18:35.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:18:35.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:18:35.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:18:35.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:18:04', tmtdew=14.13, humidity=37.95, cloud=0.0, wind=11.49, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:17:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:18:35.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:18:35.613 [DEBUG] [Thread-158445] [transport.py] [_log()] starting thread (client mode): 0x2b9b9990
2025-09-29T14:18:35.613 [DEBUG] [Thread-158445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:18:35.628 [DEBUG] [Thread-158445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:18:35.628 [INFO] [Thread-158445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] client lang: <none>
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] server lang: <none>
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] kex follows: False
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:18:35.636 [DEBUG] [Thread-158445] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:18:35.637 [DEBUG] [Thread-158445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:18:35.637 [DEBUG] [Thread-158445] [transport.py] [_log()] Compression: none
2025-09-29T14:18:35.637 [DEBUG] [Thread-158445] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:18:35.694 [DEBUG] [Thread-158445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:18:35.694 [DEBUG] [Thread-158445] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:18:35.695 [DEBUG] [Thread-158445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:18:35.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:18:35.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:18:35.751 [DEBUG] [Thread-158445] [transport.py] [_log()] userauth is OK
2025-09-29T14:18:35.751 [DEBUG] [Thread-158445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:18:35.751 [DEBUG] [Thread-158445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:18:35.751 [DEBUG] [Thread-158445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:18:35.751 [DEBUG] [Thread-158445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:18:35.766 [INFO] [Thread-158445] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:18:35.766 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:18:35.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:18:36.808 [DEBUG] [Thread-158445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:18:36.809 [DEBUG] [Thread-158445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:18:36.857 [DEBUG] [Thread-158445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:18:36.857 [DEBUG] [Thread-158445] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:18:36.865 [DEBUG] [Thread-158445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:18:36.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:18:36.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:18:36.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:18:36.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:18:36.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:18:36.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:18:36.898 [DEBUG] [Thread-158445] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:44.268 [DEBUG] [Thread-158447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:18:46.143 [DEBUG] [Thread-158448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:18:46.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:18:46.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:18:46.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:18:47.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 18, 36), 14.36, 37.45, 0.0, 9.97, 14.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:18:47.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:18:36
2025-09-29T14:18:47.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:18:47.776 [DEBUG] [Thread-158449] [transport.py] [_log()] starting thread (client mode): 0x2b9bb730
2025-09-29T14:18:47.776 [DEBUG] [Thread-158449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:18:47.796 [DEBUG] [Thread-158449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:18:47.796 [INFO] [Thread-158449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:18:47.800 [DEBUG] [Thread-158449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:18:47.800 [DEBUG] [Thread-158449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:18:47.800 [DEBUG] [Thread-158449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:18:47.800 [DEBUG] [Thread-158449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:47.800 [DEBUG] [Thread-158449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:47.800 [DEBUG] [Thread-158449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] client lang: <none>
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] server lang: <none>
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] kex follows: False
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] Compression: none
2025-09-29T14:18:47.801 [DEBUG] [Thread-158449] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:18:47.816 [DEBUG] [Thread-158449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:18:47.816 [DEBUG] [Thread-158449] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:18:47.816 [DEBUG] [Thread-158449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:18:47.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:18:47.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:18:47.817 [DEBUG] [Thread-158449] [transport.py] [_log()] userauth is OK
2025-09-29T14:18:47.817 [DEBUG] [Thread-158449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:18:47.817 [DEBUG] [Thread-158449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:18:47.817 [DEBUG] [Thread-158449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:18:47.817 [DEBUG] [Thread-158449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:18:47.843 [INFO] [Thread-158449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:18:47.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:18:48.422 [DEBUG] [Thread-158449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:18:48.422 [DEBUG] [Thread-158449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:18:48.422 [DEBUG] [Thread-158449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:18:48.463 [DEBUG] [Thread-158449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:18:48.463 [DEBUG] [Thread-158449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:18:48.465 [DEBUG] [Thread-158449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:18:48.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:18:48.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:18:48.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:18:48.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:18:48.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:18:48.483 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:18:48.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:18:48.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:18:48.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:18:48.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.512916 -999.00  +14.80  10.63     43   +2.40 1 1 1 1 1   888    0 13.75 34.40 ----- 10.3 10.6 114.8 13.4 24.4 -31.5 24.3 -29.0 25.6 -30.2 26.8 -28.6
2025-09-29T14:18:48.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:18:48.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:18:48.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.512916
2025-09-29T14:18:48.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:18:48.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:18:48.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:18:48.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:18:48.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:18:48.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:18:36', tmtdew=14.36, humidity=37.45, cloud=0.0, wind=9.97, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:18:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:18:48.484 [DEBUG] [Thread-158449] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:48.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:18:48.571 [DEBUG] [Thread-158452] [transport.py] [_log()] starting thread (client mode): 0x2e375a20
2025-09-29T14:18:48.571 [DEBUG] [Thread-158452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:18:48.586 [DEBUG] [Thread-158452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:18:48.586 [INFO] [Thread-158452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:18:48.595 [DEBUG] [Thread-158452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:18:48.595 [DEBUG] [Thread-158452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:18:48.595 [DEBUG] [Thread-158452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] client lang: <none>
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] server lang: <none>
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] kex follows: False
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] Compression: none
2025-09-29T14:18:48.596 [DEBUG] [Thread-158452] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:18:48.649 [DEBUG] [Thread-158452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:18:48.649 [DEBUG] [Thread-158452] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:18:48.649 [DEBUG] [Thread-158452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:18:48.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:18:48.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:18:48.706 [DEBUG] [Thread-158452] [transport.py] [_log()] userauth is OK
2025-09-29T14:18:48.706 [DEBUG] [Thread-158452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:18:48.706 [DEBUG] [Thread-158452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:18:48.706 [DEBUG] [Thread-158452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:18:48.706 [DEBUG] [Thread-158452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:18:48.720 [INFO] [Thread-158452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:18:48.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:18:48.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:18:49.737 [DEBUG] [Thread-158452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:18:49.737 [DEBUG] [Thread-158452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:18:49.784 [DEBUG] [Thread-158452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:18:49.784 [DEBUG] [Thread-158452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:18:49.794 [DEBUG] [Thread-158452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:18:49.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:18:49.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:18:49.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:18:49.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:18:49.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:18:49.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:18:49.829 [DEBUG] [Thread-158452] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:18:59.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:18:59.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:18:59.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:19:00.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 18, 36), 14.36, 37.45, 0.0, 9.97, 14.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:19:00.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:18:36
2025-09-29T14:19:00.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:19:00.660 [DEBUG] [Thread-158454] [transport.py] [_log()] starting thread (client mode): 0x2b90d630
2025-09-29T14:19:00.660 [DEBUG] [Thread-158454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:00.682 [DEBUG] [Thread-158454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:19:00.682 [INFO] [Thread-158454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:19:00.685 [DEBUG] [Thread-158454] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:00.685 [DEBUG] [Thread-158454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] Compression: none
2025-09-29T14:19:00.686 [DEBUG] [Thread-158454] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:00.697 [DEBUG] [Thread-158454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:00.697 [DEBUG] [Thread-158454] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:00.698 [DEBUG] [Thread-158454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:19:00.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:19:00.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:00.699 [DEBUG] [Thread-158454] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:00.699 [DEBUG] [Thread-158454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:00.700 [DEBUG] [Thread-158454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:00.700 [DEBUG] [Thread-158454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:19:00.700 [DEBUG] [Thread-158454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:00.719 [INFO] [Thread-158454] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:00.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:01.172 [DEBUG] [Thread-158456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:19:01.465 [DEBUG] [Thread-158454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:01.465 [DEBUG] [Thread-158454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:01.465 [DEBUG] [Thread-158454] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:19:01.506 [DEBUG] [Thread-158454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:01.506 [DEBUG] [Thread-158454] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:01.507 [DEBUG] [Thread-158454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:01.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:01.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:19:01.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:19:01.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:19:01.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:01.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:19:01.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.512916 -999.00  +14.80  10.63     43   +2.40 1 1 1 1 1   888    0 13.75 34.40 ----- 10.3 10.6 114.8 13.4 24.4 -31.5 24.3 -29.0 25.6 -30.2 26.8 -28.6
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.512916
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:19:01.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:18:36', tmtdew=14.36, humidity=37.45, cloud=0.0, wind=9.97, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:18:35.942', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:19:01.526 [DEBUG] [Thread-158454] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:01.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:19:01.609 [DEBUG] [Thread-158458] [transport.py] [_log()] starting thread (client mode): 0x2b90d1e0
2025-09-29T14:19:01.610 [DEBUG] [Thread-158458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:01.624 [DEBUG] [Thread-158458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:19:01.624 [INFO] [Thread-158458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] Compression: none
2025-09-29T14:19:01.632 [DEBUG] [Thread-158458] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:01.694 [DEBUG] [Thread-158458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:01.694 [DEBUG] [Thread-158458] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:01.694 [DEBUG] [Thread-158458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:19:01.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:19:01.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:01.751 [DEBUG] [Thread-158458] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:01.751 [DEBUG] [Thread-158458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:01.751 [DEBUG] [Thread-158458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:01.752 [DEBUG] [Thread-158458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:19:01.752 [DEBUG] [Thread-158458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:01.771 [INFO] [Thread-158458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:01.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:19:01.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:02.835 [DEBUG] [Thread-158458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:02.836 [DEBUG] [Thread-158458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:02.886 [DEBUG] [Thread-158458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:02.886 [DEBUG] [Thread-158458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:02.895 [DEBUG] [Thread-158458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:02.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:02.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:19:02.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:19:02.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:02.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:02.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:02.936 [DEBUG] [Thread-158458] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:03.216 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:19:03.217 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:19:12.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:19:12.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:19:12.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:19:13.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 19, 8), 14.42, 37.34, 0.0, 7.62, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:19:13.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:19:08
2025-09-29T14:19:13.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:19:13.787 [DEBUG] [Thread-158460] [transport.py] [_log()] starting thread (client mode): 0x2e374c40
2025-09-29T14:19:13.787 [DEBUG] [Thread-158460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:13.806 [DEBUG] [Thread-158460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:19:13.806 [INFO] [Thread-158460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:19:13.809 [DEBUG] [Thread-158460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:13.810 [DEBUG] [Thread-158460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:13.811 [DEBUG] [Thread-158460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:13.811 [DEBUG] [Thread-158460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:13.811 [DEBUG] [Thread-158460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:13.811 [DEBUG] [Thread-158460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:13.811 [DEBUG] [Thread-158460] [transport.py] [_log()] Compression: none
2025-09-29T14:19:13.811 [DEBUG] [Thread-158460] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:13.826 [DEBUG] [Thread-158460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:13.827 [DEBUG] [Thread-158460] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:13.827 [DEBUG] [Thread-158460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:19:13.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:19:13.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:13.829 [DEBUG] [Thread-158460] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:13.830 [DEBUG] [Thread-158460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:13.830 [DEBUG] [Thread-158460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:13.830 [DEBUG] [Thread-158460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:19:13.830 [DEBUG] [Thread-158460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:13.848 [INFO] [Thread-158460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:13.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:14.453 [DEBUG] [Thread-158460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:14.453 [DEBUG] [Thread-158460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:14.453 [DEBUG] [Thread-158460] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:19:14.493 [DEBUG] [Thread-158460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:14.494 [DEBUG] [Thread-158460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:14.496 [DEBUG] [Thread-158460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:14.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:14.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:19:14.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:19:14.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:19:14.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:14.511 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:19:14.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:14.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:14.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:19:14.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.513263 -999.00  +14.80   6.80     43   +2.30 1 1 1 1 1   888    0 13.57 31.40 ----- 5.7 6.8 57.4 9.8 24.5 -31.8 24.3 -28.5 25.7 -29.2 26.8 -29.3
2025-09-29T14:19:14.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:19:14.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:19:14.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.513263
2025-09-29T14:19:14.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:19:14.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:19:14.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:19:14.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:19:14.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:19:14.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:19:08', tmtdew=14.42, humidity=37.34, cloud=0.0, wind=7.62, temperature=14.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:19:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:19:14.513 [DEBUG] [Thread-158460] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:14.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:19:14.607 [DEBUG] [Thread-158463] [transport.py] [_log()] starting thread (client mode): 0x2b956fb0
2025-09-29T14:19:14.607 [DEBUG] [Thread-158463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:14.623 [DEBUG] [Thread-158463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:19:14.623 [INFO] [Thread-158463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:19:14.630 [DEBUG] [Thread-158463] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:14.630 [DEBUG] [Thread-158463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:19:14.630 [DEBUG] [Thread-158463] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:14.630 [DEBUG] [Thread-158463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:14.630 [DEBUG] [Thread-158463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:14.630 [DEBUG] [Thread-158463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:14.630 [DEBUG] [Thread-158463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] Compression: none
2025-09-29T14:19:14.631 [DEBUG] [Thread-158463] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:14.686 [DEBUG] [Thread-158463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:14.687 [DEBUG] [Thread-158463] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:14.687 [DEBUG] [Thread-158463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:19:14.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:19:14.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:14.743 [DEBUG] [Thread-158463] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:14.743 [DEBUG] [Thread-158463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:14.743 [DEBUG] [Thread-158463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:14.743 [DEBUG] [Thread-158463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:19:14.743 [DEBUG] [Thread-158463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:14.762 [INFO] [Thread-158463] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:14.763 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:19:14.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:15.750 [DEBUG] [Thread-158463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:15.750 [DEBUG] [Thread-158463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:15.802 [DEBUG] [Thread-158463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:15.802 [DEBUG] [Thread-158463] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:15.814 [DEBUG] [Thread-158463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:15.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:15.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:19:15.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:19:15.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:15.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:15.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:15.859 [DEBUG] [Thread-158463] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:16.207 [DEBUG] [Thread-158465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:19:25.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:19:25.858 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:19:25.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:19:26.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 19, 8), 14.42, 37.34, 0.0, 7.62, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:19:26.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:19:08
2025-09-29T14:19:26.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:19:26.733 [DEBUG] [Thread-158466] [transport.py] [_log()] starting thread (client mode): 0x2e376140
2025-09-29T14:19:26.733 [DEBUG] [Thread-158466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:26.749 [DEBUG] [Thread-158466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:19:26.749 [INFO] [Thread-158466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:19:26.752 [DEBUG] [Thread-158466] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:26.752 [DEBUG] [Thread-158466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:19:26.752 [DEBUG] [Thread-158466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:26.752 [DEBUG] [Thread-158466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:26.752 [DEBUG] [Thread-158466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:26.752 [DEBUG] [Thread-158466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:26.752 [DEBUG] [Thread-158466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:26.752 [DEBUG] [Thread-158466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] Compression: none
2025-09-29T14:19:26.753 [DEBUG] [Thread-158466] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:26.768 [DEBUG] [Thread-158466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:26.768 [DEBUG] [Thread-158466] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:26.768 [DEBUG] [Thread-158466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:19:26.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:19:26.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:26.769 [DEBUG] [Thread-158466] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:26.769 [DEBUG] [Thread-158466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:26.769 [DEBUG] [Thread-158466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:26.769 [DEBUG] [Thread-158466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:19:26.769 [DEBUG] [Thread-158466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:26.782 [INFO] [Thread-158466] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:26.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:27.544 [DEBUG] [Thread-158466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:27.545 [DEBUG] [Thread-158466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:27.545 [DEBUG] [Thread-158466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:19:27.585 [DEBUG] [Thread-158466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:27.585 [DEBUG] [Thread-158466] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:27.588 [DEBUG] [Thread-158466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:27.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:27.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:19:27.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:19:27.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:19:27.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:27.606 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:19:27.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:27.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:27.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:19:27.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.513263 -999.00  +14.80   6.80     43   +2.30 1 1 1 1 1   888    0 13.57 31.40 ----- 5.7 6.8 57.4 9.8 24.5 -31.8 24.3 -28.5 25.7 -29.2 26.8 -29.3
2025-09-29T14:19:27.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:19:27.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:19:27.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.513263
2025-09-29T14:19:27.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:19:27.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:19:27.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:19:27.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:19:27.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:19:27.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:19:08', tmtdew=14.42, humidity=37.34, cloud=0.0, wind=7.62, temperature=14.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:19:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:19:27.609 [DEBUG] [Thread-158466] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:27.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:19:27.705 [DEBUG] [Thread-158469] [transport.py] [_log()] starting thread (client mode): 0x2e3dd510
2025-09-29T14:19:27.705 [DEBUG] [Thread-158469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:27.719 [DEBUG] [Thread-158469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:19:27.719 [INFO] [Thread-158469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:19:27.727 [DEBUG] [Thread-158469] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:27.727 [DEBUG] [Thread-158469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] Compression: none
2025-09-29T14:19:27.728 [DEBUG] [Thread-158469] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:27.787 [DEBUG] [Thread-158469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:27.787 [DEBUG] [Thread-158469] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:27.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:19:27.788 [DEBUG] [Thread-158469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:19:27.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:27.843 [DEBUG] [Thread-158469] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:27.843 [DEBUG] [Thread-158469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:27.852 [DEBUG] [Thread-158469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:27.852 [DEBUG] [Thread-158469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:19:27.852 [DEBUG] [Thread-158469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:27.872 [INFO] [Thread-158469] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:27.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:19:27.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:28.848 [DEBUG] [Thread-158469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:28.848 [DEBUG] [Thread-158469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:28.896 [DEBUG] [Thread-158469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:28.896 [DEBUG] [Thread-158469] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:28.905 [DEBUG] [Thread-158469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:28.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:28.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:19:28.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:19:28.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:28.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:28.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:28.940 [DEBUG] [Thread-158469] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:31.252 [DEBUG] [Thread-158471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:19:38.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:19:38.942 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:19:38.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:19:39.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 19, 8), 14.42, 37.34, 0.0, 7.62, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:19:39.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:19:08
2025-09-29T14:19:39.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:19:39.792 [DEBUG] [Thread-158472] [transport.py] [_log()] starting thread (client mode): 0x2e3dce20
2025-09-29T14:19:39.792 [DEBUG] [Thread-158472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:39.812 [DEBUG] [Thread-158472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:19:39.812 [INFO] [Thread-158472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] Compression: none
2025-09-29T14:19:39.816 [DEBUG] [Thread-158472] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:39.832 [DEBUG] [Thread-158472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:39.833 [DEBUG] [Thread-158472] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:39.833 [DEBUG] [Thread-158472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:19:39.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:19:39.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:39.835 [DEBUG] [Thread-158472] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:39.835 [DEBUG] [Thread-158472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:39.835 [DEBUG] [Thread-158472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:39.835 [DEBUG] [Thread-158472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:19:39.835 [DEBUG] [Thread-158472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:39.853 [INFO] [Thread-158472] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:39.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:40.612 [DEBUG] [Thread-158472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:40.612 [DEBUG] [Thread-158472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:40.612 [DEBUG] [Thread-158472] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:19:40.653 [DEBUG] [Thread-158472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:40.653 [DEBUG] [Thread-158472] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:40.657 [DEBUG] [Thread-158472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:40.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:40.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:19:40.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:19:40.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:19:40.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:40.675 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:19:40.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.513263 -999.00  +14.80   6.80     43   +2.30 1 1 1 1 1   888    0 13.57 31.40 ----- 5.7 6.8 57.4 9.8 24.5 -31.8 24.3 -28.5 25.7 -29.2 26.8 -29.3
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.513263
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:19:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:19:08', tmtdew=14.42, humidity=37.34, cloud=0.0, wind=7.62, temperature=14.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:19:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:19:40.676 [DEBUG] [Thread-158472] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:40.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:19:40.761 [DEBUG] [Thread-158475] [transport.py] [_log()] starting thread (client mode): 0x2e3ddc30
2025-09-29T14:19:40.761 [DEBUG] [Thread-158475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:40.776 [DEBUG] [Thread-158475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:19:40.776 [INFO] [Thread-158475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:19:40.783 [DEBUG] [Thread-158475] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:40.783 [DEBUG] [Thread-158475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:19:40.783 [DEBUG] [Thread-158475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:40.783 [DEBUG] [Thread-158475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] Compression: none
2025-09-29T14:19:40.784 [DEBUG] [Thread-158475] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:40.841 [DEBUG] [Thread-158475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:40.842 [DEBUG] [Thread-158475] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:40.842 [DEBUG] [Thread-158475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:19:40.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:19:40.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:40.899 [DEBUG] [Thread-158475] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:40.899 [DEBUG] [Thread-158475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:40.899 [DEBUG] [Thread-158475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:40.899 [DEBUG] [Thread-158475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:19:40.899 [DEBUG] [Thread-158475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:40.913 [INFO] [Thread-158475] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:40.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:19:40.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:41.906 [DEBUG] [Thread-158475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:41.906 [DEBUG] [Thread-158475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:41.954 [DEBUG] [Thread-158475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:41.954 [DEBUG] [Thread-158475] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:41.962 [DEBUG] [Thread-158475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:41.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:41.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:19:41.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:19:41.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:41.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:41.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:41.994 [DEBUG] [Thread-158475] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:44.299 [DEBUG] [Thread-158477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:19:46.282 [DEBUG] [Thread-158478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:19:51.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:19:51.996 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:19:51.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:19:52.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 19, 39), 14.67, 36.71, 0.0, 7.45, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:19:52.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:19:39
2025-09-29T14:19:52.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:19:52.835 [DEBUG] [Thread-158479] [transport.py] [_log()] starting thread (client mode): 0x2b955e70
2025-09-29T14:19:52.835 [DEBUG] [Thread-158479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:52.855 [DEBUG] [Thread-158479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:19:52.855 [INFO] [Thread-158479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:19:52.858 [DEBUG] [Thread-158479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:52.859 [DEBUG] [Thread-158479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:52.860 [DEBUG] [Thread-158479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:52.860 [DEBUG] [Thread-158479] [transport.py] [_log()] Compression: none
2025-09-29T14:19:52.860 [DEBUG] [Thread-158479] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:52.877 [DEBUG] [Thread-158479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:52.878 [DEBUG] [Thread-158479] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:52.879 [DEBUG] [Thread-158479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:19:52.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:19:52.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:52.881 [DEBUG] [Thread-158479] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:52.882 [DEBUG] [Thread-158479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:52.882 [DEBUG] [Thread-158479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:52.882 [DEBUG] [Thread-158479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:19:52.882 [DEBUG] [Thread-158479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:52.895 [INFO] [Thread-158479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:52.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:53.477 [DEBUG] [Thread-158479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:53.478 [DEBUG] [Thread-158479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:53.478 [DEBUG] [Thread-158479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:19:53.518 [DEBUG] [Thread-158479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:53.518 [DEBUG] [Thread-158479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:53.521 [DEBUG] [Thread-158479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:53.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:53.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:19:53.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:19:53.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:19:53.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:53.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:19:53.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:53.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.513610 -999.00  +15.10   5.72     42   +2.40 1 1 1 1 1   888    0 13.62 25.14 ----- 5.3 5.7 126.4 7.4 24.7 -28.6 24.4 -27.5 25.9 -27.5 26.9 -28.5
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.513610
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:19:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:19:39', tmtdew=14.67, humidity=36.71, cloud=0.0, wind=7.45, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:19:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:19:53.561 [DEBUG] [Thread-158479] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:19:53.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:19:53.656 [DEBUG] [Thread-158482] [transport.py] [_log()] starting thread (client mode): 0x2e375a50
2025-09-29T14:19:53.656 [DEBUG] [Thread-158482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:19:53.673 [DEBUG] [Thread-158482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:19:53.673 [INFO] [Thread-158482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:19:53.680 [DEBUG] [Thread-158482] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:19:53.680 [DEBUG] [Thread-158482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:19:53.680 [DEBUG] [Thread-158482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:19:53.680 [DEBUG] [Thread-158482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:53.680 [DEBUG] [Thread-158482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:19:53.680 [DEBUG] [Thread-158482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:53.680 [DEBUG] [Thread-158482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] client lang: <none>
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] server lang: <none>
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] kex follows: False
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:19:53.681 [DEBUG] [Thread-158482] [transport.py] [_log()] Compression: none
2025-09-29T14:19:53.682 [DEBUG] [Thread-158482] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:19:53.739 [DEBUG] [Thread-158482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:19:53.740 [DEBUG] [Thread-158482] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:19:53.740 [DEBUG] [Thread-158482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:19:53.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:19:53.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:19:53.795 [DEBUG] [Thread-158482] [transport.py] [_log()] userauth is OK
2025-09-29T14:19:53.795 [DEBUG] [Thread-158482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:19:53.795 [DEBUG] [Thread-158482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:19:53.795 [DEBUG] [Thread-158482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:19:53.795 [DEBUG] [Thread-158482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:19:53.813 [INFO] [Thread-158482] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:19:53.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:19:53.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:19:54.813 [DEBUG] [Thread-158482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:19:54.814 [DEBUG] [Thread-158482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:19:54.861 [DEBUG] [Thread-158482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:19:54.861 [DEBUG] [Thread-158482] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:19:54.871 [DEBUG] [Thread-158482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:19:54.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:19:54.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:19:54.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:19:54.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:19:54.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:19:54.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:19:54.904 [DEBUG] [Thread-158482] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:20:01.314 [DEBUG] [Thread-158484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:20:03.356 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:20:03.356 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:20:04.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:20:04.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:20:04.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:20:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 19, 39), 14.67, 36.71, 0.0, 7.45, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:20:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:19:39
2025-09-29T14:20:05.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:20:05.743 [DEBUG] [Thread-158485] [transport.py] [_log()] starting thread (client mode): 0x2b957cd0
2025-09-29T14:20:05.743 [DEBUG] [Thread-158485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:20:05.764 [DEBUG] [Thread-158485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:20:05.764 [INFO] [Thread-158485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:20:05.767 [DEBUG] [Thread-158485] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:20:05.767 [DEBUG] [Thread-158485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] client lang: <none>
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] server lang: <none>
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] kex follows: False
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] Compression: none
2025-09-29T14:20:05.768 [DEBUG] [Thread-158485] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:20:05.785 [DEBUG] [Thread-158485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:20:05.786 [DEBUG] [Thread-158485] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:20:05.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:20:05.787 [DEBUG] [Thread-158485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:20:05.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:20:05.788 [DEBUG] [Thread-158485] [transport.py] [_log()] userauth is OK
2025-09-29T14:20:05.789 [DEBUG] [Thread-158485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:20:05.789 [DEBUG] [Thread-158485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:20:05.789 [DEBUG] [Thread-158485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:20:05.789 [DEBUG] [Thread-158485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:20:05.806 [INFO] [Thread-158485] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:20:05.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:20:13.653 [DEBUG] [Thread-158485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:20:13.653 [DEBUG] [Thread-158485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:20:13.653 [DEBUG] [Thread-158485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:20:13.695 [DEBUG] [Thread-158485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:20:13.695 [DEBUG] [Thread-158485] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:20:13.697 [DEBUG] [Thread-158485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:20:13.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:20:13.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:20:13.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:20:13.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:20:13.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:20:13.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:20:13.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:20:13.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:20:13.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.513610 -999.00  +15.10   5.72     42   +2.40 1 1 1 1 1   888    0 13.62 25.14 ----- 5.3 5.7 126.4 7.4 24.7 -28.6 24.4 -27.5 25.9 -27.5 26.9 -28.5
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.513610
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:20:13.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:19:39', tmtdew=14.67, humidity=36.71, cloud=0.0, wind=7.45, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:19:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:20:13.794 [DEBUG] [Thread-158485] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:20:13.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:20:13.879 [DEBUG] [Thread-158488] [transport.py] [_log()] starting thread (client mode): 0x2b955870
2025-09-29T14:20:13.879 [DEBUG] [Thread-158488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:20:13.895 [DEBUG] [Thread-158488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:20:13.895 [INFO] [Thread-158488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] client lang: <none>
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] server lang: <none>
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] kex follows: False
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:20:13.902 [DEBUG] [Thread-158488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:20:13.903 [DEBUG] [Thread-158488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:20:13.903 [DEBUG] [Thread-158488] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:20:13.903 [DEBUG] [Thread-158488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:20:13.903 [DEBUG] [Thread-158488] [transport.py] [_log()] Compression: none
2025-09-29T14:20:13.903 [DEBUG] [Thread-158488] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:20:13.957 [DEBUG] [Thread-158488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:20:13.957 [DEBUG] [Thread-158488] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:20:13.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:20:13.957 [DEBUG] [Thread-158488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:20:13.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:20:14.015 [DEBUG] [Thread-158488] [transport.py] [_log()] userauth is OK
2025-09-29T14:20:14.015 [DEBUG] [Thread-158488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:20:14.015 [DEBUG] [Thread-158488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:20:14.015 [DEBUG] [Thread-158488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:20:14.015 [DEBUG] [Thread-158488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:20:14.038 [INFO] [Thread-158488] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:20:14.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:20:14.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:20:15.039 [DEBUG] [Thread-158488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:20:15.039 [DEBUG] [Thread-158488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:20:15.087 [DEBUG] [Thread-158488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:20:15.087 [DEBUG] [Thread-158488] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:20:15.096 [DEBUG] [Thread-158488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:20:15.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:20:15.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:20:15.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:20:15.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:20:15.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:20:15.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:20:15.131 [DEBUG] [Thread-158488] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:20:16.352 [DEBUG] [Thread-158490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:20:25.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:20:25.134 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:20:25.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:20:25.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 20, 11), 14.59, 36.89, 0.0, 11.96, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:20:25.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:20:11
2025-09-29T14:20:25.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:20:25.988 [DEBUG] [Thread-158491] [transport.py] [_log()] starting thread (client mode): 0x2b9bba90
2025-09-29T14:20:25.988 [DEBUG] [Thread-158491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:20:26.005 [DEBUG] [Thread-158491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:20:26.005 [INFO] [Thread-158491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:20:26.007 [DEBUG] [Thread-158491] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:20:26.007 [DEBUG] [Thread-158491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] client lang: <none>
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] server lang: <none>
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] kex follows: False
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] Compression: none
2025-09-29T14:20:26.008 [DEBUG] [Thread-158491] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:20:26.025 [DEBUG] [Thread-158491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:20:26.025 [DEBUG] [Thread-158491] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:20:26.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:20:26.026 [DEBUG] [Thread-158491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:20:26.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:20:26.028 [DEBUG] [Thread-158491] [transport.py] [_log()] userauth is OK
2025-09-29T14:20:26.028 [DEBUG] [Thread-158491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:20:26.028 [DEBUG] [Thread-158491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:20:26.028 [DEBUG] [Thread-158491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:20:26.028 [DEBUG] [Thread-158491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:20:26.053 [INFO] [Thread-158491] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:20:26.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:20:26.628 [DEBUG] [Thread-158491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:20:26.628 [DEBUG] [Thread-158491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:20:26.628 [DEBUG] [Thread-158491] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:20:26.669 [DEBUG] [Thread-158491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:20:26.669 [DEBUG] [Thread-158491] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:20:26.672 [DEBUG] [Thread-158491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:20:26.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:20:26.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:20:26.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:20:26.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:20:26.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:20:26.692 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:20:26.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:20:26.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:20:26.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:20:26.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.513957 -999.00  +15.30   7.12     41   +2.40 1 1 1 1 1   888    0 13.31 20.47 ----- 8.5 7.1 145.1 11.7 25.0 -28.2 24.3 -28.5 26.0 -29.6 26.9 -29.6
2025-09-29T14:20:26.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:20:26.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:20:26.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.513957
2025-09-29T14:20:26.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:20:26.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:20:26.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:20:26.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:20:26.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:20:26.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:20:11', tmtdew=14.59, humidity=36.89, cloud=0.0, wind=11.96, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:20:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:20:26.694 [DEBUG] [Thread-158491] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:20:26.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:20:26.790 [DEBUG] [Thread-158494] [transport.py] [_log()] starting thread (client mode): 0x2e3762f0
2025-09-29T14:20:26.790 [DEBUG] [Thread-158494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:20:26.805 [DEBUG] [Thread-158494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:20:26.805 [INFO] [Thread-158494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:20:26.813 [DEBUG] [Thread-158494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] client lang: <none>
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] server lang: <none>
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] kex follows: False
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] Compression: none
2025-09-29T14:20:26.814 [DEBUG] [Thread-158494] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:20:26.871 [DEBUG] [Thread-158494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:20:26.871 [DEBUG] [Thread-158494] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:20:26.872 [DEBUG] [Thread-158494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:20:26.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:20:26.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:20:26.927 [DEBUG] [Thread-158494] [transport.py] [_log()] userauth is OK
2025-09-29T14:20:26.927 [DEBUG] [Thread-158494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:20:26.927 [DEBUG] [Thread-158494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:20:26.927 [DEBUG] [Thread-158494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:20:26.928 [DEBUG] [Thread-158494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:20:26.946 [INFO] [Thread-158494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:20:26.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:20:26.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:20:27.963 [DEBUG] [Thread-158494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:20:27.963 [DEBUG] [Thread-158494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:20:28.010 [DEBUG] [Thread-158494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:20:28.010 [DEBUG] [Thread-158494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:20:28.019 [DEBUG] [Thread-158494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:20:28.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:20:28.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:20:28.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:20:28.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:20:28.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:20:28.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:20:28.056 [DEBUG] [Thread-158494] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:20:31.385 [DEBUG] [Thread-158496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:20:38.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:20:38.058 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:20:38.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:20:38.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 20, 11), 14.59, 36.89, 0.0, 11.96, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:20:38.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:20:11
2025-09-29T14:20:38.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:20:38.942 [DEBUG] [Thread-158497] [transport.py] [_log()] starting thread (client mode): 0x2e360070
2025-09-29T14:20:38.942 [DEBUG] [Thread-158497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:20:38.962 [DEBUG] [Thread-158497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:20:38.962 [INFO] [Thread-158497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:20:38.965 [DEBUG] [Thread-158497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] client lang: <none>
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] server lang: <none>
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] kex follows: False
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] Compression: none
2025-09-29T14:20:38.966 [DEBUG] [Thread-158497] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:20:38.984 [DEBUG] [Thread-158497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:20:38.984 [DEBUG] [Thread-158497] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:20:38.984 [DEBUG] [Thread-158497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:20:38.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:20:38.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:20:38.985 [DEBUG] [Thread-158497] [transport.py] [_log()] userauth is OK
2025-09-29T14:20:38.985 [DEBUG] [Thread-158497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:20:38.985 [DEBUG] [Thread-158497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:20:38.985 [DEBUG] [Thread-158497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:20:38.985 [DEBUG] [Thread-158497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:20:38.996 [INFO] [Thread-158497] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:20:38.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:20:39.767 [DEBUG] [Thread-158497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:20:39.767 [DEBUG] [Thread-158497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:20:39.767 [DEBUG] [Thread-158497] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:20:39.808 [DEBUG] [Thread-158497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:20:39.808 [DEBUG] [Thread-158497] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:20:39.810 [DEBUG] [Thread-158497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:20:39.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:20:39.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:20:39.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:20:39.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:20:39.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:20:39.826 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:20:39.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.513957 -999.00  +15.30   7.12     41   +2.40 1 1 1 1 1   888    0 13.31 20.47 ----- 8.5 7.1 145.1 11.7 25.0 -28.2 24.3 -28.5 26.0 -29.6 26.9 -29.6
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.513957
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:20:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:20:11', tmtdew=14.59, humidity=36.89, cloud=0.0, wind=11.96, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:20:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:20:39.827 [DEBUG] [Thread-158497] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:20:39.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:20:39.911 [DEBUG] [Thread-158500] [transport.py] [_log()] starting thread (client mode): 0x2e3def50
2025-09-29T14:20:39.911 [DEBUG] [Thread-158500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:20:39.925 [DEBUG] [Thread-158500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:20:39.925 [INFO] [Thread-158500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:20:39.932 [DEBUG] [Thread-158500] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:20:39.932 [DEBUG] [Thread-158500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:20:39.932 [DEBUG] [Thread-158500] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] client lang: <none>
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] server lang: <none>
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] kex follows: False
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] Compression: none
2025-09-29T14:20:39.933 [DEBUG] [Thread-158500] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:20:39.989 [DEBUG] [Thread-158500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:20:39.989 [DEBUG] [Thread-158500] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:20:39.990 [DEBUG] [Thread-158500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:20:39.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:20:39.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:20:40.046 [DEBUG] [Thread-158500] [transport.py] [_log()] userauth is OK
2025-09-29T14:20:40.046 [DEBUG] [Thread-158500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:20:40.046 [DEBUG] [Thread-158500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:20:40.046 [DEBUG] [Thread-158500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:20:40.046 [DEBUG] [Thread-158500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:20:40.060 [INFO] [Thread-158500] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:20:40.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:20:40.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:20:41.021 [DEBUG] [Thread-158500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:20:41.021 [DEBUG] [Thread-158500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:20:41.069 [DEBUG] [Thread-158500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:20:41.069 [DEBUG] [Thread-158500] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:20:41.077 [DEBUG] [Thread-158500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:20:41.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:20:41.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:20:41.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:20:41.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:20:41.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:20:41.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:20:41.108 [DEBUG] [Thread-158500] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:20:44.340 [DEBUG] [Thread-158502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:20:46.426 [DEBUG] [Thread-158503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:20:51.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:20:51.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:20:51.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:20:51.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 20, 43), 14.7, 36.89, 0.0, 11.33, 14.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:20:51.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:20:43
2025-09-29T14:20:51.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:20:51.956 [DEBUG] [Thread-158504] [transport.py] [_log()] starting thread (client mode): 0x2b9bb0d0
2025-09-29T14:20:51.956 [DEBUG] [Thread-158504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:20:51.971 [DEBUG] [Thread-158504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:20:51.971 [INFO] [Thread-158504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] client lang: <none>
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] server lang: <none>
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] kex follows: False
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] Compression: none
2025-09-29T14:20:51.973 [DEBUG] [Thread-158504] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:20:51.988 [DEBUG] [Thread-158504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:20:51.989 [DEBUG] [Thread-158504] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:20:51.989 [DEBUG] [Thread-158504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:20:51.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:20:51.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:20:51.990 [DEBUG] [Thread-158504] [transport.py] [_log()] userauth is OK
2025-09-29T14:20:51.991 [DEBUG] [Thread-158504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:20:51.991 [DEBUG] [Thread-158504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:20:51.991 [DEBUG] [Thread-158504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:20:51.991 [DEBUG] [Thread-158504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:20:52.008 [INFO] [Thread-158504] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:20:52.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:20:52.609 [DEBUG] [Thread-158504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:20:52.609 [DEBUG] [Thread-158504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:20:52.609 [DEBUG] [Thread-158504] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:20:52.650 [DEBUG] [Thread-158504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:20:52.650 [DEBUG] [Thread-158504] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:20:52.652 [DEBUG] [Thread-158504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:20:52.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:20:52.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:20:52.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:20:52.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:20:52.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:20:52.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:20:52.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:20:52.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:20:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:20:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.514305 -999.00  +15.30   5.72     41   +2.30 1 1 1 1 1   888    0 13.33 16.78 ----- 7.0 5.7 182.8 10.4 25.0 -28.8 24.2 -29.5 25.9 -29.6 27.1 -29.8
2025-09-29T14:20:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:20:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:20:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.514305
2025-09-29T14:20:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:20:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:20:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:20:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:20:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:20:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:20:43', tmtdew=14.7, humidity=36.89, cloud=0.0, wind=11.33, temperature=14.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:20:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:20:52.668 [DEBUG] [Thread-158504] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:20:52.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:20:52.764 [DEBUG] [Thread-158507] [transport.py] [_log()] starting thread (client mode): 0x2b96d0f0
2025-09-29T14:20:52.764 [DEBUG] [Thread-158507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:20:52.778 [DEBUG] [Thread-158507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:20:52.778 [INFO] [Thread-158507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:20:52.786 [DEBUG] [Thread-158507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:20:52.786 [DEBUG] [Thread-158507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:20:52.786 [DEBUG] [Thread-158507] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:20:52.786 [DEBUG] [Thread-158507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:52.786 [DEBUG] [Thread-158507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:20:52.786 [DEBUG] [Thread-158507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:52.786 [DEBUG] [Thread-158507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] client lang: <none>
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] server lang: <none>
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] kex follows: False
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:20:52.787 [DEBUG] [Thread-158507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:20:52.788 [DEBUG] [Thread-158507] [transport.py] [_log()] Compression: none
2025-09-29T14:20:52.788 [DEBUG] [Thread-158507] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:20:52.842 [DEBUG] [Thread-158507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:20:52.842 [DEBUG] [Thread-158507] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:20:52.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:20:52.843 [DEBUG] [Thread-158507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:20:52.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:20:52.899 [DEBUG] [Thread-158507] [transport.py] [_log()] userauth is OK
2025-09-29T14:20:52.899 [DEBUG] [Thread-158507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:20:52.899 [DEBUG] [Thread-158507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:20:52.899 [DEBUG] [Thread-158507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:20:52.899 [DEBUG] [Thread-158507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:20:52.918 [INFO] [Thread-158507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:20:52.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:20:52.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:20:53.871 [DEBUG] [Thread-158507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:20:53.871 [DEBUG] [Thread-158507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:20:53.919 [DEBUG] [Thread-158507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:20:53.919 [DEBUG] [Thread-158507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:20:53.928 [DEBUG] [Thread-158507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:20:53.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:20:53.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:20:53.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:20:53.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:20:53.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:20:53.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:20:53.963 [DEBUG] [Thread-158507] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:01.461 [DEBUG] [Thread-158509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:21:03.498 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:21:03.500 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:21:03.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:21:03.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:21:03.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:21:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 20, 43), 14.7, 36.89, 0.0, 11.33, 14.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:21:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:20:43
2025-09-29T14:21:04.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:21:04.818 [DEBUG] [Thread-158510] [transport.py] [_log()] starting thread (client mode): 0x2e3ddfc0
2025-09-29T14:21:04.819 [DEBUG] [Thread-158510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:04.839 [DEBUG] [Thread-158510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:21:04.839 [INFO] [Thread-158510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:04.842 [DEBUG] [Thread-158510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] Compression: none
2025-09-29T14:21:04.843 [DEBUG] [Thread-158510] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:04.859 [DEBUG] [Thread-158510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:04.859 [DEBUG] [Thread-158510] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:04.860 [DEBUG] [Thread-158510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:21:04.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:21:04.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:04.862 [DEBUG] [Thread-158510] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:04.862 [DEBUG] [Thread-158510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:04.862 [DEBUG] [Thread-158510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:04.862 [DEBUG] [Thread-158510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:21:04.862 [DEBUG] [Thread-158510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:04.886 [INFO] [Thread-158510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:04.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:05.479 [DEBUG] [Thread-158510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:05.480 [DEBUG] [Thread-158510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:05.480 [DEBUG] [Thread-158510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:21:05.520 [DEBUG] [Thread-158510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:05.520 [DEBUG] [Thread-158510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:05.524 [DEBUG] [Thread-158510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:05.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:05.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:21:05.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:21:05.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:21:05.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:05.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:21:05.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:05.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:05.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:21:05.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.514305 -999.00  +15.30   5.72     41   +2.30 1 1 1 1 1   888    0 13.33 16.78 ----- 7.0 5.7 182.8 10.4 25.0 -28.8 24.2 -29.5 25.9 -29.6 27.1 -29.8
2025-09-29T14:21:05.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:21:05.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:21:05.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.514305
2025-09-29T14:21:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:21:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:21:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:21:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:21:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:21:05.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:20:43', tmtdew=14.7, humidity=36.89, cloud=0.0, wind=11.33, temperature=14.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:20:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:21:05.547 [DEBUG] [Thread-158510] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:05.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:21:05.643 [DEBUG] [Thread-158513] [transport.py] [_log()] starting thread (client mode): 0x2b9568c0
2025-09-29T14:21:05.643 [DEBUG] [Thread-158513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:05.658 [DEBUG] [Thread-158513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:21:05.658 [INFO] [Thread-158513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:05.666 [DEBUG] [Thread-158513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:05.667 [DEBUG] [Thread-158513] [transport.py] [_log()] Compression: none
2025-09-29T14:21:05.667 [DEBUG] [Thread-158513] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:05.724 [DEBUG] [Thread-158513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:05.724 [DEBUG] [Thread-158513] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:05.725 [DEBUG] [Thread-158513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:21:05.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:21:05.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:05.788 [DEBUG] [Thread-158513] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:05.788 [DEBUG] [Thread-158513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:05.788 [DEBUG] [Thread-158513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:05.788 [DEBUG] [Thread-158513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:21:05.788 [DEBUG] [Thread-158513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:05.808 [INFO] [Thread-158513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:05.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:21:05.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:06.819 [DEBUG] [Thread-158513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:06.819 [DEBUG] [Thread-158513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:06.867 [DEBUG] [Thread-158513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:06.868 [DEBUG] [Thread-158513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:06.876 [DEBUG] [Thread-158513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:06.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:06.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:21:06.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:21:06.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:06.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:06.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:06.911 [DEBUG] [Thread-158513] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:16.505 [DEBUG] [Thread-158515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:21:16.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:21:16.913 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:21:16.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:21:17.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 20, 43), 14.7, 36.89, 0.0, 11.33, 14.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:21:17.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:20:43
2025-09-29T14:21:17.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:21:17.824 [DEBUG] [Thread-158516] [transport.py] [_log()] starting thread (client mode): 0x2b96e350
2025-09-29T14:21:17.824 [DEBUG] [Thread-158516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:17.845 [DEBUG] [Thread-158516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:21:17.845 [INFO] [Thread-158516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] Compression: none
2025-09-29T14:21:17.848 [DEBUG] [Thread-158516] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:17.864 [DEBUG] [Thread-158516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:17.864 [DEBUG] [Thread-158516] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:17.864 [DEBUG] [Thread-158516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:21:17.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:21:17.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:17.865 [DEBUG] [Thread-158516] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:17.865 [DEBUG] [Thread-158516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:17.865 [DEBUG] [Thread-158516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:17.865 [DEBUG] [Thread-158516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:21:17.865 [DEBUG] [Thread-158516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:17.874 [INFO] [Thread-158516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:17.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:18.614 [DEBUG] [Thread-158516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:18.614 [DEBUG] [Thread-158516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:18.614 [DEBUG] [Thread-158516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:21:18.655 [DEBUG] [Thread-158516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:18.655 [DEBUG] [Thread-158516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:18.657 [DEBUG] [Thread-158516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:18.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:18.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:21:18.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:21:18.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:21:18.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:18.673 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:21:18.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.514305 -999.00  +15.30   5.72     41   +2.30 1 1 1 1 1   888    0 13.33 16.78 ----- 7.0 5.7 182.8 10.4 25.0 -28.8 24.2 -29.5 25.9 -29.6 27.1 -29.8
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.514305
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:21:18.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:20:43', tmtdew=14.7, humidity=36.89, cloud=0.0, wind=11.33, temperature=14.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:20:35.952', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:21:18.674 [DEBUG] [Thread-158516] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:18.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:21:18.758 [DEBUG] [Thread-158519] [transport.py] [_log()] starting thread (client mode): 0x2b96d9f0
2025-09-29T14:21:18.758 [DEBUG] [Thread-158519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:18.773 [DEBUG] [Thread-158519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:21:18.773 [INFO] [Thread-158519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] Compression: none
2025-09-29T14:21:18.781 [DEBUG] [Thread-158519] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:18.838 [DEBUG] [Thread-158519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:18.838 [DEBUG] [Thread-158519] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:18.839 [DEBUG] [Thread-158519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:21:18.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:21:18.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:18.896 [DEBUG] [Thread-158519] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:18.896 [DEBUG] [Thread-158519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:18.896 [DEBUG] [Thread-158519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:18.896 [DEBUG] [Thread-158519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:21:18.896 [DEBUG] [Thread-158519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:18.910 [INFO] [Thread-158519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:18.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:21:18.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:19.909 [DEBUG] [Thread-158519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:19.910 [DEBUG] [Thread-158519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:19.958 [DEBUG] [Thread-158519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:19.958 [DEBUG] [Thread-158519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:19.967 [DEBUG] [Thread-158519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:19.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:19.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:21:19.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:21:19.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:19.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:19.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:19.999 [DEBUG] [Thread-158519] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:30.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:21:30.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:21:30.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:21:30.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 21, 15), 14.83, 36.57, 0.0, 9.74, 14.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:21:30.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:21:15
2025-09-29T14:21:30.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:21:30.835 [DEBUG] [Thread-158521] [transport.py] [_log()] starting thread (client mode): 0x2e362650
2025-09-29T14:21:30.835 [DEBUG] [Thread-158521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:30.855 [DEBUG] [Thread-158521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:21:30.855 [INFO] [Thread-158521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:21:30.858 [DEBUG] [Thread-158521] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:30.858 [DEBUG] [Thread-158521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:21:30.858 [DEBUG] [Thread-158521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] Compression: none
2025-09-29T14:21:30.859 [DEBUG] [Thread-158521] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:30.875 [DEBUG] [Thread-158521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:30.875 [DEBUG] [Thread-158521] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:30.876 [DEBUG] [Thread-158521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:21:30.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:21:30.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:30.917 [DEBUG] [Thread-158521] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:30.917 [DEBUG] [Thread-158521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:30.917 [DEBUG] [Thread-158521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:30.917 [DEBUG] [Thread-158521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:21:30.917 [DEBUG] [Thread-158521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:30.937 [INFO] [Thread-158521] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:30.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:31.533 [DEBUG] [Thread-158521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:31.533 [DEBUG] [Thread-158521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:31.533 [DEBUG] [Thread-158521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:21:31.535 [DEBUG] [Thread-158523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:21:31.574 [DEBUG] [Thread-158521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:31.575 [DEBUG] [Thread-158521] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:31.578 [DEBUG] [Thread-158521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:31.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:31.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:21:31.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:21:31.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:21:31.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:31.597 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:21:31.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:31.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:31.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:21:31.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.514652 -999.00  +15.70  12.14     41   +2.50 1 1 1 1 1   888    0 13.20 12.80 ----- 9.9 12.1 199.4 16.5 25.1 -29.1 24.0 -28.0 25.9 -28.6 27.1 -28.9
2025-09-29T14:21:31.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:21:31.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:21:31.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.514652
2025-09-29T14:21:31.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:21:31.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:21:31.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:21:31.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:21:31.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:21:31.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:21:15', tmtdew=14.83, humidity=36.57, cloud=0.0, wind=9.74, temperature=14.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:21:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:21:31.600 [DEBUG] [Thread-158521] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:31.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:21:31.698 [DEBUG] [Thread-158525] [transport.py] [_log()] starting thread (client mode): 0x2b9dc340
2025-09-29T14:21:31.698 [DEBUG] [Thread-158525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:31.715 [DEBUG] [Thread-158525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:21:31.715 [INFO] [Thread-158525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:21:31.723 [DEBUG] [Thread-158525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:31.723 [DEBUG] [Thread-158525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:21:31.723 [DEBUG] [Thread-158525] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:31.723 [DEBUG] [Thread-158525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:31.723 [DEBUG] [Thread-158525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:31.723 [DEBUG] [Thread-158525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:31.723 [DEBUG] [Thread-158525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:31.724 [DEBUG] [Thread-158525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:31.725 [DEBUG] [Thread-158525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:31.725 [DEBUG] [Thread-158525] [transport.py] [_log()] Compression: none
2025-09-29T14:21:31.725 [DEBUG] [Thread-158525] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:31.781 [DEBUG] [Thread-158525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:31.781 [DEBUG] [Thread-158525] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:31.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:21:31.782 [DEBUG] [Thread-158525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:21:31.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:31.837 [DEBUG] [Thread-158525] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:31.837 [DEBUG] [Thread-158525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:31.837 [DEBUG] [Thread-158525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:31.837 [DEBUG] [Thread-158525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:21:31.837 [DEBUG] [Thread-158525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:31.857 [INFO] [Thread-158525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:31.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:21:31.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:32.912 [DEBUG] [Thread-158525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:32.912 [DEBUG] [Thread-158525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:32.960 [DEBUG] [Thread-158525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:32.960 [DEBUG] [Thread-158525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:32.969 [DEBUG] [Thread-158525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:32.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:32.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:21:32.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:21:32.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:32.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:32.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:33.003 [DEBUG] [Thread-158525] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:43.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:21:43.006 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:21:43.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:21:43.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 21, 15), 14.83, 36.57, 0.0, 9.74, 14.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:21:43.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:21:15
2025-09-29T14:21:43.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:21:43.840 [DEBUG] [Thread-158527] [transport.py] [_log()] starting thread (client mode): 0x2e360d60
2025-09-29T14:21:43.840 [DEBUG] [Thread-158527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:43.860 [DEBUG] [Thread-158527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:21:43.860 [INFO] [Thread-158527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:21:43.863 [DEBUG] [Thread-158527] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:43.864 [DEBUG] [Thread-158527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:21:43.864 [DEBUG] [Thread-158527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:43.864 [DEBUG] [Thread-158527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:43.864 [DEBUG] [Thread-158527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:43.864 [DEBUG] [Thread-158527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:43.864 [DEBUG] [Thread-158527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:43.864 [DEBUG] [Thread-158527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:43.864 [DEBUG] [Thread-158527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] Compression: none
2025-09-29T14:21:43.865 [DEBUG] [Thread-158527] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:43.882 [DEBUG] [Thread-158527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:43.882 [DEBUG] [Thread-158527] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:43.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:21:43.883 [DEBUG] [Thread-158527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:21:43.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:43.885 [DEBUG] [Thread-158527] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:43.885 [DEBUG] [Thread-158527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:43.885 [DEBUG] [Thread-158527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:43.885 [DEBUG] [Thread-158527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:21:43.885 [DEBUG] [Thread-158527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:43.901 [INFO] [Thread-158527] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:43.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:44.384 [DEBUG] [Thread-158529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:21:44.680 [DEBUG] [Thread-158527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:44.681 [DEBUG] [Thread-158527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:44.681 [DEBUG] [Thread-158527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:21:44.721 [DEBUG] [Thread-158527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:44.721 [DEBUG] [Thread-158527] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:44.723 [DEBUG] [Thread-158527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:44.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:44.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:21:44.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:21:44.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:21:44.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:44.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:21:44.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:44.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:44.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:21:44.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.514652 -999.00  +15.70  12.14     41   +2.50 1 1 1 1 1   888    0 13.20 12.80 ----- 9.9 12.1 199.4 16.5 25.1 -29.1 24.0 -28.0 25.9 -28.6 27.1 -28.9
2025-09-29T14:21:44.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:21:44.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:21:44.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.514652
2025-09-29T14:21:44.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:21:44.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:21:44.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:21:44.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:21:44.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:21:44.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:21:15', tmtdew=14.83, humidity=36.57, cloud=0.0, wind=9.74, temperature=14.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:21:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:21:44.745 [DEBUG] [Thread-158527] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:44.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:21:44.841 [DEBUG] [Thread-158531] [transport.py] [_log()] starting thread (client mode): 0x2b9ddb40
2025-09-29T14:21:44.841 [DEBUG] [Thread-158531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:44.860 [DEBUG] [Thread-158531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:21:44.860 [INFO] [Thread-158531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:44.868 [DEBUG] [Thread-158531] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] Compression: none
2025-09-29T14:21:44.869 [DEBUG] [Thread-158531] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:44.929 [DEBUG] [Thread-158531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:44.930 [DEBUG] [Thread-158531] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:44.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:21:44.931 [DEBUG] [Thread-158531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:21:44.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:44.985 [DEBUG] [Thread-158531] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:44.985 [DEBUG] [Thread-158531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:44.985 [DEBUG] [Thread-158531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:44.985 [DEBUG] [Thread-158531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:21:44.986 [DEBUG] [Thread-158531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:45.000 [INFO] [Thread-158531] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:45.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:21:45.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:45.963 [DEBUG] [Thread-158531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:45.963 [DEBUG] [Thread-158531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:46.011 [DEBUG] [Thread-158531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:46.011 [DEBUG] [Thread-158531] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:46.020 [DEBUG] [Thread-158531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:46.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:46.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:21:46.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:21:46.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:46.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:46.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:46.055 [DEBUG] [Thread-158531] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:46.565 [DEBUG] [Thread-158533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:21:56.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:21:56.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:21:56.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:21:56.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 21, 47), 14.74, 36.47, 0.0, 13.98, 14.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:21:56.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:21:47
2025-09-29T14:21:56.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:21:56.935 [DEBUG] [Thread-158534] [transport.py] [_log()] starting thread (client mode): 0x2b94f820
2025-09-29T14:21:56.935 [DEBUG] [Thread-158534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:21:56.956 [DEBUG] [Thread-158534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:21:56.956 [INFO] [Thread-158534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] client lang: <none>
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] server lang: <none>
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] kex follows: False
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] Compression: none
2025-09-29T14:21:56.959 [DEBUG] [Thread-158534] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:21:56.976 [DEBUG] [Thread-158534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:21:56.976 [DEBUG] [Thread-158534] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:21:56.976 [DEBUG] [Thread-158534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:21:56.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:21:56.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:21:56.977 [DEBUG] [Thread-158534] [transport.py] [_log()] userauth is OK
2025-09-29T14:21:56.977 [DEBUG] [Thread-158534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:21:56.977 [DEBUG] [Thread-158534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:21:56.977 [DEBUG] [Thread-158534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:21:56.977 [DEBUG] [Thread-158534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:21:56.992 [INFO] [Thread-158534] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:21:56.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:21:57.707 [DEBUG] [Thread-158534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:21:57.707 [DEBUG] [Thread-158534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:21:57.707 [DEBUG] [Thread-158534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:21:57.748 [DEBUG] [Thread-158534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:21:57.748 [DEBUG] [Thread-158534] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:21:57.750 [DEBUG] [Thread-158534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:21:57.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:21:57.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:21:57.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:21:57.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:21:57.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:21:57.770 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:21:57.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.514652 -999.00  +15.70  12.14     41   +2.50 1 1 1 1 1   888    0 13.20 12.80 ----- 9.9 12.1 199.4 16.5 25.1 -29.1 24.0 -28.0 25.9 -28.6 27.1 -28.9
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.514652
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:21:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:21:47', tmtdew=14.74, humidity=36.47, cloud=0.0, wind=13.98, temperature=14.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:21:05.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:21:57.771 [DEBUG] [Thread-158534] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:21:57.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:22:01.611 [DEBUG] [Thread-158537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:22:03.640 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:22:03.643 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:22:16.658 [DEBUG] [Thread-158538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:22:31.683 [DEBUG] [Thread-158539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:22:44.420 [DEBUG] [Thread-158540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:22:46.715 [DEBUG] [Thread-158541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:23:01.745 [DEBUG] [Thread-158542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:23:03.790 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:23:03.791 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:23:16.776 [DEBUG] [Thread-158543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:23:31.807 [DEBUG] [Thread-158544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:23:44.452 [DEBUG] [Thread-158545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:23:46.837 [DEBUG] [Thread-158546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:24:01.863 [DEBUG] [Thread-158547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:24:03.930 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:24:03.931 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:24:09.658 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T14:24:16.897 [DEBUG] [Thread-158548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:24:19.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:24:19.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:24:19.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:24:20.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 23, 55), 15.12, 35.7, 0.0, 15.07, 15.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:24:20.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:23:55
2025-09-29T14:24:20.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:24:20.547 [DEBUG] [Thread-158549] [transport.py] [_log()] starting thread (client mode): 0x2b96ebc0
2025-09-29T14:24:20.548 [DEBUG] [Thread-158549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:24:20.567 [DEBUG] [Thread-158549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:24:20.567 [INFO] [Thread-158549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:24:20.570 [DEBUG] [Thread-158549] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:24:20.570 [DEBUG] [Thread-158549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] client lang: <none>
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] server lang: <none>
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] kex follows: False
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:24:20.571 [DEBUG] [Thread-158549] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:24:20.572 [DEBUG] [Thread-158549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:24:20.572 [DEBUG] [Thread-158549] [transport.py] [_log()] Compression: none
2025-09-29T14:24:20.572 [DEBUG] [Thread-158549] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:24:20.589 [DEBUG] [Thread-158549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:24:20.589 [DEBUG] [Thread-158549] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:24:20.590 [DEBUG] [Thread-158549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:24:20.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:24:20.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:24:20.592 [DEBUG] [Thread-158549] [transport.py] [_log()] userauth is OK
2025-09-29T14:24:20.592 [DEBUG] [Thread-158549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:24:20.592 [DEBUG] [Thread-158549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:24:20.592 [DEBUG] [Thread-158549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:24:20.593 [DEBUG] [Thread-158549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:24:20.616 [INFO] [Thread-158549] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:24:20.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:24:21.238 [DEBUG] [Thread-158549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:24:21.238 [DEBUG] [Thread-158549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:24:21.238 [DEBUG] [Thread-158549] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:24:21.279 [DEBUG] [Thread-158549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:24:21.279 [DEBUG] [Thread-158549] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:24:21.282 [DEBUG] [Thread-158549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:24:21.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:24:21.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:24:21.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:24:21.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:24:21.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:24:21.304 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:24:21.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:24:21.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:24:21.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:24:21.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.516735 -999.00  +14.90   8.80     42   +2.10 1 1 1 1 1   888    0 12.77 -4.32 ----- 8.3 8.8 113.9 16.4 24.8 -28.2 24.0 -28.7 25.5 -29.2 26.7 -29.8
2025-09-29T14:24:21.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:24:21.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:24:21.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.516735
2025-09-29T14:24:21.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:24:21.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:24:21.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:24:21.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:24:21.306 [DEBUG] [Thread-158549] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:24:21.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:24:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:23:55', tmtdew=15.12, humidity=35.7, cloud=0.0, wind=15.07, temperature=15.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:24:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:24:21.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:24:21.403 [DEBUG] [Thread-158552] [transport.py] [_log()] starting thread (client mode): 0x2b96e950
2025-09-29T14:24:21.404 [DEBUG] [Thread-158552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:24:21.418 [DEBUG] [Thread-158552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:24:21.418 [INFO] [Thread-158552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:24:21.426 [DEBUG] [Thread-158552] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:24:21.426 [DEBUG] [Thread-158552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:24:21.426 [DEBUG] [Thread-158552] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] client lang: <none>
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] server lang: <none>
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] kex follows: False
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] Compression: none
2025-09-29T14:24:21.427 [DEBUG] [Thread-158552] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:24:21.485 [DEBUG] [Thread-158552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:24:21.486 [DEBUG] [Thread-158552] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:24:21.486 [DEBUG] [Thread-158552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:24:21.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:24:21.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:24:21.542 [DEBUG] [Thread-158552] [transport.py] [_log()] userauth is OK
2025-09-29T14:24:21.542 [DEBUG] [Thread-158552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:24:21.542 [DEBUG] [Thread-158552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:24:21.543 [DEBUG] [Thread-158552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:24:21.543 [DEBUG] [Thread-158552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:24:21.561 [INFO] [Thread-158552] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:24:21.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:24:21.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:24:22.539 [DEBUG] [Thread-158552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:24:22.539 [DEBUG] [Thread-158552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:24:22.587 [DEBUG] [Thread-158552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:24:22.587 [DEBUG] [Thread-158552] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:24:22.596 [DEBUG] [Thread-158552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:24:22.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:24:22.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:24:22.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:24:22.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:24:22.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:24:22.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:24:22.631 [DEBUG] [Thread-158552] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:24:31.929 [DEBUG] [Thread-158554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:24:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:24:32.633 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:24:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:24:33.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 24, 27), 14.92, 36.14, 0.0, 13.98, 15.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:24:33.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:24:27
2025-09-29T14:24:33.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:24:33.498 [DEBUG] [Thread-158555] [transport.py] [_log()] starting thread (client mode): 0x2b96c1f0
2025-09-29T14:24:33.498 [DEBUG] [Thread-158555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:24:33.517 [DEBUG] [Thread-158555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:24:33.518 [INFO] [Thread-158555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] client lang: <none>
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] server lang: <none>
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] kex follows: False
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:24:33.521 [DEBUG] [Thread-158555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:24:33.522 [DEBUG] [Thread-158555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:24:33.522 [DEBUG] [Thread-158555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:24:33.522 [DEBUG] [Thread-158555] [transport.py] [_log()] Compression: none
2025-09-29T14:24:33.522 [DEBUG] [Thread-158555] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:24:33.540 [DEBUG] [Thread-158555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:24:33.541 [DEBUG] [Thread-158555] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:24:33.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:24:33.542 [DEBUG] [Thread-158555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:24:33.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:24:33.543 [DEBUG] [Thread-158555] [transport.py] [_log()] userauth is OK
2025-09-29T14:24:33.544 [DEBUG] [Thread-158555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:24:33.544 [DEBUG] [Thread-158555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:24:33.544 [DEBUG] [Thread-158555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:24:33.544 [DEBUG] [Thread-158555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:24:33.561 [INFO] [Thread-158555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:24:33.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:24:34.357 [DEBUG] [Thread-158555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:24:34.357 [DEBUG] [Thread-158555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:24:34.357 [DEBUG] [Thread-158555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:24:34.398 [DEBUG] [Thread-158555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:24:34.398 [DEBUG] [Thread-158555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:24:34.401 [DEBUG] [Thread-158555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:24:34.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:24:34.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:24:34.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:24:34.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:24:34.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:24:34.424 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:24:34.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:24:34.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:24:34.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:24:34.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.516735 -999.00  +14.90   8.80     42   +2.10 1 1 1 1 1   888    0 12.77 -4.32 ----- 8.3 8.8 113.9 16.4 24.8 -28.2 24.0 -28.7 25.5 -29.2 26.7 -29.8
2025-09-29T14:24:34.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:24:34.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:24:34.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.516735
2025-09-29T14:24:34.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:24:34.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:24:34.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:24:34.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:24:34.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:24:34.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:24:27', tmtdew=14.92, humidity=36.14, cloud=0.0, wind=13.98, temperature=15.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:24:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:24:34.427 [DEBUG] [Thread-158555] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:24:34.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:24:34.531 [DEBUG] [Thread-158558] [transport.py] [_log()] starting thread (client mode): 0x2b96ea40
2025-09-29T14:24:34.531 [DEBUG] [Thread-158558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:24:34.547 [DEBUG] [Thread-158558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:24:34.547 [INFO] [Thread-158558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:24:34.554 [DEBUG] [Thread-158558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:24:34.555 [DEBUG] [Thread-158558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:24:34.555 [DEBUG] [Thread-158558] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:24:34.555 [DEBUG] [Thread-158558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:34.555 [DEBUG] [Thread-158558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:34.555 [DEBUG] [Thread-158558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:34.555 [DEBUG] [Thread-158558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:34.555 [DEBUG] [Thread-158558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:24:34.555 [DEBUG] [Thread-158558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] client lang: <none>
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] server lang: <none>
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] kex follows: False
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] Compression: none
2025-09-29T14:24:34.556 [DEBUG] [Thread-158558] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:24:34.614 [DEBUG] [Thread-158558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:24:34.615 [DEBUG] [Thread-158558] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:24:34.615 [DEBUG] [Thread-158558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:24:34.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:24:34.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:24:34.670 [DEBUG] [Thread-158558] [transport.py] [_log()] userauth is OK
2025-09-29T14:24:34.671 [DEBUG] [Thread-158558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:24:34.671 [DEBUG] [Thread-158558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:24:34.671 [DEBUG] [Thread-158558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:24:34.671 [DEBUG] [Thread-158558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:24:34.690 [INFO] [Thread-158558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:24:34.690 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:24:34.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:24:35.695 [DEBUG] [Thread-158558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:24:35.696 [DEBUG] [Thread-158558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:24:35.743 [DEBUG] [Thread-158558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:24:35.743 [DEBUG] [Thread-158558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:24:35.751 [DEBUG] [Thread-158558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:24:35.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:24:35.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:24:35.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:24:35.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:24:35.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:24:35.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:24:35.785 [DEBUG] [Thread-158558] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:24:44.479 [DEBUG] [Thread-158560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:24:45.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:24:45.787 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:24:45.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:24:46.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 24, 27), 14.92, 36.14, 0.0, 13.98, 15.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:24:46.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:24:27
2025-09-29T14:24:46.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:24:46.661 [DEBUG] [Thread-158561] [transport.py] [_log()] starting thread (client mode): 0x2b96d690
2025-09-29T14:24:46.661 [DEBUG] [Thread-158561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:24:46.681 [DEBUG] [Thread-158561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:24:46.682 [INFO] [Thread-158561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] client lang: <none>
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] server lang: <none>
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] kex follows: False
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] Compression: none
2025-09-29T14:24:46.685 [DEBUG] [Thread-158561] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:24:46.703 [DEBUG] [Thread-158561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:24:46.703 [DEBUG] [Thread-158561] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:24:46.704 [DEBUG] [Thread-158561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:24:46.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:24:46.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:24:46.705 [DEBUG] [Thread-158561] [transport.py] [_log()] userauth is OK
2025-09-29T14:24:46.706 [DEBUG] [Thread-158561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:24:46.706 [DEBUG] [Thread-158561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:24:46.706 [DEBUG] [Thread-158561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:24:46.706 [DEBUG] [Thread-158561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:24:46.719 [INFO] [Thread-158561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:24:46.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:24:46.965 [DEBUG] [Thread-158563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:24:47.363 [DEBUG] [Thread-158561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:24:47.364 [DEBUG] [Thread-158561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:24:47.364 [DEBUG] [Thread-158561] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:24:47.405 [DEBUG] [Thread-158561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:24:47.405 [DEBUG] [Thread-158561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:24:47.407 [DEBUG] [Thread-158561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:24:47.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:24:47.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:24:47.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:24:47.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:24:47.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:24:47.423 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:24:47.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:24:47.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:24:47.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.517082 -999.00  +14.80  11.15     41   +2.00 1 1 1 1 1   888    0 12.85 -7.70 ----- 7.0 11.2 78.4 16.1 24.6 -28.6 24.0 -29.7 25.6 -27.8 26.9 -29.5
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.517082
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:24:47.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:24:27', tmtdew=14.92, humidity=36.14, cloud=0.0, wind=13.98, temperature=15.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:24:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:24:47.424 [DEBUG] [Thread-158561] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:24:47.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:24:47.511 [DEBUG] [Thread-158565] [transport.py] [_log()] starting thread (client mode): 0x2e360790
2025-09-29T14:24:47.511 [DEBUG] [Thread-158565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:24:47.525 [DEBUG] [Thread-158565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:24:47.525 [INFO] [Thread-158565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] client lang: <none>
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] server lang: <none>
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] kex follows: False
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] Compression: none
2025-09-29T14:24:47.533 [DEBUG] [Thread-158565] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:24:47.590 [DEBUG] [Thread-158565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:24:47.590 [DEBUG] [Thread-158565] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:24:47.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:24:47.591 [DEBUG] [Thread-158565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:24:47.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:24:47.648 [DEBUG] [Thread-158565] [transport.py] [_log()] userauth is OK
2025-09-29T14:24:47.648 [DEBUG] [Thread-158565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:24:47.648 [DEBUG] [Thread-158565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:24:47.648 [DEBUG] [Thread-158565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:24:47.648 [DEBUG] [Thread-158565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:24:47.664 [INFO] [Thread-158565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:24:47.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:24:47.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:24:48.654 [DEBUG] [Thread-158565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:24:48.655 [DEBUG] [Thread-158565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:24:48.702 [DEBUG] [Thread-158565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:24:48.703 [DEBUG] [Thread-158565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:24:48.711 [DEBUG] [Thread-158565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:24:48.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:24:48.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:24:48.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:24:48.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:24:48.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:24:48.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:24:48.742 [DEBUG] [Thread-158565] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:24:58.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:24:58.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:24:58.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:24:59.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 24, 27), 14.92, 36.14, 0.0, 13.98, 15.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:24:59.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:24:27
2025-09-29T14:24:59.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:24:59.635 [DEBUG] [Thread-158567] [transport.py] [_log()] starting thread (client mode): 0x2b90d270
2025-09-29T14:24:59.635 [DEBUG] [Thread-158567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:24:59.655 [DEBUG] [Thread-158567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:24:59.655 [INFO] [Thread-158567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:24:59.658 [DEBUG] [Thread-158567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] client lang: <none>
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] server lang: <none>
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] kex follows: False
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] Compression: none
2025-09-29T14:24:59.659 [DEBUG] [Thread-158567] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:24:59.674 [DEBUG] [Thread-158567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:24:59.674 [DEBUG] [Thread-158567] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:24:59.674 [DEBUG] [Thread-158567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:24:59.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:24:59.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:24:59.716 [DEBUG] [Thread-158567] [transport.py] [_log()] userauth is OK
2025-09-29T14:24:59.716 [DEBUG] [Thread-158567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:24:59.716 [DEBUG] [Thread-158567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:24:59.716 [DEBUG] [Thread-158567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:24:59.716 [DEBUG] [Thread-158567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:24:59.735 [INFO] [Thread-158567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:24:59.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:00.543 [DEBUG] [Thread-158567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:00.543 [DEBUG] [Thread-158567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:00.543 [DEBUG] [Thread-158567] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:25:00.584 [DEBUG] [Thread-158567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:00.584 [DEBUG] [Thread-158567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:00.586 [DEBUG] [Thread-158567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:00.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:00.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:25:00.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:25:00.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:25:00.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:00.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:25:00.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:00.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:00.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.517082 -999.00  +14.80  11.15     41   +2.00 1 1 1 1 1   888    0 12.85 -7.70 ----- 7.0 11.2 78.4 16.1 24.6 -28.6 24.0 -29.7 25.6 -27.8 26.9 -29.5
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.517082
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:25:00.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:24:27', tmtdew=14.92, humidity=36.14, cloud=0.0, wind=13.98, temperature=15.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:24:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:25:00.606 [DEBUG] [Thread-158567] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:00.680 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:25:00.690 [DEBUG] [Thread-158570] [transport.py] [_log()] starting thread (client mode): 0x2b955510
2025-09-29T14:25:00.690 [DEBUG] [Thread-158570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:00.705 [DEBUG] [Thread-158570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:25:00.705 [INFO] [Thread-158570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:00.712 [DEBUG] [Thread-158570] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:00.713 [DEBUG] [Thread-158570] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:00.713 [DEBUG] [Thread-158570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:00.713 [DEBUG] [Thread-158570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:00.713 [DEBUG] [Thread-158570] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:00.713 [DEBUG] [Thread-158570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:00.713 [DEBUG] [Thread-158570] [transport.py] [_log()] Compression: none
2025-09-29T14:25:00.713 [DEBUG] [Thread-158570] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:00.776 [DEBUG] [Thread-158570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:00.776 [DEBUG] [Thread-158570] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:00.776 [DEBUG] [Thread-158570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:25:00.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:25:00.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:00.831 [DEBUG] [Thread-158570] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:00.831 [DEBUG] [Thread-158570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:00.831 [DEBUG] [Thread-158570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:00.831 [DEBUG] [Thread-158570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:25:00.831 [DEBUG] [Thread-158570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:00.845 [INFO] [Thread-158570] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:00.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:25:00.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:01.822 [DEBUG] [Thread-158570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:01.822 [DEBUG] [Thread-158570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:01.870 [DEBUG] [Thread-158570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:01.870 [DEBUG] [Thread-158570] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:01.879 [DEBUG] [Thread-158570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:01.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:01.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:25:01.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:25:01.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:01.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:01.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:01.914 [DEBUG] [Thread-158570] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:02.003 [DEBUG] [Thread-158572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:25:04.069 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:25:04.070 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:25:11.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:25:11.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:25:11.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:25:12.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 24, 59), 15.1, 36.08, 0.0, 6.11, 15.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:25:12.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:24:59
2025-09-29T14:25:12.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:25:12.793 [DEBUG] [Thread-158573] [transport.py] [_log()] starting thread (client mode): 0x2b9b9f00
2025-09-29T14:25:12.793 [DEBUG] [Thread-158573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:12.807 [DEBUG] [Thread-158573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:25:12.807 [INFO] [Thread-158573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:12.810 [DEBUG] [Thread-158573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:12.811 [DEBUG] [Thread-158573] [transport.py] [_log()] Compression: none
2025-09-29T14:25:12.811 [DEBUG] [Thread-158573] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:12.823 [DEBUG] [Thread-158573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:12.823 [DEBUG] [Thread-158573] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:12.823 [DEBUG] [Thread-158573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:25:12.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:25:12.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:12.824 [DEBUG] [Thread-158573] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:12.824 [DEBUG] [Thread-158573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:12.824 [DEBUG] [Thread-158573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:12.824 [DEBUG] [Thread-158573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:25:12.824 [DEBUG] [Thread-158573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:12.851 [INFO] [Thread-158573] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:12.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:17.044 [DEBUG] [Thread-158575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:25:17.701 [DEBUG] [Thread-158573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:17.701 [DEBUG] [Thread-158573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:17.702 [DEBUG] [Thread-158573] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:25:17.742 [DEBUG] [Thread-158573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:17.743 [DEBUG] [Thread-158573] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:17.746 [DEBUG] [Thread-158573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:17.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:17.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:25:17.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:25:17.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:25:17.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:17.783 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:25:17.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:17.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:17.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:25:17.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.517082 -999.00  +14.80  11.15     41   +2.00 1 1 1 1 1   888    0 12.85 -7.70 ----- 7.0 11.2 78.4 16.1 24.6 -28.6 24.0 -29.7 25.6 -27.8 26.9 -29.5
2025-09-29T14:25:17.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:25:17.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:25:17.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.517082
2025-09-29T14:25:17.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:25:17.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:25:17.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:25:17.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:25:17.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:25:17.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:24:59', tmtdew=15.1, humidity=36.08, cloud=0.0, wind=6.11, temperature=15.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:24:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:25:17.786 [DEBUG] [Thread-158573] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:17.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:25:17.883 [DEBUG] [Thread-158577] [transport.py] [_log()] starting thread (client mode): 0x2e360a30
2025-09-29T14:25:17.883 [DEBUG] [Thread-158577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:17.898 [DEBUG] [Thread-158577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:25:17.898 [INFO] [Thread-158577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:25:17.905 [DEBUG] [Thread-158577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:17.905 [DEBUG] [Thread-158577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:25:17.905 [DEBUG] [Thread-158577] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:17.906 [DEBUG] [Thread-158577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:17.907 [DEBUG] [Thread-158577] [transport.py] [_log()] Compression: none
2025-09-29T14:25:17.907 [DEBUG] [Thread-158577] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:17.964 [DEBUG] [Thread-158577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:17.965 [DEBUG] [Thread-158577] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:17.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:25:17.966 [DEBUG] [Thread-158577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:25:17.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:18.024 [DEBUG] [Thread-158577] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:18.025 [DEBUG] [Thread-158577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:18.025 [DEBUG] [Thread-158577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:18.025 [DEBUG] [Thread-158577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:25:18.025 [DEBUG] [Thread-158577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:18.047 [INFO] [Thread-158577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:18.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:25:18.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:19.043 [DEBUG] [Thread-158577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:19.043 [DEBUG] [Thread-158577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:19.091 [DEBUG] [Thread-158577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:19.091 [DEBUG] [Thread-158577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:19.100 [DEBUG] [Thread-158577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:19.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:19.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:25:19.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:25:19.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:19.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:19.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:19.145 [DEBUG] [Thread-158577] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:29.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:25:29.143 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:25:29.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:25:29.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 24, 59), 15.1, 36.08, 0.0, 6.11, 15.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:25:29.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:24:59
2025-09-29T14:25:29.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:25:30.046 [DEBUG] [Thread-158579] [transport.py] [_log()] starting thread (client mode): 0x2b9568c0
2025-09-29T14:25:30.046 [DEBUG] [Thread-158579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:30.068 [DEBUG] [Thread-158579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:25:30.068 [INFO] [Thread-158579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:30.071 [DEBUG] [Thread-158579] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:30.072 [DEBUG] [Thread-158579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:30.072 [DEBUG] [Thread-158579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:30.072 [DEBUG] [Thread-158579] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:30.072 [DEBUG] [Thread-158579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:30.072 [DEBUG] [Thread-158579] [transport.py] [_log()] Compression: none
2025-09-29T14:25:30.072 [DEBUG] [Thread-158579] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:30.087 [DEBUG] [Thread-158579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:30.088 [DEBUG] [Thread-158579] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:30.088 [DEBUG] [Thread-158579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:25:30.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:25:30.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:30.089 [DEBUG] [Thread-158579] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:30.089 [DEBUG] [Thread-158579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:30.089 [DEBUG] [Thread-158579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:30.089 [DEBUG] [Thread-158579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:25:30.089 [DEBUG] [Thread-158579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:30.107 [INFO] [Thread-158579] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:30.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:30.693 [DEBUG] [Thread-158579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:30.693 [DEBUG] [Thread-158579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:30.694 [DEBUG] [Thread-158579] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:25:30.733 [DEBUG] [Thread-158579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:30.734 [DEBUG] [Thread-158579] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:30.737 [DEBUG] [Thread-158579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:30.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:30.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:25:30.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:25:30.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:25:30.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:30.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:25:30.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:30.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:30.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:25:30.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.517429 -999.00  +14.90   2.40     42   +2.10 1 1 1 1 1   888    0 12.69 -11.10 ----- 4.3 2.4 102.4 3.6 24.4 -29.7 24.2 -27.5 25.4 -29.0 26.8 -28.7
2025-09-29T14:25:30.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:25:30.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:25:30.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.517429
2025-09-29T14:25:30.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:25:30.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:25:30.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:25:30.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:25:30.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:25:30.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:24:59', tmtdew=15.1, humidity=36.08, cloud=0.0, wind=6.11, temperature=15.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:25:05.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:25:30.763 [DEBUG] [Thread-158579] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:30.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:25:30.846 [DEBUG] [Thread-158582] [transport.py] [_log()] starting thread (client mode): 0x2b96eda0
2025-09-29T14:25:30.846 [DEBUG] [Thread-158582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:30.862 [DEBUG] [Thread-158582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:25:30.863 [INFO] [Thread-158582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:25:30.870 [DEBUG] [Thread-158582] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:30.870 [DEBUG] [Thread-158582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] Compression: none
2025-09-29T14:25:30.871 [DEBUG] [Thread-158582] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:30.928 [DEBUG] [Thread-158582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:30.929 [DEBUG] [Thread-158582] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:30.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:25:30.930 [DEBUG] [Thread-158582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:25:30.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:30.985 [DEBUG] [Thread-158582] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:30.985 [DEBUG] [Thread-158582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:30.985 [DEBUG] [Thread-158582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:30.985 [DEBUG] [Thread-158582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:25:30.985 [DEBUG] [Thread-158582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:31.005 [INFO] [Thread-158582] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:31.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:25:31.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:32.072 [DEBUG] [Thread-158584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:25:32.107 [DEBUG] [Thread-158582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:32.107 [DEBUG] [Thread-158582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:32.155 [DEBUG] [Thread-158582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:32.155 [DEBUG] [Thread-158582] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:32.163 [DEBUG] [Thread-158582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:32.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:32.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:25:32.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:25:32.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:32.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:32.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:32.195 [DEBUG] [Thread-158582] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:42.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:25:42.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:25:42.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:25:42.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 25, 30), 15.04, 36.19, 0.0, 4.2, 15.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:25:42.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:25:30
2025-09-29T14:25:42.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:25:43.046 [DEBUG] [Thread-158585] [transport.py] [_log()] starting thread (client mode): 0x2e3636d0
2025-09-29T14:25:43.046 [DEBUG] [Thread-158585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:43.060 [DEBUG] [Thread-158585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:25:43.061 [INFO] [Thread-158585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:25:43.062 [DEBUG] [Thread-158585] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] Compression: none
2025-09-29T14:25:43.063 [DEBUG] [Thread-158585] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:43.087 [DEBUG] [Thread-158585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:43.088 [DEBUG] [Thread-158585] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:43.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:25:43.089 [DEBUG] [Thread-158585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:25:43.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:43.090 [DEBUG] [Thread-158585] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:43.091 [DEBUG] [Thread-158585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:43.091 [DEBUG] [Thread-158585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:43.091 [DEBUG] [Thread-158585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:25:43.091 [DEBUG] [Thread-158585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:43.115 [INFO] [Thread-158585] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:43.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:43.770 [DEBUG] [Thread-158585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:43.770 [DEBUG] [Thread-158585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:43.770 [DEBUG] [Thread-158585] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:25:43.811 [DEBUG] [Thread-158585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:43.811 [DEBUG] [Thread-158585] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:43.815 [DEBUG] [Thread-158585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:43.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:43.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:25:43.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:25:43.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:25:43.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:43.839 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:25:43.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:43.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:43.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:25:43.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.517429 -999.00  +14.90   2.40     42   +2.10 1 1 1 1 1   888    0 12.69 -11.10 ----- 4.3 2.4 102.4 3.6 24.4 -29.7 24.2 -27.5 25.4 -29.0 26.8 -28.7
2025-09-29T14:25:43.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:25:43.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:25:43.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.517429
2025-09-29T14:25:43.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:25:43.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:25:43.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:25:43.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:25:43.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:25:43.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:25:30', tmtdew=15.04, humidity=36.19, cloud=0.0, wind=4.2, temperature=15.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:25:05.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:25:43.843 [DEBUG] [Thread-158585] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:43.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:25:43.947 [DEBUG] [Thread-158588] [transport.py] [_log()] starting thread (client mode): 0x2b9568f0
2025-09-29T14:25:43.947 [DEBUG] [Thread-158588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:43.962 [DEBUG] [Thread-158588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:25:43.962 [INFO] [Thread-158588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:43.970 [DEBUG] [Thread-158588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:43.971 [DEBUG] [Thread-158588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:43.971 [DEBUG] [Thread-158588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:43.971 [DEBUG] [Thread-158588] [transport.py] [_log()] Compression: none
2025-09-29T14:25:43.971 [DEBUG] [Thread-158588] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:44.028 [DEBUG] [Thread-158588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:44.028 [DEBUG] [Thread-158588] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:44.029 [DEBUG] [Thread-158588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:25:44.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:25:44.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:44.085 [DEBUG] [Thread-158588] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:44.086 [DEBUG] [Thread-158588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:44.086 [DEBUG] [Thread-158588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:44.086 [DEBUG] [Thread-158588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:25:44.086 [DEBUG] [Thread-158588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:44.104 [INFO] [Thread-158588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:44.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:25:44.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:44.515 [DEBUG] [Thread-158590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:25:45.086 [DEBUG] [Thread-158588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:45.086 [DEBUG] [Thread-158588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:45.136 [DEBUG] [Thread-158588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:45.136 [DEBUG] [Thread-158588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:45.145 [DEBUG] [Thread-158588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:45.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:45.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:25:45.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:25:45.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:45.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:45.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:45.178 [DEBUG] [Thread-158588] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:47.117 [DEBUG] [Thread-158591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:25:55.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:25:55.181 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:25:55.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:25:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 25, 30), 15.04, 36.19, 0.0, 4.2, 15.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:25:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:25:30
2025-09-29T14:25:55.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:25:56.041 [DEBUG] [Thread-158592] [transport.py] [_log()] starting thread (client mode): 0x2e3df370
2025-09-29T14:25:56.041 [DEBUG] [Thread-158592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:56.061 [DEBUG] [Thread-158592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:25:56.061 [INFO] [Thread-158592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:25:56.064 [DEBUG] [Thread-158592] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:56.064 [DEBUG] [Thread-158592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:25:56.064 [DEBUG] [Thread-158592] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:56.064 [DEBUG] [Thread-158592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:56.064 [DEBUG] [Thread-158592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:56.064 [DEBUG] [Thread-158592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] Compression: none
2025-09-29T14:25:56.065 [DEBUG] [Thread-158592] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:56.084 [DEBUG] [Thread-158592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:56.085 [DEBUG] [Thread-158592] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:56.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:25:56.086 [DEBUG] [Thread-158592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:25:56.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:56.088 [DEBUG] [Thread-158592] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:56.089 [DEBUG] [Thread-158592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:56.089 [DEBUG] [Thread-158592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:56.089 [DEBUG] [Thread-158592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:25:56.089 [DEBUG] [Thread-158592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:56.104 [INFO] [Thread-158592] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:56.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:56.708 [DEBUG] [Thread-158592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:56.708 [DEBUG] [Thread-158592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:56.709 [DEBUG] [Thread-158592] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:25:56.749 [DEBUG] [Thread-158592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:56.749 [DEBUG] [Thread-158592] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:56.751 [DEBUG] [Thread-158592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:56.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:56.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:25:56.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:25:56.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:25:56.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:56.762 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:25:56.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:56.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.517777 -999.00  +15.10   9.99     42   +2.30 1 1 1 1 1   888    0 12.15 -15.33 ----- 11.2 10.0 179.4 14.6 24.9 -28.5 24.0 -31.0 25.7 -28.3 26.9 -29.9
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.517777
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:25:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:25:30', tmtdew=15.04, humidity=36.19, cloud=0.0, wind=4.2, temperature=15.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:25:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:25:56.763 [DEBUG] [Thread-158592] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:25:56.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:25:56.846 [DEBUG] [Thread-158595] [transport.py] [_log()] starting thread (client mode): 0x2b9b95d0
2025-09-29T14:25:56.846 [DEBUG] [Thread-158595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:25:56.861 [DEBUG] [Thread-158595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:25:56.861 [INFO] [Thread-158595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] client lang: <none>
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] server lang: <none>
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] kex follows: False
2025-09-29T14:25:56.868 [DEBUG] [Thread-158595] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:25:56.869 [DEBUG] [Thread-158595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:25:56.869 [DEBUG] [Thread-158595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:25:56.869 [DEBUG] [Thread-158595] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:25:56.869 [DEBUG] [Thread-158595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:25:56.869 [DEBUG] [Thread-158595] [transport.py] [_log()] Compression: none
2025-09-29T14:25:56.869 [DEBUG] [Thread-158595] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:25:56.926 [DEBUG] [Thread-158595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:25:56.926 [DEBUG] [Thread-158595] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:25:56.927 [DEBUG] [Thread-158595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:25:56.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:25:56.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:25:56.982 [DEBUG] [Thread-158595] [transport.py] [_log()] userauth is OK
2025-09-29T14:25:56.982 [DEBUG] [Thread-158595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:25:56.982 [DEBUG] [Thread-158595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:25:56.982 [DEBUG] [Thread-158595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:25:56.982 [DEBUG] [Thread-158595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:25:57.001 [INFO] [Thread-158595] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:25:57.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:25:57.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:25:57.955 [DEBUG] [Thread-158595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:25:57.955 [DEBUG] [Thread-158595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:25:58.003 [DEBUG] [Thread-158595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:25:58.003 [DEBUG] [Thread-158595] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:25:58.012 [DEBUG] [Thread-158595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:25:58.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:25:58.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:25:58.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:25:58.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:25:58.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:25:58.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:25:58.047 [DEBUG] [Thread-158595] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:26:02.166 [DEBUG] [Thread-158597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:26:04.212 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:26:04.212 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:26:08.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:26:08.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:26:08.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:26:08.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 26, 2), 15.04, 36.21, 0.0, 9.47, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:26:08.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:26:02
2025-09-29T14:26:08.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:26:08.902 [DEBUG] [Thread-158598] [transport.py] [_log()] starting thread (client mode): 0x2b96ccd0
2025-09-29T14:26:08.903 [DEBUG] [Thread-158598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:26:08.923 [DEBUG] [Thread-158598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:26:08.923 [INFO] [Thread-158598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] client lang: <none>
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] server lang: <none>
2025-09-29T14:26:08.926 [DEBUG] [Thread-158598] [transport.py] [_log()] kex follows: False
2025-09-29T14:26:08.927 [DEBUG] [Thread-158598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:26:08.927 [DEBUG] [Thread-158598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:26:08.927 [DEBUG] [Thread-158598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:26:08.927 [DEBUG] [Thread-158598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:26:08.927 [DEBUG] [Thread-158598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:26:08.927 [DEBUG] [Thread-158598] [transport.py] [_log()] Compression: none
2025-09-29T14:26:08.927 [DEBUG] [Thread-158598] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:26:08.942 [DEBUG] [Thread-158598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:26:08.943 [DEBUG] [Thread-158598] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:26:08.943 [DEBUG] [Thread-158598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:26:08.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:26:08.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:26:08.945 [DEBUG] [Thread-158598] [transport.py] [_log()] userauth is OK
2025-09-29T14:26:08.945 [DEBUG] [Thread-158598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:26:08.945 [DEBUG] [Thread-158598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:26:08.945 [DEBUG] [Thread-158598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:26:08.945 [DEBUG] [Thread-158598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:26:08.963 [INFO] [Thread-158598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:26:08.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:26:09.700 [DEBUG] [Thread-158598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:26:09.701 [DEBUG] [Thread-158598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:26:09.701 [DEBUG] [Thread-158598] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:26:09.741 [DEBUG] [Thread-158598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:26:09.741 [DEBUG] [Thread-158598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:26:09.743 [DEBUG] [Thread-158598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:26:09.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:26:09.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:26:09.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:26:09.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:26:09.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:26:09.762 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:26:09.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:26:09.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:26:09.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:26:09.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.517777 -999.00  +15.10   9.99     42   +2.30 1 1 1 1 1   888    0 12.15 -15.33 ----- 11.2 10.0 179.4 14.6 24.9 -28.5 24.0 -31.0 25.7 -28.3 26.9 -29.9
2025-09-29T14:26:09.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:26:09.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:26:09.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.517777
2025-09-29T14:26:09.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:26:09.765 [DEBUG] [Thread-158598] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:26:09.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:26:09.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:26:09.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:26:09.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:26:09.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:26:02', tmtdew=15.04, humidity=36.21, cloud=0.0, wind=9.47, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:25:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:26:09.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:26:09.855 [DEBUG] [Thread-158601] [transport.py] [_log()] starting thread (client mode): 0x2e360460
2025-09-29T14:26:09.855 [DEBUG] [Thread-158601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:26:09.870 [DEBUG] [Thread-158601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:26:09.870 [INFO] [Thread-158601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:26:09.877 [DEBUG] [Thread-158601] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:26:09.878 [DEBUG] [Thread-158601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:26:09.878 [DEBUG] [Thread-158601] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:26:09.878 [DEBUG] [Thread-158601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:09.878 [DEBUG] [Thread-158601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:09.878 [DEBUG] [Thread-158601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:09.878 [DEBUG] [Thread-158601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:09.878 [DEBUG] [Thread-158601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:26:09.878 [DEBUG] [Thread-158601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] client lang: <none>
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] server lang: <none>
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] kex follows: False
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:26:09.879 [DEBUG] [Thread-158601] [transport.py] [_log()] Compression: none
2025-09-29T14:26:09.880 [DEBUG] [Thread-158601] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:26:09.935 [DEBUG] [Thread-158601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:26:09.935 [DEBUG] [Thread-158601] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:26:09.936 [DEBUG] [Thread-158601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:26:09.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:26:09.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:26:09.990 [DEBUG] [Thread-158601] [transport.py] [_log()] userauth is OK
2025-09-29T14:26:09.991 [DEBUG] [Thread-158601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:26:09.991 [DEBUG] [Thread-158601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:26:09.991 [DEBUG] [Thread-158601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:26:09.991 [DEBUG] [Thread-158601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:26:10.010 [INFO] [Thread-158601] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:26:10.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:26:10.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:26:11.004 [DEBUG] [Thread-158601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:26:11.004 [DEBUG] [Thread-158601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:26:11.052 [DEBUG] [Thread-158601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:26:11.052 [DEBUG] [Thread-158601] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:26:11.062 [DEBUG] [Thread-158601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:26:11.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:26:11.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:26:11.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:26:11.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:26:11.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:26:11.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:26:11.097 [DEBUG] [Thread-158601] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:26:17.211 [DEBUG] [Thread-158603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:26:21.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:26:21.100 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:26:21.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:26:21.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 26, 2), 15.04, 36.21, 0.0, 9.47, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:26:21.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:26:02
2025-09-29T14:26:21.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:26:21.958 [DEBUG] [Thread-158604] [transport.py] [_log()] starting thread (client mode): 0x2e3de920
2025-09-29T14:26:21.958 [DEBUG] [Thread-158604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:26:21.979 [DEBUG] [Thread-158604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:26:21.979 [INFO] [Thread-158604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] client lang: <none>
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] server lang: <none>
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] kex follows: False
2025-09-29T14:26:21.982 [DEBUG] [Thread-158604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:26:21.983 [DEBUG] [Thread-158604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:26:21.983 [DEBUG] [Thread-158604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:26:21.983 [DEBUG] [Thread-158604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:26:21.983 [DEBUG] [Thread-158604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:26:21.983 [DEBUG] [Thread-158604] [transport.py] [_log()] Compression: none
2025-09-29T14:26:21.983 [DEBUG] [Thread-158604] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:26:21.999 [DEBUG] [Thread-158604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:26:21.999 [DEBUG] [Thread-158604] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:26:21.999 [DEBUG] [Thread-158604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:26:22.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:26:22.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:26:22.000 [DEBUG] [Thread-158604] [transport.py] [_log()] userauth is OK
2025-09-29T14:26:22.000 [DEBUG] [Thread-158604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:26:22.000 [DEBUG] [Thread-158604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:26:22.000 [DEBUG] [Thread-158604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:26:22.000 [DEBUG] [Thread-158604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:26:22.009 [INFO] [Thread-158604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:26:22.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:26:22.739 [DEBUG] [Thread-158604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:26:22.739 [DEBUG] [Thread-158604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:26:22.739 [DEBUG] [Thread-158604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:26:22.779 [DEBUG] [Thread-158604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:26:22.780 [DEBUG] [Thread-158604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:26:22.783 [DEBUG] [Thread-158604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:26:22.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:26:22.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:26:22.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:26:22.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:26:22.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:26:22.806 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:26:22.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:26:22.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:26:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:26:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.517777 -999.00  +15.10   9.99     42   +2.30 1 1 1 1 1   888    0 12.15 -15.33 ----- 11.2 10.0 179.4 14.6 24.9 -28.5 24.0 -31.0 25.7 -28.3 26.9 -29.9
2025-09-29T14:26:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:26:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:26:22.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.517777
2025-09-29T14:26:22.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:26:22.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:26:22.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:26:22.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:26:22.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:26:22.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:26:02', tmtdew=15.04, humidity=36.21, cloud=0.0, wind=9.47, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:25:35.933', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:26:22.809 [DEBUG] [Thread-158604] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:26:22.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:26:22.905 [DEBUG] [Thread-158607] [transport.py] [_log()] starting thread (client mode): 0x2b9b9f00
2025-09-29T14:26:22.905 [DEBUG] [Thread-158607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:26:22.920 [DEBUG] [Thread-158607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:26:22.920 [INFO] [Thread-158607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:26:22.927 [DEBUG] [Thread-158607] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] client lang: <none>
2025-09-29T14:26:22.928 [DEBUG] [Thread-158607] [transport.py] [_log()] server lang: <none>
2025-09-29T14:26:22.929 [DEBUG] [Thread-158607] [transport.py] [_log()] kex follows: False
2025-09-29T14:26:22.929 [DEBUG] [Thread-158607] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:26:22.929 [DEBUG] [Thread-158607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:26:22.929 [DEBUG] [Thread-158607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:26:22.929 [DEBUG] [Thread-158607] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:26:22.929 [DEBUG] [Thread-158607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:26:22.930 [DEBUG] [Thread-158607] [transport.py] [_log()] Compression: none
2025-09-29T14:26:22.930 [DEBUG] [Thread-158607] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:26:22.987 [DEBUG] [Thread-158607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:26:22.987 [DEBUG] [Thread-158607] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:26:22.988 [DEBUG] [Thread-158607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:26:22.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:26:22.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:26:23.043 [DEBUG] [Thread-158607] [transport.py] [_log()] userauth is OK
2025-09-29T14:26:23.043 [DEBUG] [Thread-158607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:26:23.043 [DEBUG] [Thread-158607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:26:23.044 [DEBUG] [Thread-158607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:26:23.044 [DEBUG] [Thread-158607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:26:23.063 [INFO] [Thread-158607] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:26:23.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:26:23.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:26:24.064 [DEBUG] [Thread-158607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:26:24.064 [DEBUG] [Thread-158607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:26:24.113 [DEBUG] [Thread-158607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:26:24.113 [DEBUG] [Thread-158607] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:26:24.122 [DEBUG] [Thread-158607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:26:24.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:26:24.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:26:24.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:26:24.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:26:24.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:26:24.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:26:24.160 [DEBUG] [Thread-158607] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:26:32.261 [DEBUG] [Thread-158609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:26:34.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:26:34.160 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:26:34.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:26:34.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 26, 2), 15.04, 36.21, 0.0, 9.47, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:26:34.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:26:02
2025-09-29T14:26:34.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:26:35.029 [DEBUG] [Thread-158610] [transport.py] [_log()] starting thread (client mode): 0x2e3dcc40
2025-09-29T14:26:35.029 [DEBUG] [Thread-158610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:26:35.050 [DEBUG] [Thread-158610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:26:35.050 [INFO] [Thread-158610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:26:35.054 [DEBUG] [Thread-158610] [transport.py] [_log()] client lang: <none>
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] server lang: <none>
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] kex follows: False
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] Compression: none
2025-09-29T14:26:35.055 [DEBUG] [Thread-158610] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:26:35.070 [DEBUG] [Thread-158610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:26:35.070 [DEBUG] [Thread-158610] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:26:35.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:26:35.071 [DEBUG] [Thread-158610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:26:35.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:26:35.071 [DEBUG] [Thread-158610] [transport.py] [_log()] userauth is OK
2025-09-29T14:26:35.071 [DEBUG] [Thread-158610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:26:35.071 [DEBUG] [Thread-158610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:26:35.071 [DEBUG] [Thread-158610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:26:35.071 [DEBUG] [Thread-158610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:26:35.080 [INFO] [Thread-158610] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:26:35.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:26:35.678 [DEBUG] [Thread-158610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:26:35.678 [DEBUG] [Thread-158610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:26:35.678 [DEBUG] [Thread-158610] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:26:35.719 [DEBUG] [Thread-158610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:26:35.719 [DEBUG] [Thread-158610] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:26:35.721 [DEBUG] [Thread-158610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:26:35.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:26:35.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:26:35.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:26:35.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:26:35.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:26:35.733 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:26:35.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:26:35.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.518124 -999.00  +15.40  11.12     40   +2.20 1 1 1 1 1   888    0 12.13 -17.24 ----- 15.9 11.1 148.8 13.9 24.9 -27.7 24.2 -28.7 25.8 -27.3 26.9 -29.8
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.518124
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:26:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:26:02', tmtdew=15.04, humidity=36.21, cloud=0.0, wind=9.47, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:26:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:26:35.734 [DEBUG] [Thread-158610] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:26:35.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:26:35.819 [DEBUG] [Thread-158613] [transport.py] [_log()] starting thread (client mode): 0x2e3de170
2025-09-29T14:26:35.819 [DEBUG] [Thread-158613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:26:35.835 [DEBUG] [Thread-158613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:26:35.835 [INFO] [Thread-158613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] client lang: <none>
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] server lang: <none>
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] kex follows: False
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] Compression: none
2025-09-29T14:26:35.842 [DEBUG] [Thread-158613] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:26:35.897 [DEBUG] [Thread-158613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:26:35.898 [DEBUG] [Thread-158613] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:26:35.898 [DEBUG] [Thread-158613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:26:35.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:26:35.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:26:35.955 [DEBUG] [Thread-158613] [transport.py] [_log()] userauth is OK
2025-09-29T14:26:35.955 [DEBUG] [Thread-158613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:26:35.955 [DEBUG] [Thread-158613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:26:35.955 [DEBUG] [Thread-158613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:26:35.955 [DEBUG] [Thread-158613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:26:35.969 [INFO] [Thread-158613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:26:35.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:26:35.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:26:36.949 [DEBUG] [Thread-158613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:26:36.949 [DEBUG] [Thread-158613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:26:36.997 [DEBUG] [Thread-158613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:26:36.997 [DEBUG] [Thread-158613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:26:37.006 [DEBUG] [Thread-158613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:26:37.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:26:37.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:26:37.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:26:37.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:26:37.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:26:37.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:26:37.040 [DEBUG] [Thread-158613] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:26:44.542 [DEBUG] [Thread-158615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:26:47.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:26:47.042 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:26:47.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:26:47.294 [DEBUG] [Thread-158616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:26:47.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 26, 34), 15.11, 35.77, 0.0, 17.61, 15.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:26:47.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:26:34
2025-09-29T14:26:47.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:26:47.903 [DEBUG] [Thread-158617] [transport.py] [_log()] starting thread (client mode): 0x2e3df0d0
2025-09-29T14:26:47.903 [DEBUG] [Thread-158617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:26:47.923 [DEBUG] [Thread-158617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:26:47.923 [INFO] [Thread-158617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:26:47.926 [DEBUG] [Thread-158617] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] client lang: <none>
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] server lang: <none>
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] kex follows: False
2025-09-29T14:26:47.927 [DEBUG] [Thread-158617] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:26:47.928 [DEBUG] [Thread-158617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:26:47.928 [DEBUG] [Thread-158617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:26:47.928 [DEBUG] [Thread-158617] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:26:47.928 [DEBUG] [Thread-158617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:26:47.928 [DEBUG] [Thread-158617] [transport.py] [_log()] Compression: none
2025-09-29T14:26:47.928 [DEBUG] [Thread-158617] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:26:47.942 [DEBUG] [Thread-158617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:26:47.943 [DEBUG] [Thread-158617] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:26:47.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:26:47.944 [DEBUG] [Thread-158617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:26:47.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:26:47.984 [DEBUG] [Thread-158617] [transport.py] [_log()] userauth is OK
2025-09-29T14:26:47.984 [DEBUG] [Thread-158617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:26:47.984 [DEBUG] [Thread-158617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:26:47.984 [DEBUG] [Thread-158617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:26:47.985 [DEBUG] [Thread-158617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:26:48.003 [INFO] [Thread-158617] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:26:48.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:26:48.749 [DEBUG] [Thread-158617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:26:48.750 [DEBUG] [Thread-158617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:26:48.750 [DEBUG] [Thread-158617] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:26:48.790 [DEBUG] [Thread-158617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:26:48.790 [DEBUG] [Thread-158617] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:26:48.793 [DEBUG] [Thread-158617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:26:48.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:26:48.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:26:48.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:26:48.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:26:48.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:26:48.811 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:26:48.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:26:48.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:26:48.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:26:48.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.518124 -999.00  +15.40  11.12     40   +2.20 1 1 1 1 1   888    0 12.13 -17.24 ----- 15.9 11.1 148.8 13.9 24.9 -27.7 24.2 -28.7 25.8 -27.3 26.9 -29.8
2025-09-29T14:26:48.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:26:48.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:26:48.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.518124
2025-09-29T14:26:48.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:26:48.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:26:48.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:26:48.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:26:48.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:26:48.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:26:34', tmtdew=15.11, humidity=35.77, cloud=0.0, wind=17.61, temperature=15.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:26:05.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:26:48.814 [DEBUG] [Thread-158617] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:26:48.900 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:26:48.909 [DEBUG] [Thread-158620] [transport.py] [_log()] starting thread (client mode): 0x2b96ccd0
2025-09-29T14:26:48.909 [DEBUG] [Thread-158620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:26:48.924 [DEBUG] [Thread-158620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:26:48.924 [INFO] [Thread-158620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:26:48.931 [DEBUG] [Thread-158620] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] client lang: <none>
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] server lang: <none>
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] kex follows: False
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] Compression: none
2025-09-29T14:26:48.932 [DEBUG] [Thread-158620] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:26:48.987 [DEBUG] [Thread-158620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:26:48.987 [DEBUG] [Thread-158620] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:26:48.988 [DEBUG] [Thread-158620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:26:48.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:26:48.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:26:49.044 [DEBUG] [Thread-158620] [transport.py] [_log()] userauth is OK
2025-09-29T14:26:49.044 [DEBUG] [Thread-158620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:26:49.044 [DEBUG] [Thread-158620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:26:49.044 [DEBUG] [Thread-158620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:26:49.044 [DEBUG] [Thread-158620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:26:49.062 [INFO] [Thread-158620] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:26:49.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:26:49.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:26:50.053 [DEBUG] [Thread-158620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:26:50.053 [DEBUG] [Thread-158620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:26:50.101 [DEBUG] [Thread-158620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:26:50.101 [DEBUG] [Thread-158620] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:26:50.110 [DEBUG] [Thread-158620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:26:50.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:26:50.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:26:50.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:26:50.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:26:50.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:26:50.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:26:50.149 [DEBUG] [Thread-158620] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:00.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:27:00.152 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:27:00.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:27:00.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 26, 34), 15.11, 35.77, 0.0, 17.61, 15.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:27:00.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:26:34
2025-09-29T14:27:00.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:27:01.006 [DEBUG] [Thread-158622] [transport.py] [_log()] starting thread (client mode): 0x2e361de0
2025-09-29T14:27:01.007 [DEBUG] [Thread-158622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:01.026 [DEBUG] [Thread-158622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:27:01.026 [INFO] [Thread-158622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:01.028 [DEBUG] [Thread-158622] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] Compression: none
2025-09-29T14:27:01.029 [DEBUG] [Thread-158622] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:01.041 [DEBUG] [Thread-158622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:01.041 [DEBUG] [Thread-158622] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:01.042 [DEBUG] [Thread-158622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:27:01.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:27:01.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:01.044 [DEBUG] [Thread-158622] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:01.044 [DEBUG] [Thread-158622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:01.044 [DEBUG] [Thread-158622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:01.044 [DEBUG] [Thread-158622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:27:01.044 [DEBUG] [Thread-158622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:01.068 [INFO] [Thread-158622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:01.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:01.652 [DEBUG] [Thread-158622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:01.652 [DEBUG] [Thread-158622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:01.653 [DEBUG] [Thread-158622] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:27:01.694 [DEBUG] [Thread-158622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:01.694 [DEBUG] [Thread-158622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:01.697 [DEBUG] [Thread-158622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:01.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:01.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:27:01.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:27:01.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:27:01.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:01.718 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:27:01.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:01.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:01.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:27:01.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.518471 -999.00  +15.10  16.57     40   +1.90 1 1 1 1 1   888    0 12.60 -18.47 ----- 13.8 16.6 169.0 20.9 24.9 -30.0 24.1 -28.3 25.5 -29.7 26.8 -30.6
2025-09-29T14:27:01.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:27:01.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:27:01.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.518471
2025-09-29T14:27:01.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:27:01.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:27:01.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:27:01.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:27:01.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:27:01.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:26:34', tmtdew=15.11, humidity=35.77, cloud=0.0, wind=17.61, temperature=15.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:26:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:27:01.721 [DEBUG] [Thread-158622] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:01.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:27:01.830 [DEBUG] [Thread-158625] [transport.py] [_log()] starting thread (client mode): 0x2e362050
2025-09-29T14:27:01.830 [DEBUG] [Thread-158625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:01.848 [DEBUG] [Thread-158625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:27:01.849 [INFO] [Thread-158625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:27:01.856 [DEBUG] [Thread-158625] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:01.857 [DEBUG] [Thread-158625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:01.858 [DEBUG] [Thread-158625] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:01.858 [DEBUG] [Thread-158625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:01.858 [DEBUG] [Thread-158625] [transport.py] [_log()] Compression: none
2025-09-29T14:27:01.858 [DEBUG] [Thread-158625] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:01.919 [DEBUG] [Thread-158625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:01.920 [DEBUG] [Thread-158625] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:01.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:27:01.920 [DEBUG] [Thread-158625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:27:01.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:01.979 [DEBUG] [Thread-158625] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:01.979 [DEBUG] [Thread-158625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:01.979 [DEBUG] [Thread-158625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:01.979 [DEBUG] [Thread-158625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:27:01.980 [DEBUG] [Thread-158625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:02.003 [INFO] [Thread-158625] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:02.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:27:02.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:02.331 [DEBUG] [Thread-158627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:27:03.007 [DEBUG] [Thread-158625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:03.007 [DEBUG] [Thread-158625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:03.056 [DEBUG] [Thread-158625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:03.056 [DEBUG] [Thread-158625] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:03.065 [DEBUG] [Thread-158625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:03.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:03.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:27:03.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:27:03.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:03.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:03.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:03.099 [DEBUG] [Thread-158625] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:04.351 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:27:04.352 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:27:13.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:27:13.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:27:13.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:27:13.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 27, 6), 15.03, 35.92, 0.0, 14.15, 15.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:27:13.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:27:06
2025-09-29T14:27:13.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:27:13.956 [DEBUG] [Thread-158628] [transport.py] [_log()] starting thread (client mode): 0x2b9b8bb0
2025-09-29T14:27:13.956 [DEBUG] [Thread-158628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:13.977 [DEBUG] [Thread-158628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:27:13.977 [INFO] [Thread-158628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:27:13.980 [DEBUG] [Thread-158628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:13.980 [DEBUG] [Thread-158628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:27:13.980 [DEBUG] [Thread-158628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:13.980 [DEBUG] [Thread-158628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:13.980 [DEBUG] [Thread-158628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:13.980 [DEBUG] [Thread-158628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:13.980 [DEBUG] [Thread-158628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] Compression: none
2025-09-29T14:27:13.981 [DEBUG] [Thread-158628] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:13.997 [DEBUG] [Thread-158628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:13.998 [DEBUG] [Thread-158628] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:13.998 [DEBUG] [Thread-158628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:27:13.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:27:13.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:14.001 [DEBUG] [Thread-158628] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:14.001 [DEBUG] [Thread-158628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:14.001 [DEBUG] [Thread-158628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:14.001 [DEBUG] [Thread-158628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:27:14.001 [DEBUG] [Thread-158628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:14.036 [INFO] [Thread-158628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:14.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:14.769 [DEBUG] [Thread-158628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:14.770 [DEBUG] [Thread-158628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:14.770 [DEBUG] [Thread-158628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:27:14.810 [DEBUG] [Thread-158628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:14.810 [DEBUG] [Thread-158628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:14.813 [DEBUG] [Thread-158628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:14.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:14.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:27:14.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:27:14.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:27:14.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:14.829 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:27:14.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:14.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:14.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:27:14.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.518471 -999.00  +15.10  16.57     40   +1.90 1 1 1 1 1   888    0 12.60 -18.47 ----- 13.8 16.6 169.0 20.9 24.9 -30.0 24.1 -28.3 25.5 -29.7 26.8 -30.6
2025-09-29T14:27:14.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:27:14.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:27:14.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.518471
2025-09-29T14:27:14.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:27:14.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:27:14.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:27:14.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:27:14.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:27:14.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:27:06', tmtdew=15.03, humidity=35.92, cloud=0.0, wind=14.15, temperature=15.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:26:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:27:14.832 [DEBUG] [Thread-158628] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:14.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:27:14.926 [DEBUG] [Thread-158631] [transport.py] [_log()] starting thread (client mode): 0x2e374370
2025-09-29T14:27:14.926 [DEBUG] [Thread-158631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:14.941 [DEBUG] [Thread-158631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:27:14.941 [INFO] [Thread-158631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:27:14.948 [DEBUG] [Thread-158631] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] Compression: none
2025-09-29T14:27:14.949 [DEBUG] [Thread-158631] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:15.009 [DEBUG] [Thread-158631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:15.009 [DEBUG] [Thread-158631] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:15.010 [DEBUG] [Thread-158631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:27:15.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:27:15.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:15.065 [DEBUG] [Thread-158631] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:15.065 [DEBUG] [Thread-158631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:15.065 [DEBUG] [Thread-158631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:15.065 [DEBUG] [Thread-158631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:27:15.065 [DEBUG] [Thread-158631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:15.084 [INFO] [Thread-158631] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:15.085 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:27:15.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:16.085 [DEBUG] [Thread-158631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:16.085 [DEBUG] [Thread-158631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:16.133 [DEBUG] [Thread-158631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:16.133 [DEBUG] [Thread-158631] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:16.142 [DEBUG] [Thread-158631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:16.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:16.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:27:16.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:27:16.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:16.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:16.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:16.176 [DEBUG] [Thread-158631] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:17.385 [DEBUG] [Thread-158633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:27:26.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:27:26.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:27:26.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:27:26.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 27, 6), 15.03, 35.92, 0.0, 14.15, 15.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:27:26.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:27:06
2025-09-29T14:27:26.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:27:27.019 [DEBUG] [Thread-158634] [transport.py] [_log()] starting thread (client mode): 0x2e363070
2025-09-29T14:27:27.019 [DEBUG] [Thread-158634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:27.041 [DEBUG] [Thread-158634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:27:27.041 [INFO] [Thread-158634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:27:27.044 [DEBUG] [Thread-158634] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:27.045 [DEBUG] [Thread-158634] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:27.046 [DEBUG] [Thread-158634] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:27.046 [DEBUG] [Thread-158634] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:27.046 [DEBUG] [Thread-158634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:27.046 [DEBUG] [Thread-158634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:27.046 [DEBUG] [Thread-158634] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:27.046 [DEBUG] [Thread-158634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:27.046 [DEBUG] [Thread-158634] [transport.py] [_log()] Compression: none
2025-09-29T14:27:27.046 [DEBUG] [Thread-158634] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:27.064 [DEBUG] [Thread-158634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:27.064 [DEBUG] [Thread-158634] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:27.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:27:27.065 [DEBUG] [Thread-158634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:27:27.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:27.067 [DEBUG] [Thread-158634] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:27.067 [DEBUG] [Thread-158634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:27.067 [DEBUG] [Thread-158634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:27.067 [DEBUG] [Thread-158634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:27:27.067 [DEBUG] [Thread-158634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:27.082 [INFO] [Thread-158634] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:27.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:27.790 [DEBUG] [Thread-158634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:27.790 [DEBUG] [Thread-158634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:27.790 [DEBUG] [Thread-158634] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:27:27.831 [DEBUG] [Thread-158634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:27.832 [DEBUG] [Thread-158634] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:27.835 [DEBUG] [Thread-158634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:27.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:27.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:27:27.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:27:27.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:27:27.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:27.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:27:27.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:27.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:27.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:27:27.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.518471 -999.00  +15.10  16.57     40   +1.90 1 1 1 1 1   888    0 12.60 -18.47 ----- 13.8 16.6 169.0 20.9 24.9 -30.0 24.1 -28.3 25.5 -29.7 26.8 -30.6
2025-09-29T14:27:27.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:27:27.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:27:27.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.518471
2025-09-29T14:27:27.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:27:27.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:27:27.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:27:27.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:27:27.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:27:27.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:27:06', tmtdew=15.03, humidity=35.92, cloud=0.0, wind=14.15, temperature=15.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:26:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:27:27.861 [DEBUG] [Thread-158634] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:27.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:27:27.956 [DEBUG] [Thread-158637] [transport.py] [_log()] starting thread (client mode): 0x2e360f40
2025-09-29T14:27:27.956 [DEBUG] [Thread-158637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:27.971 [DEBUG] [Thread-158637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:27:27.971 [INFO] [Thread-158637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:27.979 [DEBUG] [Thread-158637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:27.980 [DEBUG] [Thread-158637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:27.980 [DEBUG] [Thread-158637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:27.980 [DEBUG] [Thread-158637] [transport.py] [_log()] Compression: none
2025-09-29T14:27:27.980 [DEBUG] [Thread-158637] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:28.035 [DEBUG] [Thread-158637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:28.035 [DEBUG] [Thread-158637] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:28.036 [DEBUG] [Thread-158637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:27:28.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:27:28.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:28.097 [DEBUG] [Thread-158637] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:28.097 [DEBUG] [Thread-158637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:28.097 [DEBUG] [Thread-158637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:28.097 [DEBUG] [Thread-158637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:27:28.097 [DEBUG] [Thread-158637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:28.111 [INFO] [Thread-158637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:28.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:27:28.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:29.090 [DEBUG] [Thread-158637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:29.090 [DEBUG] [Thread-158637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:29.138 [DEBUG] [Thread-158637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:29.138 [DEBUG] [Thread-158637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:29.147 [DEBUG] [Thread-158637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:29.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:29.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:27:29.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:27:29.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:29.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:29.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:29.182 [DEBUG] [Thread-158637] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:32.426 [DEBUG] [Thread-158639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:27:39.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:27:39.184 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:27:39.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:27:39.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 27, 6), 15.03, 35.92, 0.0, 14.15, 15.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:27:39.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:27:06
2025-09-29T14:27:39.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:27:40.097 [DEBUG] [Thread-158640] [transport.py] [_log()] starting thread (client mode): 0x2e377430
2025-09-29T14:27:40.097 [DEBUG] [Thread-158640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:40.117 [DEBUG] [Thread-158640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:27:40.117 [INFO] [Thread-158640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:40.118 [DEBUG] [Thread-158640] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:40.119 [DEBUG] [Thread-158640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:40.119 [DEBUG] [Thread-158640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:40.119 [DEBUG] [Thread-158640] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:40.119 [DEBUG] [Thread-158640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:40.119 [DEBUG] [Thread-158640] [transport.py] [_log()] Compression: none
2025-09-29T14:27:40.119 [DEBUG] [Thread-158640] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:40.128 [DEBUG] [Thread-158640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:40.128 [DEBUG] [Thread-158640] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:40.128 [DEBUG] [Thread-158640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:27:40.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:27:40.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:40.129 [DEBUG] [Thread-158640] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:40.129 [DEBUG] [Thread-158640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:40.129 [DEBUG] [Thread-158640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:40.129 [DEBUG] [Thread-158640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:27:40.129 [DEBUG] [Thread-158640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:40.144 [INFO] [Thread-158640] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:40.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:40.697 [DEBUG] [Thread-158640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:40.697 [DEBUG] [Thread-158640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:40.697 [DEBUG] [Thread-158640] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:27:40.738 [DEBUG] [Thread-158640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:40.738 [DEBUG] [Thread-158640] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:40.741 [DEBUG] [Thread-158640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:40.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:40.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:27:40.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:27:40.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:27:40.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:40.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:27:40.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:40.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:40.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:27:40.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.518818 -999.00  +15.10  15.64     41   +2.00 1 1 1 1 1   888    0 12.35 -19.07 ----- 14.3 15.6 179.6 18.7 24.8 -28.5 23.5 -33.7 25.6 -28.6 26.8 -31.1
2025-09-29T14:27:40.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:27:40.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:27:40.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.518818
2025-09-29T14:27:40.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:27:40.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:27:40.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:27:40.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:27:40.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:27:40.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:27:06', tmtdew=15.03, humidity=35.92, cloud=0.0, wind=14.15, temperature=15.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:27:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:27:40.763 [DEBUG] [Thread-158640] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:40.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:27:40.853 [DEBUG] [Thread-158643] [transport.py] [_log()] starting thread (client mode): 0x2e376fe0
2025-09-29T14:27:40.853 [DEBUG] [Thread-158643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:40.868 [DEBUG] [Thread-158643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:27:40.868 [INFO] [Thread-158643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:27:40.876 [DEBUG] [Thread-158643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:40.876 [DEBUG] [Thread-158643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] Compression: none
2025-09-29T14:27:40.877 [DEBUG] [Thread-158643] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:40.933 [DEBUG] [Thread-158643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:40.933 [DEBUG] [Thread-158643] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:40.934 [DEBUG] [Thread-158643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:27:40.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:27:40.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:40.990 [DEBUG] [Thread-158643] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:40.990 [DEBUG] [Thread-158643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:40.990 [DEBUG] [Thread-158643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:40.990 [DEBUG] [Thread-158643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:27:40.990 [DEBUG] [Thread-158643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:41.010 [INFO] [Thread-158643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:41.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:27:41.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:41.971 [DEBUG] [Thread-158643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:41.971 [DEBUG] [Thread-158643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:42.019 [DEBUG] [Thread-158643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:42.019 [DEBUG] [Thread-158643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:42.029 [DEBUG] [Thread-158643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:42.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:42.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:27:42.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:27:42.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:42.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:42.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:42.064 [DEBUG] [Thread-158643] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:44.574 [DEBUG] [Thread-158645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:27:47.457 [DEBUG] [Thread-158646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:27:52.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:27:52.067 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:27:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:27:52.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 27, 38), 14.95, 36.07, 0.0, 14.05, 14.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:27:52.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:27:38
2025-09-29T14:27:52.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:27:52.917 [DEBUG] [Thread-158647] [transport.py] [_log()] starting thread (client mode): 0x2e377d30
2025-09-29T14:27:52.917 [DEBUG] [Thread-158647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:52.937 [DEBUG] [Thread-158647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:27:52.937 [INFO] [Thread-158647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:52.940 [DEBUG] [Thread-158647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:52.941 [DEBUG] [Thread-158647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:52.941 [DEBUG] [Thread-158647] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:52.941 [DEBUG] [Thread-158647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:52.941 [DEBUG] [Thread-158647] [transport.py] [_log()] Compression: none
2025-09-29T14:27:52.941 [DEBUG] [Thread-158647] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:52.949 [DEBUG] [Thread-158647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:52.949 [DEBUG] [Thread-158647] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:52.950 [DEBUG] [Thread-158647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:27:52.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:27:52.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:52.951 [DEBUG] [Thread-158647] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:52.951 [DEBUG] [Thread-158647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:52.952 [DEBUG] [Thread-158647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:52.952 [DEBUG] [Thread-158647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:27:52.952 [DEBUG] [Thread-158647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:52.975 [INFO] [Thread-158647] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:52.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:53.720 [DEBUG] [Thread-158647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:53.721 [DEBUG] [Thread-158647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:53.721 [DEBUG] [Thread-158647] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:27:53.761 [DEBUG] [Thread-158647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:53.761 [DEBUG] [Thread-158647] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:53.764 [DEBUG] [Thread-158647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:53.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:53.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:27:53.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:27:53.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:27:53.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:53.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:27:53.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:53.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:27:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.518818 -999.00  +15.10  15.64     41   +2.00 1 1 1 1 1   888    0 12.35 -19.07 ----- 14.3 15.6 179.6 18.7 24.8 -28.5 23.5 -33.7 25.6 -28.6 26.8 -31.1
2025-09-29T14:27:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:27:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:27:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.518818
2025-09-29T14:27:53.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:27:53.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:27:53.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:27:53.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:27:53.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:27:53.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:27:38', tmtdew=14.95, humidity=36.07, cloud=0.0, wind=14.05, temperature=14.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:27:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:27:53.790 [DEBUG] [Thread-158647] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:27:53.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:27:53.884 [DEBUG] [Thread-158650] [transport.py] [_log()] starting thread (client mode): 0x2e376da0
2025-09-29T14:27:53.884 [DEBUG] [Thread-158650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:27:53.900 [DEBUG] [Thread-158650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:27:53.900 [INFO] [Thread-158650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:27:53.907 [DEBUG] [Thread-158650] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:27:53.907 [DEBUG] [Thread-158650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:27:53.907 [DEBUG] [Thread-158650] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:27:53.907 [DEBUG] [Thread-158650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:53.907 [DEBUG] [Thread-158650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:27:53.907 [DEBUG] [Thread-158650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:53.907 [DEBUG] [Thread-158650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:27:53.907 [DEBUG] [Thread-158650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] client lang: <none>
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] server lang: <none>
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] kex follows: False
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] Compression: none
2025-09-29T14:27:53.908 [DEBUG] [Thread-158650] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:27:53.966 [DEBUG] [Thread-158650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:27:53.966 [DEBUG] [Thread-158650] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:27:53.966 [DEBUG] [Thread-158650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:27:53.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:27:53.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:27:54.022 [DEBUG] [Thread-158650] [transport.py] [_log()] userauth is OK
2025-09-29T14:27:54.022 [DEBUG] [Thread-158650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:27:54.022 [DEBUG] [Thread-158650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:27:54.022 [DEBUG] [Thread-158650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:27:54.023 [DEBUG] [Thread-158650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:27:54.040 [INFO] [Thread-158650] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:27:54.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:27:54.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:27:55.035 [DEBUG] [Thread-158650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:27:55.035 [DEBUG] [Thread-158650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:27:55.083 [DEBUG] [Thread-158650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:27:55.083 [DEBUG] [Thread-158650] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:27:55.092 [DEBUG] [Thread-158650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:27:55.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:27:55.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:27:55.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:27:55.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:27:55.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:27:55.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:27:55.126 [DEBUG] [Thread-158650] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:28:02.499 [DEBUG] [Thread-158652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:28:04.489 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:28:04.491 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:28:05.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:28:05.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:28:05.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:28:05.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 27, 38), 14.95, 36.07, 0.0, 14.05, 14.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:28:05.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:27:38
2025-09-29T14:28:05.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:28:06.001 [DEBUG] [Thread-158653] [transport.py] [_log()] starting thread (client mode): 0x2b96ec80
2025-09-29T14:28:06.001 [DEBUG] [Thread-158653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:28:06.016 [DEBUG] [Thread-158653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:28:06.016 [INFO] [Thread-158653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] client lang: <none>
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] server lang: <none>
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] kex follows: False
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] Compression: none
2025-09-29T14:28:06.017 [DEBUG] [Thread-158653] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:28:06.026 [DEBUG] [Thread-158653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:28:06.026 [DEBUG] [Thread-158653] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:28:06.026 [DEBUG] [Thread-158653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:28:06.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:28:06.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:28:06.028 [DEBUG] [Thread-158653] [transport.py] [_log()] userauth is OK
2025-09-29T14:28:06.028 [DEBUG] [Thread-158653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:28:06.028 [DEBUG] [Thread-158653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:28:06.028 [DEBUG] [Thread-158653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:28:06.028 [DEBUG] [Thread-158653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:28:06.051 [INFO] [Thread-158653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:28:06.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:28:06.650 [DEBUG] [Thread-158653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:28:06.650 [DEBUG] [Thread-158653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:28:06.651 [DEBUG] [Thread-158653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:28:06.691 [DEBUG] [Thread-158653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:28:06.692 [DEBUG] [Thread-158653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:28:06.694 [DEBUG] [Thread-158653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:28:06.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:28:06.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:28:06.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:28:06.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:28:06.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:28:06.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:28:06.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:28:06.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:28:06.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:28:06.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.519165 -999.00  +15.10  17.52     41   +2.10 1 1 1 1 1   888    0 12.41 -22.05 ----- 11.2 17.5 160.8 19.6 24.8 -29.1 23.6 -28.1 25.4 -28.9 26.6 -30.0
2025-09-29T14:28:06.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:28:06.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:28:06.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.519165
2025-09-29T14:28:06.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:28:06.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:28:06.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:28:06.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:28:06.725 [DEBUG] [Thread-158653] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:28:06.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:28:06.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:27:38', tmtdew=14.95, humidity=36.07, cloud=0.0, wind=14.05, temperature=14.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:27:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:28:06.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:28:17.535 [DEBUG] [Thread-158656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:28:32.580 [DEBUG] [Thread-158657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:28:44.606 [DEBUG] [Thread-158658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:28:47.609 [DEBUG] [Thread-158659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:29:02.640 [DEBUG] [Thread-158660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:29:04.632 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:29:04.633 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:29:17.667 [DEBUG] [Thread-158661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:29:32.694 [DEBUG] [Thread-158662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:29:44.638 [DEBUG] [Thread-158663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:29:47.720 [DEBUG] [Thread-158664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:30:02.744 [DEBUG] [Thread-158665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:30:04.773 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:30:04.774 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:30:17.772 [DEBUG] [Thread-158666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:30:18.299 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T14:30:28.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:30:28.309 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:30:28.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:30:28.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 30, 18), 14.6, 36.74, 0.0, 6.94, 14.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:30:28.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:30:18
2025-09-29T14:30:29.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:30:29.174 [DEBUG] [Thread-158667] [transport.py] [_log()] starting thread (client mode): 0x2e375e70
2025-09-29T14:30:29.174 [DEBUG] [Thread-158667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:30:29.194 [DEBUG] [Thread-158667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:30:29.194 [INFO] [Thread-158667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] client lang: <none>
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] server lang: <none>
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] kex follows: False
2025-09-29T14:30:29.198 [DEBUG] [Thread-158667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:30:29.199 [DEBUG] [Thread-158667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:30:29.199 [DEBUG] [Thread-158667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:30:29.199 [DEBUG] [Thread-158667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:30:29.199 [DEBUG] [Thread-158667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:30:29.199 [DEBUG] [Thread-158667] [transport.py] [_log()] Compression: none
2025-09-29T14:30:29.199 [DEBUG] [Thread-158667] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:30:29.217 [DEBUG] [Thread-158667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:30:29.217 [DEBUG] [Thread-158667] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:30:29.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:30:29.218 [DEBUG] [Thread-158667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:30:29.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:30:29.220 [DEBUG] [Thread-158667] [transport.py] [_log()] userauth is OK
2025-09-29T14:30:29.221 [DEBUG] [Thread-158667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:30:29.221 [DEBUG] [Thread-158667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:30:29.221 [DEBUG] [Thread-158667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:30:29.221 [DEBUG] [Thread-158667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:30:29.245 [INFO] [Thread-158667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:30:29.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:30:29.880 [DEBUG] [Thread-158667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:30:29.881 [DEBUG] [Thread-158667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:30:29.881 [DEBUG] [Thread-158667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:30:29.921 [DEBUG] [Thread-158667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:30:29.921 [DEBUG] [Thread-158667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:30:29.924 [DEBUG] [Thread-158667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:30:29.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:30:29.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:30:29.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:30:29.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:30:29.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:30:29.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:30:29.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:30:29.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:30:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:30:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.520901 -999.00  +15.10   8.74     40   +1.90 1 1 1 1 1   888    0 12.35 -22.73 ----- 9.6 8.7 118.4 10.7 24.8 -29.1 23.8 -28.9 25.3 -28.1 26.8 -28.3
2025-09-29T14:30:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:30:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:30:29.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.520901
2025-09-29T14:30:29.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:30:29.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:30:29.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:30:29.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:30:29.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:30:29.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:30:18', tmtdew=14.6, humidity=36.74, cloud=0.0, wind=6.94, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:30:05.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:30:29.949 [DEBUG] [Thread-158667] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:30:30.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:30:30.046 [DEBUG] [Thread-158670] [transport.py] [_log()] starting thread (client mode): 0x2b96d030
2025-09-29T14:30:30.046 [DEBUG] [Thread-158670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:30:30.060 [DEBUG] [Thread-158670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:30:30.061 [INFO] [Thread-158670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] client lang: <none>
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] server lang: <none>
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] kex follows: False
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:30:30.068 [DEBUG] [Thread-158670] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:30:30.069 [DEBUG] [Thread-158670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:30:30.069 [DEBUG] [Thread-158670] [transport.py] [_log()] Compression: none
2025-09-29T14:30:30.069 [DEBUG] [Thread-158670] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:30:30.127 [DEBUG] [Thread-158670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:30:30.127 [DEBUG] [Thread-158670] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:30:30.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:30:30.128 [DEBUG] [Thread-158670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:30:30.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:30:30.182 [DEBUG] [Thread-158670] [transport.py] [_log()] userauth is OK
2025-09-29T14:30:30.183 [DEBUG] [Thread-158670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:30:30.183 [DEBUG] [Thread-158670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:30:30.183 [DEBUG] [Thread-158670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:30:30.183 [DEBUG] [Thread-158670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:30:30.202 [INFO] [Thread-158670] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:30:30.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:30:30.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:30:31.193 [DEBUG] [Thread-158670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:30:31.194 [DEBUG] [Thread-158670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:30:31.242 [DEBUG] [Thread-158670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:30:31.242 [DEBUG] [Thread-158670] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:30:31.250 [DEBUG] [Thread-158670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:30:31.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:30:31.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:30:31.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:30:31.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:30:31.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:30:31.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:30:31.283 [DEBUG] [Thread-158670] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:30:32.799 [DEBUG] [Thread-158672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:30:41.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:30:41.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:30:41.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:30:41.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 30, 18), 14.6, 36.74, 0.0, 6.94, 14.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:30:41.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:30:18
2025-09-29T14:30:41.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:30:42.146 [DEBUG] [Thread-158673] [transport.py] [_log()] starting thread (client mode): 0x2b94eb30
2025-09-29T14:30:42.146 [DEBUG] [Thread-158673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:30:42.166 [DEBUG] [Thread-158673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:30:42.166 [INFO] [Thread-158673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:30:42.169 [DEBUG] [Thread-158673] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:30:42.169 [DEBUG] [Thread-158673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:30:42.169 [DEBUG] [Thread-158673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:30:42.169 [DEBUG] [Thread-158673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:42.169 [DEBUG] [Thread-158673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:42.169 [DEBUG] [Thread-158673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:42.169 [DEBUG] [Thread-158673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:42.169 [DEBUG] [Thread-158673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] client lang: <none>
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] server lang: <none>
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] kex follows: False
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] Compression: none
2025-09-29T14:30:42.170 [DEBUG] [Thread-158673] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:30:42.188 [DEBUG] [Thread-158673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:30:42.189 [DEBUG] [Thread-158673] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:30:42.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:30:42.190 [DEBUG] [Thread-158673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:30:42.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:30:42.192 [DEBUG] [Thread-158673] [transport.py] [_log()] userauth is OK
2025-09-29T14:30:42.192 [DEBUG] [Thread-158673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:30:42.193 [DEBUG] [Thread-158673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:30:42.193 [DEBUG] [Thread-158673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:30:42.193 [DEBUG] [Thread-158673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:30:42.227 [INFO] [Thread-158673] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:30:42.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:30:42.890 [DEBUG] [Thread-158673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:30:42.890 [DEBUG] [Thread-158673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:30:42.890 [DEBUG] [Thread-158673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:30:42.931 [DEBUG] [Thread-158673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:30:42.931 [DEBUG] [Thread-158673] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:30:42.935 [DEBUG] [Thread-158673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:30:42.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:30:42.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:30:42.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:30:42.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:30:42.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:30:42.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:30:42.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:30:42.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:30:42.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:30:42.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.520901 -999.00  +15.10   8.74     40   +1.90 1 1 1 1 1   888    0 12.35 -22.73 ----- 9.6 8.7 118.4 10.7 24.8 -29.1 23.8 -28.9 25.3 -28.1 26.8 -28.3
2025-09-29T14:30:42.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:30:42.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:30:42.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.520901
2025-09-29T14:30:42.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:30:42.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:30:42.964 [DEBUG] [Thread-158673] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:30:42.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:30:42.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:30:42.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:30:42.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:30:18', tmtdew=14.6, humidity=36.74, cloud=0.0, wind=6.94, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:30:05.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:30:43.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:30:43.065 [DEBUG] [Thread-158676] [transport.py] [_log()] starting thread (client mode): 0x2b94f220
2025-09-29T14:30:43.066 [DEBUG] [Thread-158676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:30:43.083 [DEBUG] [Thread-158676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:30:43.083 [INFO] [Thread-158676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] client lang: <none>
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] server lang: <none>
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] kex follows: False
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] Compression: none
2025-09-29T14:30:43.091 [DEBUG] [Thread-158676] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:30:43.150 [DEBUG] [Thread-158676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:30:43.151 [DEBUG] [Thread-158676] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:30:43.151 [DEBUG] [Thread-158676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:30:43.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:30:43.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:30:43.207 [DEBUG] [Thread-158676] [transport.py] [_log()] userauth is OK
2025-09-29T14:30:43.208 [DEBUG] [Thread-158676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:30:43.208 [DEBUG] [Thread-158676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:30:43.208 [DEBUG] [Thread-158676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:30:43.208 [DEBUG] [Thread-158676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:30:43.227 [INFO] [Thread-158676] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:30:43.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:30:43.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:30:44.261 [DEBUG] [Thread-158676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:30:44.261 [DEBUG] [Thread-158676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:30:44.309 [DEBUG] [Thread-158676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:30:44.309 [DEBUG] [Thread-158676] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:30:44.318 [DEBUG] [Thread-158676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:30:44.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:30:44.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:30:44.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:30:44.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:30:44.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:30:44.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:30:44.354 [DEBUG] [Thread-158676] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:30:44.670 [DEBUG] [Thread-158678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:30:47.847 [DEBUG] [Thread-158679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:30:54.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:30:54.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:30:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:30:54.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 30, 50), 15.03, 35.82, 0.0, 11.77, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:30:54.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:30:50
2025-09-29T14:30:55.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:30:55.216 [DEBUG] [Thread-158680] [transport.py] [_log()] starting thread (client mode): 0x2b94eec0
2025-09-29T14:30:55.216 [DEBUG] [Thread-158680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:30:55.236 [DEBUG] [Thread-158680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:30:55.236 [INFO] [Thread-158680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:30:55.239 [DEBUG] [Thread-158680] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:30:55.239 [DEBUG] [Thread-158680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:30:55.239 [DEBUG] [Thread-158680] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] client lang: <none>
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] server lang: <none>
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] kex follows: False
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:30:55.240 [DEBUG] [Thread-158680] [transport.py] [_log()] Compression: none
2025-09-29T14:30:55.241 [DEBUG] [Thread-158680] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:30:55.256 [DEBUG] [Thread-158680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:30:55.257 [DEBUG] [Thread-158680] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:30:55.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:30:55.258 [DEBUG] [Thread-158680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:30:55.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:30:55.260 [DEBUG] [Thread-158680] [transport.py] [_log()] userauth is OK
2025-09-29T14:30:55.260 [DEBUG] [Thread-158680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:30:55.260 [DEBUG] [Thread-158680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:30:55.260 [DEBUG] [Thread-158680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:30:55.260 [DEBUG] [Thread-158680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:30:55.296 [INFO] [Thread-158680] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:30:55.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:30:55.918 [DEBUG] [Thread-158680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:30:55.918 [DEBUG] [Thread-158680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:30:55.919 [DEBUG] [Thread-158680] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:30:55.959 [DEBUG] [Thread-158680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:30:55.959 [DEBUG] [Thread-158680] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:30:55.962 [DEBUG] [Thread-158680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:30:55.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:30:55.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:30:55.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:30:55.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:30:55.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:30:55.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:30:55.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:30:55.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:30:55.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:30:55.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.521249 -999.00  +15.30   8.24     41   +2.10 1 1 1 1 1   888    0 12.15 -25.25 ----- 7.9 8.2 209.5 12.1 24.8 -27.9 23.9 -29.2 25.4 -27.6 26.9 -28.6
2025-09-29T14:30:55.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:30:55.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:30:55.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.521249
2025-09-29T14:30:55.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:30:55.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:30:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:30:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:30:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:30:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:30:50', tmtdew=15.03, humidity=35.82, cloud=0.0, wind=11.77, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:30:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:30:55.988 [DEBUG] [Thread-158680] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:30:56.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:30:56.083 [DEBUG] [Thread-158683] [transport.py] [_log()] starting thread (client mode): 0x2b94d840
2025-09-29T14:30:56.083 [DEBUG] [Thread-158683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:30:56.098 [DEBUG] [Thread-158683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:30:56.098 [INFO] [Thread-158683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:30:56.106 [DEBUG] [Thread-158683] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:30:56.106 [DEBUG] [Thread-158683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:30:56.106 [DEBUG] [Thread-158683] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:30:56.106 [DEBUG] [Thread-158683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:56.106 [DEBUG] [Thread-158683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:30:56.106 [DEBUG] [Thread-158683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] client lang: <none>
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] server lang: <none>
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] kex follows: False
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] Compression: none
2025-09-29T14:30:56.107 [DEBUG] [Thread-158683] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:30:56.163 [DEBUG] [Thread-158683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:30:56.163 [DEBUG] [Thread-158683] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:30:56.163 [DEBUG] [Thread-158683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:30:56.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:30:56.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:30:56.219 [DEBUG] [Thread-158683] [transport.py] [_log()] userauth is OK
2025-09-29T14:30:56.220 [DEBUG] [Thread-158683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:30:56.220 [DEBUG] [Thread-158683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:30:56.220 [DEBUG] [Thread-158683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:30:56.220 [DEBUG] [Thread-158683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:30:56.239 [INFO] [Thread-158683] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:30:56.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:30:56.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:30:57.298 [DEBUG] [Thread-158683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:30:57.299 [DEBUG] [Thread-158683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:30:57.346 [DEBUG] [Thread-158683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:30:57.346 [DEBUG] [Thread-158683] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:30:57.355 [DEBUG] [Thread-158683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:30:57.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:30:57.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:30:57.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:30:57.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:30:57.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:30:57.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:30:57.391 [DEBUG] [Thread-158683] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:02.876 [DEBUG] [Thread-158685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:31:04.912 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:31:04.913 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:31:07.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:31:07.393 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:31:07.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:31:08.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 30, 50), 15.03, 35.82, 0.0, 11.77, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:31:08.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:30:50
2025-09-29T14:31:08.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:31:08.261 [DEBUG] [Thread-158686] [transport.py] [_log()] starting thread (client mode): 0x2b94c220
2025-09-29T14:31:08.261 [DEBUG] [Thread-158686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:31:08.282 [DEBUG] [Thread-158686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:31:08.282 [INFO] [Thread-158686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] client lang: <none>
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] server lang: <none>
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] kex follows: False
2025-09-29T14:31:08.285 [DEBUG] [Thread-158686] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:31:08.286 [DEBUG] [Thread-158686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:31:08.286 [DEBUG] [Thread-158686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:31:08.286 [DEBUG] [Thread-158686] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:31:08.286 [DEBUG] [Thread-158686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:31:08.286 [DEBUG] [Thread-158686] [transport.py] [_log()] Compression: none
2025-09-29T14:31:08.286 [DEBUG] [Thread-158686] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:31:08.302 [DEBUG] [Thread-158686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:31:08.302 [DEBUG] [Thread-158686] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:31:08.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:31:08.302 [DEBUG] [Thread-158686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:31:08.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:31:08.303 [DEBUG] [Thread-158686] [transport.py] [_log()] userauth is OK
2025-09-29T14:31:08.303 [DEBUG] [Thread-158686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:31:08.303 [DEBUG] [Thread-158686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:31:08.303 [DEBUG] [Thread-158686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:31:08.303 [DEBUG] [Thread-158686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:31:08.322 [INFO] [Thread-158686] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:31:08.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:31:08.955 [DEBUG] [Thread-158686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:31:08.956 [DEBUG] [Thread-158686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:31:08.956 [DEBUG] [Thread-158686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:31:08.996 [DEBUG] [Thread-158686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:31:08.996 [DEBUG] [Thread-158686] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:31:08.999 [DEBUG] [Thread-158686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:31:09.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:31:09.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:31:09.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:31:09.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:31:09.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:31:09.023 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:31:09.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:31:09.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:31:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:31:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.521249 -999.00  +15.30   8.24     41   +2.10 1 1 1 1 1   888    0 12.15 -25.25 ----- 7.9 8.2 209.5 12.1 24.8 -27.9 23.9 -29.2 25.4 -27.6 26.9 -28.6
2025-09-29T14:31:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:31:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:31:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.521249
2025-09-29T14:31:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:31:09.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:31:09.025 [DEBUG] [Thread-158686] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:09.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:31:09.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:31:09.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:31:09.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:30:50', tmtdew=15.03, humidity=35.82, cloud=0.0, wind=11.77, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:30:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:31:09.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:31:09.122 [DEBUG] [Thread-158689] [transport.py] [_log()] starting thread (client mode): 0x2b94d8a0
2025-09-29T14:31:09.122 [DEBUG] [Thread-158689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:31:09.138 [DEBUG] [Thread-158689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:31:09.138 [INFO] [Thread-158689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:31:09.146 [DEBUG] [Thread-158689] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:31:09.146 [DEBUG] [Thread-158689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:31:09.146 [DEBUG] [Thread-158689] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:31:09.146 [DEBUG] [Thread-158689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:09.146 [DEBUG] [Thread-158689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:09.146 [DEBUG] [Thread-158689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:09.146 [DEBUG] [Thread-158689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:09.147 [DEBUG] [Thread-158689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:31:09.147 [DEBUG] [Thread-158689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:31:09.147 [DEBUG] [Thread-158689] [transport.py] [_log()] client lang: <none>
2025-09-29T14:31:09.147 [DEBUG] [Thread-158689] [transport.py] [_log()] server lang: <none>
2025-09-29T14:31:09.147 [DEBUG] [Thread-158689] [transport.py] [_log()] kex follows: False
2025-09-29T14:31:09.147 [DEBUG] [Thread-158689] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:31:09.147 [DEBUG] [Thread-158689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:31:09.147 [DEBUG] [Thread-158689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:31:09.148 [DEBUG] [Thread-158689] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:31:09.148 [DEBUG] [Thread-158689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:31:09.148 [DEBUG] [Thread-158689] [transport.py] [_log()] Compression: none
2025-09-29T14:31:09.148 [DEBUG] [Thread-158689] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:31:09.204 [DEBUG] [Thread-158689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:31:09.204 [DEBUG] [Thread-158689] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:31:09.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:31:09.205 [DEBUG] [Thread-158689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:31:09.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:31:09.259 [DEBUG] [Thread-158689] [transport.py] [_log()] userauth is OK
2025-09-29T14:31:09.259 [DEBUG] [Thread-158689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:31:09.259 [DEBUG] [Thread-158689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:31:09.259 [DEBUG] [Thread-158689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:31:09.259 [DEBUG] [Thread-158689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:31:09.273 [INFO] [Thread-158689] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:31:09.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:31:09.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:31:10.285 [DEBUG] [Thread-158689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:31:10.285 [DEBUG] [Thread-158689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:31:10.333 [DEBUG] [Thread-158689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:31:10.333 [DEBUG] [Thread-158689] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:31:10.342 [DEBUG] [Thread-158689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:31:10.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:31:10.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:31:10.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:31:10.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:31:10.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:31:10.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:31:10.376 [DEBUG] [Thread-158689] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:17.916 [DEBUG] [Thread-158691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:31:20.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:31:20.379 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:31:20.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:31:20.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 30, 50), 15.03, 35.82, 0.0, 11.77, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:31:20.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:30:50
2025-09-29T14:31:21.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:31:21.229 [DEBUG] [Thread-158692] [transport.py] [_log()] starting thread (client mode): 0x2b94cc40
2025-09-29T14:31:21.230 [DEBUG] [Thread-158692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:31:21.250 [DEBUG] [Thread-158692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:31:21.250 [INFO] [Thread-158692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:31:21.254 [DEBUG] [Thread-158692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:31:21.254 [DEBUG] [Thread-158692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:31:21.254 [DEBUG] [Thread-158692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:31:21.254 [DEBUG] [Thread-158692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:21.254 [DEBUG] [Thread-158692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:21.254 [DEBUG] [Thread-158692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:21.254 [DEBUG] [Thread-158692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] client lang: <none>
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] server lang: <none>
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] kex follows: False
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] Compression: none
2025-09-29T14:31:21.255 [DEBUG] [Thread-158692] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:31:21.274 [DEBUG] [Thread-158692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:31:21.275 [DEBUG] [Thread-158692] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:31:21.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:31:21.276 [DEBUG] [Thread-158692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:31:21.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:31:21.279 [DEBUG] [Thread-158692] [transport.py] [_log()] userauth is OK
2025-09-29T14:31:21.279 [DEBUG] [Thread-158692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:31:21.279 [DEBUG] [Thread-158692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:31:21.279 [DEBUG] [Thread-158692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:31:21.279 [DEBUG] [Thread-158692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:31:21.314 [INFO] [Thread-158692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:31:21.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:31:21.991 [DEBUG] [Thread-158692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:31:21.992 [DEBUG] [Thread-158692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:31:21.992 [DEBUG] [Thread-158692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:31:22.032 [DEBUG] [Thread-158692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:31:22.032 [DEBUG] [Thread-158692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:31:22.035 [DEBUG] [Thread-158692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:31:22.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:31:22.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:31:22.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:31:22.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:31:22.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:31:22.058 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:31:22.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:31:22.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:31:22.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:31:22.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.521249 -999.00  +15.30   8.24     41   +2.10 1 1 1 1 1   888    0 12.15 -25.25 ----- 7.9 8.2 209.5 12.1 24.8 -27.9 23.9 -29.2 25.4 -27.6 26.9 -28.6
2025-09-29T14:31:22.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:31:22.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:31:22.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.521249
2025-09-29T14:31:22.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:31:22.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:31:22.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:31:22.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:31:22.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:31:22.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:30:50', tmtdew=15.03, humidity=35.82, cloud=0.0, wind=11.77, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:30:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:31:22.061 [DEBUG] [Thread-158692] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:22.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:31:22.166 [DEBUG] [Thread-158695] [transport.py] [_log()] starting thread (client mode): 0x2b94ce50
2025-09-29T14:31:22.167 [DEBUG] [Thread-158695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:31:22.181 [DEBUG] [Thread-158695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:31:22.181 [INFO] [Thread-158695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] client lang: <none>
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] server lang: <none>
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] kex follows: False
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] Compression: none
2025-09-29T14:31:22.189 [DEBUG] [Thread-158695] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:31:22.246 [DEBUG] [Thread-158695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:31:22.247 [DEBUG] [Thread-158695] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:31:22.247 [DEBUG] [Thread-158695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:31:22.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:31:22.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:31:22.304 [DEBUG] [Thread-158695] [transport.py] [_log()] userauth is OK
2025-09-29T14:31:22.304 [DEBUG] [Thread-158695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:31:22.304 [DEBUG] [Thread-158695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:31:22.304 [DEBUG] [Thread-158695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:31:22.304 [DEBUG] [Thread-158695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:31:22.321 [INFO] [Thread-158695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:31:22.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:31:22.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:31:23.300 [DEBUG] [Thread-158695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:31:23.300 [DEBUG] [Thread-158695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:31:23.348 [DEBUG] [Thread-158695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:31:23.348 [DEBUG] [Thread-158695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:31:23.357 [DEBUG] [Thread-158695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:31:23.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:31:23.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:31:23.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:31:23.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:31:23.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:31:23.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:31:23.388 [DEBUG] [Thread-158695] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:32.950 [DEBUG] [Thread-158697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:31:33.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:31:33.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:31:33.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:31:33.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 31, 21), 15.05, 35.76, 0.0, 13.66, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:31:33.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:31:21
2025-09-29T14:31:34.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:31:34.227 [DEBUG] [Thread-158698] [transport.py] [_log()] starting thread (client mode): 0x2b94f670
2025-09-29T14:31:34.227 [DEBUG] [Thread-158698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:31:34.250 [DEBUG] [Thread-158698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:31:34.250 [INFO] [Thread-158698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:31:34.254 [DEBUG] [Thread-158698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:31:34.254 [DEBUG] [Thread-158698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:31:34.254 [DEBUG] [Thread-158698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:31:34.254 [DEBUG] [Thread-158698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:34.254 [DEBUG] [Thread-158698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:34.254 [DEBUG] [Thread-158698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:34.254 [DEBUG] [Thread-158698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:34.254 [DEBUG] [Thread-158698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] client lang: <none>
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] server lang: <none>
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] kex follows: False
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] Compression: none
2025-09-29T14:31:34.255 [DEBUG] [Thread-158698] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:31:34.272 [DEBUG] [Thread-158698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:31:34.273 [DEBUG] [Thread-158698] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:31:34.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:31:34.274 [DEBUG] [Thread-158698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:31:34.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:31:34.276 [DEBUG] [Thread-158698] [transport.py] [_log()] userauth is OK
2025-09-29T14:31:34.276 [DEBUG] [Thread-158698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:31:34.276 [DEBUG] [Thread-158698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:31:34.277 [DEBUG] [Thread-158698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:31:34.277 [DEBUG] [Thread-158698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:31:34.300 [INFO] [Thread-158698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:31:34.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:31:34.947 [DEBUG] [Thread-158698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:31:34.948 [DEBUG] [Thread-158698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:31:34.948 [DEBUG] [Thread-158698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:31:34.988 [DEBUG] [Thread-158698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:31:34.988 [DEBUG] [Thread-158698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:31:34.991 [DEBUG] [Thread-158698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:31:35.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:31:35.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:31:35.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:31:35.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:31:35.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:31:35.011 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:31:35.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:31:35.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:31:35.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:31:35.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.521596 -999.00  +15.50   6.89     40   +2.00 1 1 1 1 1   888    0 12.09 -24.30 ----- 8.2 6.9 197.2 14.7 24.7 -29.4 23.7 -28.1 25.4 -29.6 26.7 -31.5
2025-09-29T14:31:35.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:31:35.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:31:35.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.521596
2025-09-29T14:31:35.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:31:35.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:31:35.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:31:35.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:31:35.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:31:35.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:31:21', tmtdew=15.05, humidity=35.76, cloud=0.0, wind=13.66, temperature=14.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:31:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:31:35.013 [DEBUG] [Thread-158698] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:35.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:31:35.106 [DEBUG] [Thread-158701] [transport.py] [_log()] starting thread (client mode): 0x2e376560
2025-09-29T14:31:35.106 [DEBUG] [Thread-158701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:31:35.121 [DEBUG] [Thread-158701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:31:35.121 [INFO] [Thread-158701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:31:35.129 [DEBUG] [Thread-158701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:31:35.129 [DEBUG] [Thread-158701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:31:35.129 [DEBUG] [Thread-158701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:31:35.129 [DEBUG] [Thread-158701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:35.129 [DEBUG] [Thread-158701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:35.129 [DEBUG] [Thread-158701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:35.129 [DEBUG] [Thread-158701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:35.129 [DEBUG] [Thread-158701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] client lang: <none>
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] server lang: <none>
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] kex follows: False
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] Compression: none
2025-09-29T14:31:35.130 [DEBUG] [Thread-158701] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:31:35.188 [DEBUG] [Thread-158701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:31:35.188 [DEBUG] [Thread-158701] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:31:35.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:31:35.189 [DEBUG] [Thread-158701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:31:35.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:31:35.244 [DEBUG] [Thread-158701] [transport.py] [_log()] userauth is OK
2025-09-29T14:31:35.244 [DEBUG] [Thread-158701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:31:35.245 [DEBUG] [Thread-158701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:31:35.245 [DEBUG] [Thread-158701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:31:35.245 [DEBUG] [Thread-158701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:31:35.264 [INFO] [Thread-158701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:31:35.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:31:35.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:31:36.245 [DEBUG] [Thread-158701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:31:36.246 [DEBUG] [Thread-158701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:31:36.293 [DEBUG] [Thread-158701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:31:36.293 [DEBUG] [Thread-158701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:31:36.302 [DEBUG] [Thread-158701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:31:36.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:31:36.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:31:36.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:31:36.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:31:36.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:31:36.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:31:36.337 [DEBUG] [Thread-158701] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:44.701 [DEBUG] [Thread-158703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:31:46.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:31:46.337 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:31:46.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:31:46.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 31, 21), 15.05, 35.76, 0.0, 13.66, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:31:46.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:31:21
2025-09-29T14:31:47.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:31:47.183 [DEBUG] [Thread-158704] [transport.py] [_log()] starting thread (client mode): 0x2e375630
2025-09-29T14:31:47.183 [DEBUG] [Thread-158704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:31:47.205 [DEBUG] [Thread-158704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:31:47.205 [INFO] [Thread-158704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:31:47.208 [DEBUG] [Thread-158704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:31:47.208 [DEBUG] [Thread-158704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] client lang: <none>
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] server lang: <none>
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] kex follows: False
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:31:47.209 [DEBUG] [Thread-158704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:31:47.210 [DEBUG] [Thread-158704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:31:47.210 [DEBUG] [Thread-158704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:31:47.210 [DEBUG] [Thread-158704] [transport.py] [_log()] Compression: none
2025-09-29T14:31:47.210 [DEBUG] [Thread-158704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:31:47.229 [DEBUG] [Thread-158704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:31:47.230 [DEBUG] [Thread-158704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:31:47.231 [DEBUG] [Thread-158704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:31:47.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:31:47.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:31:47.233 [DEBUG] [Thread-158704] [transport.py] [_log()] userauth is OK
2025-09-29T14:31:47.233 [DEBUG] [Thread-158704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:31:47.233 [DEBUG] [Thread-158704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:31:47.233 [DEBUG] [Thread-158704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:31:47.233 [DEBUG] [Thread-158704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:31:47.258 [INFO] [Thread-158704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:31:47.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:31:47.912 [DEBUG] [Thread-158704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:31:47.913 [DEBUG] [Thread-158704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:31:47.913 [DEBUG] [Thread-158704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:31:47.953 [DEBUG] [Thread-158704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:31:47.954 [DEBUG] [Thread-158704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:31:47.957 [DEBUG] [Thread-158704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:31:47.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:31:47.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:31:47.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:31:47.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:31:47.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:31:47.978 [DEBUG] [Thread-158707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:31:47.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:31:47.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:31:47.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:31:47.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:31:47.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.521596 -999.00  +15.50   6.89     40   +2.00 1 1 1 1 1   888    0 12.09 -24.30 ----- 8.2 6.9 197.2 14.7 24.7 -29.4 23.7 -28.1 25.4 -29.6 26.7 -31.5
2025-09-29T14:31:47.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:31:47.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:31:47.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.521596
2025-09-29T14:31:47.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:31:47.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:31:47.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:31:47.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:31:47.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:31:47.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:31:21', tmtdew=15.05, humidity=35.76, cloud=0.0, wind=13.66, temperature=14.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:31:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:31:47.981 [DEBUG] [Thread-158704] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:48.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:31:48.076 [DEBUG] [Thread-158708] [transport.py] [_log()] starting thread (client mode): 0x2b94e410
2025-09-29T14:31:48.076 [DEBUG] [Thread-158708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:31:48.091 [DEBUG] [Thread-158708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:31:48.091 [INFO] [Thread-158708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] client lang: <none>
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] server lang: <none>
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] kex follows: False
2025-09-29T14:31:48.099 [DEBUG] [Thread-158708] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:31:48.100 [DEBUG] [Thread-158708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:31:48.100 [DEBUG] [Thread-158708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:31:48.100 [DEBUG] [Thread-158708] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:31:48.100 [DEBUG] [Thread-158708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:31:48.100 [DEBUG] [Thread-158708] [transport.py] [_log()] Compression: none
2025-09-29T14:31:48.100 [DEBUG] [Thread-158708] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:31:48.157 [DEBUG] [Thread-158708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:31:48.157 [DEBUG] [Thread-158708] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:31:48.158 [DEBUG] [Thread-158708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:31:48.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:31:48.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:31:48.212 [DEBUG] [Thread-158708] [transport.py] [_log()] userauth is OK
2025-09-29T14:31:48.212 [DEBUG] [Thread-158708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:31:48.213 [DEBUG] [Thread-158708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:31:48.213 [DEBUG] [Thread-158708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:31:48.213 [DEBUG] [Thread-158708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:31:48.231 [INFO] [Thread-158708] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:31:48.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:31:48.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:31:49.268 [DEBUG] [Thread-158708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:31:49.268 [DEBUG] [Thread-158708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:31:49.317 [DEBUG] [Thread-158708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:31:49.317 [DEBUG] [Thread-158708] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:31:49.326 [DEBUG] [Thread-158708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:31:49.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:31:49.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:31:49.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:31:49.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:31:49.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:31:49.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:31:49.358 [DEBUG] [Thread-158708] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:31:59.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:31:59.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:31:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:31:59.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 31, 53), 14.93, 36.19, 0.0, 10.68, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:31:59.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:31:53
2025-09-29T14:32:00.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:32:00.208 [DEBUG] [Thread-158710] [transport.py] [_log()] starting thread (client mode): 0x2b9bb250
2025-09-29T14:32:00.208 [DEBUG] [Thread-158710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:32:00.229 [DEBUG] [Thread-158710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:32:00.229 [INFO] [Thread-158710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:32:00.232 [DEBUG] [Thread-158710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] client lang: <none>
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] server lang: <none>
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] kex follows: False
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] Compression: none
2025-09-29T14:32:00.233 [DEBUG] [Thread-158710] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:32:00.250 [DEBUG] [Thread-158710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:32:00.250 [DEBUG] [Thread-158710] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:32:00.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:32:00.251 [DEBUG] [Thread-158710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:32:00.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:32:00.253 [DEBUG] [Thread-158710] [transport.py] [_log()] userauth is OK
2025-09-29T14:32:00.253 [DEBUG] [Thread-158710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:32:00.253 [DEBUG] [Thread-158710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:32:00.253 [DEBUG] [Thread-158710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:32:00.253 [DEBUG] [Thread-158710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:32:00.277 [INFO] [Thread-158710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:32:00.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:32:00.936 [DEBUG] [Thread-158710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:32:00.936 [DEBUG] [Thread-158710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:32:00.937 [DEBUG] [Thread-158710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:32:00.977 [DEBUG] [Thread-158710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:32:00.977 [DEBUG] [Thread-158710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:32:00.980 [DEBUG] [Thread-158710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:32:00.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:32:00.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:32:00.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:32:00.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:32:00.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:32:01.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:32:01.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:32:01.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:32:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:32:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.521943 -999.00  +15.70   8.19     39   +2.00 1 1 1 1 1   888    0 12.53 -20.35 ----- 4.6 8.2 204.8 10.7 24.8 -28.1 23.7 -31.0 25.5 -27.9 26.9 -30.2
2025-09-29T14:32:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:32:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:32:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.521943
2025-09-29T14:32:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:32:01.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:32:01.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:32:01.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:32:01.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:32:01.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:31:53', tmtdew=14.93, humidity=36.19, cloud=0.0, wind=10.68, temperature=14.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:31:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:32:01.004 [DEBUG] [Thread-158710] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:32:01.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:32:01.100 [DEBUG] [Thread-158713] [transport.py] [_log()] starting thread (client mode): 0x2e3dc8b0
2025-09-29T14:32:01.100 [DEBUG] [Thread-158713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:32:01.114 [DEBUG] [Thread-158713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:32:01.114 [INFO] [Thread-158713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:32:01.122 [DEBUG] [Thread-158713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:32:01.122 [DEBUG] [Thread-158713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] client lang: <none>
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] server lang: <none>
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] kex follows: False
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] Compression: none
2025-09-29T14:32:01.123 [DEBUG] [Thread-158713] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:32:01.181 [DEBUG] [Thread-158713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:32:01.182 [DEBUG] [Thread-158713] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:32:01.182 [DEBUG] [Thread-158713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:32:01.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:32:01.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:32:01.237 [DEBUG] [Thread-158713] [transport.py] [_log()] userauth is OK
2025-09-29T14:32:01.237 [DEBUG] [Thread-158713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:32:01.237 [DEBUG] [Thread-158713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:32:01.237 [DEBUG] [Thread-158713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:32:01.237 [DEBUG] [Thread-158713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:32:01.257 [INFO] [Thread-158713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:32:01.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:32:01.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:32:02.270 [DEBUG] [Thread-158713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:32:02.270 [DEBUG] [Thread-158713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:32:02.318 [DEBUG] [Thread-158713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:32:02.318 [DEBUG] [Thread-158713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:32:02.327 [DEBUG] [Thread-158713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:32:02.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:32:02.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:32:02.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:32:02.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:32:02.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:32:02.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:32:02.362 [DEBUG] [Thread-158713] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:32:03.018 [DEBUG] [Thread-158715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:32:05.052 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:32:05.053 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:32:12.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:32:12.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:32:12.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:32:12.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 31, 53), 14.93, 36.19, 0.0, 10.68, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:32:12.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:31:53
2025-09-29T14:32:13.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:32:13.213 [DEBUG] [Thread-158716] [transport.py] [_log()] starting thread (client mode): 0x2e3dee00
2025-09-29T14:32:13.213 [DEBUG] [Thread-158716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:32:13.233 [DEBUG] [Thread-158716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:32:13.234 [INFO] [Thread-158716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:32:13.237 [DEBUG] [Thread-158716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] client lang: <none>
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] server lang: <none>
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] kex follows: False
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] Compression: none
2025-09-29T14:32:13.238 [DEBUG] [Thread-158716] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:32:13.255 [DEBUG] [Thread-158716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:32:13.255 [DEBUG] [Thread-158716] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:32:13.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:32:13.256 [DEBUG] [Thread-158716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:32:13.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:32:13.259 [DEBUG] [Thread-158716] [transport.py] [_log()] userauth is OK
2025-09-29T14:32:13.259 [DEBUG] [Thread-158716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:32:13.259 [DEBUG] [Thread-158716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:32:13.259 [DEBUG] [Thread-158716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:32:13.259 [DEBUG] [Thread-158716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:32:13.274 [INFO] [Thread-158716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:32:13.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:32:13.919 [DEBUG] [Thread-158716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:32:13.919 [DEBUG] [Thread-158716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:32:13.919 [DEBUG] [Thread-158716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:32:13.960 [DEBUG] [Thread-158716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:32:13.961 [DEBUG] [Thread-158716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:32:13.964 [DEBUG] [Thread-158716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:32:13.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:32:13.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:32:13.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:32:13.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:32:13.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:32:13.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:32:13.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:32:13.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:32:13.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:32:13.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.521943 -999.00  +15.70   8.19     39   +2.00 1 1 1 1 1   888    0 12.53 -20.35 ----- 4.6 8.2 204.8 10.7 24.8 -28.1 23.7 -31.0 25.5 -27.9 26.9 -30.2
2025-09-29T14:32:13.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:32:13.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:32:13.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.521943
2025-09-29T14:32:13.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:32:13.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:32:13.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:32:13.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:32:13.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:32:13.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:31:53', tmtdew=14.93, humidity=36.19, cloud=0.0, wind=10.68, temperature=14.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:31:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:32:13.991 [DEBUG] [Thread-158716] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:32:14.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:32:14.086 [DEBUG] [Thread-158719] [transport.py] [_log()] starting thread (client mode): 0x2b94fd30
2025-09-29T14:32:14.086 [DEBUG] [Thread-158719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:32:14.102 [DEBUG] [Thread-158719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:32:14.102 [INFO] [Thread-158719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:32:14.112 [DEBUG] [Thread-158719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:32:14.112 [DEBUG] [Thread-158719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:32:14.112 [DEBUG] [Thread-158719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:32:14.112 [DEBUG] [Thread-158719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] client lang: <none>
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] server lang: <none>
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] kex follows: False
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:32:14.113 [DEBUG] [Thread-158719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:32:14.114 [DEBUG] [Thread-158719] [transport.py] [_log()] Compression: none
2025-09-29T14:32:14.114 [DEBUG] [Thread-158719] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:32:14.169 [DEBUG] [Thread-158719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:32:14.170 [DEBUG] [Thread-158719] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:32:14.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:32:14.171 [DEBUG] [Thread-158719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:32:14.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:32:14.225 [DEBUG] [Thread-158719] [transport.py] [_log()] userauth is OK
2025-09-29T14:32:14.226 [DEBUG] [Thread-158719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:32:14.226 [DEBUG] [Thread-158719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:32:14.226 [DEBUG] [Thread-158719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:32:14.226 [DEBUG] [Thread-158719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:32:14.245 [INFO] [Thread-158719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:32:14.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:32:14.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:32:15.268 [DEBUG] [Thread-158719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:32:15.268 [DEBUG] [Thread-158719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:32:15.316 [DEBUG] [Thread-158719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:32:15.316 [DEBUG] [Thread-158719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:32:15.325 [DEBUG] [Thread-158719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:32:15.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:32:15.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:32:15.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:32:15.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:32:15.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:32:15.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:32:15.360 [DEBUG] [Thread-158719] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:32:18.062 [DEBUG] [Thread-158721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:32:25.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:32:25.361 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:32:25.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:32:25.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 31, 53), 14.93, 36.19, 0.0, 10.68, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:32:25.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:31:53
2025-09-29T14:32:26.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:32:26.228 [DEBUG] [Thread-158722] [transport.py] [_log()] starting thread (client mode): 0x2e3dfdc0
2025-09-29T14:32:26.228 [DEBUG] [Thread-158722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:32:26.248 [DEBUG] [Thread-158722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:32:26.249 [INFO] [Thread-158722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] client lang: <none>
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] server lang: <none>
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] kex follows: False
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:32:26.250 [DEBUG] [Thread-158722] [transport.py] [_log()] Compression: none
2025-09-29T14:32:26.251 [DEBUG] [Thread-158722] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:32:26.260 [DEBUG] [Thread-158722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:32:26.261 [DEBUG] [Thread-158722] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:32:26.261 [DEBUG] [Thread-158722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:32:26.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:32:26.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:32:26.261 [DEBUG] [Thread-158722] [transport.py] [_log()] userauth is OK
2025-09-29T14:32:26.261 [DEBUG] [Thread-158722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:32:26.261 [DEBUG] [Thread-158722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:32:26.261 [DEBUG] [Thread-158722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:32:26.261 [DEBUG] [Thread-158722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:32:26.280 [INFO] [Thread-158722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:32:26.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:32:26.895 [DEBUG] [Thread-158722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:32:26.895 [DEBUG] [Thread-158722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:32:26.895 [DEBUG] [Thread-158722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:32:26.936 [DEBUG] [Thread-158722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:32:26.936 [DEBUG] [Thread-158722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:32:26.938 [DEBUG] [Thread-158722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:32:26.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:32:26.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:32:26.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:32:26.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:32:26.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:32:26.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:32:26.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:32:26.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:32:26.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:32:26.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.521943 -999.00  +15.70   8.19     39   +2.00 1 1 1 1 1   888    0 12.53 -20.35 ----- 4.6 8.2 204.8 10.7 24.8 -28.1 23.7 -31.0 25.5 -27.9 26.9 -30.2
2025-09-29T14:32:26.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:32:26.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:32:26.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.521943
2025-09-29T14:32:26.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:32:26.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:32:26.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:32:26.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:32:26.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:32:26.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:31:53', tmtdew=14.93, humidity=36.19, cloud=0.0, wind=10.68, temperature=14.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:31:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:32:26.954 [DEBUG] [Thread-158722] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:32:27.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:32:27.040 [DEBUG] [Thread-158725] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd30
2025-09-29T14:32:27.040 [DEBUG] [Thread-158725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:32:27.054 [DEBUG] [Thread-158725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:32:27.055 [INFO] [Thread-158725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] client lang: <none>
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] server lang: <none>
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] kex follows: False
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:32:27.062 [DEBUG] [Thread-158725] [transport.py] [_log()] Compression: none
2025-09-29T14:32:27.063 [DEBUG] [Thread-158725] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:32:27.124 [DEBUG] [Thread-158725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:32:27.124 [DEBUG] [Thread-158725] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:32:27.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:32:27.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:32:27.125 [DEBUG] [Thread-158725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:32:27.181 [DEBUG] [Thread-158725] [transport.py] [_log()] userauth is OK
2025-09-29T14:32:27.181 [DEBUG] [Thread-158725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:32:27.181 [DEBUG] [Thread-158725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:32:27.181 [DEBUG] [Thread-158725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:32:27.181 [DEBUG] [Thread-158725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:32:27.199 [INFO] [Thread-158725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:32:27.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:32:27.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:32:28.201 [DEBUG] [Thread-158725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:32:28.201 [DEBUG] [Thread-158725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:32:28.249 [DEBUG] [Thread-158725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:32:28.249 [DEBUG] [Thread-158725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:32:28.258 [DEBUG] [Thread-158725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:32:28.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:32:28.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:32:28.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:32:28.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:32:28.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:32:28.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:32:28.289 [DEBUG] [Thread-158725] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:32:33.091 [DEBUG] [Thread-158727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:32:38.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:32:38.291 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:32:38.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:32:38.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 32, 25), 14.95, 36.14, 0.0, 9.79, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:32:38.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:32:25
2025-09-29T14:32:38.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:32:39.131 [DEBUG] [Thread-158728] [transport.py] [_log()] starting thread (client mode): 0x2b94f520
2025-09-29T14:32:39.131 [DEBUG] [Thread-158728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:32:39.153 [DEBUG] [Thread-158728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:32:39.153 [INFO] [Thread-158728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:32:39.156 [DEBUG] [Thread-158728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:32:39.156 [DEBUG] [Thread-158728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] client lang: <none>
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] server lang: <none>
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] kex follows: False
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] Compression: none
2025-09-29T14:32:39.157 [DEBUG] [Thread-158728] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:32:39.175 [DEBUG] [Thread-158728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:32:39.175 [DEBUG] [Thread-158728] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:32:39.176 [DEBUG] [Thread-158728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:32:39.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:32:39.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:32:39.178 [DEBUG] [Thread-158728] [transport.py] [_log()] userauth is OK
2025-09-29T14:32:39.178 [DEBUG] [Thread-158728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:32:39.178 [DEBUG] [Thread-158728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:32:39.178 [DEBUG] [Thread-158728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:32:39.178 [DEBUG] [Thread-158728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:32:39.211 [INFO] [Thread-158728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:32:39.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:32:39.859 [DEBUG] [Thread-158728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:32:39.859 [DEBUG] [Thread-158728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:32:39.860 [DEBUG] [Thread-158728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:32:39.900 [DEBUG] [Thread-158728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:32:39.900 [DEBUG] [Thread-158728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:32:39.904 [DEBUG] [Thread-158728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:32:39.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:32:39.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:32:39.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:32:39.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:32:39.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:32:39.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:32:39.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:32:39.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:32:39.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:32:39.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.522290 -999.00  +15.90   7.02     39   +2.00 1 1 1 1 1   888    0 12.69 -15.14 ----- 6.5 7.0 220.4 9.0 24.9 -30.4 23.8 -28.7 25.5 -28.2 26.9 -31.6
2025-09-29T14:32:39.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:32:39.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:32:39.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.522290
2025-09-29T14:32:39.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:32:39.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:32:39.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:32:39.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:32:39.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:32:39.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:32:25', tmtdew=14.95, humidity=36.14, cloud=0.0, wind=9.79, temperature=14.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:32:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:32:39.930 [DEBUG] [Thread-158728] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:32:40.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:32:44.732 [DEBUG] [Thread-158731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:32:48.125 [DEBUG] [Thread-158732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:33:03.169 [DEBUG] [Thread-158733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:33:05.194 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:33:05.195 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:33:18.203 [DEBUG] [Thread-158734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:33:33.233 [DEBUG] [Thread-158735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:33:44.760 [DEBUG] [Thread-158736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:33:48.265 [DEBUG] [Thread-158737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:34:03.293 [DEBUG] [Thread-158738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:34:05.335 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:34:05.336 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:34:18.321 [DEBUG] [Thread-158739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:34:33.349 [DEBUG] [Thread-158740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:34:44.793 [DEBUG] [Thread-158741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:34:48.380 [DEBUG] [Thread-158742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:34:52.731 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T14:35:02.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:35:02.741 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:35:02.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:35:03.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 34, 33), 15.42, 34.76, 0.0, 15.79, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:35:03.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:34:33
2025-09-29T14:35:03.408 [DEBUG] [Thread-158743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:35:03.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:35:03.669 [DEBUG] [Thread-158744] [transport.py] [_log()] starting thread (client mode): 0x2e3dd900
2025-09-29T14:35:03.670 [DEBUG] [Thread-158744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:03.690 [DEBUG] [Thread-158744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:35:03.690 [INFO] [Thread-158744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] Compression: none
2025-09-29T14:35:03.694 [DEBUG] [Thread-158744] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:03.710 [DEBUG] [Thread-158744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:03.711 [DEBUG] [Thread-158744] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:03.711 [DEBUG] [Thread-158744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:35:03.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:35:03.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:03.711 [DEBUG] [Thread-158744] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:03.711 [DEBUG] [Thread-158744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:03.711 [DEBUG] [Thread-158744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:03.711 [DEBUG] [Thread-158744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:35:03.711 [DEBUG] [Thread-158744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:03.720 [INFO] [Thread-158744] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:03.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:05.477 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:35:05.478 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:35:06.939 [DEBUG] [Thread-158744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:06.939 [DEBUG] [Thread-158744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:06.939 [DEBUG] [Thread-158744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:35:06.980 [DEBUG] [Thread-158744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:06.980 [DEBUG] [Thread-158744] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:06.982 [DEBUG] [Thread-158744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:06.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:06.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:35:06.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:35:06.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:35:07.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:07.006 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:35:07.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.524026 -999.00  +16.30   2.53     39   +2.30 1 1 1 1 1   888    0 13.81 21.05 ----- 7.2 2.5 87.8 11.6 25.1 -29.9 24.0 -29.9 25.6 -28.8 27.1 -30.9
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.524026
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:35:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:34:33', tmtdew=15.42, humidity=34.76, cloud=0.0, wind=15.79, temperature=15.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:34:35.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:35:07.008 [DEBUG] [Thread-158744] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:07.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:35:07.094 [DEBUG] [Thread-158747] [transport.py] [_log()] starting thread (client mode): 0x2e374970
2025-09-29T14:35:07.094 [DEBUG] [Thread-158747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:07.111 [DEBUG] [Thread-158747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:35:07.111 [INFO] [Thread-158747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:07.119 [DEBUG] [Thread-158747] [transport.py] [_log()] Compression: none
2025-09-29T14:35:07.120 [DEBUG] [Thread-158747] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:07.179 [DEBUG] [Thread-158747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:07.180 [DEBUG] [Thread-158747] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:07.180 [DEBUG] [Thread-158747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:35:07.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:35:07.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:07.236 [DEBUG] [Thread-158747] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:07.236 [DEBUG] [Thread-158747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:07.236 [DEBUG] [Thread-158747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:07.236 [DEBUG] [Thread-158747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:35:07.236 [DEBUG] [Thread-158747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:07.251 [INFO] [Thread-158747] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:07.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:35:07.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:08.258 [DEBUG] [Thread-158747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:08.258 [DEBUG] [Thread-158747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:08.306 [DEBUG] [Thread-158747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:08.306 [DEBUG] [Thread-158747] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:08.315 [DEBUG] [Thread-158747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:08.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:08.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:35:08.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:35:08.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:08.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:08.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:08.349 [DEBUG] [Thread-158747] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:18.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:35:18.353 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:35:18.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:35:18.433 [DEBUG] [Thread-158749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:35:18.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 35, 6), 15.34, 34.93, 0.0, 15.9, 15.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:35:18.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:35:06
2025-09-29T14:35:19.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:35:19.228 [DEBUG] [Thread-158750] [transport.py] [_log()] starting thread (client mode): 0x2e375c60
2025-09-29T14:35:19.229 [DEBUG] [Thread-158750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:19.249 [DEBUG] [Thread-158750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:35:19.249 [INFO] [Thread-158750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:35:19.252 [DEBUG] [Thread-158750] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:19.252 [DEBUG] [Thread-158750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:35:19.252 [DEBUG] [Thread-158750] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:19.252 [DEBUG] [Thread-158750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:19.252 [DEBUG] [Thread-158750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:19.252 [DEBUG] [Thread-158750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:19.252 [DEBUG] [Thread-158750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:19.252 [DEBUG] [Thread-158750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] Compression: none
2025-09-29T14:35:19.253 [DEBUG] [Thread-158750] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:19.269 [DEBUG] [Thread-158750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:19.270 [DEBUG] [Thread-158750] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:19.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:35:19.271 [DEBUG] [Thread-158750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:35:19.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:19.272 [DEBUG] [Thread-158750] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:19.272 [DEBUG] [Thread-158750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:19.272 [DEBUG] [Thread-158750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:19.272 [DEBUG] [Thread-158750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:35:19.273 [DEBUG] [Thread-158750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:19.289 [INFO] [Thread-158750] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:19.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:19.939 [DEBUG] [Thread-158750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:19.939 [DEBUG] [Thread-158750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:19.939 [DEBUG] [Thread-158750] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:35:19.980 [DEBUG] [Thread-158750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:19.980 [DEBUG] [Thread-158750] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:19.982 [DEBUG] [Thread-158750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:19.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:19.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:35:19.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:35:19.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:35:19.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:20.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:35:20.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:20.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:20.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:35:20.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.524373 -999.00  +16.30  11.18     38   +2.10 1 1 1 1 1   888    0 14.18 27.24 ----- 14.1 11.2 184.8 18.4 25.2 -29.3 23.6 -33.2 25.8 -29.0 27.1 -31.2
2025-09-29T14:35:20.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:35:20.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:35:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.524373
2025-09-29T14:35:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:35:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:35:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:35:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:35:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:35:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:35:06', tmtdew=15.34, humidity=34.93, cloud=0.0, wind=15.9, temperature=15.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:35:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:35:20.005 [DEBUG] [Thread-158750] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:20.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:35:20.086 [DEBUG] [Thread-158753] [transport.py] [_log()] starting thread (client mode): 0x2b96fe20
2025-09-29T14:35:20.086 [DEBUG] [Thread-158753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:20.100 [DEBUG] [Thread-158753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:35:20.100 [INFO] [Thread-158753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:35:20.108 [DEBUG] [Thread-158753] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:20.108 [DEBUG] [Thread-158753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:35:20.108 [DEBUG] [Thread-158753] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:20.108 [DEBUG] [Thread-158753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:20.108 [DEBUG] [Thread-158753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:20.108 [DEBUG] [Thread-158753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:20.108 [DEBUG] [Thread-158753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] Compression: none
2025-09-29T14:35:20.109 [DEBUG] [Thread-158753] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:20.163 [DEBUG] [Thread-158753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:20.164 [DEBUG] [Thread-158753] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:20.164 [DEBUG] [Thread-158753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:35:20.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:35:20.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:20.220 [DEBUG] [Thread-158753] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:20.221 [DEBUG] [Thread-158753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:20.221 [DEBUG] [Thread-158753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:20.221 [DEBUG] [Thread-158753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:35:20.221 [DEBUG] [Thread-158753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:20.243 [INFO] [Thread-158753] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:20.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:35:20.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:21.221 [DEBUG] [Thread-158753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:21.221 [DEBUG] [Thread-158753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:21.269 [DEBUG] [Thread-158753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:21.269 [DEBUG] [Thread-158753] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:21.278 [DEBUG] [Thread-158753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:21.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:21.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:35:21.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:35:21.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:21.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:21.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:21.312 [DEBUG] [Thread-158753] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:31.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:35:31.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:35:31.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:35:31.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 35, 6), 15.34, 34.93, 0.0, 15.9, 15.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:35:31.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:35:06
2025-09-29T14:35:32.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:35:32.180 [DEBUG] [Thread-158755] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-29T14:35:32.180 [DEBUG] [Thread-158755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:32.200 [DEBUG] [Thread-158755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:35:32.200 [INFO] [Thread-158755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:32.203 [DEBUG] [Thread-158755] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:32.204 [DEBUG] [Thread-158755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:32.204 [DEBUG] [Thread-158755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:32.204 [DEBUG] [Thread-158755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:32.204 [DEBUG] [Thread-158755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:32.204 [DEBUG] [Thread-158755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:32.204 [DEBUG] [Thread-158755] [transport.py] [_log()] Compression: none
2025-09-29T14:35:32.204 [DEBUG] [Thread-158755] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:32.219 [DEBUG] [Thread-158755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:32.220 [DEBUG] [Thread-158755] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:32.221 [DEBUG] [Thread-158755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:35:32.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:35:32.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:32.222 [DEBUG] [Thread-158755] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:32.223 [DEBUG] [Thread-158755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:32.223 [DEBUG] [Thread-158755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:32.223 [DEBUG] [Thread-158755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:35:32.223 [DEBUG] [Thread-158755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:32.242 [INFO] [Thread-158755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:32.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:32.890 [DEBUG] [Thread-158755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:32.890 [DEBUG] [Thread-158755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:32.890 [DEBUG] [Thread-158755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:35:32.931 [DEBUG] [Thread-158755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:32.931 [DEBUG] [Thread-158755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:32.934 [DEBUG] [Thread-158755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:32.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:32.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:35:32.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:35:32.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:35:32.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:32.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:35:32.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:32.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:32.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:35:32.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.524373 -999.00  +16.30  11.18     38   +2.10 1 1 1 1 1   888    0 14.18 27.24 ----- 14.1 11.2 184.8 18.4 25.2 -29.3 23.6 -33.2 25.8 -29.0 27.1 -31.2
2025-09-29T14:35:32.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:35:32.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:35:32.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.524373
2025-09-29T14:35:32.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:35:32.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:35:32.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:35:32.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:35:32.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:35:32.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:35:06', tmtdew=15.34, humidity=34.93, cloud=0.0, wind=15.9, temperature=15.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:35:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:35:32.960 [DEBUG] [Thread-158755] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:33.043 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:35:33.053 [DEBUG] [Thread-158758] [transport.py] [_log()] starting thread (client mode): 0x2b96c670
2025-09-29T14:35:33.053 [DEBUG] [Thread-158758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:33.068 [DEBUG] [Thread-158758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:35:33.068 [INFO] [Thread-158758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:35:33.076 [DEBUG] [Thread-158758] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:33.076 [DEBUG] [Thread-158758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:35:33.076 [DEBUG] [Thread-158758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:33.076 [DEBUG] [Thread-158758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:33.076 [DEBUG] [Thread-158758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:33.076 [DEBUG] [Thread-158758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] Compression: none
2025-09-29T14:35:33.077 [DEBUG] [Thread-158758] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:33.133 [DEBUG] [Thread-158758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:33.133 [DEBUG] [Thread-158758] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:33.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:35:33.134 [DEBUG] [Thread-158758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:35:33.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:33.189 [DEBUG] [Thread-158758] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:33.189 [DEBUG] [Thread-158758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:33.190 [DEBUG] [Thread-158758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:33.190 [DEBUG] [Thread-158758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:35:33.190 [DEBUG] [Thread-158758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:33.209 [INFO] [Thread-158758] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:33.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:35:33.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:33.474 [DEBUG] [Thread-158760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:35:34.171 [DEBUG] [Thread-158758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:34.171 [DEBUG] [Thread-158758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:34.220 [DEBUG] [Thread-158758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:34.220 [DEBUG] [Thread-158758] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:34.228 [DEBUG] [Thread-158758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:34.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:34.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:35:34.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:35:34.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:34.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:34.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:34.264 [DEBUG] [Thread-158758] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:44.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:35:44.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:35:44.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:35:44.820 [DEBUG] [Thread-158761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:35:44.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 35, 38), 15.47, 34.56, 0.0, 13.18, 15.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:35:44.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:35:38
2025-09-29T14:35:44.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:35:45.123 [DEBUG] [Thread-158762] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-29T14:35:45.123 [DEBUG] [Thread-158762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:45.143 [DEBUG] [Thread-158762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:35:45.143 [INFO] [Thread-158762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:35:45.146 [DEBUG] [Thread-158762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:45.146 [DEBUG] [Thread-158762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:35:45.146 [DEBUG] [Thread-158762] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:45.146 [DEBUG] [Thread-158762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:45.146 [DEBUG] [Thread-158762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:45.146 [DEBUG] [Thread-158762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:45.146 [DEBUG] [Thread-158762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:45.146 [DEBUG] [Thread-158762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] Compression: none
2025-09-29T14:35:45.147 [DEBUG] [Thread-158762] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:45.162 [DEBUG] [Thread-158762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:45.162 [DEBUG] [Thread-158762] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:45.163 [DEBUG] [Thread-158762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:35:45.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:35:45.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:45.204 [DEBUG] [Thread-158762] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:45.204 [DEBUG] [Thread-158762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:45.204 [DEBUG] [Thread-158762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:45.204 [DEBUG] [Thread-158762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:35:45.204 [DEBUG] [Thread-158762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:45.234 [INFO] [Thread-158762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:45.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:45.860 [DEBUG] [Thread-158762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:45.860 [DEBUG] [Thread-158762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:45.861 [DEBUG] [Thread-158762] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:35:45.901 [DEBUG] [Thread-158762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:45.901 [DEBUG] [Thread-158762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:45.904 [DEBUG] [Thread-158762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:45.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:45.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:35:45.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:35:45.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:35:45.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:45.929 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:35:45.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:45.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:35:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.524373 -999.00  +16.30  11.18     38   +2.10 1 1 1 1 1   888    0 14.18 27.24 ----- 14.1 11.2 184.8 18.4 25.2 -29.3 23.6 -33.2 25.8 -29.0 27.1 -31.2
2025-09-29T14:35:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:35:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:35:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.524373
2025-09-29T14:35:45.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:35:45.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:35:45.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:35:45.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:35:45.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:35:45.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:35:38', tmtdew=15.47, humidity=34.56, cloud=0.0, wind=13.18, temperature=15.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:35:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:35:45.932 [DEBUG] [Thread-158762] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:46.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:35:46.029 [DEBUG] [Thread-158765] [transport.py] [_log()] starting thread (client mode): 0x2b955690
2025-09-29T14:35:46.030 [DEBUG] [Thread-158765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:46.045 [DEBUG] [Thread-158765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:35:46.045 [INFO] [Thread-158765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:46.053 [DEBUG] [Thread-158765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:46.054 [DEBUG] [Thread-158765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:46.054 [DEBUG] [Thread-158765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:46.054 [DEBUG] [Thread-158765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:46.054 [DEBUG] [Thread-158765] [transport.py] [_log()] Compression: none
2025-09-29T14:35:46.054 [DEBUG] [Thread-158765] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:46.112 [DEBUG] [Thread-158765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:46.113 [DEBUG] [Thread-158765] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:46.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:35:46.114 [DEBUG] [Thread-158765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:35:46.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:46.169 [DEBUG] [Thread-158765] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:46.170 [DEBUG] [Thread-158765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:46.170 [DEBUG] [Thread-158765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:46.170 [DEBUG] [Thread-158765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:35:46.170 [DEBUG] [Thread-158765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:46.189 [INFO] [Thread-158765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:46.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:35:46.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:47.285 [DEBUG] [Thread-158765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:47.285 [DEBUG] [Thread-158765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:47.333 [DEBUG] [Thread-158765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:47.333 [DEBUG] [Thread-158765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:47.342 [DEBUG] [Thread-158765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:47.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:47.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:35:47.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:35:47.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:47.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:47.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:47.377 [DEBUG] [Thread-158765] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:48.518 [DEBUG] [Thread-158767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:35:57.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:35:57.372 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:35:57.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:35:57.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 35, 38), 15.47, 34.56, 0.0, 13.18, 15.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:35:57.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:35:38
2025-09-29T14:35:58.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:35:58.238 [DEBUG] [Thread-158768] [transport.py] [_log()] starting thread (client mode): 0x2b94c190
2025-09-29T14:35:58.238 [DEBUG] [Thread-158768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:58.258 [DEBUG] [Thread-158768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:35:58.258 [INFO] [Thread-158768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] Compression: none
2025-09-29T14:35:58.261 [DEBUG] [Thread-158768] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:58.278 [DEBUG] [Thread-158768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:58.279 [DEBUG] [Thread-158768] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:58.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:35:58.280 [DEBUG] [Thread-158768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:35:58.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:58.282 [DEBUG] [Thread-158768] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:58.282 [DEBUG] [Thread-158768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:58.282 [DEBUG] [Thread-158768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:58.282 [DEBUG] [Thread-158768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:35:58.282 [DEBUG] [Thread-158768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:58.318 [INFO] [Thread-158768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:58.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:35:58.962 [DEBUG] [Thread-158768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:35:58.962 [DEBUG] [Thread-158768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:35:58.963 [DEBUG] [Thread-158768] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:35:59.003 [DEBUG] [Thread-158768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:35:59.004 [DEBUG] [Thread-158768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:35:59.006 [DEBUG] [Thread-158768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:35:59.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:35:59.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:35:59.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:35:59.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:35:59.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:35:59.030 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:35:59.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:35:59.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:35:59.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:35:59.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.524721 -999.00  +16.00  12.87     38   +2.00 1 1 1 1 1   888    0 14.00 34.62 ----- 13.4 12.9 142.0 15.8 25.1 -29.4 23.9 -28.4 25.6 -29.2 27.0 -29.2
2025-09-29T14:35:59.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:35:59.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:35:59.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.524721
2025-09-29T14:35:59.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:35:59.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:35:59.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:35:59.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:35:59.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:35:59.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:35:38', tmtdew=15.47, humidity=34.56, cloud=0.0, wind=13.18, temperature=15.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:35:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:35:59.032 [DEBUG] [Thread-158768] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:35:59.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:35:59.126 [DEBUG] [Thread-158771] [transport.py] [_log()] starting thread (client mode): 0x2e3dd900
2025-09-29T14:35:59.126 [DEBUG] [Thread-158771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:35:59.142 [DEBUG] [Thread-158771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:35:59.142 [INFO] [Thread-158771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:35:59.150 [DEBUG] [Thread-158771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:35:59.150 [DEBUG] [Thread-158771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:35:59.150 [DEBUG] [Thread-158771] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:35:59.150 [DEBUG] [Thread-158771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:59.150 [DEBUG] [Thread-158771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:35:59.150 [DEBUG] [Thread-158771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] client lang: <none>
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] server lang: <none>
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] kex follows: False
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:35:59.151 [DEBUG] [Thread-158771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:35:59.152 [DEBUG] [Thread-158771] [transport.py] [_log()] Compression: none
2025-09-29T14:35:59.152 [DEBUG] [Thread-158771] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:35:59.213 [DEBUG] [Thread-158771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:35:59.213 [DEBUG] [Thread-158771] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:35:59.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:35:59.214 [DEBUG] [Thread-158771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:35:59.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:35:59.269 [DEBUG] [Thread-158771] [transport.py] [_log()] userauth is OK
2025-09-29T14:35:59.269 [DEBUG] [Thread-158771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:35:59.270 [DEBUG] [Thread-158771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:35:59.270 [DEBUG] [Thread-158771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:35:59.270 [DEBUG] [Thread-158771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:35:59.288 [INFO] [Thread-158771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:35:59.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:35:59.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:00.277 [DEBUG] [Thread-158771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:00.277 [DEBUG] [Thread-158771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:00.325 [DEBUG] [Thread-158771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:00.325 [DEBUG] [Thread-158771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:00.334 [DEBUG] [Thread-158771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:00.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:00.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:36:00.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:36:00.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:00.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:00.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:00.369 [DEBUG] [Thread-158771] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:36:03.566 [DEBUG] [Thread-158773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:36:05.618 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:36:05.619 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:36:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:36:10.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:36:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:36:11.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 35, 38), 15.47, 34.56, 0.0, 13.18, 15.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:36:11.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:35:38
2025-09-29T14:36:11.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:36:11.273 [DEBUG] [Thread-158774] [transport.py] [_log()] starting thread (client mode): 0x2b956080
2025-09-29T14:36:11.273 [DEBUG] [Thread-158774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:36:11.293 [DEBUG] [Thread-158774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:36:11.293 [INFO] [Thread-158774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] client lang: <none>
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] server lang: <none>
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] kex follows: False
2025-09-29T14:36:11.296 [DEBUG] [Thread-158774] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:36:11.297 [DEBUG] [Thread-158774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:36:11.297 [DEBUG] [Thread-158774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:36:11.297 [DEBUG] [Thread-158774] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:36:11.297 [DEBUG] [Thread-158774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:36:11.297 [DEBUG] [Thread-158774] [transport.py] [_log()] Compression: none
2025-09-29T14:36:11.297 [DEBUG] [Thread-158774] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:36:11.314 [DEBUG] [Thread-158774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:36:11.314 [DEBUG] [Thread-158774] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:36:11.314 [DEBUG] [Thread-158774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:36:11.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:36:11.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:36:11.315 [DEBUG] [Thread-158774] [transport.py] [_log()] userauth is OK
2025-09-29T14:36:11.315 [DEBUG] [Thread-158774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:36:11.315 [DEBUG] [Thread-158774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:36:11.315 [DEBUG] [Thread-158774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:36:11.315 [DEBUG] [Thread-158774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:36:11.334 [INFO] [Thread-158774] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:36:11.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:11.987 [DEBUG] [Thread-158774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:11.987 [DEBUG] [Thread-158774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:11.987 [DEBUG] [Thread-158774] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:36:12.028 [DEBUG] [Thread-158774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:12.028 [DEBUG] [Thread-158774] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:12.030 [DEBUG] [Thread-158774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:12.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:12.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:36:12.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:36:12.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:36:12.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:12.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:36:12.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:12.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:12.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:36:12.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.524721 -999.00  +16.00  12.87     38   +2.00 1 1 1 1 1   888    0 14.00 34.62 ----- 13.4 12.9 142.0 15.8 25.1 -29.4 23.9 -28.4 25.6 -29.2 27.0 -29.2
2025-09-29T14:36:12.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:36:12.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:36:12.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.524721
2025-09-29T14:36:12.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:36:12.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:36:12.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:36:12.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:36:12.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:36:12.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:35:38', tmtdew=15.47, humidity=34.56, cloud=0.0, wind=13.18, temperature=15.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:35:35.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:36:12.048 [DEBUG] [Thread-158774] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:36:12.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:36:12.133 [DEBUG] [Thread-158777] [transport.py] [_log()] starting thread (client mode): 0x2e375360
2025-09-29T14:36:12.133 [DEBUG] [Thread-158777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:36:12.148 [DEBUG] [Thread-158777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:36:12.148 [INFO] [Thread-158777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:36:12.156 [DEBUG] [Thread-158777] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:36:12.156 [DEBUG] [Thread-158777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:36:12.156 [DEBUG] [Thread-158777] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:36:12.156 [DEBUG] [Thread-158777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] client lang: <none>
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] server lang: <none>
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] kex follows: False
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:36:12.157 [DEBUG] [Thread-158777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:36:12.158 [DEBUG] [Thread-158777] [transport.py] [_log()] Compression: none
2025-09-29T14:36:12.158 [DEBUG] [Thread-158777] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:36:12.213 [DEBUG] [Thread-158777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:36:12.214 [DEBUG] [Thread-158777] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:36:12.214 [DEBUG] [Thread-158777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:36:12.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:36:12.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:36:12.269 [DEBUG] [Thread-158777] [transport.py] [_log()] userauth is OK
2025-09-29T14:36:12.270 [DEBUG] [Thread-158777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:36:12.270 [DEBUG] [Thread-158777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:36:12.270 [DEBUG] [Thread-158777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:36:12.270 [DEBUG] [Thread-158777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:36:12.289 [INFO] [Thread-158777] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:36:12.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:36:12.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:13.256 [DEBUG] [Thread-158777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:13.257 [DEBUG] [Thread-158777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:13.304 [DEBUG] [Thread-158777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:13.304 [DEBUG] [Thread-158777] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:13.313 [DEBUG] [Thread-158777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:13.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:13.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:36:13.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:36:13.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:13.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:13.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:13.347 [DEBUG] [Thread-158777] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:36:18.614 [DEBUG] [Thread-158779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:36:23.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:36:23.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:36:23.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:36:23.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 36, 10), 15.4, 34.71, 0.0, 9.28, 15.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:36:23.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:36:10
2025-09-29T14:36:24.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:36:24.218 [DEBUG] [Thread-158780] [transport.py] [_log()] starting thread (client mode): 0x2b94d300
2025-09-29T14:36:24.219 [DEBUG] [Thread-158780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:36:24.240 [DEBUG] [Thread-158780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:36:24.240 [INFO] [Thread-158780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:36:24.242 [DEBUG] [Thread-158780] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] client lang: <none>
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] server lang: <none>
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] kex follows: False
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:36:24.243 [DEBUG] [Thread-158780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:36:24.244 [DEBUG] [Thread-158780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:36:24.244 [DEBUG] [Thread-158780] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:36:24.244 [DEBUG] [Thread-158780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:36:24.244 [DEBUG] [Thread-158780] [transport.py] [_log()] Compression: none
2025-09-29T14:36:24.244 [DEBUG] [Thread-158780] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:36:24.261 [DEBUG] [Thread-158780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:36:24.261 [DEBUG] [Thread-158780] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:36:24.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:36:24.263 [DEBUG] [Thread-158780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:36:24.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:36:24.264 [DEBUG] [Thread-158780] [transport.py] [_log()] userauth is OK
2025-09-29T14:36:24.264 [DEBUG] [Thread-158780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:36:24.264 [DEBUG] [Thread-158780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:36:24.265 [DEBUG] [Thread-158780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:36:24.265 [DEBUG] [Thread-158780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:36:24.288 [INFO] [Thread-158780] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:36:24.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:24.903 [DEBUG] [Thread-158780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:24.904 [DEBUG] [Thread-158780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:24.904 [DEBUG] [Thread-158780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:36:24.944 [DEBUG] [Thread-158780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:24.944 [DEBUG] [Thread-158780] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:24.947 [DEBUG] [Thread-158780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:24.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:24.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:36:24.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:36:24.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:36:24.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:24.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:36:24.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:24.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:24.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:36:24.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.525068 -999.00  +15.60   8.19     39   +1.80 1 1 1 1 1   888    0 14.50 41.91 ----- 6.5 8.2 133.0 15.2 25.0 -29.0 24.1 -28.4 25.6 -28.9 26.9 -31.5
2025-09-29T14:36:24.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:36:24.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:36:24.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.525068
2025-09-29T14:36:24.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:36:24.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:36:24.968 [DEBUG] [Thread-158780] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:36:24.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:36:24.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:36:24.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:36:24.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:36:10', tmtdew=15.4, humidity=34.71, cloud=0.0, wind=9.28, temperature=15.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:36:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:36:25.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:36:25.059 [DEBUG] [Thread-158783] [transport.py] [_log()] starting thread (client mode): 0x2e3dfdc0
2025-09-29T14:36:25.059 [DEBUG] [Thread-158783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:36:25.074 [DEBUG] [Thread-158783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:36:25.074 [INFO] [Thread-158783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:36:25.082 [DEBUG] [Thread-158783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:36:25.082 [DEBUG] [Thread-158783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:36:25.082 [DEBUG] [Thread-158783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:36:25.082 [DEBUG] [Thread-158783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] client lang: <none>
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] server lang: <none>
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] kex follows: False
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:36:25.083 [DEBUG] [Thread-158783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:36:25.084 [DEBUG] [Thread-158783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:36:25.084 [DEBUG] [Thread-158783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:36:25.084 [DEBUG] [Thread-158783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:36:25.084 [DEBUG] [Thread-158783] [transport.py] [_log()] Compression: none
2025-09-29T14:36:25.084 [DEBUG] [Thread-158783] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:36:25.142 [DEBUG] [Thread-158783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:36:25.143 [DEBUG] [Thread-158783] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:36:25.143 [DEBUG] [Thread-158783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:36:25.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:36:25.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:36:25.198 [DEBUG] [Thread-158783] [transport.py] [_log()] userauth is OK
2025-09-29T14:36:25.198 [DEBUG] [Thread-158783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:36:25.198 [DEBUG] [Thread-158783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:36:25.198 [DEBUG] [Thread-158783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:36:25.198 [DEBUG] [Thread-158783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:36:25.217 [INFO] [Thread-158783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:36:25.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:36:25.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:26.225 [DEBUG] [Thread-158783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:26.225 [DEBUG] [Thread-158783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:26.272 [DEBUG] [Thread-158783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:26.272 [DEBUG] [Thread-158783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:26.282 [DEBUG] [Thread-158783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:26.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:26.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:36:26.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:36:26.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:26.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:26.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:26.317 [DEBUG] [Thread-158783] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:36:33.644 [DEBUG] [Thread-158785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:36:36.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:36:36.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:36:36.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:36:36.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 36, 10), 15.4, 34.71, 0.0, 9.28, 15.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:36:36.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:36:10
2025-09-29T14:36:37.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:36:37.184 [DEBUG] [Thread-158786] [transport.py] [_log()] starting thread (client mode): 0x2b94d4e0
2025-09-29T14:36:37.185 [DEBUG] [Thread-158786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:36:37.204 [DEBUG] [Thread-158786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:36:37.205 [INFO] [Thread-158786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:36:37.208 [DEBUG] [Thread-158786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:36:37.208 [DEBUG] [Thread-158786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] client lang: <none>
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] server lang: <none>
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] kex follows: False
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] Compression: none
2025-09-29T14:36:37.209 [DEBUG] [Thread-158786] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:36:37.227 [DEBUG] [Thread-158786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:36:37.228 [DEBUG] [Thread-158786] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:36:37.228 [DEBUG] [Thread-158786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:36:37.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:36:37.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:36:37.230 [DEBUG] [Thread-158786] [transport.py] [_log()] userauth is OK
2025-09-29T14:36:37.231 [DEBUG] [Thread-158786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:36:37.231 [DEBUG] [Thread-158786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:36:37.231 [DEBUG] [Thread-158786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:36:37.231 [DEBUG] [Thread-158786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:36:37.255 [INFO] [Thread-158786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:36:37.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:37.906 [DEBUG] [Thread-158786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:37.907 [DEBUG] [Thread-158786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:37.907 [DEBUG] [Thread-158786] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:36:37.947 [DEBUG] [Thread-158786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:37.948 [DEBUG] [Thread-158786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:37.951 [DEBUG] [Thread-158786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:37.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:37.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:36:37.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:36:37.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:36:37.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:37.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:36:37.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:37.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:37.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:36:37.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.525068 -999.00  +15.60   8.19     39   +1.80 1 1 1 1 1   888    0 14.50 41.91 ----- 6.5 8.2 133.0 15.2 25.0 -29.0 24.1 -28.4 25.6 -28.9 26.9 -31.5
2025-09-29T14:36:37.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:36:37.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:36:37.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.525068
2025-09-29T14:36:37.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:36:37.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:36:37.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:36:37.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:36:37.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:36:37.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:36:10', tmtdew=15.4, humidity=34.71, cloud=0.0, wind=9.28, temperature=15.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:36:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:36:37.978 [DEBUG] [Thread-158786] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:36:38.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:36:38.088 [DEBUG] [Thread-158789] [transport.py] [_log()] starting thread (client mode): 0x2e377a00
2025-09-29T14:36:38.088 [DEBUG] [Thread-158789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:36:38.103 [DEBUG] [Thread-158789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:36:38.103 [INFO] [Thread-158789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:36:38.111 [DEBUG] [Thread-158789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:36:38.111 [DEBUG] [Thread-158789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:36:38.111 [DEBUG] [Thread-158789] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] client lang: <none>
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] server lang: <none>
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] kex follows: False
2025-09-29T14:36:38.112 [DEBUG] [Thread-158789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:36:38.113 [DEBUG] [Thread-158789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:36:38.113 [DEBUG] [Thread-158789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:36:38.113 [DEBUG] [Thread-158789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:36:38.113 [DEBUG] [Thread-158789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:36:38.113 [DEBUG] [Thread-158789] [transport.py] [_log()] Compression: none
2025-09-29T14:36:38.113 [DEBUG] [Thread-158789] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:36:38.170 [DEBUG] [Thread-158789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:36:38.171 [DEBUG] [Thread-158789] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:36:38.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:36:38.172 [DEBUG] [Thread-158789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:36:38.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:36:38.226 [DEBUG] [Thread-158789] [transport.py] [_log()] userauth is OK
2025-09-29T14:36:38.226 [DEBUG] [Thread-158789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:36:38.226 [DEBUG] [Thread-158789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:36:38.227 [DEBUG] [Thread-158789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:36:38.227 [DEBUG] [Thread-158789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:36:38.247 [INFO] [Thread-158789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:36:38.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:36:38.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:39.232 [DEBUG] [Thread-158789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:39.233 [DEBUG] [Thread-158789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:39.280 [DEBUG] [Thread-158789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:39.281 [DEBUG] [Thread-158789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:39.290 [DEBUG] [Thread-158789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:39.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:39.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:36:39.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:36:39.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:39.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:39.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:39.325 [DEBUG] [Thread-158789] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:36:44.857 [DEBUG] [Thread-158791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:36:48.695 [DEBUG] [Thread-158792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:36:49.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:36:49.328 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:36:49.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:36:49.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 36, 41), 15.39, 35.13, 0.0, 8.52, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:36:49.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:36:41
2025-09-29T14:36:50.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:36:50.199 [DEBUG] [Thread-158793] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-29T14:36:50.199 [DEBUG] [Thread-158793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:36:50.219 [DEBUG] [Thread-158793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:36:50.219 [INFO] [Thread-158793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:36:50.222 [DEBUG] [Thread-158793] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:36:50.222 [DEBUG] [Thread-158793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:36:50.222 [DEBUG] [Thread-158793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:36:50.222 [DEBUG] [Thread-158793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:50.222 [DEBUG] [Thread-158793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:50.222 [DEBUG] [Thread-158793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:50.222 [DEBUG] [Thread-158793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] client lang: <none>
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] server lang: <none>
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] kex follows: False
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] Compression: none
2025-09-29T14:36:50.223 [DEBUG] [Thread-158793] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:36:50.241 [DEBUG] [Thread-158793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:36:50.241 [DEBUG] [Thread-158793] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:36:50.242 [DEBUG] [Thread-158793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:36:50.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:36:50.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:36:50.285 [DEBUG] [Thread-158793] [transport.py] [_log()] userauth is OK
2025-09-29T14:36:50.285 [DEBUG] [Thread-158793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:36:50.285 [DEBUG] [Thread-158793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:36:50.285 [DEBUG] [Thread-158793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:36:50.285 [DEBUG] [Thread-158793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:36:50.322 [INFO] [Thread-158793] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:36:50.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:50.951 [DEBUG] [Thread-158793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:50.951 [DEBUG] [Thread-158793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:50.951 [DEBUG] [Thread-158793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:36:50.992 [DEBUG] [Thread-158793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:50.992 [DEBUG] [Thread-158793] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:50.995 [DEBUG] [Thread-158793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:51.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:51.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:36:51.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:36:51.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:36:51.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:51.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:36:51.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:51.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:51.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:36:51.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.525068 -999.00  +15.60   8.19     39   +1.80 1 1 1 1 1   888    0 14.50 41.91 ----- 6.5 8.2 133.0 15.2 25.0 -29.0 24.1 -28.4 25.6 -28.9 26.9 -31.5
2025-09-29T14:36:51.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:36:51.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:36:51.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.525068
2025-09-29T14:36:51.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:36:51.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:36:51.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:36:51.020 [DEBUG] [Thread-158793] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:36:51.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:36:51.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:36:51.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:36:41', tmtdew=15.39, humidity=35.13, cloud=0.0, wind=8.52, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:36:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:36:51.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:36:51.123 [DEBUG] [Thread-158796] [transport.py] [_log()] starting thread (client mode): 0x2e374310
2025-09-29T14:36:51.123 [DEBUG] [Thread-158796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:36:51.138 [DEBUG] [Thread-158796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:36:51.138 [INFO] [Thread-158796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:36:51.145 [DEBUG] [Thread-158796] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] client lang: <none>
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] server lang: <none>
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] kex follows: False
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] Compression: none
2025-09-29T14:36:51.146 [DEBUG] [Thread-158796] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:36:51.201 [DEBUG] [Thread-158796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:36:51.201 [DEBUG] [Thread-158796] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:36:51.201 [DEBUG] [Thread-158796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:36:51.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:36:51.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:36:51.258 [DEBUG] [Thread-158796] [transport.py] [_log()] userauth is OK
2025-09-29T14:36:51.258 [DEBUG] [Thread-158796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:36:51.258 [DEBUG] [Thread-158796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:36:51.258 [DEBUG] [Thread-158796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:36:51.258 [DEBUG] [Thread-158796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:36:51.272 [INFO] [Thread-158796] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:36:51.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:36:51.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:36:52.272 [DEBUG] [Thread-158796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:36:52.273 [DEBUG] [Thread-158796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:36:52.320 [DEBUG] [Thread-158796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:36:52.321 [DEBUG] [Thread-158796] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:36:52.330 [DEBUG] [Thread-158796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:36:52.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:36:52.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:36:52.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:36:52.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:36:52.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:36:52.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:36:52.367 [DEBUG] [Thread-158796] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:37:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:37:02.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:37:02.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:37:02.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 36, 41), 15.39, 35.13, 0.0, 8.52, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:37:02.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:36:41
2025-09-29T14:37:03.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:37:03.225 [DEBUG] [Thread-158798] [transport.py] [_log()] starting thread (client mode): 0x2e375810
2025-09-29T14:37:03.225 [DEBUG] [Thread-158798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:37:03.244 [DEBUG] [Thread-158798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:37:03.245 [INFO] [Thread-158798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:37:03.248 [DEBUG] [Thread-158798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:37:03.248 [DEBUG] [Thread-158798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:37:03.248 [DEBUG] [Thread-158798] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:37:03.248 [DEBUG] [Thread-158798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:03.248 [DEBUG] [Thread-158798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:03.248 [DEBUG] [Thread-158798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] client lang: <none>
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] server lang: <none>
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] kex follows: False
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:37:03.249 [DEBUG] [Thread-158798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:37:03.250 [DEBUG] [Thread-158798] [transport.py] [_log()] Compression: none
2025-09-29T14:37:03.250 [DEBUG] [Thread-158798] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:37:03.266 [DEBUG] [Thread-158798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:37:03.266 [DEBUG] [Thread-158798] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:37:03.266 [DEBUG] [Thread-158798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:37:03.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:37:03.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:37:03.267 [DEBUG] [Thread-158798] [transport.py] [_log()] userauth is OK
2025-09-29T14:37:03.267 [DEBUG] [Thread-158798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:37:03.267 [DEBUG] [Thread-158798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:37:03.267 [DEBUG] [Thread-158798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:37:03.267 [DEBUG] [Thread-158798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:37:03.277 [INFO] [Thread-158798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:37:03.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:37:03.722 [DEBUG] [Thread-158800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:37:03.910 [DEBUG] [Thread-158798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:37:03.911 [DEBUG] [Thread-158798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:37:03.911 [DEBUG] [Thread-158798] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:37:03.953 [DEBUG] [Thread-158798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:37:03.953 [DEBUG] [Thread-158798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:37:03.955 [DEBUG] [Thread-158798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:37:03.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:37:03.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:37:03.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:37:03.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:37:03.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:37:03.972 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:37:03.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.525415 -999.00  +15.50   6.45     40   +2.00 1 1 1 1 1   888    0 14.50 46.19 ----- 4.0 6.5 114.8 8.3 24.9 -28.9 24.2 -28.0 25.7 -29.3 27.1 -29.2
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.525415
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:37:03.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:36:41', tmtdew=15.39, humidity=35.13, cloud=0.0, wind=8.52, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:36:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:37:03.974 [DEBUG] [Thread-158798] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:37:04.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:37:04.083 [DEBUG] [Thread-158802] [transport.py] [_log()] starting thread (client mode): 0x2e3617e0
2025-09-29T14:37:04.083 [DEBUG] [Thread-158802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:37:04.097 [DEBUG] [Thread-158802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:37:04.097 [INFO] [Thread-158802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:37:04.105 [DEBUG] [Thread-158802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:37:04.105 [DEBUG] [Thread-158802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] client lang: <none>
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] server lang: <none>
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] kex follows: False
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:37:04.106 [DEBUG] [Thread-158802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:37:04.107 [DEBUG] [Thread-158802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:37:04.107 [DEBUG] [Thread-158802] [transport.py] [_log()] Compression: none
2025-09-29T14:37:04.107 [DEBUG] [Thread-158802] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:37:04.162 [DEBUG] [Thread-158802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:37:04.163 [DEBUG] [Thread-158802] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:37:04.163 [DEBUG] [Thread-158802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:37:04.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:37:04.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:37:04.218 [DEBUG] [Thread-158802] [transport.py] [_log()] userauth is OK
2025-09-29T14:37:04.219 [DEBUG] [Thread-158802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:37:04.219 [DEBUG] [Thread-158802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:37:04.219 [DEBUG] [Thread-158802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:37:04.219 [DEBUG] [Thread-158802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:37:04.239 [INFO] [Thread-158802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:37:04.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:37:04.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:37:05.234 [DEBUG] [Thread-158802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:37:05.234 [DEBUG] [Thread-158802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:37:05.282 [DEBUG] [Thread-158802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:37:05.282 [DEBUG] [Thread-158802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:37:05.291 [DEBUG] [Thread-158802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:37:05.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:37:05.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:37:05.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:37:05.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:37:05.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:37:05.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:37:05.326 [DEBUG] [Thread-158802] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:37:05.759 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:37:05.760 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:37:15.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:37:15.327 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:37:15.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:37:15.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 36, 41), 15.39, 35.13, 0.0, 8.52, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:37:15.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:36:41
2025-09-29T14:37:16.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:37:16.207 [DEBUG] [Thread-158804] [transport.py] [_log()] starting thread (client mode): 0x2e363cd0
2025-09-29T14:37:16.207 [DEBUG] [Thread-158804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:37:16.226 [DEBUG] [Thread-158804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:37:16.227 [INFO] [Thread-158804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:37:16.230 [DEBUG] [Thread-158804] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:37:16.230 [DEBUG] [Thread-158804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:37:16.230 [DEBUG] [Thread-158804] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:37:16.230 [DEBUG] [Thread-158804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:16.230 [DEBUG] [Thread-158804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:16.230 [DEBUG] [Thread-158804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:16.230 [DEBUG] [Thread-158804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] client lang: <none>
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] server lang: <none>
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] kex follows: False
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] Compression: none
2025-09-29T14:37:16.231 [DEBUG] [Thread-158804] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:37:16.249 [DEBUG] [Thread-158804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:37:16.250 [DEBUG] [Thread-158804] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:37:16.251 [DEBUG] [Thread-158804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:37:16.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:37:16.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:37:16.293 [DEBUG] [Thread-158804] [transport.py] [_log()] userauth is OK
2025-09-29T14:37:16.293 [DEBUG] [Thread-158804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:37:16.293 [DEBUG] [Thread-158804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:37:16.294 [DEBUG] [Thread-158804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:37:16.294 [DEBUG] [Thread-158804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:37:16.328 [INFO] [Thread-158804] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:37:16.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:37:16.995 [DEBUG] [Thread-158804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:37:16.995 [DEBUG] [Thread-158804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:37:16.996 [DEBUG] [Thread-158804] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:37:17.036 [DEBUG] [Thread-158804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:37:17.036 [DEBUG] [Thread-158804] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:37:17.039 [DEBUG] [Thread-158804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:37:17.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:37:17.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:37:17.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:37:17.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:37:17.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:37:17.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:37:17.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:37:17.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:37:17.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:37:17.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.525415 -999.00  +15.50   6.45     40   +2.00 1 1 1 1 1   888    0 14.50 46.19 ----- 4.0 6.5 114.8 8.3 24.9 -28.9 24.2 -28.0 25.7 -29.3 27.1 -29.2
2025-09-29T14:37:17.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:37:17.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:37:17.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.525415
2025-09-29T14:37:17.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:37:17.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:37:17.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:37:17.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:37:17.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:37:17.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:36:41', tmtdew=15.39, humidity=35.13, cloud=0.0, wind=8.52, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:36:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:37:17.063 [DEBUG] [Thread-158804] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:37:17.147 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:37:17.156 [DEBUG] [Thread-158807] [transport.py] [_log()] starting thread (client mode): 0x2b94c640
2025-09-29T14:37:17.157 [DEBUG] [Thread-158807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:37:17.172 [DEBUG] [Thread-158807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:37:17.172 [INFO] [Thread-158807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:37:17.180 [DEBUG] [Thread-158807] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:37:17.180 [DEBUG] [Thread-158807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:37:17.180 [DEBUG] [Thread-158807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:37:17.180 [DEBUG] [Thread-158807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:17.180 [DEBUG] [Thread-158807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] client lang: <none>
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] server lang: <none>
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] kex follows: False
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] Compression: none
2025-09-29T14:37:17.181 [DEBUG] [Thread-158807] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:37:17.238 [DEBUG] [Thread-158807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:37:17.239 [DEBUG] [Thread-158807] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:37:17.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:37:17.240 [DEBUG] [Thread-158807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:37:17.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:37:17.294 [DEBUG] [Thread-158807] [transport.py] [_log()] userauth is OK
2025-09-29T14:37:17.295 [DEBUG] [Thread-158807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:37:17.295 [DEBUG] [Thread-158807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:37:17.295 [DEBUG] [Thread-158807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:37:17.295 [DEBUG] [Thread-158807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:37:17.314 [INFO] [Thread-158807] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:37:17.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:37:17.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:37:18.329 [DEBUG] [Thread-158807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:37:18.329 [DEBUG] [Thread-158807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:37:18.377 [DEBUG] [Thread-158807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:37:18.377 [DEBUG] [Thread-158807] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:37:18.386 [DEBUG] [Thread-158807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:37:18.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:37:18.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:37:18.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:37:18.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:37:18.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:37:18.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:37:18.421 [DEBUG] [Thread-158807] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:37:18.768 [DEBUG] [Thread-158809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:37:28.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:37:28.424 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:37:28.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:37:29.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 37, 13), 15.32, 35.26, 0.0, 8.84, 15.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:37:29.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:37:13
2025-09-29T14:37:29.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:37:29.292 [DEBUG] [Thread-158810] [transport.py] [_log()] starting thread (client mode): 0x2b9ce4d0
2025-09-29T14:37:29.292 [DEBUG] [Thread-158810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:37:29.313 [DEBUG] [Thread-158810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:37:29.313 [INFO] [Thread-158810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:37:29.315 [DEBUG] [Thread-158810] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:37:29.315 [DEBUG] [Thread-158810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:37:29.315 [DEBUG] [Thread-158810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] client lang: <none>
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] server lang: <none>
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] kex follows: False
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] Compression: none
2025-09-29T14:37:29.316 [DEBUG] [Thread-158810] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:37:29.327 [DEBUG] [Thread-158810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:37:29.328 [DEBUG] [Thread-158810] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:37:29.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:37:29.329 [DEBUG] [Thread-158810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:37:29.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:37:29.330 [DEBUG] [Thread-158810] [transport.py] [_log()] userauth is OK
2025-09-29T14:37:29.330 [DEBUG] [Thread-158810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:37:29.330 [DEBUG] [Thread-158810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:37:29.330 [DEBUG] [Thread-158810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:37:29.330 [DEBUG] [Thread-158810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:37:29.347 [INFO] [Thread-158810] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:37:29.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:37:29.949 [DEBUG] [Thread-158810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:37:29.949 [DEBUG] [Thread-158810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:37:29.949 [DEBUG] [Thread-158810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:37:29.990 [DEBUG] [Thread-158810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:37:29.990 [DEBUG] [Thread-158810] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:37:29.994 [DEBUG] [Thread-158810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:37:30.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:37:30.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:37:30.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:37:30.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:37:30.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:37:30.013 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:37:30.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:37:30.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:37:30.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:37:30.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.525763 -999.00  +15.80   5.16     40   +2.20 1 1 1 1 1   888    0 14.62 51.84 ----- 9.0 5.2 167.3 7.9 25.1 -29.2 24.1 -32.4 25.9 -28.6 27.2 -29.6
2025-09-29T14:37:30.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:37:30.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:37:30.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.525763
2025-09-29T14:37:30.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:37:30.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:37:30.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:37:30.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:37:30.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:37:30.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:37:13', tmtdew=15.32, humidity=35.26, cloud=0.0, wind=8.84, temperature=15.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:37:05.923', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:37:30.016 [DEBUG] [Thread-158810] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:37:30.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:37:33.817 [DEBUG] [Thread-158813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:37:44.888 [DEBUG] [Thread-158814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:37:48.857 [DEBUG] [Thread-158815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:38:03.892 [DEBUG] [Thread-158816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:38:05.899 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:38:05.900 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:38:18.918 [DEBUG] [Thread-158817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:38:33.945 [DEBUG] [Thread-158818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:38:44.920 [DEBUG] [Thread-158819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:38:48.976 [DEBUG] [Thread-158820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:39:04.003 [DEBUG] [Thread-158821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:39:06.038 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:39:06.039 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:39:19.031 [DEBUG] [Thread-158822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:39:34.063 [DEBUG] [Thread-158823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:39:43.547 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T14:39:44.962 [DEBUG] [Thread-158824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:39:49.093 [DEBUG] [Thread-158825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:39:53.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:39:53.556 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:39:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:39:54.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 39, 21), 15.04, 35.81, 0.0, 9.72, 14.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:39:54.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:39:21
2025-09-29T14:39:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:39:54.481 [DEBUG] [Thread-158826] [transport.py] [_log()] starting thread (client mode): 0x2b9cc8e0
2025-09-29T14:39:54.481 [DEBUG] [Thread-158826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:39:54.500 [DEBUG] [Thread-158826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:39:54.501 [INFO] [Thread-158826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] client lang: <none>
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] server lang: <none>
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] kex follows: False
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] Compression: none
2025-09-29T14:39:54.504 [DEBUG] [Thread-158826] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:39:54.520 [DEBUG] [Thread-158826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:39:54.520 [DEBUG] [Thread-158826] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:39:54.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:39:54.520 [DEBUG] [Thread-158826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:39:54.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:39:54.520 [DEBUG] [Thread-158826] [transport.py] [_log()] userauth is OK
2025-09-29T14:39:54.520 [DEBUG] [Thread-158826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:39:54.520 [DEBUG] [Thread-158826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:39:54.520 [DEBUG] [Thread-158826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:39:54.520 [DEBUG] [Thread-158826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:39:54.529 [INFO] [Thread-158826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:39:54.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:39:55.121 [DEBUG] [Thread-158826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:39:55.121 [DEBUG] [Thread-158826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:39:55.121 [DEBUG] [Thread-158826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:39:55.162 [DEBUG] [Thread-158826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:39:55.162 [DEBUG] [Thread-158826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:39:55.164 [DEBUG] [Thread-158826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:39:55.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:39:55.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:39:55.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:39:55.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:39:55.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:39:55.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:39:55.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:39:55.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:39:55.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:39:55.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.527499 -999.00  +15.90   9.12     39   +2.10 1 1 1 1 1   888    0 15.21 61.57 ----- 7.9 9.1 186.6 12.1 24.9 -29.6 23.9 -29.0 25.7 -28.6 27.0 -30.9
2025-09-29T14:39:55.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:39:55.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:39:55.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.527499
2025-09-29T14:39:55.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:39:55.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:39:55.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:39:55.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:39:55.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:39:55.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:39:21', tmtdew=15.04, humidity=35.81, cloud=0.0, wind=9.72, temperature=14.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:39:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:39:55.180 [DEBUG] [Thread-158826] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:39:55.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:39:55.269 [DEBUG] [Thread-158829] [transport.py] [_log()] starting thread (client mode): 0x2b9cca90
2025-09-29T14:39:55.269 [DEBUG] [Thread-158829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:39:55.287 [DEBUG] [Thread-158829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:39:55.287 [INFO] [Thread-158829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] client lang: <none>
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] server lang: <none>
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] kex follows: False
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] Compression: none
2025-09-29T14:39:55.295 [DEBUG] [Thread-158829] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:39:55.351 [DEBUG] [Thread-158829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:39:55.351 [DEBUG] [Thread-158829] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:39:55.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:39:55.352 [DEBUG] [Thread-158829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:39:55.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:39:55.409 [DEBUG] [Thread-158829] [transport.py] [_log()] userauth is OK
2025-09-29T14:39:55.409 [DEBUG] [Thread-158829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:39:55.409 [DEBUG] [Thread-158829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:39:55.409 [DEBUG] [Thread-158829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:39:55.409 [DEBUG] [Thread-158829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:39:55.427 [INFO] [Thread-158829] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:39:55.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:39:55.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:39:56.407 [DEBUG] [Thread-158829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:39:56.408 [DEBUG] [Thread-158829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:39:56.455 [DEBUG] [Thread-158829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:39:56.455 [DEBUG] [Thread-158829] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:39:56.464 [DEBUG] [Thread-158829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:39:56.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:39:56.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:39:56.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:39:56.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:39:56.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:39:56.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:39:56.499 [DEBUG] [Thread-158829] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:40:04.125 [DEBUG] [Thread-158831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:40:06.177 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:40:06.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:40:06.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:40:06.495 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:40:06.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:40:07.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 39, 53), 15.21, 35.38, 0.0, 7.45, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:40:07.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:39:53
2025-09-29T14:40:07.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:40:07.393 [DEBUG] [Thread-158832] [transport.py] [_log()] starting thread (client mode): 0x2b9ccb20
2025-09-29T14:40:07.394 [DEBUG] [Thread-158832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:40:07.413 [DEBUG] [Thread-158832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:40:07.413 [INFO] [Thread-158832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] client lang: <none>
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] server lang: <none>
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] kex follows: False
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:40:07.416 [DEBUG] [Thread-158832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:40:07.417 [DEBUG] [Thread-158832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:40:07.417 [DEBUG] [Thread-158832] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:40:07.417 [DEBUG] [Thread-158832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:40:07.417 [DEBUG] [Thread-158832] [transport.py] [_log()] Compression: none
2025-09-29T14:40:07.417 [DEBUG] [Thread-158832] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:40:07.433 [DEBUG] [Thread-158832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:40:07.433 [DEBUG] [Thread-158832] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:40:07.433 [DEBUG] [Thread-158832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:40:07.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:40:07.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:40:07.434 [DEBUG] [Thread-158832] [transport.py] [_log()] userauth is OK
2025-09-29T14:40:07.434 [DEBUG] [Thread-158832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:40:07.434 [DEBUG] [Thread-158832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:40:07.434 [DEBUG] [Thread-158832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:40:07.434 [DEBUG] [Thread-158832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:40:07.451 [INFO] [Thread-158832] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:40:07.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:40:09.832 [DEBUG] [Thread-158832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:40:09.832 [DEBUG] [Thread-158832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:40:09.832 [DEBUG] [Thread-158832] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:40:09.873 [DEBUG] [Thread-158832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:40:09.873 [DEBUG] [Thread-158832] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:40:09.875 [DEBUG] [Thread-158832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:40:09.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:40:09.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:40:09.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:40:09.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:40:09.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:40:09.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:40:09.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.527499 -999.00  +15.90   9.12     39   +2.10 1 1 1 1 1   888    0 15.21 61.57 ----- 7.9 9.1 186.6 12.1 24.9 -29.6 23.9 -29.0 25.7 -28.6 27.0 -30.9
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.527499
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:40:09.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:39:53', tmtdew=15.21, humidity=35.38, cloud=0.0, wind=7.45, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:39:35.914', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:40:09.900 [DEBUG] [Thread-158832] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:40:09.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:40:09.984 [DEBUG] [Thread-158835] [transport.py] [_log()] starting thread (client mode): 0x2b9574f0
2025-09-29T14:40:09.984 [DEBUG] [Thread-158835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:40:10.003 [DEBUG] [Thread-158835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:40:10.003 [INFO] [Thread-158835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] client lang: <none>
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] server lang: <none>
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] kex follows: False
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:40:10.010 [DEBUG] [Thread-158835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:40:10.011 [DEBUG] [Thread-158835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:40:10.011 [DEBUG] [Thread-158835] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:40:10.011 [DEBUG] [Thread-158835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:40:10.011 [DEBUG] [Thread-158835] [transport.py] [_log()] Compression: none
2025-09-29T14:40:10.011 [DEBUG] [Thread-158835] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:40:10.069 [DEBUG] [Thread-158835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:40:10.070 [DEBUG] [Thread-158835] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:40:10.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:40:10.070 [DEBUG] [Thread-158835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:40:10.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:40:10.125 [DEBUG] [Thread-158835] [transport.py] [_log()] userauth is OK
2025-09-29T14:40:10.125 [DEBUG] [Thread-158835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:40:10.125 [DEBUG] [Thread-158835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:40:10.125 [DEBUG] [Thread-158835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:40:10.125 [DEBUG] [Thread-158835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:40:10.139 [INFO] [Thread-158835] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:40:10.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:40:10.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:40:11.161 [DEBUG] [Thread-158835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:40:11.161 [DEBUG] [Thread-158835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:40:11.209 [DEBUG] [Thread-158835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:40:11.209 [DEBUG] [Thread-158835] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:40:11.218 [DEBUG] [Thread-158835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:40:11.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:40:11.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:40:11.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:40:11.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:40:11.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:40:11.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:40:11.252 [DEBUG] [Thread-158835] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:40:19.163 [DEBUG] [Thread-158837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:40:21.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:40:21.254 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:40:21.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:40:21.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 39, 53), 15.21, 35.38, 0.0, 7.45, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:40:21.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:39:53
2025-09-29T14:40:21.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:40:22.117 [DEBUG] [Thread-158838] [transport.py] [_log()] starting thread (client mode): 0x2b9cedd0
2025-09-29T14:40:22.117 [DEBUG] [Thread-158838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:40:22.139 [DEBUG] [Thread-158838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:40:22.139 [INFO] [Thread-158838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] client lang: <none>
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] server lang: <none>
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] kex follows: False
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:40:22.143 [DEBUG] [Thread-158838] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:40:22.144 [DEBUG] [Thread-158838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:40:22.144 [DEBUG] [Thread-158838] [transport.py] [_log()] Compression: none
2025-09-29T14:40:22.144 [DEBUG] [Thread-158838] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:40:22.161 [DEBUG] [Thread-158838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:40:22.161 [DEBUG] [Thread-158838] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:40:22.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:40:22.162 [DEBUG] [Thread-158838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:40:22.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:40:22.164 [DEBUG] [Thread-158838] [transport.py] [_log()] userauth is OK
2025-09-29T14:40:22.165 [DEBUG] [Thread-158838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:40:22.165 [DEBUG] [Thread-158838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:40:22.165 [DEBUG] [Thread-158838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:40:22.165 [DEBUG] [Thread-158838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:40:22.197 [INFO] [Thread-158838] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:40:22.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:40:22.787 [DEBUG] [Thread-158838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:40:22.788 [DEBUG] [Thread-158838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:40:22.788 [DEBUG] [Thread-158838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:40:22.828 [DEBUG] [Thread-158838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:40:22.828 [DEBUG] [Thread-158838] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:40:22.831 [DEBUG] [Thread-158838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:40:22.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:40:22.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:40:22.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:40:22.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:40:22.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:40:22.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:40:22.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:40:22.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:40:22.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:40:22.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.527845 -999.00  +16.10  10.43     38   +2.00 1 1 1 1 1   888    0 14.95 58.60 ----- 10.0 10.4 178.6 13.8 25.1 -28.8 23.8 -35.1 25.8 -28.5 27.2 -31.2
2025-09-29T14:40:22.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:40:22.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:40:22.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.527845
2025-09-29T14:40:22.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:40:22.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:40:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:40:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:40:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:40:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:39:53', tmtdew=15.21, humidity=35.38, cloud=0.0, wind=7.45, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:40:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:40:22.857 [DEBUG] [Thread-158838] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:40:22.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:40:34.204 [DEBUG] [Thread-158841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:40:44.988 [DEBUG] [Thread-158842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:40:49.249 [DEBUG] [Thread-158843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:41:04.281 [DEBUG] [Thread-158844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:41:06.317 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:41:06.318 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:41:19.315 [DEBUG] [Thread-158845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:41:34.344 [DEBUG] [Thread-158846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:41:45.029 [DEBUG] [Thread-158847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:41:49.372 [DEBUG] [Thread-158848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:42:04.401 [DEBUG] [Thread-158849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:42:06.457 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:42:06.458 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:42:19.429 [DEBUG] [Thread-158850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:42:34.456 [DEBUG] [Thread-158851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:42:35.579 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T14:42:45.061 [DEBUG] [Thread-158852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:42:45.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:42:45.589 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:42:45.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:42:46.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 42, 33), 15.12, 35.51, 0.0, 12.7, 15.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:42:46.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:42:33
2025-09-29T14:42:46.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:42:46.460 [DEBUG] [Thread-158853] [transport.py] [_log()] starting thread (client mode): 0x2b9cdde0
2025-09-29T14:42:46.460 [DEBUG] [Thread-158853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:42:46.481 [DEBUG] [Thread-158853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:42:46.481 [INFO] [Thread-158853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:42:46.484 [DEBUG] [Thread-158853] [transport.py] [_log()] client lang: <none>
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] server lang: <none>
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] kex follows: False
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] Compression: none
2025-09-29T14:42:46.485 [DEBUG] [Thread-158853] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:42:46.500 [DEBUG] [Thread-158853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:42:46.501 [DEBUG] [Thread-158853] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:42:46.501 [DEBUG] [Thread-158853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:42:46.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:42:46.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:42:46.503 [DEBUG] [Thread-158853] [transport.py] [_log()] userauth is OK
2025-09-29T14:42:46.504 [DEBUG] [Thread-158853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:42:46.504 [DEBUG] [Thread-158853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:42:46.504 [DEBUG] [Thread-158853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:42:46.504 [DEBUG] [Thread-158853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:42:46.527 [INFO] [Thread-158853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:42:46.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:42:47.337 [DEBUG] [Thread-158853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:42:47.337 [DEBUG] [Thread-158853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:42:47.338 [DEBUG] [Thread-158853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:42:47.378 [DEBUG] [Thread-158853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:42:47.378 [DEBUG] [Thread-158853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:42:47.381 [DEBUG] [Thread-158853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:42:47.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:42:47.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:42:47.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:42:47.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:42:47.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:42:47.397 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:42:47.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:42:47.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:42:47.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:42:47.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.529235 -999.00  +16.20  18.77     38   +2.10 1 1 1 1 1   888    0 15.35 68.75 ----- 20.8 18.8 157.6 20.6 25.3 -29.1 24.2 -31.1 26.0 -28.9 27.4 -30.5
2025-09-29T14:42:47.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:42:47.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:42:47.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.529235
2025-09-29T14:42:47.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:42:47.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:42:47.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:42:47.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:42:47.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:42:47.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:42:33', tmtdew=15.12, humidity=35.51, cloud=0.0, wind=12.7, temperature=15.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:42:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:42:47.400 [DEBUG] [Thread-158853] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:42:47.489 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:42:47.501 [DEBUG] [Thread-158856] [transport.py] [_log()] starting thread (client mode): 0x2e360bb0
2025-09-29T14:42:47.501 [DEBUG] [Thread-158856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:42:47.515 [DEBUG] [Thread-158856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:42:47.516 [INFO] [Thread-158856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:42:47.523 [DEBUG] [Thread-158856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:42:47.523 [DEBUG] [Thread-158856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] client lang: <none>
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] server lang: <none>
2025-09-29T14:42:47.524 [DEBUG] [Thread-158856] [transport.py] [_log()] kex follows: False
2025-09-29T14:42:47.525 [DEBUG] [Thread-158856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:42:47.525 [DEBUG] [Thread-158856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:42:47.525 [DEBUG] [Thread-158856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:42:47.525 [DEBUG] [Thread-158856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:42:47.525 [DEBUG] [Thread-158856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:42:47.525 [DEBUG] [Thread-158856] [transport.py] [_log()] Compression: none
2025-09-29T14:42:47.525 [DEBUG] [Thread-158856] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:42:47.584 [DEBUG] [Thread-158856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:42:47.584 [DEBUG] [Thread-158856] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:42:47.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:42:47.586 [DEBUG] [Thread-158856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:42:47.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:42:47.643 [DEBUG] [Thread-158856] [transport.py] [_log()] userauth is OK
2025-09-29T14:42:47.643 [DEBUG] [Thread-158856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:42:47.643 [DEBUG] [Thread-158856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:42:47.643 [DEBUG] [Thread-158856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:42:47.643 [DEBUG] [Thread-158856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:42:47.663 [INFO] [Thread-158856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:42:47.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:42:47.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:42:48.662 [DEBUG] [Thread-158856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:42:48.662 [DEBUG] [Thread-158856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:42:48.710 [DEBUG] [Thread-158856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:42:48.710 [DEBUG] [Thread-158856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:42:48.719 [DEBUG] [Thread-158856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:42:48.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:42:48.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:42:48.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:42:48.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:42:48.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:42:48.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:42:48.754 [DEBUG] [Thread-158856] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:42:49.486 [DEBUG] [Thread-158858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:42:58.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:42:58.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:42:58.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:42:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 42, 33), 15.12, 35.51, 0.0, 12.7, 15.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:42:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:42:33
2025-09-29T14:42:59.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:42:59.621 [DEBUG] [Thread-158859] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-29T14:42:59.621 [DEBUG] [Thread-158859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:42:59.641 [DEBUG] [Thread-158859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:42:59.642 [INFO] [Thread-158859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:42:59.645 [DEBUG] [Thread-158859] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:42:59.645 [DEBUG] [Thread-158859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:42:59.645 [DEBUG] [Thread-158859] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:42:59.645 [DEBUG] [Thread-158859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:42:59.645 [DEBUG] [Thread-158859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:42:59.645 [DEBUG] [Thread-158859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:42:59.645 [DEBUG] [Thread-158859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:42:59.645 [DEBUG] [Thread-158859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] client lang: <none>
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] server lang: <none>
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] kex follows: False
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] Compression: none
2025-09-29T14:42:59.646 [DEBUG] [Thread-158859] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:42:59.663 [DEBUG] [Thread-158859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:42:59.663 [DEBUG] [Thread-158859] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:42:59.664 [DEBUG] [Thread-158859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:42:59.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:42:59.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:42:59.666 [DEBUG] [Thread-158859] [transport.py] [_log()] userauth is OK
2025-09-29T14:42:59.666 [DEBUG] [Thread-158859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:42:59.666 [DEBUG] [Thread-158859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:42:59.666 [DEBUG] [Thread-158859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:42:59.667 [DEBUG] [Thread-158859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:42:59.690 [INFO] [Thread-158859] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:42:59.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:43:00.966 [DEBUG] [Thread-158859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:43:00.966 [DEBUG] [Thread-158859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:43:00.967 [DEBUG] [Thread-158859] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:43:01.007 [DEBUG] [Thread-158859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:43:01.008 [DEBUG] [Thread-158859] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:43:01.010 [DEBUG] [Thread-158859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:43:01.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:43:01.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:43:01.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:43:01.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:43:01.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:43:01.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:43:01.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:43:01.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:43:01.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:43:01.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.529235 -999.00  +16.20  18.77     38   +2.10 1 1 1 1 1   888    0 15.35 68.75 ----- 20.8 18.8 157.6 20.6 25.3 -29.1 24.2 -31.1 26.0 -28.9 27.4 -30.5
2025-09-29T14:43:01.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:43:01.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:43:01.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.529235
2025-09-29T14:43:01.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:43:01.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:43:01.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:43:01.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:43:01.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:43:01.028 [DEBUG] [Thread-158859] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:43:01.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:42:33', tmtdew=15.12, humidity=35.51, cloud=0.0, wind=12.7, temperature=15.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:42:05.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:43:01.112 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:43:01.121 [DEBUG] [Thread-158862] [transport.py] [_log()] starting thread (client mode): 0x2b9ce0b0
2025-09-29T14:43:01.121 [DEBUG] [Thread-158862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:43:01.136 [DEBUG] [Thread-158862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:43:01.136 [INFO] [Thread-158862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:43:01.143 [DEBUG] [Thread-158862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] client lang: <none>
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] server lang: <none>
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] kex follows: False
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] Compression: none
2025-09-29T14:43:01.144 [DEBUG] [Thread-158862] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:43:01.202 [DEBUG] [Thread-158862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:43:01.203 [DEBUG] [Thread-158862] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:43:01.203 [DEBUG] [Thread-158862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:43:01.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:43:01.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:43:01.258 [DEBUG] [Thread-158862] [transport.py] [_log()] userauth is OK
2025-09-29T14:43:01.258 [DEBUG] [Thread-158862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:43:01.259 [DEBUG] [Thread-158862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:43:01.259 [DEBUG] [Thread-158862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:43:01.259 [DEBUG] [Thread-158862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:43:01.273 [INFO] [Thread-158862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:43:01.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:43:01.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:43:02.323 [DEBUG] [Thread-158862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:43:02.323 [DEBUG] [Thread-158862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:43:02.371 [DEBUG] [Thread-158862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:43:02.371 [DEBUG] [Thread-158862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:43:02.379 [DEBUG] [Thread-158862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:43:02.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:43:02.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:43:02.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:43:02.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:43:02.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:43:02.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:43:02.411 [DEBUG] [Thread-158862] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:43:04.536 [DEBUG] [Thread-158864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:43:06.597 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:43:06.598 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:43:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:43:12.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:43:12.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:43:13.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 43, 4), 15.29, 35.13, 0.0, 13.39, 15.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:43:13.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:43:04
2025-09-29T14:43:13.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:43:13.291 [DEBUG] [Thread-158865] [transport.py] [_log()] starting thread (client mode): 0x2b9b9480
2025-09-29T14:43:13.292 [DEBUG] [Thread-158865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:43:13.312 [DEBUG] [Thread-158865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:43:13.312 [INFO] [Thread-158865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] client lang: <none>
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] server lang: <none>
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] kex follows: False
2025-09-29T14:43:13.315 [DEBUG] [Thread-158865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:43:13.316 [DEBUG] [Thread-158865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:43:13.316 [DEBUG] [Thread-158865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:43:13.316 [DEBUG] [Thread-158865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:43:13.316 [DEBUG] [Thread-158865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:43:13.316 [DEBUG] [Thread-158865] [transport.py] [_log()] Compression: none
2025-09-29T14:43:13.316 [DEBUG] [Thread-158865] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:43:13.327 [DEBUG] [Thread-158865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:43:13.328 [DEBUG] [Thread-158865] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:43:13.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:43:13.329 [DEBUG] [Thread-158865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:43:13.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:43:13.330 [DEBUG] [Thread-158865] [transport.py] [_log()] userauth is OK
2025-09-29T14:43:13.330 [DEBUG] [Thread-158865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:43:13.330 [DEBUG] [Thread-158865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:43:13.330 [DEBUG] [Thread-158865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:43:13.331 [DEBUG] [Thread-158865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:43:13.348 [INFO] [Thread-158865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:43:13.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:43:14.000 [DEBUG] [Thread-158865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:43:14.001 [DEBUG] [Thread-158865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:43:14.001 [DEBUG] [Thread-158865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:43:14.042 [DEBUG] [Thread-158865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:43:14.042 [DEBUG] [Thread-158865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:43:14.045 [DEBUG] [Thread-158865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:43:14.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:43:14.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:43:14.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:43:14.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:43:14.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:43:14.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:43:14.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:43:14.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:43:14.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:43:14.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.529582 -999.00  +16.30   9.60     38   +2.20 1 1 1 1 1   888    0 15.64 72.05 ----- 9.3 9.6 184.6 21.7 25.1 -29.1 24.0 -28.6 25.9 -28.6 27.2 -29.7
2025-09-29T14:43:14.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:43:14.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:43:14.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.529582
2025-09-29T14:43:14.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:43:14.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:43:14.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:43:14.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:43:14.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:43:14.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:43:04', tmtdew=15.29, humidity=35.13, cloud=0.0, wind=13.39, temperature=15.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:42:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:43:14.066 [DEBUG] [Thread-158865] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:43:14.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:43:14.165 [DEBUG] [Thread-158868] [transport.py] [_log()] starting thread (client mode): 0x2b9bb910
2025-09-29T14:43:14.165 [DEBUG] [Thread-158868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:43:14.180 [DEBUG] [Thread-158868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:43:14.180 [INFO] [Thread-158868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:43:14.187 [DEBUG] [Thread-158868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:43:14.187 [DEBUG] [Thread-158868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] client lang: <none>
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] server lang: <none>
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] kex follows: False
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] Compression: none
2025-09-29T14:43:14.188 [DEBUG] [Thread-158868] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:43:14.247 [DEBUG] [Thread-158868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:43:14.248 [DEBUG] [Thread-158868] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:43:14.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:43:14.249 [DEBUG] [Thread-158868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:43:14.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:43:14.303 [DEBUG] [Thread-158868] [transport.py] [_log()] userauth is OK
2025-09-29T14:43:14.304 [DEBUG] [Thread-158868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:43:14.304 [DEBUG] [Thread-158868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:43:14.304 [DEBUG] [Thread-158868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:43:14.304 [DEBUG] [Thread-158868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:43:14.322 [INFO] [Thread-158868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:43:14.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:43:14.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:43:15.315 [DEBUG] [Thread-158868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:43:15.315 [DEBUG] [Thread-158868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:43:15.362 [DEBUG] [Thread-158868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:43:15.362 [DEBUG] [Thread-158868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:43:15.370 [DEBUG] [Thread-158868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:43:15.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:43:15.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:43:15.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:43:15.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:43:15.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:43:15.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:43:15.408 [DEBUG] [Thread-158868] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:43:19.563 [DEBUG] [Thread-158870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:43:25.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:43:25.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:43:25.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:43:26.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 43, 4), 15.29, 35.13, 0.0, 13.39, 15.22, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:43:26.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:43:04
2025-09-29T14:43:26.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:43:26.283 [DEBUG] [Thread-158871] [transport.py] [_log()] starting thread (client mode): 0x2b9cc760
2025-09-29T14:43:26.283 [DEBUG] [Thread-158871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:43:26.306 [DEBUG] [Thread-158871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:43:26.306 [INFO] [Thread-158871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] client lang: <none>
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] server lang: <none>
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] kex follows: False
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:43:26.310 [DEBUG] [Thread-158871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:43:26.311 [DEBUG] [Thread-158871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:43:26.311 [DEBUG] [Thread-158871] [transport.py] [_log()] Compression: none
2025-09-29T14:43:26.311 [DEBUG] [Thread-158871] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:43:26.326 [DEBUG] [Thread-158871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:43:26.326 [DEBUG] [Thread-158871] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:43:26.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:43:26.327 [DEBUG] [Thread-158871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:43:26.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:43:26.329 [DEBUG] [Thread-158871] [transport.py] [_log()] userauth is OK
2025-09-29T14:43:26.329 [DEBUG] [Thread-158871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:43:26.330 [DEBUG] [Thread-158871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:43:26.330 [DEBUG] [Thread-158871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:43:26.330 [DEBUG] [Thread-158871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:43:26.352 [INFO] [Thread-158871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:43:26.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:43:27.122 [DEBUG] [Thread-158871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:43:27.122 [DEBUG] [Thread-158871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:43:27.123 [DEBUG] [Thread-158871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:43:27.163 [DEBUG] [Thread-158871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:43:27.163 [DEBUG] [Thread-158871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:43:27.166 [DEBUG] [Thread-158871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:43:27.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:43:27.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:43:27.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:43:27.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:43:27.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:43:27.186 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:43:27.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:43:27.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:43:27.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:43:27.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.529582 -999.00  +16.30   9.60     38   +2.20 1 1 1 1 1   888    0 15.64 72.05 ----- 9.3 9.6 184.6 21.7 25.1 -29.1 24.0 -28.6 25.9 -28.6 27.2 -29.7
2025-09-29T14:43:27.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:43:27.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:43:27.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.529582
2025-09-29T14:43:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:43:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:43:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:43:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:43:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:43:27.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:43:04', tmtdew=15.29, humidity=35.13, cloud=0.0, wind=13.39, temperature=15.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:42:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:43:27.189 [DEBUG] [Thread-158871] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:43:27.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:43:34.597 [DEBUG] [Thread-158874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:43:45.093 [DEBUG] [Thread-158875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:43:49.624 [DEBUG] [Thread-158876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:44:04.654 [DEBUG] [Thread-158877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:44:06.737 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:44:06.739 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:44:19.684 [DEBUG] [Thread-158878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:44:34.714 [DEBUG] [Thread-158879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:44:45.130 [DEBUG] [Thread-158880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:44:49.742 [DEBUG] [Thread-158881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:45:04.772 [DEBUG] [Thread-158882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:45:06.882 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:45:06.882 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:45:19.800 [DEBUG] [Thread-158883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:45:34.834 [DEBUG] [Thread-158884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:45:39.899 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T14:45:45.157 [DEBUG] [Thread-158885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:45:49.864 [DEBUG] [Thread-158886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:45:49.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:45:49.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:45:49.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:45:50.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 45, 44), 15.47, 34.41, 0.0, 12.44, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:45:50.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:45:44
2025-09-29T14:45:50.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:45:50.793 [DEBUG] [Thread-158887] [transport.py] [_log()] starting thread (client mode): 0x2b9ce350
2025-09-29T14:45:50.794 [DEBUG] [Thread-158887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:45:50.813 [DEBUG] [Thread-158887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:45:50.813 [INFO] [Thread-158887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] client lang: <none>
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] server lang: <none>
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] kex follows: False
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:45:50.816 [DEBUG] [Thread-158887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:45:50.817 [DEBUG] [Thread-158887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:45:50.817 [DEBUG] [Thread-158887] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:45:50.817 [DEBUG] [Thread-158887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:45:50.817 [DEBUG] [Thread-158887] [transport.py] [_log()] Compression: none
2025-09-29T14:45:50.817 [DEBUG] [Thread-158887] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:45:50.832 [DEBUG] [Thread-158887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:45:50.833 [DEBUG] [Thread-158887] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:45:50.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:45:50.833 [DEBUG] [Thread-158887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:45:50.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:45:50.834 [DEBUG] [Thread-158887] [transport.py] [_log()] userauth is OK
2025-09-29T14:45:50.834 [DEBUG] [Thread-158887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:45:50.834 [DEBUG] [Thread-158887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:45:50.834 [DEBUG] [Thread-158887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:45:50.834 [DEBUG] [Thread-158887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:45:50.853 [INFO] [Thread-158887] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:45:50.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:45:51.460 [DEBUG] [Thread-158887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:45:51.460 [DEBUG] [Thread-158887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:45:51.460 [DEBUG] [Thread-158887] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:45:51.501 [DEBUG] [Thread-158887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:45:51.501 [DEBUG] [Thread-158887] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:45:51.503 [DEBUG] [Thread-158887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:45:51.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:45:51.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:45:51.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:45:51.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:45:51.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:45:51.520 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:45:51.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.531318 -999.00  +16.50  16.13     37   +2.00 1 1 1 1 1   888    0 15.99 80.07 ----- 17.0 16.1 211.0 20.0 24.7 -29.9 23.5 -33.1 25.5 -29.5 26.8 -31.9
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.531318
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:45:51.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:45:44', tmtdew=15.47, humidity=34.41, cloud=0.0, wind=12.44, temperature=14.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:45:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:45:51.521 [DEBUG] [Thread-158887] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:45:51.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:45:51.607 [DEBUG] [Thread-158890] [transport.py] [_log()] starting thread (client mode): 0x2b9cc430
2025-09-29T14:45:51.608 [DEBUG] [Thread-158890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:45:51.623 [DEBUG] [Thread-158890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:45:51.623 [INFO] [Thread-158890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] client lang: <none>
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] server lang: <none>
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] kex follows: False
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:45:51.630 [DEBUG] [Thread-158890] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:45:51.631 [DEBUG] [Thread-158890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:45:51.631 [DEBUG] [Thread-158890] [transport.py] [_log()] Compression: none
2025-09-29T14:45:51.631 [DEBUG] [Thread-158890] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:45:51.687 [DEBUG] [Thread-158890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:45:51.687 [DEBUG] [Thread-158890] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:45:51.688 [DEBUG] [Thread-158890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:45:51.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:45:51.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:45:51.745 [DEBUG] [Thread-158890] [transport.py] [_log()] userauth is OK
2025-09-29T14:45:51.745 [DEBUG] [Thread-158890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:45:51.745 [DEBUG] [Thread-158890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:45:51.745 [DEBUG] [Thread-158890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:45:51.745 [DEBUG] [Thread-158890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:45:51.763 [INFO] [Thread-158890] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:45:51.763 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:45:51.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:45:52.715 [DEBUG] [Thread-158890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:45:52.715 [DEBUG] [Thread-158890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:45:52.763 [DEBUG] [Thread-158890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:45:52.763 [DEBUG] [Thread-158890] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:45:52.771 [DEBUG] [Thread-158890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:45:52.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:45:52.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:45:52.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:45:52.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:45:52.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:45:52.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:45:52.803 [DEBUG] [Thread-158890] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:02.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:46:02.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:46:02.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:46:03.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 45, 44), 15.47, 34.41, 0.0, 12.44, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:46:03.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:45:44
2025-09-29T14:46:03.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:46:03.682 [DEBUG] [Thread-158892] [transport.py] [_log()] starting thread (client mode): 0x2b9ce2f0
2025-09-29T14:46:03.682 [DEBUG] [Thread-158892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:03.704 [DEBUG] [Thread-158892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:46:03.704 [INFO] [Thread-158892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:03.706 [DEBUG] [Thread-158892] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:03.707 [DEBUG] [Thread-158892] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:03.707 [DEBUG] [Thread-158892] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:03.707 [DEBUG] [Thread-158892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:03.707 [DEBUG] [Thread-158892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:03.707 [DEBUG] [Thread-158892] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:03.707 [DEBUG] [Thread-158892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:03.707 [DEBUG] [Thread-158892] [transport.py] [_log()] Compression: none
2025-09-29T14:46:03.707 [DEBUG] [Thread-158892] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:03.719 [DEBUG] [Thread-158892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:03.719 [DEBUG] [Thread-158892] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:03.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:46:03.721 [DEBUG] [Thread-158892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:46:03.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:03.723 [DEBUG] [Thread-158892] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:03.723 [DEBUG] [Thread-158892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:03.724 [DEBUG] [Thread-158892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:03.724 [DEBUG] [Thread-158892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:46:03.724 [DEBUG] [Thread-158892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:03.743 [INFO] [Thread-158892] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:03.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:04.342 [DEBUG] [Thread-158892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:04.343 [DEBUG] [Thread-158892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:04.343 [DEBUG] [Thread-158892] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:46:04.383 [DEBUG] [Thread-158892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:04.384 [DEBUG] [Thread-158892] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:04.386 [DEBUG] [Thread-158892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:04.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:04.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:46:04.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:46:04.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:46:04.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:04.410 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:46:04.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:04.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:04.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:46:04.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.531665 -999.00  +16.20  11.54     38   +1.90 1 1 1 1 1   888    0 15.88 80.14 ----- 10.9 11.5 195.0 24.3 24.6 -31.3 23.4 -28.5 25.2 -30.1 26.6 -32.3
2025-09-29T14:46:04.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:46:04.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:46:04.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.531665
2025-09-29T14:46:04.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:46:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:46:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:46:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:46:04.413 [DEBUG] [Thread-158892] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:04.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:46:04.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:45:44', tmtdew=15.47, humidity=34.41, cloud=0.0, wind=12.44, temperature=14.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:45:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:46:04.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:46:04.509 [DEBUG] [Thread-158895] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-29T14:46:04.509 [DEBUG] [Thread-158895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:04.523 [DEBUG] [Thread-158895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:46:04.524 [INFO] [Thread-158895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:46:04.531 [DEBUG] [Thread-158895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:04.531 [DEBUG] [Thread-158895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:46:04.531 [DEBUG] [Thread-158895] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] Compression: none
2025-09-29T14:46:04.532 [DEBUG] [Thread-158895] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:04.589 [DEBUG] [Thread-158895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:04.589 [DEBUG] [Thread-158895] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:04.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:46:04.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:04.591 [DEBUG] [Thread-158895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:46:04.645 [DEBUG] [Thread-158895] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:04.646 [DEBUG] [Thread-158895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:04.646 [DEBUG] [Thread-158895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:04.646 [DEBUG] [Thread-158895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:46:04.646 [DEBUG] [Thread-158895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:04.671 [INFO] [Thread-158895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:04.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:46:04.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:04.891 [DEBUG] [Thread-158897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:46:05.678 [DEBUG] [Thread-158895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:05.678 [DEBUG] [Thread-158895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:05.729 [DEBUG] [Thread-158895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:05.729 [DEBUG] [Thread-158895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:05.738 [DEBUG] [Thread-158895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:05.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:05.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:46:05.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:46:05.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:05.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:05.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:05.776 [DEBUG] [Thread-158895] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:07.022 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:46:07.023 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:46:15.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:46:15.775 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:46:15.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:46:16.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 45, 44), 15.47, 34.41, 0.0, 12.44, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:46:16.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:45:44
2025-09-29T14:46:16.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:46:16.644 [DEBUG] [Thread-158898] [transport.py] [_log()] starting thread (client mode): 0x2b96fc40
2025-09-29T14:46:16.644 [DEBUG] [Thread-158898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:16.664 [DEBUG] [Thread-158898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:46:16.664 [INFO] [Thread-158898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:16.667 [DEBUG] [Thread-158898] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:16.668 [DEBUG] [Thread-158898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:16.668 [DEBUG] [Thread-158898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:16.668 [DEBUG] [Thread-158898] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:16.668 [DEBUG] [Thread-158898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:16.668 [DEBUG] [Thread-158898] [transport.py] [_log()] Compression: none
2025-09-29T14:46:16.668 [DEBUG] [Thread-158898] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:16.683 [DEBUG] [Thread-158898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:16.684 [DEBUG] [Thread-158898] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:16.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:46:16.684 [DEBUG] [Thread-158898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:46:16.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:16.685 [DEBUG] [Thread-158898] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:16.685 [DEBUG] [Thread-158898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:16.685 [DEBUG] [Thread-158898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:16.685 [DEBUG] [Thread-158898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:46:16.685 [DEBUG] [Thread-158898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:16.694 [INFO] [Thread-158898] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:16.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:17.360 [DEBUG] [Thread-158898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:17.360 [DEBUG] [Thread-158898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:17.361 [DEBUG] [Thread-158898] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:46:17.402 [DEBUG] [Thread-158898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:17.402 [DEBUG] [Thread-158898] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:17.404 [DEBUG] [Thread-158898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:17.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:17.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:46:17.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:46:17.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:46:17.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:17.422 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:46:17.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:17.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:17.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:46:17.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.531665 -999.00  +16.20  11.54     38   +1.90 1 1 1 1 1   888    0 15.88 80.14 ----- 10.9 11.5 195.0 24.3 24.6 -31.3 23.4 -28.5 25.2 -30.1 26.6 -32.3
2025-09-29T14:46:17.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:46:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:46:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.531665
2025-09-29T14:46:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:46:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:46:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:46:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:46:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:46:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:45:44', tmtdew=15.47, humidity=34.41, cloud=0.0, wind=12.44, temperature=14.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:45:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:46:17.424 [DEBUG] [Thread-158898] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:17.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:46:17.509 [DEBUG] [Thread-158901] [transport.py] [_log()] starting thread (client mode): 0x2b9b8eb0
2025-09-29T14:46:17.510 [DEBUG] [Thread-158901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:17.524 [DEBUG] [Thread-158901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:46:17.525 [INFO] [Thread-158901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] Compression: none
2025-09-29T14:46:17.532 [DEBUG] [Thread-158901] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:17.587 [DEBUG] [Thread-158901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:17.587 [DEBUG] [Thread-158901] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:17.587 [DEBUG] [Thread-158901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:46:17.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:46:17.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:17.645 [DEBUG] [Thread-158901] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:17.645 [DEBUG] [Thread-158901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:17.645 [DEBUG] [Thread-158901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:17.645 [DEBUG] [Thread-158901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:46:17.645 [DEBUG] [Thread-158901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:17.659 [INFO] [Thread-158901] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:17.659 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:46:17.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:18.697 [DEBUG] [Thread-158901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:18.698 [DEBUG] [Thread-158901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:18.745 [DEBUG] [Thread-158901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:18.745 [DEBUG] [Thread-158901] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:18.754 [DEBUG] [Thread-158901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:18.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:18.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:46:18.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:46:18.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:18.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:18.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:18.789 [DEBUG] [Thread-158901] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:19.937 [DEBUG] [Thread-158903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:46:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:46:28.792 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:46:28.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:46:29.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 46, 16), 15.37, 34.61, 0.0, 12.05, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:46:29.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:46:16
2025-09-29T14:46:29.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:46:29.684 [DEBUG] [Thread-158904] [transport.py] [_log()] starting thread (client mode): 0x2b96ed40
2025-09-29T14:46:29.684 [DEBUG] [Thread-158904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:29.703 [DEBUG] [Thread-158904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:46:29.703 [INFO] [Thread-158904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] Compression: none
2025-09-29T14:46:29.707 [DEBUG] [Thread-158904] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:29.722 [DEBUG] [Thread-158904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:29.722 [DEBUG] [Thread-158904] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:29.722 [DEBUG] [Thread-158904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:46:29.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:46:29.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:29.723 [DEBUG] [Thread-158904] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:29.723 [DEBUG] [Thread-158904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:29.723 [DEBUG] [Thread-158904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:29.723 [DEBUG] [Thread-158904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:46:29.723 [DEBUG] [Thread-158904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:29.738 [INFO] [Thread-158904] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:29.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:30.395 [DEBUG] [Thread-158904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:30.396 [DEBUG] [Thread-158904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:30.396 [DEBUG] [Thread-158904] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:46:30.437 [DEBUG] [Thread-158904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:30.437 [DEBUG] [Thread-158904] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:30.439 [DEBUG] [Thread-158904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:30.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:30.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:46:30.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:46:30.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:46:30.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:30.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:46:30.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:30.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:30.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:46:30.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.532012 -999.00  +16.30   9.26     38   +2.10 1 1 1 1 1   888    0 15.82 79.34 ----- 11.5 9.3 167.9 15.1 24.5 -29.3 23.4 -27.5 25.2 -28.2 26.5 -30.3
2025-09-29T14:46:30.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:46:30.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:46:30.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.532012
2025-09-29T14:46:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:46:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:46:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:46:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:46:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:46:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:46:16', tmtdew=15.37, humidity=34.61, cloud=0.0, wind=12.05, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:46:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:46:30.458 [DEBUG] [Thread-158904] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:30.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:46:30.542 [DEBUG] [Thread-158907] [transport.py] [_log()] starting thread (client mode): 0x2b9cf400
2025-09-29T14:46:30.542 [DEBUG] [Thread-158907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:30.556 [DEBUG] [Thread-158907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:46:30.556 [INFO] [Thread-158907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] Compression: none
2025-09-29T14:46:30.564 [DEBUG] [Thread-158907] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:30.620 [DEBUG] [Thread-158907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:30.620 [DEBUG] [Thread-158907] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:30.620 [DEBUG] [Thread-158907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:46:30.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:46:30.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:30.677 [DEBUG] [Thread-158907] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:30.677 [DEBUG] [Thread-158907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:30.677 [DEBUG] [Thread-158907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:30.677 [DEBUG] [Thread-158907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:46:30.677 [DEBUG] [Thread-158907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:30.691 [INFO] [Thread-158907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:30.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:46:30.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:31.636 [DEBUG] [Thread-158907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:31.637 [DEBUG] [Thread-158907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:31.685 [DEBUG] [Thread-158907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:31.685 [DEBUG] [Thread-158907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:31.693 [DEBUG] [Thread-158907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:31.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:31.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:46:31.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:46:31.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:31.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:31.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:31.725 [DEBUG] [Thread-158907] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:34.967 [DEBUG] [Thread-158909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:46:41.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:46:41.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:46:41.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:46:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 46, 16), 15.37, 34.61, 0.0, 12.05, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:46:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:46:16
2025-09-29T14:46:42.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:46:42.582 [DEBUG] [Thread-158910] [transport.py] [_log()] starting thread (client mode): 0x2b9b8e80
2025-09-29T14:46:42.582 [DEBUG] [Thread-158910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:42.602 [DEBUG] [Thread-158910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:46:42.602 [INFO] [Thread-158910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:42.605 [DEBUG] [Thread-158910] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] Compression: none
2025-09-29T14:46:42.606 [DEBUG] [Thread-158910] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:42.618 [DEBUG] [Thread-158910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:42.618 [DEBUG] [Thread-158910] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:42.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:46:42.619 [DEBUG] [Thread-158910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:46:42.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:42.620 [DEBUG] [Thread-158910] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:42.620 [DEBUG] [Thread-158910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:42.620 [DEBUG] [Thread-158910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:42.620 [DEBUG] [Thread-158910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:46:42.620 [DEBUG] [Thread-158910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:42.635 [INFO] [Thread-158910] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:42.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:43.297 [DEBUG] [Thread-158910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:43.297 [DEBUG] [Thread-158910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:43.298 [DEBUG] [Thread-158910] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:46:43.338 [DEBUG] [Thread-158910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:43.338 [DEBUG] [Thread-158910] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:43.341 [DEBUG] [Thread-158910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:43.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:43.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:46:43.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:46:43.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:46:43.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:43.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:46:43.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:43.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:43.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:46:43.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.532012 -999.00  +16.30   9.26     38   +2.10 1 1 1 1 1   888    0 15.82 79.34 ----- 11.5 9.3 167.9 15.1 24.5 -29.3 23.4 -27.5 25.2 -28.2 26.5 -30.3
2025-09-29T14:46:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:46:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:46:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.532012
2025-09-29T14:46:43.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:46:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:46:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:46:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:46:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:46:43.367 [DEBUG] [Thread-158910] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:46:16', tmtdew=15.37, humidity=34.61, cloud=0.0, wind=12.05, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:46:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:46:43.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:46:43.462 [DEBUG] [Thread-158913] [transport.py] [_log()] starting thread (client mode): 0x2b9b8eb0
2025-09-29T14:46:43.462 [DEBUG] [Thread-158913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:43.477 [DEBUG] [Thread-158913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:46:43.477 [INFO] [Thread-158913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:46:43.484 [DEBUG] [Thread-158913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:43.484 [DEBUG] [Thread-158913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] Compression: none
2025-09-29T14:46:43.485 [DEBUG] [Thread-158913] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:43.541 [DEBUG] [Thread-158913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:43.541 [DEBUG] [Thread-158913] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:43.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:46:43.542 [DEBUG] [Thread-158913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:46:43.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:43.597 [DEBUG] [Thread-158913] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:43.598 [DEBUG] [Thread-158913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:43.598 [DEBUG] [Thread-158913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:43.598 [DEBUG] [Thread-158913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:46:43.598 [DEBUG] [Thread-158913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:43.617 [INFO] [Thread-158913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:43.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:46:43.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:44.575 [DEBUG] [Thread-158913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:44.575 [DEBUG] [Thread-158913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:44.624 [DEBUG] [Thread-158913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:44.624 [DEBUG] [Thread-158913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:44.632 [DEBUG] [Thread-158913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:44.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:44.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:46:44.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:46:44.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:44.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:44.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:44.664 [DEBUG] [Thread-158913] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:45.189 [DEBUG] [Thread-158915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:46:50.018 [DEBUG] [Thread-158916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:46:54.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:46:54.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:46:54.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:46:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 46, 48), 15.27, 35.09, 0.0, 10.39, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:46:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:46:48
2025-09-29T14:46:55.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:46:55.540 [DEBUG] [Thread-158917] [transport.py] [_log()] starting thread (client mode): 0x2b9cf8e0
2025-09-29T14:46:55.540 [DEBUG] [Thread-158917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:55.559 [DEBUG] [Thread-158917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:46:55.559 [INFO] [Thread-158917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:46:55.562 [DEBUG] [Thread-158917] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:55.562 [DEBUG] [Thread-158917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:46:55.562 [DEBUG] [Thread-158917] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:55.562 [DEBUG] [Thread-158917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:55.562 [DEBUG] [Thread-158917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:55.562 [DEBUG] [Thread-158917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:55.562 [DEBUG] [Thread-158917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] Compression: none
2025-09-29T14:46:55.563 [DEBUG] [Thread-158917] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:55.581 [DEBUG] [Thread-158917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:55.582 [DEBUG] [Thread-158917] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:55.582 [DEBUG] [Thread-158917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:46:55.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:46:55.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:55.585 [DEBUG] [Thread-158917] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:55.585 [DEBUG] [Thread-158917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:55.585 [DEBUG] [Thread-158917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:55.585 [DEBUG] [Thread-158917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:46:55.585 [DEBUG] [Thread-158917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:55.608 [INFO] [Thread-158917] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:55.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:56.282 [DEBUG] [Thread-158917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:56.282 [DEBUG] [Thread-158917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:56.282 [DEBUG] [Thread-158917] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:46:56.323 [DEBUG] [Thread-158917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:56.323 [DEBUG] [Thread-158917] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:56.326 [DEBUG] [Thread-158917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:56.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:56.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:46:56.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:46:56.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:46:56.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:56.351 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:46:56.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:56.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:56.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:46:56.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.532012 -999.00  +16.30   9.26     38   +2.10 1 1 1 1 1   888    0 15.82 79.34 ----- 11.5 9.3 167.9 15.1 24.5 -29.3 23.4 -27.5 25.2 -28.2 26.5 -30.3
2025-09-29T14:46:56.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:46:56.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:46:56.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.532012
2025-09-29T14:46:56.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:46:56.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:46:56.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:46:56.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:46:56.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:46:56.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:46:48', tmtdew=15.27, humidity=35.09, cloud=0.0, wind=10.39, temperature=14.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:46:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:46:56.354 [DEBUG] [Thread-158917] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:46:56.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:46:56.446 [DEBUG] [Thread-158920] [transport.py] [_log()] starting thread (client mode): 0x2b9b8eb0
2025-09-29T14:46:56.446 [DEBUG] [Thread-158920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:46:56.462 [DEBUG] [Thread-158920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:46:56.462 [INFO] [Thread-158920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:46:56.471 [DEBUG] [Thread-158920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] client lang: <none>
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] server lang: <none>
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] kex follows: False
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] Compression: none
2025-09-29T14:46:56.472 [DEBUG] [Thread-158920] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:46:56.530 [DEBUG] [Thread-158920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:46:56.531 [DEBUG] [Thread-158920] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:46:56.531 [DEBUG] [Thread-158920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:46:56.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:46:56.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:46:56.586 [DEBUG] [Thread-158920] [transport.py] [_log()] userauth is OK
2025-09-29T14:46:56.586 [DEBUG] [Thread-158920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:46:56.586 [DEBUG] [Thread-158920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:46:56.586 [DEBUG] [Thread-158920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:46:56.586 [DEBUG] [Thread-158920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:46:56.606 [INFO] [Thread-158920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:46:56.606 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:46:56.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:46:57.610 [DEBUG] [Thread-158920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:46:57.610 [DEBUG] [Thread-158920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:46:57.658 [DEBUG] [Thread-158920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:46:57.658 [DEBUG] [Thread-158920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:46:57.667 [DEBUG] [Thread-158920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:46:57.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:46:57.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:46:57.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:46:57.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:46:57.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:46:57.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:46:57.701 [DEBUG] [Thread-158920] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:05.046 [DEBUG] [Thread-158922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:47:07.165 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:47:07.166 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:47:07.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:47:07.703 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:47:07.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:47:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 46, 48), 15.27, 35.09, 0.0, 10.39, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:47:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:46:48
2025-09-29T14:47:08.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:47:08.605 [DEBUG] [Thread-158923] [transport.py] [_log()] starting thread (client mode): 0x2b96ed40
2025-09-29T14:47:08.606 [DEBUG] [Thread-158923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:47:08.621 [DEBUG] [Thread-158923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:47:08.621 [INFO] [Thread-158923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] client lang: <none>
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] server lang: <none>
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] kex follows: False
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:47:08.624 [DEBUG] [Thread-158923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:47:08.625 [DEBUG] [Thread-158923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:47:08.625 [DEBUG] [Thread-158923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:47:08.625 [DEBUG] [Thread-158923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:47:08.625 [DEBUG] [Thread-158923] [transport.py] [_log()] Compression: none
2025-09-29T14:47:08.625 [DEBUG] [Thread-158923] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:47:08.640 [DEBUG] [Thread-158923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:47:08.641 [DEBUG] [Thread-158923] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:47:08.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:47:08.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:47:08.641 [DEBUG] [Thread-158923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:47:08.642 [DEBUG] [Thread-158923] [transport.py] [_log()] userauth is OK
2025-09-29T14:47:08.642 [DEBUG] [Thread-158923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:47:08.642 [DEBUG] [Thread-158923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:47:08.642 [DEBUG] [Thread-158923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:47:08.642 [DEBUG] [Thread-158923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:47:08.655 [INFO] [Thread-158923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:47:08.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:47:09.269 [DEBUG] [Thread-158923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:47:09.269 [DEBUG] [Thread-158923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:47:09.269 [DEBUG] [Thread-158923] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:47:09.310 [DEBUG] [Thread-158923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:47:09.310 [DEBUG] [Thread-158923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:47:09.314 [DEBUG] [Thread-158923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:47:09.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:47:09.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:47:09.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:47:09.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:47:09.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:47:09.331 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:47:09.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:47:09.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:47:09.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:47:09.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.532360 -999.00  +16.30   9.77     37   +1.90 1 1 1 1 1   888    0 16.11 83.60 ----- 6.8 9.8 172.2 12.1 24.6 -28.4 23.6 -31.6 25.4 -27.6 26.7 -29.8
2025-09-29T14:47:09.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:47:09.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:47:09.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.532360
2025-09-29T14:47:09.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:47:09.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:47:09.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:47:09.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:47:09.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:47:09.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:46:48', tmtdew=15.27, humidity=35.09, cloud=0.0, wind=10.39, temperature=14.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:46:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:47:09.332 [DEBUG] [Thread-158923] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:09.406 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:47:09.417 [DEBUG] [Thread-158926] [transport.py] [_log()] starting thread (client mode): 0x2b9cfb80
2025-09-29T14:47:09.417 [DEBUG] [Thread-158926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:47:09.431 [DEBUG] [Thread-158926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:47:09.431 [INFO] [Thread-158926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] client lang: <none>
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] server lang: <none>
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] kex follows: False
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] Compression: none
2025-09-29T14:47:09.439 [DEBUG] [Thread-158926] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:47:09.501 [DEBUG] [Thread-158926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:47:09.501 [DEBUG] [Thread-158926] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:47:09.501 [DEBUG] [Thread-158926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:47:09.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:47:09.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:47:09.557 [DEBUG] [Thread-158926] [transport.py] [_log()] userauth is OK
2025-09-29T14:47:09.557 [DEBUG] [Thread-158926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:47:09.557 [DEBUG] [Thread-158926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:47:09.557 [DEBUG] [Thread-158926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:47:09.557 [DEBUG] [Thread-158926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:47:09.577 [INFO] [Thread-158926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:47:09.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:47:09.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:47:10.653 [DEBUG] [Thread-158926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:47:10.653 [DEBUG] [Thread-158926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:47:10.701 [DEBUG] [Thread-158926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:47:10.701 [DEBUG] [Thread-158926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:47:10.709 [DEBUG] [Thread-158926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:47:10.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:47:10.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:47:10.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:47:10.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:47:10.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:47:10.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:47:10.742 [DEBUG] [Thread-158926] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:20.091 [DEBUG] [Thread-158928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:47:20.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:47:20.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:47:20.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:47:21.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 46, 48), 15.27, 35.09, 0.0, 10.39, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:47:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:46:48
2025-09-29T14:47:21.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:47:21.659 [DEBUG] [Thread-158929] [transport.py] [_log()] starting thread (client mode): 0x2e3dc4c0
2025-09-29T14:47:21.659 [DEBUG] [Thread-158929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:47:21.679 [DEBUG] [Thread-158929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:47:21.679 [INFO] [Thread-158929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] client lang: <none>
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] server lang: <none>
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] kex follows: False
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:47:21.682 [DEBUG] [Thread-158929] [transport.py] [_log()] Compression: none
2025-09-29T14:47:21.683 [DEBUG] [Thread-158929] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:47:21.697 [DEBUG] [Thread-158929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:47:21.697 [DEBUG] [Thread-158929] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:47:21.697 [DEBUG] [Thread-158929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:47:21.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:47:21.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:47:21.698 [DEBUG] [Thread-158929] [transport.py] [_log()] userauth is OK
2025-09-29T14:47:21.698 [DEBUG] [Thread-158929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:47:21.698 [DEBUG] [Thread-158929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:47:21.698 [DEBUG] [Thread-158929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:47:21.698 [DEBUG] [Thread-158929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:47:21.725 [INFO] [Thread-158929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:47:21.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:47:22.417 [DEBUG] [Thread-158929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:47:22.418 [DEBUG] [Thread-158929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:47:22.418 [DEBUG] [Thread-158929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:47:22.458 [DEBUG] [Thread-158929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:47:22.459 [DEBUG] [Thread-158929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:47:22.461 [DEBUG] [Thread-158929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:47:22.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:47:22.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:47:22.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:47:22.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:47:22.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:47:22.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:47:22.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:47:22.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:47:22.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:47:22.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.532360 -999.00  +16.30   9.77     37   +1.90 1 1 1 1 1   888    0 16.11 83.60 ----- 6.8 9.8 172.2 12.1 24.6 -28.4 23.6 -31.6 25.4 -27.6 26.7 -29.8
2025-09-29T14:47:22.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:47:22.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:47:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.532360
2025-09-29T14:47:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:47:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:47:22.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:47:22.485 [DEBUG] [Thread-158929] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:22.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:47:22.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:47:22.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:46:48', tmtdew=15.27, humidity=35.09, cloud=0.0, wind=10.39, temperature=14.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:46:35.904', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:47:22.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:47:22.581 [DEBUG] [Thread-158932] [transport.py] [_log()] starting thread (client mode): 0x2e377a90
2025-09-29T14:47:22.581 [DEBUG] [Thread-158932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:47:22.597 [DEBUG] [Thread-158932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:47:22.597 [INFO] [Thread-158932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:47:22.605 [DEBUG] [Thread-158932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:47:22.605 [DEBUG] [Thread-158932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:47:22.605 [DEBUG] [Thread-158932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:47:22.605 [DEBUG] [Thread-158932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:22.605 [DEBUG] [Thread-158932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:22.605 [DEBUG] [Thread-158932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] client lang: <none>
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] server lang: <none>
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] kex follows: False
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] Compression: none
2025-09-29T14:47:22.606 [DEBUG] [Thread-158932] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:47:22.665 [DEBUG] [Thread-158932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:47:22.666 [DEBUG] [Thread-158932] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:47:22.666 [DEBUG] [Thread-158932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:47:22.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:47:22.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:47:22.722 [DEBUG] [Thread-158932] [transport.py] [_log()] userauth is OK
2025-09-29T14:47:22.722 [DEBUG] [Thread-158932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:47:22.722 [DEBUG] [Thread-158932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:47:22.723 [DEBUG] [Thread-158932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:47:22.723 [DEBUG] [Thread-158932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:47:22.742 [INFO] [Thread-158932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:47:22.743 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:47:22.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:47:23.747 [DEBUG] [Thread-158932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:47:23.747 [DEBUG] [Thread-158932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:47:23.795 [DEBUG] [Thread-158932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:47:23.795 [DEBUG] [Thread-158932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:47:23.804 [DEBUG] [Thread-158932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:47:23.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:47:23.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:47:23.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:47:23.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:47:23.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:47:23.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:47:23.839 [DEBUG] [Thread-158932] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:33.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:47:33.836 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:47:33.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:47:34.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 47, 20), 15.2, 35.26, 0.0, 9.48, 14.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:47:34.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:47:20
2025-09-29T14:47:34.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:47:34.701 [DEBUG] [Thread-158934] [transport.py] [_log()] starting thread (client mode): 0x2b9ccd90
2025-09-29T14:47:34.702 [DEBUG] [Thread-158934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:47:34.718 [DEBUG] [Thread-158934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:47:34.718 [INFO] [Thread-158934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] client lang: <none>
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] server lang: <none>
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] kex follows: False
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] Compression: none
2025-09-29T14:47:34.720 [DEBUG] [Thread-158934] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:47:34.729 [DEBUG] [Thread-158934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:47:34.729 [DEBUG] [Thread-158934] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:47:34.730 [DEBUG] [Thread-158934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:47:34.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:47:34.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:47:34.731 [DEBUG] [Thread-158934] [transport.py] [_log()] userauth is OK
2025-09-29T14:47:34.731 [DEBUG] [Thread-158934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:47:34.731 [DEBUG] [Thread-158934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:47:34.731 [DEBUG] [Thread-158934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:47:34.731 [DEBUG] [Thread-158934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:47:34.743 [INFO] [Thread-158934] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:47:34.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:47:35.133 [DEBUG] [Thread-158936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:47:35.397 [DEBUG] [Thread-158934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:47:35.397 [DEBUG] [Thread-158934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:47:35.398 [DEBUG] [Thread-158934] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:47:35.438 [DEBUG] [Thread-158934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:47:35.438 [DEBUG] [Thread-158934] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:47:35.441 [DEBUG] [Thread-158934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:47:35.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:47:35.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:47:35.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:47:35.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:47:35.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:47:35.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:47:35.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:47:35.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:47:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:47:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.532707 -999.00  +16.10   9.35     37   +1.80 1 1 1 1 1   888    0 15.98 79.69 ----- 8.8 9.3 174.0 11.7 24.7 -29.1 23.6 -30.6 25.4 -28.5 26.7 -29.8
2025-09-29T14:47:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:47:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:47:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.532707
2025-09-29T14:47:35.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:47:35.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:47:35.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:47:35.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:47:35.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:47:35.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:47:20', tmtdew=15.2, humidity=35.26, cloud=0.0, wind=9.48, temperature=14.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:47:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:47:35.467 [DEBUG] [Thread-158934] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:35.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:47:35.562 [DEBUG] [Thread-158938] [transport.py] [_log()] starting thread (client mode): 0x2e3de830
2025-09-29T14:47:35.562 [DEBUG] [Thread-158938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:47:35.576 [DEBUG] [Thread-158938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:47:35.576 [INFO] [Thread-158938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:47:35.584 [DEBUG] [Thread-158938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:47:35.584 [DEBUG] [Thread-158938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:47:35.584 [DEBUG] [Thread-158938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] client lang: <none>
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] server lang: <none>
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] kex follows: False
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] Compression: none
2025-09-29T14:47:35.585 [DEBUG] [Thread-158938] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:47:35.641 [DEBUG] [Thread-158938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:47:35.642 [DEBUG] [Thread-158938] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:47:35.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:47:35.643 [DEBUG] [Thread-158938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:47:35.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:47:35.698 [DEBUG] [Thread-158938] [transport.py] [_log()] userauth is OK
2025-09-29T14:47:35.698 [DEBUG] [Thread-158938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:47:35.699 [DEBUG] [Thread-158938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:47:35.699 [DEBUG] [Thread-158938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:47:35.699 [DEBUG] [Thread-158938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:47:35.718 [INFO] [Thread-158938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:47:35.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:47:35.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:47:36.660 [DEBUG] [Thread-158938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:47:36.660 [DEBUG] [Thread-158938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:47:36.708 [DEBUG] [Thread-158938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:47:36.708 [DEBUG] [Thread-158938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:47:36.717 [DEBUG] [Thread-158938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:47:36.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:47:36.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:47:36.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:47:36.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:47:36.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:47:36.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:47:36.752 [DEBUG] [Thread-158938] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:45.227 [DEBUG] [Thread-158940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:47:46.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:47:46.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:47:46.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:47:47.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 47, 20), 15.2, 35.26, 0.0, 9.48, 14.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:47:47.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:47:20
2025-09-29T14:47:47.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:47:47.655 [DEBUG] [Thread-158941] [transport.py] [_log()] starting thread (client mode): 0x2b9cf2b0
2025-09-29T14:47:47.655 [DEBUG] [Thread-158941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:47:47.675 [DEBUG] [Thread-158941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:47:47.675 [INFO] [Thread-158941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] client lang: <none>
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] server lang: <none>
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] kex follows: False
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] Compression: none
2025-09-29T14:47:47.677 [DEBUG] [Thread-158941] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:47:47.693 [DEBUG] [Thread-158941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:47:47.693 [DEBUG] [Thread-158941] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:47:47.693 [DEBUG] [Thread-158941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:47:47.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:47:47.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:47:47.694 [DEBUG] [Thread-158941] [transport.py] [_log()] userauth is OK
2025-09-29T14:47:47.694 [DEBUG] [Thread-158941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:47:47.694 [DEBUG] [Thread-158941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:47:47.694 [DEBUG] [Thread-158941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:47:47.694 [DEBUG] [Thread-158941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:47:47.707 [INFO] [Thread-158941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:47:47.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:47:48.335 [DEBUG] [Thread-158941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:47:48.335 [DEBUG] [Thread-158941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:47:48.335 [DEBUG] [Thread-158941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:47:48.376 [DEBUG] [Thread-158941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:47:48.376 [DEBUG] [Thread-158941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:47:48.379 [DEBUG] [Thread-158941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:47:48.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:47:48.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:47:48.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:47:48.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:47:48.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:47:48.399 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:47:48.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.532707 -999.00  +16.10   9.35     37   +1.80 1 1 1 1 1   888    0 15.98 79.69 ----- 8.8 9.3 174.0 11.7 24.7 -29.1 23.6 -30.6 25.4 -28.5 26.7 -29.8
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.532707
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:47:48.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:47:20', tmtdew=15.2, humidity=35.26, cloud=0.0, wind=9.48, temperature=14.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:47:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:47:48.400 [DEBUG] [Thread-158941] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:48.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:47:48.488 [DEBUG] [Thread-158944] [transport.py] [_log()] starting thread (client mode): 0x2b9cc7c0
2025-09-29T14:47:48.488 [DEBUG] [Thread-158944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:47:48.506 [DEBUG] [Thread-158944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:47:48.506 [INFO] [Thread-158944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] client lang: <none>
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] server lang: <none>
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] kex follows: False
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] Compression: none
2025-09-29T14:47:48.514 [DEBUG] [Thread-158944] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:47:48.576 [DEBUG] [Thread-158944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:47:48.576 [DEBUG] [Thread-158944] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:47:48.576 [DEBUG] [Thread-158944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:47:48.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:47:48.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:47:48.634 [DEBUG] [Thread-158944] [transport.py] [_log()] userauth is OK
2025-09-29T14:47:48.634 [DEBUG] [Thread-158944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:47:48.634 [DEBUG] [Thread-158944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:47:48.634 [DEBUG] [Thread-158944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:47:48.634 [DEBUG] [Thread-158944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:47:48.650 [INFO] [Thread-158944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:47:48.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:47:48.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:47:49.602 [DEBUG] [Thread-158944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:47:49.602 [DEBUG] [Thread-158944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:47:49.650 [DEBUG] [Thread-158944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:47:49.650 [DEBUG] [Thread-158944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:47:49.658 [DEBUG] [Thread-158944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:47:49.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:47:49.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:47:49.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:47:49.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:47:49.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:47:49.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:47:49.690 [DEBUG] [Thread-158944] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:47:50.162 [DEBUG] [Thread-158946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:47:59.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:47:59.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:47:59.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:48:00.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 47, 52), 15.42, 34.64, 0.0, 9.42, 15.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:48:00.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:47:52
2025-09-29T14:48:00.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:48:00.551 [DEBUG] [Thread-158947] [transport.py] [_log()] starting thread (client mode): 0x2b94e530
2025-09-29T14:48:00.551 [DEBUG] [Thread-158947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:00.571 [DEBUG] [Thread-158947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:48:00.571 [INFO] [Thread-158947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:48:00.574 [DEBUG] [Thread-158947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] Compression: none
2025-09-29T14:48:00.575 [DEBUG] [Thread-158947] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:00.592 [DEBUG] [Thread-158947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:00.592 [DEBUG] [Thread-158947] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:00.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:48:00.593 [DEBUG] [Thread-158947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:48:00.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:00.636 [DEBUG] [Thread-158947] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:00.637 [DEBUG] [Thread-158947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:00.637 [DEBUG] [Thread-158947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:00.637 [DEBUG] [Thread-158947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:48:00.637 [DEBUG] [Thread-158947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:00.675 [INFO] [Thread-158947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:00.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:01.328 [DEBUG] [Thread-158947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:01.328 [DEBUG] [Thread-158947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:01.328 [DEBUG] [Thread-158947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:48:01.369 [DEBUG] [Thread-158947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:01.369 [DEBUG] [Thread-158947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:01.372 [DEBUG] [Thread-158947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:01.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:01.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:48:01.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:48:01.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:48:01.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:01.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:48:01.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:01.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:01.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:48:01.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.532707 -999.00  +16.10   9.35     37   +1.80 1 1 1 1 1   888    0 15.98 79.69 ----- 8.8 9.3 174.0 11.7 24.7 -29.1 23.6 -30.6 25.4 -28.5 26.7 -29.8
2025-09-29T14:48:01.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:48:01.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:48:01.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.532707
2025-09-29T14:48:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:48:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:48:01.398 [DEBUG] [Thread-158947] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:48:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:48:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:48:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:47:52', tmtdew=15.42, humidity=34.64, cloud=0.0, wind=9.42, temperature=15.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:47:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:48:01.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:48:01.495 [DEBUG] [Thread-158950] [transport.py] [_log()] starting thread (client mode): 0x2e3defe0
2025-09-29T14:48:01.495 [DEBUG] [Thread-158950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:01.510 [DEBUG] [Thread-158950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:48:01.510 [INFO] [Thread-158950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:48:01.517 [DEBUG] [Thread-158950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:01.517 [DEBUG] [Thread-158950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:48:01.518 [DEBUG] [Thread-158950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:01.518 [DEBUG] [Thread-158950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:01.518 [DEBUG] [Thread-158950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:01.518 [DEBUG] [Thread-158950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:01.518 [DEBUG] [Thread-158950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:01.518 [DEBUG] [Thread-158950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:01.518 [DEBUG] [Thread-158950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] Compression: none
2025-09-29T14:48:01.519 [DEBUG] [Thread-158950] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:01.574 [DEBUG] [Thread-158950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:01.574 [DEBUG] [Thread-158950] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:01.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:48:01.575 [DEBUG] [Thread-158950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:48:01.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:01.630 [DEBUG] [Thread-158950] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:01.631 [DEBUG] [Thread-158950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:01.631 [DEBUG] [Thread-158950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:01.631 [DEBUG] [Thread-158950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:48:01.631 [DEBUG] [Thread-158950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:01.649 [INFO] [Thread-158950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:01.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:48:01.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:02.727 [DEBUG] [Thread-158950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:02.728 [DEBUG] [Thread-158950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:02.775 [DEBUG] [Thread-158950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:02.775 [DEBUG] [Thread-158950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:02.784 [DEBUG] [Thread-158950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:02.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:02.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:48:02.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:48:02.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:02.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:02.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:02.818 [DEBUG] [Thread-158950] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:05.197 [DEBUG] [Thread-158952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:48:07.311 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:48:07.312 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:48:12.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:48:12.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:48:12.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:48:13.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 47, 52), 15.42, 34.64, 0.0, 9.42, 15.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:48:13.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:47:52
2025-09-29T14:48:13.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:48:13.665 [DEBUG] [Thread-158953] [transport.py] [_log()] starting thread (client mode): 0x2e3de4d0
2025-09-29T14:48:13.665 [DEBUG] [Thread-158953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:13.686 [DEBUG] [Thread-158953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:48:13.686 [INFO] [Thread-158953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:48:13.689 [DEBUG] [Thread-158953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:13.689 [DEBUG] [Thread-158953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:48:13.689 [DEBUG] [Thread-158953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:13.689 [DEBUG] [Thread-158953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:13.689 [DEBUG] [Thread-158953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] Compression: none
2025-09-29T14:48:13.690 [DEBUG] [Thread-158953] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:13.706 [DEBUG] [Thread-158953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:13.706 [DEBUG] [Thread-158953] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:13.707 [DEBUG] [Thread-158953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:48:13.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:48:13.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:13.708 [DEBUG] [Thread-158953] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:13.708 [DEBUG] [Thread-158953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:13.708 [DEBUG] [Thread-158953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:13.708 [DEBUG] [Thread-158953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:48:13.708 [DEBUG] [Thread-158953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:13.732 [INFO] [Thread-158953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:13.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:14.374 [DEBUG] [Thread-158953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:14.374 [DEBUG] [Thread-158953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:14.374 [DEBUG] [Thread-158953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:48:14.415 [DEBUG] [Thread-158953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:14.415 [DEBUG] [Thread-158953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:14.418 [DEBUG] [Thread-158953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:14.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:14.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:48:14.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:48:14.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:48:14.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:14.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:48:14.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:14.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:14.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:48:14.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.533054 -999.00  +16.10   6.04     38   +2.00 1 1 1 1 1   888    0 15.83 80.86 ----- 7.9 6.0 200.0 12.7 24.8 -28.3 23.6 -28.0 25.5 -27.8 26.8 -29.9
2025-09-29T14:48:14.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:48:14.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:48:14.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.533054
2025-09-29T14:48:14.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:48:14.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:48:14.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:48:14.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:48:14.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:48:14.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:47:52', tmtdew=15.42, humidity=34.64, cloud=0.0, wind=9.42, temperature=15.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:47:35.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:48:14.444 [DEBUG] [Thread-158953] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:14.528 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:48:14.538 [DEBUG] [Thread-158956] [transport.py] [_log()] starting thread (client mode): 0x2b94ceb0
2025-09-29T14:48:14.538 [DEBUG] [Thread-158956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:14.553 [DEBUG] [Thread-158956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:48:14.553 [INFO] [Thread-158956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:14.561 [DEBUG] [Thread-158956] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] Compression: none
2025-09-29T14:48:14.562 [DEBUG] [Thread-158956] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:14.618 [DEBUG] [Thread-158956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:14.619 [DEBUG] [Thread-158956] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:14.619 [DEBUG] [Thread-158956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:48:14.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:48:14.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:14.674 [DEBUG] [Thread-158956] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:14.674 [DEBUG] [Thread-158956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:14.675 [DEBUG] [Thread-158956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:14.675 [DEBUG] [Thread-158956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:48:14.675 [DEBUG] [Thread-158956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:14.694 [INFO] [Thread-158956] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:14.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:48:14.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:15.669 [DEBUG] [Thread-158956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:15.669 [DEBUG] [Thread-158956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:15.717 [DEBUG] [Thread-158956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:15.718 [DEBUG] [Thread-158956] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:15.726 [DEBUG] [Thread-158956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:15.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:15.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:48:15.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:48:15.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:15.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:15.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:15.762 [DEBUG] [Thread-158956] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:20.242 [DEBUG] [Thread-158958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:48:25.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:48:25.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:48:25.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:48:26.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 47, 52), 15.42, 34.64, 0.0, 9.42, 15.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:48:26.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:47:52
2025-09-29T14:48:26.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:48:26.659 [DEBUG] [Thread-158959] [transport.py] [_log()] starting thread (client mode): 0x30ddf490
2025-09-29T14:48:26.659 [DEBUG] [Thread-158959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:26.681 [DEBUG] [Thread-158959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:48:26.681 [INFO] [Thread-158959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] Compression: none
2025-09-29T14:48:26.684 [DEBUG] [Thread-158959] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:26.699 [DEBUG] [Thread-158959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:26.700 [DEBUG] [Thread-158959] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:26.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:48:26.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:26.700 [DEBUG] [Thread-158959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:48:26.701 [DEBUG] [Thread-158959] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:26.701 [DEBUG] [Thread-158959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:26.701 [DEBUG] [Thread-158959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:26.701 [DEBUG] [Thread-158959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:48:26.701 [DEBUG] [Thread-158959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:26.712 [INFO] [Thread-158959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:26.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:27.347 [DEBUG] [Thread-158959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:27.347 [DEBUG] [Thread-158959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:27.347 [DEBUG] [Thread-158959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:48:27.388 [DEBUG] [Thread-158959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:27.388 [DEBUG] [Thread-158959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:27.390 [DEBUG] [Thread-158959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:27.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:27.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:48:27.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:48:27.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:48:27.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:27.408 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:48:27.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.533054 -999.00  +16.10   6.04     38   +2.00 1 1 1 1 1   888    0 15.83 80.86 ----- 7.9 6.0 200.0 12.7 24.8 -28.3 23.6 -28.0 25.5 -27.8 26.8 -29.9
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.533054
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:48:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:47:52', tmtdew=15.42, humidity=34.64, cloud=0.0, wind=9.42, temperature=15.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:47:35.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:48:27.409 [DEBUG] [Thread-158959] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:27.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:48:27.494 [DEBUG] [Thread-158962] [transport.py] [_log()] starting thread (client mode): 0x30ddf6d0
2025-09-29T14:48:27.495 [DEBUG] [Thread-158962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:27.510 [DEBUG] [Thread-158962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:48:27.510 [INFO] [Thread-158962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] Compression: none
2025-09-29T14:48:27.518 [DEBUG] [Thread-158962] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:27.577 [DEBUG] [Thread-158962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:27.577 [DEBUG] [Thread-158962] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:27.578 [DEBUG] [Thread-158962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:48:27.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:48:27.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:27.634 [DEBUG] [Thread-158962] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:27.634 [DEBUG] [Thread-158962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:27.634 [DEBUG] [Thread-158962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:27.634 [DEBUG] [Thread-158962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:48:27.635 [DEBUG] [Thread-158962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:27.652 [INFO] [Thread-158962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:27.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:48:27.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:28.661 [DEBUG] [Thread-158962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:28.661 [DEBUG] [Thread-158962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:28.709 [DEBUG] [Thread-158962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:28.709 [DEBUG] [Thread-158962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:28.718 [DEBUG] [Thread-158962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:28.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:28.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:48:28.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:48:28.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:28.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:28.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:28.751 [DEBUG] [Thread-158962] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:35.280 [DEBUG] [Thread-158964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:48:38.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:48:38.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:48:38.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:48:39.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 48, 24), 15.36, 34.78, 0.0, 9.64, 15.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:48:39.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:48:24
2025-09-29T14:48:39.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:48:39.595 [DEBUG] [Thread-158965] [transport.py] [_log()] starting thread (client mode): 0x2b94fa60
2025-09-29T14:48:39.595 [DEBUG] [Thread-158965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:39.617 [DEBUG] [Thread-158965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:48:39.617 [INFO] [Thread-158965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:39.618 [DEBUG] [Thread-158965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] Compression: none
2025-09-29T14:48:39.619 [DEBUG] [Thread-158965] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:39.634 [DEBUG] [Thread-158965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:39.635 [DEBUG] [Thread-158965] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:39.635 [DEBUG] [Thread-158965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:48:39.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:48:39.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:39.637 [DEBUG] [Thread-158965] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:39.637 [DEBUG] [Thread-158965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:39.638 [DEBUG] [Thread-158965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:39.638 [DEBUG] [Thread-158965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:48:39.638 [DEBUG] [Thread-158965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:39.656 [INFO] [Thread-158965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:39.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:40.225 [DEBUG] [Thread-158965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:40.225 [DEBUG] [Thread-158965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:40.225 [DEBUG] [Thread-158965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:48:40.266 [DEBUG] [Thread-158965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:40.266 [DEBUG] [Thread-158965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:40.269 [DEBUG] [Thread-158965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:40.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:40.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:48:40.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:48:40.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:48:40.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:40.291 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:48:40.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:40.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:40.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:48:40.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.533403 -999.00  +16.20  10.20     38   +2.00 1 1 1 1 1   888    0 16.18 85.26 ----- 7.2 10.2 165.2 13.5 24.8 -28.5 23.7 -27.8 25.5 -27.6 26.9 -30.4
2025-09-29T14:48:40.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:48:40.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:48:40.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.533403
2025-09-29T14:48:40.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:48:40.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:48:40.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:48:40.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:48:40.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:48:40.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:48:24', tmtdew=15.36, humidity=34.78, cloud=0.0, wind=9.64, temperature=15.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:48:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:48:40.294 [DEBUG] [Thread-158965] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:40.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:48:40.392 [DEBUG] [Thread-158968] [transport.py] [_log()] starting thread (client mode): 0x2b94d180
2025-09-29T14:48:40.392 [DEBUG] [Thread-158968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:40.407 [DEBUG] [Thread-158968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:48:40.407 [INFO] [Thread-158968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:48:40.415 [DEBUG] [Thread-158968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:40.415 [DEBUG] [Thread-158968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:48:40.415 [DEBUG] [Thread-158968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:40.415 [DEBUG] [Thread-158968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:40.415 [DEBUG] [Thread-158968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:40.416 [DEBUG] [Thread-158968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:40.417 [DEBUG] [Thread-158968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:40.418 [DEBUG] [Thread-158968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:40.418 [DEBUG] [Thread-158968] [transport.py] [_log()] Compression: none
2025-09-29T14:48:40.418 [DEBUG] [Thread-158968] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:40.474 [DEBUG] [Thread-158968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:40.474 [DEBUG] [Thread-158968] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:40.475 [DEBUG] [Thread-158968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:48:40.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:48:40.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:40.531 [DEBUG] [Thread-158968] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:40.531 [DEBUG] [Thread-158968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:40.532 [DEBUG] [Thread-158968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:40.532 [DEBUG] [Thread-158968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:48:40.532 [DEBUG] [Thread-158968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:40.551 [INFO] [Thread-158968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:40.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:48:40.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:41.491 [DEBUG] [Thread-158968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:41.491 [DEBUG] [Thread-158968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:41.539 [DEBUG] [Thread-158968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:41.539 [DEBUG] [Thread-158968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:41.553 [DEBUG] [Thread-158968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:41.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:41.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:48:41.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:48:41.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:41.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:41.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:41.587 [DEBUG] [Thread-158968] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:45.260 [DEBUG] [Thread-158970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:48:50.311 [DEBUG] [Thread-158971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:48:51.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:48:51.589 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:48:51.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:48:52.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 48, 24), 15.36, 34.78, 0.0, 9.64, 15.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:48:52.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:48:24
2025-09-29T14:48:52.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:48:52.420 [DEBUG] [Thread-158972] [transport.py] [_log()] starting thread (client mode): 0x30ddfb20
2025-09-29T14:48:52.420 [DEBUG] [Thread-158972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:52.442 [DEBUG] [Thread-158972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:48:52.442 [INFO] [Thread-158972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:52.445 [DEBUG] [Thread-158972] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] Compression: none
2025-09-29T14:48:52.446 [DEBUG] [Thread-158972] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:52.463 [DEBUG] [Thread-158972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:52.463 [DEBUG] [Thread-158972] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:52.464 [DEBUG] [Thread-158972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:48:52.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:48:52.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:52.466 [DEBUG] [Thread-158972] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:52.466 [DEBUG] [Thread-158972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:52.466 [DEBUG] [Thread-158972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:52.466 [DEBUG] [Thread-158972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:48:52.466 [DEBUG] [Thread-158972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:52.491 [INFO] [Thread-158972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:52.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:53.094 [DEBUG] [Thread-158972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:53.095 [DEBUG] [Thread-158972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:53.095 [DEBUG] [Thread-158972] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:48:53.135 [DEBUG] [Thread-158972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:53.135 [DEBUG] [Thread-158972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:53.138 [DEBUG] [Thread-158972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:53.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:53.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:48:53.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:48:53.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:48:53.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:53.160 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:48:53.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:53.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:53.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:48:53.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.533403 -999.00  +16.20  10.20     38   +2.00 1 1 1 1 1   888    0 16.18 85.26 ----- 7.2 10.2 165.2 13.5 24.8 -28.5 23.7 -27.8 25.5 -27.6 26.9 -30.4
2025-09-29T14:48:53.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:48:53.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:48:53.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.533403
2025-09-29T14:48:53.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:48:53.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:48:53.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:48:53.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:48:53.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:48:53.162 [DEBUG] [Thread-158972] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:48:53.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:48:24', tmtdew=15.36, humidity=34.78, cloud=0.0, wind=9.64, temperature=15.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:48:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:48:53.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:48:53.257 [DEBUG] [Thread-158975] [transport.py] [_log()] starting thread (client mode): 0x30ddec20
2025-09-29T14:48:53.257 [DEBUG] [Thread-158975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:48:53.272 [DEBUG] [Thread-158975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:48:53.272 [INFO] [Thread-158975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:48:53.280 [DEBUG] [Thread-158975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:48:53.280 [DEBUG] [Thread-158975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:48:53.280 [DEBUG] [Thread-158975] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:48:53.280 [DEBUG] [Thread-158975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:53.280 [DEBUG] [Thread-158975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:48:53.280 [DEBUG] [Thread-158975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:53.280 [DEBUG] [Thread-158975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] client lang: <none>
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] server lang: <none>
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] kex follows: False
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] Compression: none
2025-09-29T14:48:53.281 [DEBUG] [Thread-158975] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:48:53.338 [DEBUG] [Thread-158975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:48:53.339 [DEBUG] [Thread-158975] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:48:53.339 [DEBUG] [Thread-158975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:48:53.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:48:53.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:48:53.395 [DEBUG] [Thread-158975] [transport.py] [_log()] userauth is OK
2025-09-29T14:48:53.395 [DEBUG] [Thread-158975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:48:53.395 [DEBUG] [Thread-158975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:48:53.395 [DEBUG] [Thread-158975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:48:53.395 [DEBUG] [Thread-158975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:48:53.415 [INFO] [Thread-158975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:48:53.415 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:48:53.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:48:54.387 [DEBUG] [Thread-158975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:48:54.387 [DEBUG] [Thread-158975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:48:54.435 [DEBUG] [Thread-158975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:48:54.436 [DEBUG] [Thread-158975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:48:54.445 [DEBUG] [Thread-158975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:48:54.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:48:54.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:48:54.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:48:54.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:48:54.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:48:54.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:48:54.480 [DEBUG] [Thread-158975] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:04.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:49:04.481 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:49:04.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:49:05.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 48, 56), 15.29, 35.34, 29.3, 10.78, 15.16, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:49:05.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:48:56
2025-09-29T14:49:05.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:49:05.360 [DEBUG] [Thread-158977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:49:05.361 [DEBUG] [Thread-158978] [transport.py] [_log()] starting thread (client mode): 0x30ddcc70
2025-09-29T14:49:05.361 [DEBUG] [Thread-158978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:05.381 [DEBUG] [Thread-158978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:49:05.381 [INFO] [Thread-158978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:05.383 [DEBUG] [Thread-158978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:05.384 [DEBUG] [Thread-158978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:05.384 [DEBUG] [Thread-158978] [transport.py] [_log()] Compression: none
2025-09-29T14:49:05.384 [DEBUG] [Thread-158978] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:05.391 [DEBUG] [Thread-158978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:05.391 [DEBUG] [Thread-158978] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:05.391 [DEBUG] [Thread-158978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:49:05.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:49:05.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:05.392 [DEBUG] [Thread-158978] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:05.392 [DEBUG] [Thread-158978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:05.392 [DEBUG] [Thread-158978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:05.392 [DEBUG] [Thread-158978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:49:05.392 [DEBUG] [Thread-158978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:05.408 [INFO] [Thread-158978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:05.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:06.025 [DEBUG] [Thread-158978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:06.025 [DEBUG] [Thread-158978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:06.026 [DEBUG] [Thread-158978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:49:06.067 [DEBUG] [Thread-158978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:06.067 [DEBUG] [Thread-158978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:06.069 [DEBUG] [Thread-158978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:06.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:06.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:49:06.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:49:06.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:49:06.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:06.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:49:06.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.533403 -999.00  +16.20  10.20     38   +2.00 1 1 1 1 1   888    0 16.18 85.26 ----- 7.2 10.2 165.2 13.5 24.8 -28.5 23.7 -27.8 25.5 -27.6 26.9 -30.4
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.533403
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:49:06.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:49:06.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:48:56', tmtdew=15.29, humidity=35.34, cloud=29.3, wind=10.78, temperature=15.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:48:06.019', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:49:06.089 [DEBUG] [Thread-158978] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:06.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:49:06.173 [DEBUG] [Thread-158981] [transport.py] [_log()] starting thread (client mode): 0x2e374820
2025-09-29T14:49:06.173 [DEBUG] [Thread-158981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:06.189 [DEBUG] [Thread-158981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:49:06.189 [INFO] [Thread-158981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] Compression: none
2025-09-29T14:49:06.196 [DEBUG] [Thread-158981] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:06.253 [DEBUG] [Thread-158981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:06.253 [DEBUG] [Thread-158981] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:06.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:49:06.254 [DEBUG] [Thread-158981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:49:06.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:06.310 [DEBUG] [Thread-158981] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:06.310 [DEBUG] [Thread-158981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:06.310 [DEBUG] [Thread-158981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:06.310 [DEBUG] [Thread-158981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:49:06.310 [DEBUG] [Thread-158981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:06.324 [INFO] [Thread-158981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:06.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:49:06.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:07.289 [DEBUG] [Thread-158981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:07.289 [DEBUG] [Thread-158981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:07.337 [DEBUG] [Thread-158981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:07.337 [DEBUG] [Thread-158981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:07.345 [DEBUG] [Thread-158981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:07.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:07.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:49:07.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:49:07.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:07.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:07.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:07.376 [DEBUG] [Thread-158981] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:07.451 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:49:07.452 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:49:17.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:49:17.379 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:49:17.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:49:17.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 48, 56), 15.29, 35.34, 29.3, 10.78, 15.16, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:49:17.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:48:56
2025-09-29T14:49:18.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:49:18.231 [DEBUG] [Thread-158983] [transport.py] [_log()] starting thread (client mode): 0x2b9bb730
2025-09-29T14:49:18.231 [DEBUG] [Thread-158983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:18.252 [DEBUG] [Thread-158983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:49:18.253 [INFO] [Thread-158983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:49:18.256 [DEBUG] [Thread-158983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:18.256 [DEBUG] [Thread-158983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:49:18.256 [DEBUG] [Thread-158983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] Compression: none
2025-09-29T14:49:18.257 [DEBUG] [Thread-158983] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:18.274 [DEBUG] [Thread-158983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:18.274 [DEBUG] [Thread-158983] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:18.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:49:18.275 [DEBUG] [Thread-158983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:49:18.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:18.277 [DEBUG] [Thread-158983] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:18.277 [DEBUG] [Thread-158983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:18.277 [DEBUG] [Thread-158983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:18.278 [DEBUG] [Thread-158983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:49:18.278 [DEBUG] [Thread-158983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:18.303 [INFO] [Thread-158983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:18.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:18.934 [DEBUG] [Thread-158983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:18.934 [DEBUG] [Thread-158983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:18.935 [DEBUG] [Thread-158983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:49:18.975 [DEBUG] [Thread-158983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:18.975 [DEBUG] [Thread-158983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:18.978 [DEBUG] [Thread-158983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:18.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:18.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:49:18.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:49:18.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:49:19.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:19.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:49:19.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:19.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:19.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:49:19.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.534096 -999.00  +16.20  15.85     39   +2.30 1 1 1 1 1   888    0 15.91 79.48 ----- 13.2 15.8 182.4 17.2 24.7 -30.7 23.4 -33.3 25.4 -29.9 26.7 -30.2
2025-09-29T14:49:19.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:49:19.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:49:19.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.534096
2025-09-29T14:49:19.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:49:19.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:49:19.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:49:19.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:49:19.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:49:19.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:48:56', tmtdew=15.29, humidity=35.34, cloud=29.3, wind=10.78, temperature=15.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:49:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:49:19.006 [DEBUG] [Thread-158983] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:19.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:49:19.101 [DEBUG] [Thread-158986] [transport.py] [_log()] starting thread (client mode): 0x2b9b8e80
2025-09-29T14:49:19.101 [DEBUG] [Thread-158986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:19.115 [DEBUG] [Thread-158986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:49:19.115 [INFO] [Thread-158986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:49:19.123 [DEBUG] [Thread-158986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:19.123 [DEBUG] [Thread-158986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:19.124 [DEBUG] [Thread-158986] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:19.125 [DEBUG] [Thread-158986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:19.125 [DEBUG] [Thread-158986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:19.125 [DEBUG] [Thread-158986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:19.125 [DEBUG] [Thread-158986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:19.125 [DEBUG] [Thread-158986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:19.125 [DEBUG] [Thread-158986] [transport.py] [_log()] Compression: none
2025-09-29T14:49:19.125 [DEBUG] [Thread-158986] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:19.183 [DEBUG] [Thread-158986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:19.184 [DEBUG] [Thread-158986] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:19.184 [DEBUG] [Thread-158986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:49:19.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:49:19.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:19.239 [DEBUG] [Thread-158986] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:19.240 [DEBUG] [Thread-158986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:19.240 [DEBUG] [Thread-158986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:19.240 [DEBUG] [Thread-158986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:49:19.240 [DEBUG] [Thread-158986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:19.259 [INFO] [Thread-158986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:19.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:49:19.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:20.240 [DEBUG] [Thread-158986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:20.240 [DEBUG] [Thread-158986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:20.288 [DEBUG] [Thread-158986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:20.288 [DEBUG] [Thread-158986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:20.298 [DEBUG] [Thread-158986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:20.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:20.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:49:20.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:49:20.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:20.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:20.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:20.333 [DEBUG] [Thread-158986] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:20.387 [DEBUG] [Thread-158988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:49:30.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:49:30.336 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:49:30.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:49:30.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 49, 27), 15.41, 35.06, 29.3, 9.44, 15.19, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:49:30.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:49:27
2025-09-29T14:49:31.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:49:31.181 [DEBUG] [Thread-158989] [transport.py] [_log()] starting thread (client mode): 0x2b9b8e80
2025-09-29T14:49:31.182 [DEBUG] [Thread-158989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:31.202 [DEBUG] [Thread-158989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:49:31.202 [INFO] [Thread-158989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:49:31.205 [DEBUG] [Thread-158989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:31.205 [DEBUG] [Thread-158989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:49:31.205 [DEBUG] [Thread-158989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:31.205 [DEBUG] [Thread-158989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:31.205 [DEBUG] [Thread-158989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:31.205 [DEBUG] [Thread-158989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:31.205 [DEBUG] [Thread-158989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] Compression: none
2025-09-29T14:49:31.206 [DEBUG] [Thread-158989] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:31.225 [DEBUG] [Thread-158989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:31.225 [DEBUG] [Thread-158989] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:31.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:49:31.226 [DEBUG] [Thread-158989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:49:31.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:31.228 [DEBUG] [Thread-158989] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:31.228 [DEBUG] [Thread-158989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:31.229 [DEBUG] [Thread-158989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:31.229 [DEBUG] [Thread-158989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:49:31.229 [DEBUG] [Thread-158989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:31.248 [INFO] [Thread-158989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:31.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:31.872 [DEBUG] [Thread-158989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:31.872 [DEBUG] [Thread-158989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:31.873 [DEBUG] [Thread-158989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:49:31.913 [DEBUG] [Thread-158989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:31.914 [DEBUG] [Thread-158989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:31.917 [DEBUG] [Thread-158989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:31.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:31.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:49:31.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:49:31.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:49:31.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:31.939 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:49:31.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:31.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:31.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:49:31.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.534096 -999.00  +16.20  15.85     39   +2.30 1 1 1 1 1   888    0 15.91 79.48 ----- 13.2 15.8 182.4 17.2 24.7 -30.7 23.4 -33.3 25.4 -29.9 26.7 -30.2
2025-09-29T14:49:31.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:49:31.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:49:31.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.534096
2025-09-29T14:49:31.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:49:31.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:49:31.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:49:31.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:49:31.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:49:31.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:49:27', tmtdew=15.41, humidity=35.06, cloud=29.3, wind=9.44, temperature=15.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:49:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:49:31.942 [DEBUG] [Thread-158989] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:32.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:49:32.034 [DEBUG] [Thread-158992] [transport.py] [_log()] starting thread (client mode): 0x30ddf040
2025-09-29T14:49:32.034 [DEBUG] [Thread-158992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:32.050 [DEBUG] [Thread-158992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:49:32.050 [INFO] [Thread-158992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:49:32.057 [DEBUG] [Thread-158992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:32.057 [DEBUG] [Thread-158992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:49:32.057 [DEBUG] [Thread-158992] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:32.057 [DEBUG] [Thread-158992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:32.058 [DEBUG] [Thread-158992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:32.059 [DEBUG] [Thread-158992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:32.059 [DEBUG] [Thread-158992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:32.059 [DEBUG] [Thread-158992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:32.059 [DEBUG] [Thread-158992] [transport.py] [_log()] Compression: none
2025-09-29T14:49:32.059 [DEBUG] [Thread-158992] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:32.115 [DEBUG] [Thread-158992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:32.116 [DEBUG] [Thread-158992] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:32.116 [DEBUG] [Thread-158992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:49:32.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:49:32.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:32.171 [DEBUG] [Thread-158992] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:32.171 [DEBUG] [Thread-158992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:32.172 [DEBUG] [Thread-158992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:32.172 [DEBUG] [Thread-158992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:49:32.172 [DEBUG] [Thread-158992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:32.191 [INFO] [Thread-158992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:32.192 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:49:32.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:33.177 [DEBUG] [Thread-158992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:33.177 [DEBUG] [Thread-158992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:33.225 [DEBUG] [Thread-158992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:33.225 [DEBUG] [Thread-158992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:33.234 [DEBUG] [Thread-158992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:33.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:33.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:49:33.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:49:33.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:33.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:33.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:33.269 [DEBUG] [Thread-158992] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:35.427 [DEBUG] [Thread-158994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:49:43.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:49:43.271 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:49:43.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:49:43.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 49, 27), 15.41, 35.06, 29.3, 9.44, 15.19, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:49:43.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:49:27
2025-09-29T14:49:43.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:49:44.114 [DEBUG] [Thread-158995] [transport.py] [_log()] starting thread (client mode): 0x2e377700
2025-09-29T14:49:44.114 [DEBUG] [Thread-158995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:44.134 [DEBUG] [Thread-158995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:49:44.134 [INFO] [Thread-158995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:44.135 [DEBUG] [Thread-158995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] Compression: none
2025-09-29T14:49:44.136 [DEBUG] [Thread-158995] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:44.149 [DEBUG] [Thread-158995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:44.149 [DEBUG] [Thread-158995] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:44.149 [DEBUG] [Thread-158995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:49:44.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:49:44.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:44.150 [DEBUG] [Thread-158995] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:44.150 [DEBUG] [Thread-158995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:44.150 [DEBUG] [Thread-158995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:44.150 [DEBUG] [Thread-158995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:49:44.150 [DEBUG] [Thread-158995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:44.169 [INFO] [Thread-158995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:44.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:44.736 [DEBUG] [Thread-158995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:44.736 [DEBUG] [Thread-158995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:44.736 [DEBUG] [Thread-158995] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:49:44.777 [DEBUG] [Thread-158995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:44.777 [DEBUG] [Thread-158995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:44.779 [DEBUG] [Thread-158995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:44.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:44.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:49:44.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:49:44.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:49:44.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:44.796 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:49:44.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:44.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.534096 -999.00  +16.20  15.85     39   +2.30 1 1 1 1 1   888    0 15.91 79.48 ----- 13.2 15.8 182.4 17.2 24.7 -30.7 23.4 -33.3 25.4 -29.9 26.7 -30.2
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.534096
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:49:44.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:49:27', tmtdew=15.41, humidity=35.06, cloud=29.3, wind=9.44, temperature=15.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:49:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:49:44.798 [DEBUG] [Thread-158995] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:44.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:49:44.882 [DEBUG] [Thread-158998] [transport.py] [_log()] starting thread (client mode): 0x2e375d80
2025-09-29T14:49:44.882 [DEBUG] [Thread-158998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:44.897 [DEBUG] [Thread-158998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:49:44.897 [INFO] [Thread-158998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:44.904 [DEBUG] [Thread-158998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:44.905 [DEBUG] [Thread-158998] [transport.py] [_log()] Compression: none
2025-09-29T14:49:44.905 [DEBUG] [Thread-158998] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:44.961 [DEBUG] [Thread-158998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:44.961 [DEBUG] [Thread-158998] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:44.961 [DEBUG] [Thread-158998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:49:44.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:49:44.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:45.019 [DEBUG] [Thread-158998] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:45.019 [DEBUG] [Thread-158998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:45.019 [DEBUG] [Thread-158998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:45.019 [DEBUG] [Thread-158998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:49:45.019 [DEBUG] [Thread-158998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:45.037 [INFO] [Thread-158998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:45.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:49:45.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:45.286 [DEBUG] [Thread-159000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:49:46.032 [DEBUG] [Thread-158998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:46.032 [DEBUG] [Thread-158998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:46.079 [DEBUG] [Thread-158998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:46.079 [DEBUG] [Thread-158998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:46.088 [DEBUG] [Thread-158998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:46.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:46.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:49:46.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:49:46.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:46.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:46.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:46.122 [DEBUG] [Thread-158998] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:50.468 [DEBUG] [Thread-159001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:49:56.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:49:56.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:49:56.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:49:56.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 49, 27), 15.41, 35.06, 29.3, 9.44, 15.19, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:49:56.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:49:27
2025-09-29T14:49:56.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:49:56.956 [DEBUG] [Thread-159002] [transport.py] [_log()] starting thread (client mode): 0x30ddf370
2025-09-29T14:49:56.956 [DEBUG] [Thread-159002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:56.975 [DEBUG] [Thread-159002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:49:56.976 [INFO] [Thread-159002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:56.979 [DEBUG] [Thread-159002] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] Compression: none
2025-09-29T14:49:56.980 [DEBUG] [Thread-159002] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:56.997 [DEBUG] [Thread-159002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:56.997 [DEBUG] [Thread-159002] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:56.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:49:56.998 [DEBUG] [Thread-159002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:49:56.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:57.000 [DEBUG] [Thread-159002] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:57.001 [DEBUG] [Thread-159002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:57.001 [DEBUG] [Thread-159002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:57.001 [DEBUG] [Thread-159002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:49:57.001 [DEBUG] [Thread-159002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:57.019 [INFO] [Thread-159002] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:57.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:57.645 [DEBUG] [Thread-159002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:57.645 [DEBUG] [Thread-159002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:57.646 [DEBUG] [Thread-159002] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:49:57.686 [DEBUG] [Thread-159002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:57.686 [DEBUG] [Thread-159002] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:57.688 [DEBUG] [Thread-159002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:57.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:57.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:49:57.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:49:57.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:49:57.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:57.707 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:49:57.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:57.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:57.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:49:57.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.534443 -999.00  +16.00  18.91     39   +2.20 1 1 1 1 1   888    0 15.79 72.53 ----- 15.5 18.9 182.2 23.8 24.6 -31.0 22.9 -35.1 25.3 -31.0 26.5 -32.3
2025-09-29T14:49:57.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:49:57.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:49:57.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.534443
2025-09-29T14:49:57.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:49:57.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:49:57.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:49:57.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:49:57.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:49:57.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:49:27', tmtdew=15.41, humidity=35.06, cloud=29.3, wind=9.44, temperature=15.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:49:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:49:57.708 [DEBUG] [Thread-159002] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:49:57.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:49:57.790 [DEBUG] [Thread-159005] [transport.py] [_log()] starting thread (client mode): 0x30ddf940
2025-09-29T14:49:57.791 [DEBUG] [Thread-159005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:49:57.805 [DEBUG] [Thread-159005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:49:57.805 [INFO] [Thread-159005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] client lang: <none>
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] server lang: <none>
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] kex follows: False
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] Compression: none
2025-09-29T14:49:57.813 [DEBUG] [Thread-159005] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:49:57.871 [DEBUG] [Thread-159005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:49:57.872 [DEBUG] [Thread-159005] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:49:57.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:49:57.873 [DEBUG] [Thread-159005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:49:57.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:49:57.927 [DEBUG] [Thread-159005] [transport.py] [_log()] userauth is OK
2025-09-29T14:49:57.927 [DEBUG] [Thread-159005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:49:57.927 [DEBUG] [Thread-159005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:49:57.928 [DEBUG] [Thread-159005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:49:57.928 [DEBUG] [Thread-159005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:49:57.946 [INFO] [Thread-159005] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:49:57.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:49:57.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:49:58.932 [DEBUG] [Thread-159005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:49:58.932 [DEBUG] [Thread-159005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:49:58.980 [DEBUG] [Thread-159005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:49:58.980 [DEBUG] [Thread-159005] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:49:58.989 [DEBUG] [Thread-159005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:49:58.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:49:58.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:49:59.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:49:59.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:49:59.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:49:59.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:49:59.024 [DEBUG] [Thread-159005] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:50:05.494 [DEBUG] [Thread-159007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:50:07.592 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:50:07.593 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:50:09.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:50:09.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:50:09.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:50:09.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 49, 59), 15.46, 34.79, 29.3, 15.88, 15.56, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:50:09.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:49:59
2025-09-29T14:50:09.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:50:09.876 [DEBUG] [Thread-159008] [transport.py] [_log()] starting thread (client mode): 0x2e3772e0
2025-09-29T14:50:09.876 [DEBUG] [Thread-159008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:50:09.894 [DEBUG] [Thread-159008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:50:09.895 [INFO] [Thread-159008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] client lang: <none>
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] server lang: <none>
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] kex follows: False
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:50:09.898 [DEBUG] [Thread-159008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:50:09.899 [DEBUG] [Thread-159008] [transport.py] [_log()] Compression: none
2025-09-29T14:50:09.899 [DEBUG] [Thread-159008] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:50:09.911 [DEBUG] [Thread-159008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:50:09.911 [DEBUG] [Thread-159008] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:50:09.912 [DEBUG] [Thread-159008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:50:09.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:50:09.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:50:09.913 [DEBUG] [Thread-159008] [transport.py] [_log()] userauth is OK
2025-09-29T14:50:09.914 [DEBUG] [Thread-159008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:50:09.914 [DEBUG] [Thread-159008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:50:09.914 [DEBUG] [Thread-159008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:50:09.914 [DEBUG] [Thread-159008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:50:09.937 [INFO] [Thread-159008] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:50:09.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:50:12.253 [DEBUG] [Thread-159008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:50:12.253 [DEBUG] [Thread-159008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:50:12.254 [DEBUG] [Thread-159008] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:50:12.294 [DEBUG] [Thread-159008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:50:12.294 [DEBUG] [Thread-159008] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:50:12.297 [DEBUG] [Thread-159008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:50:12.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:50:12.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:50:12.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:50:12.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:50:12.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:50:12.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:50:12.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:50:12.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:50:12.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:50:12.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.534443 -999.00  +16.00  18.91     39   +2.20 1 1 1 1 1   888    0 15.79 72.53 ----- 15.5 18.9 182.2 23.8 24.6 -31.0 22.9 -35.1 25.3 -31.0 26.5 -32.3
2025-09-29T14:50:12.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:50:12.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:50:12.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.534443
2025-09-29T14:50:12.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:50:12.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:50:12.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:50:12.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:50:12.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:50:12.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:49:59', tmtdew=15.46, humidity=34.79, cloud=29.3, wind=15.88, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:49:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:50:12.454 [DEBUG] [Thread-159008] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:50:12.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:50:12.550 [DEBUG] [Thread-159011] [transport.py] [_log()] starting thread (client mode): 0x2b9cc130
2025-09-29T14:50:12.551 [DEBUG] [Thread-159011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:50:12.565 [DEBUG] [Thread-159011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:50:12.565 [INFO] [Thread-159011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:50:12.573 [DEBUG] [Thread-159011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] client lang: <none>
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] server lang: <none>
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] kex follows: False
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:50:12.574 [DEBUG] [Thread-159011] [transport.py] [_log()] Compression: none
2025-09-29T14:50:12.575 [DEBUG] [Thread-159011] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:50:12.631 [DEBUG] [Thread-159011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:50:12.631 [DEBUG] [Thread-159011] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:50:12.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:50:12.632 [DEBUG] [Thread-159011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:50:12.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:50:12.687 [DEBUG] [Thread-159011] [transport.py] [_log()] userauth is OK
2025-09-29T14:50:12.688 [DEBUG] [Thread-159011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:50:12.688 [DEBUG] [Thread-159011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:50:12.688 [DEBUG] [Thread-159011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:50:12.688 [DEBUG] [Thread-159011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:50:12.710 [INFO] [Thread-159011] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:50:12.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:50:12.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:50:13.686 [DEBUG] [Thread-159011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:50:13.686 [DEBUG] [Thread-159011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:50:13.734 [DEBUG] [Thread-159011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:50:13.734 [DEBUG] [Thread-159011] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:50:13.743 [DEBUG] [Thread-159011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:50:13.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:50:13.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:50:13.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:50:13.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:50:13.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:50:13.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:50:13.777 [DEBUG] [Thread-159011] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:50:20.524 [DEBUG] [Thread-159013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:50:23.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:50:23.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:50:23.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:50:24.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 49, 59), 15.46, 34.79, 29.3, 15.88, 15.56, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:50:24.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:49:59
2025-09-29T14:50:24.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:50:24.594 [DEBUG] [Thread-159014] [transport.py] [_log()] starting thread (client mode): 0x30ddf910
2025-09-29T14:50:24.594 [DEBUG] [Thread-159014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:50:24.615 [DEBUG] [Thread-159014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:50:24.615 [INFO] [Thread-159014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:50:24.618 [DEBUG] [Thread-159014] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:50:24.619 [DEBUG] [Thread-159014] [transport.py] [_log()] client lang: <none>
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] server lang: <none>
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] kex follows: False
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] Compression: none
2025-09-29T14:50:24.620 [DEBUG] [Thread-159014] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:50:24.636 [DEBUG] [Thread-159014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:50:24.636 [DEBUG] [Thread-159014] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:50:24.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:50:24.637 [DEBUG] [Thread-159014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:50:24.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:50:24.639 [DEBUG] [Thread-159014] [transport.py] [_log()] userauth is OK
2025-09-29T14:50:24.639 [DEBUG] [Thread-159014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:50:24.639 [DEBUG] [Thread-159014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:50:24.639 [DEBUG] [Thread-159014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:50:24.639 [DEBUG] [Thread-159014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:50:24.663 [INFO] [Thread-159014] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:50:24.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:50:25.289 [DEBUG] [Thread-159014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:50:25.290 [DEBUG] [Thread-159014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:50:25.290 [DEBUG] [Thread-159014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:50:25.330 [DEBUG] [Thread-159014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:50:25.331 [DEBUG] [Thread-159014] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:50:25.333 [DEBUG] [Thread-159014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:50:25.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:50:25.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:50:25.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:50:25.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:50:25.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:50:25.353 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:50:25.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:50:25.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:50:25.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:50:25.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.534790 -999.00  +15.90  15.50     39   +2.30 1 1 1 1 1   888    0 15.75 67.99 ----- 15.6 15.5 183.0 21.6 24.3 -30.2 22.9 -33.4 24.9 -29.8 26.3 -31.2
2025-09-29T14:50:25.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:50:25.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:50:25.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.534790
2025-09-29T14:50:25.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:50:25.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:50:25.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:50:25.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:50:25.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:50:25.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:49:59', tmtdew=15.46, humidity=34.79, cloud=29.3, wind=15.88, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:50:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:50:25.356 [DEBUG] [Thread-159014] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:50:25.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:50:25.450 [DEBUG] [Thread-159017] [transport.py] [_log()] starting thread (client mode): 0x30ddeec0
2025-09-29T14:50:25.450 [DEBUG] [Thread-159017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:50:25.467 [DEBUG] [Thread-159017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:50:25.468 [INFO] [Thread-159017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:50:25.475 [DEBUG] [Thread-159017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] client lang: <none>
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] server lang: <none>
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] kex follows: False
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] Compression: none
2025-09-29T14:50:25.476 [DEBUG] [Thread-159017] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:50:25.535 [DEBUG] [Thread-159017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:50:25.536 [DEBUG] [Thread-159017] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:50:25.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:50:25.537 [DEBUG] [Thread-159017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:50:25.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:50:25.591 [DEBUG] [Thread-159017] [transport.py] [_log()] userauth is OK
2025-09-29T14:50:25.592 [DEBUG] [Thread-159017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:50:25.592 [DEBUG] [Thread-159017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:50:25.592 [DEBUG] [Thread-159017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:50:25.592 [DEBUG] [Thread-159017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:50:25.607 [INFO] [Thread-159017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:50:25.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:50:25.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:50:26.640 [DEBUG] [Thread-159017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:50:26.641 [DEBUG] [Thread-159017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:50:26.688 [DEBUG] [Thread-159017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:50:26.688 [DEBUG] [Thread-159017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:50:26.700 [DEBUG] [Thread-159017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:50:26.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:50:26.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:50:26.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:50:26.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:50:26.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:50:26.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:50:26.735 [DEBUG] [Thread-159017] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:50:35.567 [DEBUG] [Thread-159019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:50:36.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:50:36.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:50:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:50:37.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 50, 31), 15.38, 34.99, 29.3, 16.85, 15.55, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:50:37.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:50:31
2025-09-29T14:50:37.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:50:37.582 [DEBUG] [Thread-159020] [transport.py] [_log()] starting thread (client mode): 0x2e375210
2025-09-29T14:50:37.582 [DEBUG] [Thread-159020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:50:37.603 [DEBUG] [Thread-159020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:50:37.603 [INFO] [Thread-159020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:50:37.606 [DEBUG] [Thread-159020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:50:37.606 [DEBUG] [Thread-159020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:50:37.606 [DEBUG] [Thread-159020] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] client lang: <none>
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] server lang: <none>
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] kex follows: False
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] Compression: none
2025-09-29T14:50:37.607 [DEBUG] [Thread-159020] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:50:37.624 [DEBUG] [Thread-159020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:50:37.625 [DEBUG] [Thread-159020] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:50:37.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:50:37.626 [DEBUG] [Thread-159020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:50:37.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:50:37.627 [DEBUG] [Thread-159020] [transport.py] [_log()] userauth is OK
2025-09-29T14:50:37.628 [DEBUG] [Thread-159020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:50:37.628 [DEBUG] [Thread-159020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:50:37.628 [DEBUG] [Thread-159020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:50:37.628 [DEBUG] [Thread-159020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:50:37.643 [INFO] [Thread-159020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:50:37.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:50:39.296 [DEBUG] [Thread-159020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:50:39.296 [DEBUG] [Thread-159020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:50:39.297 [DEBUG] [Thread-159020] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:50:39.337 [DEBUG] [Thread-159020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:50:39.338 [DEBUG] [Thread-159020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:50:39.341 [DEBUG] [Thread-159020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:50:39.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:50:39.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:50:39.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:50:39.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:50:39.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:50:39.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:50:39.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:50:39.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:50:39.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:50:39.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.534790 -999.00  +15.90  15.50     39   +2.30 1 1 1 1 1   888    0 15.75 67.99 ----- 15.6 15.5 183.0 21.6 24.3 -30.2 22.9 -33.4 24.9 -29.8 26.3 -31.2
2025-09-29T14:50:39.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:50:39.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:50:39.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.534790
2025-09-29T14:50:39.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:50:39.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:50:39.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:50:39.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:50:39.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:50:39.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:50:31', tmtdew=15.38, humidity=34.99, cloud=29.3, wind=16.85, temperature=15.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:50:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:50:39.365 [DEBUG] [Thread-159020] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:50:39.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:50:39.462 [DEBUG] [Thread-159023] [transport.py] [_log()] starting thread (client mode): 0x2e361750
2025-09-29T14:50:39.462 [DEBUG] [Thread-159023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:50:39.477 [DEBUG] [Thread-159023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:50:39.477 [INFO] [Thread-159023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] client lang: <none>
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] server lang: <none>
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] kex follows: False
2025-09-29T14:50:39.485 [DEBUG] [Thread-159023] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:50:39.486 [DEBUG] [Thread-159023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:50:39.486 [DEBUG] [Thread-159023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:50:39.486 [DEBUG] [Thread-159023] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:50:39.486 [DEBUG] [Thread-159023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:50:39.486 [DEBUG] [Thread-159023] [transport.py] [_log()] Compression: none
2025-09-29T14:50:39.486 [DEBUG] [Thread-159023] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:50:39.543 [DEBUG] [Thread-159023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:50:39.543 [DEBUG] [Thread-159023] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:50:39.543 [DEBUG] [Thread-159023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:50:39.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:50:39.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:50:39.600 [DEBUG] [Thread-159023] [transport.py] [_log()] userauth is OK
2025-09-29T14:50:39.600 [DEBUG] [Thread-159023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:50:39.600 [DEBUG] [Thread-159023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:50:39.600 [DEBUG] [Thread-159023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:50:39.600 [DEBUG] [Thread-159023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:50:39.619 [INFO] [Thread-159023] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:50:39.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:50:39.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:50:40.600 [DEBUG] [Thread-159023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:50:40.600 [DEBUG] [Thread-159023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:50:40.648 [DEBUG] [Thread-159023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:50:40.648 [DEBUG] [Thread-159023] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:50:40.657 [DEBUG] [Thread-159023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:50:40.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:50:40.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:50:40.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:50:40.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:50:40.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:50:40.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:50:40.692 [DEBUG] [Thread-159023] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:50:45.319 [DEBUG] [Thread-159025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:50:50.601 [DEBUG] [Thread-159026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:50:50.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:50:50.694 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:50:50.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:50:51.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 50, 31), 15.38, 34.99, 29.3, 16.85, 15.55, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:50:51.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:50:31
2025-09-29T14:50:51.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:50:51.530 [DEBUG] [Thread-159027] [transport.py] [_log()] starting thread (client mode): 0x2e363cd0
2025-09-29T14:50:51.530 [DEBUG] [Thread-159027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:50:51.549 [DEBUG] [Thread-159027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:50:51.549 [INFO] [Thread-159027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:50:51.552 [DEBUG] [Thread-159027] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:50:51.552 [DEBUG] [Thread-159027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] client lang: <none>
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] server lang: <none>
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] kex follows: False
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] Compression: none
2025-09-29T14:50:51.553 [DEBUG] [Thread-159027] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:50:51.571 [DEBUG] [Thread-159027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:50:51.572 [DEBUG] [Thread-159027] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:50:51.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:50:51.573 [DEBUG] [Thread-159027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:50:51.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:50:51.574 [DEBUG] [Thread-159027] [transport.py] [_log()] userauth is OK
2025-09-29T14:50:51.575 [DEBUG] [Thread-159027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:50:51.575 [DEBUG] [Thread-159027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:50:51.575 [DEBUG] [Thread-159027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:50:51.575 [DEBUG] [Thread-159027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:50:51.592 [INFO] [Thread-159027] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:50:51.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:50:52.156 [DEBUG] [Thread-159027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:50:52.156 [DEBUG] [Thread-159027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:50:52.156 [DEBUG] [Thread-159027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:50:52.197 [DEBUG] [Thread-159027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:50:52.198 [DEBUG] [Thread-159027] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:50:52.200 [DEBUG] [Thread-159027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:50:52.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:50:52.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:50:52.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:50:52.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:50:52.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:50:52.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:50:52.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:50:52.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:50:52.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:50:52.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.535137 -999.00  +15.80   9.67     40   +2.30 1 1 1 1 1   888    0 15.88 69.09 ----- 11.8 9.7 179.1 18.3 24.2 -30.2 23.0 -28.6 24.9 -29.7 26.2 -31.0
2025-09-29T14:50:52.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:50:52.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:50:52.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.535137
2025-09-29T14:50:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:50:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:50:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:50:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:50:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:50:52.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:50:31', tmtdew=15.38, humidity=34.99, cloud=29.3, wind=16.85, temperature=15.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:50:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:50:52.217 [DEBUG] [Thread-159027] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:50:52.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:50:52.311 [DEBUG] [Thread-159030] [transport.py] [_log()] starting thread (client mode): 0x30ddfc10
2025-09-29T14:50:52.311 [DEBUG] [Thread-159030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:50:52.327 [DEBUG] [Thread-159030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:50:52.327 [INFO] [Thread-159030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:50:52.334 [DEBUG] [Thread-159030] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:50:52.334 [DEBUG] [Thread-159030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] client lang: <none>
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] server lang: <none>
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] kex follows: False
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] Compression: none
2025-09-29T14:50:52.335 [DEBUG] [Thread-159030] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:50:52.391 [DEBUG] [Thread-159030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:50:52.392 [DEBUG] [Thread-159030] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:50:52.392 [DEBUG] [Thread-159030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:50:52.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:50:52.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:50:52.448 [DEBUG] [Thread-159030] [transport.py] [_log()] userauth is OK
2025-09-29T14:50:52.448 [DEBUG] [Thread-159030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:50:52.448 [DEBUG] [Thread-159030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:50:52.448 [DEBUG] [Thread-159030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:50:52.448 [DEBUG] [Thread-159030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:50:52.468 [INFO] [Thread-159030] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:50:52.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:50:52.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:50:53.478 [DEBUG] [Thread-159030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:50:53.478 [DEBUG] [Thread-159030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:50:53.526 [DEBUG] [Thread-159030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:50:53.526 [DEBUG] [Thread-159030] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:50:53.535 [DEBUG] [Thread-159030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:50:53.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:50:53.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:50:53.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:50:53.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:50:53.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:50:53.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:50:53.568 [DEBUG] [Thread-159030] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:03.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:51:03.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:51:03.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:51:04.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 50, 31), 15.38, 34.99, 29.3, 16.85, 15.55, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:51:04.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:50:31
2025-09-29T14:51:04.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:51:04.443 [DEBUG] [Thread-159032] [transport.py] [_log()] starting thread (client mode): 0x2b9cd030
2025-09-29T14:51:04.444 [DEBUG] [Thread-159032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:04.464 [DEBUG] [Thread-159032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:51:04.464 [INFO] [Thread-159032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] Compression: none
2025-09-29T14:51:04.467 [DEBUG] [Thread-159032] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:04.483 [DEBUG] [Thread-159032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:04.483 [DEBUG] [Thread-159032] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:04.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:51:04.483 [DEBUG] [Thread-159032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:51:04.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:04.484 [DEBUG] [Thread-159032] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:04.484 [DEBUG] [Thread-159032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:04.484 [DEBUG] [Thread-159032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:04.484 [DEBUG] [Thread-159032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:51:04.484 [DEBUG] [Thread-159032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:04.493 [INFO] [Thread-159032] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:04.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:05.253 [DEBUG] [Thread-159032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:05.253 [DEBUG] [Thread-159032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:05.253 [DEBUG] [Thread-159032] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:51:05.294 [DEBUG] [Thread-159032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:05.294 [DEBUG] [Thread-159032] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:05.296 [DEBUG] [Thread-159032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:05.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:05.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:51:05.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:51:05.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:51:05.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:05.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:51:05.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.535137 -999.00  +15.80   9.67     40   +2.30 1 1 1 1 1   888    0 15.88 69.09 ----- 11.8 9.7 179.1 18.3 24.2 -30.2 23.0 -28.6 24.9 -29.7 26.2 -31.0
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.535137
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:51:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:50:31', tmtdew=15.38, humidity=34.99, cloud=29.3, wind=16.85, temperature=15.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:50:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:51:05.309 [DEBUG] [Thread-159032] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:05.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:51:05.394 [DEBUG] [Thread-159035] [transport.py] [_log()] starting thread (client mode): 0x30ddd930
2025-09-29T14:51:05.394 [DEBUG] [Thread-159035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:05.409 [DEBUG] [Thread-159035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:51:05.409 [INFO] [Thread-159035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:51:05.416 [DEBUG] [Thread-159035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:05.416 [DEBUG] [Thread-159035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:51:05.416 [DEBUG] [Thread-159035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:05.416 [DEBUG] [Thread-159035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:05.416 [DEBUG] [Thread-159035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:05.416 [DEBUG] [Thread-159035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:05.416 [DEBUG] [Thread-159035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] Compression: none
2025-09-29T14:51:05.417 [DEBUG] [Thread-159035] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:05.480 [DEBUG] [Thread-159035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:05.480 [DEBUG] [Thread-159035] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:05.481 [DEBUG] [Thread-159035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:51:05.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:51:05.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:05.536 [DEBUG] [Thread-159035] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:05.536 [DEBUG] [Thread-159035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:05.536 [DEBUG] [Thread-159035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:05.536 [DEBUG] [Thread-159035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:51:05.536 [DEBUG] [Thread-159035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:05.550 [INFO] [Thread-159035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:05.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:51:05.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:05.645 [DEBUG] [Thread-159037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:51:06.586 [DEBUG] [Thread-159035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:06.586 [DEBUG] [Thread-159035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:06.634 [DEBUG] [Thread-159035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:06.634 [DEBUG] [Thread-159035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:06.643 [DEBUG] [Thread-159035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:06.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:06.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:51:06.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:51:06.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:06.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:06.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:06.678 [DEBUG] [Thread-159035] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:07.732 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:51:07.734 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:51:16.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:51:16.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:51:16.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:51:17.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 51, 3), 15.49, 34.79, 29.3, 17.47, 15.79, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:51:17.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:51:03
2025-09-29T14:51:17.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:51:17.503 [DEBUG] [Thread-159038] [transport.py] [_log()] starting thread (client mode): 0x2e362110
2025-09-29T14:51:17.504 [DEBUG] [Thread-159038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:17.524 [DEBUG] [Thread-159038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:51:17.524 [INFO] [Thread-159038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:51:17.527 [DEBUG] [Thread-159038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:17.527 [DEBUG] [Thread-159038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:51:17.527 [DEBUG] [Thread-159038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] Compression: none
2025-09-29T14:51:17.528 [DEBUG] [Thread-159038] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:17.546 [DEBUG] [Thread-159038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:17.547 [DEBUG] [Thread-159038] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:17.547 [DEBUG] [Thread-159038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:51:17.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:51:17.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:17.550 [DEBUG] [Thread-159038] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:17.550 [DEBUG] [Thread-159038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:17.550 [DEBUG] [Thread-159038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:17.550 [DEBUG] [Thread-159038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:51:17.550 [DEBUG] [Thread-159038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:17.586 [INFO] [Thread-159038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:17.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:18.356 [DEBUG] [Thread-159038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:18.356 [DEBUG] [Thread-159038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:18.356 [DEBUG] [Thread-159038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:51:18.397 [DEBUG] [Thread-159038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:18.397 [DEBUG] [Thread-159038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:18.400 [DEBUG] [Thread-159038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:18.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:18.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:51:18.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:51:18.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:51:18.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:18.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:51:18.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:18.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:18.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:51:18.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.535137 -999.00  +15.80   9.67     40   +2.30 1 1 1 1 1   888    0 15.88 69.09 ----- 11.8 9.7 179.1 18.3 24.2 -30.2 23.0 -28.6 24.9 -29.7 26.2 -31.0
2025-09-29T14:51:18.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:51:18.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:51:18.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.535137
2025-09-29T14:51:18.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:51:18.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:51:18.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:51:18.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:51:18.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:51:18.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:51:03', tmtdew=15.49, humidity=34.79, cloud=29.3, wind=17.47, temperature=15.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:50:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:51:18.424 [DEBUG] [Thread-159038] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:18.509 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:51:18.518 [DEBUG] [Thread-159041] [transport.py] [_log()] starting thread (client mode): 0x2b9565c0
2025-09-29T14:51:18.519 [DEBUG] [Thread-159041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:18.533 [DEBUG] [Thread-159041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:51:18.533 [INFO] [Thread-159041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:18.541 [DEBUG] [Thread-159041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:18.542 [DEBUG] [Thread-159041] [transport.py] [_log()] Compression: none
2025-09-29T14:51:18.542 [DEBUG] [Thread-159041] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:18.601 [DEBUG] [Thread-159041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:18.602 [DEBUG] [Thread-159041] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:18.602 [DEBUG] [Thread-159041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:51:18.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:51:18.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:18.660 [DEBUG] [Thread-159041] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:18.660 [DEBUG] [Thread-159041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:18.660 [DEBUG] [Thread-159041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:18.660 [DEBUG] [Thread-159041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:51:18.660 [DEBUG] [Thread-159041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:18.679 [INFO] [Thread-159041] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:18.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:51:18.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:19.646 [DEBUG] [Thread-159041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:19.647 [DEBUG] [Thread-159041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:19.694 [DEBUG] [Thread-159041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:19.694 [DEBUG] [Thread-159041] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:19.704 [DEBUG] [Thread-159041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:19.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:19.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:51:19.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:51:19.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:19.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:19.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:19.739 [DEBUG] [Thread-159041] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:20.681 [DEBUG] [Thread-159043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:51:29.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:51:29.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:51:29.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:51:30.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 51, 3), 15.49, 34.79, 29.3, 17.47, 15.79, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:51:30.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:51:03
2025-09-29T14:51:30.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:51:30.564 [DEBUG] [Thread-159044] [transport.py] [_log()] starting thread (client mode): 0x2b96d030
2025-09-29T14:51:30.564 [DEBUG] [Thread-159044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:30.586 [DEBUG] [Thread-159044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:51:30.586 [INFO] [Thread-159044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:51:30.590 [DEBUG] [Thread-159044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:30.590 [DEBUG] [Thread-159044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:51:30.590 [DEBUG] [Thread-159044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:30.590 [DEBUG] [Thread-159044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:30.590 [DEBUG] [Thread-159044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:30.590 [DEBUG] [Thread-159044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:30.590 [DEBUG] [Thread-159044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:30.590 [DEBUG] [Thread-159044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] Compression: none
2025-09-29T14:51:30.591 [DEBUG] [Thread-159044] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:30.608 [DEBUG] [Thread-159044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:30.608 [DEBUG] [Thread-159044] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:30.609 [DEBUG] [Thread-159044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:51:30.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:51:30.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:30.611 [DEBUG] [Thread-159044] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:30.611 [DEBUG] [Thread-159044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:30.611 [DEBUG] [Thread-159044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:30.611 [DEBUG] [Thread-159044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:51:30.611 [DEBUG] [Thread-159044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:30.646 [INFO] [Thread-159044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:30.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:31.279 [DEBUG] [Thread-159044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:31.279 [DEBUG] [Thread-159044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:31.279 [DEBUG] [Thread-159044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:51:31.319 [DEBUG] [Thread-159044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:31.319 [DEBUG] [Thread-159044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:31.322 [DEBUG] [Thread-159044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:31.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:31.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:51:31.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:51:31.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:51:31.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:31.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:51:31.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:31.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:31.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:51:31.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.535484 -999.00  +16.10   8.52     39   +2.40 1 1 1 1 1   888    0 15.77 67.39 ----- 6.9 8.5 194.0 13.5 24.3 -29.7 23.2 -28.5 25.1 -28.9 26.4 -29.4
2025-09-29T14:51:31.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:51:31.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:51:31.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.535484
2025-09-29T14:51:31.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:51:31.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:51:31.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:51:31.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:51:31.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:51:31.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:51:03', tmtdew=15.49, humidity=34.79, cloud=29.3, wind=17.47, temperature=15.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:51:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:51:31.347 [DEBUG] [Thread-159044] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:31.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:51:31.442 [DEBUG] [Thread-159047] [transport.py] [_log()] starting thread (client mode): 0x2b9cc370
2025-09-29T14:51:31.442 [DEBUG] [Thread-159047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:31.458 [DEBUG] [Thread-159047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:51:31.458 [INFO] [Thread-159047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:51:31.466 [DEBUG] [Thread-159047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:31.466 [DEBUG] [Thread-159047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:51:31.466 [DEBUG] [Thread-159047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:31.466 [DEBUG] [Thread-159047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:31.466 [DEBUG] [Thread-159047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:31.466 [DEBUG] [Thread-159047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] Compression: none
2025-09-29T14:51:31.467 [DEBUG] [Thread-159047] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:31.524 [DEBUG] [Thread-159047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:31.524 [DEBUG] [Thread-159047] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:31.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:51:31.525 [DEBUG] [Thread-159047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:51:31.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:31.580 [DEBUG] [Thread-159047] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:31.580 [DEBUG] [Thread-159047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:31.580 [DEBUG] [Thread-159047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:31.580 [DEBUG] [Thread-159047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:51:31.581 [DEBUG] [Thread-159047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:31.599 [INFO] [Thread-159047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:31.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:51:31.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:32.576 [DEBUG] [Thread-159047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:32.576 [DEBUG] [Thread-159047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:32.624 [DEBUG] [Thread-159047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:32.624 [DEBUG] [Thread-159047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:32.633 [DEBUG] [Thread-159047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:32.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:32.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:51:32.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:51:32.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:32.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:32.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:32.664 [DEBUG] [Thread-159047] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:35.726 [DEBUG] [Thread-159049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:51:42.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:51:42.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:51:42.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:51:43.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 51, 35), 15.38, 35.08, 29.3, 13.85, 15.32, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:51:43.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:51:35
2025-09-29T14:51:43.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:51:43.494 [DEBUG] [Thread-159050] [transport.py] [_log()] starting thread (client mode): 0x2b94c8e0
2025-09-29T14:51:43.494 [DEBUG] [Thread-159050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:43.514 [DEBUG] [Thread-159050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:51:43.514 [INFO] [Thread-159050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:51:43.517 [DEBUG] [Thread-159050] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:43.517 [DEBUG] [Thread-159050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:51:43.517 [DEBUG] [Thread-159050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] Compression: none
2025-09-29T14:51:43.518 [DEBUG] [Thread-159050] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:43.535 [DEBUG] [Thread-159050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:43.536 [DEBUG] [Thread-159050] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:43.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:51:43.536 [DEBUG] [Thread-159050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:51:43.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:43.538 [DEBUG] [Thread-159050] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:43.538 [DEBUG] [Thread-159050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:43.538 [DEBUG] [Thread-159050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:43.538 [DEBUG] [Thread-159050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:51:43.538 [DEBUG] [Thread-159050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:43.554 [INFO] [Thread-159050] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:43.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:44.281 [DEBUG] [Thread-159050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:44.281 [DEBUG] [Thread-159050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:44.281 [DEBUG] [Thread-159050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:51:44.322 [DEBUG] [Thread-159050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:44.322 [DEBUG] [Thread-159050] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:44.325 [DEBUG] [Thread-159050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:44.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:44.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:51:44.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:51:44.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:51:44.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:44.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:51:44.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:44.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:51:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.535484 -999.00  +16.10   8.52     39   +2.40 1 1 1 1 1   888    0 15.77 67.39 ----- 6.9 8.5 194.0 13.5 24.3 -29.7 23.2 -28.5 25.1 -28.9 26.4 -29.4
2025-09-29T14:51:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:51:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:51:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.535484
2025-09-29T14:51:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:51:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:51:44.351 [DEBUG] [Thread-159050] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:44.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:51:44.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:51:44.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:51:44.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:51:35', tmtdew=15.38, humidity=35.08, cloud=29.3, wind=13.85, temperature=15.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:51:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:51:44.444 [DEBUG] [Thread-159053] [transport.py] [_log()] starting thread (client mode): 0x2b9cc7f0
2025-09-29T14:51:44.445 [DEBUG] [Thread-159053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:44.460 [DEBUG] [Thread-159053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:51:44.460 [INFO] [Thread-159053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:51:44.467 [DEBUG] [Thread-159053] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:44.467 [DEBUG] [Thread-159053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:51:44.467 [DEBUG] [Thread-159053] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:44.467 [DEBUG] [Thread-159053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:44.467 [DEBUG] [Thread-159053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] Compression: none
2025-09-29T14:51:44.468 [DEBUG] [Thread-159053] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:44.523 [DEBUG] [Thread-159053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:44.524 [DEBUG] [Thread-159053] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:44.524 [DEBUG] [Thread-159053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:51:44.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:51:44.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:44.580 [DEBUG] [Thread-159053] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:44.580 [DEBUG] [Thread-159053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:44.580 [DEBUG] [Thread-159053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:44.580 [DEBUG] [Thread-159053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:51:44.580 [DEBUG] [Thread-159053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:44.599 [INFO] [Thread-159053] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:44.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:51:44.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:45.350 [DEBUG] [Thread-159055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:51:45.595 [DEBUG] [Thread-159053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:45.595 [DEBUG] [Thread-159053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:45.643 [DEBUG] [Thread-159053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:45.643 [DEBUG] [Thread-159053] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:45.653 [DEBUG] [Thread-159053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:45.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:45.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:51:45.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:51:45.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:45.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:45.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:45.687 [DEBUG] [Thread-159053] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:50.759 [DEBUG] [Thread-159056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:51:55.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:51:55.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:51:55.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:51:56.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 51, 35), 15.38, 35.08, 29.3, 13.85, 15.32, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:51:56.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:51:35
2025-09-29T14:51:56.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:51:56.519 [DEBUG] [Thread-159057] [transport.py] [_log()] starting thread (client mode): 0x2b96f100
2025-09-29T14:51:56.519 [DEBUG] [Thread-159057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:56.539 [DEBUG] [Thread-159057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:51:56.539 [INFO] [Thread-159057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:51:56.542 [DEBUG] [Thread-159057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:56.543 [DEBUG] [Thread-159057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:56.544 [DEBUG] [Thread-159057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:56.544 [DEBUG] [Thread-159057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:56.544 [DEBUG] [Thread-159057] [transport.py] [_log()] Compression: none
2025-09-29T14:51:56.544 [DEBUG] [Thread-159057] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:56.561 [DEBUG] [Thread-159057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:56.562 [DEBUG] [Thread-159057] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:56.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:51:56.563 [DEBUG] [Thread-159057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:51:56.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:56.564 [DEBUG] [Thread-159057] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:56.564 [DEBUG] [Thread-159057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:56.565 [DEBUG] [Thread-159057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:56.565 [DEBUG] [Thread-159057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:51:56.565 [DEBUG] [Thread-159057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:56.580 [INFO] [Thread-159057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:56.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:57.314 [DEBUG] [Thread-159057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:57.315 [DEBUG] [Thread-159057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:57.315 [DEBUG] [Thread-159057] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:51:57.356 [DEBUG] [Thread-159057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:57.356 [DEBUG] [Thread-159057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:57.357 [DEBUG] [Thread-159057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:57.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:57.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:51:57.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:51:57.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:51:57.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:57.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:51:57.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.535484 -999.00  +16.10   8.52     39   +2.40 1 1 1 1 1   888    0 15.77 67.39 ----- 6.9 8.5 194.0 13.5 24.3 -29.7 23.2 -28.5 25.1 -28.9 26.4 -29.4
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.535484
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:51:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:51:35', tmtdew=15.38, humidity=35.08, cloud=29.3, wind=13.85, temperature=15.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:51:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:51:57.366 [DEBUG] [Thread-159057] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:51:57.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:51:57.448 [DEBUG] [Thread-159060] [transport.py] [_log()] starting thread (client mode): 0x2b96e5f0
2025-09-29T14:51:57.448 [DEBUG] [Thread-159060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:51:57.463 [DEBUG] [Thread-159060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:51:57.463 [INFO] [Thread-159060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] client lang: <none>
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] server lang: <none>
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] kex follows: False
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] Compression: none
2025-09-29T14:51:57.471 [DEBUG] [Thread-159060] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:51:57.528 [DEBUG] [Thread-159060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:51:57.529 [DEBUG] [Thread-159060] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:51:57.530 [DEBUG] [Thread-159060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:51:57.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:51:57.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:51:57.584 [DEBUG] [Thread-159060] [transport.py] [_log()] userauth is OK
2025-09-29T14:51:57.584 [DEBUG] [Thread-159060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:51:57.585 [DEBUG] [Thread-159060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:51:57.585 [DEBUG] [Thread-159060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:51:57.585 [DEBUG] [Thread-159060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:51:57.603 [INFO] [Thread-159060] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:51:57.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:51:57.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:51:58.637 [DEBUG] [Thread-159060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:51:58.638 [DEBUG] [Thread-159060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:51:58.685 [DEBUG] [Thread-159060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:51:58.685 [DEBUG] [Thread-159060] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:51:58.693 [DEBUG] [Thread-159060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:51:58.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:51:58.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:51:58.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:51:58.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:51:58.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:51:58.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:51:58.727 [DEBUG] [Thread-159060] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:05.801 [DEBUG] [Thread-159062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:52:07.872 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:52:07.873 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:52:08.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:52:08.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:52:08.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:52:09.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 51, 35), 15.38, 35.08, 29.3, 13.85, 15.32, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:52:09.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:51:35
2025-09-29T14:52:09.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:52:09.601 [DEBUG] [Thread-159063] [transport.py] [_log()] starting thread (client mode): 0x30ddd5d0
2025-09-29T14:52:09.601 [DEBUG] [Thread-159063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:52:09.621 [DEBUG] [Thread-159063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:52:09.621 [INFO] [Thread-159063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] client lang: <none>
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] server lang: <none>
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] kex follows: False
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] Compression: none
2025-09-29T14:52:09.624 [DEBUG] [Thread-159063] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:52:09.642 [DEBUG] [Thread-159063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:52:09.642 [DEBUG] [Thread-159063] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:52:09.642 [DEBUG] [Thread-159063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:52:09.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:52:09.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:52:09.643 [DEBUG] [Thread-159063] [transport.py] [_log()] userauth is OK
2025-09-29T14:52:09.643 [DEBUG] [Thread-159063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:52:09.643 [DEBUG] [Thread-159063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:52:09.643 [DEBUG] [Thread-159063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:52:09.643 [DEBUG] [Thread-159063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:52:09.652 [INFO] [Thread-159063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:52:09.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:52:10.266 [DEBUG] [Thread-159063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:52:10.266 [DEBUG] [Thread-159063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:52:10.267 [DEBUG] [Thread-159063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:52:10.307 [DEBUG] [Thread-159063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:52:10.308 [DEBUG] [Thread-159063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:52:10.310 [DEBUG] [Thread-159063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:52:10.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:52:10.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:52:10.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:52:10.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:52:10.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:52:10.325 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:52:10.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:52:10.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:52:10.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:52:10.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.535832 -999.00  +16.30   3.03     39   +2.50 1 1 1 1 1   888    0 16.11 76.52 ----- 7.9 3.0 10.6 13.6 24.3 -28.7 23.2 -28.9 25.0 -27.9 26.4 -29.2
2025-09-29T14:52:10.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:52:10.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:52:10.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.535832
2025-09-29T14:52:10.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:52:10.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:52:10.327 [DEBUG] [Thread-159063] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:10.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:52:10.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:52:10.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:52:10.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:51:35', tmtdew=15.38, humidity=35.08, cloud=29.3, wind=13.85, temperature=15.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:51:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:52:10.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:52:10.422 [DEBUG] [Thread-159066] [transport.py] [_log()] starting thread (client mode): 0x2b954130
2025-09-29T14:52:10.423 [DEBUG] [Thread-159066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:52:10.437 [DEBUG] [Thread-159066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:52:10.438 [INFO] [Thread-159066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:52:10.445 [DEBUG] [Thread-159066] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:52:10.445 [DEBUG] [Thread-159066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:52:10.445 [DEBUG] [Thread-159066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:52:10.445 [DEBUG] [Thread-159066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:10.445 [DEBUG] [Thread-159066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] client lang: <none>
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] server lang: <none>
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] kex follows: False
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] Compression: none
2025-09-29T14:52:10.446 [DEBUG] [Thread-159066] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:52:10.504 [DEBUG] [Thread-159066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:52:10.504 [DEBUG] [Thread-159066] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:52:10.505 [DEBUG] [Thread-159066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:52:10.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:52:10.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:52:10.560 [DEBUG] [Thread-159066] [transport.py] [_log()] userauth is OK
2025-09-29T14:52:10.561 [DEBUG] [Thread-159066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:52:10.561 [DEBUG] [Thread-159066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:52:10.561 [DEBUG] [Thread-159066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:52:10.561 [DEBUG] [Thread-159066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:52:10.583 [INFO] [Thread-159066] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:52:10.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:52:10.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:52:11.556 [DEBUG] [Thread-159066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:52:11.557 [DEBUG] [Thread-159066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:52:11.604 [DEBUG] [Thread-159066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:52:11.604 [DEBUG] [Thread-159066] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:52:11.613 [DEBUG] [Thread-159066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:52:11.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:52:11.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:52:11.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:52:11.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:52:11.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:52:11.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:52:11.648 [DEBUG] [Thread-159066] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:20.828 [DEBUG] [Thread-159068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:52:21.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:52:21.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:52:21.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:52:22.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 52, 7), 15.32, 35.18, 29.3, 12.93, 15.2, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:52:22.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:52:07
2025-09-29T14:52:22.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:52:22.499 [DEBUG] [Thread-159069] [transport.py] [_log()] starting thread (client mode): 0x2b957370
2025-09-29T14:52:22.499 [DEBUG] [Thread-159069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:52:22.520 [DEBUG] [Thread-159069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:52:22.520 [INFO] [Thread-159069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] client lang: <none>
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] server lang: <none>
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] kex follows: False
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] Compression: none
2025-09-29T14:52:22.524 [DEBUG] [Thread-159069] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:52:22.539 [DEBUG] [Thread-159069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:52:22.540 [DEBUG] [Thread-159069] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:52:22.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:52:22.540 [DEBUG] [Thread-159069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:52:22.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:52:22.542 [DEBUG] [Thread-159069] [transport.py] [_log()] userauth is OK
2025-09-29T14:52:22.542 [DEBUG] [Thread-159069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:52:22.542 [DEBUG] [Thread-159069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:52:22.542 [DEBUG] [Thread-159069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:52:22.542 [DEBUG] [Thread-159069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:52:22.556 [INFO] [Thread-159069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:52:22.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:52:23.322 [DEBUG] [Thread-159069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:52:23.323 [DEBUG] [Thread-159069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:52:23.323 [DEBUG] [Thread-159069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:52:23.363 [DEBUG] [Thread-159069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:52:23.363 [DEBUG] [Thread-159069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:52:23.365 [DEBUG] [Thread-159069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:52:23.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:52:23.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:52:23.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:52:23.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:52:23.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:52:23.388 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:52:23.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:52:23.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:52:23.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:52:23.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.535832 -999.00  +16.30   3.03     39   +2.50 1 1 1 1 1   888    0 16.11 76.52 ----- 7.9 3.0 10.6 13.6 24.3 -28.7 23.2 -28.9 25.0 -27.9 26.4 -29.2
2025-09-29T14:52:23.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:52:23.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:52:23.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.535832
2025-09-29T14:52:23.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:52:23.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:52:23.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:52:23.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:52:23.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:52:23.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:52:07', tmtdew=15.32, humidity=35.18, cloud=29.3, wind=12.93, temperature=15.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:51:35.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:52:23.390 [DEBUG] [Thread-159069] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:23.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:52:23.479 [DEBUG] [Thread-159072] [transport.py] [_log()] starting thread (client mode): 0x2b94d270
2025-09-29T14:52:23.479 [DEBUG] [Thread-159072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:52:23.494 [DEBUG] [Thread-159072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:52:23.494 [INFO] [Thread-159072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:52:23.501 [DEBUG] [Thread-159072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] client lang: <none>
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] server lang: <none>
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] kex follows: False
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] Compression: none
2025-09-29T14:52:23.502 [DEBUG] [Thread-159072] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:52:23.559 [DEBUG] [Thread-159072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:52:23.560 [DEBUG] [Thread-159072] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:52:23.560 [DEBUG] [Thread-159072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:52:23.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:52:23.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:52:23.620 [DEBUG] [Thread-159072] [transport.py] [_log()] userauth is OK
2025-09-29T14:52:23.620 [DEBUG] [Thread-159072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:52:23.620 [DEBUG] [Thread-159072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:52:23.620 [DEBUG] [Thread-159072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:52:23.620 [DEBUG] [Thread-159072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:52:23.634 [INFO] [Thread-159072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:52:23.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:52:23.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:52:24.656 [DEBUG] [Thread-159072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:52:24.656 [DEBUG] [Thread-159072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:52:24.705 [DEBUG] [Thread-159072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:52:24.705 [DEBUG] [Thread-159072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:52:24.714 [DEBUG] [Thread-159072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:52:24.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:52:24.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:52:24.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:52:24.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:52:24.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:52:24.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:52:24.749 [DEBUG] [Thread-159072] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:34.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:52:34.743 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:52:34.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:52:35.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 52, 7), 15.32, 35.18, 29.3, 12.93, 15.2, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:52:35.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:52:07
2025-09-29T14:52:35.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:52:35.579 [DEBUG] [Thread-159074] [transport.py] [_log()] starting thread (client mode): 0x2e3611b0
2025-09-29T14:52:35.579 [DEBUG] [Thread-159074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:52:35.599 [DEBUG] [Thread-159074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:52:35.599 [INFO] [Thread-159074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:52:35.602 [DEBUG] [Thread-159074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:52:35.602 [DEBUG] [Thread-159074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:52:35.602 [DEBUG] [Thread-159074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:52:35.602 [DEBUG] [Thread-159074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:35.602 [DEBUG] [Thread-159074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:35.602 [DEBUG] [Thread-159074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] client lang: <none>
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] server lang: <none>
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] kex follows: False
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:52:35.603 [DEBUG] [Thread-159074] [transport.py] [_log()] Compression: none
2025-09-29T14:52:35.604 [DEBUG] [Thread-159074] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:52:35.622 [DEBUG] [Thread-159074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:52:35.622 [DEBUG] [Thread-159074] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:52:35.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:52:35.624 [DEBUG] [Thread-159074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:52:35.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:52:35.626 [DEBUG] [Thread-159074] [transport.py] [_log()] userauth is OK
2025-09-29T14:52:35.626 [DEBUG] [Thread-159074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:52:35.626 [DEBUG] [Thread-159074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:52:35.626 [DEBUG] [Thread-159074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:52:35.626 [DEBUG] [Thread-159074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:52:35.644 [INFO] [Thread-159074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:52:35.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:52:36.126 [DEBUG] [Thread-159076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:52:36.232 [DEBUG] [Thread-159074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:52:36.232 [DEBUG] [Thread-159074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:52:36.233 [DEBUG] [Thread-159074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:52:36.273 [DEBUG] [Thread-159074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:52:36.273 [DEBUG] [Thread-159074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:52:36.276 [DEBUG] [Thread-159074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:52:36.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:52:36.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:52:36.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:52:36.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:52:36.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:52:36.293 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:52:36.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:52:36.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:52:36.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:52:36.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.536179 -999.00  +16.40   7.39     39   +2.50 1 1 1 1 1   888    0 16.18 70.90 ----- 7.3 7.4 187.6 17.0 24.3 -28.9 23.4 -28.4 25.1 -28.5 26.4 -28.7
2025-09-29T14:52:36.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:52:36.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:52:36.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.536179
2025-09-29T14:52:36.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:52:36.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:52:36.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:52:36.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:52:36.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:52:36.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:52:07', tmtdew=15.32, humidity=35.18, cloud=29.3, wind=12.93, temperature=15.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:52:05.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:52:36.295 [DEBUG] [Thread-159074] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:36.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:52:36.383 [DEBUG] [Thread-159078] [transport.py] [_log()] starting thread (client mode): 0x2e361420
2025-09-29T14:52:36.383 [DEBUG] [Thread-159078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:52:36.397 [DEBUG] [Thread-159078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:52:36.397 [INFO] [Thread-159078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:52:36.405 [DEBUG] [Thread-159078] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:52:36.405 [DEBUG] [Thread-159078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:52:36.405 [DEBUG] [Thread-159078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] client lang: <none>
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] server lang: <none>
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] kex follows: False
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] Compression: none
2025-09-29T14:52:36.406 [DEBUG] [Thread-159078] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:52:36.464 [DEBUG] [Thread-159078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:52:36.464 [DEBUG] [Thread-159078] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:52:36.465 [DEBUG] [Thread-159078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:52:36.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:52:36.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:52:36.520 [DEBUG] [Thread-159078] [transport.py] [_log()] userauth is OK
2025-09-29T14:52:36.521 [DEBUG] [Thread-159078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:52:36.521 [DEBUG] [Thread-159078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:52:36.521 [DEBUG] [Thread-159078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:52:36.521 [DEBUG] [Thread-159078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:52:36.539 [INFO] [Thread-159078] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:52:36.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:52:36.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:52:37.548 [DEBUG] [Thread-159078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:52:37.549 [DEBUG] [Thread-159078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:52:37.596 [DEBUG] [Thread-159078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:52:37.596 [DEBUG] [Thread-159078] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:52:37.605 [DEBUG] [Thread-159078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:52:37.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:52:37.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:52:37.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:52:37.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:52:37.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:52:37.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:52:37.640 [DEBUG] [Thread-159078] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:45.384 [DEBUG] [Thread-159080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:52:47.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:52:47.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:52:47.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:52:48.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 52, 39), 15.03, 35.88, 29.3, 17.34, 15.1, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:52:48.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:52:39
2025-09-29T14:52:48.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:52:48.464 [DEBUG] [Thread-159081] [transport.py] [_log()] starting thread (client mode): 0x2b96d690
2025-09-29T14:52:48.464 [DEBUG] [Thread-159081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:52:48.484 [DEBUG] [Thread-159081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:52:48.485 [INFO] [Thread-159081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:52:48.486 [DEBUG] [Thread-159081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:52:48.486 [DEBUG] [Thread-159081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:52:48.486 [DEBUG] [Thread-159081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:52:48.486 [DEBUG] [Thread-159081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:48.486 [DEBUG] [Thread-159081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] client lang: <none>
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] server lang: <none>
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] kex follows: False
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] Compression: none
2025-09-29T14:52:48.487 [DEBUG] [Thread-159081] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:52:48.495 [DEBUG] [Thread-159081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:52:48.495 [DEBUG] [Thread-159081] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:52:48.495 [DEBUG] [Thread-159081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:52:48.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:52:48.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:52:48.497 [DEBUG] [Thread-159081] [transport.py] [_log()] userauth is OK
2025-09-29T14:52:48.497 [DEBUG] [Thread-159081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:52:48.497 [DEBUG] [Thread-159081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:52:48.497 [DEBUG] [Thread-159081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:52:48.498 [DEBUG] [Thread-159081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:52:48.515 [INFO] [Thread-159081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:52:48.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:52:49.254 [DEBUG] [Thread-159081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:52:49.255 [DEBUG] [Thread-159081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:52:49.255 [DEBUG] [Thread-159081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:52:49.295 [DEBUG] [Thread-159081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:52:49.296 [DEBUG] [Thread-159081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:52:49.298 [DEBUG] [Thread-159081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:52:49.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:52:49.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:52:49.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:52:49.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:52:49.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:52:49.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:52:49.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:52:49.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:52:49.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:52:49.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.536179 -999.00  +16.40   7.39     39   +2.50 1 1 1 1 1   888    0 16.18 70.90 ----- 7.3 7.4 187.6 17.0 24.3 -28.9 23.4 -28.4 25.1 -28.5 26.4 -28.7
2025-09-29T14:52:49.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:52:49.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:52:49.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.536179
2025-09-29T14:52:49.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:52:49.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:52:49.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:52:49.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:52:49.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:52:49.324 [DEBUG] [Thread-159081] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:49.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:52:39', tmtdew=15.03, humidity=35.88, cloud=29.3, wind=17.34, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:52:05.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:52:49.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:52:49.419 [DEBUG] [Thread-159084] [transport.py] [_log()] starting thread (client mode): 0x2e3fab60
2025-09-29T14:52:49.419 [DEBUG] [Thread-159084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:52:49.434 [DEBUG] [Thread-159084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:52:49.434 [INFO] [Thread-159084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:52:49.441 [DEBUG] [Thread-159084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] client lang: <none>
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] server lang: <none>
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] kex follows: False
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] Compression: none
2025-09-29T14:52:49.442 [DEBUG] [Thread-159084] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:52:49.500 [DEBUG] [Thread-159084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:52:49.501 [DEBUG] [Thread-159084] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:52:49.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:52:49.502 [DEBUG] [Thread-159084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:52:49.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:52:49.557 [DEBUG] [Thread-159084] [transport.py] [_log()] userauth is OK
2025-09-29T14:52:49.557 [DEBUG] [Thread-159084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:52:49.557 [DEBUG] [Thread-159084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:52:49.557 [DEBUG] [Thread-159084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:52:49.557 [DEBUG] [Thread-159084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:52:49.577 [INFO] [Thread-159084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:52:49.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:52:49.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:52:50.605 [DEBUG] [Thread-159084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:52:50.605 [DEBUG] [Thread-159084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:52:50.654 [DEBUG] [Thread-159084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:52:50.655 [DEBUG] [Thread-159084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:52:50.663 [DEBUG] [Thread-159084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:52:50.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:52:50.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:52:50.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:52:50.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:52:50.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:52:50.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:52:50.698 [DEBUG] [Thread-159084] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:52:51.172 [DEBUG] [Thread-159086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:53:00.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:53:00.701 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:53:00.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:53:01.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 52, 39), 15.03, 35.88, 29.3, 17.34, 15.1, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:53:01.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:52:39
2025-09-29T14:53:01.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:53:01.529 [DEBUG] [Thread-159087] [transport.py] [_log()] starting thread (client mode): 0x2e3fb280
2025-09-29T14:53:01.529 [DEBUG] [Thread-159087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:01.549 [DEBUG] [Thread-159087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:53:01.549 [INFO] [Thread-159087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:53:01.552 [DEBUG] [Thread-159087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:01.552 [DEBUG] [Thread-159087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:53:01.552 [DEBUG] [Thread-159087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:01.552 [DEBUG] [Thread-159087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:01.552 [DEBUG] [Thread-159087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:01.552 [DEBUG] [Thread-159087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] Compression: none
2025-09-29T14:53:01.553 [DEBUG] [Thread-159087] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:01.572 [DEBUG] [Thread-159087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:01.572 [DEBUG] [Thread-159087] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:01.573 [DEBUG] [Thread-159087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:53:01.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:53:01.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:01.575 [DEBUG] [Thread-159087] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:01.575 [DEBUG] [Thread-159087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:01.575 [DEBUG] [Thread-159087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:01.575 [DEBUG] [Thread-159087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:53:01.575 [DEBUG] [Thread-159087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:01.593 [INFO] [Thread-159087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:01.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:02.315 [DEBUG] [Thread-159087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:02.316 [DEBUG] [Thread-159087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:02.316 [DEBUG] [Thread-159087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:53:02.356 [DEBUG] [Thread-159087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:02.357 [DEBUG] [Thread-159087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:02.359 [DEBUG] [Thread-159087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:02.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:02.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:53:02.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:53:02.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:53:02.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:02.383 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:53:02.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:02.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:02.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:53:02.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.536179 -999.00  +16.40   7.39     39   +2.50 1 1 1 1 1   888    0 16.18 70.90 ----- 7.3 7.4 187.6 17.0 24.3 -28.9 23.4 -28.4 25.1 -28.5 26.4 -28.7
2025-09-29T14:53:02.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:53:02.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:53:02.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.536179
2025-09-29T14:53:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:53:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:53:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:53:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:53:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:53:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:52:39', tmtdew=15.03, humidity=35.88, cloud=29.3, wind=17.34, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:52:05.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:53:02.386 [DEBUG] [Thread-159087] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:02.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:53:02.480 [DEBUG] [Thread-159090] [transport.py] [_log()] starting thread (client mode): 0x2b956e00
2025-09-29T14:53:02.480 [DEBUG] [Thread-159090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:02.494 [DEBUG] [Thread-159090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:53:02.494 [INFO] [Thread-159090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:53:02.502 [DEBUG] [Thread-159090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:02.502 [DEBUG] [Thread-159090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:53:02.502 [DEBUG] [Thread-159090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:02.502 [DEBUG] [Thread-159090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:02.503 [DEBUG] [Thread-159090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:02.504 [DEBUG] [Thread-159090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:02.504 [DEBUG] [Thread-159090] [transport.py] [_log()] Compression: none
2025-09-29T14:53:02.505 [DEBUG] [Thread-159090] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:02.561 [DEBUG] [Thread-159090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:02.561 [DEBUG] [Thread-159090] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:02.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:53:02.562 [DEBUG] [Thread-159090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:53:02.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:02.616 [DEBUG] [Thread-159090] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:02.617 [DEBUG] [Thread-159090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:02.617 [DEBUG] [Thread-159090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:02.617 [DEBUG] [Thread-159090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:53:02.617 [DEBUG] [Thread-159090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:02.636 [INFO] [Thread-159090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:02.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:53:02.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:03.659 [DEBUG] [Thread-159090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:03.659 [DEBUG] [Thread-159090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:03.707 [DEBUG] [Thread-159090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:03.707 [DEBUG] [Thread-159090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:03.716 [DEBUG] [Thread-159090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:03.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:03.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:53:03.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:53:03.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:03.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:03.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:03.755 [DEBUG] [Thread-159090] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:06.218 [DEBUG] [Thread-159092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:53:08.014 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:53:08.015 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:53:13.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:53:13.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:53:13.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:53:14.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 52, 39), 15.03, 35.88, 29.3, 17.34, 15.1, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:53:14.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:52:39
2025-09-29T14:53:14.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:53:14.585 [DEBUG] [Thread-159093] [transport.py] [_log()] starting thread (client mode): 0x2b94c640
2025-09-29T14:53:14.585 [DEBUG] [Thread-159093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:14.606 [DEBUG] [Thread-159093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:53:14.606 [INFO] [Thread-159093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] Compression: none
2025-09-29T14:53:14.607 [DEBUG] [Thread-159093] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:14.615 [DEBUG] [Thread-159093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:14.616 [DEBUG] [Thread-159093] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:14.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:53:14.616 [DEBUG] [Thread-159093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:53:14.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:14.617 [DEBUG] [Thread-159093] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:14.617 [DEBUG] [Thread-159093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:14.617 [DEBUG] [Thread-159093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:14.617 [DEBUG] [Thread-159093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:53:14.617 [DEBUG] [Thread-159093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:14.629 [INFO] [Thread-159093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:14.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:15.251 [DEBUG] [Thread-159093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:15.252 [DEBUG] [Thread-159093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:15.252 [DEBUG] [Thread-159093] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:53:15.292 [DEBUG] [Thread-159093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:15.292 [DEBUG] [Thread-159093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:15.294 [DEBUG] [Thread-159093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:15.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:15.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:53:15.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:53:15.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:53:15.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:15.309 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:53:15.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:15.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:15.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:53:15.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.536526 -999.00  +16.50  15.18     38   +2.40 1 1 1 1 1   888    0 15.80 65.27 ----- 5.4 15.2 184.2 19.4 24.5 -30.0 23.2 -29.6 25.2 -28.9 26.4 -31.9
2025-09-29T14:53:15.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:53:15.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:53:15.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.536526
2025-09-29T14:53:15.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:53:15.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:53:15.311 [DEBUG] [Thread-159093] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:15.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:53:15.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:53:15.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:53:15.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:52:39', tmtdew=15.03, humidity=35.88, cloud=29.3, wind=17.34, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:52:35.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:53:15.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:53:15.403 [DEBUG] [Thread-159096] [transport.py] [_log()] starting thread (client mode): 0x2b956e30
2025-09-29T14:53:15.403 [DEBUG] [Thread-159096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:15.418 [DEBUG] [Thread-159096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:53:15.419 [INFO] [Thread-159096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:53:15.426 [DEBUG] [Thread-159096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:15.426 [DEBUG] [Thread-159096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:53:15.426 [DEBUG] [Thread-159096] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:15.426 [DEBUG] [Thread-159096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:15.427 [DEBUG] [Thread-159096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:15.428 [DEBUG] [Thread-159096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:15.428 [DEBUG] [Thread-159096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:15.428 [DEBUG] [Thread-159096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:15.428 [DEBUG] [Thread-159096] [transport.py] [_log()] Compression: none
2025-09-29T14:53:15.428 [DEBUG] [Thread-159096] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:15.486 [DEBUG] [Thread-159096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:15.486 [DEBUG] [Thread-159096] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:15.487 [DEBUG] [Thread-159096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:53:15.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:53:15.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:15.545 [DEBUG] [Thread-159096] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:15.545 [DEBUG] [Thread-159096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:15.545 [DEBUG] [Thread-159096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:15.546 [DEBUG] [Thread-159096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:53:15.546 [DEBUG] [Thread-159096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:15.565 [INFO] [Thread-159096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:15.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:53:15.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:16.548 [DEBUG] [Thread-159096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:16.549 [DEBUG] [Thread-159096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:16.596 [DEBUG] [Thread-159096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:16.596 [DEBUG] [Thread-159096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:16.605 [DEBUG] [Thread-159096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:16.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:16.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:53:16.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:53:16.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:16.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:16.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:16.639 [DEBUG] [Thread-159096] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:21.247 [DEBUG] [Thread-159098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:53:26.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:53:26.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:53:26.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:53:27.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 53, 11), 15.0, 35.94, 29.3, 16.71, 15.07, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:53:27.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:53:11
2025-09-29T14:53:27.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:53:27.462 [DEBUG] [Thread-159099] [transport.py] [_log()] starting thread (client mode): 0x30ddffd0
2025-09-29T14:53:27.462 [DEBUG] [Thread-159099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:27.481 [DEBUG] [Thread-159099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:53:27.482 [INFO] [Thread-159099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:27.484 [DEBUG] [Thread-159099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:27.485 [DEBUG] [Thread-159099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:27.485 [DEBUG] [Thread-159099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:27.485 [DEBUG] [Thread-159099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:27.485 [DEBUG] [Thread-159099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:27.485 [DEBUG] [Thread-159099] [transport.py] [_log()] Compression: none
2025-09-29T14:53:27.485 [DEBUG] [Thread-159099] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:27.496 [DEBUG] [Thread-159099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:27.497 [DEBUG] [Thread-159099] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:27.497 [DEBUG] [Thread-159099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:53:27.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:53:27.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:27.499 [DEBUG] [Thread-159099] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:27.499 [DEBUG] [Thread-159099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:27.499 [DEBUG] [Thread-159099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:27.499 [DEBUG] [Thread-159099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:53:27.499 [DEBUG] [Thread-159099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:27.523 [INFO] [Thread-159099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:27.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:28.273 [DEBUG] [Thread-159099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:28.274 [DEBUG] [Thread-159099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:28.274 [DEBUG] [Thread-159099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:53:28.314 [DEBUG] [Thread-159099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:28.314 [DEBUG] [Thread-159099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:28.317 [DEBUG] [Thread-159099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:28.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:28.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:53:28.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:53:28.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:53:28.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:28.343 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:53:28.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:28.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:28.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:53:28.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.536526 -999.00  +16.50  15.18     38   +2.40 1 1 1 1 1   888    0 15.80 65.27 ----- 5.4 15.2 184.2 19.4 24.5 -30.0 23.2 -29.6 25.2 -28.9 26.4 -31.9
2025-09-29T14:53:28.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:53:28.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:53:28.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.536526
2025-09-29T14:53:28.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:53:28.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:53:28.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:53:28.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:53:28.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:53:28.345 [DEBUG] [Thread-159099] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:28.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:53:11', tmtdew=15.0, humidity=35.94, cloud=29.3, wind=16.71, temperature=15.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:52:35.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:53:28.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:53:28.442 [DEBUG] [Thread-159102] [transport.py] [_log()] starting thread (client mode): 0x2b96fb20
2025-09-29T14:53:28.442 [DEBUG] [Thread-159102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:28.457 [DEBUG] [Thread-159102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:53:28.457 [INFO] [Thread-159102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:28.465 [DEBUG] [Thread-159102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:28.466 [DEBUG] [Thread-159102] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:28.466 [DEBUG] [Thread-159102] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:28.466 [DEBUG] [Thread-159102] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:28.466 [DEBUG] [Thread-159102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:28.466 [DEBUG] [Thread-159102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:28.466 [DEBUG] [Thread-159102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:28.466 [DEBUG] [Thread-159102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:28.466 [DEBUG] [Thread-159102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:28.467 [DEBUG] [Thread-159102] [transport.py] [_log()] Compression: none
2025-09-29T14:53:28.467 [DEBUG] [Thread-159102] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:28.528 [DEBUG] [Thread-159102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:28.528 [DEBUG] [Thread-159102] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:28.528 [DEBUG] [Thread-159102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:53:28.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:53:28.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:28.585 [DEBUG] [Thread-159102] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:28.585 [DEBUG] [Thread-159102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:28.585 [DEBUG] [Thread-159102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:28.585 [DEBUG] [Thread-159102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:53:28.585 [DEBUG] [Thread-159102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:28.602 [INFO] [Thread-159102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:28.603 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:53:28.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:29.615 [DEBUG] [Thread-159102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:29.615 [DEBUG] [Thread-159102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:29.663 [DEBUG] [Thread-159102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:29.663 [DEBUG] [Thread-159102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:29.671 [DEBUG] [Thread-159102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:29.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:29.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:53:29.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:53:29.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:29.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:29.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:29.703 [DEBUG] [Thread-159102] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:36.296 [DEBUG] [Thread-159104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:53:39.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:53:39.706 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:53:39.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:53:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 53, 11), 15.0, 35.94, 29.3, 16.71, 15.07, 0, 0, 0, 0, 0, 0),)
2025-09-29T14:53:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:53:11
2025-09-29T14:53:40.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:53:40.529 [DEBUG] [Thread-159105] [transport.py] [_log()] starting thread (client mode): 0x2b9574f0
2025-09-29T14:53:40.529 [DEBUG] [Thread-159105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:40.549 [DEBUG] [Thread-159105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:53:40.549 [INFO] [Thread-159105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:53:40.552 [DEBUG] [Thread-159105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:40.552 [DEBUG] [Thread-159105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:53:40.552 [DEBUG] [Thread-159105] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:40.552 [DEBUG] [Thread-159105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:40.552 [DEBUG] [Thread-159105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] Compression: none
2025-09-29T14:53:40.553 [DEBUG] [Thread-159105] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:40.569 [DEBUG] [Thread-159105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:40.570 [DEBUG] [Thread-159105] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:40.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:53:40.571 [DEBUG] [Thread-159105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:53:40.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:40.580 [DEBUG] [Thread-159105] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:40.581 [DEBUG] [Thread-159105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:40.581 [DEBUG] [Thread-159105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:40.581 [DEBUG] [Thread-159105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:53:40.581 [DEBUG] [Thread-159105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:40.601 [INFO] [Thread-159105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:40.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:41.202 [DEBUG] [Thread-159105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:41.202 [DEBUG] [Thread-159105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:41.202 [DEBUG] [Thread-159105] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:53:41.243 [DEBUG] [Thread-159105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:41.244 [DEBUG] [Thread-159105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:41.247 [DEBUG] [Thread-159105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:41.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:41.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:53:41.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:53:41.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:53:41.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:41.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:53:41.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:41.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:41.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:53:41.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.536873 -999.00  +16.40  14.90     38   +2.20 1 1 1 1 1   888    0 15.40 64.70 ----- 15.2 14.9 188.8 19.6 24.4 -30.6 23.1 -32.9 25.1 -29.8 26.4 -31.9
2025-09-29T14:53:41.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:53:41.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:53:41.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.536873
2025-09-29T14:53:41.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:53:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:53:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:53:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:53:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:53:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:53:11', tmtdew=15.0, humidity=35.94, cloud=29.3, wind=16.71, temperature=15.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:53:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:53:41.272 [DEBUG] [Thread-159105] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:41.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:53:41.366 [DEBUG] [Thread-159108] [transport.py] [_log()] starting thread (client mode): 0x30ddf940
2025-09-29T14:53:41.367 [DEBUG] [Thread-159108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:41.381 [DEBUG] [Thread-159108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:53:41.382 [INFO] [Thread-159108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:53:41.389 [DEBUG] [Thread-159108] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:41.389 [DEBUG] [Thread-159108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:53:41.389 [DEBUG] [Thread-159108] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:41.390 [DEBUG] [Thread-159108] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:41.391 [DEBUG] [Thread-159108] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:41.391 [DEBUG] [Thread-159108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:41.391 [DEBUG] [Thread-159108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:41.391 [DEBUG] [Thread-159108] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:41.391 [DEBUG] [Thread-159108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:41.391 [DEBUG] [Thread-159108] [transport.py] [_log()] Compression: none
2025-09-29T14:53:41.391 [DEBUG] [Thread-159108] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:41.449 [DEBUG] [Thread-159108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:41.450 [DEBUG] [Thread-159108] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:41.450 [DEBUG] [Thread-159108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:53:41.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:53:41.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:41.505 [DEBUG] [Thread-159108] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:41.505 [DEBUG] [Thread-159108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:41.506 [DEBUG] [Thread-159108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:41.506 [DEBUG] [Thread-159108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:53:41.506 [DEBUG] [Thread-159108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:41.524 [INFO] [Thread-159108] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:41.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:53:41.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:42.515 [DEBUG] [Thread-159108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:42.515 [DEBUG] [Thread-159108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:42.563 [DEBUG] [Thread-159108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:42.563 [DEBUG] [Thread-159108] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:42.572 [DEBUG] [Thread-159108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:42.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:42.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:53:42.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:53:42.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:42.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:42.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:42.607 [DEBUG] [Thread-159108] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:45.424 [DEBUG] [Thread-159110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:53:51.338 [DEBUG] [Thread-159111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:53:52.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:53:52.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:53:52.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:53:53.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 53, 43), 15.09, 35.46, 0.0, 15.56, 14.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:53:53.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:53:43
2025-09-29T14:53:53.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:53:53.449 [DEBUG] [Thread-159112] [transport.py] [_log()] starting thread (client mode): 0x2e362830
2025-09-29T14:53:53.449 [DEBUG] [Thread-159112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:53.469 [DEBUG] [Thread-159112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:53:53.469 [INFO] [Thread-159112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:53:53.471 [DEBUG] [Thread-159112] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:53.471 [DEBUG] [Thread-159112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] Compression: none
2025-09-29T14:53:53.472 [DEBUG] [Thread-159112] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:53.488 [DEBUG] [Thread-159112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:53.488 [DEBUG] [Thread-159112] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:53.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:53:53.489 [DEBUG] [Thread-159112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:53:53.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:53.491 [DEBUG] [Thread-159112] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:53.491 [DEBUG] [Thread-159112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:53.491 [DEBUG] [Thread-159112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:53.491 [DEBUG] [Thread-159112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:53:53.491 [DEBUG] [Thread-159112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:53.515 [INFO] [Thread-159112] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:53.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:54.260 [DEBUG] [Thread-159112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:54.260 [DEBUG] [Thread-159112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:54.260 [DEBUG] [Thread-159112] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:53:54.301 [DEBUG] [Thread-159112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:54.301 [DEBUG] [Thread-159112] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:54.304 [DEBUG] [Thread-159112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:54.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:54.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:53:54.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:53:54.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:53:54.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:54.327 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:53:54.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:54.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:54.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:53:54.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.536873 -999.00  +16.40  14.90     38   +2.20 1 1 1 1 1   888    0 15.40 64.70 ----- 15.2 14.9 188.8 19.6 24.4 -30.6 23.1 -32.9 25.1 -29.8 26.4 -31.9
2025-09-29T14:53:54.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:53:54.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:53:54.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.536873
2025-09-29T14:53:54.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:53:54.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:53:54.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:53:54.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:53:54.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:53:54.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:53:43', tmtdew=15.09, humidity=35.46, cloud=0.0, wind=15.56, temperature=14.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:53:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:53:54.330 [DEBUG] [Thread-159112] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:53:54.415 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:53:54.425 [DEBUG] [Thread-159115] [transport.py] [_log()] starting thread (client mode): 0x30ddff70
2025-09-29T14:53:54.425 [DEBUG] [Thread-159115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:53:54.439 [DEBUG] [Thread-159115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:53:54.439 [INFO] [Thread-159115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:53:54.447 [DEBUG] [Thread-159115] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] client lang: <none>
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] server lang: <none>
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] kex follows: False
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] Compression: none
2025-09-29T14:53:54.448 [DEBUG] [Thread-159115] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:53:54.511 [DEBUG] [Thread-159115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:53:54.512 [DEBUG] [Thread-159115] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:53:54.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:53:54.513 [DEBUG] [Thread-159115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:53:54.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:53:54.575 [DEBUG] [Thread-159115] [transport.py] [_log()] userauth is OK
2025-09-29T14:53:54.576 [DEBUG] [Thread-159115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:53:54.576 [DEBUG] [Thread-159115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:53:54.576 [DEBUG] [Thread-159115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:53:54.576 [DEBUG] [Thread-159115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:53:54.599 [INFO] [Thread-159115] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:53:54.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:53:54.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:53:55.554 [DEBUG] [Thread-159115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:53:55.554 [DEBUG] [Thread-159115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:53:55.602 [DEBUG] [Thread-159115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:53:55.602 [DEBUG] [Thread-159115] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:53:55.611 [DEBUG] [Thread-159115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:53:55.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:53:55.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:53:55.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:53:55.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:53:55.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:53:55.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:53:55.646 [DEBUG] [Thread-159115] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:05.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:54:05.648 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:54:05.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:54:06.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 53, 43), 15.09, 35.46, 0.0, 15.56, 14.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:54:06.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:53:43
2025-09-29T14:54:06.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:54:06.378 [DEBUG] [Thread-159117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:54:06.468 [DEBUG] [Thread-159118] [transport.py] [_log()] starting thread (client mode): 0x30ddf070
2025-09-29T14:54:06.468 [DEBUG] [Thread-159118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:06.489 [DEBUG] [Thread-159118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:54:06.489 [INFO] [Thread-159118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:06.492 [DEBUG] [Thread-159118] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:06.493 [DEBUG] [Thread-159118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:06.493 [DEBUG] [Thread-159118] [transport.py] [_log()] Compression: none
2025-09-29T14:54:06.493 [DEBUG] [Thread-159118] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:06.510 [DEBUG] [Thread-159118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:06.510 [DEBUG] [Thread-159118] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:06.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:54:06.511 [DEBUG] [Thread-159118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:54:06.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:06.513 [DEBUG] [Thread-159118] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:06.513 [DEBUG] [Thread-159118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:06.514 [DEBUG] [Thread-159118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:06.514 [DEBUG] [Thread-159118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:54:06.514 [DEBUG] [Thread-159118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:06.538 [INFO] [Thread-159118] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:06.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:07.274 [DEBUG] [Thread-159118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:07.275 [DEBUG] [Thread-159118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:07.275 [DEBUG] [Thread-159118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:54:07.315 [DEBUG] [Thread-159118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:07.315 [DEBUG] [Thread-159118] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:07.318 [DEBUG] [Thread-159118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:07.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:07.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:54:07.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:54:07.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:54:07.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:07.338 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:54:07.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:07.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:54:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.536873 -999.00  +16.40  14.90     38   +2.20 1 1 1 1 1   888    0 15.40 64.70 ----- 15.2 14.9 188.8 19.6 24.4 -30.6 23.1 -32.9 25.1 -29.8 26.4 -31.9
2025-09-29T14:54:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:54:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:54:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.536873
2025-09-29T14:54:07.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:54:07.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:54:07.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:54:07.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:54:07.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:54:07.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:53:43', tmtdew=15.09, humidity=35.46, cloud=0.0, wind=15.56, temperature=14.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:53:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:54:07.341 [DEBUG] [Thread-159118] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:07.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:54:07.437 [DEBUG] [Thread-159121] [transport.py] [_log()] starting thread (client mode): 0x2b96dab0
2025-09-29T14:54:07.437 [DEBUG] [Thread-159121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:07.452 [DEBUG] [Thread-159121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:54:07.452 [INFO] [Thread-159121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:54:07.459 [DEBUG] [Thread-159121] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:07.459 [DEBUG] [Thread-159121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:54:07.459 [DEBUG] [Thread-159121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:07.459 [DEBUG] [Thread-159121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:07.460 [DEBUG] [Thread-159121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:07.461 [DEBUG] [Thread-159121] [transport.py] [_log()] Compression: none
2025-09-29T14:54:07.461 [DEBUG] [Thread-159121] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:07.517 [DEBUG] [Thread-159121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:07.517 [DEBUG] [Thread-159121] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:07.518 [DEBUG] [Thread-159121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:54:07.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:54:07.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:07.573 [DEBUG] [Thread-159121] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:07.573 [DEBUG] [Thread-159121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:07.573 [DEBUG] [Thread-159121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:07.573 [DEBUG] [Thread-159121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:54:07.573 [DEBUG] [Thread-159121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:07.587 [INFO] [Thread-159121] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:07.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:54:07.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:08.156 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:54:08.156 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:54:08.665 [DEBUG] [Thread-159121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:08.666 [DEBUG] [Thread-159121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:08.714 [DEBUG] [Thread-159121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:08.714 [DEBUG] [Thread-159121] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:08.722 [DEBUG] [Thread-159121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:08.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:08.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:54:08.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:54:08.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:08.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:08.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:08.753 [DEBUG] [Thread-159121] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:18.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:54:18.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:54:18.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:54:19.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 54, 15), 14.99, 35.71, 0.0, 16.37, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:54:19.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:54:15
2025-09-29T14:54:19.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:54:19.587 [DEBUG] [Thread-159123] [transport.py] [_log()] starting thread (client mode): 0x2b96c310
2025-09-29T14:54:19.587 [DEBUG] [Thread-159123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:19.607 [DEBUG] [Thread-159123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:54:19.607 [INFO] [Thread-159123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:19.611 [DEBUG] [Thread-159123] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:19.612 [DEBUG] [Thread-159123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:19.612 [DEBUG] [Thread-159123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:19.612 [DEBUG] [Thread-159123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:19.612 [DEBUG] [Thread-159123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:19.612 [DEBUG] [Thread-159123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:19.612 [DEBUG] [Thread-159123] [transport.py] [_log()] Compression: none
2025-09-29T14:54:19.612 [DEBUG] [Thread-159123] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:19.628 [DEBUG] [Thread-159123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:19.629 [DEBUG] [Thread-159123] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:19.629 [DEBUG] [Thread-159123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:54:19.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:54:19.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:19.632 [DEBUG] [Thread-159123] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:19.632 [DEBUG] [Thread-159123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:19.632 [DEBUG] [Thread-159123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:19.632 [DEBUG] [Thread-159123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:54:19.632 [DEBUG] [Thread-159123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:19.651 [INFO] [Thread-159123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:19.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:20.219 [DEBUG] [Thread-159123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:20.219 [DEBUG] [Thread-159123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:20.219 [DEBUG] [Thread-159123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:54:20.260 [DEBUG] [Thread-159123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:20.260 [DEBUG] [Thread-159123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:20.262 [DEBUG] [Thread-159123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:20.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:20.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:54:20.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:54:20.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:54:20.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:20.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:54:20.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:20.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:20.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:54:20.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.537568 -999.00  +16.00  12.26     39   +2.20 1 1 1 1 1   888    0 15.19 52.10 ----- 14.4 12.3 167.2 14.5 24.3 -29.0 23.2 -31.0 25.1 -28.6 26.4 -29.7
2025-09-29T14:54:20.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:54:20.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:54:20.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.537568
2025-09-29T14:54:20.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:54:20.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:54:20.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:54:20.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:54:20.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:54:20.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:54:15', tmtdew=14.99, humidity=35.71, cloud=0.0, wind=16.37, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:54:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:54:20.279 [DEBUG] [Thread-159123] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:20.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:54:20.372 [DEBUG] [Thread-159126] [transport.py] [_log()] starting thread (client mode): 0x2b9556c0
2025-09-29T14:54:20.373 [DEBUG] [Thread-159126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:20.387 [DEBUG] [Thread-159126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:54:20.388 [INFO] [Thread-159126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:54:20.395 [DEBUG] [Thread-159126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] Compression: none
2025-09-29T14:54:20.396 [DEBUG] [Thread-159126] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:20.453 [DEBUG] [Thread-159126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:20.453 [DEBUG] [Thread-159126] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:20.454 [DEBUG] [Thread-159126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:54:20.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:54:20.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:20.510 [DEBUG] [Thread-159126] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:20.510 [DEBUG] [Thread-159126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:20.510 [DEBUG] [Thread-159126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:20.510 [DEBUG] [Thread-159126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:54:20.510 [DEBUG] [Thread-159126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:20.530 [INFO] [Thread-159126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:20.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:54:20.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:21.414 [DEBUG] [Thread-159128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:54:21.525 [DEBUG] [Thread-159126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:21.525 [DEBUG] [Thread-159126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:21.573 [DEBUG] [Thread-159126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:21.573 [DEBUG] [Thread-159126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:21.582 [DEBUG] [Thread-159126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:21.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:21.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:54:21.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:54:21.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:21.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:21.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:21.616 [DEBUG] [Thread-159126] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:31.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:54:31.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:54:31.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:54:32.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 54, 15), 14.99, 35.71, 0.0, 16.37, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:54:32.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:54:15
2025-09-29T14:54:32.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:54:32.460 [DEBUG] [Thread-159129] [transport.py] [_log()] starting thread (client mode): 0x2b9574c0
2025-09-29T14:54:32.460 [DEBUG] [Thread-159129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:32.480 [DEBUG] [Thread-159129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:54:32.480 [INFO] [Thread-159129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:32.484 [DEBUG] [Thread-159129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] Compression: none
2025-09-29T14:54:32.485 [DEBUG] [Thread-159129] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:32.505 [DEBUG] [Thread-159129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:32.505 [DEBUG] [Thread-159129] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:32.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:54:32.507 [DEBUG] [Thread-159129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:54:32.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:32.509 [DEBUG] [Thread-159129] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:32.509 [DEBUG] [Thread-159129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:32.509 [DEBUG] [Thread-159129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:32.509 [DEBUG] [Thread-159129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:54:32.509 [DEBUG] [Thread-159129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:32.533 [INFO] [Thread-159129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:32.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:33.311 [DEBUG] [Thread-159129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:33.312 [DEBUG] [Thread-159129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:33.312 [DEBUG] [Thread-159129] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:54:33.352 [DEBUG] [Thread-159129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:33.352 [DEBUG] [Thread-159129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:33.356 [DEBUG] [Thread-159129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:33.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:33.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:54:33.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:54:33.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:54:33.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:33.380 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:54:33.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:33.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:33.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:54:33.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.537568 -999.00  +16.00  12.26     39   +2.20 1 1 1 1 1   888    0 15.19 52.10 ----- 14.4 12.3 167.2 14.5 24.3 -29.0 23.2 -31.0 25.1 -28.6 26.4 -29.7
2025-09-29T14:54:33.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:54:33.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:54:33.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.537568
2025-09-29T14:54:33.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:54:33.382 [DEBUG] [Thread-159129] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:54:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:54:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:54:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:54:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:54:15', tmtdew=14.99, humidity=35.71, cloud=0.0, wind=16.37, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:54:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:54:33.471 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:54:33.480 [DEBUG] [Thread-159132] [transport.py] [_log()] starting thread (client mode): 0x2b955b70
2025-09-29T14:54:33.480 [DEBUG] [Thread-159132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:33.495 [DEBUG] [Thread-159132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:54:33.495 [INFO] [Thread-159132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:54:33.503 [DEBUG] [Thread-159132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:33.503 [DEBUG] [Thread-159132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:54:33.503 [DEBUG] [Thread-159132] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:33.503 [DEBUG] [Thread-159132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:33.503 [DEBUG] [Thread-159132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:33.503 [DEBUG] [Thread-159132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:33.503 [DEBUG] [Thread-159132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:33.504 [DEBUG] [Thread-159132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:33.505 [DEBUG] [Thread-159132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:33.505 [DEBUG] [Thread-159132] [transport.py] [_log()] Compression: none
2025-09-29T14:54:33.505 [DEBUG] [Thread-159132] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:33.562 [DEBUG] [Thread-159132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:33.562 [DEBUG] [Thread-159132] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:33.563 [DEBUG] [Thread-159132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:54:33.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:54:33.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:33.617 [DEBUG] [Thread-159132] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:33.618 [DEBUG] [Thread-159132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:33.618 [DEBUG] [Thread-159132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:33.618 [DEBUG] [Thread-159132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:54:33.618 [DEBUG] [Thread-159132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:33.637 [INFO] [Thread-159132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:33.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:54:33.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:34.600 [DEBUG] [Thread-159132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:34.600 [DEBUG] [Thread-159132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:34.648 [DEBUG] [Thread-159132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:34.648 [DEBUG] [Thread-159132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:34.656 [DEBUG] [Thread-159132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:34.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:34.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:54:34.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:54:34.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:34.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:34.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:34.689 [DEBUG] [Thread-159132] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:36.457 [DEBUG] [Thread-159134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:54:44.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:54:44.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:54:44.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:54:45.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 54, 15), 14.99, 35.71, 0.0, 16.37, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:54:45.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:54:15
2025-09-29T14:54:45.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:54:45.450 [DEBUG] [Thread-159135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:54:45.508 [DEBUG] [Thread-159136] [transport.py] [_log()] starting thread (client mode): 0x2b94fdc0
2025-09-29T14:54:45.508 [DEBUG] [Thread-159136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:45.528 [DEBUG] [Thread-159136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:54:45.528 [INFO] [Thread-159136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:54:45.531 [DEBUG] [Thread-159136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:45.531 [DEBUG] [Thread-159136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:54:45.531 [DEBUG] [Thread-159136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:45.531 [DEBUG] [Thread-159136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] Compression: none
2025-09-29T14:54:45.532 [DEBUG] [Thread-159136] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:45.543 [DEBUG] [Thread-159136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:45.543 [DEBUG] [Thread-159136] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:45.544 [DEBUG] [Thread-159136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:54:45.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:54:45.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:45.544 [DEBUG] [Thread-159136] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:45.544 [DEBUG] [Thread-159136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:45.544 [DEBUG] [Thread-159136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:45.545 [DEBUG] [Thread-159136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:54:45.545 [DEBUG] [Thread-159136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:45.562 [INFO] [Thread-159136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:45.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:46.162 [DEBUG] [Thread-159136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:46.162 [DEBUG] [Thread-159136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:46.162 [DEBUG] [Thread-159136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:54:46.203 [DEBUG] [Thread-159136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:46.203 [DEBUG] [Thread-159136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:46.206 [DEBUG] [Thread-159136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:46.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:46.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:54:46.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:54:46.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:54:46.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:46.226 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:54:46.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:46.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.537915 -999.00  +15.90   9.56     39   +2.20 1 1 1 1 1   888    0 15.44 47.71 ----- 9.8 9.6 173.4 14.8 24.3 -29.1 23.1 -28.7 25.0 -28.1 26.4 -30.1
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.537915
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:54:46.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:54:15', tmtdew=14.99, humidity=35.71, cloud=0.0, wind=16.37, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:54:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:54:46.228 [DEBUG] [Thread-159136] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:46.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:54:46.312 [DEBUG] [Thread-159139] [transport.py] [_log()] starting thread (client mode): 0x30ddf520
2025-09-29T14:54:46.312 [DEBUG] [Thread-159139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:46.327 [DEBUG] [Thread-159139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:54:46.327 [INFO] [Thread-159139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:54:46.334 [DEBUG] [Thread-159139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:46.334 [DEBUG] [Thread-159139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:54:46.334 [DEBUG] [Thread-159139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:46.334 [DEBUG] [Thread-159139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:46.334 [DEBUG] [Thread-159139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:46.334 [DEBUG] [Thread-159139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:46.334 [DEBUG] [Thread-159139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:46.334 [DEBUG] [Thread-159139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] Compression: none
2025-09-29T14:54:46.335 [DEBUG] [Thread-159139] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:46.392 [DEBUG] [Thread-159139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:46.392 [DEBUG] [Thread-159139] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:46.392 [DEBUG] [Thread-159139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:54:46.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:54:46.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:46.450 [DEBUG] [Thread-159139] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:46.450 [DEBUG] [Thread-159139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:46.450 [DEBUG] [Thread-159139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:46.450 [DEBUG] [Thread-159139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:54:46.450 [DEBUG] [Thread-159139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:46.463 [INFO] [Thread-159139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:46.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:54:46.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:47.469 [DEBUG] [Thread-159139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:47.469 [DEBUG] [Thread-159139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:47.517 [DEBUG] [Thread-159139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:47.517 [DEBUG] [Thread-159139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:47.525 [DEBUG] [Thread-159139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:47.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:47.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:54:47.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:54:47.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:47.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:47.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:47.556 [DEBUG] [Thread-159139] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:51.487 [DEBUG] [Thread-159141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:54:57.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:54:57.555 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:54:57.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:54:58.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 54, 47), 15.26, 35.19, 0.0, 13.76, 15.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:54:58.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:54:47
2025-09-29T14:54:58.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:54:58.379 [DEBUG] [Thread-159142] [transport.py] [_log()] starting thread (client mode): 0x2b94dbd0
2025-09-29T14:54:58.379 [DEBUG] [Thread-159142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:58.400 [DEBUG] [Thread-159142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:54:58.400 [INFO] [Thread-159142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:54:58.401 [DEBUG] [Thread-159142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:58.401 [DEBUG] [Thread-159142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:58.402 [DEBUG] [Thread-159142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:58.403 [DEBUG] [Thread-159142] [transport.py] [_log()] Compression: none
2025-09-29T14:54:58.403 [DEBUG] [Thread-159142] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:58.420 [DEBUG] [Thread-159142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:58.420 [DEBUG] [Thread-159142] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:58.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:54:58.421 [DEBUG] [Thread-159142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:54:58.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:58.423 [DEBUG] [Thread-159142] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:58.423 [DEBUG] [Thread-159142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:58.423 [DEBUG] [Thread-159142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:58.423 [DEBUG] [Thread-159142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:54:58.424 [DEBUG] [Thread-159142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:58.441 [INFO] [Thread-159142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:58.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:54:59.175 [DEBUG] [Thread-159142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:54:59.175 [DEBUG] [Thread-159142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:54:59.175 [DEBUG] [Thread-159142] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:54:59.215 [DEBUG] [Thread-159142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:54:59.215 [DEBUG] [Thread-159142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:54:59.217 [DEBUG] [Thread-159142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:54:59.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:54:59.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:54:59.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:54:59.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:54:59.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:54:59.239 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:54:59.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:54:59.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:54:59.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:54:59.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.537915 -999.00  +15.90   9.56     39   +2.20 1 1 1 1 1   888    0 15.44 47.71 ----- 9.8 9.6 173.4 14.8 24.3 -29.1 23.1 -28.7 25.0 -28.1 26.4 -30.1
2025-09-29T14:54:59.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:54:59.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:54:59.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.537915
2025-09-29T14:54:59.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:54:59.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:54:59.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:54:59.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:54:59.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:54:59.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:54:47', tmtdew=15.26, humidity=35.19, cloud=0.0, wind=13.76, temperature=15.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:54:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:54:59.242 [DEBUG] [Thread-159142] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:54:59.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:54:59.337 [DEBUG] [Thread-159145] [transport.py] [_log()] starting thread (client mode): 0x30ddf7c0
2025-09-29T14:54:59.337 [DEBUG] [Thread-159145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:54:59.352 [DEBUG] [Thread-159145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:54:59.352 [INFO] [Thread-159145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:54:59.360 [DEBUG] [Thread-159145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:54:59.360 [DEBUG] [Thread-159145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:54:59.360 [DEBUG] [Thread-159145] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:54:59.360 [DEBUG] [Thread-159145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:59.360 [DEBUG] [Thread-159145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:54:59.360 [DEBUG] [Thread-159145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:59.360 [DEBUG] [Thread-159145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:54:59.360 [DEBUG] [Thread-159145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:54:59.361 [DEBUG] [Thread-159145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:54:59.361 [DEBUG] [Thread-159145] [transport.py] [_log()] client lang: <none>
2025-09-29T14:54:59.361 [DEBUG] [Thread-159145] [transport.py] [_log()] server lang: <none>
2025-09-29T14:54:59.361 [DEBUG] [Thread-159145] [transport.py] [_log()] kex follows: False
2025-09-29T14:54:59.361 [DEBUG] [Thread-159145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:54:59.361 [DEBUG] [Thread-159145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:54:59.361 [DEBUG] [Thread-159145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:54:59.361 [DEBUG] [Thread-159145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:54:59.362 [DEBUG] [Thread-159145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:54:59.362 [DEBUG] [Thread-159145] [transport.py] [_log()] Compression: none
2025-09-29T14:54:59.362 [DEBUG] [Thread-159145] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:54:59.418 [DEBUG] [Thread-159145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:54:59.419 [DEBUG] [Thread-159145] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:54:59.419 [DEBUG] [Thread-159145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:54:59.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:54:59.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:54:59.473 [DEBUG] [Thread-159145] [transport.py] [_log()] userauth is OK
2025-09-29T14:54:59.473 [DEBUG] [Thread-159145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:54:59.473 [DEBUG] [Thread-159145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:54:59.473 [DEBUG] [Thread-159145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:54:59.473 [DEBUG] [Thread-159145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:54:59.492 [INFO] [Thread-159145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:54:59.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:54:59.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:00.475 [DEBUG] [Thread-159145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:00.476 [DEBUG] [Thread-159145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:00.523 [DEBUG] [Thread-159145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:00.523 [DEBUG] [Thread-159145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:00.532 [DEBUG] [Thread-159145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:00.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:00.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:55:00.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:55:00.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:00.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:00.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:00.567 [DEBUG] [Thread-159145] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:55:06.529 [DEBUG] [Thread-159147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:55:08.303 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:55:08.305 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:55:10.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:55:10.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:55:10.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:55:11.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 54, 47), 15.26, 35.19, 0.0, 13.76, 15.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:55:11.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:54:47
2025-09-29T14:55:11.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:55:11.389 [DEBUG] [Thread-159148] [transport.py] [_log()] starting thread (client mode): 0x30ddfa00
2025-09-29T14:55:11.389 [DEBUG] [Thread-159148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:55:11.409 [DEBUG] [Thread-159148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:55:11.409 [INFO] [Thread-159148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:55:11.412 [DEBUG] [Thread-159148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:55:11.412 [DEBUG] [Thread-159148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:55:11.412 [DEBUG] [Thread-159148] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:55:11.412 [DEBUG] [Thread-159148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:11.412 [DEBUG] [Thread-159148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:11.412 [DEBUG] [Thread-159148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:11.412 [DEBUG] [Thread-159148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:11.412 [DEBUG] [Thread-159148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] client lang: <none>
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] server lang: <none>
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] kex follows: False
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] Compression: none
2025-09-29T14:55:11.413 [DEBUG] [Thread-159148] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:55:11.432 [DEBUG] [Thread-159148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:55:11.432 [DEBUG] [Thread-159148] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:55:11.433 [DEBUG] [Thread-159148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:55:11.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:55:11.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:55:11.435 [DEBUG] [Thread-159148] [transport.py] [_log()] userauth is OK
2025-09-29T14:55:11.435 [DEBUG] [Thread-159148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:55:11.435 [DEBUG] [Thread-159148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:55:11.435 [DEBUG] [Thread-159148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:55:11.435 [DEBUG] [Thread-159148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:55:11.455 [INFO] [Thread-159148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:55:11.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:17.328 [DEBUG] [Thread-159148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:17.329 [DEBUG] [Thread-159148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:17.329 [DEBUG] [Thread-159148] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:55:17.369 [DEBUG] [Thread-159148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:17.369 [DEBUG] [Thread-159148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:17.372 [DEBUG] [Thread-159148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:17.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:17.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:55:17.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:55:17.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:55:17.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:17.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:55:17.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:17.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:17.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:55:17.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.537915 -999.00  +15.90   9.56     39   +2.20 1 1 1 1 1   888    0 15.44 47.71 ----- 9.8 9.6 173.4 14.8 24.3 -29.1 23.1 -28.7 25.0 -28.1 26.4 -30.1
2025-09-29T14:55:17.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:55:17.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:55:17.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.537915
2025-09-29T14:55:17.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:55:17.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:55:17.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:55:17.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:55:17.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:55:17.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:54:47', tmtdew=15.26, humidity=35.19, cloud=0.0, wind=13.76, temperature=15.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:54:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:55:17.418 [DEBUG] [Thread-159148] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:55:17.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:55:17.519 [DEBUG] [Thread-159151] [transport.py] [_log()] starting thread (client mode): 0x2b9546d0
2025-09-29T14:55:17.519 [DEBUG] [Thread-159151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:55:17.533 [DEBUG] [Thread-159151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:55:17.533 [INFO] [Thread-159151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] client lang: <none>
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] server lang: <none>
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] kex follows: False
2025-09-29T14:55:17.541 [DEBUG] [Thread-159151] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:55:17.542 [DEBUG] [Thread-159151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:55:17.542 [DEBUG] [Thread-159151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:55:17.542 [DEBUG] [Thread-159151] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:55:17.542 [DEBUG] [Thread-159151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:55:17.542 [DEBUG] [Thread-159151] [transport.py] [_log()] Compression: none
2025-09-29T14:55:17.542 [DEBUG] [Thread-159151] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:55:17.598 [DEBUG] [Thread-159151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:55:17.599 [DEBUG] [Thread-159151] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:55:17.599 [DEBUG] [Thread-159151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:55:17.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:55:17.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:55:17.653 [DEBUG] [Thread-159151] [transport.py] [_log()] userauth is OK
2025-09-29T14:55:17.654 [DEBUG] [Thread-159151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:55:17.654 [DEBUG] [Thread-159151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:55:17.654 [DEBUG] [Thread-159151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:55:17.654 [DEBUG] [Thread-159151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:55:17.673 [INFO] [Thread-159151] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:55:17.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:55:17.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:18.745 [DEBUG] [Thread-159151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:18.745 [DEBUG] [Thread-159151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:18.799 [DEBUG] [Thread-159151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:18.799 [DEBUG] [Thread-159151] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:18.808 [DEBUG] [Thread-159151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:18.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:18.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:55:18.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:55:18.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:18.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:18.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:18.843 [DEBUG] [Thread-159151] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:55:21.562 [DEBUG] [Thread-159153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:55:28.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:55:28.845 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:55:28.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:55:29.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 55, 19), 15.24, 35.24, 0.0, 13.8, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:55:29.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:55:19
2025-09-29T14:55:29.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:55:29.670 [DEBUG] [Thread-159154] [transport.py] [_log()] starting thread (client mode): 0x2e3dd180
2025-09-29T14:55:29.670 [DEBUG] [Thread-159154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:55:29.690 [DEBUG] [Thread-159154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:55:29.690 [INFO] [Thread-159154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] client lang: <none>
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] server lang: <none>
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] kex follows: False
2025-09-29T14:55:29.693 [DEBUG] [Thread-159154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:55:29.694 [DEBUG] [Thread-159154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:55:29.694 [DEBUG] [Thread-159154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:55:29.694 [DEBUG] [Thread-159154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:55:29.694 [DEBUG] [Thread-159154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:55:29.694 [DEBUG] [Thread-159154] [transport.py] [_log()] Compression: none
2025-09-29T14:55:29.694 [DEBUG] [Thread-159154] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:55:29.711 [DEBUG] [Thread-159154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:55:29.711 [DEBUG] [Thread-159154] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:55:29.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:55:29.712 [DEBUG] [Thread-159154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:55:29.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:55:29.714 [DEBUG] [Thread-159154] [transport.py] [_log()] userauth is OK
2025-09-29T14:55:29.714 [DEBUG] [Thread-159154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:55:29.715 [DEBUG] [Thread-159154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:55:29.715 [DEBUG] [Thread-159154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:55:29.715 [DEBUG] [Thread-159154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:55:29.730 [INFO] [Thread-159154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:55:29.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:30.293 [DEBUG] [Thread-159154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:30.294 [DEBUG] [Thread-159154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:30.294 [DEBUG] [Thread-159154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:55:30.334 [DEBUG] [Thread-159154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:30.335 [DEBUG] [Thread-159154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:30.338 [DEBUG] [Thread-159154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:30.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:30.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:55:30.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:55:30.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:55:30.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:30.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:55:30.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:30.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:55:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.538262 -999.00  +16.10   9.30     39   +2.30 1 1 1 1 1   888    0 15.24 41.18 ----- 11.2 9.3 183.6 15.3 24.4 -29.8 23.1 -30.8 25.2 -29.4 26.4 -30.1
2025-09-29T14:55:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:55:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:55:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.538262
2025-09-29T14:55:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:55:30.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:55:30.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:55:30.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:55:30.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:55:30.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:55:19', tmtdew=15.24, humidity=35.24, cloud=0.0, wind=13.8, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:55:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:55:30.365 [DEBUG] [Thread-159154] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:55:30.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:55:30.462 [DEBUG] [Thread-159157] [transport.py] [_log()] starting thread (client mode): 0x2b9bae60
2025-09-29T14:55:30.462 [DEBUG] [Thread-159157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:55:30.476 [DEBUG] [Thread-159157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:55:30.477 [INFO] [Thread-159157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:55:30.484 [DEBUG] [Thread-159157] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:55:30.484 [DEBUG] [Thread-159157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] client lang: <none>
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] server lang: <none>
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] kex follows: False
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] Compression: none
2025-09-29T14:55:30.485 [DEBUG] [Thread-159157] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:55:30.545 [DEBUG] [Thread-159157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:55:30.546 [DEBUG] [Thread-159157] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:55:30.546 [DEBUG] [Thread-159157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:55:30.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:55:30.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:55:30.601 [DEBUG] [Thread-159157] [transport.py] [_log()] userauth is OK
2025-09-29T14:55:30.602 [DEBUG] [Thread-159157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:55:30.602 [DEBUG] [Thread-159157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:55:30.602 [DEBUG] [Thread-159157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:55:30.602 [DEBUG] [Thread-159157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:55:30.621 [INFO] [Thread-159157] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:55:30.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:55:30.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:31.603 [DEBUG] [Thread-159157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:31.603 [DEBUG] [Thread-159157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:31.651 [DEBUG] [Thread-159157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:31.651 [DEBUG] [Thread-159157] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:31.660 [DEBUG] [Thread-159157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:31.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:31.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:55:31.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:55:31.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:31.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:31.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:31.694 [DEBUG] [Thread-159157] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:55:36.589 [DEBUG] [Thread-159159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:55:41.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:55:41.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:55:41.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:55:42.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 55, 19), 15.24, 35.24, 0.0, 13.8, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:55:42.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:55:19
2025-09-29T14:55:42.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:55:42.543 [DEBUG] [Thread-159160] [transport.py] [_log()] starting thread (client mode): 0x2b9cd900
2025-09-29T14:55:42.543 [DEBUG] [Thread-159160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:55:42.561 [DEBUG] [Thread-159160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:55:42.561 [INFO] [Thread-159160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:55:42.564 [DEBUG] [Thread-159160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:55:42.564 [DEBUG] [Thread-159160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:55:42.564 [DEBUG] [Thread-159160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] client lang: <none>
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] server lang: <none>
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] kex follows: False
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] Compression: none
2025-09-29T14:55:42.565 [DEBUG] [Thread-159160] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:55:42.578 [DEBUG] [Thread-159160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:55:42.579 [DEBUG] [Thread-159160] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:55:42.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:55:42.580 [DEBUG] [Thread-159160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:55:42.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:55:42.582 [DEBUG] [Thread-159160] [transport.py] [_log()] userauth is OK
2025-09-29T14:55:42.582 [DEBUG] [Thread-159160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:55:42.582 [DEBUG] [Thread-159160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:55:42.582 [DEBUG] [Thread-159160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:55:42.582 [DEBUG] [Thread-159160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:55:42.617 [INFO] [Thread-159160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:55:42.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:43.359 [DEBUG] [Thread-159160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:43.360 [DEBUG] [Thread-159160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:43.360 [DEBUG] [Thread-159160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:55:43.400 [DEBUG] [Thread-159160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:43.400 [DEBUG] [Thread-159160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:43.403 [DEBUG] [Thread-159160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:43.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:43.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:55:43.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:55:43.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:55:43.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:43.425 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:55:43.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:43.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:43.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:55:43.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.538262 -999.00  +16.10   9.30     39   +2.30 1 1 1 1 1   888    0 15.24 41.18 ----- 11.2 9.3 183.6 15.3 24.4 -29.8 23.1 -30.8 25.2 -29.4 26.4 -30.1
2025-09-29T14:55:43.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:55:43.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:55:43.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.538262
2025-09-29T14:55:43.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:55:43.427 [DEBUG] [Thread-159160] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:55:43.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:55:43.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:55:43.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:55:43.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:55:43.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:55:19', tmtdew=15.24, humidity=35.24, cloud=0.0, wind=13.8, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:55:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:55:43.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:55:43.528 [DEBUG] [Thread-159163] [transport.py] [_log()] starting thread (client mode): 0x2e3de0e0
2025-09-29T14:55:43.529 [DEBUG] [Thread-159163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:55:43.546 [DEBUG] [Thread-159163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:55:43.547 [INFO] [Thread-159163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:55:43.556 [DEBUG] [Thread-159163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:55:43.556 [DEBUG] [Thread-159163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] client lang: <none>
2025-09-29T14:55:43.557 [DEBUG] [Thread-159163] [transport.py] [_log()] server lang: <none>
2025-09-29T14:55:43.558 [DEBUG] [Thread-159163] [transport.py] [_log()] kex follows: False
2025-09-29T14:55:43.558 [DEBUG] [Thread-159163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:55:43.558 [DEBUG] [Thread-159163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:55:43.558 [DEBUG] [Thread-159163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:55:43.558 [DEBUG] [Thread-159163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:55:43.558 [DEBUG] [Thread-159163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:55:43.558 [DEBUG] [Thread-159163] [transport.py] [_log()] Compression: none
2025-09-29T14:55:43.558 [DEBUG] [Thread-159163] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:55:43.617 [DEBUG] [Thread-159163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:55:43.617 [DEBUG] [Thread-159163] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:55:43.618 [DEBUG] [Thread-159163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:55:43.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:55:43.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:55:43.679 [DEBUG] [Thread-159163] [transport.py] [_log()] userauth is OK
2025-09-29T14:55:43.679 [DEBUG] [Thread-159163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:55:43.679 [DEBUG] [Thread-159163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:55:43.679 [DEBUG] [Thread-159163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:55:43.679 [DEBUG] [Thread-159163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:55:43.699 [INFO] [Thread-159163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:55:43.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:55:43.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:44.653 [DEBUG] [Thread-159163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:44.653 [DEBUG] [Thread-159163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:44.700 [DEBUG] [Thread-159163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:44.701 [DEBUG] [Thread-159163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:44.710 [DEBUG] [Thread-159163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:44.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:44.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:55:44.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:55:44.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:44.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:44.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:44.745 [DEBUG] [Thread-159163] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:55:45.494 [DEBUG] [Thread-159165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:55:51.636 [DEBUG] [Thread-159166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:55:54.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:55:54.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:55:54.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:55:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 55, 51), 15.06, 35.89, 0.0, 11.06, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:55:55.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:55:51
2025-09-29T14:55:55.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:55:55.581 [DEBUG] [Thread-159167] [transport.py] [_log()] starting thread (client mode): 0x2b9ce0e0
2025-09-29T14:55:55.582 [DEBUG] [Thread-159167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:55:55.611 [DEBUG] [Thread-159167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:55:55.611 [INFO] [Thread-159167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:55:55.612 [DEBUG] [Thread-159167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:55:55.612 [DEBUG] [Thread-159167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] client lang: <none>
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] server lang: <none>
2025-09-29T14:55:55.613 [DEBUG] [Thread-159167] [transport.py] [_log()] kex follows: False
2025-09-29T14:55:55.614 [DEBUG] [Thread-159167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:55:55.614 [DEBUG] [Thread-159167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:55:55.614 [DEBUG] [Thread-159167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:55:55.614 [DEBUG] [Thread-159167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:55:55.614 [DEBUG] [Thread-159167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:55:55.614 [DEBUG] [Thread-159167] [transport.py] [_log()] Compression: none
2025-09-29T14:55:55.614 [DEBUG] [Thread-159167] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:55:55.624 [DEBUG] [Thread-159167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:55:55.625 [DEBUG] [Thread-159167] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:55:55.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:55:55.627 [DEBUG] [Thread-159167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:55:55.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:55:55.628 [DEBUG] [Thread-159167] [transport.py] [_log()] userauth is OK
2025-09-29T14:55:55.629 [DEBUG] [Thread-159167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:55:55.629 [DEBUG] [Thread-159167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:55:55.629 [DEBUG] [Thread-159167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:55:55.629 [DEBUG] [Thread-159167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:55:55.651 [INFO] [Thread-159167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:55:55.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:56.272 [DEBUG] [Thread-159167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:56.273 [DEBUG] [Thread-159167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:56.273 [DEBUG] [Thread-159167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:55:56.313 [DEBUG] [Thread-159167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:56.313 [DEBUG] [Thread-159167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:56.316 [DEBUG] [Thread-159167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:56.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:56.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:55:56.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:55:56.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:55:56.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:56.338 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:55:56.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:56.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:56.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:55:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.538609 -999.00  +15.90   7.81     39   +2.10 1 1 1 1 1   888    0 15.22 37.40 ----- 5.6 7.8 163.4 13.7 24.4 -29.1 23.1 -28.0 25.1 -28.4 26.4 -30.8
2025-09-29T14:55:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:55:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:55:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.538609
2025-09-29T14:55:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:55:56.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:55:56.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:55:56.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:55:56.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:55:56.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:55:51', tmtdew=15.06, humidity=35.89, cloud=0.0, wind=11.06, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:55:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:55:56.340 [DEBUG] [Thread-159167] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:55:56.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:55:56.435 [DEBUG] [Thread-159170] [transport.py] [_log()] starting thread (client mode): 0x2b9ba500
2025-09-29T14:55:56.435 [DEBUG] [Thread-159170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:55:56.450 [DEBUG] [Thread-159170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:55:56.450 [INFO] [Thread-159170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] client lang: <none>
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] server lang: <none>
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] kex follows: False
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] Compression: none
2025-09-29T14:55:56.457 [DEBUG] [Thread-159170] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:55:56.517 [DEBUG] [Thread-159170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:55:56.517 [DEBUG] [Thread-159170] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:55:56.518 [DEBUG] [Thread-159170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:55:56.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:55:56.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:55:56.573 [DEBUG] [Thread-159170] [transport.py] [_log()] userauth is OK
2025-09-29T14:55:56.573 [DEBUG] [Thread-159170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:55:56.573 [DEBUG] [Thread-159170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:55:56.573 [DEBUG] [Thread-159170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:55:56.573 [DEBUG] [Thread-159170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:55:56.592 [INFO] [Thread-159170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:55:56.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:55:56.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:55:57.587 [DEBUG] [Thread-159170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:55:57.588 [DEBUG] [Thread-159170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:55:57.635 [DEBUG] [Thread-159170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:55:57.635 [DEBUG] [Thread-159170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:55:57.644 [DEBUG] [Thread-159170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:55:57.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:55:57.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:55:57.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:55:57.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:55:57.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:55:57.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:55:57.679 [DEBUG] [Thread-159170] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:06.659 [DEBUG] [Thread-159172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:56:07.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:56:07.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:56:07.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:56:08.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 55, 51), 15.06, 35.89, 0.0, 11.06, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:56:08.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:55:51
2025-09-29T14:56:08.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:56:08.445 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:56:08.445 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:56:08.510 [DEBUG] [Thread-159173] [transport.py] [_log()] starting thread (client mode): 0x2b9cd480
2025-09-29T14:56:08.510 [DEBUG] [Thread-159173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:56:08.530 [DEBUG] [Thread-159173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:56:08.530 [INFO] [Thread-159173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] client lang: <none>
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] server lang: <none>
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] kex follows: False
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] Compression: none
2025-09-29T14:56:08.533 [DEBUG] [Thread-159173] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:56:08.549 [DEBUG] [Thread-159173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:56:08.549 [DEBUG] [Thread-159173] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:56:08.550 [DEBUG] [Thread-159173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:56:08.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:56:08.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:56:08.552 [DEBUG] [Thread-159173] [transport.py] [_log()] userauth is OK
2025-09-29T14:56:08.552 [DEBUG] [Thread-159173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:56:08.552 [DEBUG] [Thread-159173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:56:08.552 [DEBUG] [Thread-159173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:56:08.552 [DEBUG] [Thread-159173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:56:08.576 [INFO] [Thread-159173] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:56:08.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:56:09.396 [DEBUG] [Thread-159173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:56:09.396 [DEBUG] [Thread-159173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:56:09.396 [DEBUG] [Thread-159173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:56:09.436 [DEBUG] [Thread-159173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:56:09.437 [DEBUG] [Thread-159173] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:56:09.441 [DEBUG] [Thread-159173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:56:09.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:56:09.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:56:09.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:56:09.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:56:09.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:56:09.463 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:56:09.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:56:09.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:56:09.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:56:09.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.538609 -999.00  +15.90   7.81     39   +2.10 1 1 1 1 1   888    0 15.22 37.40 ----- 5.6 7.8 163.4 13.7 24.4 -29.1 23.1 -28.0 25.1 -28.4 26.4 -30.8
2025-09-29T14:56:09.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:56:09.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:56:09.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.538609
2025-09-29T14:56:09.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:56:09.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:56:09.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:56:09.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:56:09.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:56:09.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:55:51', tmtdew=15.06, humidity=35.89, cloud=0.0, wind=11.06, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:55:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:56:09.466 [DEBUG] [Thread-159173] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:09.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:56:09.562 [DEBUG] [Thread-159176] [transport.py] [_log()] starting thread (client mode): 0x2b9ba500
2025-09-29T14:56:09.562 [DEBUG] [Thread-159176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:56:09.577 [DEBUG] [Thread-159176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:56:09.577 [INFO] [Thread-159176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:56:09.584 [DEBUG] [Thread-159176] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:56:09.585 [DEBUG] [Thread-159176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:56:09.585 [DEBUG] [Thread-159176] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:56:09.585 [DEBUG] [Thread-159176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:09.585 [DEBUG] [Thread-159176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:09.585 [DEBUG] [Thread-159176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:09.585 [DEBUG] [Thread-159176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:09.585 [DEBUG] [Thread-159176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] client lang: <none>
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] server lang: <none>
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] kex follows: False
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:56:09.586 [DEBUG] [Thread-159176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:56:09.587 [DEBUG] [Thread-159176] [transport.py] [_log()] Compression: none
2025-09-29T14:56:09.587 [DEBUG] [Thread-159176] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:56:09.645 [DEBUG] [Thread-159176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:56:09.645 [DEBUG] [Thread-159176] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:56:09.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:56:09.646 [DEBUG] [Thread-159176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:56:09.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:56:09.700 [DEBUG] [Thread-159176] [transport.py] [_log()] userauth is OK
2025-09-29T14:56:09.701 [DEBUG] [Thread-159176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:56:09.701 [DEBUG] [Thread-159176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:56:09.701 [DEBUG] [Thread-159176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:56:09.701 [DEBUG] [Thread-159176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:56:09.721 [INFO] [Thread-159176] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:56:09.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:56:09.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:56:10.707 [DEBUG] [Thread-159176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:56:10.707 [DEBUG] [Thread-159176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:56:10.755 [DEBUG] [Thread-159176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:56:10.755 [DEBUG] [Thread-159176] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:56:10.764 [DEBUG] [Thread-159176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:56:10.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:56:10.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:56:10.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:56:10.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:56:10.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:56:10.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:56:10.798 [DEBUG] [Thread-159176] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:20.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:56:20.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:56:20.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:56:21.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 55, 51), 15.06, 35.89, 0.0, 11.06, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:56:21.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:55:51
2025-09-29T14:56:21.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:56:21.626 [DEBUG] [Thread-159178] [transport.py] [_log()] starting thread (client mode): 0x2e3dddb0
2025-09-29T14:56:21.626 [DEBUG] [Thread-159178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:56:21.645 [DEBUG] [Thread-159178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:56:21.645 [INFO] [Thread-159178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:56:21.648 [DEBUG] [Thread-159178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:56:21.648 [DEBUG] [Thread-159178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:56:21.648 [DEBUG] [Thread-159178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:56:21.648 [DEBUG] [Thread-159178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:21.648 [DEBUG] [Thread-159178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:21.648 [DEBUG] [Thread-159178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:21.648 [DEBUG] [Thread-159178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:21.648 [DEBUG] [Thread-159178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] client lang: <none>
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] server lang: <none>
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] kex follows: False
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] Compression: none
2025-09-29T14:56:21.649 [DEBUG] [Thread-159178] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:56:21.663 [DEBUG] [Thread-159178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:56:21.664 [DEBUG] [Thread-159178] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:56:21.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:56:21.664 [DEBUG] [Thread-159178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:56:21.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:56:21.665 [DEBUG] [Thread-159178] [transport.py] [_log()] userauth is OK
2025-09-29T14:56:21.666 [DEBUG] [Thread-159178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:56:21.666 [DEBUG] [Thread-159178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:56:21.666 [DEBUG] [Thread-159178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:56:21.666 [DEBUG] [Thread-159178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:56:21.684 [INFO] [Thread-159178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:56:21.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:56:21.696 [DEBUG] [Thread-159180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:56:22.439 [DEBUG] [Thread-159178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:56:22.439 [DEBUG] [Thread-159178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:56:22.440 [DEBUG] [Thread-159178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:56:22.480 [DEBUG] [Thread-159178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:56:22.480 [DEBUG] [Thread-159178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:56:22.483 [DEBUG] [Thread-159178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:56:22.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:56:22.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:56:22.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:56:22.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:56:22.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:56:22.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:56:22.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:56:22.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:56:22.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:56:22.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.538609 -999.00  +15.90   7.81     39   +2.10 1 1 1 1 1   888    0 15.22 37.40 ----- 5.6 7.8 163.4 13.7 24.4 -29.1 23.1 -28.0 25.1 -28.4 26.4 -30.8
2025-09-29T14:56:22.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:56:22.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:56:22.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.538609
2025-09-29T14:56:22.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:56:22.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:56:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:56:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:56:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:56:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:55:51', tmtdew=15.06, humidity=35.89, cloud=0.0, wind=11.06, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:55:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:56:22.499 [DEBUG] [Thread-159178] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:22.584 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:56:22.593 [DEBUG] [Thread-159182] [transport.py] [_log()] starting thread (client mode): 0x2e3750c0
2025-09-29T14:56:22.593 [DEBUG] [Thread-159182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:56:22.609 [DEBUG] [Thread-159182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:56:22.609 [INFO] [Thread-159182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:56:22.616 [DEBUG] [Thread-159182] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:56:22.616 [DEBUG] [Thread-159182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:56:22.616 [DEBUG] [Thread-159182] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:56:22.616 [DEBUG] [Thread-159182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] client lang: <none>
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] server lang: <none>
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] kex follows: False
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] Compression: none
2025-09-29T14:56:22.617 [DEBUG] [Thread-159182] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:56:22.676 [DEBUG] [Thread-159182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:56:22.676 [DEBUG] [Thread-159182] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:56:22.677 [DEBUG] [Thread-159182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:56:22.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:56:22.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:56:22.732 [DEBUG] [Thread-159182] [transport.py] [_log()] userauth is OK
2025-09-29T14:56:22.732 [DEBUG] [Thread-159182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:56:22.732 [DEBUG] [Thread-159182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:56:22.733 [DEBUG] [Thread-159182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:56:22.733 [DEBUG] [Thread-159182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:56:22.752 [INFO] [Thread-159182] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:56:22.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:56:22.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:56:23.745 [DEBUG] [Thread-159182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:56:23.745 [DEBUG] [Thread-159182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:56:23.794 [DEBUG] [Thread-159182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:56:23.794 [DEBUG] [Thread-159182] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:56:23.802 [DEBUG] [Thread-159182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:56:23.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:56:23.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:56:23.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:56:23.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:56:23.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:56:23.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:56:23.833 [DEBUG] [Thread-159182] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:33.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:56:33.836 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:56:33.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:56:34.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 56, 23), 15.41, 35.11, 0.0, 12.55, 15.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:56:34.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:56:23
2025-09-29T14:56:34.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:56:34.689 [DEBUG] [Thread-159184] [transport.py] [_log()] starting thread (client mode): 0x2b9cd7b0
2025-09-29T14:56:34.689 [DEBUG] [Thread-159184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:56:34.710 [DEBUG] [Thread-159184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:56:34.710 [INFO] [Thread-159184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:56:34.714 [DEBUG] [Thread-159184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:56:34.714 [DEBUG] [Thread-159184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:56:34.714 [DEBUG] [Thread-159184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:56:34.714 [DEBUG] [Thread-159184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:34.714 [DEBUG] [Thread-159184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:34.714 [DEBUG] [Thread-159184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:34.714 [DEBUG] [Thread-159184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] client lang: <none>
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] server lang: <none>
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] kex follows: False
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] Compression: none
2025-09-29T14:56:34.715 [DEBUG] [Thread-159184] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:56:34.732 [DEBUG] [Thread-159184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:56:34.733 [DEBUG] [Thread-159184] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:56:34.733 [DEBUG] [Thread-159184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:56:34.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:56:34.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:56:34.735 [DEBUG] [Thread-159184] [transport.py] [_log()] userauth is OK
2025-09-29T14:56:34.735 [DEBUG] [Thread-159184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:56:34.736 [DEBUG] [Thread-159184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:56:34.736 [DEBUG] [Thread-159184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:56:34.736 [DEBUG] [Thread-159184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:56:34.753 [INFO] [Thread-159184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:56:34.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:56:35.346 [DEBUG] [Thread-159184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:56:35.346 [DEBUG] [Thread-159184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:56:35.346 [DEBUG] [Thread-159184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:56:35.387 [DEBUG] [Thread-159184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:56:35.387 [DEBUG] [Thread-159184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:56:35.389 [DEBUG] [Thread-159184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:56:35.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:56:35.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:56:35.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:56:35.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:56:35.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:56:35.402 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:56:35.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.538957 -999.00  +15.90   6.52     39   +2.20 1 1 1 1 1   888    0 14.79 31.65 ----- 8.0 6.5 190.8 7.8 24.4 -28.6 23.3 -27.6 25.2 -28.3 26.5 -30.3
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.538957
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:56:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:56:23', tmtdew=15.41, humidity=35.11, cloud=0.0, wind=12.55, temperature=15.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:56:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:56:35.403 [DEBUG] [Thread-159184] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:35.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:56:35.488 [DEBUG] [Thread-159187] [transport.py] [_log()] starting thread (client mode): 0x2e377010
2025-09-29T14:56:35.488 [DEBUG] [Thread-159187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:56:35.502 [DEBUG] [Thread-159187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:56:35.502 [INFO] [Thread-159187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:56:35.510 [DEBUG] [Thread-159187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:56:35.510 [DEBUG] [Thread-159187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:56:35.510 [DEBUG] [Thread-159187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:56:35.510 [DEBUG] [Thread-159187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] client lang: <none>
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] server lang: <none>
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] kex follows: False
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:56:35.511 [DEBUG] [Thread-159187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:56:35.512 [DEBUG] [Thread-159187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:56:35.512 [DEBUG] [Thread-159187] [transport.py] [_log()] Compression: none
2025-09-29T14:56:35.512 [DEBUG] [Thread-159187] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:56:35.571 [DEBUG] [Thread-159187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:56:35.571 [DEBUG] [Thread-159187] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:56:35.572 [DEBUG] [Thread-159187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:56:35.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:56:35.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:56:35.627 [DEBUG] [Thread-159187] [transport.py] [_log()] userauth is OK
2025-09-29T14:56:35.628 [DEBUG] [Thread-159187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:56:35.628 [DEBUG] [Thread-159187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:56:35.628 [DEBUG] [Thread-159187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:56:35.628 [DEBUG] [Thread-159187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:56:35.652 [INFO] [Thread-159187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:56:35.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:56:35.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:56:36.613 [DEBUG] [Thread-159187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:56:36.614 [DEBUG] [Thread-159187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:56:36.661 [DEBUG] [Thread-159187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:56:36.661 [DEBUG] [Thread-159187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:56:36.670 [DEBUG] [Thread-159187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:56:36.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:56:36.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:56:36.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:56:36.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:56:36.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:56:36.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:56:36.706 [DEBUG] [Thread-159187] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:36.728 [DEBUG] [Thread-159189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:56:45.521 [DEBUG] [Thread-159190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:56:46.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:56:46.708 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:56:46.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:56:47.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 56, 23), 15.41, 35.11, 0.0, 12.55, 15.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:56:47.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:56:23
2025-09-29T14:56:47.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:56:47.529 [DEBUG] [Thread-159191] [transport.py] [_log()] starting thread (client mode): 0x2b9ce8c0
2025-09-29T14:56:47.529 [DEBUG] [Thread-159191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:56:47.550 [DEBUG] [Thread-159191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:56:47.550 [INFO] [Thread-159191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:56:47.553 [DEBUG] [Thread-159191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] client lang: <none>
2025-09-29T14:56:47.554 [DEBUG] [Thread-159191] [transport.py] [_log()] server lang: <none>
2025-09-29T14:56:47.555 [DEBUG] [Thread-159191] [transport.py] [_log()] kex follows: False
2025-09-29T14:56:47.555 [DEBUG] [Thread-159191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:56:47.555 [DEBUG] [Thread-159191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:56:47.555 [DEBUG] [Thread-159191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:56:47.555 [DEBUG] [Thread-159191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:56:47.555 [DEBUG] [Thread-159191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:56:47.555 [DEBUG] [Thread-159191] [transport.py] [_log()] Compression: none
2025-09-29T14:56:47.555 [DEBUG] [Thread-159191] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:56:47.573 [DEBUG] [Thread-159191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:56:47.574 [DEBUG] [Thread-159191] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:56:47.574 [DEBUG] [Thread-159191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:56:47.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:56:47.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:56:47.576 [DEBUG] [Thread-159191] [transport.py] [_log()] userauth is OK
2025-09-29T14:56:47.576 [DEBUG] [Thread-159191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:56:47.577 [DEBUG] [Thread-159191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:56:47.577 [DEBUG] [Thread-159191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:56:47.577 [DEBUG] [Thread-159191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:56:47.612 [INFO] [Thread-159191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:56:47.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:56:48.405 [DEBUG] [Thread-159191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:56:48.405 [DEBUG] [Thread-159191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:56:48.405 [DEBUG] [Thread-159191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:56:48.446 [DEBUG] [Thread-159191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:56:48.446 [DEBUG] [Thread-159191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:56:48.448 [DEBUG] [Thread-159191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:56:48.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:56:48.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:56:48.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:56:48.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:56:48.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:56:48.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:56:48.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:56:48.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:56:48.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:56:48.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.538957 -999.00  +15.90   6.52     39   +2.20 1 1 1 1 1   888    0 14.79 31.65 ----- 8.0 6.5 190.8 7.8 24.4 -28.6 23.3 -27.6 25.2 -28.3 26.5 -30.3
2025-09-29T14:56:48.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:56:48.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:56:48.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.538957
2025-09-29T14:56:48.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:56:48.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:56:48.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:56:48.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:56:48.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:56:48.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:56:23', tmtdew=15.41, humidity=35.11, cloud=0.0, wind=12.55, temperature=15.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:56:05.885', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:56:48.471 [DEBUG] [Thread-159191] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:48.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:56:48.565 [DEBUG] [Thread-159194] [transport.py] [_log()] starting thread (client mode): 0x2b9cd420
2025-09-29T14:56:48.565 [DEBUG] [Thread-159194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:56:48.580 [DEBUG] [Thread-159194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:56:48.580 [INFO] [Thread-159194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:56:48.587 [DEBUG] [Thread-159194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] client lang: <none>
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] server lang: <none>
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] kex follows: False
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] Compression: none
2025-09-29T14:56:48.588 [DEBUG] [Thread-159194] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:56:48.652 [DEBUG] [Thread-159194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:56:48.652 [DEBUG] [Thread-159194] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:56:48.653 [DEBUG] [Thread-159194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:56:48.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:56:48.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:56:48.708 [DEBUG] [Thread-159194] [transport.py] [_log()] userauth is OK
2025-09-29T14:56:48.708 [DEBUG] [Thread-159194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:56:48.708 [DEBUG] [Thread-159194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:56:48.708 [DEBUG] [Thread-159194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:56:48.708 [DEBUG] [Thread-159194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:56:48.727 [INFO] [Thread-159194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:56:48.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:56:48.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:56:49.697 [DEBUG] [Thread-159194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:56:49.698 [DEBUG] [Thread-159194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:56:49.745 [DEBUG] [Thread-159194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:56:49.745 [DEBUG] [Thread-159194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:56:49.755 [DEBUG] [Thread-159194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:56:49.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:56:49.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:56:49.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:56:49.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:56:49.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:56:49.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:56:49.793 [DEBUG] [Thread-159194] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:56:51.772 [DEBUG] [Thread-159196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:56:59.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:56:59.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:56:59.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:57:00.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 56, 55), 15.35, 35.03, 0.0, 18.56, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:57:00.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:56:55
2025-09-29T14:57:00.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:57:00.635 [DEBUG] [Thread-159197] [transport.py] [_log()] starting thread (client mode): 0x30ddfdf0
2025-09-29T14:57:00.636 [DEBUG] [Thread-159197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:00.655 [DEBUG] [Thread-159197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:57:00.655 [INFO] [Thread-159197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:57:00.657 [DEBUG] [Thread-159197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:00.657 [DEBUG] [Thread-159197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:57:00.657 [DEBUG] [Thread-159197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:00.657 [DEBUG] [Thread-159197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:00.657 [DEBUG] [Thread-159197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:00.657 [DEBUG] [Thread-159197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:00.657 [DEBUG] [Thread-159197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] Compression: none
2025-09-29T14:57:00.658 [DEBUG] [Thread-159197] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:00.676 [DEBUG] [Thread-159197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:00.677 [DEBUG] [Thread-159197] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:00.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:57:00.678 [DEBUG] [Thread-159197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:57:00.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:00.680 [DEBUG] [Thread-159197] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:00.680 [DEBUG] [Thread-159197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:00.680 [DEBUG] [Thread-159197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:00.680 [DEBUG] [Thread-159197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:57:00.680 [DEBUG] [Thread-159197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:00.704 [INFO] [Thread-159197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:00.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:01.325 [DEBUG] [Thread-159197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:01.325 [DEBUG] [Thread-159197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:01.325 [DEBUG] [Thread-159197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:57:01.367 [DEBUG] [Thread-159197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:01.367 [DEBUG] [Thread-159197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:01.369 [DEBUG] [Thread-159197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:01.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:01.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:57:01.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:57:01.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:57:01.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:01.387 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:57:01.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:01.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:01.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:57:01.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.539304 -999.00  +16.30   9.30     39   +2.50 1 1 1 1 1   888    0 14.54 27.28 ----- 12.3 9.3 195.6 16.1 24.4 -28.9 23.2 -33.3 25.3 -28.1 26.6 -30.4
2025-09-29T14:57:01.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:57:01.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:57:01.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.539304
2025-09-29T14:57:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:57:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:57:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:57:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:57:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:57:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:56:55', tmtdew=15.35, humidity=35.03, cloud=0.0, wind=18.56, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:56:35.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:57:01.388 [DEBUG] [Thread-159197] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:01.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:57:01.480 [DEBUG] [Thread-159200] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-29T14:57:01.480 [DEBUG] [Thread-159200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:01.495 [DEBUG] [Thread-159200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:57:01.495 [INFO] [Thread-159200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:57:01.502 [DEBUG] [Thread-159200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:01.502 [DEBUG] [Thread-159200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] Compression: none
2025-09-29T14:57:01.503 [DEBUG] [Thread-159200] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:01.559 [DEBUG] [Thread-159200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:01.560 [DEBUG] [Thread-159200] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:01.560 [DEBUG] [Thread-159200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:57:01.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:57:01.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:01.615 [DEBUG] [Thread-159200] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:01.616 [DEBUG] [Thread-159200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:01.616 [DEBUG] [Thread-159200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:01.616 [DEBUG] [Thread-159200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:57:01.616 [DEBUG] [Thread-159200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:01.634 [INFO] [Thread-159200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:01.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:57:01.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:02.642 [DEBUG] [Thread-159200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:02.642 [DEBUG] [Thread-159200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:02.690 [DEBUG] [Thread-159200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:02.690 [DEBUG] [Thread-159200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:02.699 [DEBUG] [Thread-159200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:02.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:02.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:57:02.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:57:02.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:02.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:02.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:02.734 [DEBUG] [Thread-159200] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:06.801 [DEBUG] [Thread-159202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:57:08.583 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:57:08.583 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:57:12.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:57:12.731 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:57:12.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:57:13.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 56, 55), 15.35, 35.03, 0.0, 18.56, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:57:13.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:56:55
2025-09-29T14:57:13.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:57:13.567 [DEBUG] [Thread-159203] [transport.py] [_log()] starting thread (client mode): 0x2e375210
2025-09-29T14:57:13.567 [DEBUG] [Thread-159203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:13.586 [DEBUG] [Thread-159203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:57:13.586 [INFO] [Thread-159203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] Compression: none
2025-09-29T14:57:13.589 [DEBUG] [Thread-159203] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:13.607 [DEBUG] [Thread-159203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:13.607 [DEBUG] [Thread-159203] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:13.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:57:13.608 [DEBUG] [Thread-159203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:57:13.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:13.610 [DEBUG] [Thread-159203] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:13.610 [DEBUG] [Thread-159203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:13.610 [DEBUG] [Thread-159203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:13.610 [DEBUG] [Thread-159203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:57:13.610 [DEBUG] [Thread-159203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:13.633 [INFO] [Thread-159203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:13.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:14.401 [DEBUG] [Thread-159203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:14.401 [DEBUG] [Thread-159203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:14.402 [DEBUG] [Thread-159203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:57:14.442 [DEBUG] [Thread-159203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:14.442 [DEBUG] [Thread-159203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:14.444 [DEBUG] [Thread-159203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:14.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:14.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:57:14.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:57:14.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:57:14.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:14.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:57:14.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:14.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:14.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:57:14.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.539304 -999.00  +16.30   9.30     39   +2.50 1 1 1 1 1   888    0 14.54 27.28 ----- 12.3 9.3 195.6 16.1 24.4 -28.9 23.2 -33.3 25.3 -28.1 26.6 -30.4
2025-09-29T14:57:14.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:57:14.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:57:14.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.539304
2025-09-29T14:57:14.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:57:14.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:57:14.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:57:14.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:57:14.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:57:14.469 [DEBUG] [Thread-159203] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:14.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:56:55', tmtdew=15.35, humidity=35.03, cloud=0.0, wind=18.56, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:56:35.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:57:14.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:57:14.563 [DEBUG] [Thread-159206] [transport.py] [_log()] starting thread (client mode): 0x2e374b80
2025-09-29T14:57:14.563 [DEBUG] [Thread-159206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:14.583 [DEBUG] [Thread-159206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:57:14.583 [INFO] [Thread-159206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:57:14.591 [DEBUG] [Thread-159206] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:14.591 [DEBUG] [Thread-159206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:57:14.591 [DEBUG] [Thread-159206] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:14.592 [DEBUG] [Thread-159206] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:14.593 [DEBUG] [Thread-159206] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:14.593 [DEBUG] [Thread-159206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:14.593 [DEBUG] [Thread-159206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:14.593 [DEBUG] [Thread-159206] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:14.593 [DEBUG] [Thread-159206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:14.593 [DEBUG] [Thread-159206] [transport.py] [_log()] Compression: none
2025-09-29T14:57:14.593 [DEBUG] [Thread-159206] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:14.651 [DEBUG] [Thread-159206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:14.651 [DEBUG] [Thread-159206] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:14.652 [DEBUG] [Thread-159206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:57:14.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:57:14.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:14.707 [DEBUG] [Thread-159206] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:14.707 [DEBUG] [Thread-159206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:14.707 [DEBUG] [Thread-159206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:14.707 [DEBUG] [Thread-159206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:57:14.707 [DEBUG] [Thread-159206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:14.727 [INFO] [Thread-159206] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:14.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:57:14.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:15.737 [DEBUG] [Thread-159206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:15.737 [DEBUG] [Thread-159206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:15.785 [DEBUG] [Thread-159206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:15.785 [DEBUG] [Thread-159206] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:15.794 [DEBUG] [Thread-159206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:15.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:15.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:57:15.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:57:15.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:15.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:15.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:15.829 [DEBUG] [Thread-159206] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:21.844 [DEBUG] [Thread-159208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:57:25.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:57:25.832 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:57:25.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:57:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 56, 55), 15.35, 35.03, 0.0, 18.56, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:57:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:56:55
2025-09-29T14:57:26.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:57:26.651 [DEBUG] [Thread-159209] [transport.py] [_log()] starting thread (client mode): 0x2e3fa860
2025-09-29T14:57:26.651 [DEBUG] [Thread-159209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:26.670 [DEBUG] [Thread-159209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:57:26.670 [INFO] [Thread-159209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:57:26.673 [DEBUG] [Thread-159209] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:26.674 [DEBUG] [Thread-159209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:26.675 [DEBUG] [Thread-159209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:26.675 [DEBUG] [Thread-159209] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:26.675 [DEBUG] [Thread-159209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:26.675 [DEBUG] [Thread-159209] [transport.py] [_log()] Compression: none
2025-09-29T14:57:26.675 [DEBUG] [Thread-159209] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:26.692 [DEBUG] [Thread-159209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:26.692 [DEBUG] [Thread-159209] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:26.693 [DEBUG] [Thread-159209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:57:26.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:57:26.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:26.694 [DEBUG] [Thread-159209] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:26.695 [DEBUG] [Thread-159209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:26.695 [DEBUG] [Thread-159209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:26.695 [DEBUG] [Thread-159209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:57:26.695 [DEBUG] [Thread-159209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:26.709 [INFO] [Thread-159209] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:26.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:27.489 [DEBUG] [Thread-159209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:27.489 [DEBUG] [Thread-159209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:27.489 [DEBUG] [Thread-159209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:57:27.530 [DEBUG] [Thread-159209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:27.530 [DEBUG] [Thread-159209] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:27.533 [DEBUG] [Thread-159209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:27.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:27.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:57:27.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:57:27.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:57:27.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:27.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:57:27.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:27.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.539304 -999.00  +16.30   9.30     39   +2.50 1 1 1 1 1   888    0 14.54 27.28 ----- 12.3 9.3 195.6 16.1 24.4 -28.9 23.2 -33.3 25.3 -28.1 26.6 -30.4
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.539304
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:57:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:56:55', tmtdew=15.35, humidity=35.03, cloud=0.0, wind=18.56, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:56:35.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:57:27.552 [DEBUG] [Thread-159209] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:27.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:57:27.638 [DEBUG] [Thread-159212] [transport.py] [_log()] starting thread (client mode): 0x30dde3b0
2025-09-29T14:57:27.638 [DEBUG] [Thread-159212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:27.653 [DEBUG] [Thread-159212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:57:27.653 [INFO] [Thread-159212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] Compression: none
2025-09-29T14:57:27.661 [DEBUG] [Thread-159212] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:27.723 [DEBUG] [Thread-159212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:27.724 [DEBUG] [Thread-159212] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:27.724 [DEBUG] [Thread-159212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:57:27.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:57:27.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:27.778 [DEBUG] [Thread-159212] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:27.778 [DEBUG] [Thread-159212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:27.779 [DEBUG] [Thread-159212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:27.779 [DEBUG] [Thread-159212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:57:27.779 [DEBUG] [Thread-159212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:27.794 [INFO] [Thread-159212] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:27.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:57:27.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:28.803 [DEBUG] [Thread-159212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:28.803 [DEBUG] [Thread-159212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:28.851 [DEBUG] [Thread-159212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:28.851 [DEBUG] [Thread-159212] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:28.859 [DEBUG] [Thread-159212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:28.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:28.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:57:28.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:57:28.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:28.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:28.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:28.892 [DEBUG] [Thread-159212] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:36.873 [DEBUG] [Thread-159214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:57:38.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:57:38.894 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:57:38.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:57:39.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 57, 27), 15.44, 34.84, 0.0, 20.54, 15.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:57:39.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:57:27
2025-09-29T14:57:39.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:57:39.718 [DEBUG] [Thread-159215] [transport.py] [_log()] starting thread (client mode): 0x2b956a70
2025-09-29T14:57:39.719 [DEBUG] [Thread-159215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:39.739 [DEBUG] [Thread-159215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:57:39.739 [INFO] [Thread-159215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:57:39.742 [DEBUG] [Thread-159215] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:39.742 [DEBUG] [Thread-159215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:57:39.742 [DEBUG] [Thread-159215] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:39.742 [DEBUG] [Thread-159215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:39.743 [DEBUG] [Thread-159215] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:39.744 [DEBUG] [Thread-159215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:39.744 [DEBUG] [Thread-159215] [transport.py] [_log()] Compression: none
2025-09-29T14:57:39.744 [DEBUG] [Thread-159215] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:39.761 [DEBUG] [Thread-159215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:39.762 [DEBUG] [Thread-159215] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:39.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:57:39.763 [DEBUG] [Thread-159215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:57:39.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:39.765 [DEBUG] [Thread-159215] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:39.765 [DEBUG] [Thread-159215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:39.765 [DEBUG] [Thread-159215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:39.766 [DEBUG] [Thread-159215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:57:39.766 [DEBUG] [Thread-159215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:39.794 [INFO] [Thread-159215] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:39.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:40.446 [DEBUG] [Thread-159215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:40.446 [DEBUG] [Thread-159215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:40.447 [DEBUG] [Thread-159215] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:57:40.487 [DEBUG] [Thread-159215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:40.487 [DEBUG] [Thread-159215] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:40.490 [DEBUG] [Thread-159215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:40.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:40.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:57:40.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:57:40.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:57:40.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:40.516 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:57:40.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:40.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:40.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:57:40.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.539651 -999.00  +16.30  14.68     39   +2.30 1 1 1 1 1   888    0 14.68 27.00 ----- 16.9 14.7 188.6 22.9 24.3 -30.4 23.0 -32.2 25.1 -29.3 26.3 -31.6
2025-09-29T14:57:40.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:57:40.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:57:40.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.539651
2025-09-29T14:57:40.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:57:40.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:57:40.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:57:40.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:57:40.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:57:40.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:57:27', tmtdew=15.44, humidity=34.84, cloud=0.0, wind=20.54, temperature=15.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:57:05.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:57:40.519 [DEBUG] [Thread-159215] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:40.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:57:40.628 [DEBUG] [Thread-159218] [transport.py] [_log()] starting thread (client mode): 0x30dde320
2025-09-29T14:57:40.628 [DEBUG] [Thread-159218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:40.649 [DEBUG] [Thread-159218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:57:40.649 [INFO] [Thread-159218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:57:40.656 [DEBUG] [Thread-159218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:40.657 [DEBUG] [Thread-159218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:40.658 [DEBUG] [Thread-159218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:40.658 [DEBUG] [Thread-159218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:40.658 [DEBUG] [Thread-159218] [transport.py] [_log()] Compression: none
2025-09-29T14:57:40.658 [DEBUG] [Thread-159218] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:40.714 [DEBUG] [Thread-159218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:40.715 [DEBUG] [Thread-159218] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:40.715 [DEBUG] [Thread-159218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:57:40.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:57:40.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:40.773 [DEBUG] [Thread-159218] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:40.773 [DEBUG] [Thread-159218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:40.773 [DEBUG] [Thread-159218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:40.773 [DEBUG] [Thread-159218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:57:40.773 [DEBUG] [Thread-159218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:40.793 [INFO] [Thread-159218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:40.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:57:40.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:41.811 [DEBUG] [Thread-159218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:41.811 [DEBUG] [Thread-159218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:41.859 [DEBUG] [Thread-159218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:41.859 [DEBUG] [Thread-159218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:41.868 [DEBUG] [Thread-159218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:41.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:41.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:57:41.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:57:41.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:41.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:41.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:41.904 [DEBUG] [Thread-159218] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:45.554 [DEBUG] [Thread-159220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:57:51.902 [DEBUG] [Thread-159221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:57:51.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:57:51.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:57:51.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:57:52.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 57, 27), 15.44, 34.84, 0.0, 20.54, 15.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:57:52.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:57:27
2025-09-29T14:57:52.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:57:52.746 [DEBUG] [Thread-159222] [transport.py] [_log()] starting thread (client mode): 0x30ddf940
2025-09-29T14:57:52.746 [DEBUG] [Thread-159222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:52.767 [DEBUG] [Thread-159222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:57:52.768 [INFO] [Thread-159222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:57:52.769 [DEBUG] [Thread-159222] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:52.769 [DEBUG] [Thread-159222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] Compression: none
2025-09-29T14:57:52.770 [DEBUG] [Thread-159222] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:52.778 [DEBUG] [Thread-159222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:52.778 [DEBUG] [Thread-159222] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:52.779 [DEBUG] [Thread-159222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:57:52.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:57:52.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:52.780 [DEBUG] [Thread-159222] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:52.780 [DEBUG] [Thread-159222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:52.780 [DEBUG] [Thread-159222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:52.781 [DEBUG] [Thread-159222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:57:52.781 [DEBUG] [Thread-159222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:52.795 [INFO] [Thread-159222] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:52.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:53.624 [DEBUG] [Thread-159222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:53.624 [DEBUG] [Thread-159222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:53.624 [DEBUG] [Thread-159222] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:57:53.665 [DEBUG] [Thread-159222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:53.665 [DEBUG] [Thread-159222] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:53.669 [DEBUG] [Thread-159222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:53.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:53.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:57:53.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:57:53.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:57:53.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:53.689 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:57:53.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:53.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:53.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:57:53.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.539651 -999.00  +16.30  14.68     39   +2.30 1 1 1 1 1   888    0 14.68 27.00 ----- 16.9 14.7 188.6 22.9 24.3 -30.4 23.0 -32.2 25.1 -29.3 26.3 -31.6
2025-09-29T14:57:53.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:57:53.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:57:53.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.539651
2025-09-29T14:57:53.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:57:53.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:57:53.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:57:53.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:57:53.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:57:53.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:57:27', tmtdew=15.44, humidity=34.84, cloud=0.0, wind=20.54, temperature=15.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:57:05.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:57:53.690 [DEBUG] [Thread-159222] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:57:53.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:57:53.773 [DEBUG] [Thread-159225] [transport.py] [_log()] starting thread (client mode): 0x2b957cd0
2025-09-29T14:57:53.773 [DEBUG] [Thread-159225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:57:53.788 [DEBUG] [Thread-159225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:57:53.788 [INFO] [Thread-159225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] client lang: <none>
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] server lang: <none>
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] kex follows: False
2025-09-29T14:57:53.796 [DEBUG] [Thread-159225] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:57:53.797 [DEBUG] [Thread-159225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:57:53.797 [DEBUG] [Thread-159225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:57:53.797 [DEBUG] [Thread-159225] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:57:53.797 [DEBUG] [Thread-159225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:57:53.797 [DEBUG] [Thread-159225] [transport.py] [_log()] Compression: none
2025-09-29T14:57:53.797 [DEBUG] [Thread-159225] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:57:53.854 [DEBUG] [Thread-159225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:57:53.854 [DEBUG] [Thread-159225] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:57:53.855 [DEBUG] [Thread-159225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:57:53.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:57:53.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:57:53.911 [DEBUG] [Thread-159225] [transport.py] [_log()] userauth is OK
2025-09-29T14:57:53.911 [DEBUG] [Thread-159225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:57:53.911 [DEBUG] [Thread-159225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:57:53.911 [DEBUG] [Thread-159225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:57:53.912 [DEBUG] [Thread-159225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:57:53.932 [INFO] [Thread-159225] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:57:53.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:57:53.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:57:54.914 [DEBUG] [Thread-159225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:57:54.914 [DEBUG] [Thread-159225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:57:54.962 [DEBUG] [Thread-159225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:57:54.962 [DEBUG] [Thread-159225] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:57:54.972 [DEBUG] [Thread-159225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:57:54.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:57:54.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:57:54.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:57:54.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:57:54.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:57:54.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:57:55.006 [DEBUG] [Thread-159225] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:05.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:58:05.003 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:58:05.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:58:05.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 57, 59), 15.58, 34.76, 0.0, 21.81, 15.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:58:05.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:57:59
2025-09-29T14:58:05.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:58:05.846 [DEBUG] [Thread-159227] [transport.py] [_log()] starting thread (client mode): 0x2b956aa0
2025-09-29T14:58:05.846 [DEBUG] [Thread-159227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:05.865 [DEBUG] [Thread-159227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:58:05.865 [INFO] [Thread-159227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:58:05.866 [DEBUG] [Thread-159227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:05.866 [DEBUG] [Thread-159227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] Compression: none
2025-09-29T14:58:05.867 [DEBUG] [Thread-159227] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:05.876 [DEBUG] [Thread-159227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:05.877 [DEBUG] [Thread-159227] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:05.877 [DEBUG] [Thread-159227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:58:05.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:58:05.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:05.879 [DEBUG] [Thread-159227] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:05.879 [DEBUG] [Thread-159227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:05.879 [DEBUG] [Thread-159227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:05.879 [DEBUG] [Thread-159227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:58:05.879 [DEBUG] [Thread-159227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:05.902 [INFO] [Thread-159227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:05.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:06.488 [DEBUG] [Thread-159227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:06.489 [DEBUG] [Thread-159227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:06.489 [DEBUG] [Thread-159227] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:58:06.529 [DEBUG] [Thread-159227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:06.530 [DEBUG] [Thread-159227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:06.533 [DEBUG] [Thread-159227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:06.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:06.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:58:06.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:58:06.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:58:06.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:06.558 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:58:06.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:06.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:06.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:58:06.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.539998 -999.00  +16.40  16.26     38   +2.20 1 1 1 1 1   888    0 14.62 23.37 ----- 15.3 16.3 190.8 19.8 24.2 -29.5 23.0 -32.0 25.0 -29.0 26.3 -30.8
2025-09-29T14:58:06.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:58:06.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:58:06.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.539998
2025-09-29T14:58:06.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:58:06.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:58:06.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:58:06.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:58:06.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:58:06.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:57:59', tmtdew=15.58, humidity=34.76, cloud=0.0, wind=21.81, temperature=15.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:57:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:58:06.561 [DEBUG] [Thread-159227] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:06.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:58:06.656 [DEBUG] [Thread-159230] [transport.py] [_log()] starting thread (client mode): 0x2e3fbe80
2025-09-29T14:58:06.656 [DEBUG] [Thread-159230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:06.673 [DEBUG] [Thread-159230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:58:06.673 [INFO] [Thread-159230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:58:06.681 [DEBUG] [Thread-159230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:06.681 [DEBUG] [Thread-159230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:58:06.681 [DEBUG] [Thread-159230] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:06.681 [DEBUG] [Thread-159230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:06.681 [DEBUG] [Thread-159230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] Compression: none
2025-09-29T14:58:06.682 [DEBUG] [Thread-159230] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:06.738 [DEBUG] [Thread-159230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:06.738 [DEBUG] [Thread-159230] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:06.739 [DEBUG] [Thread-159230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:58:06.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:58:06.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:06.794 [DEBUG] [Thread-159230] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:06.794 [DEBUG] [Thread-159230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:06.795 [DEBUG] [Thread-159230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:06.795 [DEBUG] [Thread-159230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:58:06.795 [DEBUG] [Thread-159230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:06.820 [INFO] [Thread-159230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:06.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:58:06.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:06.951 [DEBUG] [Thread-159232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:58:07.812 [DEBUG] [Thread-159230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:07.812 [DEBUG] [Thread-159230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:07.859 [DEBUG] [Thread-159230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:07.860 [DEBUG] [Thread-159230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:07.869 [DEBUG] [Thread-159230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:07.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:07.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:58:07.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:58:07.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:07.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:07.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:07.904 [DEBUG] [Thread-159230] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:08.722 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:58:08.724 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:58:17.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:58:17.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:58:17.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:58:18.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 57, 59), 15.58, 34.76, 0.0, 21.81, 15.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:58:18.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:57:59
2025-09-29T14:58:18.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:58:18.731 [DEBUG] [Thread-159233] [transport.py] [_log()] starting thread (client mode): 0x2b957970
2025-09-29T14:58:18.731 [DEBUG] [Thread-159233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:18.754 [DEBUG] [Thread-159233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:58:18.754 [INFO] [Thread-159233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:58:18.757 [DEBUG] [Thread-159233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:18.758 [DEBUG] [Thread-159233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:18.759 [DEBUG] [Thread-159233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:18.759 [DEBUG] [Thread-159233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:18.759 [DEBUG] [Thread-159233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:18.759 [DEBUG] [Thread-159233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:18.759 [DEBUG] [Thread-159233] [transport.py] [_log()] Compression: none
2025-09-29T14:58:18.759 [DEBUG] [Thread-159233] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:18.778 [DEBUG] [Thread-159233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:18.779 [DEBUG] [Thread-159233] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:18.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:58:18.780 [DEBUG] [Thread-159233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:58:18.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:18.781 [DEBUG] [Thread-159233] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:18.781 [DEBUG] [Thread-159233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:18.782 [DEBUG] [Thread-159233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:18.782 [DEBUG] [Thread-159233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:58:18.782 [DEBUG] [Thread-159233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:18.804 [INFO] [Thread-159233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:18.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:19.563 [DEBUG] [Thread-159233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:19.564 [DEBUG] [Thread-159233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:19.564 [DEBUG] [Thread-159233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:58:19.604 [DEBUG] [Thread-159233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:19.605 [DEBUG] [Thread-159233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:19.607 [DEBUG] [Thread-159233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:19.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:19.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:58:19.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:58:19.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:58:19.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:19.630 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:58:19.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:19.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:19.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:58:19.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.539998 -999.00  +16.40  16.26     38   +2.20 1 1 1 1 1   888    0 14.62 23.37 ----- 15.3 16.3 190.8 19.8 24.2 -29.5 23.0 -32.0 25.0 -29.0 26.3 -30.8
2025-09-29T14:58:19.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:58:19.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:58:19.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.539998
2025-09-29T14:58:19.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:58:19.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:58:19.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:58:19.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:58:19.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:58:19.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:57:59', tmtdew=15.58, humidity=34.76, cloud=0.0, wind=21.81, temperature=15.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:57:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:58:19.633 [DEBUG] [Thread-159233] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:19.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:58:19.727 [DEBUG] [Thread-159236] [transport.py] [_log()] starting thread (client mode): 0x2e3fb0a0
2025-09-29T14:58:19.727 [DEBUG] [Thread-159236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:19.741 [DEBUG] [Thread-159236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:58:19.741 [INFO] [Thread-159236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] Compression: none
2025-09-29T14:58:19.749 [DEBUG] [Thread-159236] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:19.805 [DEBUG] [Thread-159236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:19.806 [DEBUG] [Thread-159236] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:19.806 [DEBUG] [Thread-159236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:58:19.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:58:19.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:19.862 [DEBUG] [Thread-159236] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:19.862 [DEBUG] [Thread-159236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:19.863 [DEBUG] [Thread-159236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:19.863 [DEBUG] [Thread-159236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:58:19.863 [DEBUG] [Thread-159236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:19.881 [INFO] [Thread-159236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:19.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:58:19.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:20.852 [DEBUG] [Thread-159236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:20.852 [DEBUG] [Thread-159236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:20.900 [DEBUG] [Thread-159236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:20.900 [DEBUG] [Thread-159236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:20.909 [DEBUG] [Thread-159236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:20.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:20.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:58:20.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:58:20.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:20.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:20.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:20.943 [DEBUG] [Thread-159236] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:22.000 [DEBUG] [Thread-159238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:58:30.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:58:30.946 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:58:30.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:58:31.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 57, 59), 15.58, 34.76, 0.0, 21.81, 15.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:58:31.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:57:59
2025-09-29T14:58:31.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:58:31.786 [DEBUG] [Thread-159239] [transport.py] [_log()] starting thread (client mode): 0x2e3f9600
2025-09-29T14:58:31.786 [DEBUG] [Thread-159239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:31.807 [DEBUG] [Thread-159239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:58:31.807 [INFO] [Thread-159239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] Compression: none
2025-09-29T14:58:31.811 [DEBUG] [Thread-159239] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:31.828 [DEBUG] [Thread-159239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:31.828 [DEBUG] [Thread-159239] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:31.829 [DEBUG] [Thread-159239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:58:31.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:58:31.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:31.830 [DEBUG] [Thread-159239] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:31.830 [DEBUG] [Thread-159239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:31.830 [DEBUG] [Thread-159239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:31.830 [DEBUG] [Thread-159239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:58:31.830 [DEBUG] [Thread-159239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:31.840 [INFO] [Thread-159239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:31.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:32.575 [DEBUG] [Thread-159239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:32.575 [DEBUG] [Thread-159239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:32.575 [DEBUG] [Thread-159239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:58:32.617 [DEBUG] [Thread-159239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:32.617 [DEBUG] [Thread-159239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:32.618 [DEBUG] [Thread-159239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:32.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:32.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:58:32.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:58:32.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:58:32.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:32.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:58:32.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:32.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.539998 -999.00  +16.40  16.26     38   +2.20 1 1 1 1 1   888    0 14.62 23.37 ----- 15.3 16.3 190.8 19.8 24.2 -29.5 23.0 -32.0 25.0 -29.0 26.3 -30.8
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.539998
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:58:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:57:59', tmtdew=15.58, humidity=34.76, cloud=0.0, wind=21.81, temperature=15.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:57:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:58:32.635 [DEBUG] [Thread-159239] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:32.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:58:32.724 [DEBUG] [Thread-159242] [transport.py] [_log()] starting thread (client mode): 0x30ddfeb0
2025-09-29T14:58:32.724 [DEBUG] [Thread-159242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:32.740 [DEBUG] [Thread-159242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:58:32.740 [INFO] [Thread-159242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:58:32.747 [DEBUG] [Thread-159242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:32.747 [DEBUG] [Thread-159242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:58:32.747 [DEBUG] [Thread-159242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:32.747 [DEBUG] [Thread-159242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:32.747 [DEBUG] [Thread-159242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:32.747 [DEBUG] [Thread-159242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:32.747 [DEBUG] [Thread-159242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] Compression: none
2025-09-29T14:58:32.748 [DEBUG] [Thread-159242] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:32.805 [DEBUG] [Thread-159242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:32.805 [DEBUG] [Thread-159242] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:32.805 [DEBUG] [Thread-159242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:58:32.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:58:32.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:32.862 [DEBUG] [Thread-159242] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:32.862 [DEBUG] [Thread-159242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:32.862 [DEBUG] [Thread-159242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:32.862 [DEBUG] [Thread-159242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:58:32.862 [DEBUG] [Thread-159242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:32.876 [INFO] [Thread-159242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:32.876 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:58:32.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:33.943 [DEBUG] [Thread-159242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:33.943 [DEBUG] [Thread-159242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:33.992 [DEBUG] [Thread-159242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:33.992 [DEBUG] [Thread-159242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:34.002 [DEBUG] [Thread-159242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:34.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:34.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:58:34.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:58:34.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:34.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:34.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:34.038 [DEBUG] [Thread-159242] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:37.033 [DEBUG] [Thread-159244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:58:44.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:58:44.041 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:58:44.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:58:44.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 58, 31), 15.71, 34.46, 0.0, 18.28, 15.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:58:44.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:58:31
2025-09-29T14:58:44.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:58:44.897 [DEBUG] [Thread-159245] [transport.py] [_log()] starting thread (client mode): 0x2e3753f0
2025-09-29T14:58:44.897 [DEBUG] [Thread-159245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:44.917 [DEBUG] [Thread-159245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:58:44.917 [INFO] [Thread-159245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:58:44.921 [DEBUG] [Thread-159245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:44.921 [DEBUG] [Thread-159245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:58:44.921 [DEBUG] [Thread-159245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:44.921 [DEBUG] [Thread-159245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:44.921 [DEBUG] [Thread-159245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:44.921 [DEBUG] [Thread-159245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:44.921 [DEBUG] [Thread-159245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:44.921 [DEBUG] [Thread-159245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] Compression: none
2025-09-29T14:58:44.922 [DEBUG] [Thread-159245] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:44.938 [DEBUG] [Thread-159245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:44.939 [DEBUG] [Thread-159245] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:44.939 [DEBUG] [Thread-159245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:58:44.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:58:44.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:44.941 [DEBUG] [Thread-159245] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:44.941 [DEBUG] [Thread-159245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:44.941 [DEBUG] [Thread-159245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:44.941 [DEBUG] [Thread-159245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:58:44.941 [DEBUG] [Thread-159245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:44.975 [INFO] [Thread-159245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:44.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:45.561 [DEBUG] [Thread-159245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:45.561 [DEBUG] [Thread-159245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:45.561 [DEBUG] [Thread-159245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:58:45.587 [DEBUG] [Thread-159247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:58:45.602 [DEBUG] [Thread-159245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:45.602 [DEBUG] [Thread-159245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:45.605 [DEBUG] [Thread-159245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:45.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:45.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:58:45.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:58:45.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:58:45.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:45.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:58:45.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:45.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:45.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:58:45.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.540346 -999.00  +16.50  12.50     38   +2.20 1 1 1 1 1   888    0 14.72 23.70 ----- 13.0 12.5 188.6 17.6 24.1 -29.8 22.9 -35.2 24.9 -29.2 26.2 -31.2
2025-09-29T14:58:45.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:58:45.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:58:45.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.540346
2025-09-29T14:58:45.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:58:45.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:58:45.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:58:45.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:58:45.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:58:45.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:58:31', tmtdew=15.71, humidity=34.46, cloud=0.0, wind=18.28, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:58:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:58:45.628 [DEBUG] [Thread-159245] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:45.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:58:45.727 [DEBUG] [Thread-159249] [transport.py] [_log()] starting thread (client mode): 0x2b9b9000
2025-09-29T14:58:45.727 [DEBUG] [Thread-159249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:45.746 [DEBUG] [Thread-159249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:58:45.746 [INFO] [Thread-159249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:58:45.754 [DEBUG] [Thread-159249] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:45.754 [DEBUG] [Thread-159249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:58:45.754 [DEBUG] [Thread-159249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:45.754 [DEBUG] [Thread-159249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:45.754 [DEBUG] [Thread-159249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] Compression: none
2025-09-29T14:58:45.755 [DEBUG] [Thread-159249] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:45.813 [DEBUG] [Thread-159249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:45.814 [DEBUG] [Thread-159249] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:45.814 [DEBUG] [Thread-159249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:58:45.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:58:45.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:45.869 [DEBUG] [Thread-159249] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:45.870 [DEBUG] [Thread-159249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:45.870 [DEBUG] [Thread-159249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:45.870 [DEBUG] [Thread-159249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:58:45.870 [DEBUG] [Thread-159249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:45.888 [INFO] [Thread-159249] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:45.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:58:45.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:46.909 [DEBUG] [Thread-159249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:46.909 [DEBUG] [Thread-159249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:46.957 [DEBUG] [Thread-159249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:46.957 [DEBUG] [Thread-159249] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:46.965 [DEBUG] [Thread-159249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:46.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:46.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:58:46.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:58:46.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:46.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:46.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:46.996 [DEBUG] [Thread-159249] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:52.061 [DEBUG] [Thread-159251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:58:56.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:58:56.999 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:58:57.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:58:57.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 58, 31), 15.71, 34.46, 0.0, 18.28, 15.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:58:57.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:58:31
2025-09-29T14:58:57.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:58:57.831 [DEBUG] [Thread-159252] [transport.py] [_log()] starting thread (client mode): 0x2e3f9240
2025-09-29T14:58:57.831 [DEBUG] [Thread-159252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:57.846 [DEBUG] [Thread-159252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:58:57.846 [INFO] [Thread-159252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:58:57.849 [DEBUG] [Thread-159252] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] Compression: none
2025-09-29T14:58:57.850 [DEBUG] [Thread-159252] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:57.866 [DEBUG] [Thread-159252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:57.866 [DEBUG] [Thread-159252] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:57.867 [DEBUG] [Thread-159252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:58:57.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:58:57.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:57.868 [DEBUG] [Thread-159252] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:57.869 [DEBUG] [Thread-159252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:57.869 [DEBUG] [Thread-159252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:57.869 [DEBUG] [Thread-159252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:58:57.869 [DEBUG] [Thread-159252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:57.903 [INFO] [Thread-159252] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:57.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:58.659 [DEBUG] [Thread-159252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:58.659 [DEBUG] [Thread-159252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:58.659 [DEBUG] [Thread-159252] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:58:58.700 [DEBUG] [Thread-159252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:58.700 [DEBUG] [Thread-159252] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:58.705 [DEBUG] [Thread-159252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:58:58.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:58:58.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:58:58.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:58:58.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:58:58.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:58:58.726 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:58:58.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:58:58.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:58:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:58:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.540346 -999.00  +16.50  12.50     38   +2.20 1 1 1 1 1   888    0 14.72 23.70 ----- 13.0 12.5 188.6 17.6 24.1 -29.8 22.9 -35.2 24.9 -29.2 26.2 -31.2
2025-09-29T14:58:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:58:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:58:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.540346
2025-09-29T14:58:58.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:58:58.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:58:58.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:58:58.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:58:58.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:58:58.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:58:31', tmtdew=15.71, humidity=34.46, cloud=0.0, wind=18.28, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:58:05.894', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:58:58.728 [DEBUG] [Thread-159252] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:58:58.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:58:58.825 [DEBUG] [Thread-159255] [transport.py] [_log()] starting thread (client mode): 0x2b9cfc40
2025-09-29T14:58:58.825 [DEBUG] [Thread-159255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:58:58.840 [DEBUG] [Thread-159255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:58:58.840 [INFO] [Thread-159255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:58:58.847 [DEBUG] [Thread-159255] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:58:58.847 [DEBUG] [Thread-159255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:58:58.847 [DEBUG] [Thread-159255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] client lang: <none>
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] server lang: <none>
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] kex follows: False
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] Compression: none
2025-09-29T14:58:58.848 [DEBUG] [Thread-159255] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:58:58.904 [DEBUG] [Thread-159255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:58:58.904 [DEBUG] [Thread-159255] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:58:58.904 [DEBUG] [Thread-159255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:58:58.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:58:58.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:58:58.961 [DEBUG] [Thread-159255] [transport.py] [_log()] userauth is OK
2025-09-29T14:58:58.961 [DEBUG] [Thread-159255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:58:58.961 [DEBUG] [Thread-159255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:58:58.961 [DEBUG] [Thread-159255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:58:58.961 [DEBUG] [Thread-159255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:58:58.975 [INFO] [Thread-159255] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:58:58.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:58:58.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:58:59.931 [DEBUG] [Thread-159255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:58:59.932 [DEBUG] [Thread-159255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:58:59.979 [DEBUG] [Thread-159255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:58:59.979 [DEBUG] [Thread-159255] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:58:59.989 [DEBUG] [Thread-159255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:00.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:00.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:59:00.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:59:00.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:00.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:00.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:00.025 [DEBUG] [Thread-159255] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:07.109 [DEBUG] [Thread-159257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:59:08.862 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:59:08.864 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:59:10.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:59:10.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:59:10.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:59:10.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 59, 3), 15.68, 34.5, 0.0, 16.22, 15.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:59:10.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:59:03
2025-09-29T14:59:10.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:59:10.861 [DEBUG] [Thread-159258] [transport.py] [_log()] starting thread (client mode): 0x2e377130
2025-09-29T14:59:10.861 [DEBUG] [Thread-159258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:59:10.880 [DEBUG] [Thread-159258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:59:10.881 [INFO] [Thread-159258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:59:10.882 [DEBUG] [Thread-159258] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:59:10.882 [DEBUG] [Thread-159258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:59:10.882 [DEBUG] [Thread-159258] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:59:10.882 [DEBUG] [Thread-159258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] client lang: <none>
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] server lang: <none>
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] kex follows: False
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] Compression: none
2025-09-29T14:59:10.883 [DEBUG] [Thread-159258] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:59:10.895 [DEBUG] [Thread-159258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:59:10.896 [DEBUG] [Thread-159258] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:59:10.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:59:10.897 [DEBUG] [Thread-159258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:59:10.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:59:10.898 [DEBUG] [Thread-159258] [transport.py] [_log()] userauth is OK
2025-09-29T14:59:10.898 [DEBUG] [Thread-159258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:59:10.898 [DEBUG] [Thread-159258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:59:10.898 [DEBUG] [Thread-159258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:59:10.898 [DEBUG] [Thread-159258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:59:10.912 [INFO] [Thread-159258] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:59:10.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:59:11.536 [DEBUG] [Thread-159258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:59:11.536 [DEBUG] [Thread-159258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:59:11.536 [DEBUG] [Thread-159258] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:59:11.577 [DEBUG] [Thread-159258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:59:11.577 [DEBUG] [Thread-159258] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:59:11.580 [DEBUG] [Thread-159258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:11.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:11.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:59:11.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:59:11.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:59:11.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:11.594 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:59:11.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.541040 -999.00  +16.10   9.94     38   +1.80 1 1 1 1 1   888    0 14.50 18.97 ----- 9.7 9.9 191.0 14.0 24.0 -30.7 22.6 -30.3 24.8 -29.9 26.1 -31.4
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.541040
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:59:11.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:59:03', tmtdew=15.68, humidity=34.5, cloud=0.0, wind=16.22, temperature=15.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:59:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:59:11.595 [DEBUG] [Thread-159258] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:11.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:59:11.679 [DEBUG] [Thread-159261] [transport.py] [_log()] starting thread (client mode): 0x2e374790
2025-09-29T14:59:11.679 [DEBUG] [Thread-159261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:59:11.693 [DEBUG] [Thread-159261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:59:11.694 [INFO] [Thread-159261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:59:11.701 [DEBUG] [Thread-159261] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] client lang: <none>
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] server lang: <none>
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] kex follows: False
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] Compression: none
2025-09-29T14:59:11.702 [DEBUG] [Thread-159261] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:59:11.765 [DEBUG] [Thread-159261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:59:11.765 [DEBUG] [Thread-159261] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:59:11.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:59:11.766 [DEBUG] [Thread-159261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:59:11.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:59:11.821 [DEBUG] [Thread-159261] [transport.py] [_log()] userauth is OK
2025-09-29T14:59:11.821 [DEBUG] [Thread-159261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:59:11.821 [DEBUG] [Thread-159261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:59:11.822 [DEBUG] [Thread-159261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:59:11.822 [DEBUG] [Thread-159261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:59:11.843 [INFO] [Thread-159261] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:59:11.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:59:11.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:59:12.797 [DEBUG] [Thread-159261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:59:12.798 [DEBUG] [Thread-159261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:59:12.845 [DEBUG] [Thread-159261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:59:12.845 [DEBUG] [Thread-159261] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:59:12.854 [DEBUG] [Thread-159261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:12.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:12.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:59:12.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:59:12.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:12.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:12.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:12.887 [DEBUG] [Thread-159261] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:22.140 [DEBUG] [Thread-159263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:59:22.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:59:22.890 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:59:22.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:59:23.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 59, 3), 15.68, 34.5, 0.0, 16.22, 15.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:59:23.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:59:03
2025-09-29T14:59:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:59:23.716 [DEBUG] [Thread-159264] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-29T14:59:23.716 [DEBUG] [Thread-159264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:59:23.731 [DEBUG] [Thread-159264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:59:23.731 [INFO] [Thread-159264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] client lang: <none>
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] server lang: <none>
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] kex follows: False
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:59:23.735 [DEBUG] [Thread-159264] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:59:23.736 [DEBUG] [Thread-159264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:59:23.736 [DEBUG] [Thread-159264] [transport.py] [_log()] Compression: none
2025-09-29T14:59:23.736 [DEBUG] [Thread-159264] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:59:23.753 [DEBUG] [Thread-159264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:59:23.753 [DEBUG] [Thread-159264] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:59:23.754 [DEBUG] [Thread-159264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:59:23.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:59:23.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:59:23.755 [DEBUG] [Thread-159264] [transport.py] [_log()] userauth is OK
2025-09-29T14:59:23.756 [DEBUG] [Thread-159264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:59:23.756 [DEBUG] [Thread-159264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:59:23.756 [DEBUG] [Thread-159264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:59:23.756 [DEBUG] [Thread-159264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:59:23.770 [INFO] [Thread-159264] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:59:23.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:59:24.595 [DEBUG] [Thread-159264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:59:24.596 [DEBUG] [Thread-159264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:59:24.596 [DEBUG] [Thread-159264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:59:24.636 [DEBUG] [Thread-159264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:59:24.637 [DEBUG] [Thread-159264] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:59:24.640 [DEBUG] [Thread-159264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:24.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:24.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:59:24.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:59:24.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:59:24.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:24.664 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:59:24.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:24.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:59:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.541040 -999.00  +16.10   9.94     38   +1.80 1 1 1 1 1   888    0 14.50 18.97 ----- 9.7 9.9 191.0 14.0 24.0 -30.7 22.6 -30.3 24.8 -29.9 26.1 -31.4
2025-09-29T14:59:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:59:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:59:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.541040
2025-09-29T14:59:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:59:24.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:59:24.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:59:24.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:59:24.666 [DEBUG] [Thread-159264] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:24.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:59:24.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:59:03', tmtdew=15.68, humidity=34.5, cloud=0.0, wind=16.22, temperature=15.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:59:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:59:24.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:59:24.761 [DEBUG] [Thread-159267] [transport.py] [_log()] starting thread (client mode): 0x2b96c3a0
2025-09-29T14:59:24.761 [DEBUG] [Thread-159267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:59:24.778 [DEBUG] [Thread-159267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:59:24.779 [INFO] [Thread-159267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:59:24.786 [DEBUG] [Thread-159267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:59:24.786 [DEBUG] [Thread-159267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] client lang: <none>
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] server lang: <none>
2025-09-29T14:59:24.787 [DEBUG] [Thread-159267] [transport.py] [_log()] kex follows: False
2025-09-29T14:59:24.788 [DEBUG] [Thread-159267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:59:24.788 [DEBUG] [Thread-159267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:59:24.788 [DEBUG] [Thread-159267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:59:24.788 [DEBUG] [Thread-159267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:59:24.788 [DEBUG] [Thread-159267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:59:24.788 [DEBUG] [Thread-159267] [transport.py] [_log()] Compression: none
2025-09-29T14:59:24.788 [DEBUG] [Thread-159267] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:59:24.846 [DEBUG] [Thread-159267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:59:24.846 [DEBUG] [Thread-159267] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:59:24.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:59:24.848 [DEBUG] [Thread-159267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:59:24.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:59:24.901 [DEBUG] [Thread-159267] [transport.py] [_log()] userauth is OK
2025-09-29T14:59:24.901 [DEBUG] [Thread-159267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:59:24.901 [DEBUG] [Thread-159267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:59:24.901 [DEBUG] [Thread-159267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:59:24.902 [DEBUG] [Thread-159267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:59:24.920 [INFO] [Thread-159267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:59:24.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:59:24.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:59:25.953 [DEBUG] [Thread-159267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:59:25.953 [DEBUG] [Thread-159267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:59:26.001 [DEBUG] [Thread-159267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:59:26.002 [DEBUG] [Thread-159267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:59:26.011 [DEBUG] [Thread-159267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:26.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:26.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:59:26.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:59:26.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:26.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:26.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:26.045 [DEBUG] [Thread-159267] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:36.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:59:36.048 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:59:36.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:59:36.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 59, 3), 15.68, 34.5, 0.0, 16.22, 15.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:59:36.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:59:03
2025-09-29T14:59:36.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:59:36.928 [DEBUG] [Thread-159269] [transport.py] [_log()] starting thread (client mode): 0x2b96e920
2025-09-29T14:59:36.928 [DEBUG] [Thread-159269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:59:36.949 [DEBUG] [Thread-159269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:59:36.949 [INFO] [Thread-159269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:59:36.952 [DEBUG] [Thread-159269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:59:36.952 [DEBUG] [Thread-159269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:59:36.952 [DEBUG] [Thread-159269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:59:36.952 [DEBUG] [Thread-159269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:36.952 [DEBUG] [Thread-159269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:36.952 [DEBUG] [Thread-159269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] client lang: <none>
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] server lang: <none>
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] kex follows: False
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] Compression: none
2025-09-29T14:59:36.953 [DEBUG] [Thread-159269] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:59:36.968 [DEBUG] [Thread-159269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:59:36.968 [DEBUG] [Thread-159269] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:59:36.968 [DEBUG] [Thread-159269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:59:36.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:59:36.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:59:36.968 [DEBUG] [Thread-159269] [transport.py] [_log()] userauth is OK
2025-09-29T14:59:36.968 [DEBUG] [Thread-159269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:59:36.968 [DEBUG] [Thread-159269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:59:36.969 [DEBUG] [Thread-159269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:59:36.969 [DEBUG] [Thread-159269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:59:36.977 [INFO] [Thread-159269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:59:36.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:59:37.187 [DEBUG] [Thread-159271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:59:37.787 [DEBUG] [Thread-159269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:59:37.788 [DEBUG] [Thread-159269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:59:37.788 [DEBUG] [Thread-159269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:59:37.828 [DEBUG] [Thread-159269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:59:37.828 [DEBUG] [Thread-159269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:59:37.831 [DEBUG] [Thread-159269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:37.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:37.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:59:37.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:59:37.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:59:37.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:37.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:59:37.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:37.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:37.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:59:37.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.541040 -999.00  +16.10   9.94     38   +1.80 1 1 1 1 1   888    0 14.50 18.97 ----- 9.7 9.9 191.0 14.0 24.0 -30.7 22.6 -30.3 24.8 -29.9 26.1 -31.4
2025-09-29T14:59:37.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:59:37.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:59:37.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.541040
2025-09-29T14:59:37.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:59:37.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:59:37.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:59:37.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:59:37.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:59:37.853 [DEBUG] [Thread-159269] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:37.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:59:03', tmtdew=15.68, humidity=34.5, cloud=0.0, wind=16.22, temperature=15.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:59:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:59:37.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:59:37.951 [DEBUG] [Thread-159273] [transport.py] [_log()] starting thread (client mode): 0x2b9bb100
2025-09-29T14:59:37.951 [DEBUG] [Thread-159273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:59:37.965 [DEBUG] [Thread-159273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:59:37.965 [INFO] [Thread-159273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:59:37.972 [DEBUG] [Thread-159273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:59:37.972 [DEBUG] [Thread-159273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] client lang: <none>
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] server lang: <none>
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] kex follows: False
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] Compression: none
2025-09-29T14:59:37.973 [DEBUG] [Thread-159273] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:59:38.029 [DEBUG] [Thread-159273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:59:38.029 [DEBUG] [Thread-159273] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:59:38.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:59:38.030 [DEBUG] [Thread-159273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:59:38.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:59:38.085 [DEBUG] [Thread-159273] [transport.py] [_log()] userauth is OK
2025-09-29T14:59:38.085 [DEBUG] [Thread-159273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:59:38.085 [DEBUG] [Thread-159273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:59:38.085 [DEBUG] [Thread-159273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:59:38.085 [DEBUG] [Thread-159273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:59:38.104 [INFO] [Thread-159273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:59:38.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:59:38.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:59:39.079 [DEBUG] [Thread-159273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:59:39.080 [DEBUG] [Thread-159273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:59:39.127 [DEBUG] [Thread-159273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:59:39.127 [DEBUG] [Thread-159273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:59:39.135 [DEBUG] [Thread-159273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:39.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:39.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:59:39.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:59:39.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:39.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:39.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:39.168 [DEBUG] [Thread-159273] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:45.619 [DEBUG] [Thread-159275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T14:59:49.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T14:59:49.171 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T14:59:49.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T14:59:49.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 59, 35), 15.95, 33.85, 0.0, 12.58, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T14:59:49.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:59:35
2025-09-29T14:59:49.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T14:59:49.991 [DEBUG] [Thread-159276] [transport.py] [_log()] starting thread (client mode): 0x2e3ded10
2025-09-29T14:59:49.991 [DEBUG] [Thread-159276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:59:50.006 [DEBUG] [Thread-159276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T14:59:50.006 [INFO] [Thread-159276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] client lang: <none>
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] server lang: <none>
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] kex follows: False
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:59:50.010 [DEBUG] [Thread-159276] [transport.py] [_log()] Compression: none
2025-09-29T14:59:50.011 [DEBUG] [Thread-159276] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:59:50.026 [DEBUG] [Thread-159276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:59:50.026 [DEBUG] [Thread-159276] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:59:50.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T14:59:50.027 [DEBUG] [Thread-159276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T14:59:50.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:59:50.029 [DEBUG] [Thread-159276] [transport.py] [_log()] userauth is OK
2025-09-29T14:59:50.029 [DEBUG] [Thread-159276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:59:50.030 [DEBUG] [Thread-159276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:59:50.030 [DEBUG] [Thread-159276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T14:59:50.030 [DEBUG] [Thread-159276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:59:50.053 [INFO] [Thread-159276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:59:50.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:59:50.694 [DEBUG] [Thread-159276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:59:50.694 [DEBUG] [Thread-159276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:59:50.695 [DEBUG] [Thread-159276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T14:59:50.736 [DEBUG] [Thread-159276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:59:50.736 [DEBUG] [Thread-159276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:59:50.738 [DEBUG] [Thread-159276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:50.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:50.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T14:59:50.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T14:59:50.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T14:59:50.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:50.755 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T14:59:50.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:50.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.541387 -999.00  +16.10   8.20     38   +1.90 1 1 1 1 1   888    0 14.63 15.91 ----- 8.0 8.2 205.2 11.7 24.1 -29.8 22.9 -30.5 24.9 -28.9 26.1 -30.0
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.541387
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T14:59:50.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:59:35', tmtdew=15.95, humidity=33.85, cloud=0.0, wind=12.58, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:59:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T14:59:50.757 [DEBUG] [Thread-159276] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:50.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T14:59:50.840 [DEBUG] [Thread-159279] [transport.py] [_log()] starting thread (client mode): 0x2b9cef50
2025-09-29T14:59:50.840 [DEBUG] [Thread-159279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T14:59:50.858 [DEBUG] [Thread-159279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T14:59:50.859 [INFO] [Thread-159279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T14:59:50.866 [DEBUG] [Thread-159279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T14:59:50.866 [DEBUG] [Thread-159279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T14:59:50.867 [DEBUG] [Thread-159279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T14:59:50.867 [DEBUG] [Thread-159279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:50.867 [DEBUG] [Thread-159279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T14:59:50.867 [DEBUG] [Thread-159279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:50.867 [DEBUG] [Thread-159279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T14:59:50.867 [DEBUG] [Thread-159279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T14:59:50.867 [DEBUG] [Thread-159279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T14:59:50.867 [DEBUG] [Thread-159279] [transport.py] [_log()] client lang: <none>
2025-09-29T14:59:50.868 [DEBUG] [Thread-159279] [transport.py] [_log()] server lang: <none>
2025-09-29T14:59:50.868 [DEBUG] [Thread-159279] [transport.py] [_log()] kex follows: False
2025-09-29T14:59:50.868 [DEBUG] [Thread-159279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T14:59:50.868 [DEBUG] [Thread-159279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T14:59:50.868 [DEBUG] [Thread-159279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T14:59:50.868 [DEBUG] [Thread-159279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T14:59:50.868 [DEBUG] [Thread-159279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T14:59:50.868 [DEBUG] [Thread-159279] [transport.py] [_log()] Compression: none
2025-09-29T14:59:50.869 [DEBUG] [Thread-159279] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T14:59:50.924 [DEBUG] [Thread-159279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T14:59:50.925 [DEBUG] [Thread-159279] [transport.py] [_log()] Switch to new keys ...
2025-09-29T14:59:50.925 [DEBUG] [Thread-159279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T14:59:50.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T14:59:50.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T14:59:50.982 [DEBUG] [Thread-159279] [transport.py] [_log()] userauth is OK
2025-09-29T14:59:50.982 [DEBUG] [Thread-159279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T14:59:50.982 [DEBUG] [Thread-159279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T14:59:50.982 [DEBUG] [Thread-159279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T14:59:50.983 [DEBUG] [Thread-159279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T14:59:51.003 [INFO] [Thread-159279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T14:59:51.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T14:59:51.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T14:59:52.001 [DEBUG] [Thread-159279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T14:59:52.002 [DEBUG] [Thread-159279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T14:59:52.051 [DEBUG] [Thread-159279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T14:59:52.051 [DEBUG] [Thread-159279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T14:59:52.061 [DEBUG] [Thread-159279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T14:59:52.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T14:59:52.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T14:59:52.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T14:59:52.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T14:59:52.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T14:59:52.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T14:59:52.097 [DEBUG] [Thread-159279] [transport.py] [_log()] EOF in transport thread
2025-09-29T14:59:52.213 [DEBUG] [Thread-159281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:00:02.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:00:02.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:00:02.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:00:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 14, 59, 35), 15.95, 33.85, 0.0, 12.58, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:00:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 14:59:35
2025-09-29T15:00:02.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:00:02.921 [DEBUG] [Thread-159282] [transport.py] [_log()] starting thread (client mode): 0x2b96dab0
2025-09-29T15:00:02.921 [DEBUG] [Thread-159282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:00:02.941 [DEBUG] [Thread-159282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:00:02.941 [INFO] [Thread-159282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:00:02.944 [DEBUG] [Thread-159282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:00:02.944 [DEBUG] [Thread-159282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:00:02.944 [DEBUG] [Thread-159282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] client lang: <none>
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] server lang: <none>
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] kex follows: False
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:00:02.945 [DEBUG] [Thread-159282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:00:02.946 [DEBUG] [Thread-159282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:00:02.946 [DEBUG] [Thread-159282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:00:02.946 [DEBUG] [Thread-159282] [transport.py] [_log()] Compression: none
2025-09-29T15:00:02.946 [DEBUG] [Thread-159282] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:00:02.964 [DEBUG] [Thread-159282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:00:02.965 [DEBUG] [Thread-159282] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:00:02.965 [DEBUG] [Thread-159282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:00:02.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:00:02.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:00:02.967 [DEBUG] [Thread-159282] [transport.py] [_log()] userauth is OK
2025-09-29T15:00:02.967 [DEBUG] [Thread-159282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:00:02.967 [DEBUG] [Thread-159282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:00:02.968 [DEBUG] [Thread-159282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:00:02.968 [DEBUG] [Thread-159282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:00:03.002 [INFO] [Thread-159282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:00:03.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:00:07.250 [DEBUG] [Thread-159284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:00:09.001 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:00:09.002 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:00:10.949 [DEBUG] [Thread-159282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:00:10.950 [DEBUG] [Thread-159282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:00:10.950 [DEBUG] [Thread-159282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:00:10.990 [DEBUG] [Thread-159282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:00:10.990 [DEBUG] [Thread-159282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:00:10.992 [DEBUG] [Thread-159282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:00:11.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:00:11.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:00:11.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:00:11.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:00:11.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:00:11.146 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:00:11.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:00:11.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:00:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:00:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.541387 -999.00  +16.10   8.20     38   +1.90 1 1 1 1 1   888    0 14.63 15.91 ----- 8.0 8.2 205.2 11.7 24.1 -29.8 22.9 -30.5 24.9 -28.9 26.1 -30.0
2025-09-29T15:00:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:00:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:00:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.541387
2025-09-29T15:00:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:00:11.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:00:11.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:00:11.148 [DEBUG] [Thread-159282] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:00:11.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:00:11.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:00:11.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T14:59:35', tmtdew=15.95, humidity=33.85, cloud=0.0, wind=12.58, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T12:59:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:00:11.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:00:11.245 [DEBUG] [Thread-159286] [transport.py] [_log()] starting thread (client mode): 0x2b94eb90
2025-09-29T15:00:11.245 [DEBUG] [Thread-159286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:00:11.259 [DEBUG] [Thread-159286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:00:11.259 [INFO] [Thread-159286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] client lang: <none>
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] server lang: <none>
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] kex follows: False
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] Compression: none
2025-09-29T15:00:11.267 [DEBUG] [Thread-159286] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:00:11.323 [DEBUG] [Thread-159286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:00:11.323 [DEBUG] [Thread-159286] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:00:11.323 [DEBUG] [Thread-159286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:00:11.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:00:11.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:00:11.381 [DEBUG] [Thread-159286] [transport.py] [_log()] userauth is OK
2025-09-29T15:00:11.381 [DEBUG] [Thread-159286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:00:11.381 [DEBUG] [Thread-159286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:00:11.381 [DEBUG] [Thread-159286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:00:11.381 [DEBUG] [Thread-159286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:00:11.400 [INFO] [Thread-159286] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:00:11.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:00:11.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:00:12.353 [DEBUG] [Thread-159286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:00:12.353 [DEBUG] [Thread-159286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:00:12.401 [DEBUG] [Thread-159286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:00:12.401 [DEBUG] [Thread-159286] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:00:12.410 [DEBUG] [Thread-159286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:00:12.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:00:12.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:00:12.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:00:12.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:00:12.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:00:12.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:00:12.445 [DEBUG] [Thread-159286] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:00:22.280 [DEBUG] [Thread-159288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:00:22.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:00:22.447 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:00:22.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:00:23.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 0, 7), 15.79, 34.18, 0.0, 10.82, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:00:23.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:00:07
2025-09-29T15:00:23.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:00:23.267 [DEBUG] [Thread-159289] [transport.py] [_log()] starting thread (client mode): 0x2b96f220
2025-09-29T15:00:23.267 [DEBUG] [Thread-159289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:00:23.285 [DEBUG] [Thread-159289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:00:23.286 [INFO] [Thread-159289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:00:23.289 [DEBUG] [Thread-159289] [transport.py] [_log()] client lang: <none>
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] server lang: <none>
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] kex follows: False
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] Compression: none
2025-09-29T15:00:23.290 [DEBUG] [Thread-159289] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:00:23.308 [DEBUG] [Thread-159289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:00:23.308 [DEBUG] [Thread-159289] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:00:23.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:00:23.310 [DEBUG] [Thread-159289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:00:23.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:00:23.312 [DEBUG] [Thread-159289] [transport.py] [_log()] userauth is OK
2025-09-29T15:00:23.312 [DEBUG] [Thread-159289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:00:23.313 [DEBUG] [Thread-159289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:00:23.313 [DEBUG] [Thread-159289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:00:23.313 [DEBUG] [Thread-159289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:00:23.337 [INFO] [Thread-159289] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:00:23.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:00:23.920 [DEBUG] [Thread-159289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:00:23.920 [DEBUG] [Thread-159289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:00:23.920 [DEBUG] [Thread-159289] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:00:23.961 [DEBUG] [Thread-159289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:00:23.962 [DEBUG] [Thread-159289] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:00:23.964 [DEBUG] [Thread-159289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:00:23.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:00:23.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:00:23.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:00:23.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:00:23.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:00:23.986 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:00:23.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:00:23.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:00:23.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:00:23.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.541734 -999.00  +16.10   7.23     38   +1.90 1 1 1 1 1   888    0 14.60 13.69 ----- 4.9 7.2 198.2 11.0 24.1 -29.6 23.1 -28.2 25.0 -28.8 26.3 -30.0
2025-09-29T15:00:23.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:00:23.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:00:23.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.541734
2025-09-29T15:00:23.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:00:23.987 [DEBUG] [Thread-159289] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:00:23.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:00:23.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:00:23.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:00:23.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:00:23.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:00:07', tmtdew=15.79, humidity=34.18, cloud=0.0, wind=10.82, temperature=15.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:00:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:00:24.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:00:24.078 [DEBUG] [Thread-159292] [transport.py] [_log()] starting thread (client mode): 0x2b94f0d0
2025-09-29T15:00:24.078 [DEBUG] [Thread-159292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:00:24.093 [DEBUG] [Thread-159292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:00:24.093 [INFO] [Thread-159292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] client lang: <none>
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] server lang: <none>
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] kex follows: False
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] Compression: none
2025-09-29T15:00:24.101 [DEBUG] [Thread-159292] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:00:24.164 [DEBUG] [Thread-159292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:00:24.165 [DEBUG] [Thread-159292] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:00:24.165 [DEBUG] [Thread-159292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:00:24.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:00:24.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:00:24.220 [DEBUG] [Thread-159292] [transport.py] [_log()] userauth is OK
2025-09-29T15:00:24.221 [DEBUG] [Thread-159292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:00:24.221 [DEBUG] [Thread-159292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:00:24.221 [DEBUG] [Thread-159292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:00:24.221 [DEBUG] [Thread-159292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:00:24.239 [INFO] [Thread-159292] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:00:24.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:00:24.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:00:25.227 [DEBUG] [Thread-159292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:00:25.227 [DEBUG] [Thread-159292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:00:25.275 [DEBUG] [Thread-159292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:00:25.275 [DEBUG] [Thread-159292] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:00:25.284 [DEBUG] [Thread-159292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:00:25.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:00:25.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:00:25.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:00:25.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:00:25.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:00:25.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:00:25.318 [DEBUG] [Thread-159292] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:00:35.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:00:35.321 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:00:35.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:00:35.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 0, 7), 15.79, 34.18, 0.0, 10.82, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:00:35.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:00:07
2025-09-29T15:00:36.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:00:36.163 [DEBUG] [Thread-159294] [transport.py] [_log()] starting thread (client mode): 0x2b9ccfa0
2025-09-29T15:00:36.163 [DEBUG] [Thread-159294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:00:36.183 [DEBUG] [Thread-159294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:00:36.183 [INFO] [Thread-159294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:00:36.186 [DEBUG] [Thread-159294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:00:36.186 [DEBUG] [Thread-159294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:00:36.186 [DEBUG] [Thread-159294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:00:36.186 [DEBUG] [Thread-159294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:36.186 [DEBUG] [Thread-159294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:00:36.186 [DEBUG] [Thread-159294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] client lang: <none>
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] server lang: <none>
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] kex follows: False
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] Compression: none
2025-09-29T15:00:36.187 [DEBUG] [Thread-159294] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:00:36.202 [DEBUG] [Thread-159294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:00:36.202 [DEBUG] [Thread-159294] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:00:36.202 [DEBUG] [Thread-159294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:00:36.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:00:36.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:00:36.203 [DEBUG] [Thread-159294] [transport.py] [_log()] userauth is OK
2025-09-29T15:00:36.203 [DEBUG] [Thread-159294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:00:36.203 [DEBUG] [Thread-159294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:00:36.203 [DEBUG] [Thread-159294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:00:36.203 [DEBUG] [Thread-159294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:00:36.212 [INFO] [Thread-159294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:00:36.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:00:36.953 [DEBUG] [Thread-159294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:00:36.954 [DEBUG] [Thread-159294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:00:36.954 [DEBUG] [Thread-159294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:00:36.995 [DEBUG] [Thread-159294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:00:36.995 [DEBUG] [Thread-159294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:00:36.996 [DEBUG] [Thread-159294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:00:37.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:00:37.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:00:37.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:00:37.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:00:37.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:00:37.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:00:37.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:00:37.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:00:37.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:00:37.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.541734 -999.00  +16.10   7.23     38   +1.90 1 1 1 1 1   888    0 14.60 13.69 ----- 4.9 7.2 198.2 11.0 24.1 -29.6 23.1 -28.2 25.0 -28.8 26.3 -30.0
2025-09-29T15:00:37.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:00:37.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:00:37.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.541734
2025-09-29T15:00:37.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:00:37.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:00:37.021 [DEBUG] [Thread-159294] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:00:37.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:00:37.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:00:37.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:00:37.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:00:07', tmtdew=15.79, humidity=34.18, cloud=0.0, wind=10.82, temperature=15.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:00:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:00:37.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:00:37.310 [DEBUG] [Thread-159297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:00:45.650 [DEBUG] [Thread-159298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:00:52.361 [DEBUG] [Thread-159299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:01:07.389 [DEBUG] [Thread-159300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:01:09.138 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:01:09.140 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:01:22.418 [DEBUG] [Thread-159301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:01:37.455 [DEBUG] [Thread-159302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:01:45.677 [DEBUG] [Thread-159303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:01:52.483 [DEBUG] [Thread-159304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:02:07.507 [DEBUG] [Thread-159305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:02:09.280 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:02:09.281 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:02:22.534 [DEBUG] [Thread-159306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:02:37.568 [DEBUG] [Thread-159307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:02:45.709 [DEBUG] [Thread-159308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:02:52.090 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T15:02:52.599 [DEBUG] [Thread-159309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:03:02.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:03:02.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:03:02.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:03:02.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 2, 46), 15.54, 34.71, 0.0, 12.32, 15.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:03:02.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:02:46
2025-09-29T15:03:02.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:03:02.972 [DEBUG] [Thread-159310] [transport.py] [_log()] starting thread (client mode): 0x2e3dd7b0
2025-09-29T15:03:02.972 [DEBUG] [Thread-159310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:02.993 [DEBUG] [Thread-159310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:03:02.993 [INFO] [Thread-159310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:03:02.996 [DEBUG] [Thread-159310] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:02.996 [DEBUG] [Thread-159310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] Compression: none
2025-09-29T15:03:02.997 [DEBUG] [Thread-159310] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:03.014 [DEBUG] [Thread-159310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:03.014 [DEBUG] [Thread-159310] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:03.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:03:03.015 [DEBUG] [Thread-159310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:03:03.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:03.016 [DEBUG] [Thread-159310] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:03.017 [DEBUG] [Thread-159310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:03.017 [DEBUG] [Thread-159310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:03.017 [DEBUG] [Thread-159310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:03:03.017 [DEBUG] [Thread-159310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:03.039 [INFO] [Thread-159310] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:03.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:03.626 [DEBUG] [Thread-159310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:03.626 [DEBUG] [Thread-159310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:03.627 [DEBUG] [Thread-159310] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:03:03.667 [DEBUG] [Thread-159310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:03.667 [DEBUG] [Thread-159310] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:03.669 [DEBUG] [Thread-159310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:03.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:03.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:03:03.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:03:03.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:03:03.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:03.684 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:03:03.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:03.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:03.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:03:03.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.543470 -999.00  +16.50  11.66     37   +2.10 1 1 1 1 1   888    0 14.25 8.92 ----- 9.4 11.7 218.1 15.4 24.3 -29.9 23.2 -28.5 25.0 -29.1 26.2 -30.5
2025-09-29T15:03:03.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:03:03.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:03:03.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.543470
2025-09-29T15:03:03.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:03:03.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:03:03.686 [DEBUG] [Thread-159310] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:03.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:03:03.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:03:03.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:03:03.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:02:46', tmtdew=15.54, humidity=34.71, cloud=0.0, wind=12.32, temperature=15.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:02:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:03:03.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:03:03.784 [DEBUG] [Thread-159313] [transport.py] [_log()] starting thread (client mode): 0x2e377460
2025-09-29T15:03:03.784 [DEBUG] [Thread-159313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:03.805 [DEBUG] [Thread-159313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:03:03.806 [INFO] [Thread-159313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:03:03.813 [DEBUG] [Thread-159313] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:03.814 [DEBUG] [Thread-159313] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:03.815 [DEBUG] [Thread-159313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:03.815 [DEBUG] [Thread-159313] [transport.py] [_log()] Compression: none
2025-09-29T15:03:03.815 [DEBUG] [Thread-159313] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:03.871 [DEBUG] [Thread-159313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:03.871 [DEBUG] [Thread-159313] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:03.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:03:03.872 [DEBUG] [Thread-159313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:03:03.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:03.927 [DEBUG] [Thread-159313] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:03.927 [DEBUG] [Thread-159313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:03.928 [DEBUG] [Thread-159313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:03.928 [DEBUG] [Thread-159313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:03:03.928 [DEBUG] [Thread-159313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:03.948 [INFO] [Thread-159313] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:03.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:03:03.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:04.971 [DEBUG] [Thread-159313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:04.971 [DEBUG] [Thread-159313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:05.019 [DEBUG] [Thread-159313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:05.019 [DEBUG] [Thread-159313] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:05.028 [DEBUG] [Thread-159313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:05.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:05.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:03:05.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:03:05.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:05.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:05.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:05.064 [DEBUG] [Thread-159313] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:07.628 [DEBUG] [Thread-159315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:03:09.426 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:03:09.426 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:03:15.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:03:15.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:03:15.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:03:15.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 2, 46), 15.54, 34.71, 0.0, 12.32, 15.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:03:15.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:02:46
2025-09-29T15:03:15.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:03:15.919 [DEBUG] [Thread-159316] [transport.py] [_log()] starting thread (client mode): 0x2b9cff10
2025-09-29T15:03:15.919 [DEBUG] [Thread-159316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:15.940 [DEBUG] [Thread-159316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:03:15.940 [INFO] [Thread-159316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] Compression: none
2025-09-29T15:03:15.943 [DEBUG] [Thread-159316] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:15.959 [DEBUG] [Thread-159316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:15.960 [DEBUG] [Thread-159316] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:15.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:03:15.961 [DEBUG] [Thread-159316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:03:15.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:15.962 [DEBUG] [Thread-159316] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:15.963 [DEBUG] [Thread-159316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:15.963 [DEBUG] [Thread-159316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:15.963 [DEBUG] [Thread-159316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:03:15.963 [DEBUG] [Thread-159316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:15.998 [INFO] [Thread-159316] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:15.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:16.641 [DEBUG] [Thread-159316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:16.642 [DEBUG] [Thread-159316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:16.642 [DEBUG] [Thread-159316] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:03:16.682 [DEBUG] [Thread-159316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:16.682 [DEBUG] [Thread-159316] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:16.685 [DEBUG] [Thread-159316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:16.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:16.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:03:16.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:03:16.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:03:16.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:16.707 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:03:16.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:16.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:16.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:03:16.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.543470 -999.00  +16.50  11.66     37   +2.10 1 1 1 1 1   888    0 14.25 8.92 ----- 9.4 11.7 218.1 15.4 24.3 -29.9 23.2 -28.5 25.0 -29.1 26.2 -30.5
2025-09-29T15:03:16.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:03:16.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:03:16.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.543470
2025-09-29T15:03:16.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:03:16.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:03:16.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:03:16.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:03:16.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:03:16.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:02:46', tmtdew=15.54, humidity=34.71, cloud=0.0, wind=12.32, temperature=15.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:02:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:03:16.710 [DEBUG] [Thread-159316] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:16.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:03:16.804 [DEBUG] [Thread-159319] [transport.py] [_log()] starting thread (client mode): 0x2e3ddc30
2025-09-29T15:03:16.804 [DEBUG] [Thread-159319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:16.819 [DEBUG] [Thread-159319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:03:16.819 [INFO] [Thread-159319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:03:16.826 [DEBUG] [Thread-159319] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:16.827 [DEBUG] [Thread-159319] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:16.828 [DEBUG] [Thread-159319] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:16.828 [DEBUG] [Thread-159319] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:16.828 [DEBUG] [Thread-159319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:16.828 [DEBUG] [Thread-159319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:16.828 [DEBUG] [Thread-159319] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:16.828 [DEBUG] [Thread-159319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:16.828 [DEBUG] [Thread-159319] [transport.py] [_log()] Compression: none
2025-09-29T15:03:16.828 [DEBUG] [Thread-159319] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:16.881 [DEBUG] [Thread-159319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:16.881 [DEBUG] [Thread-159319] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:16.882 [DEBUG] [Thread-159319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:03:16.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:03:16.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:16.939 [DEBUG] [Thread-159319] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:16.939 [DEBUG] [Thread-159319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:16.939 [DEBUG] [Thread-159319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:16.939 [DEBUG] [Thread-159319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:03:16.939 [DEBUG] [Thread-159319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:16.953 [INFO] [Thread-159319] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:16.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:03:16.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:17.931 [DEBUG] [Thread-159319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:17.931 [DEBUG] [Thread-159319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:17.979 [DEBUG] [Thread-159319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:17.979 [DEBUG] [Thread-159319] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:17.988 [DEBUG] [Thread-159319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:17.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:17.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:03:18.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:03:18.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:18.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:18.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:18.024 [DEBUG] [Thread-159319] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:22.663 [DEBUG] [Thread-159321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:03:28.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:03:28.027 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:03:28.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:03:28.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 3, 18), 15.53, 34.74, 0.0, 12.32, 15.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:03:28.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:03:18
2025-09-29T15:03:28.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:03:28.886 [DEBUG] [Thread-159322] [transport.py] [_log()] starting thread (client mode): 0x2b96cca0
2025-09-29T15:03:28.886 [DEBUG] [Thread-159322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:28.906 [DEBUG] [Thread-159322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:03:28.906 [INFO] [Thread-159322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:28.909 [DEBUG] [Thread-159322] [transport.py] [_log()] Compression: none
2025-09-29T15:03:28.910 [DEBUG] [Thread-159322] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:28.926 [DEBUG] [Thread-159322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:28.927 [DEBUG] [Thread-159322] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:28.927 [DEBUG] [Thread-159322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:03:28.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:03:28.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:28.929 [DEBUG] [Thread-159322] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:28.930 [DEBUG] [Thread-159322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:28.930 [DEBUG] [Thread-159322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:28.930 [DEBUG] [Thread-159322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:03:28.930 [DEBUG] [Thread-159322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:28.954 [INFO] [Thread-159322] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:28.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:29.610 [DEBUG] [Thread-159322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:29.610 [DEBUG] [Thread-159322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:29.610 [DEBUG] [Thread-159322] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:03:29.650 [DEBUG] [Thread-159322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:29.650 [DEBUG] [Thread-159322] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:29.653 [DEBUG] [Thread-159322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:29.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:29.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:03:29.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:03:29.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:03:29.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:29.676 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:03:29.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:29.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:29.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:03:29.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.543470 -999.00  +16.50  11.66     37   +2.10 1 1 1 1 1   888    0 14.25 8.92 ----- 9.4 11.7 218.1 15.4 24.3 -29.9 23.2 -28.5 25.0 -29.1 26.2 -30.5
2025-09-29T15:03:29.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:03:29.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:03:29.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.543470
2025-09-29T15:03:29.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:03:29.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:03:29.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:03:29.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:03:29.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:03:29.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:03:18', tmtdew=15.53, humidity=34.74, cloud=0.0, wind=12.32, temperature=15.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:02:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:03:29.679 [DEBUG] [Thread-159322] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:29.763 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:03:29.775 [DEBUG] [Thread-159325] [transport.py] [_log()] starting thread (client mode): 0x2e3f9fc0
2025-09-29T15:03:29.775 [DEBUG] [Thread-159325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:29.790 [DEBUG] [Thread-159325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:03:29.790 [INFO] [Thread-159325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:03:29.797 [DEBUG] [Thread-159325] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:29.798 [DEBUG] [Thread-159325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:03:29.798 [DEBUG] [Thread-159325] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:29.798 [DEBUG] [Thread-159325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:29.798 [DEBUG] [Thread-159325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:29.798 [DEBUG] [Thread-159325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:29.798 [DEBUG] [Thread-159325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:29.798 [DEBUG] [Thread-159325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:29.799 [DEBUG] [Thread-159325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:29.800 [DEBUG] [Thread-159325] [transport.py] [_log()] Compression: none
2025-09-29T15:03:29.800 [DEBUG] [Thread-159325] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:29.855 [DEBUG] [Thread-159325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:29.855 [DEBUG] [Thread-159325] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:29.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:03:29.856 [DEBUG] [Thread-159325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:03:29.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:29.911 [DEBUG] [Thread-159325] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:29.911 [DEBUG] [Thread-159325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:29.911 [DEBUG] [Thread-159325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:29.911 [DEBUG] [Thread-159325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:03:29.911 [DEBUG] [Thread-159325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:29.930 [INFO] [Thread-159325] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:29.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:03:29.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:30.941 [DEBUG] [Thread-159325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:30.941 [DEBUG] [Thread-159325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:30.989 [DEBUG] [Thread-159325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:30.989 [DEBUG] [Thread-159325] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:30.998 [DEBUG] [Thread-159325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:31.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:31.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:03:31.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:03:31.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:31.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:31.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:31.033 [DEBUG] [Thread-159325] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:37.696 [DEBUG] [Thread-159327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:03:41.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:03:41.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:03:41.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:03:41.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 3, 18), 15.53, 34.74, 0.0, 12.32, 15.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:03:41.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:03:18
2025-09-29T15:03:41.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:03:41.890 [DEBUG] [Thread-159328] [transport.py] [_log()] starting thread (client mode): 0x2b968ca0
2025-09-29T15:03:41.890 [DEBUG] [Thread-159328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:41.910 [DEBUG] [Thread-159328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:03:41.911 [INFO] [Thread-159328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:41.914 [DEBUG] [Thread-159328] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] Compression: none
2025-09-29T15:03:41.915 [DEBUG] [Thread-159328] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:41.932 [DEBUG] [Thread-159328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:41.933 [DEBUG] [Thread-159328] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:41.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:03:41.934 [DEBUG] [Thread-159328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:03:41.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:41.935 [DEBUG] [Thread-159328] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:41.936 [DEBUG] [Thread-159328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:41.936 [DEBUG] [Thread-159328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:41.936 [DEBUG] [Thread-159328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:03:41.936 [DEBUG] [Thread-159328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:41.960 [INFO] [Thread-159328] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:41.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:42.584 [DEBUG] [Thread-159328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:42.584 [DEBUG] [Thread-159328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:42.585 [DEBUG] [Thread-159328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:03:42.625 [DEBUG] [Thread-159328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:42.625 [DEBUG] [Thread-159328] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:42.628 [DEBUG] [Thread-159328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:42.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:42.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:03:42.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:03:42.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:03:42.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:42.650 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:03:42.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:42.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:42.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:03:42.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.543818 -999.00  +16.60   5.85     38   +2.30 1 1 1 1 1   888    0 13.96 8.44 ----- 5.6 5.8 187.6 8.8 24.3 -28.9 23.3 -28.2 25.1 -28.1 26.4 -29.7
2025-09-29T15:03:42.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:03:42.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:03:42.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.543818
2025-09-29T15:03:42.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:03:42.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:03:42.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:03:42.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:03:42.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:03:42.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:03:18', tmtdew=15.53, humidity=34.74, cloud=0.0, wind=12.32, temperature=15.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:03:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:03:42.653 [DEBUG] [Thread-159328] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:42.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:03:42.750 [DEBUG] [Thread-159331] [transport.py] [_log()] starting thread (client mode): 0x2e3fa920
2025-09-29T15:03:42.750 [DEBUG] [Thread-159331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:42.766 [DEBUG] [Thread-159331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:03:42.767 [INFO] [Thread-159331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:03:42.774 [DEBUG] [Thread-159331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:42.774 [DEBUG] [Thread-159331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:03:42.774 [DEBUG] [Thread-159331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:42.774 [DEBUG] [Thread-159331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:42.774 [DEBUG] [Thread-159331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:42.774 [DEBUG] [Thread-159331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] Compression: none
2025-09-29T15:03:42.775 [DEBUG] [Thread-159331] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:42.834 [DEBUG] [Thread-159331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:42.835 [DEBUG] [Thread-159331] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:42.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:03:42.835 [DEBUG] [Thread-159331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:03:42.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:42.890 [DEBUG] [Thread-159331] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:42.891 [DEBUG] [Thread-159331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:42.891 [DEBUG] [Thread-159331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:42.891 [DEBUG] [Thread-159331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:03:42.891 [DEBUG] [Thread-159331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:42.909 [INFO] [Thread-159331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:42.909 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:03:42.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:43.920 [DEBUG] [Thread-159331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:43.920 [DEBUG] [Thread-159331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:43.968 [DEBUG] [Thread-159331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:43.968 [DEBUG] [Thread-159331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:43.977 [DEBUG] [Thread-159331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:43.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:43.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:03:43.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:03:44.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:44.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:44.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:44.011 [DEBUG] [Thread-159331] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:45.744 [DEBUG] [Thread-159333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:03:52.735 [DEBUG] [Thread-159334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:03:54.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:03:54.014 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:03:54.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:03:54.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 3, 50), 15.73, 34.34, 0.0, 14.72, 15.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:03:54.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:03:50
2025-09-29T15:03:54.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:03:54.897 [DEBUG] [Thread-159335] [transport.py] [_log()] starting thread (client mode): 0x2b96a7a0
2025-09-29T15:03:54.897 [DEBUG] [Thread-159335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:54.915 [DEBUG] [Thread-159335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:03:54.915 [INFO] [Thread-159335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:54.919 [DEBUG] [Thread-159335] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] Compression: none
2025-09-29T15:03:54.920 [DEBUG] [Thread-159335] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:54.928 [DEBUG] [Thread-159335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:54.928 [DEBUG] [Thread-159335] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:54.928 [DEBUG] [Thread-159335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:03:54.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:03:54.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:54.930 [DEBUG] [Thread-159335] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:54.930 [DEBUG] [Thread-159335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:54.930 [DEBUG] [Thread-159335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:54.930 [DEBUG] [Thread-159335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:03:54.930 [DEBUG] [Thread-159335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:54.954 [INFO] [Thread-159335] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:54.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:55.577 [DEBUG] [Thread-159335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:55.577 [DEBUG] [Thread-159335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:55.578 [DEBUG] [Thread-159335] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:03:55.618 [DEBUG] [Thread-159335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:55.618 [DEBUG] [Thread-159335] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:55.621 [DEBUG] [Thread-159335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:55.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:55.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:03:55.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:03:55.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:03:55.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:55.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:03:55.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:55.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:55.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:03:55.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.543818 -999.00  +16.60   5.85     38   +2.30 1 1 1 1 1   888    0 13.96 8.44 ----- 5.6 5.8 187.6 8.8 24.3 -28.9 23.3 -28.2 25.1 -28.1 26.4 -29.7
2025-09-29T15:03:55.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:03:55.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:03:55.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.543818
2025-09-29T15:03:55.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:03:55.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:03:55.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:03:55.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:03:55.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:03:55.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:03:50', tmtdew=15.73, humidity=34.34, cloud=0.0, wind=14.72, temperature=15.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:03:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:03:55.647 [DEBUG] [Thread-159335] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:03:55.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:03:55.741 [DEBUG] [Thread-159338] [transport.py] [_log()] starting thread (client mode): 0x2b96fca0
2025-09-29T15:03:55.741 [DEBUG] [Thread-159338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:03:55.756 [DEBUG] [Thread-159338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:03:55.756 [INFO] [Thread-159338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] client lang: <none>
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] server lang: <none>
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] kex follows: False
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] Compression: none
2025-09-29T15:03:55.764 [DEBUG] [Thread-159338] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:03:55.822 [DEBUG] [Thread-159338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:03:55.823 [DEBUG] [Thread-159338] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:03:55.823 [DEBUG] [Thread-159338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:03:55.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:03:55.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:03:55.879 [DEBUG] [Thread-159338] [transport.py] [_log()] userauth is OK
2025-09-29T15:03:55.879 [DEBUG] [Thread-159338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:03:55.879 [DEBUG] [Thread-159338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:03:55.879 [DEBUG] [Thread-159338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:03:55.879 [DEBUG] [Thread-159338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:03:55.898 [INFO] [Thread-159338] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:03:55.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:03:55.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:03:56.868 [DEBUG] [Thread-159338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:03:56.868 [DEBUG] [Thread-159338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:03:56.916 [DEBUG] [Thread-159338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:03:56.916 [DEBUG] [Thread-159338] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:03:56.925 [DEBUG] [Thread-159338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:03:56.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:03:56.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:03:56.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:03:56.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:03:56.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:03:56.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:03:56.960 [DEBUG] [Thread-159338] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:06.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:04:06.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:04:06.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:04:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 3, 50), 15.73, 34.34, 0.0, 14.72, 15.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:04:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:03:50
2025-09-29T15:04:07.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:04:07.777 [DEBUG] [Thread-159340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:04:07.823 [DEBUG] [Thread-159341] [transport.py] [_log()] starting thread (client mode): 0x2b96f070
2025-09-29T15:04:07.823 [DEBUG] [Thread-159341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:07.836 [DEBUG] [Thread-159341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:04:07.836 [INFO] [Thread-159341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] Compression: none
2025-09-29T15:04:07.840 [DEBUG] [Thread-159341] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:07.855 [DEBUG] [Thread-159341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:07.855 [DEBUG] [Thread-159341] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:07.856 [DEBUG] [Thread-159341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:04:07.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:04:07.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:07.857 [DEBUG] [Thread-159341] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:07.857 [DEBUG] [Thread-159341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:07.857 [DEBUG] [Thread-159341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:07.857 [DEBUG] [Thread-159341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:04:07.857 [DEBUG] [Thread-159341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:07.881 [INFO] [Thread-159341] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:07.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:04:08.526 [DEBUG] [Thread-159341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:04:08.526 [DEBUG] [Thread-159341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:04:08.527 [DEBUG] [Thread-159341] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:04:08.567 [DEBUG] [Thread-159341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:04:08.567 [DEBUG] [Thread-159341] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:04:08.570 [DEBUG] [Thread-159341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:04:08.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:04:08.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:04:08.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:04:08.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:04:08.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:04:08.593 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:04:08.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:04:08.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:04:08.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:04:08.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.543818 -999.00  +16.60   5.85     38   +2.30 1 1 1 1 1   888    0 13.96 8.44 ----- 5.6 5.8 187.6 8.8 24.3 -28.9 23.3 -28.2 25.1 -28.1 26.4 -29.7
2025-09-29T15:04:08.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:04:08.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:04:08.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.543818
2025-09-29T15:04:08.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:04:08.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:04:08.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:04:08.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:04:08.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:04:08.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:03:50', tmtdew=15.73, humidity=34.34, cloud=0.0, wind=14.72, temperature=15.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:03:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:04:08.596 [DEBUG] [Thread-159341] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:08.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:04:08.693 [DEBUG] [Thread-159344] [transport.py] [_log()] starting thread (client mode): 0x2e3744f0
2025-09-29T15:04:08.693 [DEBUG] [Thread-159344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:08.710 [DEBUG] [Thread-159344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:04:08.710 [INFO] [Thread-159344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:04:08.718 [DEBUG] [Thread-159344] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:08.719 [DEBUG] [Thread-159344] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:08.720 [DEBUG] [Thread-159344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:08.720 [DEBUG] [Thread-159344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:08.720 [DEBUG] [Thread-159344] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:08.720 [DEBUG] [Thread-159344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:08.720 [DEBUG] [Thread-159344] [transport.py] [_log()] Compression: none
2025-09-29T15:04:08.720 [DEBUG] [Thread-159344] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:08.774 [DEBUG] [Thread-159344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:08.774 [DEBUG] [Thread-159344] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:08.775 [DEBUG] [Thread-159344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:04:08.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:04:08.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:08.831 [DEBUG] [Thread-159344] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:08.831 [DEBUG] [Thread-159344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:08.831 [DEBUG] [Thread-159344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:08.831 [DEBUG] [Thread-159344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:04:08.831 [DEBUG] [Thread-159344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:08.850 [INFO] [Thread-159344] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:08.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:04:08.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:04:09.565 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:04:09.566 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:04:09.875 [DEBUG] [Thread-159344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:04:09.875 [DEBUG] [Thread-159344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:04:09.923 [DEBUG] [Thread-159344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:04:09.924 [DEBUG] [Thread-159344] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:04:09.933 [DEBUG] [Thread-159344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:04:09.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:04:09.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:04:09.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:04:09.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:04:09.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:04:09.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:04:09.968 [DEBUG] [Thread-159344] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:19.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:04:19.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:04:19.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:04:20.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 3, 50), 15.73, 34.34, 0.0, 14.72, 15.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:04:20.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:03:50
2025-09-29T15:04:20.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:04:20.845 [DEBUG] [Thread-159346] [transport.py] [_log()] starting thread (client mode): 0x2e3fba90
2025-09-29T15:04:20.846 [DEBUG] [Thread-159346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:20.866 [DEBUG] [Thread-159346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:04:20.866 [INFO] [Thread-159346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:20.868 [DEBUG] [Thread-159346] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] Compression: none
2025-09-29T15:04:20.869 [DEBUG] [Thread-159346] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:20.879 [DEBUG] [Thread-159346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:20.880 [DEBUG] [Thread-159346] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:20.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:04:20.881 [DEBUG] [Thread-159346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:04:20.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:20.882 [DEBUG] [Thread-159346] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:20.882 [DEBUG] [Thread-159346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:20.882 [DEBUG] [Thread-159346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:20.883 [DEBUG] [Thread-159346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:04:20.883 [DEBUG] [Thread-159346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:20.901 [INFO] [Thread-159346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:20.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:04:21.548 [DEBUG] [Thread-159346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:04:21.548 [DEBUG] [Thread-159346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:04:21.548 [DEBUG] [Thread-159346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:04:21.589 [DEBUG] [Thread-159346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:04:21.590 [DEBUG] [Thread-159346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:04:21.593 [DEBUG] [Thread-159346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:04:21.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:04:21.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:04:21.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:04:21.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:04:21.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:04:21.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:04:21.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:04:21.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:04:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:04:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.544512 -999.00  +16.60   6.20     37   +2.20 1 1 1 1 1   888    0 14.36 11.24 ----- 9.3 6.2 286.8 19.3 24.3 -29.0 23.3 -29.0 25.1 -28.8 26.4 -30.7
2025-09-29T15:04:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:04:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:04:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.544512
2025-09-29T15:04:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:04:21.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:04:21.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:04:21.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:04:21.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:04:21.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:03:50', tmtdew=15.73, humidity=34.34, cloud=0.0, wind=14.72, temperature=15.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:04:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:04:21.619 [DEBUG] [Thread-159346] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:21.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:04:21.715 [DEBUG] [Thread-159349] [transport.py] [_log()] starting thread (client mode): 0x2b9b9270
2025-09-29T15:04:21.715 [DEBUG] [Thread-159349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:21.729 [DEBUG] [Thread-159349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:04:21.729 [INFO] [Thread-159349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:04:21.737 [DEBUG] [Thread-159349] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:21.737 [DEBUG] [Thread-159349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:04:21.737 [DEBUG] [Thread-159349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:21.737 [DEBUG] [Thread-159349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:21.737 [DEBUG] [Thread-159349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:21.737 [DEBUG] [Thread-159349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:21.737 [DEBUG] [Thread-159349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:21.737 [DEBUG] [Thread-159349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] Compression: none
2025-09-29T15:04:21.738 [DEBUG] [Thread-159349] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:21.793 [DEBUG] [Thread-159349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:21.793 [DEBUG] [Thread-159349] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:21.793 [DEBUG] [Thread-159349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:04:21.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:04:21.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:21.850 [DEBUG] [Thread-159349] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:21.850 [DEBUG] [Thread-159349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:21.851 [DEBUG] [Thread-159349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:21.851 [DEBUG] [Thread-159349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:04:21.851 [DEBUG] [Thread-159349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:21.870 [INFO] [Thread-159349] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:21.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:04:21.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:04:22.809 [DEBUG] [Thread-159351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:04:22.816 [DEBUG] [Thread-159349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:04:22.816 [DEBUG] [Thread-159349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:04:22.864 [DEBUG] [Thread-159349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:04:22.864 [DEBUG] [Thread-159349] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:04:22.872 [DEBUG] [Thread-159349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:04:22.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:04:22.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:04:22.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:04:22.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:04:22.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:04:22.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:04:22.903 [DEBUG] [Thread-159349] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:32.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:04:32.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:04:32.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:04:33.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 4, 22), 16.15, 33.45, 0.0, 13.87, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:04:33.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:04:22
2025-09-29T15:04:33.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:04:33.764 [DEBUG] [Thread-159352] [transport.py] [_log()] starting thread (client mode): 0x2b96e290
2025-09-29T15:04:33.765 [DEBUG] [Thread-159352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:33.779 [DEBUG] [Thread-159352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:04:33.779 [INFO] [Thread-159352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:04:33.782 [DEBUG] [Thread-159352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:33.782 [DEBUG] [Thread-159352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:04:33.782 [DEBUG] [Thread-159352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] Compression: none
2025-09-29T15:04:33.783 [DEBUG] [Thread-159352] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:33.799 [DEBUG] [Thread-159352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:33.799 [DEBUG] [Thread-159352] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:33.800 [DEBUG] [Thread-159352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:04:33.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:04:33.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:33.801 [DEBUG] [Thread-159352] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:33.801 [DEBUG] [Thread-159352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:33.802 [DEBUG] [Thread-159352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:33.802 [DEBUG] [Thread-159352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:04:33.802 [DEBUG] [Thread-159352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:33.826 [INFO] [Thread-159352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:33.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:04:34.413 [DEBUG] [Thread-159352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:04:34.414 [DEBUG] [Thread-159352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:04:34.414 [DEBUG] [Thread-159352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:04:34.454 [DEBUG] [Thread-159352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:04:34.454 [DEBUG] [Thread-159352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:04:34.457 [DEBUG] [Thread-159352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:04:34.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:04:34.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:04:34.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:04:34.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:04:34.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:04:34.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:04:34.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:04:34.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:04:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:04:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.544512 -999.00  +16.60   6.20     37   +2.20 1 1 1 1 1   888    0 14.36 11.24 ----- 9.3 6.2 286.8 19.3 24.3 -29.0 23.3 -29.0 25.1 -28.8 26.4 -30.7
2025-09-29T15:04:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:04:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:04:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.544512
2025-09-29T15:04:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:04:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:04:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:04:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:04:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:04:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:04:22', tmtdew=16.15, humidity=33.45, cloud=0.0, wind=13.87, temperature=15.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:04:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:04:34.481 [DEBUG] [Thread-159352] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:34.566 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:04:34.577 [DEBUG] [Thread-159355] [transport.py] [_log()] starting thread (client mode): 0x2b9b95d0
2025-09-29T15:04:34.577 [DEBUG] [Thread-159355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:34.592 [DEBUG] [Thread-159355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:04:34.592 [INFO] [Thread-159355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:04:34.600 [DEBUG] [Thread-159355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:34.600 [DEBUG] [Thread-159355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] Compression: none
2025-09-29T15:04:34.601 [DEBUG] [Thread-159355] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:34.658 [DEBUG] [Thread-159355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:34.659 [DEBUG] [Thread-159355] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:34.659 [DEBUG] [Thread-159355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:04:34.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:04:34.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:34.714 [DEBUG] [Thread-159355] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:34.715 [DEBUG] [Thread-159355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:34.715 [DEBUG] [Thread-159355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:34.715 [DEBUG] [Thread-159355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:04:34.715 [DEBUG] [Thread-159355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:34.734 [INFO] [Thread-159355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:34.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:04:34.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:04:35.712 [DEBUG] [Thread-159355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:04:35.712 [DEBUG] [Thread-159355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:04:35.760 [DEBUG] [Thread-159355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:04:35.760 [DEBUG] [Thread-159355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:04:35.769 [DEBUG] [Thread-159355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:04:35.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:04:35.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:04:35.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:04:35.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:04:35.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:04:35.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:04:35.801 [DEBUG] [Thread-159355] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:37.845 [DEBUG] [Thread-159357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:04:45.783 [DEBUG] [Thread-159358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:04:45.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:04:45.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:04:45.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:04:46.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 4, 22), 16.15, 33.45, 0.0, 13.87, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:04:46.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:04:22
2025-09-29T15:04:46.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:04:46.656 [DEBUG] [Thread-159359] [transport.py] [_log()] starting thread (client mode): 0x2b969e70
2025-09-29T15:04:46.656 [DEBUG] [Thread-159359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:46.677 [DEBUG] [Thread-159359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:04:46.677 [INFO] [Thread-159359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:04:46.678 [DEBUG] [Thread-159359] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:46.678 [DEBUG] [Thread-159359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:46.679 [DEBUG] [Thread-159359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:46.680 [DEBUG] [Thread-159359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:46.680 [DEBUG] [Thread-159359] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:46.680 [DEBUG] [Thread-159359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:46.680 [DEBUG] [Thread-159359] [transport.py] [_log()] Compression: none
2025-09-29T15:04:46.680 [DEBUG] [Thread-159359] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:46.697 [DEBUG] [Thread-159359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:46.697 [DEBUG] [Thread-159359] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:46.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:04:46.698 [DEBUG] [Thread-159359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:04:46.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:46.700 [DEBUG] [Thread-159359] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:46.701 [DEBUG] [Thread-159359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:46.701 [DEBUG] [Thread-159359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:46.701 [DEBUG] [Thread-159359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:04:46.701 [DEBUG] [Thread-159359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:46.718 [INFO] [Thread-159359] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:46.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:04:47.356 [DEBUG] [Thread-159359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:04:47.356 [DEBUG] [Thread-159359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:04:47.357 [DEBUG] [Thread-159359] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:04:47.397 [DEBUG] [Thread-159359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:04:47.397 [DEBUG] [Thread-159359] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:04:47.400 [DEBUG] [Thread-159359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:04:47.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:04:47.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:04:47.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:04:47.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:04:47.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:04:47.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:04:47.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:04:47.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:04:47.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:04:47.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.544859 -999.00  +16.60  14.91     37   +2.00 1 1 1 1 1   888    0 14.65 14.19 ----- 12.8 14.9 200.6 21.2 24.2 -30.4 23.0 -34.3 25.0 -30.4 26.2 -31.0
2025-09-29T15:04:47.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:04:47.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:04:47.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.544859
2025-09-29T15:04:47.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:04:47.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:04:47.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:04:47.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:04:47.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:04:47.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:04:22', tmtdew=16.15, humidity=33.45, cloud=0.0, wind=13.87, temperature=15.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:04:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:04:47.423 [DEBUG] [Thread-159359] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:47.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:04:47.516 [DEBUG] [Thread-159362] [transport.py] [_log()] starting thread (client mode): 0x2b96f6a0
2025-09-29T15:04:47.516 [DEBUG] [Thread-159362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:47.530 [DEBUG] [Thread-159362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:04:47.530 [INFO] [Thread-159362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:04:47.538 [DEBUG] [Thread-159362] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] Compression: none
2025-09-29T15:04:47.539 [DEBUG] [Thread-159362] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:47.594 [DEBUG] [Thread-159362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:47.594 [DEBUG] [Thread-159362] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:47.595 [DEBUG] [Thread-159362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:04:47.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:04:47.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:47.650 [DEBUG] [Thread-159362] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:47.651 [DEBUG] [Thread-159362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:47.651 [DEBUG] [Thread-159362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:47.651 [DEBUG] [Thread-159362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:04:47.651 [DEBUG] [Thread-159362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:47.669 [INFO] [Thread-159362] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:47.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:04:47.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:04:48.754 [DEBUG] [Thread-159362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:04:48.754 [DEBUG] [Thread-159362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:04:48.802 [DEBUG] [Thread-159362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:04:48.802 [DEBUG] [Thread-159362] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:04:48.810 [DEBUG] [Thread-159362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:04:48.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:04:48.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:04:48.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:04:48.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:04:48.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:04:48.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:04:48.842 [DEBUG] [Thread-159362] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:04:52.896 [DEBUG] [Thread-159364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:04:58.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:04:58.836 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:04:58.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:04:59.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 4, 54), 16.41, 32.55, 0.0, 13.8, 16.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:04:59.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:04:54
2025-09-29T15:04:59.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:04:59.690 [DEBUG] [Thread-159365] [transport.py] [_log()] starting thread (client mode): 0x2b96c190
2025-09-29T15:04:59.690 [DEBUG] [Thread-159365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:04:59.710 [DEBUG] [Thread-159365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:04:59.710 [INFO] [Thread-159365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] client lang: <none>
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] server lang: <none>
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] kex follows: False
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] Compression: none
2025-09-29T15:04:59.712 [DEBUG] [Thread-159365] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:04:59.724 [DEBUG] [Thread-159365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:04:59.724 [DEBUG] [Thread-159365] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:04:59.725 [DEBUG] [Thread-159365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:04:59.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:04:59.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:04:59.727 [DEBUG] [Thread-159365] [transport.py] [_log()] userauth is OK
2025-09-29T15:04:59.727 [DEBUG] [Thread-159365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:04:59.727 [DEBUG] [Thread-159365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:04:59.727 [DEBUG] [Thread-159365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:04:59.727 [DEBUG] [Thread-159365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:04:59.744 [INFO] [Thread-159365] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:04:59.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:05:00.369 [DEBUG] [Thread-159365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:05:00.370 [DEBUG] [Thread-159365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:05:00.370 [DEBUG] [Thread-159365] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:05:00.410 [DEBUG] [Thread-159365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:05:00.411 [DEBUG] [Thread-159365] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:05:00.414 [DEBUG] [Thread-159365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:05:00.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:05:00.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:05:00.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:05:00.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:05:00.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:05:00.437 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:05:00.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:05:00.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:05:00.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:05:00.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.544859 -999.00  +16.60  14.91     37   +2.00 1 1 1 1 1   888    0 14.65 14.19 ----- 12.8 14.9 200.6 21.2 24.2 -30.4 23.0 -34.3 25.0 -30.4 26.2 -31.0
2025-09-29T15:05:00.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:05:00.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:05:00.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.544859
2025-09-29T15:05:00.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:05:00.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:05:00.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:05:00.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:05:00.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:05:00.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:04:54', tmtdew=16.41, humidity=32.55, cloud=0.0, wind=13.8, temperature=16.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:04:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:05:00.440 [DEBUG] [Thread-159365] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:05:00.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:05:00.536 [DEBUG] [Thread-159368] [transport.py] [_log()] starting thread (client mode): 0x2b96bc10
2025-09-29T15:05:00.536 [DEBUG] [Thread-159368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:05:00.553 [DEBUG] [Thread-159368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:05:00.553 [INFO] [Thread-159368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:05:00.560 [DEBUG] [Thread-159368] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:05:00.560 [DEBUG] [Thread-159368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:05:00.560 [DEBUG] [Thread-159368] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:05:00.560 [DEBUG] [Thread-159368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:00.560 [DEBUG] [Thread-159368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:00.560 [DEBUG] [Thread-159368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:00.560 [DEBUG] [Thread-159368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:00.560 [DEBUG] [Thread-159368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] client lang: <none>
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] server lang: <none>
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] kex follows: False
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] Compression: none
2025-09-29T15:05:00.561 [DEBUG] [Thread-159368] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:05:00.618 [DEBUG] [Thread-159368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:05:00.619 [DEBUG] [Thread-159368] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:05:00.619 [DEBUG] [Thread-159368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:05:00.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:05:00.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:05:00.676 [DEBUG] [Thread-159368] [transport.py] [_log()] userauth is OK
2025-09-29T15:05:00.676 [DEBUG] [Thread-159368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:05:00.676 [DEBUG] [Thread-159368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:05:00.676 [DEBUG] [Thread-159368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:05:00.676 [DEBUG] [Thread-159368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:05:00.692 [INFO] [Thread-159368] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:05:00.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:05:00.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:05:01.704 [DEBUG] [Thread-159368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:05:01.704 [DEBUG] [Thread-159368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:05:01.752 [DEBUG] [Thread-159368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:05:01.752 [DEBUG] [Thread-159368] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:05:01.761 [DEBUG] [Thread-159368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:05:01.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:05:01.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:05:01.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:05:01.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:05:01.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:05:01.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:05:01.796 [DEBUG] [Thread-159368] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:05:07.947 [DEBUG] [Thread-159370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:05:09.704 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:05:09.705 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:05:11.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:05:11.799 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:05:11.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:05:12.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 4, 54), 16.41, 32.55, 0.0, 13.8, 16.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:05:12.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:04:54
2025-09-29T15:05:12.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:05:12.653 [DEBUG] [Thread-159371] [transport.py] [_log()] starting thread (client mode): 0x2b96c3a0
2025-09-29T15:05:12.653 [DEBUG] [Thread-159371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:05:12.668 [DEBUG] [Thread-159371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:05:12.668 [INFO] [Thread-159371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] client lang: <none>
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] server lang: <none>
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] kex follows: False
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:05:12.671 [DEBUG] [Thread-159371] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:05:12.672 [DEBUG] [Thread-159371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:05:12.672 [DEBUG] [Thread-159371] [transport.py] [_log()] Compression: none
2025-09-29T15:05:12.672 [DEBUG] [Thread-159371] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:05:12.684 [DEBUG] [Thread-159371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:05:12.684 [DEBUG] [Thread-159371] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:05:12.685 [DEBUG] [Thread-159371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:05:12.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:05:12.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:05:12.687 [DEBUG] [Thread-159371] [transport.py] [_log()] userauth is OK
2025-09-29T15:05:12.687 [DEBUG] [Thread-159371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:05:12.687 [DEBUG] [Thread-159371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:05:12.687 [DEBUG] [Thread-159371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:05:12.687 [DEBUG] [Thread-159371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:05:12.708 [INFO] [Thread-159371] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:05:12.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:05:19.780 [DEBUG] [Thread-159371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:05:19.780 [DEBUG] [Thread-159371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:05:19.781 [DEBUG] [Thread-159371] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:05:19.821 [DEBUG] [Thread-159371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:05:19.821 [DEBUG] [Thread-159371] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:05:19.824 [DEBUG] [Thread-159371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:05:19.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:05:19.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:05:19.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:05:19.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:05:19.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:05:19.928 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:05:19.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:05:19.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:05:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:05:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.544859 -999.00  +16.60  14.91     37   +2.00 1 1 1 1 1   888    0 14.65 14.19 ----- 12.8 14.9 200.6 21.2 24.2 -30.4 23.0 -34.3 25.0 -30.4 26.2 -31.0
2025-09-29T15:05:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:05:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:05:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.544859
2025-09-29T15:05:19.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:05:19.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:05:19.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:05:19.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:05:19.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:05:19.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:04:54', tmtdew=16.41, humidity=32.55, cloud=0.0, wind=13.8, temperature=16.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:04:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:05:19.931 [DEBUG] [Thread-159371] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:05:20.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:05:20.018 [DEBUG] [Thread-159374] [transport.py] [_log()] starting thread (client mode): 0x2b9ba230
2025-09-29T15:05:20.018 [DEBUG] [Thread-159374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:05:20.032 [DEBUG] [Thread-159374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:05:20.033 [INFO] [Thread-159374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:05:20.040 [DEBUG] [Thread-159374] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:05:20.040 [DEBUG] [Thread-159374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] client lang: <none>
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] server lang: <none>
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] kex follows: False
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] Compression: none
2025-09-29T15:05:20.041 [DEBUG] [Thread-159374] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:05:20.098 [DEBUG] [Thread-159374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:05:20.098 [DEBUG] [Thread-159374] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:05:20.099 [DEBUG] [Thread-159374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:05:20.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:05:20.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:05:20.156 [DEBUG] [Thread-159374] [transport.py] [_log()] userauth is OK
2025-09-29T15:05:20.156 [DEBUG] [Thread-159374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:05:20.156 [DEBUG] [Thread-159374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:05:20.156 [DEBUG] [Thread-159374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:05:20.156 [DEBUG] [Thread-159374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:05:20.182 [INFO] [Thread-159374] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:05:20.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:05:20.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:05:21.132 [DEBUG] [Thread-159374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:05:21.132 [DEBUG] [Thread-159374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:05:21.180 [DEBUG] [Thread-159374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:05:21.180 [DEBUG] [Thread-159374] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:05:21.189 [DEBUG] [Thread-159374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:05:21.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:05:21.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:05:21.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:05:21.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:05:21.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:05:21.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:05:21.224 [DEBUG] [Thread-159374] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:05:22.997 [DEBUG] [Thread-159376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:05:31.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:05:31.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:05:31.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:05:31.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 5, 26), 16.53, 32.28, 0.0, 13.91, 16.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:05:31.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:05:26
2025-09-29T15:05:31.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:05:32.068 [DEBUG] [Thread-159377] [transport.py] [_log()] starting thread (client mode): 0x2b96ab00
2025-09-29T15:05:32.068 [DEBUG] [Thread-159377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:05:32.083 [DEBUG] [Thread-159377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:05:32.083 [INFO] [Thread-159377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:05:32.086 [DEBUG] [Thread-159377] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:05:32.086 [DEBUG] [Thread-159377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:05:32.086 [DEBUG] [Thread-159377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:05:32.086 [DEBUG] [Thread-159377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:32.086 [DEBUG] [Thread-159377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:32.086 [DEBUG] [Thread-159377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] client lang: <none>
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] server lang: <none>
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] kex follows: False
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] Compression: none
2025-09-29T15:05:32.087 [DEBUG] [Thread-159377] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:05:32.103 [DEBUG] [Thread-159377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:05:32.104 [DEBUG] [Thread-159377] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:05:32.104 [DEBUG] [Thread-159377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:05:32.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:05:32.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:05:32.106 [DEBUG] [Thread-159377] [transport.py] [_log()] userauth is OK
2025-09-29T15:05:32.107 [DEBUG] [Thread-159377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:05:32.107 [DEBUG] [Thread-159377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:05:32.107 [DEBUG] [Thread-159377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:05:32.107 [DEBUG] [Thread-159377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:05:32.131 [INFO] [Thread-159377] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:05:32.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:05:32.704 [DEBUG] [Thread-159377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:05:32.704 [DEBUG] [Thread-159377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:05:32.704 [DEBUG] [Thread-159377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:05:32.744 [DEBUG] [Thread-159377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:05:32.745 [DEBUG] [Thread-159377] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:05:32.747 [DEBUG] [Thread-159377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:05:32.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:05:32.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:05:32.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:05:32.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:05:32.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:05:32.764 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:05:32.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:05:32.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:05:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:05:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.545206 -999.00  +16.50  12.55     37   +2.00 1 1 1 1 1   888    0 14.52 16.34 ----- 11.5 12.6 196.6 15.6 24.2 -29.8 23.1 -28.5 25.0 -28.4 26.2 -31.3
2025-09-29T15:05:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:05:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:05:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.545206
2025-09-29T15:05:32.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:05:32.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:05:32.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:05:32.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:05:32.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:05:32.767 [DEBUG] [Thread-159377] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:05:32.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:05:26', tmtdew=16.53, humidity=32.28, cloud=0.0, wind=13.91, temperature=16.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:05:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:05:32.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:05:32.861 [DEBUG] [Thread-159380] [transport.py] [_log()] starting thread (client mode): 0x2e362b30
2025-09-29T15:05:32.861 [DEBUG] [Thread-159380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:05:32.876 [DEBUG] [Thread-159380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:05:32.876 [INFO] [Thread-159380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:05:32.883 [DEBUG] [Thread-159380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:05:32.883 [DEBUG] [Thread-159380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] client lang: <none>
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] server lang: <none>
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] kex follows: False
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] Compression: none
2025-09-29T15:05:32.884 [DEBUG] [Thread-159380] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:05:32.942 [DEBUG] [Thread-159380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:05:32.942 [DEBUG] [Thread-159380] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:05:32.943 [DEBUG] [Thread-159380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:05:32.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:05:32.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:05:32.998 [DEBUG] [Thread-159380] [transport.py] [_log()] userauth is OK
2025-09-29T15:05:32.999 [DEBUG] [Thread-159380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:05:32.999 [DEBUG] [Thread-159380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:05:32.999 [DEBUG] [Thread-159380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:05:32.999 [DEBUG] [Thread-159380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:05:33.017 [INFO] [Thread-159380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:05:33.018 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:05:33.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:05:34.019 [DEBUG] [Thread-159380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:05:34.019 [DEBUG] [Thread-159380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:05:34.067 [DEBUG] [Thread-159380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:05:34.068 [DEBUG] [Thread-159380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:05:34.077 [DEBUG] [Thread-159380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:05:34.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:05:34.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:05:34.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:05:34.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:05:34.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:05:34.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:05:34.111 [DEBUG] [Thread-159380] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:05:38.023 [DEBUG] [Thread-159382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:05:44.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:05:44.110 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:05:44.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:05:44.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 5, 26), 16.53, 32.28, 0.0, 13.91, 16.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:05:44.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:05:26
2025-09-29T15:05:44.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:05:44.988 [DEBUG] [Thread-159383] [transport.py] [_log()] starting thread (client mode): 0x2b9b8bb0
2025-09-29T15:05:44.988 [DEBUG] [Thread-159383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:05:45.008 [DEBUG] [Thread-159383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:05:45.008 [INFO] [Thread-159383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:05:45.011 [DEBUG] [Thread-159383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:05:45.011 [DEBUG] [Thread-159383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:05:45.011 [DEBUG] [Thread-159383] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:05:45.011 [DEBUG] [Thread-159383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:45.011 [DEBUG] [Thread-159383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:05:45.011 [DEBUG] [Thread-159383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:45.011 [DEBUG] [Thread-159383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] client lang: <none>
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] server lang: <none>
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] kex follows: False
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] Compression: none
2025-09-29T15:05:45.012 [DEBUG] [Thread-159383] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:05:45.028 [DEBUG] [Thread-159383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:05:45.028 [DEBUG] [Thread-159383] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:05:45.029 [DEBUG] [Thread-159383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:05:45.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:05:45.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:05:45.029 [DEBUG] [Thread-159383] [transport.py] [_log()] userauth is OK
2025-09-29T15:05:45.029 [DEBUG] [Thread-159383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:05:45.029 [DEBUG] [Thread-159383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:05:45.029 [DEBUG] [Thread-159383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:05:45.029 [DEBUG] [Thread-159383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:05:45.039 [INFO] [Thread-159383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:05:45.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:05:45.797 [DEBUG] [Thread-159383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:05:45.797 [DEBUG] [Thread-159383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:05:45.797 [DEBUG] [Thread-159383] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:05:45.819 [DEBUG] [Thread-159385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:05:45.838 [DEBUG] [Thread-159383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:05:45.838 [DEBUG] [Thread-159383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:05:45.840 [DEBUG] [Thread-159383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:05:45.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:05:45.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:05:45.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:05:45.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:05:45.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:05:45.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:05:45.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:05:45.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:05:45.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:05:45.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.545206 -999.00  +16.50  12.55     37   +2.00 1 1 1 1 1   888    0 14.52 16.34 ----- 11.5 12.6 196.6 15.6 24.2 -29.8 23.1 -28.5 25.0 -28.4 26.2 -31.3
2025-09-29T15:05:45.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:05:45.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:05:45.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.545206
2025-09-29T15:05:45.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:05:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:05:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:05:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:05:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:05:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:05:26', tmtdew=16.53, humidity=32.28, cloud=0.0, wind=13.91, temperature=16.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:05:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:05:45.853 [DEBUG] [Thread-159383] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:05:45.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:05:53.058 [DEBUG] [Thread-159387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:06:08.088 [DEBUG] [Thread-159388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:06:09.846 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:06:09.848 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:06:23.116 [DEBUG] [Thread-159389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:06:38.146 [DEBUG] [Thread-159390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:06:45.851 [DEBUG] [Thread-159391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:06:53.178 [DEBUG] [Thread-159392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:07:08.207 [DEBUG] [Thread-159393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:07:09.987 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:07:09.988 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:07:23.243 [DEBUG] [Thread-159394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:07:38.272 [DEBUG] [Thread-159395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:07:45.884 [DEBUG] [Thread-159396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:07:53.299 [DEBUG] [Thread-159397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:07:59.290 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T15:08:08.331 [DEBUG] [Thread-159398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:08:09.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:08:09.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:08:09.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:08:09.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 8, 5), 16.26, 32.9, 0.0, 12.79, 15.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:08:09.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:08:05
2025-09-29T15:08:10.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:08:10.128 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:08:10.128 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:08:10.169 [DEBUG] [Thread-159399] [transport.py] [_log()] starting thread (client mode): 0x2b94db70
2025-09-29T15:08:10.169 [DEBUG] [Thread-159399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:08:10.190 [DEBUG] [Thread-159399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:08:10.190 [INFO] [Thread-159399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:08:10.192 [DEBUG] [Thread-159399] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:08:10.192 [DEBUG] [Thread-159399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:08:10.192 [DEBUG] [Thread-159399] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] client lang: <none>
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] server lang: <none>
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] kex follows: False
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] Compression: none
2025-09-29T15:08:10.193 [DEBUG] [Thread-159399] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:08:10.209 [DEBUG] [Thread-159399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:08:10.210 [DEBUG] [Thread-159399] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:08:10.210 [DEBUG] [Thread-159399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:08:10.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:08:10.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:08:10.212 [DEBUG] [Thread-159399] [transport.py] [_log()] userauth is OK
2025-09-29T15:08:10.213 [DEBUG] [Thread-159399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:08:10.213 [DEBUG] [Thread-159399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:08:10.213 [DEBUG] [Thread-159399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:08:10.213 [DEBUG] [Thread-159399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:08:10.236 [INFO] [Thread-159399] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:08:10.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:08:10.851 [DEBUG] [Thread-159399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:08:10.851 [DEBUG] [Thread-159399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:08:10.851 [DEBUG] [Thread-159399] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:08:10.892 [DEBUG] [Thread-159399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:08:10.892 [DEBUG] [Thread-159399] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:08:10.895 [DEBUG] [Thread-159399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:08:10.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:08:10.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:08:10.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:08:10.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:08:10.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:08:10.919 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:08:10.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:08:10.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:08:10.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:08:10.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.546943 -999.00  +16.00   9.24     38   +1.80 1 1 1 1 1   888    0 14.74 19.86 ----- 10.5 9.2 150.1 14.9 24.4 -30.2 23.4 -28.3 25.2 -29.7 26.6 -29.8
2025-09-29T15:08:10.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:08:10.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:08:10.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.546943
2025-09-29T15:08:10.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:08:10.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:08:10.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:08:10.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:08:10.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:08:10.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:08:05', tmtdew=16.26, humidity=32.9, cloud=0.0, wind=12.79, temperature=15.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:07:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:08:10.922 [DEBUG] [Thread-159399] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:08:11.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:08:11.019 [DEBUG] [Thread-159402] [transport.py] [_log()] starting thread (client mode): 0x2e3dd870
2025-09-29T15:08:11.019 [DEBUG] [Thread-159402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:08:11.034 [DEBUG] [Thread-159402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:08:11.034 [INFO] [Thread-159402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:08:11.042 [DEBUG] [Thread-159402] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:08:11.042 [DEBUG] [Thread-159402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:08:11.042 [DEBUG] [Thread-159402] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:08:11.042 [DEBUG] [Thread-159402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:11.042 [DEBUG] [Thread-159402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:11.042 [DEBUG] [Thread-159402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] client lang: <none>
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] server lang: <none>
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] kex follows: False
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:08:11.043 [DEBUG] [Thread-159402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:08:11.044 [DEBUG] [Thread-159402] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:08:11.044 [DEBUG] [Thread-159402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:08:11.044 [DEBUG] [Thread-159402] [transport.py] [_log()] Compression: none
2025-09-29T15:08:11.044 [DEBUG] [Thread-159402] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:08:11.102 [DEBUG] [Thread-159402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:08:11.102 [DEBUG] [Thread-159402] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:08:11.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:08:11.104 [DEBUG] [Thread-159402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:08:11.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:08:11.158 [DEBUG] [Thread-159402] [transport.py] [_log()] userauth is OK
2025-09-29T15:08:11.158 [DEBUG] [Thread-159402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:08:11.158 [DEBUG] [Thread-159402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:08:11.158 [DEBUG] [Thread-159402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:08:11.158 [DEBUG] [Thread-159402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:08:11.177 [INFO] [Thread-159402] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:08:11.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:08:11.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:08:12.170 [DEBUG] [Thread-159402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:08:12.170 [DEBUG] [Thread-159402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:08:12.218 [DEBUG] [Thread-159402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:08:12.218 [DEBUG] [Thread-159402] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:08:12.227 [DEBUG] [Thread-159402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:08:12.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:08:12.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:08:12.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:08:12.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:08:12.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:08:12.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:08:12.264 [DEBUG] [Thread-159402] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:08:22.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:08:22.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:08:22.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:08:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 8, 5), 16.26, 32.9, 0.0, 12.79, 15.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:08:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:08:05
2025-09-29T15:08:22.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:08:23.127 [DEBUG] [Thread-159404] [transport.py] [_log()] starting thread (client mode): 0x2b968280
2025-09-29T15:08:23.128 [DEBUG] [Thread-159404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:08:23.162 [DEBUG] [Thread-159404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:08:23.162 [INFO] [Thread-159404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:08:23.163 [DEBUG] [Thread-159404] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:08:23.163 [DEBUG] [Thread-159404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:08:23.163 [DEBUG] [Thread-159404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] client lang: <none>
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] server lang: <none>
2025-09-29T15:08:23.164 [DEBUG] [Thread-159404] [transport.py] [_log()] kex follows: False
2025-09-29T15:08:23.165 [DEBUG] [Thread-159404] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:08:23.165 [DEBUG] [Thread-159404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:08:23.165 [DEBUG] [Thread-159404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:08:23.165 [DEBUG] [Thread-159404] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:08:23.165 [DEBUG] [Thread-159404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:08:23.165 [DEBUG] [Thread-159404] [transport.py] [_log()] Compression: none
2025-09-29T15:08:23.166 [DEBUG] [Thread-159404] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:08:23.179 [DEBUG] [Thread-159404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:08:23.180 [DEBUG] [Thread-159404] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:08:23.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:08:23.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:08:23.182 [DEBUG] [Thread-159404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:08:23.183 [DEBUG] [Thread-159404] [transport.py] [_log()] userauth is OK
2025-09-29T15:08:23.183 [DEBUG] [Thread-159404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:08:23.183 [DEBUG] [Thread-159404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:08:23.183 [DEBUG] [Thread-159404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:08:23.184 [DEBUG] [Thread-159404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:08:23.201 [INFO] [Thread-159404] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:08:23.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:08:23.358 [DEBUG] [Thread-159406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:08:23.844 [DEBUG] [Thread-159404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:08:23.845 [DEBUG] [Thread-159404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:08:23.845 [DEBUG] [Thread-159404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:08:23.885 [DEBUG] [Thread-159404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:08:23.885 [DEBUG] [Thread-159404] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:08:23.888 [DEBUG] [Thread-159404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:08:23.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:08:23.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:08:23.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:08:23.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:08:23.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:08:23.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:08:23.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:08:23.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:08:23.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:08:23.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.546943 -999.00  +16.00   9.24     38   +1.80 1 1 1 1 1   888    0 14.74 19.86 ----- 10.5 9.2 150.1 14.9 24.4 -30.2 23.4 -28.3 25.2 -29.7 26.6 -29.8
2025-09-29T15:08:23.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:08:23.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:08:23.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.546943
2025-09-29T15:08:23.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:08:23.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:08:23.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:08:23.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:08:23.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:08:23.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:08:05', tmtdew=16.26, humidity=32.9, cloud=0.0, wind=12.79, temperature=15.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:07:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:08:23.915 [DEBUG] [Thread-159404] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:08:23.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:08:24.009 [DEBUG] [Thread-159408] [transport.py] [_log()] starting thread (client mode): 0x2b96a380
2025-09-29T15:08:24.009 [DEBUG] [Thread-159408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:08:24.024 [DEBUG] [Thread-159408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:08:24.024 [INFO] [Thread-159408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:08:24.031 [DEBUG] [Thread-159408] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:08:24.031 [DEBUG] [Thread-159408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] client lang: <none>
2025-09-29T15:08:24.032 [DEBUG] [Thread-159408] [transport.py] [_log()] server lang: <none>
2025-09-29T15:08:24.033 [DEBUG] [Thread-159408] [transport.py] [_log()] kex follows: False
2025-09-29T15:08:24.033 [DEBUG] [Thread-159408] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:08:24.033 [DEBUG] [Thread-159408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:08:24.033 [DEBUG] [Thread-159408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:08:24.033 [DEBUG] [Thread-159408] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:08:24.033 [DEBUG] [Thread-159408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:08:24.033 [DEBUG] [Thread-159408] [transport.py] [_log()] Compression: none
2025-09-29T15:08:24.033 [DEBUG] [Thread-159408] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:08:24.090 [DEBUG] [Thread-159408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:08:24.090 [DEBUG] [Thread-159408] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:08:24.099 [DEBUG] [Thread-159408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:08:24.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:08:24.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:08:24.146 [DEBUG] [Thread-159408] [transport.py] [_log()] userauth is OK
2025-09-29T15:08:24.146 [DEBUG] [Thread-159408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:08:24.146 [DEBUG] [Thread-159408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:08:24.146 [DEBUG] [Thread-159408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:08:24.146 [DEBUG] [Thread-159408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:08:24.165 [INFO] [Thread-159408] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:08:24.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:08:24.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:08:25.179 [DEBUG] [Thread-159408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:08:25.179 [DEBUG] [Thread-159408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:08:25.227 [DEBUG] [Thread-159408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:08:25.227 [DEBUG] [Thread-159408] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:08:25.238 [DEBUG] [Thread-159408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:08:25.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:08:25.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:08:25.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:08:25.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:08:25.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:08:25.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:08:25.274 [DEBUG] [Thread-159408] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:08:35.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:08:35.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:08:35.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:08:35.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 8, 5), 16.26, 32.9, 0.0, 12.79, 15.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:08:35.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:08:05
2025-09-29T15:08:35.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:08:36.132 [DEBUG] [Thread-159410] [transport.py] [_log()] starting thread (client mode): 0x2b9546d0
2025-09-29T15:08:36.132 [DEBUG] [Thread-159410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:08:36.150 [DEBUG] [Thread-159410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:08:36.150 [INFO] [Thread-159410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:08:36.152 [DEBUG] [Thread-159410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] client lang: <none>
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] server lang: <none>
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] kex follows: False
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] Compression: none
2025-09-29T15:08:36.153 [DEBUG] [Thread-159410] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:08:36.165 [DEBUG] [Thread-159410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:08:36.165 [DEBUG] [Thread-159410] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:08:36.165 [DEBUG] [Thread-159410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:08:36.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:08:36.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:08:36.167 [DEBUG] [Thread-159410] [transport.py] [_log()] userauth is OK
2025-09-29T15:08:36.167 [DEBUG] [Thread-159410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:08:36.167 [DEBUG] [Thread-159410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:08:36.167 [DEBUG] [Thread-159410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:08:36.168 [DEBUG] [Thread-159410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:08:36.183 [INFO] [Thread-159410] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:08:36.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:08:36.928 [DEBUG] [Thread-159410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:08:36.928 [DEBUG] [Thread-159410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:08:36.928 [DEBUG] [Thread-159410] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:08:36.969 [DEBUG] [Thread-159410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:08:36.969 [DEBUG] [Thread-159410] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:08:36.971 [DEBUG] [Thread-159410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:08:36.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:08:36.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:08:36.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:08:36.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:08:36.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:08:36.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:08:36.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:08:36.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:08:36.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:08:36.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.546943 -999.00  +16.00   9.24     38   +1.80 1 1 1 1 1   888    0 14.74 19.86 ----- 10.5 9.2 150.1 14.9 24.4 -30.2 23.4 -28.3 25.2 -29.7 26.6 -29.8
2025-09-29T15:08:36.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:08:36.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:08:36.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.546943
2025-09-29T15:08:36.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:08:36.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:08:36.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:08:36.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:08:36.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:08:36.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:08:05', tmtdew=16.26, humidity=32.9, cloud=0.0, wind=12.79, temperature=15.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:07:35.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:08:36.991 [DEBUG] [Thread-159410] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:08:37.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:08:37.085 [DEBUG] [Thread-159413] [transport.py] [_log()] starting thread (client mode): 0x2b9cf220
2025-09-29T15:08:37.085 [DEBUG] [Thread-159413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:08:37.099 [DEBUG] [Thread-159413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:08:37.099 [INFO] [Thread-159413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:08:37.106 [DEBUG] [Thread-159413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] client lang: <none>
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] server lang: <none>
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] kex follows: False
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:08:37.107 [DEBUG] [Thread-159413] [transport.py] [_log()] Compression: none
2025-09-29T15:08:37.108 [DEBUG] [Thread-159413] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:08:37.165 [DEBUG] [Thread-159413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:08:37.165 [DEBUG] [Thread-159413] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:08:37.166 [DEBUG] [Thread-159413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:08:37.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:08:37.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:08:37.221 [DEBUG] [Thread-159413] [transport.py] [_log()] userauth is OK
2025-09-29T15:08:37.221 [DEBUG] [Thread-159413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:08:37.222 [DEBUG] [Thread-159413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:08:37.222 [DEBUG] [Thread-159413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:08:37.222 [DEBUG] [Thread-159413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:08:37.243 [INFO] [Thread-159413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:08:37.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:08:37.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:08:38.286 [DEBUG] [Thread-159413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:08:38.286 [DEBUG] [Thread-159413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:08:38.334 [DEBUG] [Thread-159413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:08:38.334 [DEBUG] [Thread-159413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:08:38.342 [DEBUG] [Thread-159413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:08:38.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:08:38.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:08:38.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:08:38.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:08:38.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:08:38.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:08:38.374 [DEBUG] [Thread-159413] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:08:38.401 [DEBUG] [Thread-159415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:08:45.918 [DEBUG] [Thread-159416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:08:48.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:08:48.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:08:48.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:08:48.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 8, 37), 15.93, 33.68, 0.0, 10.53, 15.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:08:48.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:08:37
2025-09-29T15:08:49.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:08:49.240 [DEBUG] [Thread-159417] [transport.py] [_log()] starting thread (client mode): 0x2b9cda80
2025-09-29T15:08:49.240 [DEBUG] [Thread-159417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:08:49.260 [DEBUG] [Thread-159417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:08:49.260 [INFO] [Thread-159417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:08:49.263 [DEBUG] [Thread-159417] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] client lang: <none>
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] server lang: <none>
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] kex follows: False
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] Compression: none
2025-09-29T15:08:49.264 [DEBUG] [Thread-159417] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:08:49.283 [DEBUG] [Thread-159417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:08:49.283 [DEBUG] [Thread-159417] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:08:49.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:08:49.284 [DEBUG] [Thread-159417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:08:49.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:08:49.286 [DEBUG] [Thread-159417] [transport.py] [_log()] userauth is OK
2025-09-29T15:08:49.287 [DEBUG] [Thread-159417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:08:49.287 [DEBUG] [Thread-159417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:08:49.287 [DEBUG] [Thread-159417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:08:49.287 [DEBUG] [Thread-159417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:08:49.303 [INFO] [Thread-159417] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:08:49.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:08:49.863 [DEBUG] [Thread-159417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:08:49.863 [DEBUG] [Thread-159417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:08:49.864 [DEBUG] [Thread-159417] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:08:49.904 [DEBUG] [Thread-159417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:08:49.904 [DEBUG] [Thread-159417] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:08:49.907 [DEBUG] [Thread-159417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:08:49.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:08:49.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:08:49.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:08:49.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:08:49.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:08:49.925 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:08:49.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:08:49.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:08:49.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:08:49.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.547637 -999.00  +16.30  10.36     37   +1.90 1 1 1 1 1   888    0 14.67 15.69 ----- 8.8 10.4 179.0 14.7 24.5 -30.2 23.2 -28.3 25.3 -29.2 26.6 -30.4
2025-09-29T15:08:49.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:08:49.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:08:49.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.547637
2025-09-29T15:08:49.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:08:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:08:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:08:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:08:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:08:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:08:37', tmtdew=15.93, humidity=33.68, cloud=0.0, wind=10.53, temperature=15.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:08:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:08:49.927 [DEBUG] [Thread-159417] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:08:50.012 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:08:50.021 [DEBUG] [Thread-159420] [transport.py] [_log()] starting thread (client mode): 0x2b96a860
2025-09-29T15:08:50.021 [DEBUG] [Thread-159420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:08:50.036 [DEBUG] [Thread-159420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:08:50.036 [INFO] [Thread-159420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:08:50.043 [DEBUG] [Thread-159420] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:08:50.043 [DEBUG] [Thread-159420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:08:50.043 [DEBUG] [Thread-159420] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:08:50.043 [DEBUG] [Thread-159420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:50.043 [DEBUG] [Thread-159420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:08:50.043 [DEBUG] [Thread-159420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:50.043 [DEBUG] [Thread-159420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:08:50.043 [DEBUG] [Thread-159420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] client lang: <none>
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] server lang: <none>
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] kex follows: False
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] Compression: none
2025-09-29T15:08:50.044 [DEBUG] [Thread-159420] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:08:50.105 [DEBUG] [Thread-159420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:08:50.105 [DEBUG] [Thread-159420] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:08:50.106 [DEBUG] [Thread-159420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:08:50.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:08:50.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:08:50.161 [DEBUG] [Thread-159420] [transport.py] [_log()] userauth is OK
2025-09-29T15:08:50.161 [DEBUG] [Thread-159420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:08:50.161 [DEBUG] [Thread-159420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:08:50.161 [DEBUG] [Thread-159420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:08:50.161 [DEBUG] [Thread-159420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:08:50.177 [INFO] [Thread-159420] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:08:50.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:08:50.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:08:51.160 [DEBUG] [Thread-159420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:08:51.160 [DEBUG] [Thread-159420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:08:51.208 [DEBUG] [Thread-159420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:08:51.208 [DEBUG] [Thread-159420] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:08:51.217 [DEBUG] [Thread-159420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:08:51.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:08:51.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:08:51.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:08:51.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:08:51.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:08:51.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:08:51.252 [DEBUG] [Thread-159420] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:08:53.427 [DEBUG] [Thread-159422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:09:01.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:09:01.255 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:09:01.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:09:01.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 8, 37), 15.93, 33.68, 0.0, 10.53, 15.54, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:09:01.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:08:37
2025-09-29T15:09:01.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:09:02.112 [DEBUG] [Thread-159423] [transport.py] [_log()] starting thread (client mode): 0x2b9ba830
2025-09-29T15:09:02.112 [DEBUG] [Thread-159423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:02.131 [DEBUG] [Thread-159423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:09:02.131 [INFO] [Thread-159423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:09:02.134 [DEBUG] [Thread-159423] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:02.135 [DEBUG] [Thread-159423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:02.136 [DEBUG] [Thread-159423] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:02.136 [DEBUG] [Thread-159423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:02.136 [DEBUG] [Thread-159423] [transport.py] [_log()] Compression: none
2025-09-29T15:09:02.136 [DEBUG] [Thread-159423] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:02.156 [DEBUG] [Thread-159423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:02.156 [DEBUG] [Thread-159423] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:02.157 [DEBUG] [Thread-159423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:09:02.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:09:02.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:02.159 [DEBUG] [Thread-159423] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:02.159 [DEBUG] [Thread-159423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:02.159 [DEBUG] [Thread-159423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:02.159 [DEBUG] [Thread-159423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:09:02.159 [DEBUG] [Thread-159423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:02.183 [INFO] [Thread-159423] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:02.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:02.922 [DEBUG] [Thread-159423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:02.922 [DEBUG] [Thread-159423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:02.922 [DEBUG] [Thread-159423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:09:02.963 [DEBUG] [Thread-159423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:02.964 [DEBUG] [Thread-159423] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:02.967 [DEBUG] [Thread-159423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:02.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:02.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:09:02.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:09:02.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:09:02.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:02.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:09:02.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:02.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.547637 -999.00  +16.30  10.36     37   +1.90 1 1 1 1 1   888    0 14.67 15.69 ----- 8.8 10.4 179.0 14.7 24.5 -30.2 23.2 -28.3 25.3 -29.2 26.6 -30.4
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.547637
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:09:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:08:37', tmtdew=15.93, humidity=33.68, cloud=0.0, wind=10.53, temperature=15.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:08:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:09:02.991 [DEBUG] [Thread-159423] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:03.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:09:03.074 [DEBUG] [Thread-159426] [transport.py] [_log()] starting thread (client mode): 0x2b96edd0
2025-09-29T15:09:03.074 [DEBUG] [Thread-159426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:03.089 [DEBUG] [Thread-159426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:09:03.089 [INFO] [Thread-159426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:09:03.096 [DEBUG] [Thread-159426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:03.096 [DEBUG] [Thread-159426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] Compression: none
2025-09-29T15:09:03.097 [DEBUG] [Thread-159426] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:03.153 [DEBUG] [Thread-159426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:03.154 [DEBUG] [Thread-159426] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:03.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:09:03.155 [DEBUG] [Thread-159426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:09:03.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:03.209 [DEBUG] [Thread-159426] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:03.210 [DEBUG] [Thread-159426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:03.210 [DEBUG] [Thread-159426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:03.210 [DEBUG] [Thread-159426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:09:03.210 [DEBUG] [Thread-159426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:03.229 [INFO] [Thread-159426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:03.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:09:03.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:04.192 [DEBUG] [Thread-159426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:04.192 [DEBUG] [Thread-159426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:04.240 [DEBUG] [Thread-159426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:04.240 [DEBUG] [Thread-159426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:04.249 [DEBUG] [Thread-159426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:04.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:04.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:09:04.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:09:04.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:04.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:04.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:04.283 [DEBUG] [Thread-159426] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:08.464 [DEBUG] [Thread-159428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:09:10.266 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:09:10.267 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:09:14.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:09:14.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:09:14.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:09:14.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 9, 9), 15.89, 33.78, 0.0, 10.11, 15.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:09:14.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:09:09
2025-09-29T15:09:14.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:09:15.137 [DEBUG] [Thread-159429] [transport.py] [_log()] starting thread (client mode): 0x2b9ce500
2025-09-29T15:09:15.137 [DEBUG] [Thread-159429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:15.158 [DEBUG] [Thread-159429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:09:15.158 [INFO] [Thread-159429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:15.161 [DEBUG] [Thread-159429] [transport.py] [_log()] Compression: none
2025-09-29T15:09:15.162 [DEBUG] [Thread-159429] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:15.180 [DEBUG] [Thread-159429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:15.181 [DEBUG] [Thread-159429] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:15.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:09:15.182 [DEBUG] [Thread-159429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:09:15.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:15.184 [DEBUG] [Thread-159429] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:15.184 [DEBUG] [Thread-159429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:15.184 [DEBUG] [Thread-159429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:15.184 [DEBUG] [Thread-159429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:09:15.184 [DEBUG] [Thread-159429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:15.208 [INFO] [Thread-159429] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:15.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:15.834 [DEBUG] [Thread-159429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:15.834 [DEBUG] [Thread-159429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:15.835 [DEBUG] [Thread-159429] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:09:15.875 [DEBUG] [Thread-159429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:15.875 [DEBUG] [Thread-159429] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:15.879 [DEBUG] [Thread-159429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:15.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:15.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:09:15.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:09:15.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:09:15.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:15.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:09:15.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:15.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:15.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:09:15.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.547984 -999.00  +16.50  12.46     38   +2.10 1 1 1 1 1   888    0 14.45 15.30 ----- 8.3 12.5 193.4 14.9 24.4 -29.3 23.1 -29.3 25.2 -28.4 26.5 -30.0
2025-09-29T15:09:15.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:09:15.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:09:15.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.547984
2025-09-29T15:09:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:09:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:09:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:09:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:09:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:09:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:09:09', tmtdew=15.89, humidity=33.78, cloud=0.0, wind=10.11, temperature=15.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:09:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:09:15.900 [DEBUG] [Thread-159429] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:15.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:09:15.994 [DEBUG] [Thread-159432] [transport.py] [_log()] starting thread (client mode): 0x30ddead0
2025-09-29T15:09:15.994 [DEBUG] [Thread-159432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:16.009 [DEBUG] [Thread-159432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:09:16.009 [INFO] [Thread-159432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] Compression: none
2025-09-29T15:09:16.017 [DEBUG] [Thread-159432] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:16.073 [DEBUG] [Thread-159432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:16.073 [DEBUG] [Thread-159432] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:16.073 [DEBUG] [Thread-159432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:09:16.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:09:16.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:16.130 [DEBUG] [Thread-159432] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:16.130 [DEBUG] [Thread-159432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:16.130 [DEBUG] [Thread-159432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:16.130 [DEBUG] [Thread-159432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:09:16.130 [DEBUG] [Thread-159432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:16.151 [INFO] [Thread-159432] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:16.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:09:16.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:17.144 [DEBUG] [Thread-159432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:17.144 [DEBUG] [Thread-159432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:17.192 [DEBUG] [Thread-159432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:17.192 [DEBUG] [Thread-159432] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:17.201 [DEBUG] [Thread-159432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:17.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:17.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:09:17.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:09:17.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:17.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:17.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:17.236 [DEBUG] [Thread-159432] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:23.493 [DEBUG] [Thread-159434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:09:27.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:09:27.238 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:09:27.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:09:27.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 9, 9), 15.89, 33.78, 0.0, 10.11, 15.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:09:27.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:09:09
2025-09-29T15:09:27.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:09:28.097 [DEBUG] [Thread-159435] [transport.py] [_log()] starting thread (client mode): 0x2b9ccac0
2025-09-29T15:09:28.097 [DEBUG] [Thread-159435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:28.118 [DEBUG] [Thread-159435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:09:28.119 [INFO] [Thread-159435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:28.122 [DEBUG] [Thread-159435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] Compression: none
2025-09-29T15:09:28.123 [DEBUG] [Thread-159435] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:28.139 [DEBUG] [Thread-159435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:28.140 [DEBUG] [Thread-159435] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:28.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:09:28.141 [DEBUG] [Thread-159435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:09:28.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:28.143 [DEBUG] [Thread-159435] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:28.143 [DEBUG] [Thread-159435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:28.143 [DEBUG] [Thread-159435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:28.143 [DEBUG] [Thread-159435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:09:28.143 [DEBUG] [Thread-159435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:28.167 [INFO] [Thread-159435] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:28.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:28.929 [DEBUG] [Thread-159435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:28.929 [DEBUG] [Thread-159435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:28.929 [DEBUG] [Thread-159435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:09:28.970 [DEBUG] [Thread-159435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:28.971 [DEBUG] [Thread-159435] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:28.973 [DEBUG] [Thread-159435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:28.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:28.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:09:28.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:09:28.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:09:28.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:28.998 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:09:28.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:28.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:28.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:09:28.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.547984 -999.00  +16.50  12.46     38   +2.10 1 1 1 1 1   888    0 14.45 15.30 ----- 8.3 12.5 193.4 14.9 24.4 -29.3 23.1 -29.3 25.2 -28.4 26.5 -30.0
2025-09-29T15:09:28.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:09:28.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:09:28.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.547984
2025-09-29T15:09:29.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:09:29.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:09:29.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:09:29.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:09:29.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:09:29.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:09:09', tmtdew=15.89, humidity=33.78, cloud=0.0, wind=10.11, temperature=15.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:09:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:09:29.001 [DEBUG] [Thread-159435] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:29.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:09:29.097 [DEBUG] [Thread-159438] [transport.py] [_log()] starting thread (client mode): 0x2b9cc670
2025-09-29T15:09:29.097 [DEBUG] [Thread-159438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:29.113 [DEBUG] [Thread-159438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:09:29.114 [INFO] [Thread-159438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:29.121 [DEBUG] [Thread-159438] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:29.122 [DEBUG] [Thread-159438] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:29.122 [DEBUG] [Thread-159438] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:29.122 [DEBUG] [Thread-159438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:29.122 [DEBUG] [Thread-159438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:29.122 [DEBUG] [Thread-159438] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:29.122 [DEBUG] [Thread-159438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:29.122 [DEBUG] [Thread-159438] [transport.py] [_log()] Compression: none
2025-09-29T15:09:29.122 [DEBUG] [Thread-159438] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:29.177 [DEBUG] [Thread-159438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:29.178 [DEBUG] [Thread-159438] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:29.178 [DEBUG] [Thread-159438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:09:29.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:09:29.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:29.235 [DEBUG] [Thread-159438] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:29.235 [DEBUG] [Thread-159438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:29.235 [DEBUG] [Thread-159438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:29.235 [DEBUG] [Thread-159438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:09:29.235 [DEBUG] [Thread-159438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:29.258 [INFO] [Thread-159438] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:29.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:09:29.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:30.270 [DEBUG] [Thread-159438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:30.271 [DEBUG] [Thread-159438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:30.318 [DEBUG] [Thread-159438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:30.318 [DEBUG] [Thread-159438] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:30.327 [DEBUG] [Thread-159438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:30.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:30.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:09:30.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:09:30.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:30.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:30.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:30.364 [DEBUG] [Thread-159438] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:38.537 [DEBUG] [Thread-159440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:09:40.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:09:40.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:09:40.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:09:40.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 9, 9), 15.89, 33.78, 0.0, 10.11, 15.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:09:40.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:09:09
2025-09-29T15:09:41.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:09:41.237 [DEBUG] [Thread-159441] [transport.py] [_log()] starting thread (client mode): 0x30ddd720
2025-09-29T15:09:41.237 [DEBUG] [Thread-159441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:41.257 [DEBUG] [Thread-159441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:09:41.257 [INFO] [Thread-159441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:41.260 [DEBUG] [Thread-159441] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:41.261 [DEBUG] [Thread-159441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:41.261 [DEBUG] [Thread-159441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:41.261 [DEBUG] [Thread-159441] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:41.261 [DEBUG] [Thread-159441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:41.261 [DEBUG] [Thread-159441] [transport.py] [_log()] Compression: none
2025-09-29T15:09:41.261 [DEBUG] [Thread-159441] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:41.276 [DEBUG] [Thread-159441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:41.277 [DEBUG] [Thread-159441] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:41.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:09:41.278 [DEBUG] [Thread-159441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:09:41.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:41.280 [DEBUG] [Thread-159441] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:41.280 [DEBUG] [Thread-159441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:41.280 [DEBUG] [Thread-159441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:41.280 [DEBUG] [Thread-159441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:09:41.280 [DEBUG] [Thread-159441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:41.304 [INFO] [Thread-159441] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:41.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:42.033 [DEBUG] [Thread-159441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:42.033 [DEBUG] [Thread-159441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:42.033 [DEBUG] [Thread-159441] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:09:42.074 [DEBUG] [Thread-159441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:42.074 [DEBUG] [Thread-159441] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:42.076 [DEBUG] [Thread-159441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:42.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:42.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:09:42.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:09:42.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:09:42.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:42.093 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:09:42.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.547984 -999.00  +16.50  12.46     38   +2.10 1 1 1 1 1   888    0 14.45 15.30 ----- 8.3 12.5 193.4 14.9 24.4 -29.3 23.1 -29.3 25.2 -28.4 26.5 -30.0
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.547984
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:09:42.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:09:09', tmtdew=15.89, humidity=33.78, cloud=0.0, wind=10.11, temperature=15.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:09:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:09:42.095 [DEBUG] [Thread-159441] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:42.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:09:42.182 [DEBUG] [Thread-159444] [transport.py] [_log()] starting thread (client mode): 0x2b9cc8e0
2025-09-29T15:09:42.183 [DEBUG] [Thread-159444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:42.198 [DEBUG] [Thread-159444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:09:42.198 [INFO] [Thread-159444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] Compression: none
2025-09-29T15:09:42.206 [DEBUG] [Thread-159444] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:42.264 [DEBUG] [Thread-159444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:42.265 [DEBUG] [Thread-159444] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:42.265 [DEBUG] [Thread-159444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:09:42.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:09:42.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:42.326 [DEBUG] [Thread-159444] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:42.326 [DEBUG] [Thread-159444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:42.326 [DEBUG] [Thread-159444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:42.326 [DEBUG] [Thread-159444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:09:42.326 [DEBUG] [Thread-159444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:42.342 [INFO] [Thread-159444] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:42.342 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:09:42.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:43.376 [DEBUG] [Thread-159444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:43.376 [DEBUG] [Thread-159444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:43.424 [DEBUG] [Thread-159444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:43.424 [DEBUG] [Thread-159444] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:43.432 [DEBUG] [Thread-159444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:43.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:43.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:09:43.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:09:43.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:43.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:43.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:43.464 [DEBUG] [Thread-159444] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:45.950 [DEBUG] [Thread-159446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:09:53.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:09:53.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:09:53.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:09:53.566 [DEBUG] [Thread-159447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:09:54.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 9, 41), 15.9, 33.83, 0.0, 14.91, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:09:54.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:09:41
2025-09-29T15:09:54.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:09:54.324 [DEBUG] [Thread-159448] [transport.py] [_log()] starting thread (client mode): 0x2b9cc6d0
2025-09-29T15:09:54.324 [DEBUG] [Thread-159448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:54.345 [DEBUG] [Thread-159448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:09:54.346 [INFO] [Thread-159448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] Compression: none
2025-09-29T15:09:54.349 [DEBUG] [Thread-159448] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:54.369 [DEBUG] [Thread-159448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:54.370 [DEBUG] [Thread-159448] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:54.370 [DEBUG] [Thread-159448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:09:54.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:09:54.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:54.372 [DEBUG] [Thread-159448] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:54.372 [DEBUG] [Thread-159448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:54.372 [DEBUG] [Thread-159448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:54.372 [DEBUG] [Thread-159448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:09:54.373 [DEBUG] [Thread-159448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:54.408 [INFO] [Thread-159448] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:54.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:55.004 [DEBUG] [Thread-159448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:55.005 [DEBUG] [Thread-159448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:55.005 [DEBUG] [Thread-159448] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:09:55.045 [DEBUG] [Thread-159448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:55.045 [DEBUG] [Thread-159448] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:55.048 [DEBUG] [Thread-159448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:55.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:55.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:09:55.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:09:55.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:09:55.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:55.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:09:55.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:55.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:55.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:09:55.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.548331 -999.00  +16.20  15.11     37   +1.80 1 1 1 1 1   888    0 14.77 14.17 ----- 14.3 15.1 183.6 20.1 24.3 -29.9 22.8 -33.6 25.1 -29.2 26.4 -31.5
2025-09-29T15:09:55.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:09:55.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:09:55.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.548331
2025-09-29T15:09:55.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:09:55.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:09:55.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:09:55.072 [DEBUG] [Thread-159448] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:09:55.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:09:55.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:09:55.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:09:41', tmtdew=15.9, humidity=33.83, cloud=0.0, wind=14.91, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:09:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:09:55.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:09:55.166 [DEBUG] [Thread-159451] [transport.py] [_log()] starting thread (client mode): 0x2e3744f0
2025-09-29T15:09:55.166 [DEBUG] [Thread-159451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:09:55.181 [DEBUG] [Thread-159451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:09:55.181 [INFO] [Thread-159451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:09:55.188 [DEBUG] [Thread-159451] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:09:55.188 [DEBUG] [Thread-159451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:09:55.188 [DEBUG] [Thread-159451] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:09:55.188 [DEBUG] [Thread-159451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] client lang: <none>
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] server lang: <none>
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] kex follows: False
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:09:55.189 [DEBUG] [Thread-159451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:09:55.190 [DEBUG] [Thread-159451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:09:55.190 [DEBUG] [Thread-159451] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:09:55.190 [DEBUG] [Thread-159451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:09:55.190 [DEBUG] [Thread-159451] [transport.py] [_log()] Compression: none
2025-09-29T15:09:55.190 [DEBUG] [Thread-159451] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:09:55.245 [DEBUG] [Thread-159451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:09:55.245 [DEBUG] [Thread-159451] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:09:55.246 [DEBUG] [Thread-159451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:09:55.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:09:55.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:09:55.301 [DEBUG] [Thread-159451] [transport.py] [_log()] userauth is OK
2025-09-29T15:09:55.301 [DEBUG] [Thread-159451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:09:55.301 [DEBUG] [Thread-159451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:09:55.302 [DEBUG] [Thread-159451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:09:55.302 [DEBUG] [Thread-159451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:09:55.320 [INFO] [Thread-159451] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:09:55.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:09:55.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:09:56.381 [DEBUG] [Thread-159451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:09:56.381 [DEBUG] [Thread-159451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:09:56.429 [DEBUG] [Thread-159451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:09:56.429 [DEBUG] [Thread-159451] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:09:56.438 [DEBUG] [Thread-159451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:09:56.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:09:56.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:09:56.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:09:56.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:09:56.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:09:56.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:09:56.473 [DEBUG] [Thread-159451] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:10:06.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:10:06.475 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:10:06.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:10:07.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 9, 41), 15.9, 33.83, 0.0, 14.91, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:10:07.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:09:41
2025-09-29T15:10:07.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:10:07.325 [DEBUG] [Thread-159453] [transport.py] [_log()] starting thread (client mode): 0x30ddf940
2025-09-29T15:10:07.326 [DEBUG] [Thread-159453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:10:07.346 [DEBUG] [Thread-159453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:10:07.346 [INFO] [Thread-159453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] client lang: <none>
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] server lang: <none>
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] kex follows: False
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] Compression: none
2025-09-29T15:10:07.350 [DEBUG] [Thread-159453] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:10:07.366 [DEBUG] [Thread-159453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:10:07.367 [DEBUG] [Thread-159453] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:10:07.368 [DEBUG] [Thread-159453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:10:07.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:10:07.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:10:07.369 [DEBUG] [Thread-159453] [transport.py] [_log()] userauth is OK
2025-09-29T15:10:07.370 [DEBUG] [Thread-159453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:10:07.370 [DEBUG] [Thread-159453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:10:07.370 [DEBUG] [Thread-159453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:10:07.370 [DEBUG] [Thread-159453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:10:07.388 [INFO] [Thread-159453] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:10:07.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:10:08.593 [DEBUG] [Thread-159455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:10:10.405 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:10:10.406 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:10:14.556 [DEBUG] [Thread-159453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:10:14.557 [DEBUG] [Thread-159453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:10:14.557 [DEBUG] [Thread-159453] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:10:14.598 [DEBUG] [Thread-159453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:10:14.598 [DEBUG] [Thread-159453] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:10:14.601 [DEBUG] [Thread-159453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:10:14.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:10:14.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:10:14.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:10:14.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:10:14.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:10:14.701 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:10:14.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.548331 -999.00  +16.20  15.11     37   +1.80 1 1 1 1 1   888    0 14.77 14.17 ----- 14.3 15.1 183.6 20.1 24.3 -29.9 22.8 -33.6 25.1 -29.2 26.4 -31.5
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.548331
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:10:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:09:41', tmtdew=15.9, humidity=33.83, cloud=0.0, wind=14.91, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:09:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:10:14.702 [DEBUG] [Thread-159453] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:10:14.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:10:14.791 [DEBUG] [Thread-159457] [transport.py] [_log()] starting thread (client mode): 0x2b96c190
2025-09-29T15:10:14.791 [DEBUG] [Thread-159457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:10:14.806 [DEBUG] [Thread-159457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:10:14.806 [INFO] [Thread-159457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:10:14.813 [DEBUG] [Thread-159457] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:10:14.813 [DEBUG] [Thread-159457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:10:14.813 [DEBUG] [Thread-159457] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:10:14.813 [DEBUG] [Thread-159457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:14.813 [DEBUG] [Thread-159457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:14.813 [DEBUG] [Thread-159457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:14.813 [DEBUG] [Thread-159457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:14.813 [DEBUG] [Thread-159457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] client lang: <none>
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] server lang: <none>
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] kex follows: False
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] Compression: none
2025-09-29T15:10:14.814 [DEBUG] [Thread-159457] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:10:14.872 [DEBUG] [Thread-159457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:10:14.872 [DEBUG] [Thread-159457] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:10:14.872 [DEBUG] [Thread-159457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:10:14.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:10:14.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:10:14.929 [DEBUG] [Thread-159457] [transport.py] [_log()] userauth is OK
2025-09-29T15:10:14.929 [DEBUG] [Thread-159457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:10:14.929 [DEBUG] [Thread-159457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:10:14.929 [DEBUG] [Thread-159457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:10:14.929 [DEBUG] [Thread-159457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:10:14.947 [INFO] [Thread-159457] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:10:14.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:10:14.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:10:15.981 [DEBUG] [Thread-159457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:10:15.981 [DEBUG] [Thread-159457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:10:16.029 [DEBUG] [Thread-159457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:10:16.029 [DEBUG] [Thread-159457] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:10:16.038 [DEBUG] [Thread-159457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:10:16.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:10:16.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:10:16.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:10:16.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:10:16.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:10:16.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:10:16.073 [DEBUG] [Thread-159457] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:10:23.636 [DEBUG] [Thread-159459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:10:26.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:10:26.075 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:10:26.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:10:26.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 10, 13), 15.87, 33.9, 0.0, 13.48, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:10:26.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:10:13
2025-09-29T15:10:26.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:10:26.939 [DEBUG] [Thread-159460] [transport.py] [_log()] starting thread (client mode): 0x2e3f8a90
2025-09-29T15:10:26.939 [DEBUG] [Thread-159460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:10:26.959 [DEBUG] [Thread-159460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:10:26.959 [INFO] [Thread-159460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:10:26.962 [DEBUG] [Thread-159460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:10:26.962 [DEBUG] [Thread-159460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:10:26.962 [DEBUG] [Thread-159460] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:10:26.962 [DEBUG] [Thread-159460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] client lang: <none>
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] server lang: <none>
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] kex follows: False
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] Compression: none
2025-09-29T15:10:26.963 [DEBUG] [Thread-159460] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:10:26.976 [DEBUG] [Thread-159460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:10:26.977 [DEBUG] [Thread-159460] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:10:26.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:10:26.978 [DEBUG] [Thread-159460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:10:26.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:10:26.980 [DEBUG] [Thread-159460] [transport.py] [_log()] userauth is OK
2025-09-29T15:10:26.980 [DEBUG] [Thread-159460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:10:26.980 [DEBUG] [Thread-159460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:10:26.980 [DEBUG] [Thread-159460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:10:26.980 [DEBUG] [Thread-159460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:10:26.998 [INFO] [Thread-159460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:10:26.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:10:27.601 [DEBUG] [Thread-159460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:10:27.601 [DEBUG] [Thread-159460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:10:27.602 [DEBUG] [Thread-159460] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:10:27.642 [DEBUG] [Thread-159460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:10:27.642 [DEBUG] [Thread-159460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:10:27.645 [DEBUG] [Thread-159460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:10:27.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:10:27.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:10:27.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:10:27.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:10:27.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:10:27.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:10:27.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:10:27.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:10:27.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:10:27.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.548678 -999.00  +15.90  12.56     38   +1.70 1 1 1 1 1   888    0 14.49 13.98 ----- 13.0 12.6 162.0 17.6 24.2 -30.0 23.1 -31.9 25.1 -29.5 26.4 -30.8
2025-09-29T15:10:27.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:10:27.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:10:27.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.548678
2025-09-29T15:10:27.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:10:27.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:10:27.670 [DEBUG] [Thread-159460] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:10:27.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:10:27.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:10:27.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:10:27.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:10:13', tmtdew=15.87, humidity=33.9, cloud=0.0, wind=13.48, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:10:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:10:27.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:10:27.768 [DEBUG] [Thread-159463] [transport.py] [_log()] starting thread (client mode): 0x2e376d40
2025-09-29T15:10:27.768 [DEBUG] [Thread-159463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:10:27.783 [DEBUG] [Thread-159463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:10:27.783 [INFO] [Thread-159463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:10:27.790 [DEBUG] [Thread-159463] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:10:27.791 [DEBUG] [Thread-159463] [transport.py] [_log()] client lang: <none>
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] server lang: <none>
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] kex follows: False
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] Compression: none
2025-09-29T15:10:27.792 [DEBUG] [Thread-159463] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:10:27.850 [DEBUG] [Thread-159463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:10:27.850 [DEBUG] [Thread-159463] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:10:27.851 [DEBUG] [Thread-159463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:10:27.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:10:27.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:10:27.905 [DEBUG] [Thread-159463] [transport.py] [_log()] userauth is OK
2025-09-29T15:10:27.906 [DEBUG] [Thread-159463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:10:27.906 [DEBUG] [Thread-159463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:10:27.906 [DEBUG] [Thread-159463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:10:27.906 [DEBUG] [Thread-159463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:10:27.925 [INFO] [Thread-159463] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:10:27.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:10:27.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:10:28.908 [DEBUG] [Thread-159463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:10:28.909 [DEBUG] [Thread-159463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:10:28.956 [DEBUG] [Thread-159463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:10:28.956 [DEBUG] [Thread-159463] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:10:28.965 [DEBUG] [Thread-159463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:10:28.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:10:28.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:10:28.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:10:28.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:10:28.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:10:28.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:10:29.000 [DEBUG] [Thread-159463] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:10:38.671 [DEBUG] [Thread-159465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:10:39.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:10:39.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:10:39.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:10:39.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 10, 13), 15.87, 33.9, 0.0, 13.48, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:10:39.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:10:13
2025-09-29T15:10:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:10:39.857 [DEBUG] [Thread-159466] [transport.py] [_log()] starting thread (client mode): 0x2e3fbac0
2025-09-29T15:10:39.857 [DEBUG] [Thread-159466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:10:39.872 [DEBUG] [Thread-159466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:10:39.872 [INFO] [Thread-159466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:10:39.873 [DEBUG] [Thread-159466] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:10:39.873 [DEBUG] [Thread-159466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:10:39.873 [DEBUG] [Thread-159466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:10:39.873 [DEBUG] [Thread-159466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:39.873 [DEBUG] [Thread-159466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] client lang: <none>
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] server lang: <none>
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] kex follows: False
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] Compression: none
2025-09-29T15:10:39.874 [DEBUG] [Thread-159466] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:10:39.883 [DEBUG] [Thread-159466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:10:39.884 [DEBUG] [Thread-159466] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:10:39.884 [DEBUG] [Thread-159466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:10:39.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:10:39.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:10:39.885 [DEBUG] [Thread-159466] [transport.py] [_log()] userauth is OK
2025-09-29T15:10:39.885 [DEBUG] [Thread-159466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:10:39.886 [DEBUG] [Thread-159466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:10:39.886 [DEBUG] [Thread-159466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:10:39.886 [DEBUG] [Thread-159466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:10:39.900 [INFO] [Thread-159466] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:10:39.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:10:40.604 [DEBUG] [Thread-159466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:10:40.604 [DEBUG] [Thread-159466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:10:40.604 [DEBUG] [Thread-159466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:10:40.645 [DEBUG] [Thread-159466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:10:40.645 [DEBUG] [Thread-159466] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:10:40.647 [DEBUG] [Thread-159466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:10:40.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:10:40.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:10:40.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:10:40.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:10:40.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:10:40.665 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:10:40.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:10:40.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:10:40.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:10:40.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.548678 -999.00  +15.90  12.56     38   +1.70 1 1 1 1 1   888    0 14.49 13.98 ----- 13.0 12.6 162.0 17.6 24.2 -30.0 23.1 -31.9 25.1 -29.5 26.4 -30.8
2025-09-29T15:10:40.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:10:40.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:10:40.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.548678
2025-09-29T15:10:40.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:10:40.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:10:40.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:10:40.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:10:40.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:10:40.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:10:13', tmtdew=15.87, humidity=33.9, cloud=0.0, wind=13.48, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:10:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:10:40.668 [DEBUG] [Thread-159466] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:10:40.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:10:40.750 [DEBUG] [Thread-159469] [transport.py] [_log()] starting thread (client mode): 0x2e3f8370
2025-09-29T15:10:40.750 [DEBUG] [Thread-159469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:10:40.765 [DEBUG] [Thread-159469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:10:40.765 [INFO] [Thread-159469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:10:40.772 [DEBUG] [Thread-159469] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:10:40.772 [DEBUG] [Thread-159469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:10:40.772 [DEBUG] [Thread-159469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:10:40.772 [DEBUG] [Thread-159469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:40.772 [DEBUG] [Thread-159469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:40.772 [DEBUG] [Thread-159469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] client lang: <none>
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] server lang: <none>
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] kex follows: False
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] Compression: none
2025-09-29T15:10:40.773 [DEBUG] [Thread-159469] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:10:40.829 [DEBUG] [Thread-159469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:10:40.830 [DEBUG] [Thread-159469] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:10:40.830 [DEBUG] [Thread-159469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:10:40.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:10:40.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:10:40.885 [DEBUG] [Thread-159469] [transport.py] [_log()] userauth is OK
2025-09-29T15:10:40.886 [DEBUG] [Thread-159469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:10:40.886 [DEBUG] [Thread-159469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:10:40.886 [DEBUG] [Thread-159469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:10:40.886 [DEBUG] [Thread-159469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:10:40.905 [INFO] [Thread-159469] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:10:40.905 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:10:40.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:10:41.877 [DEBUG] [Thread-159469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:10:41.877 [DEBUG] [Thread-159469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:10:41.925 [DEBUG] [Thread-159469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:10:41.925 [DEBUG] [Thread-159469] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:10:41.934 [DEBUG] [Thread-159469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:10:41.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:10:41.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:10:41.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:10:41.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:10:41.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:10:41.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:10:41.969 [DEBUG] [Thread-159469] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:10:45.977 [DEBUG] [Thread-159471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:10:51.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:10:51.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:10:51.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:10:52.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 10, 45), 16.16, 33.03, 0.0, 15.37, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:10:52.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:10:45
2025-09-29T15:10:52.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:10:52.835 [DEBUG] [Thread-159472] [transport.py] [_log()] starting thread (client mode): 0x2b96f100
2025-09-29T15:10:52.835 [DEBUG] [Thread-159472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:10:52.854 [DEBUG] [Thread-159472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:10:52.854 [INFO] [Thread-159472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:10:52.855 [DEBUG] [Thread-159472] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:10:52.855 [DEBUG] [Thread-159472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:10:52.855 [DEBUG] [Thread-159472] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:10:52.855 [DEBUG] [Thread-159472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:52.855 [DEBUG] [Thread-159472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:52.855 [DEBUG] [Thread-159472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] client lang: <none>
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] server lang: <none>
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] kex follows: False
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] Compression: none
2025-09-29T15:10:52.856 [DEBUG] [Thread-159472] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:10:52.865 [DEBUG] [Thread-159472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:10:52.866 [DEBUG] [Thread-159472] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:10:52.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:10:52.866 [DEBUG] [Thread-159472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:10:52.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:10:52.867 [DEBUG] [Thread-159472] [transport.py] [_log()] userauth is OK
2025-09-29T15:10:52.867 [DEBUG] [Thread-159472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:10:52.867 [DEBUG] [Thread-159472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:10:52.868 [DEBUG] [Thread-159472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:10:52.868 [DEBUG] [Thread-159472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:10:52.881 [INFO] [Thread-159472] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:10:52.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:10:53.508 [DEBUG] [Thread-159472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:10:53.508 [DEBUG] [Thread-159472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:10:53.509 [DEBUG] [Thread-159472] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:10:53.549 [DEBUG] [Thread-159472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:10:53.549 [DEBUG] [Thread-159472] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:10:53.551 [DEBUG] [Thread-159472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:10:53.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:10:53.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:10:53.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:10:53.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:10:53.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:10:53.561 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:10:53.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:10:53.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:10:53.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:10:53.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.549026 -999.00  +15.90   9.52     38   +1.80 1 1 1 1 1   888    0 14.38 13.58 ----- 10.7 9.5 184.9 14.3 24.3 -29.0 23.1 -28.8 25.1 -28.5 26.4 -30.9
2025-09-29T15:10:53.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:10:53.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:10:53.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.549026
2025-09-29T15:10:53.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:10:53.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:10:53.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:10:53.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:10:53.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:10:53.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:10:45', tmtdew=16.16, humidity=33.03, cloud=0.0, wind=15.37, temperature=15.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:10:35.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:10:53.562 [DEBUG] [Thread-159472] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:10:53.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:10:53.667 [DEBUG] [Thread-159475] [transport.py] [_log()] starting thread (client mode): 0x2e362f80
2025-09-29T15:10:53.667 [DEBUG] [Thread-159475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:10:53.683 [DEBUG] [Thread-159475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:10:53.683 [INFO] [Thread-159475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:10:53.690 [DEBUG] [Thread-159475] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] client lang: <none>
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] server lang: <none>
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] kex follows: False
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] Compression: none
2025-09-29T15:10:53.691 [DEBUG] [Thread-159475] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:10:53.722 [DEBUG] [Thread-159477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:10:53.750 [DEBUG] [Thread-159475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:10:53.750 [DEBUG] [Thread-159475] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:10:53.751 [DEBUG] [Thread-159475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:10:53.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:10:53.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:10:53.805 [DEBUG] [Thread-159475] [transport.py] [_log()] userauth is OK
2025-09-29T15:10:53.805 [DEBUG] [Thread-159475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:10:53.806 [DEBUG] [Thread-159475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:10:53.806 [DEBUG] [Thread-159475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:10:53.806 [DEBUG] [Thread-159475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:10:53.825 [INFO] [Thread-159475] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:10:53.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:10:53.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:10:54.808 [DEBUG] [Thread-159475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:10:54.809 [DEBUG] [Thread-159475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:10:54.858 [DEBUG] [Thread-159475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:10:54.858 [DEBUG] [Thread-159475] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:10:54.869 [DEBUG] [Thread-159475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:10:54.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:10:54.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:10:54.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:10:54.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:10:54.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:10:54.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:10:54.903 [DEBUG] [Thread-159475] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:04.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:11:04.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:11:04.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:11:05.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 10, 45), 16.16, 33.03, 0.0, 15.37, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:11:05.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:10:45
2025-09-29T15:11:05.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:11:05.766 [DEBUG] [Thread-159478] [transport.py] [_log()] starting thread (client mode): 0x2e3fa650
2025-09-29T15:11:05.766 [DEBUG] [Thread-159478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:05.787 [DEBUG] [Thread-159478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:11:05.787 [INFO] [Thread-159478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:05.790 [DEBUG] [Thread-159478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:05.791 [DEBUG] [Thread-159478] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:05.791 [DEBUG] [Thread-159478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:05.791 [DEBUG] [Thread-159478] [transport.py] [_log()] Compression: none
2025-09-29T15:11:05.791 [DEBUG] [Thread-159478] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:05.806 [DEBUG] [Thread-159478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:05.806 [DEBUG] [Thread-159478] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:05.806 [DEBUG] [Thread-159478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:11:05.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:11:05.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:05.807 [DEBUG] [Thread-159478] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:05.807 [DEBUG] [Thread-159478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:05.807 [DEBUG] [Thread-159478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:05.807 [DEBUG] [Thread-159478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:11:05.807 [DEBUG] [Thread-159478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:05.825 [INFO] [Thread-159478] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:05.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:06.560 [DEBUG] [Thread-159478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:06.560 [DEBUG] [Thread-159478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:06.561 [DEBUG] [Thread-159478] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:11:06.601 [DEBUG] [Thread-159478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:06.601 [DEBUG] [Thread-159478] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:06.605 [DEBUG] [Thread-159478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:06.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:06.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:11:06.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:11:06.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:11:06.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:06.627 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:11:06.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:06.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:06.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:11:06.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.549026 -999.00  +15.90   9.52     38   +1.80 1 1 1 1 1   888    0 14.38 13.58 ----- 10.7 9.5 184.9 14.3 24.3 -29.0 23.1 -28.8 25.1 -28.5 26.4 -30.9
2025-09-29T15:11:06.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:11:06.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:11:06.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.549026
2025-09-29T15:11:06.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:11:06.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:11:06.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:11:06.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:11:06.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:11:06.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:10:45', tmtdew=16.16, humidity=33.03, cloud=0.0, wind=15.37, temperature=15.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:10:35.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:11:06.630 [DEBUG] [Thread-159478] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:06.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:11:06.717 [DEBUG] [Thread-159481] [transport.py] [_log()] starting thread (client mode): 0x2b9cdf00
2025-09-29T15:11:06.717 [DEBUG] [Thread-159481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:06.733 [DEBUG] [Thread-159481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:11:06.733 [INFO] [Thread-159481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:11:06.740 [DEBUG] [Thread-159481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:06.740 [DEBUG] [Thread-159481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:11:06.740 [DEBUG] [Thread-159481] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] Compression: none
2025-09-29T15:11:06.741 [DEBUG] [Thread-159481] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:06.797 [DEBUG] [Thread-159481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:06.797 [DEBUG] [Thread-159481] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:06.798 [DEBUG] [Thread-159481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:11:06.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:11:06.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:06.853 [DEBUG] [Thread-159481] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:06.853 [DEBUG] [Thread-159481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:06.855 [DEBUG] [Thread-159481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:06.855 [DEBUG] [Thread-159481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:11:06.855 [DEBUG] [Thread-159481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:06.873 [INFO] [Thread-159481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:06.873 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:11:06.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:07.931 [DEBUG] [Thread-159481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:07.931 [DEBUG] [Thread-159481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:07.979 [DEBUG] [Thread-159481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:07.979 [DEBUG] [Thread-159481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:07.988 [DEBUG] [Thread-159481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:07.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:07.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:11:08.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:11:08.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:08.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:08.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:08.022 [DEBUG] [Thread-159481] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:08.777 [DEBUG] [Thread-159483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:11:10.543 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:11:10.544 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:11:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:11:18.024 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:11:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:11:18.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 10, 45), 16.16, 33.03, 0.0, 15.37, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:11:18.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:10:45
2025-09-29T15:11:18.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:11:18.938 [DEBUG] [Thread-159484] [transport.py] [_log()] starting thread (client mode): 0x2b9564d0
2025-09-29T15:11:18.938 [DEBUG] [Thread-159484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:18.958 [DEBUG] [Thread-159484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:11:18.958 [INFO] [Thread-159484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] Compression: none
2025-09-29T15:11:18.960 [DEBUG] [Thread-159484] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:18.971 [DEBUG] [Thread-159484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:18.971 [DEBUG] [Thread-159484] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:18.971 [DEBUG] [Thread-159484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:11:18.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:11:18.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:18.972 [DEBUG] [Thread-159484] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:18.972 [DEBUG] [Thread-159484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:18.972 [DEBUG] [Thread-159484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:18.972 [DEBUG] [Thread-159484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:11:18.972 [DEBUG] [Thread-159484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:18.988 [INFO] [Thread-159484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:18.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:19.727 [DEBUG] [Thread-159484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:19.727 [DEBUG] [Thread-159484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:19.728 [DEBUG] [Thread-159484] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:11:19.768 [DEBUG] [Thread-159484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:19.768 [DEBUG] [Thread-159484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:19.771 [DEBUG] [Thread-159484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:19.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:19.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:11:19.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:11:19.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:11:19.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:19.794 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:11:19.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:19.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:19.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:11:19.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.549026 -999.00  +15.90   9.52     38   +1.80 1 1 1 1 1   888    0 14.38 13.58 ----- 10.7 9.5 184.9 14.3 24.3 -29.0 23.1 -28.8 25.1 -28.5 26.4 -30.9
2025-09-29T15:11:19.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:11:19.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:11:19.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.549026
2025-09-29T15:11:19.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:11:19.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:11:19.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:11:19.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:11:19.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:11:19.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:10:45', tmtdew=16.16, humidity=33.03, cloud=0.0, wind=15.37, temperature=15.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:10:35.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:11:19.797 [DEBUG] [Thread-159484] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:19.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:11:19.892 [DEBUG] [Thread-159487] [transport.py] [_log()] starting thread (client mode): 0x2b955b70
2025-09-29T15:11:19.892 [DEBUG] [Thread-159487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:19.907 [DEBUG] [Thread-159487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:11:19.907 [INFO] [Thread-159487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:11:19.914 [DEBUG] [Thread-159487] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] Compression: none
2025-09-29T15:11:19.915 [DEBUG] [Thread-159487] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:19.973 [DEBUG] [Thread-159487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:19.973 [DEBUG] [Thread-159487] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:19.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:11:19.974 [DEBUG] [Thread-159487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:11:19.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:20.029 [DEBUG] [Thread-159487] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:20.030 [DEBUG] [Thread-159487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:20.030 [DEBUG] [Thread-159487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:20.030 [DEBUG] [Thread-159487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:11:20.030 [DEBUG] [Thread-159487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:20.049 [INFO] [Thread-159487] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:20.049 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:11:20.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:21.052 [DEBUG] [Thread-159487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:21.052 [DEBUG] [Thread-159487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:21.102 [DEBUG] [Thread-159487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:21.102 [DEBUG] [Thread-159487] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:21.114 [DEBUG] [Thread-159487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:21.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:21.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:11:21.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:11:21.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:21.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:21.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:21.148 [DEBUG] [Thread-159487] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:23.807 [DEBUG] [Thread-159489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:11:31.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:11:31.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:11:31.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:11:31.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 11, 17), 16.19, 32.93, 0.0, 16.82, 15.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:11:31.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:11:17
2025-09-29T15:11:31.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:11:32.030 [DEBUG] [Thread-159490] [transport.py] [_log()] starting thread (client mode): 0x2e3fa770
2025-09-29T15:11:32.030 [DEBUG] [Thread-159490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:32.050 [DEBUG] [Thread-159490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:11:32.051 [INFO] [Thread-159490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:11:32.054 [DEBUG] [Thread-159490] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:32.054 [DEBUG] [Thread-159490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:11:32.054 [DEBUG] [Thread-159490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:32.054 [DEBUG] [Thread-159490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:32.054 [DEBUG] [Thread-159490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:32.054 [DEBUG] [Thread-159490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:32.054 [DEBUG] [Thread-159490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:32.054 [DEBUG] [Thread-159490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] Compression: none
2025-09-29T15:11:32.055 [DEBUG] [Thread-159490] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:32.072 [DEBUG] [Thread-159490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:32.072 [DEBUG] [Thread-159490] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:32.073 [DEBUG] [Thread-159490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:11:32.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:11:32.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:32.074 [DEBUG] [Thread-159490] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:32.074 [DEBUG] [Thread-159490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:32.075 [DEBUG] [Thread-159490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:32.075 [DEBUG] [Thread-159490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:11:32.075 [DEBUG] [Thread-159490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:32.097 [INFO] [Thread-159490] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:32.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:32.684 [DEBUG] [Thread-159490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:32.684 [DEBUG] [Thread-159490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:32.684 [DEBUG] [Thread-159490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:11:32.725 [DEBUG] [Thread-159490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:32.725 [DEBUG] [Thread-159490] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:32.726 [DEBUG] [Thread-159490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:32.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:32.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:11:32.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:11:32.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:11:32.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:32.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:11:32.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:32.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:32.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:11:32.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.549373 -999.00  +15.90  10.61     38   +1.90 1 1 1 1 1   888    0 14.40 12.10 ----- 10.9 10.6 211.4 13.7 24.1 -29.0 23.1 -27.9 25.1 -28.4 26.4 -30.6
2025-09-29T15:11:32.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:11:32.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:11:32.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.549373
2025-09-29T15:11:32.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:11:32.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:11:32.741 [DEBUG] [Thread-159490] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:32.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:11:32.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:11:32.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:11:32.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:11:17', tmtdew=16.19, humidity=32.93, cloud=0.0, wind=16.82, temperature=15.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:11:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:11:32.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:11:32.847 [DEBUG] [Thread-159493] [transport.py] [_log()] starting thread (client mode): 0x2b9b8fa0
2025-09-29T15:11:32.847 [DEBUG] [Thread-159493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:32.861 [DEBUG] [Thread-159493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:11:32.861 [INFO] [Thread-159493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:11:32.869 [DEBUG] [Thread-159493] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:32.869 [DEBUG] [Thread-159493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:11:32.869 [DEBUG] [Thread-159493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:32.869 [DEBUG] [Thread-159493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:32.869 [DEBUG] [Thread-159493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:32.870 [DEBUG] [Thread-159493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:32.871 [DEBUG] [Thread-159493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:32.871 [DEBUG] [Thread-159493] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:32.871 [DEBUG] [Thread-159493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:32.871 [DEBUG] [Thread-159493] [transport.py] [_log()] Compression: none
2025-09-29T15:11:32.871 [DEBUG] [Thread-159493] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:32.929 [DEBUG] [Thread-159493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:32.930 [DEBUG] [Thread-159493] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:32.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:11:32.931 [DEBUG] [Thread-159493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:11:32.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:32.985 [DEBUG] [Thread-159493] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:32.986 [DEBUG] [Thread-159493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:32.986 [DEBUG] [Thread-159493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:32.986 [DEBUG] [Thread-159493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:11:32.986 [DEBUG] [Thread-159493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:33.005 [INFO] [Thread-159493] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:33.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:11:33.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:34.023 [DEBUG] [Thread-159493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:34.023 [DEBUG] [Thread-159493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:34.071 [DEBUG] [Thread-159493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:34.071 [DEBUG] [Thread-159493] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:34.079 [DEBUG] [Thread-159493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:34.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:34.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:11:34.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:11:34.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:34.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:34.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:34.110 [DEBUG] [Thread-159493] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:38.837 [DEBUG] [Thread-159495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:11:44.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:11:44.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:11:44.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:11:44.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 11, 17), 16.19, 32.93, 0.0, 16.82, 15.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:11:44.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:11:17
2025-09-29T15:11:44.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:11:44.983 [DEBUG] [Thread-159496] [transport.py] [_log()] starting thread (client mode): 0x2b9bb310
2025-09-29T15:11:44.983 [DEBUG] [Thread-159496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:45.005 [DEBUG] [Thread-159496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:11:45.005 [INFO] [Thread-159496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] Compression: none
2025-09-29T15:11:45.009 [DEBUG] [Thread-159496] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:45.028 [DEBUG] [Thread-159496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:45.029 [DEBUG] [Thread-159496] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:45.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:11:45.029 [DEBUG] [Thread-159496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:11:45.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:45.031 [DEBUG] [Thread-159496] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:45.032 [DEBUG] [Thread-159496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:45.032 [DEBUG] [Thread-159496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:45.032 [DEBUG] [Thread-159496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:11:45.032 [DEBUG] [Thread-159496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:45.066 [INFO] [Thread-159496] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:45.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:45.792 [DEBUG] [Thread-159496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:45.792 [DEBUG] [Thread-159496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:45.793 [DEBUG] [Thread-159496] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:11:45.833 [DEBUG] [Thread-159496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:45.833 [DEBUG] [Thread-159496] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:45.837 [DEBUG] [Thread-159496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:45.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:45.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:11:45.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:11:45.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:11:45.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:45.863 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:11:45.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:45.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:45.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:11:45.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.549373 -999.00  +15.90  10.61     38   +1.90 1 1 1 1 1   888    0 14.40 12.10 ----- 10.9 10.6 211.4 13.7 24.1 -29.0 23.1 -27.9 25.1 -28.4 26.4 -30.6
2025-09-29T15:11:45.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:11:45.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:11:45.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.549373
2025-09-29T15:11:45.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:11:45.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:11:45.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:11:45.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:11:45.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:11:45.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:11:17', tmtdew=16.19, humidity=32.93, cloud=0.0, wind=16.82, temperature=15.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:11:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:11:45.865 [DEBUG] [Thread-159496] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:45.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:11:45.962 [DEBUG] [Thread-159499] [transport.py] [_log()] starting thread (client mode): 0x2e3f97b0
2025-09-29T15:11:45.962 [DEBUG] [Thread-159499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:45.977 [DEBUG] [Thread-159499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:11:45.977 [INFO] [Thread-159499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] Compression: none
2025-09-29T15:11:45.985 [DEBUG] [Thread-159499] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:46.016 [DEBUG] [Thread-159501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:11:46.046 [DEBUG] [Thread-159499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:46.046 [DEBUG] [Thread-159499] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:46.047 [DEBUG] [Thread-159499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:11:46.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:11:46.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:46.102 [DEBUG] [Thread-159499] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:46.102 [DEBUG] [Thread-159499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:46.102 [DEBUG] [Thread-159499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:46.102 [DEBUG] [Thread-159499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:11:46.102 [DEBUG] [Thread-159499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:46.125 [INFO] [Thread-159499] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:46.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:11:46.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:47.127 [DEBUG] [Thread-159499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:47.127 [DEBUG] [Thread-159499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:47.174 [DEBUG] [Thread-159499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:47.174 [DEBUG] [Thread-159499] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:47.183 [DEBUG] [Thread-159499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:47.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:47.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:11:47.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:11:47.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:47.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:47.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:47.217 [DEBUG] [Thread-159499] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:53.892 [DEBUG] [Thread-159502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:11:57.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:11:57.210 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:11:57.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:11:57.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 11, 49), 15.9, 33.95, 0.0, 10.06, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:11:57.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:11:49
2025-09-29T15:11:57.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:11:58.068 [DEBUG] [Thread-159503] [transport.py] [_log()] starting thread (client mode): 0x30ddf430
2025-09-29T15:11:58.068 [DEBUG] [Thread-159503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:58.091 [DEBUG] [Thread-159503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:11:58.091 [INFO] [Thread-159503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:11:58.095 [DEBUG] [Thread-159503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:58.095 [DEBUG] [Thread-159503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:11:58.095 [DEBUG] [Thread-159503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:58.095 [DEBUG] [Thread-159503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:58.095 [DEBUG] [Thread-159503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:58.095 [DEBUG] [Thread-159503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] Compression: none
2025-09-29T15:11:58.096 [DEBUG] [Thread-159503] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:58.111 [DEBUG] [Thread-159503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:58.112 [DEBUG] [Thread-159503] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:58.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:11:58.113 [DEBUG] [Thread-159503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:11:58.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:58.114 [DEBUG] [Thread-159503] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:58.115 [DEBUG] [Thread-159503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:58.115 [DEBUG] [Thread-159503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:58.115 [DEBUG] [Thread-159503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:11:58.115 [DEBUG] [Thread-159503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:58.132 [INFO] [Thread-159503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:58.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:58.694 [DEBUG] [Thread-159503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:58.694 [DEBUG] [Thread-159503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:11:58.695 [DEBUG] [Thread-159503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:11:58.735 [DEBUG] [Thread-159503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:11:58.735 [DEBUG] [Thread-159503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:11:58.737 [DEBUG] [Thread-159503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:11:58.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:11:58.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:11:58.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:11:58.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:11:58.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:11:58.751 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:11:58.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:11:58.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:11:58.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:11:58.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.549720 -999.00  +16.10   6.35     38   +2.10 1 1 1 1 1   888    0 14.58 10.94 ----- 9.7 6.3 155.2 13.2 24.2 -29.4 23.2 -30.6 25.2 -28.3 26.5 -29.5
2025-09-29T15:11:58.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:11:58.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:11:58.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.549720
2025-09-29T15:11:58.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:11:58.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:11:58.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:11:58.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:11:58.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:11:58.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:11:49', tmtdew=15.9, humidity=33.95, cloud=0.0, wind=10.06, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:11:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:11:58.754 [DEBUG] [Thread-159503] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:11:58.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:11:58.848 [DEBUG] [Thread-159506] [transport.py] [_log()] starting thread (client mode): 0x30ddca90
2025-09-29T15:11:58.849 [DEBUG] [Thread-159506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:11:58.864 [DEBUG] [Thread-159506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:11:58.864 [INFO] [Thread-159506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:11:58.871 [DEBUG] [Thread-159506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:11:58.871 [DEBUG] [Thread-159506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:11:58.871 [DEBUG] [Thread-159506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] client lang: <none>
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] server lang: <none>
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] kex follows: False
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] Compression: none
2025-09-29T15:11:58.872 [DEBUG] [Thread-159506] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:11:58.929 [DEBUG] [Thread-159506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:11:58.929 [DEBUG] [Thread-159506] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:11:58.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:11:58.930 [DEBUG] [Thread-159506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:11:58.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:11:58.985 [DEBUG] [Thread-159506] [transport.py] [_log()] userauth is OK
2025-09-29T15:11:58.985 [DEBUG] [Thread-159506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:11:58.985 [DEBUG] [Thread-159506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:11:58.986 [DEBUG] [Thread-159506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:11:58.986 [DEBUG] [Thread-159506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:11:59.005 [INFO] [Thread-159506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:11:59.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:11:59.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:11:59.990 [DEBUG] [Thread-159506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:11:59.990 [DEBUG] [Thread-159506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:00.038 [DEBUG] [Thread-159506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:00.038 [DEBUG] [Thread-159506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:00.047 [DEBUG] [Thread-159506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:00.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:00.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:12:00.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:12:00.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:00.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:00.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:00.080 [DEBUG] [Thread-159506] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:08.925 [DEBUG] [Thread-159508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:12:10.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:12:10.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:12:10.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:12:10.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 11, 49), 15.9, 33.95, 0.0, 10.06, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:12:10.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:11:49
2025-09-29T15:12:10.691 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:12:10.692 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:12:10.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:12:10.932 [DEBUG] [Thread-159509] [transport.py] [_log()] starting thread (client mode): 0x2e3f8100
2025-09-29T15:12:10.932 [DEBUG] [Thread-159509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:12:10.951 [DEBUG] [Thread-159509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:12:10.951 [INFO] [Thread-159509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] client lang: <none>
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] server lang: <none>
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] kex follows: False
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:12:10.954 [DEBUG] [Thread-159509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:12:10.955 [DEBUG] [Thread-159509] [transport.py] [_log()] Compression: none
2025-09-29T15:12:10.955 [DEBUG] [Thread-159509] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:12:10.971 [DEBUG] [Thread-159509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:12:10.971 [DEBUG] [Thread-159509] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:12:10.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:12:10.972 [DEBUG] [Thread-159509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:12:10.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:12:10.974 [DEBUG] [Thread-159509] [transport.py] [_log()] userauth is OK
2025-09-29T15:12:10.975 [DEBUG] [Thread-159509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:12:10.975 [DEBUG] [Thread-159509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:12:10.975 [DEBUG] [Thread-159509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:12:10.975 [DEBUG] [Thread-159509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:12:10.993 [INFO] [Thread-159509] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:12:10.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:12:11.594 [DEBUG] [Thread-159509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:12:11.594 [DEBUG] [Thread-159509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:11.594 [DEBUG] [Thread-159509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:12:11.635 [DEBUG] [Thread-159509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:11.635 [DEBUG] [Thread-159509] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:11.638 [DEBUG] [Thread-159509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:11.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:11.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:12:11.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:12:11.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:12:11.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:11.661 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:12:11.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:11.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:11.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:12:11.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.549720 -999.00  +16.10   6.35     38   +2.10 1 1 1 1 1   888    0 14.58 10.94 ----- 9.7 6.3 155.2 13.2 24.2 -29.4 23.2 -30.6 25.2 -28.3 26.5 -29.5
2025-09-29T15:12:11.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:12:11.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:12:11.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.549720
2025-09-29T15:12:11.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:12:11.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:12:11.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:12:11.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:12:11.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:12:11.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:11:49', tmtdew=15.9, humidity=33.95, cloud=0.0, wind=10.06, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:11:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:12:11.663 [DEBUG] [Thread-159509] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:11.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:12:11.760 [DEBUG] [Thread-159512] [transport.py] [_log()] starting thread (client mode): 0x2e3f8070
2025-09-29T15:12:11.760 [DEBUG] [Thread-159512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:12:11.775 [DEBUG] [Thread-159512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:12:11.775 [INFO] [Thread-159512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] client lang: <none>
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] server lang: <none>
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] kex follows: False
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] Compression: none
2025-09-29T15:12:11.783 [DEBUG] [Thread-159512] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:12:11.840 [DEBUG] [Thread-159512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:12:11.840 [DEBUG] [Thread-159512] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:12:11.840 [DEBUG] [Thread-159512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:12:11.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:12:11.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:12:11.897 [DEBUG] [Thread-159512] [transport.py] [_log()] userauth is OK
2025-09-29T15:12:11.897 [DEBUG] [Thread-159512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:12:11.898 [DEBUG] [Thread-159512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:12:11.898 [DEBUG] [Thread-159512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:12:11.898 [DEBUG] [Thread-159512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:12:11.921 [INFO] [Thread-159512] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:12:11.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:12:11.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:12:12.894 [DEBUG] [Thread-159512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:12:12.895 [DEBUG] [Thread-159512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:12.942 [DEBUG] [Thread-159512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:12.942 [DEBUG] [Thread-159512] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:12.951 [DEBUG] [Thread-159512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:12.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:12.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:12:12.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:12:12.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:12.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:12.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:12.985 [DEBUG] [Thread-159512] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:22.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:12:22.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:12:22.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:12:23.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 11, 49), 15.9, 33.95, 0.0, 10.06, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:12:23.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:11:49
2025-09-29T15:12:23.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:12:23.819 [DEBUG] [Thread-159514] [transport.py] [_log()] starting thread (client mode): 0x2e376aa0
2025-09-29T15:12:23.819 [DEBUG] [Thread-159514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:12:23.839 [DEBUG] [Thread-159514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:12:23.839 [INFO] [Thread-159514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:12:23.842 [DEBUG] [Thread-159514] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] client lang: <none>
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] server lang: <none>
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] kex follows: False
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] Compression: none
2025-09-29T15:12:23.843 [DEBUG] [Thread-159514] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:12:23.860 [DEBUG] [Thread-159514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:12:23.860 [DEBUG] [Thread-159514] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:12:23.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:12:23.861 [DEBUG] [Thread-159514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:12:23.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:12:23.863 [DEBUG] [Thread-159514] [transport.py] [_log()] userauth is OK
2025-09-29T15:12:23.863 [DEBUG] [Thread-159514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:12:23.863 [DEBUG] [Thread-159514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:12:23.864 [DEBUG] [Thread-159514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:12:23.864 [DEBUG] [Thread-159514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:12:23.887 [INFO] [Thread-159514] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:12:23.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:12:23.960 [DEBUG] [Thread-159516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:12:24.661 [DEBUG] [Thread-159514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:12:24.661 [DEBUG] [Thread-159514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:24.662 [DEBUG] [Thread-159514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:12:24.702 [DEBUG] [Thread-159514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:24.702 [DEBUG] [Thread-159514] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:24.705 [DEBUG] [Thread-159514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:24.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:24.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:12:24.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:12:24.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:12:24.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:24.728 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:12:24.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:24.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:24.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:12:24.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.549720 -999.00  +16.10   6.35     38   +2.10 1 1 1 1 1   888    0 14.58 10.94 ----- 9.7 6.3 155.2 13.2 24.2 -29.4 23.2 -30.6 25.2 -28.3 26.5 -29.5
2025-09-29T15:12:24.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:12:24.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:12:24.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.549720
2025-09-29T15:12:24.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:11:49', tmtdew=15.9, humidity=33.95, cloud=0.0, wind=10.06, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:11:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:12:24.731 [DEBUG] [Thread-159514] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:24.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:12:24.837 [DEBUG] [Thread-159518] [transport.py] [_log()] starting thread (client mode): 0x2b955fc0
2025-09-29T15:12:24.837 [DEBUG] [Thread-159518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:12:24.852 [DEBUG] [Thread-159518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:12:24.852 [INFO] [Thread-159518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] client lang: <none>
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] server lang: <none>
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] kex follows: False
2025-09-29T15:12:24.859 [DEBUG] [Thread-159518] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:12:24.860 [DEBUG] [Thread-159518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:12:24.860 [DEBUG] [Thread-159518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:12:24.860 [DEBUG] [Thread-159518] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:12:24.860 [DEBUG] [Thread-159518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:12:24.860 [DEBUG] [Thread-159518] [transport.py] [_log()] Compression: none
2025-09-29T15:12:24.860 [DEBUG] [Thread-159518] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:12:24.917 [DEBUG] [Thread-159518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:12:24.917 [DEBUG] [Thread-159518] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:12:24.918 [DEBUG] [Thread-159518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:12:24.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:12:24.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:12:24.973 [DEBUG] [Thread-159518] [transport.py] [_log()] userauth is OK
2025-09-29T15:12:24.974 [DEBUG] [Thread-159518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:12:24.974 [DEBUG] [Thread-159518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:12:24.974 [DEBUG] [Thread-159518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:12:24.974 [DEBUG] [Thread-159518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:12:24.994 [INFO] [Thread-159518] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:12:24.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:12:24.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:12:25.990 [DEBUG] [Thread-159518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:12:25.990 [DEBUG] [Thread-159518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:26.038 [DEBUG] [Thread-159518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:26.038 [DEBUG] [Thread-159518] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:26.047 [DEBUG] [Thread-159518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:26.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:26.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:12:26.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:12:26.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:26.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:26.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:26.082 [DEBUG] [Thread-159518] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:36.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:12:36.077 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:12:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:12:36.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 12, 21), 15.65, 34.48, 0.0, 11.01, 15.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:12:36.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:12:21
2025-09-29T15:12:36.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:12:36.935 [DEBUG] [Thread-159520] [transport.py] [_log()] starting thread (client mode): 0x2e3fada0
2025-09-29T15:12:36.935 [DEBUG] [Thread-159520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:12:36.956 [DEBUG] [Thread-159520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:12:36.956 [INFO] [Thread-159520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] client lang: <none>
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] server lang: <none>
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] kex follows: False
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] Compression: none
2025-09-29T15:12:36.959 [DEBUG] [Thread-159520] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:12:36.975 [DEBUG] [Thread-159520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:12:36.975 [DEBUG] [Thread-159520] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:12:36.975 [DEBUG] [Thread-159520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:12:36.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:12:36.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:12:36.976 [DEBUG] [Thread-159520] [transport.py] [_log()] userauth is OK
2025-09-29T15:12:36.976 [DEBUG] [Thread-159520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:12:36.976 [DEBUG] [Thread-159520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:12:36.976 [DEBUG] [Thread-159520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:12:36.976 [DEBUG] [Thread-159520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:12:36.985 [INFO] [Thread-159520] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:12:36.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:12:37.577 [DEBUG] [Thread-159520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:12:37.577 [DEBUG] [Thread-159520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:37.578 [DEBUG] [Thread-159520] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:12:37.618 [DEBUG] [Thread-159520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:37.618 [DEBUG] [Thread-159520] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:37.621 [DEBUG] [Thread-159520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:37.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:37.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:12:37.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:12:37.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:12:37.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:37.637 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:12:37.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:37.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:37.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:12:37.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.550068 -999.00  +16.40   4.61     38   +2.10 1 1 1 1 1   888    0 14.70 10.41 ----- 1.7 4.6 225.7 10.7 24.3 -29.5 23.4 -27.7 25.2 -28.7 26.6 -30.3
2025-09-29T15:12:37.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:12:37.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:12:37.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.550068
2025-09-29T15:12:37.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:12:37.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:12:37.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:12:37.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:12:37.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:12:37.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:12:21', tmtdew=15.65, humidity=34.48, cloud=0.0, wind=11.01, temperature=15.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:12:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:12:37.640 [DEBUG] [Thread-159520] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:37.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:12:37.727 [DEBUG] [Thread-159523] [transport.py] [_log()] starting thread (client mode): 0x2e3df880
2025-09-29T15:12:37.727 [DEBUG] [Thread-159523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:12:37.742 [DEBUG] [Thread-159523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:12:37.742 [INFO] [Thread-159523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] client lang: <none>
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] server lang: <none>
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] kex follows: False
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:12:37.750 [DEBUG] [Thread-159523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:12:37.751 [DEBUG] [Thread-159523] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:12:37.751 [DEBUG] [Thread-159523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:12:37.751 [DEBUG] [Thread-159523] [transport.py] [_log()] Compression: none
2025-09-29T15:12:37.751 [DEBUG] [Thread-159523] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:12:37.809 [DEBUG] [Thread-159523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:12:37.810 [DEBUG] [Thread-159523] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:12:37.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:12:37.811 [DEBUG] [Thread-159523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:12:37.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:12:37.865 [DEBUG] [Thread-159523] [transport.py] [_log()] userauth is OK
2025-09-29T15:12:37.866 [DEBUG] [Thread-159523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:12:37.866 [DEBUG] [Thread-159523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:12:37.866 [DEBUG] [Thread-159523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:12:37.866 [DEBUG] [Thread-159523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:12:37.888 [INFO] [Thread-159523] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:12:37.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:12:37.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:12:38.901 [DEBUG] [Thread-159523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:12:38.902 [DEBUG] [Thread-159523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:38.949 [DEBUG] [Thread-159523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:38.950 [DEBUG] [Thread-159523] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:38.959 [DEBUG] [Thread-159523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:38.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:38.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:12:38.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:12:38.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:38.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:38.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:38.992 [DEBUG] [Thread-159525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:12:38.994 [DEBUG] [Thread-159523] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:46.044 [DEBUG] [Thread-159526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:12:48.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:12:48.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:12:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:12:49.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 12, 21), 15.65, 34.48, 0.0, 11.01, 15.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:12:49.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:12:21
2025-09-29T15:12:49.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:12:49.854 [DEBUG] [Thread-159527] [transport.py] [_log()] starting thread (client mode): 0x2b9bb490
2025-09-29T15:12:49.855 [DEBUG] [Thread-159527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:12:49.874 [DEBUG] [Thread-159527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:12:49.874 [INFO] [Thread-159527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:12:49.877 [DEBUG] [Thread-159527] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:12:49.877 [DEBUG] [Thread-159527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:12:49.877 [DEBUG] [Thread-159527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:12:49.877 [DEBUG] [Thread-159527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:49.877 [DEBUG] [Thread-159527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:49.877 [DEBUG] [Thread-159527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] client lang: <none>
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] server lang: <none>
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] kex follows: False
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] Compression: none
2025-09-29T15:12:49.878 [DEBUG] [Thread-159527] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:12:49.894 [DEBUG] [Thread-159527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:12:49.895 [DEBUG] [Thread-159527] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:12:49.895 [DEBUG] [Thread-159527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:12:49.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:12:49.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:12:49.897 [DEBUG] [Thread-159527] [transport.py] [_log()] userauth is OK
2025-09-29T15:12:49.897 [DEBUG] [Thread-159527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:12:49.897 [DEBUG] [Thread-159527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:12:49.897 [DEBUG] [Thread-159527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:12:49.897 [DEBUG] [Thread-159527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:12:49.913 [INFO] [Thread-159527] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:12:49.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:12:50.691 [DEBUG] [Thread-159527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:12:50.691 [DEBUG] [Thread-159527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:50.692 [DEBUG] [Thread-159527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:12:50.732 [DEBUG] [Thread-159527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:50.732 [DEBUG] [Thread-159527] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:50.734 [DEBUG] [Thread-159527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:50.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:50.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:12:50.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:12:50.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:12:50.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:50.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:12:50.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:50.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:50.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:12:50.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.550068 -999.00  +16.40   4.61     38   +2.10 1 1 1 1 1   888    0 14.70 10.41 ----- 1.7 4.6 225.7 10.7 24.3 -29.5 23.4 -27.7 25.2 -28.7 26.6 -30.3
2025-09-29T15:12:50.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:12:50.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:12:50.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.550068
2025-09-29T15:12:50.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:12:50.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:12:50.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:12:50.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:12:50.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:12:50.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:12:21', tmtdew=15.65, humidity=34.48, cloud=0.0, wind=11.01, temperature=15.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:12:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:12:50.758 [DEBUG] [Thread-159527] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:50.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:12:50.852 [DEBUG] [Thread-159530] [transport.py] [_log()] starting thread (client mode): 0x2e3743a0
2025-09-29T15:12:50.852 [DEBUG] [Thread-159530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:12:50.867 [DEBUG] [Thread-159530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:12:50.867 [INFO] [Thread-159530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:12:50.874 [DEBUG] [Thread-159530] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:12:50.874 [DEBUG] [Thread-159530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:12:50.874 [DEBUG] [Thread-159530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:12:50.874 [DEBUG] [Thread-159530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:50.874 [DEBUG] [Thread-159530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:12:50.874 [DEBUG] [Thread-159530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] client lang: <none>
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] server lang: <none>
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] kex follows: False
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] Compression: none
2025-09-29T15:12:50.875 [DEBUG] [Thread-159530] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:12:50.933 [DEBUG] [Thread-159530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:12:50.934 [DEBUG] [Thread-159530] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:12:50.935 [DEBUG] [Thread-159530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:12:50.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:12:50.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:12:50.989 [DEBUG] [Thread-159530] [transport.py] [_log()] userauth is OK
2025-09-29T15:12:50.990 [DEBUG] [Thread-159530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:12:50.990 [DEBUG] [Thread-159530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:12:50.990 [DEBUG] [Thread-159530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:12:50.990 [DEBUG] [Thread-159530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:12:51.012 [INFO] [Thread-159530] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:12:51.012 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:12:51.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:12:51.979 [DEBUG] [Thread-159530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:12:51.979 [DEBUG] [Thread-159530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:12:52.027 [DEBUG] [Thread-159530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:12:52.027 [DEBUG] [Thread-159530] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:12:52.036 [DEBUG] [Thread-159530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:12:52.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:12:52.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:12:52.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:12:52.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:12:52.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:12:52.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:12:52.071 [DEBUG] [Thread-159530] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:12:54.036 [DEBUG] [Thread-159532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:13:02.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:13:02.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:13:02.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:13:02.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 12, 52), 15.65, 34.25, 0.0, 9.55, 15.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:13:02.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:12:52
2025-09-29T15:13:02.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:13:02.895 [DEBUG] [Thread-159533] [transport.py] [_log()] starting thread (client mode): 0x2b9cc430
2025-09-29T15:13:02.896 [DEBUG] [Thread-159533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:02.913 [DEBUG] [Thread-159533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:13:02.913 [INFO] [Thread-159533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:13:02.916 [DEBUG] [Thread-159533] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:02.916 [DEBUG] [Thread-159533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:13:02.916 [DEBUG] [Thread-159533] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:02.916 [DEBUG] [Thread-159533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] Compression: none
2025-09-29T15:13:02.917 [DEBUG] [Thread-159533] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:02.937 [DEBUG] [Thread-159533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:02.938 [DEBUG] [Thread-159533] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:02.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:13:02.940 [DEBUG] [Thread-159533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:13:02.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:02.942 [DEBUG] [Thread-159533] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:02.942 [DEBUG] [Thread-159533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:02.942 [DEBUG] [Thread-159533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:02.942 [DEBUG] [Thread-159533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:13:02.942 [DEBUG] [Thread-159533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:02.964 [INFO] [Thread-159533] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:02.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:03.749 [DEBUG] [Thread-159533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:03.749 [DEBUG] [Thread-159533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:03.749 [DEBUG] [Thread-159533] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:13:03.790 [DEBUG] [Thread-159533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:03.790 [DEBUG] [Thread-159533] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:03.793 [DEBUG] [Thread-159533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:03.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:03.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:13:03.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:13:03.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:13:03.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:03.815 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:13:03.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:03.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:03.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:13:03.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.550068 -999.00  +16.40   4.61     38   +2.10 1 1 1 1 1   888    0 14.70 10.41 ----- 1.7 4.6 225.7 10.7 24.3 -29.5 23.4 -27.7 25.2 -28.7 26.6 -30.3
2025-09-29T15:13:03.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:13:03.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:13:03.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.550068
2025-09-29T15:13:03.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:13:03.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:13:03.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:13:03.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:13:03.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:13:03.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:12:52', tmtdew=15.65, humidity=34.25, cloud=0.0, wind=9.55, temperature=15.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:12:05.875', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:13:03.817 [DEBUG] [Thread-159533] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:03.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:13:03.911 [DEBUG] [Thread-159536] [transport.py] [_log()] starting thread (client mode): 0x2e361c90
2025-09-29T15:13:03.911 [DEBUG] [Thread-159536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:03.926 [DEBUG] [Thread-159536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:13:03.926 [INFO] [Thread-159536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:13:03.933 [DEBUG] [Thread-159536] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] Compression: none
2025-09-29T15:13:03.934 [DEBUG] [Thread-159536] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:03.992 [DEBUG] [Thread-159536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:03.992 [DEBUG] [Thread-159536] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:03.992 [DEBUG] [Thread-159536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:13:03.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:13:03.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:04.049 [DEBUG] [Thread-159536] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:04.050 [DEBUG] [Thread-159536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:04.050 [DEBUG] [Thread-159536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:04.050 [DEBUG] [Thread-159536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:13:04.050 [DEBUG] [Thread-159536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:04.075 [INFO] [Thread-159536] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:04.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:13:04.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:05.052 [DEBUG] [Thread-159536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:05.052 [DEBUG] [Thread-159536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:05.100 [DEBUG] [Thread-159536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:05.100 [DEBUG] [Thread-159536] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:05.109 [DEBUG] [Thread-159536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:05.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:05.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:13:05.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:13:05.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:05.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:05.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:05.143 [DEBUG] [Thread-159536] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:09.066 [DEBUG] [Thread-159538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:13:10.830 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:13:10.831 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:13:15.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:13:15.143 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:13:15.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:13:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 12, 52), 15.65, 34.25, 0.0, 9.55, 15.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:13:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:12:52
2025-09-29T15:13:15.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:13:15.981 [DEBUG] [Thread-159539] [transport.py] [_log()] starting thread (client mode): 0x2e3f9090
2025-09-29T15:13:15.981 [DEBUG] [Thread-159539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:16.001 [DEBUG] [Thread-159539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:13:16.001 [INFO] [Thread-159539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:16.005 [DEBUG] [Thread-159539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] Compression: none
2025-09-29T15:13:16.006 [DEBUG] [Thread-159539] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:16.025 [DEBUG] [Thread-159539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:16.025 [DEBUG] [Thread-159539] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:16.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:13:16.026 [DEBUG] [Thread-159539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:13:16.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:16.028 [DEBUG] [Thread-159539] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:16.028 [DEBUG] [Thread-159539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:16.028 [DEBUG] [Thread-159539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:16.029 [DEBUG] [Thread-159539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:13:16.029 [DEBUG] [Thread-159539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:16.052 [INFO] [Thread-159539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:16.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:16.631 [DEBUG] [Thread-159539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:16.631 [DEBUG] [Thread-159539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:16.632 [DEBUG] [Thread-159539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:13:16.672 [DEBUG] [Thread-159539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:16.672 [DEBUG] [Thread-159539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:16.675 [DEBUG] [Thread-159539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:16.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:16.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:13:16.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:13:16.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:13:16.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:16.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:13:16.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:16.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:16.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:13:16.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.550415 -999.00  +16.30   7.73     37   +2.00 1 1 1 1 1   888    0 14.36 10.41 ----- 8.8 7.7 168.6 9.2 24.4 -29.4 23.3 -31.7 25.4 -27.9 26.7 -29.9
2025-09-29T15:13:16.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:13:16.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:13:16.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.550415
2025-09-29T15:13:16.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:13:16.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:13:16.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:13:16.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:13:16.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:13:16.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:12:52', tmtdew=15.65, humidity=34.25, cloud=0.0, wind=9.55, temperature=15.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:12:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:13:16.702 [DEBUG] [Thread-159539] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:16.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:13:16.795 [DEBUG] [Thread-159542] [transport.py] [_log()] starting thread (client mode): 0x2b9cf430
2025-09-29T15:13:16.796 [DEBUG] [Thread-159542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:16.811 [DEBUG] [Thread-159542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:13:16.811 [INFO] [Thread-159542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:13:16.819 [DEBUG] [Thread-159542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:16.819 [DEBUG] [Thread-159542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:13:16.819 [DEBUG] [Thread-159542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:16.819 [DEBUG] [Thread-159542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:16.819 [DEBUG] [Thread-159542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] Compression: none
2025-09-29T15:13:16.820 [DEBUG] [Thread-159542] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:16.877 [DEBUG] [Thread-159542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:16.877 [DEBUG] [Thread-159542] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:16.878 [DEBUG] [Thread-159542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:13:16.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:13:16.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:16.933 [DEBUG] [Thread-159542] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:16.933 [DEBUG] [Thread-159542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:16.933 [DEBUG] [Thread-159542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:16.934 [DEBUG] [Thread-159542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:13:16.934 [DEBUG] [Thread-159542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:16.952 [INFO] [Thread-159542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:16.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:13:16.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:17.948 [DEBUG] [Thread-159542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:17.948 [DEBUG] [Thread-159542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:17.996 [DEBUG] [Thread-159542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:17.996 [DEBUG] [Thread-159542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:18.005 [DEBUG] [Thread-159542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:18.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:18.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:13:18.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:13:18.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:18.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:18.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:18.040 [DEBUG] [Thread-159542] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:24.107 [DEBUG] [Thread-159544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:13:28.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:13:28.043 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:13:28.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:13:28.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 13, 24), 15.83, 33.88, 0.0, 10.64, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:13:28.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:13:24
2025-09-29T15:13:28.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:13:28.878 [DEBUG] [Thread-159545] [transport.py] [_log()] starting thread (client mode): 0x2e3de140
2025-09-29T15:13:28.878 [DEBUG] [Thread-159545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:28.900 [DEBUG] [Thread-159545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:13:28.900 [INFO] [Thread-159545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:13:28.903 [DEBUG] [Thread-159545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:28.903 [DEBUG] [Thread-159545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:13:28.903 [DEBUG] [Thread-159545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:28.903 [DEBUG] [Thread-159545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:28.903 [DEBUG] [Thread-159545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:28.903 [DEBUG] [Thread-159545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:28.903 [DEBUG] [Thread-159545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:28.903 [DEBUG] [Thread-159545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] Compression: none
2025-09-29T15:13:28.904 [DEBUG] [Thread-159545] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:28.921 [DEBUG] [Thread-159545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:28.921 [DEBUG] [Thread-159545] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:28.922 [DEBUG] [Thread-159545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:13:28.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:13:28.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:28.923 [DEBUG] [Thread-159545] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:28.924 [DEBUG] [Thread-159545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:28.924 [DEBUG] [Thread-159545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:28.924 [DEBUG] [Thread-159545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:13:28.924 [DEBUG] [Thread-159545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:28.947 [INFO] [Thread-159545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:28.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:29.699 [DEBUG] [Thread-159545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:29.699 [DEBUG] [Thread-159545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:29.700 [DEBUG] [Thread-159545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:13:29.740 [DEBUG] [Thread-159545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:29.740 [DEBUG] [Thread-159545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:29.743 [DEBUG] [Thread-159545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:29.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:29.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:13:29.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:13:29.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:13:29.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:29.767 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:13:29.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:29.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:13:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.550415 -999.00  +16.30   7.73     37   +2.00 1 1 1 1 1   888    0 14.36 10.41 ----- 8.8 7.7 168.6 9.2 24.4 -29.4 23.3 -31.7 25.4 -27.9 26.7 -29.9
2025-09-29T15:13:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:13:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:13:29.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.550415
2025-09-29T15:13:29.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:13:29.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:13:29.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:13:29.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:13:29.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:13:29.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:13:24', tmtdew=15.83, humidity=33.88, cloud=0.0, wind=10.64, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:12:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:13:29.770 [DEBUG] [Thread-159545] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:29.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:13:29.866 [DEBUG] [Thread-159548] [transport.py] [_log()] starting thread (client mode): 0x2e3df5e0
2025-09-29T15:13:29.866 [DEBUG] [Thread-159548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:29.883 [DEBUG] [Thread-159548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:13:29.883 [INFO] [Thread-159548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:13:29.890 [DEBUG] [Thread-159548] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:29.890 [DEBUG] [Thread-159548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] Compression: none
2025-09-29T15:13:29.891 [DEBUG] [Thread-159548] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:29.949 [DEBUG] [Thread-159548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:29.949 [DEBUG] [Thread-159548] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:29.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:13:29.951 [DEBUG] [Thread-159548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:13:29.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:30.006 [DEBUG] [Thread-159548] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:30.006 [DEBUG] [Thread-159548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:30.006 [DEBUG] [Thread-159548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:30.006 [DEBUG] [Thread-159548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:13:30.006 [DEBUG] [Thread-159548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:30.025 [INFO] [Thread-159548] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:30.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:13:30.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:31.036 [DEBUG] [Thread-159548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:31.036 [DEBUG] [Thread-159548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:31.084 [DEBUG] [Thread-159548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:31.084 [DEBUG] [Thread-159548] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:31.093 [DEBUG] [Thread-159548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:31.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:31.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:13:31.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:13:31.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:31.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:31.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:31.128 [DEBUG] [Thread-159548] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:39.145 [DEBUG] [Thread-159550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:13:41.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:13:41.131 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:13:41.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:13:41.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 13, 24), 15.83, 33.88, 0.0, 10.64, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:13:41.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:13:24
2025-09-29T15:13:41.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:13:41.962 [DEBUG] [Thread-159551] [transport.py] [_log()] starting thread (client mode): 0x2b96c610
2025-09-29T15:13:41.962 [DEBUG] [Thread-159551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:41.984 [DEBUG] [Thread-159551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:13:41.984 [INFO] [Thread-159551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:13:41.987 [DEBUG] [Thread-159551] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] Compression: none
2025-09-29T15:13:41.988 [DEBUG] [Thread-159551] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:42.005 [DEBUG] [Thread-159551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:42.005 [DEBUG] [Thread-159551] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:42.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:13:42.006 [DEBUG] [Thread-159551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:13:42.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:42.008 [DEBUG] [Thread-159551] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:42.009 [DEBUG] [Thread-159551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:42.009 [DEBUG] [Thread-159551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:42.009 [DEBUG] [Thread-159551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:13:42.009 [DEBUG] [Thread-159551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:42.026 [INFO] [Thread-159551] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:42.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:42.636 [DEBUG] [Thread-159551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:42.636 [DEBUG] [Thread-159551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:42.636 [DEBUG] [Thread-159551] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:13:42.677 [DEBUG] [Thread-159551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:42.678 [DEBUG] [Thread-159551] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:42.680 [DEBUG] [Thread-159551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:42.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:42.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:13:42.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:13:42.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:13:42.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:42.698 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:13:42.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:42.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:42.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:13:42.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.550762 -999.00  +16.20   9.28     37   +1.80 1 1 1 1 1   888    0 14.61 11.21 ----- 7.6 9.3 164.8 12.7 24.5 -29.2 23.5 -28.1 25.4 -29.2 26.7 -29.7
2025-09-29T15:13:42.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:13:42.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:13:42.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.550762
2025-09-29T15:13:42.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:13:42.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:13:42.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:13:42.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:13:42.701 [DEBUG] [Thread-159551] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:42.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:13:42.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:13:24', tmtdew=15.83, humidity=33.88, cloud=0.0, wind=10.64, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:13:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:13:42.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:13:42.799 [DEBUG] [Thread-159554] [transport.py] [_log()] starting thread (client mode): 0x2b9b95d0
2025-09-29T15:13:42.799 [DEBUG] [Thread-159554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:42.814 [DEBUG] [Thread-159554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:13:42.814 [INFO] [Thread-159554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:13:42.822 [DEBUG] [Thread-159554] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:42.822 [DEBUG] [Thread-159554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:13:42.822 [DEBUG] [Thread-159554] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:42.822 [DEBUG] [Thread-159554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:42.822 [DEBUG] [Thread-159554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:42.823 [DEBUG] [Thread-159554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:42.823 [DEBUG] [Thread-159554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:42.823 [DEBUG] [Thread-159554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:42.823 [DEBUG] [Thread-159554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:42.823 [DEBUG] [Thread-159554] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:42.823 [DEBUG] [Thread-159554] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:42.823 [DEBUG] [Thread-159554] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:42.823 [DEBUG] [Thread-159554] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:42.824 [DEBUG] [Thread-159554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:42.824 [DEBUG] [Thread-159554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:42.824 [DEBUG] [Thread-159554] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:42.824 [DEBUG] [Thread-159554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:42.824 [DEBUG] [Thread-159554] [transport.py] [_log()] Compression: none
2025-09-29T15:13:42.824 [DEBUG] [Thread-159554] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:42.881 [DEBUG] [Thread-159554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:42.881 [DEBUG] [Thread-159554] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:42.882 [DEBUG] [Thread-159554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:13:42.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:13:42.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:42.937 [DEBUG] [Thread-159554] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:42.937 [DEBUG] [Thread-159554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:42.937 [DEBUG] [Thread-159554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:42.937 [DEBUG] [Thread-159554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:13:42.937 [DEBUG] [Thread-159554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:42.951 [INFO] [Thread-159554] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:42.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:13:42.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:43.939 [DEBUG] [Thread-159554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:43.939 [DEBUG] [Thread-159554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:43.987 [DEBUG] [Thread-159554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:43.987 [DEBUG] [Thread-159554] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:43.996 [DEBUG] [Thread-159554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:44.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:44.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:13:44.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:13:44.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:44.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:44.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:44.035 [DEBUG] [Thread-159554] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:46.076 [DEBUG] [Thread-159556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:13:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:13:54.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:13:54.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:13:54.192 [DEBUG] [Thread-159557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:13:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 13, 24), 15.83, 33.88, 0.0, 10.64, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:13:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:13:24
2025-09-29T15:13:54.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:13:54.884 [DEBUG] [Thread-159558] [transport.py] [_log()] starting thread (client mode): 0x2b957bb0
2025-09-29T15:13:54.884 [DEBUG] [Thread-159558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:54.904 [DEBUG] [Thread-159558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:13:54.904 [INFO] [Thread-159558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:13:54.907 [DEBUG] [Thread-159558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:54.908 [DEBUG] [Thread-159558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:54.909 [DEBUG] [Thread-159558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:54.909 [DEBUG] [Thread-159558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:54.909 [DEBUG] [Thread-159558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:54.909 [DEBUG] [Thread-159558] [transport.py] [_log()] Compression: none
2025-09-29T15:13:54.909 [DEBUG] [Thread-159558] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:54.927 [DEBUG] [Thread-159558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:54.928 [DEBUG] [Thread-159558] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:54.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:13:54.929 [DEBUG] [Thread-159558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:13:54.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:54.931 [DEBUG] [Thread-159558] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:54.931 [DEBUG] [Thread-159558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:54.931 [DEBUG] [Thread-159558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:54.931 [DEBUG] [Thread-159558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:13:54.931 [DEBUG] [Thread-159558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:54.954 [INFO] [Thread-159558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:54.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:55.766 [DEBUG] [Thread-159558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:55.766 [DEBUG] [Thread-159558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:55.766 [DEBUG] [Thread-159558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:13:55.807 [DEBUG] [Thread-159558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:55.808 [DEBUG] [Thread-159558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:55.810 [DEBUG] [Thread-159558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:55.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:55.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:13:55.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:13:55.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:13:55.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:55.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:13:55.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:55.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:55.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:13:55.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.550762 -999.00  +16.20   9.28     37   +1.80 1 1 1 1 1   888    0 14.61 11.21 ----- 7.6 9.3 164.8 12.7 24.5 -29.2 23.5 -28.1 25.4 -29.2 26.7 -29.7
2025-09-29T15:13:55.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:13:55.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:13:55.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.550762
2025-09-29T15:13:55.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:13:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:13:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:13:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:13:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:13:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:13:24', tmtdew=15.83, humidity=33.88, cloud=0.0, wind=10.64, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:13:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:13:55.835 [DEBUG] [Thread-159558] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:13:55.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:13:55.929 [DEBUG] [Thread-159561] [transport.py] [_log()] starting thread (client mode): 0x2e360820
2025-09-29T15:13:55.929 [DEBUG] [Thread-159561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:13:55.944 [DEBUG] [Thread-159561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:13:55.944 [INFO] [Thread-159561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:13:55.952 [DEBUG] [Thread-159561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:13:55.952 [DEBUG] [Thread-159561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:13:55.952 [DEBUG] [Thread-159561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:13:55.952 [DEBUG] [Thread-159561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:55.952 [DEBUG] [Thread-159561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:13:55.952 [DEBUG] [Thread-159561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] client lang: <none>
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] server lang: <none>
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] kex follows: False
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] Compression: none
2025-09-29T15:13:55.953 [DEBUG] [Thread-159561] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:13:56.009 [DEBUG] [Thread-159561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:13:56.010 [DEBUG] [Thread-159561] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:13:56.010 [DEBUG] [Thread-159561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:13:56.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:13:56.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:13:56.065 [DEBUG] [Thread-159561] [transport.py] [_log()] userauth is OK
2025-09-29T15:13:56.066 [DEBUG] [Thread-159561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:13:56.066 [DEBUG] [Thread-159561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:13:56.066 [DEBUG] [Thread-159561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:13:56.066 [DEBUG] [Thread-159561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:13:56.085 [INFO] [Thread-159561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:13:56.085 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:13:56.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:13:57.053 [DEBUG] [Thread-159561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:13:57.053 [DEBUG] [Thread-159561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:13:57.102 [DEBUG] [Thread-159561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:13:57.102 [DEBUG] [Thread-159561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:13:57.110 [DEBUG] [Thread-159561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:13:57.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:13:57.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:13:57.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:13:57.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:13:57.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:13:57.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:13:57.142 [DEBUG] [Thread-159561] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:07.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:14:07.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:14:07.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:14:07.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 13, 56), 15.88, 33.98, 0.0, 6.12, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:14:07.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:13:56
2025-09-29T15:14:07.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:14:07.976 [DEBUG] [Thread-159563] [transport.py] [_log()] starting thread (client mode): 0x2e360d30
2025-09-29T15:14:07.976 [DEBUG] [Thread-159563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:14:07.997 [DEBUG] [Thread-159563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:14:07.998 [INFO] [Thread-159563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:14:08.001 [DEBUG] [Thread-159563] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:14:08.001 [DEBUG] [Thread-159563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:14:08.001 [DEBUG] [Thread-159563] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:14:08.001 [DEBUG] [Thread-159563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] client lang: <none>
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] server lang: <none>
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] kex follows: False
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:14:08.002 [DEBUG] [Thread-159563] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:14:08.003 [DEBUG] [Thread-159563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:14:08.003 [DEBUG] [Thread-159563] [transport.py] [_log()] Compression: none
2025-09-29T15:14:08.003 [DEBUG] [Thread-159563] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:14:08.021 [DEBUG] [Thread-159563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:14:08.021 [DEBUG] [Thread-159563] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:14:08.022 [DEBUG] [Thread-159563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:14:08.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:14:08.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:14:08.024 [DEBUG] [Thread-159563] [transport.py] [_log()] userauth is OK
2025-09-29T15:14:08.024 [DEBUG] [Thread-159563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:14:08.024 [DEBUG] [Thread-159563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:14:08.024 [DEBUG] [Thread-159563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:14:08.024 [DEBUG] [Thread-159563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:14:08.047 [INFO] [Thread-159563] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:14:08.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:14:08.810 [DEBUG] [Thread-159563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:14:08.810 [DEBUG] [Thread-159563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:14:08.811 [DEBUG] [Thread-159563] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:14:08.851 [DEBUG] [Thread-159563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:14:08.851 [DEBUG] [Thread-159563] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:14:08.854 [DEBUG] [Thread-159563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:14:08.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:14:08.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:14:08.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:14:08.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:14:08.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:14:08.874 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:14:08.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:14:08.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:14:08.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:14:08.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.550762 -999.00  +16.20   9.28     37   +1.80 1 1 1 1 1   888    0 14.61 11.21 ----- 7.6 9.3 164.8 12.7 24.5 -29.2 23.5 -28.1 25.4 -29.2 26.7 -29.7
2025-09-29T15:14:08.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:14:08.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:14:08.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.550762
2025-09-29T15:14:08.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:14:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:14:08.876 [DEBUG] [Thread-159563] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:14:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:14:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:14:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:13:56', tmtdew=15.88, humidity=33.98, cloud=0.0, wind=6.12, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:13:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:14:08.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:14:08.974 [DEBUG] [Thread-159566] [transport.py] [_log()] starting thread (client mode): 0x2e3df880
2025-09-29T15:14:08.974 [DEBUG] [Thread-159566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:14:08.989 [DEBUG] [Thread-159566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:14:08.989 [INFO] [Thread-159566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:14:08.996 [DEBUG] [Thread-159566] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:14:08.997 [DEBUG] [Thread-159566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:14:08.997 [DEBUG] [Thread-159566] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:14:08.997 [DEBUG] [Thread-159566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:08.997 [DEBUG] [Thread-159566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:08.997 [DEBUG] [Thread-159566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:08.997 [DEBUG] [Thread-159566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:08.997 [DEBUG] [Thread-159566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] client lang: <none>
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] server lang: <none>
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] kex follows: False
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:14:08.998 [DEBUG] [Thread-159566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:14:08.999 [DEBUG] [Thread-159566] [transport.py] [_log()] Compression: none
2025-09-29T15:14:08.999 [DEBUG] [Thread-159566] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:14:09.054 [DEBUG] [Thread-159566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:14:09.054 [DEBUG] [Thread-159566] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:14:09.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:14:09.055 [DEBUG] [Thread-159566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:14:09.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:14:09.109 [DEBUG] [Thread-159566] [transport.py] [_log()] userauth is OK
2025-09-29T15:14:09.109 [DEBUG] [Thread-159566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:14:09.110 [DEBUG] [Thread-159566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:14:09.110 [DEBUG] [Thread-159566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:14:09.110 [DEBUG] [Thread-159566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:14:09.129 [INFO] [Thread-159566] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:14:09.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:14:09.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:14:09.232 [DEBUG] [Thread-159568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:14:10.105 [DEBUG] [Thread-159566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:14:10.106 [DEBUG] [Thread-159566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:14:10.153 [DEBUG] [Thread-159566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:14:10.153 [DEBUG] [Thread-159566] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:14:10.162 [DEBUG] [Thread-159566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:14:10.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:14:10.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:14:10.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:14:10.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:14:10.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:14:10.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:14:10.198 [DEBUG] [Thread-159566] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:10.971 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:14:10.972 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:14:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:14:20.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:14:20.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:14:20.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 13, 56), 15.88, 33.98, 0.0, 6.12, 15.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:14:20.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:13:56
2025-09-29T15:14:20.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:14:21.042 [DEBUG] [Thread-159569] [transport.py] [_log()] starting thread (client mode): 0x2e3de0e0
2025-09-29T15:14:21.042 [DEBUG] [Thread-159569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:14:21.062 [DEBUG] [Thread-159569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:14:21.062 [INFO] [Thread-159569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:14:21.065 [DEBUG] [Thread-159569] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:14:21.065 [DEBUG] [Thread-159569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] client lang: <none>
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] server lang: <none>
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] kex follows: False
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] Compression: none
2025-09-29T15:14:21.066 [DEBUG] [Thread-159569] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:14:21.087 [DEBUG] [Thread-159569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:14:21.087 [DEBUG] [Thread-159569] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:14:21.088 [DEBUG] [Thread-159569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:14:21.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:14:21.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:14:21.090 [DEBUG] [Thread-159569] [transport.py] [_log()] userauth is OK
2025-09-29T15:14:21.090 [DEBUG] [Thread-159569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:14:21.090 [DEBUG] [Thread-159569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:14:21.090 [DEBUG] [Thread-159569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:14:21.090 [DEBUG] [Thread-159569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:14:21.109 [INFO] [Thread-159569] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:14:21.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:14:21.743 [DEBUG] [Thread-159569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:14:21.743 [DEBUG] [Thread-159569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:14:21.743 [DEBUG] [Thread-159569] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:14:21.784 [DEBUG] [Thread-159569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:14:21.784 [DEBUG] [Thread-159569] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:14:21.787 [DEBUG] [Thread-159569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:14:21.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:14:21.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:14:21.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:14:21.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:14:21.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:14:21.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:14:21.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:14:21.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:14:21.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:14:21.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.551456 -999.00  +16.10   8.31     38   +1.80 1 1 1 1 1   888    0 14.71 12.89 ----- 6.5 8.3 174.2 10.0 24.5 -29.6 23.6 -28.0 25.5 -28.5 26.8 -29.9
2025-09-29T15:14:21.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:14:21.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:14:21.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.551456
2025-09-29T15:14:21.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:14:21.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:14:21.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:14:21.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:14:21.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:14:21.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:13:56', tmtdew=15.88, humidity=33.98, cloud=0.0, wind=6.12, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:14:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:14:21.813 [DEBUG] [Thread-159569] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:21.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:14:21.907 [DEBUG] [Thread-159572] [transport.py] [_log()] starting thread (client mode): 0x2b96c190
2025-09-29T15:14:21.907 [DEBUG] [Thread-159572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:14:21.922 [DEBUG] [Thread-159572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:14:21.922 [INFO] [Thread-159572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:14:21.929 [DEBUG] [Thread-159572] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] client lang: <none>
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] server lang: <none>
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] kex follows: False
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] Compression: none
2025-09-29T15:14:21.930 [DEBUG] [Thread-159572] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:14:21.989 [DEBUG] [Thread-159572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:14:21.990 [DEBUG] [Thread-159572] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:14:21.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:14:21.991 [DEBUG] [Thread-159572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:14:21.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:14:22.045 [DEBUG] [Thread-159572] [transport.py] [_log()] userauth is OK
2025-09-29T15:14:22.045 [DEBUG] [Thread-159572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:14:22.046 [DEBUG] [Thread-159572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:14:22.046 [DEBUG] [Thread-159572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:14:22.046 [DEBUG] [Thread-159572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:14:22.065 [INFO] [Thread-159572] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:14:22.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:14:22.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:14:23.084 [DEBUG] [Thread-159572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:14:23.084 [DEBUG] [Thread-159572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:14:23.133 [DEBUG] [Thread-159572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:14:23.133 [DEBUG] [Thread-159572] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:14:23.142 [DEBUG] [Thread-159572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:14:23.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:14:23.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:14:23.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:14:23.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:14:23.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:14:23.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:14:23.176 [DEBUG] [Thread-159572] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:24.277 [DEBUG] [Thread-159574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:14:33.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:14:33.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:14:33.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:14:33.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 14, 28), 15.85, 34.1, 0.0, 5.24, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:14:33.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:14:28
2025-09-29T15:14:33.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:14:34.037 [DEBUG] [Thread-159575] [transport.py] [_log()] starting thread (client mode): 0x2b9cc6a0
2025-09-29T15:14:34.037 [DEBUG] [Thread-159575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:14:34.057 [DEBUG] [Thread-159575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:14:34.057 [INFO] [Thread-159575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:14:34.059 [DEBUG] [Thread-159575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:14:34.059 [DEBUG] [Thread-159575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] client lang: <none>
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] server lang: <none>
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] kex follows: False
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] Compression: none
2025-09-29T15:14:34.060 [DEBUG] [Thread-159575] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:14:34.073 [DEBUG] [Thread-159575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:14:34.073 [DEBUG] [Thread-159575] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:14:34.074 [DEBUG] [Thread-159575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:14:34.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:14:34.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:14:34.075 [DEBUG] [Thread-159575] [transport.py] [_log()] userauth is OK
2025-09-29T15:14:34.075 [DEBUG] [Thread-159575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:14:34.075 [DEBUG] [Thread-159575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:14:34.075 [DEBUG] [Thread-159575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:14:34.076 [DEBUG] [Thread-159575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:14:34.106 [INFO] [Thread-159575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:14:34.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:14:34.909 [DEBUG] [Thread-159575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:14:34.909 [DEBUG] [Thread-159575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:14:34.910 [DEBUG] [Thread-159575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:14:34.950 [DEBUG] [Thread-159575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:14:34.950 [DEBUG] [Thread-159575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:14:34.953 [DEBUG] [Thread-159575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:14:34.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:14:34.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:14:34.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:14:34.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:14:34.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:14:34.974 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:14:34.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:14:34.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:14:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:14:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.551456 -999.00  +16.10   8.31     38   +1.80 1 1 1 1 1   888    0 14.71 12.89 ----- 6.5 8.3 174.2 10.0 24.5 -29.6 23.6 -28.0 25.5 -28.5 26.8 -29.9
2025-09-29T15:14:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:14:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:14:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.551456
2025-09-29T15:14:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:14:34.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:14:34.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:14:34.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:14:34.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:14:34.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:14:28', tmtdew=15.85, humidity=34.1, cloud=0.0, wind=5.24, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:14:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:14:34.976 [DEBUG] [Thread-159575] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:35.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:14:35.076 [DEBUG] [Thread-159578] [transport.py] [_log()] starting thread (client mode): 0x2e3fb070
2025-09-29T15:14:35.076 [DEBUG] [Thread-159578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:14:35.090 [DEBUG] [Thread-159578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:14:35.090 [INFO] [Thread-159578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:14:35.098 [DEBUG] [Thread-159578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:14:35.098 [DEBUG] [Thread-159578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:14:35.098 [DEBUG] [Thread-159578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:14:35.098 [DEBUG] [Thread-159578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:35.098 [DEBUG] [Thread-159578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] client lang: <none>
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] server lang: <none>
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] kex follows: False
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] Compression: none
2025-09-29T15:14:35.099 [DEBUG] [Thread-159578] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:14:35.157 [DEBUG] [Thread-159578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:14:35.158 [DEBUG] [Thread-159578] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:14:35.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:14:35.159 [DEBUG] [Thread-159578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:14:35.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:14:35.213 [DEBUG] [Thread-159578] [transport.py] [_log()] userauth is OK
2025-09-29T15:14:35.213 [DEBUG] [Thread-159578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:14:35.214 [DEBUG] [Thread-159578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:14:35.214 [DEBUG] [Thread-159578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:14:35.214 [DEBUG] [Thread-159578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:14:35.236 [INFO] [Thread-159578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:14:35.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:14:35.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:14:36.202 [DEBUG] [Thread-159578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:14:36.202 [DEBUG] [Thread-159578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:14:36.250 [DEBUG] [Thread-159578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:14:36.250 [DEBUG] [Thread-159578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:14:36.258 [DEBUG] [Thread-159578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:14:36.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:14:36.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:14:36.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:14:36.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:14:36.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:14:36.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:14:36.289 [DEBUG] [Thread-159578] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:39.317 [DEBUG] [Thread-159580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:14:46.108 [DEBUG] [Thread-159581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:14:46.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:14:46.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:14:46.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:14:46.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 14, 28), 15.85, 34.1, 0.0, 5.24, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:14:46.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:14:28
2025-09-29T15:14:46.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:14:47.112 [DEBUG] [Thread-159582] [transport.py] [_log()] starting thread (client mode): 0x2e3fbfd0
2025-09-29T15:14:47.112 [DEBUG] [Thread-159582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:14:47.133 [DEBUG] [Thread-159582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:14:47.133 [INFO] [Thread-159582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] client lang: <none>
2025-09-29T15:14:47.136 [DEBUG] [Thread-159582] [transport.py] [_log()] server lang: <none>
2025-09-29T15:14:47.137 [DEBUG] [Thread-159582] [transport.py] [_log()] kex follows: False
2025-09-29T15:14:47.137 [DEBUG] [Thread-159582] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:14:47.137 [DEBUG] [Thread-159582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:14:47.137 [DEBUG] [Thread-159582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:14:47.137 [DEBUG] [Thread-159582] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:14:47.137 [DEBUG] [Thread-159582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:14:47.137 [DEBUG] [Thread-159582] [transport.py] [_log()] Compression: none
2025-09-29T15:14:47.137 [DEBUG] [Thread-159582] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:14:47.156 [DEBUG] [Thread-159582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:14:47.156 [DEBUG] [Thread-159582] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:14:47.157 [DEBUG] [Thread-159582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:14:47.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:14:47.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:14:47.158 [DEBUG] [Thread-159582] [transport.py] [_log()] userauth is OK
2025-09-29T15:14:47.159 [DEBUG] [Thread-159582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:14:47.159 [DEBUG] [Thread-159582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:14:47.159 [DEBUG] [Thread-159582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:14:47.159 [DEBUG] [Thread-159582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:14:47.183 [INFO] [Thread-159582] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:14:47.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:14:47.859 [DEBUG] [Thread-159582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:14:47.859 [DEBUG] [Thread-159582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:14:47.859 [DEBUG] [Thread-159582] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:14:47.900 [DEBUG] [Thread-159582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:14:47.900 [DEBUG] [Thread-159582] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:14:47.903 [DEBUG] [Thread-159582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:14:47.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:14:47.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:14:47.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:14:47.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:14:47.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:14:47.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:14:47.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:14:47.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:14:47.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:14:47.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.551804 -999.00  +16.10   2.71     38   +1.80 1 1 1 1 1   888    0 14.51 15.12 ----- 2.3 2.7 211.5 5.1 24.7 -29.2 23.7 -29.7 25.7 -28.3 27.1 -30.2
2025-09-29T15:14:47.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:14:47.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:14:47.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.551804
2025-09-29T15:14:47.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:14:47.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:14:47.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:14:47.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:14:47.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:14:47.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:14:28', tmtdew=15.85, humidity=34.1, cloud=0.0, wind=5.24, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:14:35.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:14:47.930 [DEBUG] [Thread-159582] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:48.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:14:48.024 [DEBUG] [Thread-159585] [transport.py] [_log()] starting thread (client mode): 0x2b9cc820
2025-09-29T15:14:48.024 [DEBUG] [Thread-159585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:14:48.039 [DEBUG] [Thread-159585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:14:48.039 [INFO] [Thread-159585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] client lang: <none>
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] server lang: <none>
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] kex follows: False
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:14:48.047 [DEBUG] [Thread-159585] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:14:48.048 [DEBUG] [Thread-159585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:14:48.048 [DEBUG] [Thread-159585] [transport.py] [_log()] Compression: none
2025-09-29T15:14:48.048 [DEBUG] [Thread-159585] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:14:48.105 [DEBUG] [Thread-159585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:14:48.105 [DEBUG] [Thread-159585] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:14:48.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:14:48.107 [DEBUG] [Thread-159585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:14:48.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:14:48.162 [DEBUG] [Thread-159585] [transport.py] [_log()] userauth is OK
2025-09-29T15:14:48.162 [DEBUG] [Thread-159585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:14:48.162 [DEBUG] [Thread-159585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:14:48.162 [DEBUG] [Thread-159585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:14:48.162 [DEBUG] [Thread-159585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:14:48.181 [INFO] [Thread-159585] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:14:48.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:14:48.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:14:49.170 [DEBUG] [Thread-159585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:14:49.170 [DEBUG] [Thread-159585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:14:49.218 [DEBUG] [Thread-159585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:14:49.219 [DEBUG] [Thread-159585] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:14:49.228 [DEBUG] [Thread-159585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:14:49.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:14:49.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:14:49.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:14:49.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:14:49.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:14:49.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:14:49.263 [DEBUG] [Thread-159585] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:14:54.351 [DEBUG] [Thread-159587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:14:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:14:59.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:14:59.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:14:59.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 14, 28), 15.85, 34.1, 0.0, 5.24, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:14:59.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:14:28
2025-09-29T15:14:59.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:15:00.098 [DEBUG] [Thread-159588] [transport.py] [_log()] starting thread (client mode): 0x2e3de200
2025-09-29T15:15:00.098 [DEBUG] [Thread-159588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:00.119 [DEBUG] [Thread-159588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:15:00.119 [INFO] [Thread-159588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:00.123 [DEBUG] [Thread-159588] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] Compression: none
2025-09-29T15:15:00.124 [DEBUG] [Thread-159588] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:00.140 [DEBUG] [Thread-159588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:00.141 [DEBUG] [Thread-159588] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:00.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:15:00.142 [DEBUG] [Thread-159588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:15:00.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:00.144 [DEBUG] [Thread-159588] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:00.144 [DEBUG] [Thread-159588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:00.144 [DEBUG] [Thread-159588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:00.144 [DEBUG] [Thread-159588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:15:00.144 [DEBUG] [Thread-159588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:00.165 [INFO] [Thread-159588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:00.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:00.952 [DEBUG] [Thread-159588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:00.952 [DEBUG] [Thread-159588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:00.952 [DEBUG] [Thread-159588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:15:00.993 [DEBUG] [Thread-159588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:00.993 [DEBUG] [Thread-159588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:00.996 [DEBUG] [Thread-159588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:01.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:01.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:15:01.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:15:01.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:15:01.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:01.013 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:15:01.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:01.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.551804 -999.00  +16.10   2.71     38   +1.80 1 1 1 1 1   888    0 14.51 15.12 ----- 2.3 2.7 211.5 5.1 24.7 -29.2 23.7 -29.7 25.7 -28.3 27.1 -30.2
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.551804
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:15:01.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:14:28', tmtdew=15.85, humidity=34.1, cloud=0.0, wind=5.24, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:14:35.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:15:01.015 [DEBUG] [Thread-159588] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:01.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:15:01.100 [DEBUG] [Thread-159591] [transport.py] [_log()] starting thread (client mode): 0x2e3612d0
2025-09-29T15:15:01.100 [DEBUG] [Thread-159591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:01.114 [DEBUG] [Thread-159591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:15:01.114 [INFO] [Thread-159591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] Compression: none
2025-09-29T15:15:01.122 [DEBUG] [Thread-159591] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:01.180 [DEBUG] [Thread-159591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:01.180 [DEBUG] [Thread-159591] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:01.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:15:01.181 [DEBUG] [Thread-159591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:15:01.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:01.237 [DEBUG] [Thread-159591] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:01.237 [DEBUG] [Thread-159591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:01.237 [DEBUG] [Thread-159591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:01.237 [DEBUG] [Thread-159591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:15:01.237 [DEBUG] [Thread-159591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:01.255 [INFO] [Thread-159591] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:01.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:15:01.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:02.246 [DEBUG] [Thread-159591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:02.247 [DEBUG] [Thread-159591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:02.295 [DEBUG] [Thread-159591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:02.295 [DEBUG] [Thread-159591] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:02.304 [DEBUG] [Thread-159591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:02.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:02.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:15:02.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:15:02.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:02.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:02.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:02.345 [DEBUG] [Thread-159591] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:09.395 [DEBUG] [Thread-159593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:15:11.127 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:15:11.127 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:15:12.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:15:12.340 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:15:12.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:15:12.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 15), 16.05, 33.78, 0.0, 9.9, 15.97, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:15:12.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:15:00
2025-09-29T15:15:13.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:15:13.170 [DEBUG] [Thread-159594] [transport.py] [_log()] starting thread (client mode): 0x2b96ad40
2025-09-29T15:15:13.170 [DEBUG] [Thread-159594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:13.190 [DEBUG] [Thread-159594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:15:13.190 [INFO] [Thread-159594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:15:13.194 [DEBUG] [Thread-159594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:13.194 [DEBUG] [Thread-159594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:15:13.194 [DEBUG] [Thread-159594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:13.194 [DEBUG] [Thread-159594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:13.194 [DEBUG] [Thread-159594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:13.194 [DEBUG] [Thread-159594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:13.195 [DEBUG] [Thread-159594] [transport.py] [_log()] Compression: none
2025-09-29T15:15:13.196 [DEBUG] [Thread-159594] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:13.215 [DEBUG] [Thread-159594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:13.215 [DEBUG] [Thread-159594] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:13.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:15:13.217 [DEBUG] [Thread-159594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:15:13.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:13.219 [DEBUG] [Thread-159594] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:13.220 [DEBUG] [Thread-159594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:13.220 [DEBUG] [Thread-159594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:13.220 [DEBUG] [Thread-159594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:15:13.220 [DEBUG] [Thread-159594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:13.241 [INFO] [Thread-159594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:13.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:18.050 [DEBUG] [Thread-159594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:18.050 [DEBUG] [Thread-159594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:18.051 [DEBUG] [Thread-159594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:15:18.092 [DEBUG] [Thread-159594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:18.092 [DEBUG] [Thread-159594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:18.095 [DEBUG] [Thread-159594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:18.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:18.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:15:18.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:15:18.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:15:18.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:18.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:15:18.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.551804 -999.00  +16.10   2.71     38   +1.80 1 1 1 1 1   888    0 14.51 15.12 ----- 2.3 2.7 211.5 5.1 24.7 -29.2 23.7 -29.7 25.7 -28.3 27.1 -30.2
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.551804
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:15:18.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:15:00', tmtdew=16.05, humidity=33.78, cloud=0.0, wind=9.9, temperature=15.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:14:35.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:15:18.115 [DEBUG] [Thread-159594] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:18.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:15:18.198 [DEBUG] [Thread-159597] [transport.py] [_log()] starting thread (client mode): 0x2e3f8f10
2025-09-29T15:15:18.198 [DEBUG] [Thread-159597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:18.213 [DEBUG] [Thread-159597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:15:18.213 [INFO] [Thread-159597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] Compression: none
2025-09-29T15:15:18.221 [DEBUG] [Thread-159597] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:18.276 [DEBUG] [Thread-159597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:18.276 [DEBUG] [Thread-159597] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:18.277 [DEBUG] [Thread-159597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:15:18.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:15:18.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:18.333 [DEBUG] [Thread-159597] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:18.333 [DEBUG] [Thread-159597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:18.333 [DEBUG] [Thread-159597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:18.333 [DEBUG] [Thread-159597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:15:18.333 [DEBUG] [Thread-159597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:18.347 [INFO] [Thread-159597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:18.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:15:18.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:19.330 [DEBUG] [Thread-159597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:19.331 [DEBUG] [Thread-159597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:19.378 [DEBUG] [Thread-159597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:19.378 [DEBUG] [Thread-159597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:19.387 [DEBUG] [Thread-159597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:19.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:19.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:15:19.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:15:19.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:19.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:19.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:19.422 [DEBUG] [Thread-159597] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:24.421 [DEBUG] [Thread-159599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:15:29.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:15:29.425 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:15:29.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:15:30.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 15), 16.05, 33.78, 0.0, 9.9, 15.97, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:15:30.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:15:00
2025-09-29T15:15:30.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:15:30.263 [DEBUG] [Thread-159600] [transport.py] [_log()] starting thread (client mode): 0x2b9cd4e0
2025-09-29T15:15:30.264 [DEBUG] [Thread-159600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:30.285 [DEBUG] [Thread-159600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:15:30.285 [INFO] [Thread-159600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:15:30.288 [DEBUG] [Thread-159600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:30.288 [DEBUG] [Thread-159600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:15:30.288 [DEBUG] [Thread-159600] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:30.288 [DEBUG] [Thread-159600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:30.289 [DEBUG] [Thread-159600] [transport.py] [_log()] Compression: none
2025-09-29T15:15:30.290 [DEBUG] [Thread-159600] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:30.308 [DEBUG] [Thread-159600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:30.309 [DEBUG] [Thread-159600] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:30.309 [DEBUG] [Thread-159600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:15:30.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:15:30.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:30.311 [DEBUG] [Thread-159600] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:30.311 [DEBUG] [Thread-159600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:30.311 [DEBUG] [Thread-159600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:30.311 [DEBUG] [Thread-159600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:15:30.312 [DEBUG] [Thread-159600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:30.329 [INFO] [Thread-159600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:30.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:30.940 [DEBUG] [Thread-159600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:30.940 [DEBUG] [Thread-159600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:30.950 [DEBUG] [Thread-159600] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:15:30.981 [DEBUG] [Thread-159600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:30.981 [DEBUG] [Thread-159600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:30.983 [DEBUG] [Thread-159600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:30.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:30.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:15:30.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:15:31.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:15:31.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:31.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:15:31.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:31.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:31.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:15:31.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.552150 -999.00  +16.20   4.64     38   +2.00 1 1 1 1 1   888    0 14.69 15.91 ----- 6.5 4.6 174.5 6.2 24.8 -29.0 23.8 -28.5 25.8 -27.9 27.2 -31.1
2025-09-29T15:15:31.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:15:31.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:15:31.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.552150
2025-09-29T15:15:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:15:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:15:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:15:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:15:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:15:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:15:00', tmtdew=16.05, humidity=33.78, cloud=0.0, wind=9.9, temperature=15.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:15:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:15:31.008 [DEBUG] [Thread-159600] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:31.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:15:31.102 [DEBUG] [Thread-159603] [transport.py] [_log()] starting thread (client mode): 0x2b9ceb90
2025-09-29T15:15:31.102 [DEBUG] [Thread-159603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:31.118 [DEBUG] [Thread-159603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:15:31.118 [INFO] [Thread-159603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:15:31.125 [DEBUG] [Thread-159603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:31.125 [DEBUG] [Thread-159603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:15:31.125 [DEBUG] [Thread-159603] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] Compression: none
2025-09-29T15:15:31.126 [DEBUG] [Thread-159603] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:31.185 [DEBUG] [Thread-159603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:31.185 [DEBUG] [Thread-159603] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:31.186 [DEBUG] [Thread-159603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:15:31.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:15:31.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:31.241 [DEBUG] [Thread-159603] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:31.241 [DEBUG] [Thread-159603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:31.242 [DEBUG] [Thread-159603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:31.242 [DEBUG] [Thread-159603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:15:31.242 [DEBUG] [Thread-159603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:31.260 [INFO] [Thread-159603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:31.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:15:31.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:32.243 [DEBUG] [Thread-159603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:32.243 [DEBUG] [Thread-159603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:32.291 [DEBUG] [Thread-159603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:32.291 [DEBUG] [Thread-159603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:32.300 [DEBUG] [Thread-159603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:32.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:32.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:15:32.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:15:32.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:32.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:32.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:32.335 [DEBUG] [Thread-159603] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:39.463 [DEBUG] [Thread-159605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:15:42.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:15:42.338 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:15:42.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:15:42.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 15, 32), 16.17, 33.5, 0.0, 9.19, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:15:42.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:15:32
2025-09-29T15:15:43.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:15:43.177 [DEBUG] [Thread-159606] [transport.py] [_log()] starting thread (client mode): 0x30ddf310
2025-09-29T15:15:43.177 [DEBUG] [Thread-159606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:43.196 [DEBUG] [Thread-159606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:15:43.196 [INFO] [Thread-159606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:15:43.199 [DEBUG] [Thread-159606] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:43.200 [DEBUG] [Thread-159606] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:43.201 [DEBUG] [Thread-159606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:43.201 [DEBUG] [Thread-159606] [transport.py] [_log()] Compression: none
2025-09-29T15:15:43.201 [DEBUG] [Thread-159606] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:43.210 [DEBUG] [Thread-159606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:43.210 [DEBUG] [Thread-159606] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:43.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:15:43.211 [DEBUG] [Thread-159606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:15:43.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:43.213 [DEBUG] [Thread-159606] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:43.213 [DEBUG] [Thread-159606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:43.213 [DEBUG] [Thread-159606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:43.213 [DEBUG] [Thread-159606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:15:43.213 [DEBUG] [Thread-159606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:43.229 [INFO] [Thread-159606] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:43.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:43.974 [DEBUG] [Thread-159606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:43.974 [DEBUG] [Thread-159606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:43.974 [DEBUG] [Thread-159606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:15:44.014 [DEBUG] [Thread-159606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:44.014 [DEBUG] [Thread-159606] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:44.016 [DEBUG] [Thread-159606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:44.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:44.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:15:44.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:15:44.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:15:44.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:44.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:15:44.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:44.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:44.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:15:44.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.552150 -999.00  +16.20   4.64     38   +2.00 1 1 1 1 1   888    0 14.69 15.91 ----- 6.5 4.6 174.5 6.2 24.8 -29.0 23.8 -28.5 25.8 -27.9 27.2 -31.1
2025-09-29T15:15:44.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:15:44.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:15:44.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.552150
2025-09-29T15:15:44.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:15:44.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:15:44.034 [DEBUG] [Thread-159606] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:44.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:15:44.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:15:44.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:15:44.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:15:32', tmtdew=16.17, humidity=33.5, cloud=0.0, wind=9.19, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:15:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:15:44.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:15:44.129 [DEBUG] [Thread-159609] [transport.py] [_log()] starting thread (client mode): 0x2b954670
2025-09-29T15:15:44.129 [DEBUG] [Thread-159609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:44.144 [DEBUG] [Thread-159609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:15:44.144 [INFO] [Thread-159609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:15:44.151 [DEBUG] [Thread-159609] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:44.151 [DEBUG] [Thread-159609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:15:44.152 [DEBUG] [Thread-159609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:44.152 [DEBUG] [Thread-159609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:44.152 [DEBUG] [Thread-159609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:44.152 [DEBUG] [Thread-159609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:44.152 [DEBUG] [Thread-159609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:44.152 [DEBUG] [Thread-159609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:44.152 [DEBUG] [Thread-159609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:44.152 [DEBUG] [Thread-159609] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] Compression: none
2025-09-29T15:15:44.153 [DEBUG] [Thread-159609] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:44.209 [DEBUG] [Thread-159609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:44.209 [DEBUG] [Thread-159609] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:44.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:15:44.210 [DEBUG] [Thread-159609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:15:44.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:44.265 [DEBUG] [Thread-159609] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:44.265 [DEBUG] [Thread-159609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:44.266 [DEBUG] [Thread-159609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:44.266 [DEBUG] [Thread-159609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:15:44.266 [DEBUG] [Thread-159609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:44.288 [INFO] [Thread-159609] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:44.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:15:44.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:45.290 [DEBUG] [Thread-159609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:45.291 [DEBUG] [Thread-159609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:45.338 [DEBUG] [Thread-159609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:45.338 [DEBUG] [Thread-159609] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:45.347 [DEBUG] [Thread-159609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:45.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:45.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:15:45.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:15:45.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:45.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:45.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:45.380 [DEBUG] [Thread-159609] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:46.147 [DEBUG] [Thread-159611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:15:54.492 [DEBUG] [Thread-159612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:15:55.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:15:55.383 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:15:55.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:15:55.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 15, 32), 16.17, 33.5, 0.0, 9.19, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:15:55.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:15:32
2025-09-29T15:15:56.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:15:56.233 [DEBUG] [Thread-159613] [transport.py] [_log()] starting thread (client mode): 0x30ddead0
2025-09-29T15:15:56.233 [DEBUG] [Thread-159613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:56.254 [DEBUG] [Thread-159613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:15:56.254 [INFO] [Thread-159613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:15:56.257 [DEBUG] [Thread-159613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:56.257 [DEBUG] [Thread-159613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:15:56.257 [DEBUG] [Thread-159613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:56.257 [DEBUG] [Thread-159613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:56.257 [DEBUG] [Thread-159613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] Compression: none
2025-09-29T15:15:56.258 [DEBUG] [Thread-159613] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:56.270 [DEBUG] [Thread-159613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:56.270 [DEBUG] [Thread-159613] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:56.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:15:56.270 [DEBUG] [Thread-159613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:15:56.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:56.271 [DEBUG] [Thread-159613] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:56.271 [DEBUG] [Thread-159613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:56.271 [DEBUG] [Thread-159613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:56.271 [DEBUG] [Thread-159613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:15:56.271 [DEBUG] [Thread-159613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:56.286 [INFO] [Thread-159613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:56.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:56.887 [DEBUG] [Thread-159613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:56.887 [DEBUG] [Thread-159613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:56.887 [DEBUG] [Thread-159613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:15:56.928 [DEBUG] [Thread-159613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:56.928 [DEBUG] [Thread-159613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:56.931 [DEBUG] [Thread-159613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:56.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:56.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:15:56.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:15:56.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:15:56.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:56.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:15:56.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:56.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:56.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:15:56.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.552498 -999.00  +16.20   2.29     37   +1.80 1 1 1 1 1   888    0 14.79 20.39 ----- 6.8 2.3 232.0 10.8 24.8 -29.3 23.9 -28.5 25.8 -29.3 27.2 -30.8
2025-09-29T15:15:56.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:15:56.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:15:56.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.552498
2025-09-29T15:15:56.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:15:56.954 [DEBUG] [Thread-159613] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:15:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:15:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:15:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:15:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:15:56.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:15:32', tmtdew=16.17, humidity=33.5, cloud=0.0, wind=9.19, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:15:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:15:57.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:15:57.047 [DEBUG] [Thread-159616] [transport.py] [_log()] starting thread (client mode): 0x30ddd6f0
2025-09-29T15:15:57.047 [DEBUG] [Thread-159616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:15:57.063 [DEBUG] [Thread-159616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:15:57.063 [INFO] [Thread-159616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:15:57.070 [DEBUG] [Thread-159616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:15:57.070 [DEBUG] [Thread-159616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] client lang: <none>
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] server lang: <none>
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] kex follows: False
2025-09-29T15:15:57.071 [DEBUG] [Thread-159616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:15:57.072 [DEBUG] [Thread-159616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:15:57.072 [DEBUG] [Thread-159616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:15:57.072 [DEBUG] [Thread-159616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:15:57.072 [DEBUG] [Thread-159616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:15:57.072 [DEBUG] [Thread-159616] [transport.py] [_log()] Compression: none
2025-09-29T15:15:57.072 [DEBUG] [Thread-159616] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:15:57.129 [DEBUG] [Thread-159616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:15:57.130 [DEBUG] [Thread-159616] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:15:57.130 [DEBUG] [Thread-159616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:15:57.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:15:57.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:15:57.185 [DEBUG] [Thread-159616] [transport.py] [_log()] userauth is OK
2025-09-29T15:15:57.185 [DEBUG] [Thread-159616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:15:57.185 [DEBUG] [Thread-159616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:15:57.185 [DEBUG] [Thread-159616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:15:57.185 [DEBUG] [Thread-159616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:15:57.205 [INFO] [Thread-159616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:15:57.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:15:57.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:15:58.215 [DEBUG] [Thread-159616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:15:58.215 [DEBUG] [Thread-159616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:15:58.263 [DEBUG] [Thread-159616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:15:58.263 [DEBUG] [Thread-159616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:15:58.271 [DEBUG] [Thread-159616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:15:58.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:15:58.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:15:58.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:15:58.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:15:58.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:15:58.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:15:58.302 [DEBUG] [Thread-159616] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:08.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:16:08.305 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:16:08.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:16:08.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 16, 4), 16.08, 33.68, 0.0, 9.58, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:16:08.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:16:04
2025-09-29T15:16:08.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:16:09.145 [DEBUG] [Thread-159618] [transport.py] [_log()] starting thread (client mode): 0x30ddd480
2025-09-29T15:16:09.145 [DEBUG] [Thread-159618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:16:09.166 [DEBUG] [Thread-159618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:16:09.166 [INFO] [Thread-159618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:16:09.169 [DEBUG] [Thread-159618] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:16:09.169 [DEBUG] [Thread-159618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:16:09.169 [DEBUG] [Thread-159618] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:16:09.169 [DEBUG] [Thread-159618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:09.169 [DEBUG] [Thread-159618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:09.169 [DEBUG] [Thread-159618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] client lang: <none>
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] server lang: <none>
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] kex follows: False
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:16:09.170 [DEBUG] [Thread-159618] [transport.py] [_log()] Compression: none
2025-09-29T15:16:09.171 [DEBUG] [Thread-159618] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:16:09.189 [DEBUG] [Thread-159618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:16:09.189 [DEBUG] [Thread-159618] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:16:09.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:16:09.191 [DEBUG] [Thread-159618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:16:09.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:16:09.193 [DEBUG] [Thread-159618] [transport.py] [_log()] userauth is OK
2025-09-29T15:16:09.193 [DEBUG] [Thread-159618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:16:09.193 [DEBUG] [Thread-159618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:16:09.194 [DEBUG] [Thread-159618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:16:09.194 [DEBUG] [Thread-159618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:16:09.220 [INFO] [Thread-159618] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:16:09.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:16:09.535 [DEBUG] [Thread-159620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:16:10.019 [DEBUG] [Thread-159618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:16:10.019 [DEBUG] [Thread-159618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:16:10.020 [DEBUG] [Thread-159618] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:16:10.060 [DEBUG] [Thread-159618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:16:10.060 [DEBUG] [Thread-159618] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:16:10.062 [DEBUG] [Thread-159618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:16:10.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:16:10.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:16:10.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:16:10.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:16:10.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:16:10.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:16:10.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:16:10.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:16:10.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:16:10.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.552498 -999.00  +16.20   2.29     37   +1.80 1 1 1 1 1   888    0 14.79 20.39 ----- 6.8 2.3 232.0 10.8 24.8 -29.3 23.9 -28.5 25.8 -29.3 27.2 -30.8
2025-09-29T15:16:10.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:16:10.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:16:10.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.552498
2025-09-29T15:16:10.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:16:10.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:16:10.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:16:10.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:16:10.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:16:10.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:16:04', tmtdew=16.08, humidity=33.68, cloud=0.0, wind=9.58, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:15:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:16:10.086 [DEBUG] [Thread-159618] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:10.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:16:10.185 [DEBUG] [Thread-159622] [transport.py] [_log()] starting thread (client mode): 0x2e3632b0
2025-09-29T15:16:10.185 [DEBUG] [Thread-159622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:16:10.204 [DEBUG] [Thread-159622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:16:10.205 [INFO] [Thread-159622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:16:10.212 [DEBUG] [Thread-159622] [transport.py] [_log()] client lang: <none>
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] server lang: <none>
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] kex follows: False
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] Compression: none
2025-09-29T15:16:10.213 [DEBUG] [Thread-159622] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:16:10.269 [DEBUG] [Thread-159622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:16:10.269 [DEBUG] [Thread-159622] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:16:10.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:16:10.270 [DEBUG] [Thread-159622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:16:10.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:16:10.325 [DEBUG] [Thread-159622] [transport.py] [_log()] userauth is OK
2025-09-29T15:16:10.325 [DEBUG] [Thread-159622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:16:10.325 [DEBUG] [Thread-159622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:16:10.325 [DEBUG] [Thread-159622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:16:10.325 [DEBUG] [Thread-159622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:16:10.339 [INFO] [Thread-159622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:16:10.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:16:10.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:16:11.266 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:16:11.268 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:16:11.339 [DEBUG] [Thread-159622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:16:11.340 [DEBUG] [Thread-159622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:16:11.387 [DEBUG] [Thread-159622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:16:11.387 [DEBUG] [Thread-159622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:16:11.396 [DEBUG] [Thread-159622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:16:11.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:16:11.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:16:11.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:16:11.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:16:11.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:16:11.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:16:11.430 [DEBUG] [Thread-159622] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:21.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:16:21.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:16:21.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:16:22.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 16, 4), 16.08, 33.68, 0.0, 9.58, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:16:22.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:16:04
2025-09-29T15:16:22.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:16:22.262 [DEBUG] [Thread-159624] [transport.py] [_log()] starting thread (client mode): 0x2b96a950
2025-09-29T15:16:22.263 [DEBUG] [Thread-159624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:16:22.283 [DEBUG] [Thread-159624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:16:22.283 [INFO] [Thread-159624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:16:22.286 [DEBUG] [Thread-159624] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:16:22.286 [DEBUG] [Thread-159624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:16:22.286 [DEBUG] [Thread-159624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:16:22.286 [DEBUG] [Thread-159624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:22.286 [DEBUG] [Thread-159624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:22.286 [DEBUG] [Thread-159624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] client lang: <none>
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] server lang: <none>
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] kex follows: False
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] Compression: none
2025-09-29T15:16:22.287 [DEBUG] [Thread-159624] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:16:22.303 [DEBUG] [Thread-159624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:16:22.304 [DEBUG] [Thread-159624] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:16:22.304 [DEBUG] [Thread-159624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:16:22.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:16:22.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:16:22.306 [DEBUG] [Thread-159624] [transport.py] [_log()] userauth is OK
2025-09-29T15:16:22.307 [DEBUG] [Thread-159624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:16:22.307 [DEBUG] [Thread-159624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:16:22.307 [DEBUG] [Thread-159624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:16:22.307 [DEBUG] [Thread-159624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:16:22.322 [INFO] [Thread-159624] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:16:22.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:16:23.084 [DEBUG] [Thread-159624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:16:23.084 [DEBUG] [Thread-159624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:16:23.085 [DEBUG] [Thread-159624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:16:23.125 [DEBUG] [Thread-159624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:16:23.125 [DEBUG] [Thread-159624] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:16:23.128 [DEBUG] [Thread-159624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:16:23.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:16:23.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:16:23.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:16:23.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:16:23.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:16:23.149 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:16:23.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:16:23.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:16:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:16:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.552498 -999.00  +16.20   2.29     37   +1.80 1 1 1 1 1   888    0 14.79 20.39 ----- 6.8 2.3 232.0 10.8 24.8 -29.3 23.9 -28.5 25.8 -29.3 27.2 -30.8
2025-09-29T15:16:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:16:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:16:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.552498
2025-09-29T15:16:23.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:16:23.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:16:23.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:16:23.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:16:23.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:16:23.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:16:04', tmtdew=16.08, humidity=33.68, cloud=0.0, wind=9.58, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:15:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:16:23.152 [DEBUG] [Thread-159624] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:23.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:16:23.245 [DEBUG] [Thread-159627] [transport.py] [_log()] starting thread (client mode): 0x2b96b160
2025-09-29T15:16:23.245 [DEBUG] [Thread-159627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:16:23.259 [DEBUG] [Thread-159627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:16:23.260 [INFO] [Thread-159627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:16:23.267 [DEBUG] [Thread-159627] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:16:23.267 [DEBUG] [Thread-159627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:16:23.267 [DEBUG] [Thread-159627] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:16:23.267 [DEBUG] [Thread-159627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] client lang: <none>
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] server lang: <none>
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] kex follows: False
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] Compression: none
2025-09-29T15:16:23.268 [DEBUG] [Thread-159627] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:16:23.326 [DEBUG] [Thread-159627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:16:23.326 [DEBUG] [Thread-159627] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:16:23.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:16:23.327 [DEBUG] [Thread-159627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:16:23.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:16:23.381 [DEBUG] [Thread-159627] [transport.py] [_log()] userauth is OK
2025-09-29T15:16:23.382 [DEBUG] [Thread-159627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:16:23.382 [DEBUG] [Thread-159627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:16:23.382 [DEBUG] [Thread-159627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:16:23.382 [DEBUG] [Thread-159627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:16:23.396 [INFO] [Thread-159627] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:16:23.396 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:16:23.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:16:24.430 [DEBUG] [Thread-159627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:16:24.430 [DEBUG] [Thread-159627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:16:24.478 [DEBUG] [Thread-159627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:16:24.478 [DEBUG] [Thread-159627] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:16:24.487 [DEBUG] [Thread-159627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:16:24.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:16:24.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:16:24.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:16:24.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:16:24.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:16:24.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:16:24.522 [DEBUG] [Thread-159627] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:24.580 [DEBUG] [Thread-159629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:16:34.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:16:34.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:16:34.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:16:35.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 16, 4), 16.08, 33.68, 0.0, 9.58, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:16:35.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:16:04
2025-09-29T15:16:35.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:16:35.344 [DEBUG] [Thread-159630] [transport.py] [_log()] starting thread (client mode): 0x2b969120
2025-09-29T15:16:35.344 [DEBUG] [Thread-159630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:16:35.365 [DEBUG] [Thread-159630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:16:35.365 [INFO] [Thread-159630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] client lang: <none>
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] server lang: <none>
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] kex follows: False
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:16:35.368 [DEBUG] [Thread-159630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:16:35.369 [DEBUG] [Thread-159630] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:16:35.369 [DEBUG] [Thread-159630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:16:35.369 [DEBUG] [Thread-159630] [transport.py] [_log()] Compression: none
2025-09-29T15:16:35.369 [DEBUG] [Thread-159630] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:16:35.388 [DEBUG] [Thread-159630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:16:35.388 [DEBUG] [Thread-159630] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:16:35.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:16:35.389 [DEBUG] [Thread-159630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:16:35.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:16:35.391 [DEBUG] [Thread-159630] [transport.py] [_log()] userauth is OK
2025-09-29T15:16:35.391 [DEBUG] [Thread-159630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:16:35.391 [DEBUG] [Thread-159630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:16:35.391 [DEBUG] [Thread-159630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:16:35.392 [DEBUG] [Thread-159630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:16:35.415 [INFO] [Thread-159630] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:16:35.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:16:36.021 [DEBUG] [Thread-159630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:16:36.021 [DEBUG] [Thread-159630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:16:36.021 [DEBUG] [Thread-159630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:16:36.062 [DEBUG] [Thread-159630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:16:36.062 [DEBUG] [Thread-159630] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:16:36.064 [DEBUG] [Thread-159630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:16:36.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:16:36.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:16:36.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:16:36.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:16:36.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:16:36.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:16:36.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.552845 -999.00  +16.00   4.47     38   +1.80 1 1 1 1 1   888    0 15.02 22.20 ----- 6.4 4.5 271.1 8.2 24.9 -29.8 24.1 -28.7 25.9 -27.9 27.3 -30.7
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.552845
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:16:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:16:04', tmtdew=16.08, humidity=33.68, cloud=0.0, wind=9.58, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:16:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:16:36.081 [DEBUG] [Thread-159630] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:36.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:16:36.168 [DEBUG] [Thread-159633] [transport.py] [_log()] starting thread (client mode): 0x2e360070
2025-09-29T15:16:36.168 [DEBUG] [Thread-159633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:16:36.184 [DEBUG] [Thread-159633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:16:36.184 [INFO] [Thread-159633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:16:36.192 [DEBUG] [Thread-159633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:16:36.192 [DEBUG] [Thread-159633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:16:36.192 [DEBUG] [Thread-159633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:16:36.192 [DEBUG] [Thread-159633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] client lang: <none>
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] server lang: <none>
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] kex follows: False
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] Compression: none
2025-09-29T15:16:36.193 [DEBUG] [Thread-159633] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:16:36.249 [DEBUG] [Thread-159633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:16:36.250 [DEBUG] [Thread-159633] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:16:36.250 [DEBUG] [Thread-159633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:16:36.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:16:36.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:16:36.306 [DEBUG] [Thread-159633] [transport.py] [_log()] userauth is OK
2025-09-29T15:16:36.306 [DEBUG] [Thread-159633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:16:36.306 [DEBUG] [Thread-159633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:16:36.306 [DEBUG] [Thread-159633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:16:36.306 [DEBUG] [Thread-159633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:16:36.324 [INFO] [Thread-159633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:16:36.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:16:36.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:16:37.299 [DEBUG] [Thread-159633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:16:37.299 [DEBUG] [Thread-159633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:16:37.348 [DEBUG] [Thread-159633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:16:37.348 [DEBUG] [Thread-159633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:16:37.356 [DEBUG] [Thread-159633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:16:37.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:16:37.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:16:37.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:16:37.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:16:37.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:16:37.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:16:37.388 [DEBUG] [Thread-159633] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:39.624 [DEBUG] [Thread-159635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:16:46.184 [DEBUG] [Thread-159636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:16:47.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:16:47.390 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:16:47.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:16:47.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 16, 36), 16.27, 33.18, 0.0, 10.32, 15.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:16:47.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:16:36
2025-09-29T15:16:48.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:16:48.222 [DEBUG] [Thread-159637] [transport.py] [_log()] starting thread (client mode): 0x30ddfeb0
2025-09-29T15:16:48.222 [DEBUG] [Thread-159637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:16:48.238 [DEBUG] [Thread-159637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:16:48.238 [INFO] [Thread-159637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:16:48.241 [DEBUG] [Thread-159637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:16:48.241 [DEBUG] [Thread-159637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:16:48.241 [DEBUG] [Thread-159637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:16:48.241 [DEBUG] [Thread-159637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:48.241 [DEBUG] [Thread-159637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:48.241 [DEBUG] [Thread-159637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:48.241 [DEBUG] [Thread-159637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:48.241 [DEBUG] [Thread-159637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] client lang: <none>
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] server lang: <none>
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] kex follows: False
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] Compression: none
2025-09-29T15:16:48.242 [DEBUG] [Thread-159637] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:16:48.259 [DEBUG] [Thread-159637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:16:48.260 [DEBUG] [Thread-159637] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:16:48.261 [DEBUG] [Thread-159637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:16:48.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:16:48.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:16:48.263 [DEBUG] [Thread-159637] [transport.py] [_log()] userauth is OK
2025-09-29T15:16:48.263 [DEBUG] [Thread-159637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:16:48.263 [DEBUG] [Thread-159637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:16:48.263 [DEBUG] [Thread-159637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:16:48.263 [DEBUG] [Thread-159637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:16:48.282 [INFO] [Thread-159637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:16:48.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:16:49.045 [DEBUG] [Thread-159637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:16:49.045 [DEBUG] [Thread-159637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:16:49.045 [DEBUG] [Thread-159637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:16:49.086 [DEBUG] [Thread-159637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:16:49.087 [DEBUG] [Thread-159637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:16:49.090 [DEBUG] [Thread-159637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:16:49.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:16:49.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:16:49.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:16:49.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:16:49.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:16:49.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:16:49.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:16:49.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:16:49.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:16:49.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.552845 -999.00  +16.00   4.47     38   +1.80 1 1 1 1 1   888    0 15.02 22.20 ----- 6.4 4.5 271.1 8.2 24.9 -29.8 24.1 -28.7 25.9 -27.9 27.3 -30.7
2025-09-29T15:16:49.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:16:49.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:16:49.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.552845
2025-09-29T15:16:49.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:16:49.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:16:49.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:16:49.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:16:49.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:16:49.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:16:36', tmtdew=16.27, humidity=33.18, cloud=0.0, wind=10.32, temperature=15.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:16:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:16:49.114 [DEBUG] [Thread-159637] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:49.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:16:49.207 [DEBUG] [Thread-159640] [transport.py] [_log()] starting thread (client mode): 0x2e363490
2025-09-29T15:16:49.207 [DEBUG] [Thread-159640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:16:49.222 [DEBUG] [Thread-159640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:16:49.222 [INFO] [Thread-159640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:16:49.229 [DEBUG] [Thread-159640] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:16:49.229 [DEBUG] [Thread-159640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] client lang: <none>
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] server lang: <none>
2025-09-29T15:16:49.230 [DEBUG] [Thread-159640] [transport.py] [_log()] kex follows: False
2025-09-29T15:16:49.231 [DEBUG] [Thread-159640] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:16:49.231 [DEBUG] [Thread-159640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:16:49.231 [DEBUG] [Thread-159640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:16:49.231 [DEBUG] [Thread-159640] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:16:49.231 [DEBUG] [Thread-159640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:16:49.231 [DEBUG] [Thread-159640] [transport.py] [_log()] Compression: none
2025-09-29T15:16:49.231 [DEBUG] [Thread-159640] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:16:49.290 [DEBUG] [Thread-159640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:16:49.290 [DEBUG] [Thread-159640] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:16:49.291 [DEBUG] [Thread-159640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:16:49.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:16:49.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:16:49.345 [DEBUG] [Thread-159640] [transport.py] [_log()] userauth is OK
2025-09-29T15:16:49.345 [DEBUG] [Thread-159640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:16:49.345 [DEBUG] [Thread-159640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:16:49.346 [DEBUG] [Thread-159640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:16:49.346 [DEBUG] [Thread-159640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:16:49.364 [INFO] [Thread-159640] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:16:49.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:16:49.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:16:50.384 [DEBUG] [Thread-159640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:16:50.384 [DEBUG] [Thread-159640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:16:50.432 [DEBUG] [Thread-159640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:16:50.432 [DEBUG] [Thread-159640] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:16:50.441 [DEBUG] [Thread-159640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:16:50.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:16:50.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:16:50.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:16:50.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:16:50.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:16:50.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:16:50.476 [DEBUG] [Thread-159640] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:16:54.672 [DEBUG] [Thread-159642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:17:00.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:17:00.479 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:17:00.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:17:01.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 16, 36), 16.27, 33.18, 0.0, 10.32, 15.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:17:01.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:16:36
2025-09-29T15:17:01.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:17:01.320 [DEBUG] [Thread-159643] [transport.py] [_log()] starting thread (client mode): 0x2b96ed40
2025-09-29T15:17:01.320 [DEBUG] [Thread-159643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:01.340 [DEBUG] [Thread-159643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:17:01.340 [INFO] [Thread-159643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:01.343 [DEBUG] [Thread-159643] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:01.344 [DEBUG] [Thread-159643] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:01.344 [DEBUG] [Thread-159643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:01.344 [DEBUG] [Thread-159643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:01.344 [DEBUG] [Thread-159643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:01.344 [DEBUG] [Thread-159643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:01.344 [DEBUG] [Thread-159643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:01.344 [DEBUG] [Thread-159643] [transport.py] [_log()] Compression: none
2025-09-29T15:17:01.344 [DEBUG] [Thread-159643] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:01.358 [DEBUG] [Thread-159643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:01.358 [DEBUG] [Thread-159643] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:01.359 [DEBUG] [Thread-159643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:17:01.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:17:01.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:01.360 [DEBUG] [Thread-159643] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:01.361 [DEBUG] [Thread-159643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:01.361 [DEBUG] [Thread-159643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:01.361 [DEBUG] [Thread-159643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:17:01.361 [DEBUG] [Thread-159643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:01.379 [INFO] [Thread-159643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:01.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:01.995 [DEBUG] [Thread-159643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:01.995 [DEBUG] [Thread-159643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:01.996 [DEBUG] [Thread-159643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:17:02.036 [DEBUG] [Thread-159643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:02.036 [DEBUG] [Thread-159643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:02.039 [DEBUG] [Thread-159643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:02.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:02.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:17:02.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:17:02.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:17:02.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:02.062 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:17:02.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:02.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:02.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:17:02.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.553192 -999.00  +15.70   7.88     38   +1.60 1 1 1 1 1   888    0 14.75 20.28 ----- 7.2 7.9 277.0 9.0 24.8 -32.1 24.1 -29.2 25.7 -30.7 27.0 -30.5
2025-09-29T15:17:02.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:17:02.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:17:02.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.553192
2025-09-29T15:17:02.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:17:02.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:17:02.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:17:02.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:17:02.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:17:02.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:16:36', tmtdew=16.27, humidity=33.18, cloud=0.0, wind=10.32, temperature=15.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:16:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:17:02.065 [DEBUG] [Thread-159643] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:02.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:17:02.160 [DEBUG] [Thread-159646] [transport.py] [_log()] starting thread (client mode): 0x2b94d240
2025-09-29T15:17:02.160 [DEBUG] [Thread-159646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:02.175 [DEBUG] [Thread-159646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:17:02.175 [INFO] [Thread-159646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:17:02.182 [DEBUG] [Thread-159646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:02.182 [DEBUG] [Thread-159646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:17:02.182 [DEBUG] [Thread-159646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:02.183 [DEBUG] [Thread-159646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:02.184 [DEBUG] [Thread-159646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:02.184 [DEBUG] [Thread-159646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:02.184 [DEBUG] [Thread-159646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:02.184 [DEBUG] [Thread-159646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:02.184 [DEBUG] [Thread-159646] [transport.py] [_log()] Compression: none
2025-09-29T15:17:02.184 [DEBUG] [Thread-159646] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:02.242 [DEBUG] [Thread-159646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:02.242 [DEBUG] [Thread-159646] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:02.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:17:02.243 [DEBUG] [Thread-159646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:17:02.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:02.302 [DEBUG] [Thread-159646] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:02.302 [DEBUG] [Thread-159646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:02.302 [DEBUG] [Thread-159646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:02.302 [DEBUG] [Thread-159646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:17:02.302 [DEBUG] [Thread-159646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:02.321 [INFO] [Thread-159646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:02.321 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:17:02.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:03.333 [DEBUG] [Thread-159646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:03.333 [DEBUG] [Thread-159646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:03.381 [DEBUG] [Thread-159646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:03.381 [DEBUG] [Thread-159646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:03.389 [DEBUG] [Thread-159646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:03.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:03.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:17:03.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:17:03.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:03.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:03.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:03.421 [DEBUG] [Thread-159646] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:09.716 [DEBUG] [Thread-159648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:17:11.407 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:17:11.407 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:17:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:17:13.424 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:17:13.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:17:14.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 17, 8), 16.12, 33.5, 0.0, 8.42, 15.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:17:14.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:17:08
2025-09-29T15:17:14.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:17:14.260 [DEBUG] [Thread-159649] [transport.py] [_log()] starting thread (client mode): 0x2b96c340
2025-09-29T15:17:14.260 [DEBUG] [Thread-159649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:14.280 [DEBUG] [Thread-159649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:17:14.280 [INFO] [Thread-159649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:17:14.281 [DEBUG] [Thread-159649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] Compression: none
2025-09-29T15:17:14.282 [DEBUG] [Thread-159649] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:14.290 [DEBUG] [Thread-159649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:14.290 [DEBUG] [Thread-159649] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:14.291 [DEBUG] [Thread-159649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:17:14.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:17:14.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:14.292 [DEBUG] [Thread-159649] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:14.292 [DEBUG] [Thread-159649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:14.293 [DEBUG] [Thread-159649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:14.293 [DEBUG] [Thread-159649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:17:14.293 [DEBUG] [Thread-159649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:14.316 [INFO] [Thread-159649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:14.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:15.075 [DEBUG] [Thread-159649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:15.075 [DEBUG] [Thread-159649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:15.076 [DEBUG] [Thread-159649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:17:15.116 [DEBUG] [Thread-159649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:15.117 [DEBUG] [Thread-159649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:15.120 [DEBUG] [Thread-159649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:15.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:15.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:17:15.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:17:15.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:17:15.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:15.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:17:15.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:15.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:15.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:17:15.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.553192 -999.00  +15.70   7.88     38   +1.60 1 1 1 1 1   888    0 14.75 20.28 ----- 7.2 7.9 277.0 9.0 24.8 -32.1 24.1 -29.2 25.7 -30.7 27.0 -30.5
2025-09-29T15:17:15.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:17:15.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:17:15.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.553192
2025-09-29T15:17:15.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:17:15.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:17:15.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:17:15.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:17:15.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:17:15.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:17:08', tmtdew=16.12, humidity=33.5, cloud=0.0, wind=8.42, temperature=15.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:16:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:17:15.147 [DEBUG] [Thread-159649] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:15.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:17:15.243 [DEBUG] [Thread-159652] [transport.py] [_log()] starting thread (client mode): 0x2e361cc0
2025-09-29T15:17:15.243 [DEBUG] [Thread-159652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:15.258 [DEBUG] [Thread-159652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:17:15.259 [INFO] [Thread-159652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:17:15.266 [DEBUG] [Thread-159652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:15.267 [DEBUG] [Thread-159652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:15.268 [DEBUG] [Thread-159652] [transport.py] [_log()] Compression: none
2025-09-29T15:17:15.268 [DEBUG] [Thread-159652] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:15.325 [DEBUG] [Thread-159652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:15.326 [DEBUG] [Thread-159652] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:15.326 [DEBUG] [Thread-159652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:17:15.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:17:15.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:15.382 [DEBUG] [Thread-159652] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:15.382 [DEBUG] [Thread-159652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:15.383 [DEBUG] [Thread-159652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:15.383 [DEBUG] [Thread-159652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:17:15.383 [DEBUG] [Thread-159652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:15.401 [INFO] [Thread-159652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:15.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:17:15.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:16.371 [DEBUG] [Thread-159652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:16.371 [DEBUG] [Thread-159652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:16.419 [DEBUG] [Thread-159652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:16.419 [DEBUG] [Thread-159652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:16.429 [DEBUG] [Thread-159652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:16.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:16.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:17:16.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:17:16.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:16.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:16.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:16.464 [DEBUG] [Thread-159652] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:24.750 [DEBUG] [Thread-159654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:17:26.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:17:26.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:17:26.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:17:27.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 17, 8), 16.12, 33.5, 0.0, 8.42, 15.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:17:27.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:17:08
2025-09-29T15:17:27.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:17:27.291 [DEBUG] [Thread-159655] [transport.py] [_log()] starting thread (client mode): 0x2e3632e0
2025-09-29T15:17:27.291 [DEBUG] [Thread-159655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:27.306 [DEBUG] [Thread-159655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:17:27.306 [INFO] [Thread-159655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] Compression: none
2025-09-29T15:17:27.310 [DEBUG] [Thread-159655] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:27.325 [DEBUG] [Thread-159655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:27.326 [DEBUG] [Thread-159655] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:27.326 [DEBUG] [Thread-159655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:17:27.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:17:27.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:27.328 [DEBUG] [Thread-159655] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:27.328 [DEBUG] [Thread-159655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:27.328 [DEBUG] [Thread-159655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:27.328 [DEBUG] [Thread-159655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:17:27.328 [DEBUG] [Thread-159655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:27.342 [INFO] [Thread-159655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:27.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:28.125 [DEBUG] [Thread-159655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:28.125 [DEBUG] [Thread-159655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:28.125 [DEBUG] [Thread-159655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:17:28.166 [DEBUG] [Thread-159655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:28.166 [DEBUG] [Thread-159655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:28.169 [DEBUG] [Thread-159655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:28.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:28.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:17:28.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:17:28.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:17:28.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:28.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:17:28.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:28.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:28.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:17:28.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.553192 -999.00  +15.70   7.88     38   +1.60 1 1 1 1 1   888    0 14.75 20.28 ----- 7.2 7.9 277.0 9.0 24.8 -32.1 24.1 -29.2 25.7 -30.7 27.0 -30.5
2025-09-29T15:17:28.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:17:28.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:17:28.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.553192
2025-09-29T15:17:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:17:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:17:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:17:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:17:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:17:28.192 [DEBUG] [Thread-159655] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:28.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:17:08', tmtdew=16.12, humidity=33.5, cloud=0.0, wind=8.42, temperature=15.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:16:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:17:28.277 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:17:28.288 [DEBUG] [Thread-159658] [transport.py] [_log()] starting thread (client mode): 0x2b96edd0
2025-09-29T15:17:28.288 [DEBUG] [Thread-159658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:28.303 [DEBUG] [Thread-159658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:17:28.303 [INFO] [Thread-159658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:17:28.312 [DEBUG] [Thread-159658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:28.313 [DEBUG] [Thread-159658] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:28.314 [DEBUG] [Thread-159658] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:28.314 [DEBUG] [Thread-159658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:28.314 [DEBUG] [Thread-159658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:28.314 [DEBUG] [Thread-159658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:28.314 [DEBUG] [Thread-159658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:28.314 [DEBUG] [Thread-159658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:28.314 [DEBUG] [Thread-159658] [transport.py] [_log()] Compression: none
2025-09-29T15:17:28.314 [DEBUG] [Thread-159658] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:28.374 [DEBUG] [Thread-159658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:28.375 [DEBUG] [Thread-159658] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:28.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:17:28.376 [DEBUG] [Thread-159658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:17:28.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:28.430 [DEBUG] [Thread-159658] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:28.430 [DEBUG] [Thread-159658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:28.430 [DEBUG] [Thread-159658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:28.430 [DEBUG] [Thread-159658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:17:28.431 [DEBUG] [Thread-159658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:28.450 [INFO] [Thread-159658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:28.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:17:28.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:29.492 [DEBUG] [Thread-159658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:29.492 [DEBUG] [Thread-159658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:29.541 [DEBUG] [Thread-159658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:29.541 [DEBUG] [Thread-159658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:29.549 [DEBUG] [Thread-159658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:29.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:29.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:17:29.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:17:29.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:29.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:29.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:29.581 [DEBUG] [Thread-159658] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:39.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:17:39.577 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:17:39.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:17:39.794 [DEBUG] [Thread-159660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:17:40.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 17, 8), 16.12, 33.5, 0.0, 8.42, 15.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:17:40.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:17:08
2025-09-29T15:17:40.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:17:40.401 [DEBUG] [Thread-159661] [transport.py] [_log()] starting thread (client mode): 0x2e3dfdf0
2025-09-29T15:17:40.402 [DEBUG] [Thread-159661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:40.422 [DEBUG] [Thread-159661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:17:40.422 [INFO] [Thread-159661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:17:40.425 [DEBUG] [Thread-159661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:40.426 [DEBUG] [Thread-159661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:40.427 [DEBUG] [Thread-159661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:40.427 [DEBUG] [Thread-159661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:40.427 [DEBUG] [Thread-159661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:40.427 [DEBUG] [Thread-159661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:40.427 [DEBUG] [Thread-159661] [transport.py] [_log()] Compression: none
2025-09-29T15:17:40.427 [DEBUG] [Thread-159661] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:40.446 [DEBUG] [Thread-159661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:40.447 [DEBUG] [Thread-159661] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:40.447 [DEBUG] [Thread-159661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:17:40.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:17:40.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:40.449 [DEBUG] [Thread-159661] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:40.449 [DEBUG] [Thread-159661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:40.449 [DEBUG] [Thread-159661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:40.449 [DEBUG] [Thread-159661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:17:40.450 [DEBUG] [Thread-159661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:40.472 [INFO] [Thread-159661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:40.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:41.083 [DEBUG] [Thread-159661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:41.083 [DEBUG] [Thread-159661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:41.083 [DEBUG] [Thread-159661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:17:41.124 [DEBUG] [Thread-159661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:41.124 [DEBUG] [Thread-159661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:41.126 [DEBUG] [Thread-159661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:41.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:41.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:17:41.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:17:41.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:17:41.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:41.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:17:41.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:41.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:41.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:17:41.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.553540 -999.00  +15.90   4.62     38   +1.90 1 1 1 1 1   888    0 14.89 20.69 ----- 2.6 4.6 188.8 8.2 25.0 -29.9 24.2 -28.5 25.8 -28.1 27.1 -29.0
2025-09-29T15:17:41.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:17:41.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:17:41.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.553540
2025-09-29T15:17:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:17:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:17:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:17:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:17:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:17:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:17:08', tmtdew=16.12, humidity=33.5, cloud=0.0, wind=8.42, temperature=15.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:17:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:17:41.140 [DEBUG] [Thread-159661] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:41.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:17:41.225 [DEBUG] [Thread-159664] [transport.py] [_log()] starting thread (client mode): 0x2e3dc160
2025-09-29T15:17:41.225 [DEBUG] [Thread-159664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:41.240 [DEBUG] [Thread-159664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:17:41.240 [INFO] [Thread-159664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] Compression: none
2025-09-29T15:17:41.248 [DEBUG] [Thread-159664] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:41.304 [DEBUG] [Thread-159664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:41.304 [DEBUG] [Thread-159664] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:41.305 [DEBUG] [Thread-159664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:17:41.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:17:41.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:41.361 [DEBUG] [Thread-159664] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:41.361 [DEBUG] [Thread-159664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:41.361 [DEBUG] [Thread-159664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:41.361 [DEBUG] [Thread-159664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:17:41.361 [DEBUG] [Thread-159664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:41.375 [INFO] [Thread-159664] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:41.375 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:17:41.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:42.352 [DEBUG] [Thread-159664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:42.352 [DEBUG] [Thread-159664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:42.400 [DEBUG] [Thread-159664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:42.400 [DEBUG] [Thread-159664] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:42.408 [DEBUG] [Thread-159664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:42.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:42.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:17:42.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:17:42.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:42.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:42.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:42.439 [DEBUG] [Thread-159664] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:46.219 [DEBUG] [Thread-159666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:17:52.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:17:52.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:17:52.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:17:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 17, 40), 16.03, 33.24, 0.0, 6.94, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:17:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:17:40
2025-09-29T15:17:53.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:17:53.281 [DEBUG] [Thread-159667] [transport.py] [_log()] starting thread (client mode): 0x2e3de200
2025-09-29T15:17:53.281 [DEBUG] [Thread-159667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:53.301 [DEBUG] [Thread-159667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:17:53.301 [INFO] [Thread-159667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:17:53.304 [DEBUG] [Thread-159667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:53.304 [DEBUG] [Thread-159667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:17:53.304 [DEBUG] [Thread-159667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:53.304 [DEBUG] [Thread-159667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:53.305 [DEBUG] [Thread-159667] [transport.py] [_log()] Compression: none
2025-09-29T15:17:53.306 [DEBUG] [Thread-159667] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:53.324 [DEBUG] [Thread-159667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:53.325 [DEBUG] [Thread-159667] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:53.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:17:53.326 [DEBUG] [Thread-159667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:17:53.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:53.328 [DEBUG] [Thread-159667] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:53.328 [DEBUG] [Thread-159667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:53.328 [DEBUG] [Thread-159667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:53.329 [DEBUG] [Thread-159667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:17:53.329 [DEBUG] [Thread-159667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:53.351 [INFO] [Thread-159667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:53.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:54.097 [DEBUG] [Thread-159667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:54.097 [DEBUG] [Thread-159667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:54.097 [DEBUG] [Thread-159667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:17:54.138 [DEBUG] [Thread-159667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:54.138 [DEBUG] [Thread-159667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:54.141 [DEBUG] [Thread-159667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:54.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:54.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:17:54.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:17:54.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:17:54.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:54.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:17:54.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:54.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:54.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:17:54.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.553540 -999.00  +15.90   4.62     38   +1.90 1 1 1 1 1   888    0 14.89 20.69 ----- 2.6 4.6 188.8 8.2 25.0 -29.9 24.2 -28.5 25.8 -28.1 27.1 -29.0
2025-09-29T15:17:54.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:17:54.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:17:54.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.553540
2025-09-29T15:17:54.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:17:54.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:17:54.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:17:54.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:17:54.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:17:54.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:17:40', tmtdew=16.03, humidity=33.24, cloud=0.0, wind=6.94, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:17:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:17:54.165 [DEBUG] [Thread-159667] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:17:54.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:17:54.260 [DEBUG] [Thread-159670] [transport.py] [_log()] starting thread (client mode): 0x2b94f460
2025-09-29T15:17:54.260 [DEBUG] [Thread-159670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:17:54.274 [DEBUG] [Thread-159670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:17:54.274 [INFO] [Thread-159670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:17:54.282 [DEBUG] [Thread-159670] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:17:54.282 [DEBUG] [Thread-159670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:17:54.282 [DEBUG] [Thread-159670] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:17:54.282 [DEBUG] [Thread-159670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] client lang: <none>
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] server lang: <none>
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] kex follows: False
2025-09-29T15:17:54.283 [DEBUG] [Thread-159670] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:17:54.284 [DEBUG] [Thread-159670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:17:54.284 [DEBUG] [Thread-159670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:17:54.284 [DEBUG] [Thread-159670] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:17:54.284 [DEBUG] [Thread-159670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:17:54.284 [DEBUG] [Thread-159670] [transport.py] [_log()] Compression: none
2025-09-29T15:17:54.284 [DEBUG] [Thread-159670] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:17:54.341 [DEBUG] [Thread-159670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:17:54.341 [DEBUG] [Thread-159670] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:17:54.342 [DEBUG] [Thread-159670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:17:54.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:17:54.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:17:54.397 [DEBUG] [Thread-159670] [transport.py] [_log()] userauth is OK
2025-09-29T15:17:54.397 [DEBUG] [Thread-159670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:17:54.398 [DEBUG] [Thread-159670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:17:54.398 [DEBUG] [Thread-159670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:17:54.398 [DEBUG] [Thread-159670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:17:54.417 [INFO] [Thread-159670] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:17:54.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:17:54.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:17:54.818 [DEBUG] [Thread-159672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:17:55.403 [DEBUG] [Thread-159670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:17:55.404 [DEBUG] [Thread-159670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:17:55.451 [DEBUG] [Thread-159670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:17:55.451 [DEBUG] [Thread-159670] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:17:55.460 [DEBUG] [Thread-159670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:17:55.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:17:55.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:17:55.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:17:55.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:17:55.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:17:55.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:17:55.493 [DEBUG] [Thread-159670] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:05.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:18:05.496 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:18:05.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:18:06.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 17, 40), 16.03, 33.24, 0.0, 6.94, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:18:06.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:17:40
2025-09-29T15:18:06.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:18:06.323 [DEBUG] [Thread-159673] [transport.py] [_log()] starting thread (client mode): 0x2e3de830
2025-09-29T15:18:06.324 [DEBUG] [Thread-159673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:06.343 [DEBUG] [Thread-159673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:18:06.343 [INFO] [Thread-159673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] Compression: none
2025-09-29T15:18:06.345 [DEBUG] [Thread-159673] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:06.358 [DEBUG] [Thread-159673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:06.358 [DEBUG] [Thread-159673] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:06.359 [DEBUG] [Thread-159673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:18:06.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:18:06.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:06.361 [DEBUG] [Thread-159673] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:06.361 [DEBUG] [Thread-159673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:06.362 [DEBUG] [Thread-159673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:06.362 [DEBUG] [Thread-159673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:18:06.362 [DEBUG] [Thread-159673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:06.376 [INFO] [Thread-159673] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:06.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:07.029 [DEBUG] [Thread-159673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:07.029 [DEBUG] [Thread-159673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:07.030 [DEBUG] [Thread-159673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:18:07.070 [DEBUG] [Thread-159673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:07.070 [DEBUG] [Thread-159673] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:07.073 [DEBUG] [Thread-159673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:07.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:07.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:18:07.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:18:07.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:18:07.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:07.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:18:07.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:07.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:18:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.553887 -999.00  +16.00   3.40     38   +1.80 1 1 1 1 1   888    0 14.97 21.81 ----- 3.1 3.4 188.8 5.0 25.2 -29.3 24.3 -29.0 25.9 -28.3 27.2 -29.4
2025-09-29T15:18:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:18:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:18:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.553887
2025-09-29T15:18:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:18:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:18:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:18:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:18:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:18:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:17:40', tmtdew=16.03, humidity=33.24, cloud=0.0, wind=6.94, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:17:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:18:07.097 [DEBUG] [Thread-159673] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:07.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:18:07.192 [DEBUG] [Thread-159676] [transport.py] [_log()] starting thread (client mode): 0x2b96f640
2025-09-29T15:18:07.192 [DEBUG] [Thread-159676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:07.207 [DEBUG] [Thread-159676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:18:07.207 [INFO] [Thread-159676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:18:07.214 [DEBUG] [Thread-159676] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] Compression: none
2025-09-29T15:18:07.215 [DEBUG] [Thread-159676] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:07.273 [DEBUG] [Thread-159676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:07.274 [DEBUG] [Thread-159676] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:07.274 [DEBUG] [Thread-159676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:18:07.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:18:07.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:07.329 [DEBUG] [Thread-159676] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:07.329 [DEBUG] [Thread-159676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:07.329 [DEBUG] [Thread-159676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:07.329 [DEBUG] [Thread-159676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:18:07.329 [DEBUG] [Thread-159676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:07.343 [INFO] [Thread-159676] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:07.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:18:07.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:08.371 [DEBUG] [Thread-159676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:08.371 [DEBUG] [Thread-159676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:08.423 [DEBUG] [Thread-159676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:08.423 [DEBUG] [Thread-159676] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:08.436 [DEBUG] [Thread-159676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:08.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:08.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:18:08.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:18:08.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:08.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:08.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:08.471 [DEBUG] [Thread-159676] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:09.853 [DEBUG] [Thread-159678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:18:11.553 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:18:11.554 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:18:18.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:18:18.474 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:18:18.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:18:19.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 18, 12), 15.89, 33.48, 0.0, 8.15, 15.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:18:19.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:18:12
2025-09-29T15:18:19.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:18:19.305 [DEBUG] [Thread-159679] [transport.py] [_log()] starting thread (client mode): 0x2e3fb280
2025-09-29T15:18:19.306 [DEBUG] [Thread-159679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:19.325 [DEBUG] [Thread-159679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:18:19.325 [INFO] [Thread-159679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:18:19.328 [DEBUG] [Thread-159679] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:19.328 [DEBUG] [Thread-159679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:19.329 [DEBUG] [Thread-159679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:19.330 [DEBUG] [Thread-159679] [transport.py] [_log()] Compression: none
2025-09-29T15:18:19.330 [DEBUG] [Thread-159679] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:19.348 [DEBUG] [Thread-159679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:19.348 [DEBUG] [Thread-159679] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:19.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:18:19.349 [DEBUG] [Thread-159679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:18:19.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:19.351 [DEBUG] [Thread-159679] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:19.351 [DEBUG] [Thread-159679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:19.352 [DEBUG] [Thread-159679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:19.352 [DEBUG] [Thread-159679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:18:19.352 [DEBUG] [Thread-159679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:19.368 [INFO] [Thread-159679] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:19.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:20.164 [DEBUG] [Thread-159679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:20.164 [DEBUG] [Thread-159679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:20.165 [DEBUG] [Thread-159679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:18:20.205 [DEBUG] [Thread-159679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:20.206 [DEBUG] [Thread-159679] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:20.208 [DEBUG] [Thread-159679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:20.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:20.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:18:20.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:18:20.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:18:20.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:20.223 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:18:20.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:20.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:20.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:18:20.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.553887 -999.00  +16.00   3.40     38   +1.80 1 1 1 1 1   888    0 14.97 21.81 ----- 3.1 3.4 188.8 5.0 25.2 -29.3 24.3 -29.0 25.9 -28.3 27.2 -29.4
2025-09-29T15:18:20.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:18:20.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:18:20.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.553887
2025-09-29T15:18:20.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:18:20.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:18:20.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:18:20.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:18:20.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:18:20.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:18:12', tmtdew=15.89, humidity=33.48, cloud=0.0, wind=8.15, temperature=15.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:17:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:18:20.226 [DEBUG] [Thread-159679] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:20.313 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:18:20.322 [DEBUG] [Thread-159682] [transport.py] [_log()] starting thread (client mode): 0x2e3f9150
2025-09-29T15:18:20.323 [DEBUG] [Thread-159682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:20.337 [DEBUG] [Thread-159682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:18:20.337 [INFO] [Thread-159682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:20.345 [DEBUG] [Thread-159682] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:20.346 [DEBUG] [Thread-159682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:20.346 [DEBUG] [Thread-159682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:20.346 [DEBUG] [Thread-159682] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:20.346 [DEBUG] [Thread-159682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:20.346 [DEBUG] [Thread-159682] [transport.py] [_log()] Compression: none
2025-09-29T15:18:20.346 [DEBUG] [Thread-159682] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:20.402 [DEBUG] [Thread-159682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:20.402 [DEBUG] [Thread-159682] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:20.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:18:20.404 [DEBUG] [Thread-159682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:18:20.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:20.458 [DEBUG] [Thread-159682] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:20.458 [DEBUG] [Thread-159682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:20.458 [DEBUG] [Thread-159682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:20.458 [DEBUG] [Thread-159682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:18:20.458 [DEBUG] [Thread-159682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:20.478 [INFO] [Thread-159682] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:20.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:18:20.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:21.481 [DEBUG] [Thread-159682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:21.481 [DEBUG] [Thread-159682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:21.529 [DEBUG] [Thread-159682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:21.529 [DEBUG] [Thread-159682] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:21.538 [DEBUG] [Thread-159682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:21.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:21.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:18:21.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:18:21.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:21.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:21.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:21.573 [DEBUG] [Thread-159682] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:24.897 [DEBUG] [Thread-159684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:18:31.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:18:31.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:18:31.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:18:32.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 18, 12), 15.89, 33.48, 0.0, 8.15, 15.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:18:32.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:18:12
2025-09-29T15:18:32.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:18:32.404 [DEBUG] [Thread-159685] [transport.py] [_log()] starting thread (client mode): 0x2b94f8e0
2025-09-29T15:18:32.404 [DEBUG] [Thread-159685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:32.424 [DEBUG] [Thread-159685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:18:32.424 [INFO] [Thread-159685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:18:32.427 [DEBUG] [Thread-159685] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:32.427 [DEBUG] [Thread-159685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:18:32.427 [DEBUG] [Thread-159685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] Compression: none
2025-09-29T15:18:32.428 [DEBUG] [Thread-159685] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:32.436 [DEBUG] [Thread-159685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:32.437 [DEBUG] [Thread-159685] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:32.437 [DEBUG] [Thread-159685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:18:32.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:18:32.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:32.439 [DEBUG] [Thread-159685] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:32.439 [DEBUG] [Thread-159685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:32.439 [DEBUG] [Thread-159685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:32.439 [DEBUG] [Thread-159685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:18:32.439 [DEBUG] [Thread-159685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:32.463 [INFO] [Thread-159685] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:32.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:33.287 [DEBUG] [Thread-159685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:33.287 [DEBUG] [Thread-159685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:33.287 [DEBUG] [Thread-159685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:18:33.328 [DEBUG] [Thread-159685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:33.329 [DEBUG] [Thread-159685] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:33.332 [DEBUG] [Thread-159685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:33.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:33.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:18:33.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:18:33.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:18:33.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:33.354 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:18:33.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:33.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:33.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:18:33.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.553887 -999.00  +16.00   3.40     38   +1.80 1 1 1 1 1   888    0 14.97 21.81 ----- 3.1 3.4 188.8 5.0 25.2 -29.3 24.3 -29.0 25.9 -28.3 27.2 -29.4
2025-09-29T15:18:33.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:18:33.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:18:33.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.553887
2025-09-29T15:18:33.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:18:33.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:18:33.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:18:33.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:18:33.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:18:33.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:18:12', tmtdew=15.89, humidity=33.48, cloud=0.0, wind=8.15, temperature=15.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:17:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:18:33.357 [DEBUG] [Thread-159685] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:33.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:18:33.453 [DEBUG] [Thread-159688] [transport.py] [_log()] starting thread (client mode): 0x2e3749d0
2025-09-29T15:18:33.453 [DEBUG] [Thread-159688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:33.468 [DEBUG] [Thread-159688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:18:33.468 [INFO] [Thread-159688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:33.476 [DEBUG] [Thread-159688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] Compression: none
2025-09-29T15:18:33.477 [DEBUG] [Thread-159688] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:33.534 [DEBUG] [Thread-159688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:33.534 [DEBUG] [Thread-159688] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:33.535 [DEBUG] [Thread-159688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:18:33.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:18:33.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:33.590 [DEBUG] [Thread-159688] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:33.590 [DEBUG] [Thread-159688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:33.590 [DEBUG] [Thread-159688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:33.590 [DEBUG] [Thread-159688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:18:33.590 [DEBUG] [Thread-159688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:33.609 [INFO] [Thread-159688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:33.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:18:33.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:34.598 [DEBUG] [Thread-159688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:34.598 [DEBUG] [Thread-159688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:34.645 [DEBUG] [Thread-159688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:34.645 [DEBUG] [Thread-159688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:34.654 [DEBUG] [Thread-159688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:34.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:34.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:18:34.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:18:34.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:34.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:34.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:34.689 [DEBUG] [Thread-159688] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:39.943 [DEBUG] [Thread-159690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:18:44.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:18:44.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:18:44.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:18:45.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 18, 12), 15.89, 33.48, 0.0, 8.15, 15.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:18:45.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:18:12
2025-09-29T15:18:45.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:18:45.597 [DEBUG] [Thread-159691] [transport.py] [_log()] starting thread (client mode): 0x2b96bcd0
2025-09-29T15:18:45.597 [DEBUG] [Thread-159691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:45.619 [DEBUG] [Thread-159691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:18:45.619 [INFO] [Thread-159691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:45.622 [DEBUG] [Thread-159691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:45.623 [DEBUG] [Thread-159691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:45.623 [DEBUG] [Thread-159691] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:45.623 [DEBUG] [Thread-159691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:45.623 [DEBUG] [Thread-159691] [transport.py] [_log()] Compression: none
2025-09-29T15:18:45.623 [DEBUG] [Thread-159691] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:45.637 [DEBUG] [Thread-159691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:45.637 [DEBUG] [Thread-159691] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:45.637 [DEBUG] [Thread-159691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:18:45.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:18:45.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:45.638 [DEBUG] [Thread-159691] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:45.638 [DEBUG] [Thread-159691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:45.638 [DEBUG] [Thread-159691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:45.639 [DEBUG] [Thread-159691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:18:45.639 [DEBUG] [Thread-159691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:45.666 [INFO] [Thread-159691] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:45.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:46.247 [DEBUG] [Thread-159693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:18:46.303 [DEBUG] [Thread-159691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:46.303 [DEBUG] [Thread-159691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:46.304 [DEBUG] [Thread-159691] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:18:46.345 [DEBUG] [Thread-159691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:46.345 [DEBUG] [Thread-159691] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:46.347 [DEBUG] [Thread-159691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:46.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:46.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:18:46.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:18:46.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:18:46.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:46.365 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:18:46.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.554234 -999.00  +16.10   2.15     38   +1.90 1 1 1 1 1   888    0 14.93 23.24 ----- 2.6 2.1 255.6 4.2 25.3 -29.7 24.4 -28.8 26.1 -28.2 27.5 -29.5
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.554234
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:18:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:18:12', tmtdew=15.89, humidity=33.48, cloud=0.0, wind=8.15, temperature=15.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:18:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:18:46.367 [DEBUG] [Thread-159691] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:46.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:18:46.465 [DEBUG] [Thread-159695] [transport.py] [_log()] starting thread (client mode): 0x2e3fadd0
2025-09-29T15:18:46.465 [DEBUG] [Thread-159695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:46.480 [DEBUG] [Thread-159695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:18:46.480 [INFO] [Thread-159695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] Compression: none
2025-09-29T15:18:46.488 [DEBUG] [Thread-159695] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:46.544 [DEBUG] [Thread-159695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:46.545 [DEBUG] [Thread-159695] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:46.545 [DEBUG] [Thread-159695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:18:46.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:18:46.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:46.602 [DEBUG] [Thread-159695] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:46.602 [DEBUG] [Thread-159695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:46.602 [DEBUG] [Thread-159695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:46.602 [DEBUG] [Thread-159695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:18:46.602 [DEBUG] [Thread-159695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:46.620 [INFO] [Thread-159695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:46.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:18:46.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:47.606 [DEBUG] [Thread-159695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:47.607 [DEBUG] [Thread-159695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:47.655 [DEBUG] [Thread-159695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:47.655 [DEBUG] [Thread-159695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:47.663 [DEBUG] [Thread-159695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:47.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:47.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:18:47.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:18:47.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:47.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:47.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:47.694 [DEBUG] [Thread-159695] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:54.977 [DEBUG] [Thread-159697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:18:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:18:57.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:18:57.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:18:58.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 18, 44), 15.92, 33.91, 0.0, 13.01, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:18:58.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:18:44
2025-09-29T15:18:58.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:18:58.513 [DEBUG] [Thread-159698] [transport.py] [_log()] starting thread (client mode): 0x2b969960
2025-09-29T15:18:58.513 [DEBUG] [Thread-159698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:58.535 [DEBUG] [Thread-159698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:18:58.535 [INFO] [Thread-159698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] Compression: none
2025-09-29T15:18:58.538 [DEBUG] [Thread-159698] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:58.546 [DEBUG] [Thread-159698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:58.547 [DEBUG] [Thread-159698] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:58.547 [DEBUG] [Thread-159698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:18:58.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:18:58.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:58.549 [DEBUG] [Thread-159698] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:58.549 [DEBUG] [Thread-159698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:58.549 [DEBUG] [Thread-159698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:58.549 [DEBUG] [Thread-159698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:18:58.550 [DEBUG] [Thread-159698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:58.574 [INFO] [Thread-159698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:58.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:18:59.344 [DEBUG] [Thread-159698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:18:59.344 [DEBUG] [Thread-159698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:18:59.345 [DEBUG] [Thread-159698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:18:59.385 [DEBUG] [Thread-159698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:18:59.386 [DEBUG] [Thread-159698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:18:59.393 [DEBUG] [Thread-159698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:18:59.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:18:59.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:18:59.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:18:59.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:18:59.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:18:59.409 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:18:59.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:18:59.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:18:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:18:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.554234 -999.00  +16.10   2.15     38   +1.90 1 1 1 1 1   888    0 14.93 23.24 ----- 2.6 2.1 255.6 4.2 25.3 -29.7 24.4 -28.8 26.1 -28.2 27.5 -29.5
2025-09-29T15:18:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:18:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:18:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.554234
2025-09-29T15:18:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:18:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:18:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:18:59.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:18:59.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:18:59.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:18:44', tmtdew=15.92, humidity=33.91, cloud=0.0, wind=13.01, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:18:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:18:59.412 [DEBUG] [Thread-159698] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:18:59.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:18:59.514 [DEBUG] [Thread-159701] [transport.py] [_log()] starting thread (client mode): 0x2b9cc190
2025-09-29T15:18:59.514 [DEBUG] [Thread-159701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:18:59.529 [DEBUG] [Thread-159701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:18:59.529 [INFO] [Thread-159701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:18:59.536 [DEBUG] [Thread-159701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:18:59.536 [DEBUG] [Thread-159701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] client lang: <none>
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] server lang: <none>
2025-09-29T15:18:59.537 [DEBUG] [Thread-159701] [transport.py] [_log()] kex follows: False
2025-09-29T15:18:59.538 [DEBUG] [Thread-159701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:18:59.538 [DEBUG] [Thread-159701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:18:59.538 [DEBUG] [Thread-159701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:18:59.538 [DEBUG] [Thread-159701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:18:59.538 [DEBUG] [Thread-159701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:18:59.538 [DEBUG] [Thread-159701] [transport.py] [_log()] Compression: none
2025-09-29T15:18:59.538 [DEBUG] [Thread-159701] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:18:59.594 [DEBUG] [Thread-159701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:18:59.595 [DEBUG] [Thread-159701] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:18:59.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:18:59.596 [DEBUG] [Thread-159701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:18:59.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:18:59.650 [DEBUG] [Thread-159701] [transport.py] [_log()] userauth is OK
2025-09-29T15:18:59.650 [DEBUG] [Thread-159701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:18:59.650 [DEBUG] [Thread-159701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:18:59.650 [DEBUG] [Thread-159701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:18:59.650 [DEBUG] [Thread-159701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:18:59.669 [INFO] [Thread-159701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:18:59.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:18:59.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:19:00.623 [DEBUG] [Thread-159701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:19:00.623 [DEBUG] [Thread-159701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:19:00.672 [DEBUG] [Thread-159701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:19:00.673 [DEBUG] [Thread-159701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:19:00.685 [DEBUG] [Thread-159701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:19:00.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:19:00.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:19:00.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:19:00.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:19:00.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:19:00.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:19:00.726 [DEBUG] [Thread-159701] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:19:10.024 [DEBUG] [Thread-159703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:19:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:19:10.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:19:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:19:11.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 18, 44), 15.92, 33.91, 0.0, 13.01, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:19:11.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:18:44
2025-09-29T15:19:11.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:19:11.549 [DEBUG] [Thread-159704] [transport.py] [_log()] starting thread (client mode): 0x2e374b80
2025-09-29T15:19:11.549 [DEBUG] [Thread-159704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:19:11.568 [DEBUG] [Thread-159704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:19:11.568 [INFO] [Thread-159704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] client lang: <none>
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] server lang: <none>
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] kex follows: False
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] Compression: none
2025-09-29T15:19:11.570 [DEBUG] [Thread-159704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:19:11.577 [DEBUG] [Thread-159704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:19:11.577 [DEBUG] [Thread-159704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:19:11.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:19:11.578 [DEBUG] [Thread-159704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:19:11.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:19:11.578 [DEBUG] [Thread-159704] [transport.py] [_log()] userauth is OK
2025-09-29T15:19:11.578 [DEBUG] [Thread-159704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:19:11.578 [DEBUG] [Thread-159704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:19:11.578 [DEBUG] [Thread-159704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:19:11.578 [DEBUG] [Thread-159704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:19:11.590 [INFO] [Thread-159704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:19:11.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:19:11.693 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:19:11.694 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:19:12.217 [DEBUG] [Thread-159704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:19:12.217 [DEBUG] [Thread-159704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:19:12.218 [DEBUG] [Thread-159704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:19:12.258 [DEBUG] [Thread-159704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:19:12.259 [DEBUG] [Thread-159704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:19:12.261 [DEBUG] [Thread-159704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:19:12.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:19:12.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:19:12.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:19:12.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:19:12.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:19:12.284 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:19:12.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:19:12.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:19:12.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:19:12.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.554929 -999.00  +16.50   3.56     37   +2.10 1 1 1 1 1   888    0 14.96 20.73 ----- 4.4 3.6 155.4 15.5 25.1 -30.8 24.2 -30.4 25.9 -30.1 27.2 -29.5
2025-09-29T15:19:12.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:19:12.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:19:12.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.554929
2025-09-29T15:19:12.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:19:12.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:19:12.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:19:12.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:19:12.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:19:12.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:18:44', tmtdew=15.92, humidity=33.91, cloud=0.0, wind=13.01, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:19:05.866', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:19:12.286 [DEBUG] [Thread-159704] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:19:12.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:19:25.074 [DEBUG] [Thread-159707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:19:40.108 [DEBUG] [Thread-159708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:19:46.289 [DEBUG] [Thread-159709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:19:55.141 [DEBUG] [Thread-159710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:20:10.168 [DEBUG] [Thread-159711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:20:11.833 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:20:11.835 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:20:25.196 [DEBUG] [Thread-159712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:20:40.223 [DEBUG] [Thread-159713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:20:46.321 [DEBUG] [Thread-159714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:20:55.251 [DEBUG] [Thread-159715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:21:10.282 [DEBUG] [Thread-159716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:21:11.973 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:21:11.974 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:21:25.312 [DEBUG] [Thread-159717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:21:26.203 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T15:21:36.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:21:36.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:21:36.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:21:36.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 21, 24), 15.88, 33.69, 0.0, 9.72, 15.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:21:36.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:21:24
2025-09-29T15:21:36.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:21:37.080 [DEBUG] [Thread-159718] [transport.py] [_log()] starting thread (client mode): 0x30ddfdc0
2025-09-29T15:21:37.080 [DEBUG] [Thread-159718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:21:37.100 [DEBUG] [Thread-159718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:21:37.100 [INFO] [Thread-159718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:21:37.102 [DEBUG] [Thread-159718] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] client lang: <none>
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] server lang: <none>
2025-09-29T15:21:37.103 [DEBUG] [Thread-159718] [transport.py] [_log()] kex follows: False
2025-09-29T15:21:37.104 [DEBUG] [Thread-159718] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:21:37.104 [DEBUG] [Thread-159718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:21:37.104 [DEBUG] [Thread-159718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:21:37.104 [DEBUG] [Thread-159718] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:21:37.104 [DEBUG] [Thread-159718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:21:37.104 [DEBUG] [Thread-159718] [transport.py] [_log()] Compression: none
2025-09-29T15:21:37.104 [DEBUG] [Thread-159718] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:21:37.122 [DEBUG] [Thread-159718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:21:37.123 [DEBUG] [Thread-159718] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:21:37.123 [DEBUG] [Thread-159718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:21:37.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:21:37.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:21:37.126 [DEBUG] [Thread-159718] [transport.py] [_log()] userauth is OK
2025-09-29T15:21:37.126 [DEBUG] [Thread-159718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:21:37.127 [DEBUG] [Thread-159718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:21:37.127 [DEBUG] [Thread-159718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:21:37.127 [DEBUG] [Thread-159718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:21:37.150 [INFO] [Thread-159718] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:21:37.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:21:37.753 [DEBUG] [Thread-159718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:21:37.754 [DEBUG] [Thread-159718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:21:37.754 [DEBUG] [Thread-159718] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:21:37.794 [DEBUG] [Thread-159718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:21:37.795 [DEBUG] [Thread-159718] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:21:37.797 [DEBUG] [Thread-159718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:21:37.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:21:37.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:21:37.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:21:37.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:21:37.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:21:37.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:21:37.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:21:37.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:21:37.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:21:37.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.556317 -999.00  +16.70   6.90     37   +2.10 1 1 1 1 1   888    0 14.77 20.46 ----- 6.2 6.9 195.6 8.0 25.3 -29.9 24.2 -29.9 26.2 -28.8 27.5 -30.3
2025-09-29T15:21:37.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:21:37.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:21:37.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.556317
2025-09-29T15:21:37.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:21:37.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:21:37.824 [DEBUG] [Thread-159718] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:21:37.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:21:37.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:21:37.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:21:37.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:21:24', tmtdew=15.88, humidity=33.69, cloud=0.0, wind=9.72, temperature=15.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:21:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:21:37.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:21:37.921 [DEBUG] [Thread-159721] [transport.py] [_log()] starting thread (client mode): 0x2b9694b0
2025-09-29T15:21:37.921 [DEBUG] [Thread-159721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:21:37.942 [DEBUG] [Thread-159721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:21:37.943 [INFO] [Thread-159721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] client lang: <none>
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] server lang: <none>
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] kex follows: False
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:21:37.951 [DEBUG] [Thread-159721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:21:37.952 [DEBUG] [Thread-159721] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:21:37.952 [DEBUG] [Thread-159721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:21:37.952 [DEBUG] [Thread-159721] [transport.py] [_log()] Compression: none
2025-09-29T15:21:37.952 [DEBUG] [Thread-159721] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:21:38.010 [DEBUG] [Thread-159721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:21:38.010 [DEBUG] [Thread-159721] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:21:38.011 [DEBUG] [Thread-159721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:21:38.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:21:38.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:21:38.066 [DEBUG] [Thread-159721] [transport.py] [_log()] userauth is OK
2025-09-29T15:21:38.066 [DEBUG] [Thread-159721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:21:38.066 [DEBUG] [Thread-159721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:21:38.066 [DEBUG] [Thread-159721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:21:38.066 [DEBUG] [Thread-159721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:21:38.085 [INFO] [Thread-159721] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:21:38.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:21:38.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:21:39.081 [DEBUG] [Thread-159721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:21:39.081 [DEBUG] [Thread-159721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:21:39.129 [DEBUG] [Thread-159721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:21:39.129 [DEBUG] [Thread-159721] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:21:39.138 [DEBUG] [Thread-159721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:21:39.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:21:39.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:21:39.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:21:39.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:21:39.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:21:39.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:21:39.172 [DEBUG] [Thread-159721] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:21:40.340 [DEBUG] [Thread-159723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:21:46.352 [DEBUG] [Thread-159724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:21:49.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:21:49.175 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:21:49.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:21:49.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 21, 24), 15.88, 33.69, 0.0, 9.72, 15.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:21:49.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:21:24
2025-09-29T15:21:49.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:21:50.039 [DEBUG] [Thread-159725] [transport.py] [_log()] starting thread (client mode): 0x2e3f8940
2025-09-29T15:21:50.039 [DEBUG] [Thread-159725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:21:50.059 [DEBUG] [Thread-159725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:21:50.059 [INFO] [Thread-159725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:21:50.060 [DEBUG] [Thread-159725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] client lang: <none>
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] server lang: <none>
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] kex follows: False
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:21:50.061 [DEBUG] [Thread-159725] [transport.py] [_log()] Compression: none
2025-09-29T15:21:50.062 [DEBUG] [Thread-159725] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:21:50.071 [DEBUG] [Thread-159725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:21:50.072 [DEBUG] [Thread-159725] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:21:50.073 [DEBUG] [Thread-159725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:21:50.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:21:50.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:21:50.075 [DEBUG] [Thread-159725] [transport.py] [_log()] userauth is OK
2025-09-29T15:21:50.075 [DEBUG] [Thread-159725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:21:50.075 [DEBUG] [Thread-159725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:21:50.076 [DEBUG] [Thread-159725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:21:50.076 [DEBUG] [Thread-159725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:21:50.112 [INFO] [Thread-159725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:21:50.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:21:50.734 [DEBUG] [Thread-159725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:21:50.735 [DEBUG] [Thread-159725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:21:50.735 [DEBUG] [Thread-159725] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:21:50.776 [DEBUG] [Thread-159725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:21:50.776 [DEBUG] [Thread-159725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:21:50.778 [DEBUG] [Thread-159725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:21:50.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:21:50.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:21:50.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:21:50.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:21:50.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:21:50.796 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:21:50.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.556317 -999.00  +16.70   6.90     37   +2.10 1 1 1 1 1   888    0 14.77 20.46 ----- 6.2 6.9 195.6 8.0 25.3 -29.9 24.2 -29.9 26.2 -28.8 27.5 -30.3
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.556317
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:21:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:21:24', tmtdew=15.88, humidity=33.69, cloud=0.0, wind=9.72, temperature=15.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:21:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:21:50.797 [DEBUG] [Thread-159725] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:21:50.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:21:50.879 [DEBUG] [Thread-159728] [transport.py] [_log()] starting thread (client mode): 0x2b91cd00
2025-09-29T15:21:50.880 [DEBUG] [Thread-159728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:21:50.895 [DEBUG] [Thread-159728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:21:50.895 [INFO] [Thread-159728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:21:50.902 [DEBUG] [Thread-159728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:21:50.902 [DEBUG] [Thread-159728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:21:50.902 [DEBUG] [Thread-159728] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:21:50.902 [DEBUG] [Thread-159728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] client lang: <none>
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] server lang: <none>
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] kex follows: False
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] Compression: none
2025-09-29T15:21:50.903 [DEBUG] [Thread-159728] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:21:50.962 [DEBUG] [Thread-159728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:21:50.963 [DEBUG] [Thread-159728] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:21:50.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:21:50.964 [DEBUG] [Thread-159728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:21:50.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:21:51.018 [DEBUG] [Thread-159728] [transport.py] [_log()] userauth is OK
2025-09-29T15:21:51.018 [DEBUG] [Thread-159728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:21:51.019 [DEBUG] [Thread-159728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:21:51.019 [DEBUG] [Thread-159728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:21:51.019 [DEBUG] [Thread-159728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:21:51.038 [INFO] [Thread-159728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:21:51.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:21:51.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:21:52.039 [DEBUG] [Thread-159728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:21:52.039 [DEBUG] [Thread-159728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:21:52.087 [DEBUG] [Thread-159728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:21:52.087 [DEBUG] [Thread-159728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:21:52.096 [DEBUG] [Thread-159728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:21:52.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:21:52.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:21:52.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:21:52.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:21:52.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:21:52.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:21:52.134 [DEBUG] [Thread-159728] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:21:55.394 [DEBUG] [Thread-159730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:22:02.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:22:02.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:22:02.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:22:02.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 21, 56), 15.69, 34.39, 0.0, 10.69, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:22:02.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:21:56
2025-09-29T15:22:02.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:22:02.990 [DEBUG] [Thread-159731] [transport.py] [_log()] starting thread (client mode): 0x2b969f90
2025-09-29T15:22:02.990 [DEBUG] [Thread-159731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:03.017 [DEBUG] [Thread-159731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:22:03.017 [INFO] [Thread-159731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:22:03.018 [DEBUG] [Thread-159731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:03.018 [DEBUG] [Thread-159731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:03.019 [DEBUG] [Thread-159731] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:03.020 [DEBUG] [Thread-159731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:03.020 [DEBUG] [Thread-159731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:03.020 [DEBUG] [Thread-159731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:03.020 [DEBUG] [Thread-159731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:03.020 [DEBUG] [Thread-159731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:03.020 [DEBUG] [Thread-159731] [transport.py] [_log()] Compression: none
2025-09-29T15:22:03.020 [DEBUG] [Thread-159731] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:03.037 [DEBUG] [Thread-159731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:03.037 [DEBUG] [Thread-159731] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:03.038 [DEBUG] [Thread-159731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:22:03.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:22:03.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:03.040 [DEBUG] [Thread-159731] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:03.040 [DEBUG] [Thread-159731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:03.040 [DEBUG] [Thread-159731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:03.040 [DEBUG] [Thread-159731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:22:03.040 [DEBUG] [Thread-159731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:03.058 [INFO] [Thread-159731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:03.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:03.691 [DEBUG] [Thread-159731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:03.692 [DEBUG] [Thread-159731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:03.692 [DEBUG] [Thread-159731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:22:03.732 [DEBUG] [Thread-159731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:03.732 [DEBUG] [Thread-159731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:03.735 [DEBUG] [Thread-159731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:03.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:03.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:22:03.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:22:03.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:22:03.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:03.759 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:22:03.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:03.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:03.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:22:03.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.556665 -999.00  +16.70  13.31     37   +2.00 1 1 1 1 1   888    0 14.78 19.56 ----- 13.7 13.3 148.0 19.6 25.3 -29.9 24.3 -30.0 26.1 -30.0 27.4 -31.1
2025-09-29T15:22:03.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:22:03.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:22:03.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.556665
2025-09-29T15:22:03.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:22:03.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:22:03.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:22:03.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:22:03.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:22:03.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:21:56', tmtdew=15.69, humidity=34.39, cloud=0.0, wind=10.69, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:21:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:22:03.761 [DEBUG] [Thread-159731] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:03.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:22:03.866 [DEBUG] [Thread-159734] [transport.py] [_log()] starting thread (client mode): 0x2b96b220
2025-09-29T15:22:03.866 [DEBUG] [Thread-159734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:03.882 [DEBUG] [Thread-159734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:22:03.882 [INFO] [Thread-159734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:22:03.889 [DEBUG] [Thread-159734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:03.890 [DEBUG] [Thread-159734] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:03.891 [DEBUG] [Thread-159734] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:03.891 [DEBUG] [Thread-159734] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:03.891 [DEBUG] [Thread-159734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:03.891 [DEBUG] [Thread-159734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:03.891 [DEBUG] [Thread-159734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:03.891 [DEBUG] [Thread-159734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:03.891 [DEBUG] [Thread-159734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:03.891 [DEBUG] [Thread-159734] [transport.py] [_log()] Compression: none
2025-09-29T15:22:03.892 [DEBUG] [Thread-159734] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:03.950 [DEBUG] [Thread-159734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:03.951 [DEBUG] [Thread-159734] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:03.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:22:03.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:03.952 [DEBUG] [Thread-159734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:22:04.006 [DEBUG] [Thread-159734] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:04.006 [DEBUG] [Thread-159734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:04.006 [DEBUG] [Thread-159734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:04.007 [DEBUG] [Thread-159734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:22:04.007 [DEBUG] [Thread-159734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:04.028 [INFO] [Thread-159734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:04.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:22:04.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:05.074 [DEBUG] [Thread-159734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:05.075 [DEBUG] [Thread-159734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:05.122 [DEBUG] [Thread-159734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:05.122 [DEBUG] [Thread-159734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:05.131 [DEBUG] [Thread-159734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:05.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:05.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:22:05.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:22:05.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:05.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:05.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:05.165 [DEBUG] [Thread-159734] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:10.419 [DEBUG] [Thread-159736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:22:12.116 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:22:12.117 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:22:15.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:22:15.163 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:22:15.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:22:15.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 21, 56), 15.69, 34.39, 0.0, 10.69, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:22:15.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:21:56
2025-09-29T15:22:15.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:22:16.018 [DEBUG] [Thread-159737] [transport.py] [_log()] starting thread (client mode): 0x2e375db0
2025-09-29T15:22:16.018 [DEBUG] [Thread-159737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:16.037 [DEBUG] [Thread-159737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:22:16.037 [INFO] [Thread-159737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] Compression: none
2025-09-29T15:22:16.041 [DEBUG] [Thread-159737] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:16.057 [DEBUG] [Thread-159737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:16.058 [DEBUG] [Thread-159737] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:16.058 [DEBUG] [Thread-159737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:22:16.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:22:16.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:16.060 [DEBUG] [Thread-159737] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:16.060 [DEBUG] [Thread-159737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:16.061 [DEBUG] [Thread-159737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:16.061 [DEBUG] [Thread-159737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:22:16.061 [DEBUG] [Thread-159737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:16.079 [INFO] [Thread-159737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:16.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:16.711 [DEBUG] [Thread-159737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:16.711 [DEBUG] [Thread-159737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:16.711 [DEBUG] [Thread-159737] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:22:16.752 [DEBUG] [Thread-159737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:16.752 [DEBUG] [Thread-159737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:16.755 [DEBUG] [Thread-159737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:16.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:16.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:22:16.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:22:16.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:22:16.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:16.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:22:16.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:16.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:16.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:22:16.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.556665 -999.00  +16.70  13.31     37   +2.00 1 1 1 1 1   888    0 14.78 19.56 ----- 13.7 13.3 148.0 19.6 25.3 -29.9 24.3 -30.0 26.1 -30.0 27.4 -31.1
2025-09-29T15:22:16.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:22:16.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:22:16.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.556665
2025-09-29T15:22:16.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:22:16.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:22:16.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:22:16.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:22:16.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:22:16.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:21:56', tmtdew=15.69, humidity=34.39, cloud=0.0, wind=10.69, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:21:35.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:22:16.780 [DEBUG] [Thread-159737] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:16.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:22:16.874 [DEBUG] [Thread-159740] [transport.py] [_log()] starting thread (client mode): 0x2e3753f0
2025-09-29T15:22:16.875 [DEBUG] [Thread-159740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:16.893 [DEBUG] [Thread-159740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:22:16.893 [INFO] [Thread-159740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:22:16.900 [DEBUG] [Thread-159740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:16.900 [DEBUG] [Thread-159740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:22:16.900 [DEBUG] [Thread-159740] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:16.900 [DEBUG] [Thread-159740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:16.900 [DEBUG] [Thread-159740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:16.900 [DEBUG] [Thread-159740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:16.900 [DEBUG] [Thread-159740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] Compression: none
2025-09-29T15:22:16.901 [DEBUG] [Thread-159740] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:16.957 [DEBUG] [Thread-159740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:16.958 [DEBUG] [Thread-159740] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:16.958 [DEBUG] [Thread-159740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:22:16.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:22:16.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:17.014 [DEBUG] [Thread-159740] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:17.014 [DEBUG] [Thread-159740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:17.014 [DEBUG] [Thread-159740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:17.014 [DEBUG] [Thread-159740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:22:17.014 [DEBUG] [Thread-159740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:17.032 [INFO] [Thread-159740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:17.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:22:17.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:18.021 [DEBUG] [Thread-159740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:18.021 [DEBUG] [Thread-159740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:18.069 [DEBUG] [Thread-159740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:18.069 [DEBUG] [Thread-159740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:18.078 [DEBUG] [Thread-159740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:18.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:18.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:22:18.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:22:18.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:18.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:18.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:18.112 [DEBUG] [Thread-159740] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:25.462 [DEBUG] [Thread-159742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:22:28.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:22:28.115 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:22:28.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:22:28.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 21, 56), 15.69, 34.39, 0.0, 10.69, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:22:28.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:21:56
2025-09-29T15:22:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:22:29.016 [DEBUG] [Thread-159743] [transport.py] [_log()] starting thread (client mode): 0x2b91e530
2025-09-29T15:22:29.017 [DEBUG] [Thread-159743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:29.033 [DEBUG] [Thread-159743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:22:29.033 [INFO] [Thread-159743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:29.034 [DEBUG] [Thread-159743] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:29.035 [DEBUG] [Thread-159743] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:29.035 [DEBUG] [Thread-159743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:29.035 [DEBUG] [Thread-159743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:29.035 [DEBUG] [Thread-159743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:29.035 [DEBUG] [Thread-159743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:29.035 [DEBUG] [Thread-159743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:29.035 [DEBUG] [Thread-159743] [transport.py] [_log()] Compression: none
2025-09-29T15:22:29.035 [DEBUG] [Thread-159743] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:29.043 [DEBUG] [Thread-159743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:29.043 [DEBUG] [Thread-159743] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:29.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:22:29.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:29.044 [DEBUG] [Thread-159743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:22:29.044 [DEBUG] [Thread-159743] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:29.044 [DEBUG] [Thread-159743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:29.044 [DEBUG] [Thread-159743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:29.044 [DEBUG] [Thread-159743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:22:29.044 [DEBUG] [Thread-159743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:29.056 [INFO] [Thread-159743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:29.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:29.646 [DEBUG] [Thread-159743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:29.646 [DEBUG] [Thread-159743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:29.646 [DEBUG] [Thread-159743] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:22:29.687 [DEBUG] [Thread-159743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:29.687 [DEBUG] [Thread-159743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:29.689 [DEBUG] [Thread-159743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:29.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:29.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:22:29.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:22:29.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:22:29.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:29.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:22:29.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.557012 -999.00  +16.50  11.20     37   +1.90 1 1 1 1 1   888    0 15.11 21.30 ----- 9.5 11.2 162.2 15.2 25.1 -30.8 24.2 -30.8 26.0 -30.5 27.3 -31.6
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.557012
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:22:29.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:21:56', tmtdew=15.69, humidity=34.39, cloud=0.0, wind=10.69, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:22:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:22:29.707 [DEBUG] [Thread-159743] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:29.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:22:29.791 [DEBUG] [Thread-159746] [transport.py] [_log()] starting thread (client mode): 0x2b91ddb0
2025-09-29T15:22:29.791 [DEBUG] [Thread-159746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:29.805 [DEBUG] [Thread-159746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:22:29.806 [INFO] [Thread-159746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:29.813 [DEBUG] [Thread-159746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:29.814 [DEBUG] [Thread-159746] [transport.py] [_log()] Compression: none
2025-09-29T15:22:29.814 [DEBUG] [Thread-159746] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:29.869 [DEBUG] [Thread-159746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:29.869 [DEBUG] [Thread-159746] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:29.869 [DEBUG] [Thread-159746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:22:29.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:22:29.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:29.926 [DEBUG] [Thread-159746] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:29.926 [DEBUG] [Thread-159746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:29.926 [DEBUG] [Thread-159746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:29.926 [DEBUG] [Thread-159746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:22:29.926 [DEBUG] [Thread-159746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:29.942 [INFO] [Thread-159746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:29.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:22:29.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:30.900 [DEBUG] [Thread-159746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:30.900 [DEBUG] [Thread-159746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:30.948 [DEBUG] [Thread-159746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:30.948 [DEBUG] [Thread-159746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:30.956 [DEBUG] [Thread-159746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:30.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:30.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:22:30.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:22:30.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:30.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:30.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:30.989 [DEBUG] [Thread-159746] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:40.491 [DEBUG] [Thread-159748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:22:40.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:22:40.990 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:22:40.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:22:41.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 22, 27), 15.74, 34.29, 0.0, 12.74, 15.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:22:41.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:22:27
2025-09-29T15:22:41.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:22:41.832 [DEBUG] [Thread-159749] [transport.py] [_log()] starting thread (client mode): 0x2b91e770
2025-09-29T15:22:41.833 [DEBUG] [Thread-159749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:41.854 [DEBUG] [Thread-159749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:22:41.854 [INFO] [Thread-159749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:22:41.857 [DEBUG] [Thread-159749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:41.857 [DEBUG] [Thread-159749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:22:41.857 [DEBUG] [Thread-159749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:41.857 [DEBUG] [Thread-159749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:41.857 [DEBUG] [Thread-159749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:41.857 [DEBUG] [Thread-159749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] Compression: none
2025-09-29T15:22:41.858 [DEBUG] [Thread-159749] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:41.877 [DEBUG] [Thread-159749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:41.877 [DEBUG] [Thread-159749] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:41.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:22:41.878 [DEBUG] [Thread-159749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:22:41.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:41.880 [DEBUG] [Thread-159749] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:41.880 [DEBUG] [Thread-159749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:41.881 [DEBUG] [Thread-159749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:41.881 [DEBUG] [Thread-159749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:22:41.881 [DEBUG] [Thread-159749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:41.904 [INFO] [Thread-159749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:41.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:42.531 [DEBUG] [Thread-159749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:42.532 [DEBUG] [Thread-159749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:42.532 [DEBUG] [Thread-159749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:22:42.572 [DEBUG] [Thread-159749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:42.573 [DEBUG] [Thread-159749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:42.576 [DEBUG] [Thread-159749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:42.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:42.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:22:42.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:22:42.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:22:42.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:42.598 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:22:42.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:42.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:22:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.557012 -999.00  +16.50  11.20     37   +1.90 1 1 1 1 1   888    0 15.11 21.30 ----- 9.5 11.2 162.2 15.2 25.1 -30.8 24.2 -30.8 26.0 -30.5 27.3 -31.6
2025-09-29T15:22:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:22:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:22:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.557012
2025-09-29T15:22:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:22:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:22:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:22:42.600 [DEBUG] [Thread-159749] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:42.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:22:42.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:22:42.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:22:27', tmtdew=15.74, humidity=34.29, cloud=0.0, wind=12.74, temperature=15.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:22:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:22:42.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:22:42.696 [DEBUG] [Thread-159752] [transport.py] [_log()] starting thread (client mode): 0x2b91dd50
2025-09-29T15:22:42.696 [DEBUG] [Thread-159752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:42.713 [DEBUG] [Thread-159752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:22:42.713 [INFO] [Thread-159752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:42.721 [DEBUG] [Thread-159752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:42.722 [DEBUG] [Thread-159752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:42.722 [DEBUG] [Thread-159752] [transport.py] [_log()] Compression: none
2025-09-29T15:22:42.722 [DEBUG] [Thread-159752] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:42.777 [DEBUG] [Thread-159752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:42.778 [DEBUG] [Thread-159752] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:42.778 [DEBUG] [Thread-159752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:22:42.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:22:42.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:42.834 [DEBUG] [Thread-159752] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:42.835 [DEBUG] [Thread-159752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:42.835 [DEBUG] [Thread-159752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:42.835 [DEBUG] [Thread-159752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:22:42.835 [DEBUG] [Thread-159752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:42.859 [INFO] [Thread-159752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:42.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:22:42.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:43.836 [DEBUG] [Thread-159752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:43.836 [DEBUG] [Thread-159752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:43.884 [DEBUG] [Thread-159752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:43.885 [DEBUG] [Thread-159752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:43.894 [DEBUG] [Thread-159752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:43.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:43.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:22:43.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:22:43.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:43.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:43.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:43.929 [DEBUG] [Thread-159752] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:46.392 [DEBUG] [Thread-159754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:22:53.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:22:53.932 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:22:53.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:22:54.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 22, 27), 15.74, 34.29, 0.0, 12.74, 15.52, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:22:54.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:22:27
2025-09-29T15:22:54.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:22:54.795 [DEBUG] [Thread-159755] [transport.py] [_log()] starting thread (client mode): 0x2b91f6a0
2025-09-29T15:22:54.795 [DEBUG] [Thread-159755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:54.815 [DEBUG] [Thread-159755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:22:54.815 [INFO] [Thread-159755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:22:54.818 [DEBUG] [Thread-159755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:54.819 [DEBUG] [Thread-159755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:54.820 [DEBUG] [Thread-159755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:54.820 [DEBUG] [Thread-159755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:54.820 [DEBUG] [Thread-159755] [transport.py] [_log()] Compression: none
2025-09-29T15:22:54.820 [DEBUG] [Thread-159755] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:54.838 [DEBUG] [Thread-159755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:54.838 [DEBUG] [Thread-159755] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:54.839 [DEBUG] [Thread-159755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:22:54.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:22:54.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:54.881 [DEBUG] [Thread-159755] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:54.881 [DEBUG] [Thread-159755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:54.881 [DEBUG] [Thread-159755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:54.881 [DEBUG] [Thread-159755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:22:54.881 [DEBUG] [Thread-159755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:54.904 [INFO] [Thread-159755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:54.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:55.532 [DEBUG] [Thread-159757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:22:55.541 [DEBUG] [Thread-159755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:55.542 [DEBUG] [Thread-159755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:55.542 [DEBUG] [Thread-159755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:22:55.582 [DEBUG] [Thread-159755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:55.582 [DEBUG] [Thread-159755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:55.585 [DEBUG] [Thread-159755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:55.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:55.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:22:55.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:22:55.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:22:55.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:55.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:22:55.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:55.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:22:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.557012 -999.00  +16.50  11.20     37   +1.90 1 1 1 1 1   888    0 15.11 21.30 ----- 9.5 11.2 162.2 15.2 25.1 -30.8 24.2 -30.8 26.0 -30.5 27.3 -31.6
2025-09-29T15:22:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:22:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:22:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.557012
2025-09-29T15:22:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:22:55.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:22:55.611 [DEBUG] [Thread-159755] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:22:55.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:22:55.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:22:55.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:22:55.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:22:27', tmtdew=15.74, humidity=34.29, cloud=0.0, wind=12.74, temperature=15.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:22:05.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:22:55.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:22:55.705 [DEBUG] [Thread-159759] [transport.py] [_log()] starting thread (client mode): 0x2b9cece0
2025-09-29T15:22:55.706 [DEBUG] [Thread-159759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:22:55.719 [DEBUG] [Thread-159759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:22:55.719 [INFO] [Thread-159759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] client lang: <none>
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] server lang: <none>
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] kex follows: False
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:22:55.727 [DEBUG] [Thread-159759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:22:55.728 [DEBUG] [Thread-159759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:22:55.728 [DEBUG] [Thread-159759] [transport.py] [_log()] Compression: none
2025-09-29T15:22:55.728 [DEBUG] [Thread-159759] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:22:55.790 [DEBUG] [Thread-159759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:22:55.790 [DEBUG] [Thread-159759] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:22:55.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:22:55.792 [DEBUG] [Thread-159759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:22:55.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:22:55.846 [DEBUG] [Thread-159759] [transport.py] [_log()] userauth is OK
2025-09-29T15:22:55.847 [DEBUG] [Thread-159759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:22:55.847 [DEBUG] [Thread-159759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:22:55.847 [DEBUG] [Thread-159759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:22:55.847 [DEBUG] [Thread-159759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:22:55.865 [INFO] [Thread-159759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:22:55.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:22:55.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:22:56.810 [DEBUG] [Thread-159759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:22:56.810 [DEBUG] [Thread-159759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:22:56.858 [DEBUG] [Thread-159759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:22:56.858 [DEBUG] [Thread-159759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:22:56.866 [DEBUG] [Thread-159759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:22:56.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:22:56.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:22:56.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:22:56.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:22:56.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:22:56.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:22:56.900 [DEBUG] [Thread-159759] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:23:06.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:23:06.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:23:06.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:23:07.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 22, 59), 16.39, 32.96, 0.0, 15.69, 16.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:23:07.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:22:59
2025-09-29T15:23:07.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:23:07.770 [DEBUG] [Thread-159761] [transport.py] [_log()] starting thread (client mode): 0x2b9cec80
2025-09-29T15:23:07.770 [DEBUG] [Thread-159761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:23:07.790 [DEBUG] [Thread-159761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:23:07.790 [INFO] [Thread-159761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] client lang: <none>
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] server lang: <none>
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] kex follows: False
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] Compression: none
2025-09-29T15:23:07.794 [DEBUG] [Thread-159761] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:23:07.812 [DEBUG] [Thread-159761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:23:07.812 [DEBUG] [Thread-159761] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:23:07.813 [DEBUG] [Thread-159761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:23:07.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:23:07.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:23:07.814 [DEBUG] [Thread-159761] [transport.py] [_log()] userauth is OK
2025-09-29T15:23:07.815 [DEBUG] [Thread-159761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:23:07.815 [DEBUG] [Thread-159761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:23:07.815 [DEBUG] [Thread-159761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:23:07.815 [DEBUG] [Thread-159761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:23:07.838 [INFO] [Thread-159761] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:23:07.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:23:08.508 [DEBUG] [Thread-159761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:23:08.508 [DEBUG] [Thread-159761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:23:08.509 [DEBUG] [Thread-159761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:23:08.549 [DEBUG] [Thread-159761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:23:08.549 [DEBUG] [Thread-159761] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:23:08.552 [DEBUG] [Thread-159761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:23:08.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:23:08.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:23:08.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:23:08.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:23:08.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:23:08.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:23:08.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:23:08.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:23:08.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:23:08.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.557359 -999.00  +16.30  16.49     37   +1.80 1 1 1 1 1   888    0 14.97 22.37 ----- 12.9 16.5 146.2 19.3 25.0 -30.5 24.2 -29.9 25.9 -30.8 27.1 -32.1
2025-09-29T15:23:08.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:23:08.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:23:08.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.557359
2025-09-29T15:23:08.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:23:08.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:23:08.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:23:08.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:23:08.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:23:08.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:22:59', tmtdew=16.39, humidity=32.96, cloud=0.0, wind=15.69, temperature=16.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:22:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:23:08.578 [DEBUG] [Thread-159761] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:23:08.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:23:08.673 [DEBUG] [Thread-159764] [transport.py] [_log()] starting thread (client mode): 0x2e375390
2025-09-29T15:23:08.673 [DEBUG] [Thread-159764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:23:08.691 [DEBUG] [Thread-159764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:23:08.691 [INFO] [Thread-159764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] client lang: <none>
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] server lang: <none>
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] kex follows: False
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:23:08.699 [DEBUG] [Thread-159764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:23:08.700 [DEBUG] [Thread-159764] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:23:08.700 [DEBUG] [Thread-159764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:23:08.700 [DEBUG] [Thread-159764] [transport.py] [_log()] Compression: none
2025-09-29T15:23:08.700 [DEBUG] [Thread-159764] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:23:08.758 [DEBUG] [Thread-159764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:23:08.759 [DEBUG] [Thread-159764] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:23:08.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:23:08.760 [DEBUG] [Thread-159764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:23:08.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:23:08.814 [DEBUG] [Thread-159764] [transport.py] [_log()] userauth is OK
2025-09-29T15:23:08.814 [DEBUG] [Thread-159764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:23:08.814 [DEBUG] [Thread-159764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:23:08.815 [DEBUG] [Thread-159764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:23:08.815 [DEBUG] [Thread-159764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:23:08.834 [INFO] [Thread-159764] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:23:08.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:23:08.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:23:09.855 [DEBUG] [Thread-159764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:23:09.855 [DEBUG] [Thread-159764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:23:09.902 [DEBUG] [Thread-159764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:23:09.902 [DEBUG] [Thread-159764] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:23:09.912 [DEBUG] [Thread-159764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:23:09.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:23:09.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:23:09.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:23:09.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:23:09.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:23:09.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:23:09.950 [DEBUG] [Thread-159764] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:23:10.574 [DEBUG] [Thread-159766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:23:12.255 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:23:12.256 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:23:19.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:23:19.953 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:23:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:23:20.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 22, 59), 16.39, 32.96, 0.0, 15.69, 16.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:23:20.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:22:59
2025-09-29T15:23:20.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:23:20.811 [DEBUG] [Thread-159767] [transport.py] [_log()] starting thread (client mode): 0x2b94dcf0
2025-09-29T15:23:20.811 [DEBUG] [Thread-159767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:23:20.831 [DEBUG] [Thread-159767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:23:20.831 [INFO] [Thread-159767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:23:20.834 [DEBUG] [Thread-159767] [transport.py] [_log()] client lang: <none>
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] server lang: <none>
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] kex follows: False
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] Compression: none
2025-09-29T15:23:20.835 [DEBUG] [Thread-159767] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:23:20.854 [DEBUG] [Thread-159767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:23:20.854 [DEBUG] [Thread-159767] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:23:20.855 [DEBUG] [Thread-159767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:23:20.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:23:20.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:23:20.897 [DEBUG] [Thread-159767] [transport.py] [_log()] userauth is OK
2025-09-29T15:23:20.897 [DEBUG] [Thread-159767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:23:20.897 [DEBUG] [Thread-159767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:23:20.897 [DEBUG] [Thread-159767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:23:20.897 [DEBUG] [Thread-159767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:23:20.920 [INFO] [Thread-159767] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:23:20.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:23:21.535 [DEBUG] [Thread-159767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:23:21.535 [DEBUG] [Thread-159767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:23:21.536 [DEBUG] [Thread-159767] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:23:21.576 [DEBUG] [Thread-159767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:23:21.577 [DEBUG] [Thread-159767] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:23:21.580 [DEBUG] [Thread-159767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:23:21.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:23:21.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:23:21.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:23:21.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:23:21.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:23:21.603 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:23:21.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:23:21.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:23:21.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:23:21.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.557359 -999.00  +16.30  16.49     37   +1.80 1 1 1 1 1   888    0 14.97 22.37 ----- 12.9 16.5 146.2 19.3 25.0 -30.5 24.2 -29.9 25.9 -30.8 27.1 -32.1
2025-09-29T15:23:21.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:23:21.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:23:21.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.557359
2025-09-29T15:23:21.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:23:21.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:23:21.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:23:21.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:23:21.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:23:21.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:22:59', tmtdew=16.39, humidity=32.96, cloud=0.0, wind=15.69, temperature=16.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:22:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:23:21.605 [DEBUG] [Thread-159767] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:23:21.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:23:21.706 [DEBUG] [Thread-159770] [transport.py] [_log()] starting thread (client mode): 0x2b91f3d0
2025-09-29T15:23:21.706 [DEBUG] [Thread-159770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:23:21.720 [DEBUG] [Thread-159770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:23:21.721 [INFO] [Thread-159770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:23:21.728 [DEBUG] [Thread-159770] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:23:21.728 [DEBUG] [Thread-159770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] client lang: <none>
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] server lang: <none>
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] kex follows: False
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] Compression: none
2025-09-29T15:23:21.729 [DEBUG] [Thread-159770] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:23:21.787 [DEBUG] [Thread-159770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:23:21.787 [DEBUG] [Thread-159770] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:23:21.788 [DEBUG] [Thread-159770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:23:21.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:23:21.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:23:21.842 [DEBUG] [Thread-159770] [transport.py] [_log()] userauth is OK
2025-09-29T15:23:21.842 [DEBUG] [Thread-159770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:23:21.843 [DEBUG] [Thread-159770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:23:21.843 [DEBUG] [Thread-159770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:23:21.843 [DEBUG] [Thread-159770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:23:21.861 [INFO] [Thread-159770] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:23:21.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:23:21.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:23:22.814 [DEBUG] [Thread-159770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:23:22.815 [DEBUG] [Thread-159770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:23:22.862 [DEBUG] [Thread-159770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:23:22.862 [DEBUG] [Thread-159770] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:23:22.871 [DEBUG] [Thread-159770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:23:22.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:23:22.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:23:22.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:23:22.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:23:22.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:23:22.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:23:22.906 [DEBUG] [Thread-159770] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:23:25.615 [DEBUG] [Thread-159772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:23:32.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:23:32.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:23:32.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:23:33.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 22, 59), 16.39, 32.96, 0.0, 15.69, 16.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:23:33.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:22:59
2025-09-29T15:23:33.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:23:33.801 [DEBUG] [Thread-159773] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-29T15:23:33.801 [DEBUG] [Thread-159773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:23:33.820 [DEBUG] [Thread-159773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:23:33.820 [INFO] [Thread-159773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:23:33.823 [DEBUG] [Thread-159773] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:23:33.823 [DEBUG] [Thread-159773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:23:33.823 [DEBUG] [Thread-159773] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:23:33.823 [DEBUG] [Thread-159773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:33.823 [DEBUG] [Thread-159773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:23:33.823 [DEBUG] [Thread-159773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] client lang: <none>
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] server lang: <none>
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] kex follows: False
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] Compression: none
2025-09-29T15:23:33.824 [DEBUG] [Thread-159773] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:23:33.838 [DEBUG] [Thread-159773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:23:33.839 [DEBUG] [Thread-159773] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:23:33.839 [DEBUG] [Thread-159773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:23:33.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:23:33.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:23:33.839 [DEBUG] [Thread-159773] [transport.py] [_log()] userauth is OK
2025-09-29T15:23:33.840 [DEBUG] [Thread-159773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:23:33.840 [DEBUG] [Thread-159773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:23:33.840 [DEBUG] [Thread-159773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:23:33.840 [DEBUG] [Thread-159773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:23:33.854 [INFO] [Thread-159773] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:23:33.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:23:34.496 [DEBUG] [Thread-159773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:23:34.497 [DEBUG] [Thread-159773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:23:34.497 [DEBUG] [Thread-159773] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:23:34.538 [DEBUG] [Thread-159773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:23:34.538 [DEBUG] [Thread-159773] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:23:34.543 [DEBUG] [Thread-159773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:23:34.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:23:34.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:23:34.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:23:34.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:23:34.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:23:34.557 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:23:34.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.557359 -999.00  +16.30  16.49     37   +1.80 1 1 1 1 1   888    0 14.97 22.37 ----- 12.9 16.5 146.2 19.3 25.0 -30.5 24.2 -29.9 25.9 -30.8 27.1 -32.1
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.557359
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:23:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:22:59', tmtdew=16.39, humidity=32.96, cloud=0.0, wind=15.69, temperature=16.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:22:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:23:34.557 [DEBUG] [Thread-159773] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:23:34.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:23:40.646 [DEBUG] [Thread-159776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:23:46.424 [DEBUG] [Thread-159777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:23:55.675 [DEBUG] [Thread-159778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:24:10.710 [DEBUG] [Thread-159779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:24:12.393 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:24:12.394 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:24:25.740 [DEBUG] [Thread-159780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:24:40.768 [DEBUG] [Thread-159781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:24:46.455 [DEBUG] [Thread-159782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:24:55.799 [DEBUG] [Thread-159783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:25:10.833 [DEBUG] [Thread-159784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:25:12.533 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:25:12.534 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:25:25.864 [DEBUG] [Thread-159785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:25:40.895 [DEBUG] [Thread-159786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:25:46.483 [DEBUG] [Thread-159787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:25:48.346 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T15:25:55.923 [DEBUG] [Thread-159788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:25:58.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:25:58.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:25:58.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:25:58.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 25, 39), 16.06, 33.53, 0.0, 6.23, 15.62, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:25:58.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:25:39
2025-09-29T15:25:59.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:25:59.231 [DEBUG] [Thread-159789] [transport.py] [_log()] starting thread (client mode): 0x2e3767a0
2025-09-29T15:25:59.232 [DEBUG] [Thread-159789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:25:59.243 [DEBUG] [Thread-159789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:25:59.243 [INFO] [Thread-159789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] client lang: <none>
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] server lang: <none>
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] kex follows: False
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] Compression: none
2025-09-29T15:25:59.245 [DEBUG] [Thread-159789] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:25:59.254 [DEBUG] [Thread-159789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:25:59.254 [DEBUG] [Thread-159789] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:25:59.254 [DEBUG] [Thread-159789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:25:59.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:25:59.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:25:59.255 [DEBUG] [Thread-159789] [transport.py] [_log()] userauth is OK
2025-09-29T15:25:59.255 [DEBUG] [Thread-159789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:25:59.255 [DEBUG] [Thread-159789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:25:59.255 [DEBUG] [Thread-159789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:25:59.255 [DEBUG] [Thread-159789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:25:59.265 [INFO] [Thread-159789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:25:59.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:25:59.898 [DEBUG] [Thread-159789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:25:59.899 [DEBUG] [Thread-159789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:25:59.899 [DEBUG] [Thread-159789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:25:59.939 [DEBUG] [Thread-159789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:25:59.939 [DEBUG] [Thread-159789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:25:59.942 [DEBUG] [Thread-159789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:25:59.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:25:59.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:25:59.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:25:59.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:25:59.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:25:59.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:25:59.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:25:59.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:25:59.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:25:59.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.559442 -999.00  +16.50  10.57     38   +2.10 1 1 1 1 1   888    0 14.59 16.46 ----- 12.7 10.6 196.8 16.3 24.9 -30.9 23.9 -29.5 26.0 -30.2 27.2 -31.1
2025-09-29T15:25:59.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:25:59.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:25:59.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.559442
2025-09-29T15:25:59.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:25:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:25:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:25:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:25:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:25:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:25:39', tmtdew=16.06, humidity=33.53, cloud=0.0, wind=6.23, temperature=15.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:25:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:25:59.972 [DEBUG] [Thread-159789] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:00.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:26:00.070 [DEBUG] [Thread-159792] [transport.py] [_log()] starting thread (client mode): 0x2b9cff10
2025-09-29T15:26:00.070 [DEBUG] [Thread-159792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:00.085 [DEBUG] [Thread-159792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:26:00.085 [INFO] [Thread-159792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:26:00.092 [DEBUG] [Thread-159792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] Compression: none
2025-09-29T15:26:00.093 [DEBUG] [Thread-159792] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:00.150 [DEBUG] [Thread-159792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:00.151 [DEBUG] [Thread-159792] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:00.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:26:00.152 [DEBUG] [Thread-159792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:26:00.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:00.207 [DEBUG] [Thread-159792] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:00.207 [DEBUG] [Thread-159792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:00.207 [DEBUG] [Thread-159792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:00.207 [DEBUG] [Thread-159792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:26:00.207 [DEBUG] [Thread-159792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:00.225 [INFO] [Thread-159792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:00.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:26:00.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:01.192 [DEBUG] [Thread-159792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:01.192 [DEBUG] [Thread-159792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:01.241 [DEBUG] [Thread-159792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:01.241 [DEBUG] [Thread-159792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:01.250 [DEBUG] [Thread-159792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:01.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:01.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:26:01.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:26:01.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:01.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:01.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:01.288 [DEBUG] [Thread-159792] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:10.951 [DEBUG] [Thread-159794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:26:11.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:26:11.290 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:26:11.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:26:11.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 25, 39), 16.06, 33.53, 0.0, 6.23, 15.62, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:26:11.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:25:39
2025-09-29T15:26:12.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:26:12.203 [DEBUG] [Thread-159795] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-29T15:26:12.203 [DEBUG] [Thread-159795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:12.223 [DEBUG] [Thread-159795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:26:12.223 [INFO] [Thread-159795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] Compression: none
2025-09-29T15:26:12.226 [DEBUG] [Thread-159795] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:12.241 [DEBUG] [Thread-159795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:12.241 [DEBUG] [Thread-159795] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:12.241 [DEBUG] [Thread-159795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:26:12.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:26:12.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:12.242 [DEBUG] [Thread-159795] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:12.242 [DEBUG] [Thread-159795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:12.242 [DEBUG] [Thread-159795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:12.242 [DEBUG] [Thread-159795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:26:12.242 [DEBUG] [Thread-159795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:12.251 [INFO] [Thread-159795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:12.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:12.672 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:26:12.673 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:26:12.804 [DEBUG] [Thread-159795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:12.805 [DEBUG] [Thread-159795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:12.805 [DEBUG] [Thread-159795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:26:12.846 [DEBUG] [Thread-159795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:12.846 [DEBUG] [Thread-159795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:12.848 [DEBUG] [Thread-159795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:12.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:12.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:26:12.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:26:12.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:26:12.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:12.866 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:26:12.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.559442 -999.00  +16.50  10.57     38   +2.10 1 1 1 1 1   888    0 14.59 16.46 ----- 12.7 10.6 196.8 16.3 24.9 -30.9 23.9 -29.5 26.0 -30.2 27.2 -31.1
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.559442
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:26:12.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:26:12.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:26:12.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:26:12.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:25:39', tmtdew=16.06, humidity=33.53, cloud=0.0, wind=6.23, temperature=15.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:25:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:26:12.867 [DEBUG] [Thread-159795] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:12.941 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:26:12.950 [DEBUG] [Thread-159798] [transport.py] [_log()] starting thread (client mode): 0x2b91c820
2025-09-29T15:26:12.950 [DEBUG] [Thread-159798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:12.965 [DEBUG] [Thread-159798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:26:12.965 [INFO] [Thread-159798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:12.972 [DEBUG] [Thread-159798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] Compression: none
2025-09-29T15:26:12.973 [DEBUG] [Thread-159798] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:13.029 [DEBUG] [Thread-159798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:13.030 [DEBUG] [Thread-159798] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:13.030 [DEBUG] [Thread-159798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:26:13.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:26:13.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:13.086 [DEBUG] [Thread-159798] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:13.086 [DEBUG] [Thread-159798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:13.086 [DEBUG] [Thread-159798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:13.086 [DEBUG] [Thread-159798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:26:13.086 [DEBUG] [Thread-159798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:13.100 [INFO] [Thread-159798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:13.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:26:13.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:14.065 [DEBUG] [Thread-159798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:14.065 [DEBUG] [Thread-159798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:14.113 [DEBUG] [Thread-159798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:14.113 [DEBUG] [Thread-159798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:14.122 [DEBUG] [Thread-159798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:14.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:14.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:26:14.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:26:14.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:14.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:14.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:14.157 [DEBUG] [Thread-159798] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:24.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:26:24.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:26:24.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:26:24.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 26, 11), 16.21, 33.21, 0.0, 9.48, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:26:24.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:26:11
2025-09-29T15:26:24.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:26:25.077 [DEBUG] [Thread-159800] [transport.py] [_log()] starting thread (client mode): 0x2e3de590
2025-09-29T15:26:25.077 [DEBUG] [Thread-159800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:25.097 [DEBUG] [Thread-159800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:26:25.097 [INFO] [Thread-159800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:25.100 [DEBUG] [Thread-159800] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:25.101 [DEBUG] [Thread-159800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:25.101 [DEBUG] [Thread-159800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:25.101 [DEBUG] [Thread-159800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:25.101 [DEBUG] [Thread-159800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:25.101 [DEBUG] [Thread-159800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:25.101 [DEBUG] [Thread-159800] [transport.py] [_log()] Compression: none
2025-09-29T15:26:25.101 [DEBUG] [Thread-159800] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:25.115 [DEBUG] [Thread-159800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:25.115 [DEBUG] [Thread-159800] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:25.115 [DEBUG] [Thread-159800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:26:25.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:26:25.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:25.116 [DEBUG] [Thread-159800] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:25.116 [DEBUG] [Thread-159800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:25.117 [DEBUG] [Thread-159800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:25.117 [DEBUG] [Thread-159800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:26:25.117 [DEBUG] [Thread-159800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:25.147 [INFO] [Thread-159800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:25.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:25.701 [DEBUG] [Thread-159800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:25.701 [DEBUG] [Thread-159800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:25.701 [DEBUG] [Thread-159800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:26:25.742 [DEBUG] [Thread-159800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:25.742 [DEBUG] [Thread-159800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:25.744 [DEBUG] [Thread-159800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:25.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:25.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:26:25.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:26:25.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:26:25.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:25.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:26:25.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:25.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:25.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:26:25.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.559790 -999.00  +16.40  12.18     37   +1.80 1 1 1 1 1   888    0 14.76 14.81 ----- 10.1 12.2 208.6 17.7 24.8 -30.8 23.8 -28.9 25.9 -30.1 27.1 -31.2
2025-09-29T15:26:25.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:26:25.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:26:25.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.559790
2025-09-29T15:26:25.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:26:25.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:26:25.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:26:25.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:26:25.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:26:25.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:26:11', tmtdew=16.21, humidity=33.21, cloud=0.0, wind=9.48, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:26:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:26:25.762 [DEBUG] [Thread-159800] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:25.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:26:25.847 [DEBUG] [Thread-159803] [transport.py] [_log()] starting thread (client mode): 0x2e3dd6f0
2025-09-29T15:26:25.847 [DEBUG] [Thread-159803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:25.861 [DEBUG] [Thread-159803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:26:25.861 [INFO] [Thread-159803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] Compression: none
2025-09-29T15:26:25.869 [DEBUG] [Thread-159803] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:25.925 [DEBUG] [Thread-159803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:25.925 [DEBUG] [Thread-159803] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:25.925 [DEBUG] [Thread-159803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:26:25.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:26:25.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:25.982 [DEBUG] [Thread-159803] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:25.982 [DEBUG] [Thread-159803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:25.982 [DEBUG] [Thread-159803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:25.982 [DEBUG] [Thread-159803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:26:25.982 [DEBUG] [Thread-159803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:25.996 [INFO] [Thread-159803] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:25.996 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:26:25.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:26.001 [DEBUG] [Thread-159805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:26:26.967 [DEBUG] [Thread-159803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:26.967 [DEBUG] [Thread-159803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:27.015 [DEBUG] [Thread-159803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:27.015 [DEBUG] [Thread-159803] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:27.023 [DEBUG] [Thread-159803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:27.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:27.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:26:27.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:26:27.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:27.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:27.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:27.054 [DEBUG] [Thread-159803] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:37.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:26:37.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:26:37.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:26:37.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 26, 11), 16.21, 33.21, 0.0, 9.48, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:26:37.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:26:11
2025-09-29T15:26:37.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:26:37.917 [DEBUG] [Thread-159806] [transport.py] [_log()] starting thread (client mode): 0x2e3fb820
2025-09-29T15:26:37.917 [DEBUG] [Thread-159806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:37.937 [DEBUG] [Thread-159806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:26:37.937 [INFO] [Thread-159806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:26:37.939 [DEBUG] [Thread-159806] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:37.939 [DEBUG] [Thread-159806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:26:37.939 [DEBUG] [Thread-159806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:37.939 [DEBUG] [Thread-159806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:37.939 [DEBUG] [Thread-159806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:37.939 [DEBUG] [Thread-159806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] Compression: none
2025-09-29T15:26:37.940 [DEBUG] [Thread-159806] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:37.957 [DEBUG] [Thread-159806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:37.957 [DEBUG] [Thread-159806] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:37.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:26:37.958 [DEBUG] [Thread-159806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:26:37.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:37.960 [DEBUG] [Thread-159806] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:37.961 [DEBUG] [Thread-159806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:37.961 [DEBUG] [Thread-159806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:37.961 [DEBUG] [Thread-159806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:26:37.961 [DEBUG] [Thread-159806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:37.985 [INFO] [Thread-159806] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:37.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:38.634 [DEBUG] [Thread-159806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:38.634 [DEBUG] [Thread-159806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:38.634 [DEBUG] [Thread-159806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:26:38.675 [DEBUG] [Thread-159806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:38.676 [DEBUG] [Thread-159806] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:38.678 [DEBUG] [Thread-159806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:38.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:38.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:26:38.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:26:38.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:26:38.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:38.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:26:38.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:38.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:38.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:26:38.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.559790 -999.00  +16.40  12.18     37   +1.80 1 1 1 1 1   888    0 14.76 14.81 ----- 10.1 12.2 208.6 17.7 24.8 -30.8 23.8 -28.9 25.9 -30.1 27.1 -31.2
2025-09-29T15:26:38.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:26:38.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:26:38.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.559790
2025-09-29T15:26:38.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:26:38.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:26:38.702 [DEBUG] [Thread-159806] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:38.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:26:38.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:26:38.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:26:38.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:26:11', tmtdew=16.21, humidity=33.21, cloud=0.0, wind=9.48, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:26:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:26:38.788 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:26:38.800 [DEBUG] [Thread-159809] [transport.py] [_log()] starting thread (client mode): 0x2e3761a0
2025-09-29T15:26:38.801 [DEBUG] [Thread-159809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:38.815 [DEBUG] [Thread-159809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:26:38.816 [INFO] [Thread-159809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:26:38.823 [DEBUG] [Thread-159809] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:38.823 [DEBUG] [Thread-159809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:26:38.823 [DEBUG] [Thread-159809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:38.823 [DEBUG] [Thread-159809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:38.823 [DEBUG] [Thread-159809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] Compression: none
2025-09-29T15:26:38.824 [DEBUG] [Thread-159809] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:38.883 [DEBUG] [Thread-159809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:38.883 [DEBUG] [Thread-159809] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:38.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:26:38.884 [DEBUG] [Thread-159809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:26:38.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:38.939 [DEBUG] [Thread-159809] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:38.939 [DEBUG] [Thread-159809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:38.939 [DEBUG] [Thread-159809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:38.939 [DEBUG] [Thread-159809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:26:38.939 [DEBUG] [Thread-159809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:38.957 [INFO] [Thread-159809] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:38.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:26:38.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:39.908 [DEBUG] [Thread-159809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:39.909 [DEBUG] [Thread-159809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:39.956 [DEBUG] [Thread-159809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:39.956 [DEBUG] [Thread-159809] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:39.965 [DEBUG] [Thread-159809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:39.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:39.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:26:39.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:26:39.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:39.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:39.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:40.000 [DEBUG] [Thread-159809] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:41.037 [DEBUG] [Thread-159811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:26:46.509 [DEBUG] [Thread-159812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:26:50.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:26:50.003 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:26:50.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:26:50.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 26, 43), 16.03, 33.38, 0.0, 6.92, 15.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:26:50.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:26:43
2025-09-29T15:26:50.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:26:50.863 [DEBUG] [Thread-159813] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-29T15:26:50.863 [DEBUG] [Thread-159813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:50.883 [DEBUG] [Thread-159813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:26:50.883 [INFO] [Thread-159813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] Compression: none
2025-09-29T15:26:50.885 [DEBUG] [Thread-159813] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:50.893 [DEBUG] [Thread-159813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:50.893 [DEBUG] [Thread-159813] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:50.894 [DEBUG] [Thread-159813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:26:50.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:26:50.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:50.895 [DEBUG] [Thread-159813] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:50.896 [DEBUG] [Thread-159813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:50.896 [DEBUG] [Thread-159813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:50.896 [DEBUG] [Thread-159813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:26:50.896 [DEBUG] [Thread-159813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:50.918 [INFO] [Thread-159813] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:50.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:51.572 [DEBUG] [Thread-159813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:51.572 [DEBUG] [Thread-159813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:51.572 [DEBUG] [Thread-159813] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:26:51.613 [DEBUG] [Thread-159813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:51.613 [DEBUG] [Thread-159813] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:51.616 [DEBUG] [Thread-159813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:51.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:51.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:26:51.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:26:51.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:26:51.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:51.640 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:26:51.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:51.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:51.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:26:51.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.559790 -999.00  +16.40  12.18     37   +1.80 1 1 1 1 1   888    0 14.76 14.81 ----- 10.1 12.2 208.6 17.7 24.8 -30.8 23.8 -28.9 25.9 -30.1 27.1 -31.2
2025-09-29T15:26:51.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:26:51.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:26:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.559790
2025-09-29T15:26:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:26:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:26:51.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:26:51.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:26:51.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:26:51.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:26:43', tmtdew=16.03, humidity=33.38, cloud=0.0, wind=6.92, temperature=15.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:26:05.856', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:26:51.642 [DEBUG] [Thread-159813] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:51.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:26:51.736 [DEBUG] [Thread-159816] [transport.py] [_log()] starting thread (client mode): 0x2e375000
2025-09-29T15:26:51.736 [DEBUG] [Thread-159816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:26:51.752 [DEBUG] [Thread-159816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:26:51.752 [INFO] [Thread-159816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:26:51.759 [DEBUG] [Thread-159816] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] client lang: <none>
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] server lang: <none>
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] kex follows: False
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] Compression: none
2025-09-29T15:26:51.760 [DEBUG] [Thread-159816] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:26:51.823 [DEBUG] [Thread-159816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:26:51.823 [DEBUG] [Thread-159816] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:26:51.824 [DEBUG] [Thread-159816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:26:51.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:26:51.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:26:51.879 [DEBUG] [Thread-159816] [transport.py] [_log()] userauth is OK
2025-09-29T15:26:51.879 [DEBUG] [Thread-159816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:26:51.879 [DEBUG] [Thread-159816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:26:51.879 [DEBUG] [Thread-159816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:26:51.879 [DEBUG] [Thread-159816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:26:51.898 [INFO] [Thread-159816] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:26:51.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:26:51.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:26:52.876 [DEBUG] [Thread-159816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:26:52.877 [DEBUG] [Thread-159816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:26:52.924 [DEBUG] [Thread-159816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:26:52.924 [DEBUG] [Thread-159816] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:26:52.933 [DEBUG] [Thread-159816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:26:52.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:26:52.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:26:52.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:26:52.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:26:52.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:26:52.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:26:52.968 [DEBUG] [Thread-159816] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:26:56.066 [DEBUG] [Thread-159818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:27:02.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:27:02.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:27:02.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:27:03.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 26, 43), 16.03, 33.38, 0.0, 6.92, 15.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:27:03.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:26:43
2025-09-29T15:27:03.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:27:03.871 [DEBUG] [Thread-159819] [transport.py] [_log()] starting thread (client mode): 0x2e3de920
2025-09-29T15:27:03.871 [DEBUG] [Thread-159819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:03.892 [DEBUG] [Thread-159819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:27:03.892 [INFO] [Thread-159819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:27:03.895 [DEBUG] [Thread-159819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:03.895 [DEBUG] [Thread-159819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:27:03.895 [DEBUG] [Thread-159819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:03.895 [DEBUG] [Thread-159819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] Compression: none
2025-09-29T15:27:03.896 [DEBUG] [Thread-159819] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:03.910 [DEBUG] [Thread-159819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:03.910 [DEBUG] [Thread-159819] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:03.910 [DEBUG] [Thread-159819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:27:03.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:27:03.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:03.911 [DEBUG] [Thread-159819] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:03.911 [DEBUG] [Thread-159819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:03.911 [DEBUG] [Thread-159819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:03.911 [DEBUG] [Thread-159819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:27:03.911 [DEBUG] [Thread-159819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:03.920 [INFO] [Thread-159819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:03.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:04.543 [DEBUG] [Thread-159819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:04.543 [DEBUG] [Thread-159819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:04.543 [DEBUG] [Thread-159819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:27:04.584 [DEBUG] [Thread-159819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:04.584 [DEBUG] [Thread-159819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:04.586 [DEBUG] [Thread-159819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:04.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:04.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:27:04.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:27:04.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:27:04.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:04.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:27:04.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.560137 -999.00  +16.40   5.31     37   +2.00 1 1 1 1 1   888    0 14.86 12.59 ----- 10.3 5.3 132.2 10.8 24.8 -29.9 23.9 -33.6 26.0 -29.1 27.1 -31.5
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.560137
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:27:04.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:26:43', tmtdew=16.03, humidity=33.38, cloud=0.0, wind=6.92, temperature=15.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:26:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:27:04.606 [DEBUG] [Thread-159819] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:04.680 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:27:04.691 [DEBUG] [Thread-159822] [transport.py] [_log()] starting thread (client mode): 0x2e3611b0
2025-09-29T15:27:04.691 [DEBUG] [Thread-159822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:04.706 [DEBUG] [Thread-159822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:27:04.706 [INFO] [Thread-159822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:04.713 [DEBUG] [Thread-159822] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:04.714 [DEBUG] [Thread-159822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:04.714 [DEBUG] [Thread-159822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:04.714 [DEBUG] [Thread-159822] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:04.714 [DEBUG] [Thread-159822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:04.714 [DEBUG] [Thread-159822] [transport.py] [_log()] Compression: none
2025-09-29T15:27:04.714 [DEBUG] [Thread-159822] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:04.773 [DEBUG] [Thread-159822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:04.774 [DEBUG] [Thread-159822] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:04.774 [DEBUG] [Thread-159822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:27:04.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:27:04.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:04.830 [DEBUG] [Thread-159822] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:04.830 [DEBUG] [Thread-159822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:04.830 [DEBUG] [Thread-159822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:04.830 [DEBUG] [Thread-159822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:27:04.830 [DEBUG] [Thread-159822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:04.844 [INFO] [Thread-159822] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:04.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:27:04.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:05.848 [DEBUG] [Thread-159822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:05.849 [DEBUG] [Thread-159822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:05.896 [DEBUG] [Thread-159822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:05.896 [DEBUG] [Thread-159822] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:05.906 [DEBUG] [Thread-159822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:05.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:05.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:27:05.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:27:05.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:05.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:05.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:05.940 [DEBUG] [Thread-159822] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:11.108 [DEBUG] [Thread-159824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:27:12.811 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:27:12.813 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:27:15.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:27:15.942 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:27:15.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:27:16.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 26, 43), 16.03, 33.38, 0.0, 6.92, 15.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:27:16.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:26:43
2025-09-29T15:27:16.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:27:16.848 [DEBUG] [Thread-159825] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-29T15:27:16.848 [DEBUG] [Thread-159825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:16.864 [DEBUG] [Thread-159825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:27:16.864 [INFO] [Thread-159825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] Compression: none
2025-09-29T15:27:16.867 [DEBUG] [Thread-159825] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:16.879 [DEBUG] [Thread-159825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:16.879 [DEBUG] [Thread-159825] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:16.879 [DEBUG] [Thread-159825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:27:16.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:27:16.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:16.880 [DEBUG] [Thread-159825] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:16.880 [DEBUG] [Thread-159825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:16.880 [DEBUG] [Thread-159825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:16.880 [DEBUG] [Thread-159825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:27:16.880 [DEBUG] [Thread-159825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:16.890 [INFO] [Thread-159825] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:16.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:17.545 [DEBUG] [Thread-159825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:17.546 [DEBUG] [Thread-159825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:17.546 [DEBUG] [Thread-159825] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:27:17.586 [DEBUG] [Thread-159825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:17.586 [DEBUG] [Thread-159825] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:17.589 [DEBUG] [Thread-159825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:17.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:17.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:27:17.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:27:17.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:27:17.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:17.612 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:27:17.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:17.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:27:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.560137 -999.00  +16.40   5.31     37   +2.00 1 1 1 1 1   888    0 14.86 12.59 ----- 10.3 5.3 132.2 10.8 24.8 -29.9 23.9 -33.6 26.0 -29.1 27.1 -31.5
2025-09-29T15:27:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:27:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:27:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.560137
2025-09-29T15:27:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:27:17.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:27:17.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:27:17.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:27:17.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:27:17.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:26:43', tmtdew=16.03, humidity=33.38, cloud=0.0, wind=6.92, temperature=15.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:26:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:27:17.615 [DEBUG] [Thread-159825] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:17.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:27:17.715 [DEBUG] [Thread-159828] [transport.py] [_log()] starting thread (client mode): 0x2e3de830
2025-09-29T15:27:17.716 [DEBUG] [Thread-159828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:17.731 [DEBUG] [Thread-159828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:27:17.731 [INFO] [Thread-159828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:27:17.740 [DEBUG] [Thread-159828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:17.741 [DEBUG] [Thread-159828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:27:17.741 [DEBUG] [Thread-159828] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:17.741 [DEBUG] [Thread-159828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:17.741 [DEBUG] [Thread-159828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:17.741 [DEBUG] [Thread-159828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:17.741 [DEBUG] [Thread-159828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] Compression: none
2025-09-29T15:27:17.742 [DEBUG] [Thread-159828] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:17.799 [DEBUG] [Thread-159828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:17.799 [DEBUG] [Thread-159828] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:17.800 [DEBUG] [Thread-159828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:27:17.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:27:17.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:17.860 [DEBUG] [Thread-159828] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:17.861 [DEBUG] [Thread-159828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:17.861 [DEBUG] [Thread-159828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:17.861 [DEBUG] [Thread-159828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:27:17.861 [DEBUG] [Thread-159828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:17.882 [INFO] [Thread-159828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:17.882 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:27:17.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:18.840 [DEBUG] [Thread-159828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:18.841 [DEBUG] [Thread-159828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:18.888 [DEBUG] [Thread-159828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:18.888 [DEBUG] [Thread-159828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:18.898 [DEBUG] [Thread-159828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:18.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:18.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:27:18.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:27:18.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:18.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:18.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:18.933 [DEBUG] [Thread-159828] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:26.149 [DEBUG] [Thread-159830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:27:28.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:27:28.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:27:28.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:27:29.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 27, 15), 15.95, 33.55, 0.0, 9.02, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:27:29.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:27:15
2025-09-29T15:27:29.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:27:29.791 [DEBUG] [Thread-159831] [transport.py] [_log()] starting thread (client mode): 0x2e362050
2025-09-29T15:27:29.791 [DEBUG] [Thread-159831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:29.810 [DEBUG] [Thread-159831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:27:29.810 [INFO] [Thread-159831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:29.813 [DEBUG] [Thread-159831] [transport.py] [_log()] Compression: none
2025-09-29T15:27:29.814 [DEBUG] [Thread-159831] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:29.823 [DEBUG] [Thread-159831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:29.824 [DEBUG] [Thread-159831] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:29.824 [DEBUG] [Thread-159831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:27:29.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:27:29.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:29.826 [DEBUG] [Thread-159831] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:29.826 [DEBUG] [Thread-159831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:29.826 [DEBUG] [Thread-159831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:29.826 [DEBUG] [Thread-159831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:27:29.826 [DEBUG] [Thread-159831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:29.851 [INFO] [Thread-159831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:29.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:30.436 [DEBUG] [Thread-159831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:30.436 [DEBUG] [Thread-159831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:30.436 [DEBUG] [Thread-159831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:27:30.476 [DEBUG] [Thread-159831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:30.476 [DEBUG] [Thread-159831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:30.480 [DEBUG] [Thread-159831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:30.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:30.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:27:30.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:27:30.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:27:30.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:30.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:27:30.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:30.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:30.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:27:30.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.560137 -999.00  +16.40   5.31     37   +2.00 1 1 1 1 1   888    0 14.86 12.59 ----- 10.3 5.3 132.2 10.8 24.8 -29.9 23.9 -33.6 26.0 -29.1 27.1 -31.5
2025-09-29T15:27:30.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:27:30.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:27:30.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.560137
2025-09-29T15:27:30.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:27:30.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:27:30.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:27:30.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:27:30.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:27:30.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:27:15', tmtdew=15.95, humidity=33.55, cloud=0.0, wind=9.02, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:26:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:27:30.499 [DEBUG] [Thread-159831] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:30.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:27:30.583 [DEBUG] [Thread-159834] [transport.py] [_log()] starting thread (client mode): 0x2e3de0e0
2025-09-29T15:27:30.583 [DEBUG] [Thread-159834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:30.598 [DEBUG] [Thread-159834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:27:30.599 [INFO] [Thread-159834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] Compression: none
2025-09-29T15:27:30.606 [DEBUG] [Thread-159834] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:30.662 [DEBUG] [Thread-159834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:30.663 [DEBUG] [Thread-159834] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:30.663 [DEBUG] [Thread-159834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:27:30.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:27:30.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:30.719 [DEBUG] [Thread-159834] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:30.719 [DEBUG] [Thread-159834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:30.719 [DEBUG] [Thread-159834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:30.719 [DEBUG] [Thread-159834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:27:30.719 [DEBUG] [Thread-159834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:30.738 [INFO] [Thread-159834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:30.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:27:30.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:31.735 [DEBUG] [Thread-159834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:31.736 [DEBUG] [Thread-159834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:31.783 [DEBUG] [Thread-159834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:31.783 [DEBUG] [Thread-159834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:31.792 [DEBUG] [Thread-159834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:31.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:31.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:27:31.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:27:31.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:31.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:31.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:31.827 [DEBUG] [Thread-159834] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:41.176 [DEBUG] [Thread-159836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:27:41.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:27:41.829 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:27:41.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:27:42.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 27, 15), 15.95, 33.55, 0.0, 9.02, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:27:42.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:27:15
2025-09-29T15:27:42.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:27:42.709 [DEBUG] [Thread-159837] [transport.py] [_log()] starting thread (client mode): 0x2e3f9d80
2025-09-29T15:27:42.709 [DEBUG] [Thread-159837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:42.730 [DEBUG] [Thread-159837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:27:42.730 [INFO] [Thread-159837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] Compression: none
2025-09-29T15:27:42.734 [DEBUG] [Thread-159837] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:42.752 [DEBUG] [Thread-159837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:42.752 [DEBUG] [Thread-159837] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:42.752 [DEBUG] [Thread-159837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:27:42.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:27:42.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:42.753 [DEBUG] [Thread-159837] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:42.753 [DEBUG] [Thread-159837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:42.753 [DEBUG] [Thread-159837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:42.753 [DEBUG] [Thread-159837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:27:42.753 [DEBUG] [Thread-159837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:42.767 [INFO] [Thread-159837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:42.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:43.373 [DEBUG] [Thread-159837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:43.373 [DEBUG] [Thread-159837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:43.373 [DEBUG] [Thread-159837] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:27:43.414 [DEBUG] [Thread-159837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:43.414 [DEBUG] [Thread-159837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:43.416 [DEBUG] [Thread-159837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:43.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:43.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:27:43.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:27:43.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:27:43.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:43.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:27:43.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:43.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:43.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:27:43.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.560484 -999.00  +16.30   6.92     37   +1.80 1 1 1 1 1   888    0 14.65 10.69 ----- 6.5 6.9 199.2 10.7 24.9 -30.3 23.7 -32.4 25.9 -28.9 27.1 -31.2
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.560484
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:27:43.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:27:15', tmtdew=15.95, humidity=33.55, cloud=0.0, wind=9.02, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:27:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:27:43.440 [DEBUG] [Thread-159837] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:43.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:27:43.533 [DEBUG] [Thread-159840] [transport.py] [_log()] starting thread (client mode): 0x2b9cc430
2025-09-29T15:27:43.533 [DEBUG] [Thread-159840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:43.549 [DEBUG] [Thread-159840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:27:43.549 [INFO] [Thread-159840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] Compression: none
2025-09-29T15:27:43.557 [DEBUG] [Thread-159840] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:43.615 [DEBUG] [Thread-159840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:43.616 [DEBUG] [Thread-159840] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:43.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:27:43.617 [DEBUG] [Thread-159840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:27:43.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:43.675 [DEBUG] [Thread-159840] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:43.675 [DEBUG] [Thread-159840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:43.675 [DEBUG] [Thread-159840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:43.676 [DEBUG] [Thread-159840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:27:43.676 [DEBUG] [Thread-159840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:43.698 [INFO] [Thread-159840] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:43.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:27:43.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:44.666 [DEBUG] [Thread-159840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:44.666 [DEBUG] [Thread-159840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:44.714 [DEBUG] [Thread-159840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:44.715 [DEBUG] [Thread-159840] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:44.723 [DEBUG] [Thread-159840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:44.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:44.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:27:44.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:27:44.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:44.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:44.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:44.758 [DEBUG] [Thread-159840] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:46.542 [DEBUG] [Thread-159842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:27:54.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:27:54.758 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:27:54.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:27:55.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 27, 47), 15.98, 33.51, 0.0, 8.35, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:27:55.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:27:47
2025-09-29T15:27:55.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:27:55.605 [DEBUG] [Thread-159843] [transport.py] [_log()] starting thread (client mode): 0x2e3dca90
2025-09-29T15:27:55.605 [DEBUG] [Thread-159843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:55.622 [DEBUG] [Thread-159843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:27:55.622 [INFO] [Thread-159843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:27:55.624 [DEBUG] [Thread-159843] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:55.624 [DEBUG] [Thread-159843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:27:55.624 [DEBUG] [Thread-159843] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] Compression: none
2025-09-29T15:27:55.625 [DEBUG] [Thread-159843] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:55.639 [DEBUG] [Thread-159843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:55.639 [DEBUG] [Thread-159843] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:55.639 [DEBUG] [Thread-159843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:27:55.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:27:55.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:55.640 [DEBUG] [Thread-159843] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:55.640 [DEBUG] [Thread-159843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:55.640 [DEBUG] [Thread-159843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:55.640 [DEBUG] [Thread-159843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:27:55.641 [DEBUG] [Thread-159843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:55.654 [INFO] [Thread-159843] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:55.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:56.209 [DEBUG] [Thread-159845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:27:56.267 [DEBUG] [Thread-159843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:56.267 [DEBUG] [Thread-159843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:56.268 [DEBUG] [Thread-159843] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:27:56.309 [DEBUG] [Thread-159843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:56.309 [DEBUG] [Thread-159843] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:56.312 [DEBUG] [Thread-159843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:56.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:56.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:27:56.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:27:56.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:27:56.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:56.337 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:27:56.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:56.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:56.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:27:56.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.560484 -999.00  +16.30   6.92     37   +1.80 1 1 1 1 1   888    0 14.65 10.69 ----- 6.5 6.9 199.2 10.7 24.9 -30.3 23.7 -32.4 25.9 -28.9 27.1 -31.2
2025-09-29T15:27:56.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:27:56.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:27:56.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.560484
2025-09-29T15:27:56.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:27:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:27:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:27:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:27:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:27:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:27:47', tmtdew=15.98, humidity=33.51, cloud=0.0, wind=8.35, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:27:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:27:56.339 [DEBUG] [Thread-159843] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:27:56.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:27:56.434 [DEBUG] [Thread-159847] [transport.py] [_log()] starting thread (client mode): 0x2e3f8100
2025-09-29T15:27:56.434 [DEBUG] [Thread-159847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:27:56.448 [DEBUG] [Thread-159847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:27:56.449 [INFO] [Thread-159847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:27:56.456 [DEBUG] [Thread-159847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:27:56.456 [DEBUG] [Thread-159847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] client lang: <none>
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] server lang: <none>
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] kex follows: False
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] Compression: none
2025-09-29T15:27:56.457 [DEBUG] [Thread-159847] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:27:56.515 [DEBUG] [Thread-159847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:27:56.516 [DEBUG] [Thread-159847] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:27:56.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:27:56.517 [DEBUG] [Thread-159847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:27:56.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:27:56.571 [DEBUG] [Thread-159847] [transport.py] [_log()] userauth is OK
2025-09-29T15:27:56.571 [DEBUG] [Thread-159847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:27:56.571 [DEBUG] [Thread-159847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:27:56.572 [DEBUG] [Thread-159847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:27:56.572 [DEBUG] [Thread-159847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:27:56.590 [INFO] [Thread-159847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:27:56.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:27:56.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:27:57.559 [DEBUG] [Thread-159847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:27:57.559 [DEBUG] [Thread-159847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:27:57.607 [DEBUG] [Thread-159847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:27:57.607 [DEBUG] [Thread-159847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:27:57.617 [DEBUG] [Thread-159847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:27:57.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:27:57.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:27:57.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:27:57.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:27:57.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:27:57.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:27:57.651 [DEBUG] [Thread-159847] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:07.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:28:07.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:28:07.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:28:08.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 27, 47), 15.98, 33.51, 0.0, 8.35, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:28:08.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:27:47
2025-09-29T15:28:08.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:28:08.507 [DEBUG] [Thread-159849] [transport.py] [_log()] starting thread (client mode): 0x2e3636d0
2025-09-29T15:28:08.507 [DEBUG] [Thread-159849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:28:08.526 [DEBUG] [Thread-159849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:28:08.526 [INFO] [Thread-159849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] client lang: <none>
2025-09-29T15:28:08.530 [DEBUG] [Thread-159849] [transport.py] [_log()] server lang: <none>
2025-09-29T15:28:08.531 [DEBUG] [Thread-159849] [transport.py] [_log()] kex follows: False
2025-09-29T15:28:08.531 [DEBUG] [Thread-159849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:28:08.531 [DEBUG] [Thread-159849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:28:08.531 [DEBUG] [Thread-159849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:28:08.531 [DEBUG] [Thread-159849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:28:08.531 [DEBUG] [Thread-159849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:28:08.531 [DEBUG] [Thread-159849] [transport.py] [_log()] Compression: none
2025-09-29T15:28:08.531 [DEBUG] [Thread-159849] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:28:08.544 [DEBUG] [Thread-159849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:28:08.544 [DEBUG] [Thread-159849] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:28:08.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:28:08.545 [DEBUG] [Thread-159849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:28:08.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:28:08.547 [DEBUG] [Thread-159849] [transport.py] [_log()] userauth is OK
2025-09-29T15:28:08.547 [DEBUG] [Thread-159849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:28:08.548 [DEBUG] [Thread-159849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:28:08.548 [DEBUG] [Thread-159849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:28:08.548 [DEBUG] [Thread-159849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:28:08.565 [INFO] [Thread-159849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:28:08.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:28:09.175 [DEBUG] [Thread-159849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:28:09.175 [DEBUG] [Thread-159849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:28:09.176 [DEBUG] [Thread-159849] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:28:09.216 [DEBUG] [Thread-159849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:28:09.216 [DEBUG] [Thread-159849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:28:09.219 [DEBUG] [Thread-159849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:28:09.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:28:09.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:28:09.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:28:09.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:28:09.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:28:09.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:28:09.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:28:09.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:28:09.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:28:09.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.560831 -999.00  +16.20   6.97     38   +1.90 1 1 1 1 1   888    0 14.92 10.29 ----- 5.5 7.0 277.4 8.1 24.9 -30.5 24.1 -28.7 26.1 -29.6 27.3 -29.6
2025-09-29T15:28:09.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:28:09.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:28:09.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.560831
2025-09-29T15:28:09.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:28:09.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:28:09.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:28:09.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:28:09.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:28:09.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:27:47', tmtdew=15.98, humidity=33.51, cloud=0.0, wind=8.35, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:27:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:28:09.234 [DEBUG] [Thread-159849] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:09.312 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:28:09.323 [DEBUG] [Thread-159852] [transport.py] [_log()] starting thread (client mode): 0x2e3dee30
2025-09-29T15:28:09.323 [DEBUG] [Thread-159852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:28:09.338 [DEBUG] [Thread-159852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:28:09.338 [INFO] [Thread-159852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] client lang: <none>
2025-09-29T15:28:09.345 [DEBUG] [Thread-159852] [transport.py] [_log()] server lang: <none>
2025-09-29T15:28:09.346 [DEBUG] [Thread-159852] [transport.py] [_log()] kex follows: False
2025-09-29T15:28:09.346 [DEBUG] [Thread-159852] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:28:09.346 [DEBUG] [Thread-159852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:28:09.346 [DEBUG] [Thread-159852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:28:09.346 [DEBUG] [Thread-159852] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:28:09.346 [DEBUG] [Thread-159852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:28:09.346 [DEBUG] [Thread-159852] [transport.py] [_log()] Compression: none
2025-09-29T15:28:09.346 [DEBUG] [Thread-159852] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:28:09.403 [DEBUG] [Thread-159852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:28:09.403 [DEBUG] [Thread-159852] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:28:09.404 [DEBUG] [Thread-159852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:28:09.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:28:09.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:28:09.460 [DEBUG] [Thread-159852] [transport.py] [_log()] userauth is OK
2025-09-29T15:28:09.460 [DEBUG] [Thread-159852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:28:09.460 [DEBUG] [Thread-159852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:28:09.461 [DEBUG] [Thread-159852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:28:09.461 [DEBUG] [Thread-159852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:28:09.480 [INFO] [Thread-159852] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:28:09.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:28:09.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:28:10.437 [DEBUG] [Thread-159852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:28:10.437 [DEBUG] [Thread-159852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:28:10.485 [DEBUG] [Thread-159852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:28:10.485 [DEBUG] [Thread-159852] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:28:10.495 [DEBUG] [Thread-159852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:28:10.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:28:10.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:28:10.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:28:10.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:28:10.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:28:10.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:28:10.529 [DEBUG] [Thread-159852] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:11.256 [DEBUG] [Thread-159854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:28:12.949 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:28:12.950 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:28:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:28:20.531 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:28:20.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:28:21.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 27, 47), 15.98, 33.51, 0.0, 8.35, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:28:21.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:27:47
2025-09-29T15:28:21.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:28:21.441 [DEBUG] [Thread-159855] [transport.py] [_log()] starting thread (client mode): 0x2b968760
2025-09-29T15:28:21.441 [DEBUG] [Thread-159855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:28:21.462 [DEBUG] [Thread-159855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:28:21.462 [INFO] [Thread-159855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] client lang: <none>
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] server lang: <none>
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] kex follows: False
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] Compression: none
2025-09-29T15:28:21.465 [DEBUG] [Thread-159855] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:28:21.481 [DEBUG] [Thread-159855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:28:21.481 [DEBUG] [Thread-159855] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:28:21.481 [DEBUG] [Thread-159855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:28:21.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:28:21.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:28:21.482 [DEBUG] [Thread-159855] [transport.py] [_log()] userauth is OK
2025-09-29T15:28:21.482 [DEBUG] [Thread-159855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:28:21.482 [DEBUG] [Thread-159855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:28:21.482 [DEBUG] [Thread-159855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:28:21.482 [DEBUG] [Thread-159855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:28:21.492 [INFO] [Thread-159855] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:28:21.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:28:22.227 [DEBUG] [Thread-159855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:28:22.227 [DEBUG] [Thread-159855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:28:22.227 [DEBUG] [Thread-159855] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:28:22.268 [DEBUG] [Thread-159855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:28:22.268 [DEBUG] [Thread-159855] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:28:22.271 [DEBUG] [Thread-159855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:28:22.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:28:22.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:28:22.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:28:22.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:28:22.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:28:22.295 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:28:22.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:28:22.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:28:22.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:28:22.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.560831 -999.00  +16.20   6.97     38   +1.90 1 1 1 1 1   888    0 14.92 10.29 ----- 5.5 7.0 277.4 8.1 24.9 -30.5 24.1 -28.7 26.1 -29.6 27.3 -29.6
2025-09-29T15:28:22.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:28:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:28:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.560831
2025-09-29T15:28:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:28:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:28:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:28:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:28:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:28:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:27:47', tmtdew=15.98, humidity=33.51, cloud=0.0, wind=8.35, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:27:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:28:22.297 [DEBUG] [Thread-159855] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:22.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:28:22.403 [DEBUG] [Thread-159858] [transport.py] [_log()] starting thread (client mode): 0x2b96b8b0
2025-09-29T15:28:22.403 [DEBUG] [Thread-159858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:28:22.418 [DEBUG] [Thread-159858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:28:22.419 [INFO] [Thread-159858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:28:22.426 [DEBUG] [Thread-159858] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:28:22.426 [DEBUG] [Thread-159858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:28:22.426 [DEBUG] [Thread-159858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:28:22.426 [DEBUG] [Thread-159858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:22.426 [DEBUG] [Thread-159858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:22.426 [DEBUG] [Thread-159858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] client lang: <none>
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] server lang: <none>
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] kex follows: False
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] Compression: none
2025-09-29T15:28:22.427 [DEBUG] [Thread-159858] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:28:22.483 [DEBUG] [Thread-159858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:28:22.483 [DEBUG] [Thread-159858] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:28:22.484 [DEBUG] [Thread-159858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:28:22.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:28:22.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:28:22.539 [DEBUG] [Thread-159858] [transport.py] [_log()] userauth is OK
2025-09-29T15:28:22.539 [DEBUG] [Thread-159858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:28:22.539 [DEBUG] [Thread-159858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:28:22.540 [DEBUG] [Thread-159858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:28:22.540 [DEBUG] [Thread-159858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:28:22.562 [INFO] [Thread-159858] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:28:22.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:28:22.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:28:23.558 [DEBUG] [Thread-159858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:28:23.558 [DEBUG] [Thread-159858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:28:23.606 [DEBUG] [Thread-159858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:28:23.606 [DEBUG] [Thread-159858] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:28:23.615 [DEBUG] [Thread-159858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:28:23.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:28:23.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:28:23.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:28:23.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:28:23.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:28:23.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:28:23.655 [DEBUG] [Thread-159858] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:26.308 [DEBUG] [Thread-159860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:28:33.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:28:33.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:28:33.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:28:34.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 28, 18), 16.13, 33.2, 0.0, 7.27, 15.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:28:34.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:28:18
2025-09-29T15:28:34.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:28:34.504 [DEBUG] [Thread-159861] [transport.py] [_log()] starting thread (client mode): 0x2e3f9d20
2025-09-29T15:28:34.504 [DEBUG] [Thread-159861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:28:34.525 [DEBUG] [Thread-159861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:28:34.525 [INFO] [Thread-159861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] client lang: <none>
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] server lang: <none>
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] kex follows: False
2025-09-29T15:28:34.528 [DEBUG] [Thread-159861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:28:34.529 [DEBUG] [Thread-159861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:28:34.529 [DEBUG] [Thread-159861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:28:34.529 [DEBUG] [Thread-159861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:28:34.529 [DEBUG] [Thread-159861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:28:34.529 [DEBUG] [Thread-159861] [transport.py] [_log()] Compression: none
2025-09-29T15:28:34.529 [DEBUG] [Thread-159861] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:28:34.545 [DEBUG] [Thread-159861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:28:34.546 [DEBUG] [Thread-159861] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:28:34.546 [DEBUG] [Thread-159861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:28:34.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:28:34.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:28:34.548 [DEBUG] [Thread-159861] [transport.py] [_log()] userauth is OK
2025-09-29T15:28:34.549 [DEBUG] [Thread-159861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:28:34.549 [DEBUG] [Thread-159861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:28:34.549 [DEBUG] [Thread-159861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:28:34.549 [DEBUG] [Thread-159861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:28:34.564 [INFO] [Thread-159861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:28:34.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:28:35.276 [DEBUG] [Thread-159861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:28:35.277 [DEBUG] [Thread-159861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:28:35.277 [DEBUG] [Thread-159861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:28:35.317 [DEBUG] [Thread-159861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:28:35.317 [DEBUG] [Thread-159861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:28:35.319 [DEBUG] [Thread-159861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:28:35.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:28:35.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:28:35.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:28:35.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:28:35.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:28:35.335 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:28:35.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:28:35.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:28:35.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:28:35.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.560831 -999.00  +16.20   6.97     38   +1.90 1 1 1 1 1   888    0 14.92 10.29 ----- 5.5 7.0 277.4 8.1 24.9 -30.5 24.1 -28.7 26.1 -29.6 27.3 -29.6
2025-09-29T15:28:35.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:28:35.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:28:35.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.560831
2025-09-29T15:28:35.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:28:35.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:28:35.338 [DEBUG] [Thread-159861] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:35.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:28:35.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:28:35.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:28:35.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:28:18', tmtdew=16.13, humidity=33.2, cloud=0.0, wind=7.27, temperature=15.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:27:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:28:35.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:28:35.434 [DEBUG] [Thread-159864] [transport.py] [_log()] starting thread (client mode): 0x2b91d510
2025-09-29T15:28:35.434 [DEBUG] [Thread-159864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:28:35.448 [DEBUG] [Thread-159864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:28:35.448 [INFO] [Thread-159864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:28:35.456 [DEBUG] [Thread-159864] [transport.py] [_log()] client lang: <none>
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] server lang: <none>
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] kex follows: False
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] Compression: none
2025-09-29T15:28:35.457 [DEBUG] [Thread-159864] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:28:35.516 [DEBUG] [Thread-159864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:28:35.516 [DEBUG] [Thread-159864] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:28:35.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:28:35.517 [DEBUG] [Thread-159864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:28:35.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:28:35.571 [DEBUG] [Thread-159864] [transport.py] [_log()] userauth is OK
2025-09-29T15:28:35.572 [DEBUG] [Thread-159864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:28:35.572 [DEBUG] [Thread-159864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:28:35.572 [DEBUG] [Thread-159864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:28:35.572 [DEBUG] [Thread-159864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:28:35.593 [INFO] [Thread-159864] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:28:35.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:28:35.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:28:36.645 [DEBUG] [Thread-159864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:28:36.645 [DEBUG] [Thread-159864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:28:36.693 [DEBUG] [Thread-159864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:28:36.693 [DEBUG] [Thread-159864] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:28:36.701 [DEBUG] [Thread-159864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:28:36.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:28:36.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:28:36.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:28:36.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:28:36.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:28:36.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:28:36.736 [DEBUG] [Thread-159864] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:41.338 [DEBUG] [Thread-159866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:28:46.574 [DEBUG] [Thread-159867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:28:46.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:28:46.738 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:28:46.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:28:47.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 28, 18), 16.13, 33.2, 0.0, 7.27, 15.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:28:47.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:28:18
2025-09-29T15:28:47.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:28:47.593 [DEBUG] [Thread-159868] [transport.py] [_log()] starting thread (client mode): 0x2b969510
2025-09-29T15:28:47.593 [DEBUG] [Thread-159868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:28:47.612 [DEBUG] [Thread-159868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:28:47.613 [INFO] [Thread-159868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] client lang: <none>
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] server lang: <none>
2025-09-29T15:28:47.616 [DEBUG] [Thread-159868] [transport.py] [_log()] kex follows: False
2025-09-29T15:28:47.617 [DEBUG] [Thread-159868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:28:47.617 [DEBUG] [Thread-159868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:28:47.617 [DEBUG] [Thread-159868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:28:47.617 [DEBUG] [Thread-159868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:28:47.617 [DEBUG] [Thread-159868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:28:47.617 [DEBUG] [Thread-159868] [transport.py] [_log()] Compression: none
2025-09-29T15:28:47.617 [DEBUG] [Thread-159868] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:28:47.637 [DEBUG] [Thread-159868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:28:47.638 [DEBUG] [Thread-159868] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:28:47.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:28:47.639 [DEBUG] [Thread-159868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:28:47.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:28:47.641 [DEBUG] [Thread-159868] [transport.py] [_log()] userauth is OK
2025-09-29T15:28:47.641 [DEBUG] [Thread-159868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:28:47.641 [DEBUG] [Thread-159868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:28:47.641 [DEBUG] [Thread-159868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:28:47.641 [DEBUG] [Thread-159868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:28:47.676 [INFO] [Thread-159868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:28:47.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:28:48.225 [DEBUG] [Thread-159868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:28:48.225 [DEBUG] [Thread-159868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:28:48.225 [DEBUG] [Thread-159868] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:28:48.266 [DEBUG] [Thread-159868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:28:48.266 [DEBUG] [Thread-159868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:28:48.269 [DEBUG] [Thread-159868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:28:48.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:28:48.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:28:48.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:28:48.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:28:48.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:28:48.290 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:28:48.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:28:48.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:28:48.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:28:48.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.561178 -999.00  +16.40   2.86     37   +2.00 1 1 1 1 1   888    0 14.75 9.43 ----- 2.2 2.9 171.4 5.0 25.1 -29.6 24.3 -29.7 26.2 -28.5 27.4 -30.2
2025-09-29T15:28:48.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:28:48.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:28:48.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.561178
2025-09-29T15:28:48.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:28:48.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:28:48.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:28:48.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:28:48.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:28:48.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:28:18', tmtdew=16.13, humidity=33.2, cloud=0.0, wind=7.27, temperature=15.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:28:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:28:48.292 [DEBUG] [Thread-159868] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:48.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:28:48.387 [DEBUG] [Thread-159871] [transport.py] [_log()] starting thread (client mode): 0x2e3faec0
2025-09-29T15:28:48.387 [DEBUG] [Thread-159871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:28:48.401 [DEBUG] [Thread-159871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:28:48.401 [INFO] [Thread-159871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:28:48.408 [DEBUG] [Thread-159871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:28:48.408 [DEBUG] [Thread-159871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:28:48.408 [DEBUG] [Thread-159871] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] client lang: <none>
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] server lang: <none>
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] kex follows: False
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] Compression: none
2025-09-29T15:28:48.409 [DEBUG] [Thread-159871] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:28:48.467 [DEBUG] [Thread-159871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:28:48.468 [DEBUG] [Thread-159871] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:28:48.468 [DEBUG] [Thread-159871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:28:48.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:28:48.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:28:48.524 [DEBUG] [Thread-159871] [transport.py] [_log()] userauth is OK
2025-09-29T15:28:48.524 [DEBUG] [Thread-159871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:28:48.524 [DEBUG] [Thread-159871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:28:48.524 [DEBUG] [Thread-159871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:28:48.524 [DEBUG] [Thread-159871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:28:48.543 [INFO] [Thread-159871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:28:48.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:28:48.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:28:49.619 [DEBUG] [Thread-159871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:28:49.619 [DEBUG] [Thread-159871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:28:49.666 [DEBUG] [Thread-159871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:28:49.666 [DEBUG] [Thread-159871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:28:49.675 [DEBUG] [Thread-159871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:28:49.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:28:49.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:28:49.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:28:49.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:28:49.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:28:49.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:28:49.712 [DEBUG] [Thread-159871] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:28:56.381 [DEBUG] [Thread-159873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:28:59.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:28:59.707 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:28:59.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:29:00.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 28, 50), 16.25, 32.97, 0.0, 12.74, 16.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:29:00.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:28:50
2025-09-29T15:29:00.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:29:00.555 [DEBUG] [Thread-159874] [transport.py] [_log()] starting thread (client mode): 0x2e3dccd0
2025-09-29T15:29:00.555 [DEBUG] [Thread-159874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:29:00.577 [DEBUG] [Thread-159874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:29:00.577 [INFO] [Thread-159874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:29:00.581 [DEBUG] [Thread-159874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] client lang: <none>
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] server lang: <none>
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] kex follows: False
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] Compression: none
2025-09-29T15:29:00.582 [DEBUG] [Thread-159874] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:29:00.602 [DEBUG] [Thread-159874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:29:00.603 [DEBUG] [Thread-159874] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:29:00.603 [DEBUG] [Thread-159874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:29:00.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:29:00.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:29:00.605 [DEBUG] [Thread-159874] [transport.py] [_log()] userauth is OK
2025-09-29T15:29:00.606 [DEBUG] [Thread-159874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:29:00.606 [DEBUG] [Thread-159874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:29:00.606 [DEBUG] [Thread-159874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:29:00.606 [DEBUG] [Thread-159874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:29:00.629 [INFO] [Thread-159874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:29:00.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:29:01.396 [DEBUG] [Thread-159874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:29:01.396 [DEBUG] [Thread-159874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:29:01.396 [DEBUG] [Thread-159874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:29:01.437 [DEBUG] [Thread-159874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:29:01.437 [DEBUG] [Thread-159874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:29:01.440 [DEBUG] [Thread-159874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:29:01.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:29:01.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:29:01.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:29:01.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:29:01.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:29:01.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:29:01.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:29:01.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:29:01.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:29:01.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.561178 -999.00  +16.40   2.86     37   +2.00 1 1 1 1 1   888    0 14.75 9.43 ----- 2.2 2.9 171.4 5.0 25.1 -29.6 24.3 -29.7 26.2 -28.5 27.4 -30.2
2025-09-29T15:29:01.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:29:01.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:29:01.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.561178
2025-09-29T15:29:01.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:29:01.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:29:01.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:29:01.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:29:01.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:29:01.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:28:50', tmtdew=16.25, humidity=32.97, cloud=0.0, wind=12.74, temperature=16.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:28:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:29:01.466 [DEBUG] [Thread-159874] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:29:01.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:29:01.566 [DEBUG] [Thread-159877] [transport.py] [_log()] starting thread (client mode): 0x2e3de170
2025-09-29T15:29:01.566 [DEBUG] [Thread-159877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:29:01.581 [DEBUG] [Thread-159877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:29:01.582 [INFO] [Thread-159877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:29:01.589 [DEBUG] [Thread-159877] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] client lang: <none>
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] server lang: <none>
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] kex follows: False
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:29:01.590 [DEBUG] [Thread-159877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:29:01.591 [DEBUG] [Thread-159877] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:29:01.591 [DEBUG] [Thread-159877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:29:01.591 [DEBUG] [Thread-159877] [transport.py] [_log()] Compression: none
2025-09-29T15:29:01.591 [DEBUG] [Thread-159877] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:29:01.649 [DEBUG] [Thread-159877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:29:01.649 [DEBUG] [Thread-159877] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:29:01.650 [DEBUG] [Thread-159877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:29:01.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:29:01.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:29:01.712 [DEBUG] [Thread-159877] [transport.py] [_log()] userauth is OK
2025-09-29T15:29:01.712 [DEBUG] [Thread-159877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:29:01.712 [DEBUG] [Thread-159877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:29:01.712 [DEBUG] [Thread-159877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:29:01.712 [DEBUG] [Thread-159877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:29:01.729 [INFO] [Thread-159877] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:29:01.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:29:01.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:29:02.710 [DEBUG] [Thread-159877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:29:02.710 [DEBUG] [Thread-159877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:29:02.758 [DEBUG] [Thread-159877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:29:02.758 [DEBUG] [Thread-159877] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:29:02.767 [DEBUG] [Thread-159877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:29:02.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:29:02.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:29:02.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:29:02.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:29:02.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:29:02.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:29:02.803 [DEBUG] [Thread-159877] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:29:11.414 [DEBUG] [Thread-159879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:29:12.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:29:12.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:29:12.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:29:13.090 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:29:13.091 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:29:13.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 28, 50), 16.25, 32.97, 0.0, 12.74, 16.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:29:13.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:28:50
2025-09-29T15:29:13.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:29:13.659 [DEBUG] [Thread-159880] [transport.py] [_log()] starting thread (client mode): 0x2e3df2e0
2025-09-29T15:29:13.659 [DEBUG] [Thread-159880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:29:13.679 [DEBUG] [Thread-159880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:29:13.680 [INFO] [Thread-159880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:29:13.683 [DEBUG] [Thread-159880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:29:13.683 [DEBUG] [Thread-159880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:29:13.683 [DEBUG] [Thread-159880] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:29:13.683 [DEBUG] [Thread-159880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:13.683 [DEBUG] [Thread-159880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:13.683 [DEBUG] [Thread-159880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:13.683 [DEBUG] [Thread-159880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] client lang: <none>
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] server lang: <none>
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] kex follows: False
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] Compression: none
2025-09-29T15:29:13.684 [DEBUG] [Thread-159880] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:29:13.701 [DEBUG] [Thread-159880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:29:13.702 [DEBUG] [Thread-159880] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:29:13.703 [DEBUG] [Thread-159880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:29:13.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:29:13.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:29:13.745 [DEBUG] [Thread-159880] [transport.py] [_log()] userauth is OK
2025-09-29T15:29:13.745 [DEBUG] [Thread-159880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:29:13.745 [DEBUG] [Thread-159880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:29:13.745 [DEBUG] [Thread-159880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:29:13.745 [DEBUG] [Thread-159880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:29:13.777 [INFO] [Thread-159880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:29:13.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:29:14.372 [DEBUG] [Thread-159880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:29:14.372 [DEBUG] [Thread-159880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:29:14.372 [DEBUG] [Thread-159880] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:29:14.413 [DEBUG] [Thread-159880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:29:14.413 [DEBUG] [Thread-159880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:29:14.415 [DEBUG] [Thread-159880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:29:14.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:29:14.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:29:14.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:29:14.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:29:14.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:29:14.429 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:29:14.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:29:14.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.561873 -999.00  +16.90  15.93     37   +2.10 1 1 1 1 1   888    0 14.83 11.24 ----- 15.2 15.9 198.0 19.7 25.1 -31.6 24.0 -32.0 26.2 -30.0 27.2 -32.2
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.561873
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:29:14.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:28:50', tmtdew=16.25, humidity=32.97, cloud=0.0, wind=12.74, temperature=16.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:29:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:29:14.430 [DEBUG] [Thread-159880] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:29:14.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:29:14.516 [DEBUG] [Thread-159883] [transport.py] [_log()] starting thread (client mode): 0x2e3dc820
2025-09-29T15:29:14.516 [DEBUG] [Thread-159883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:29:14.532 [DEBUG] [Thread-159883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:29:14.532 [INFO] [Thread-159883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:29:14.540 [DEBUG] [Thread-159883] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:29:14.540 [DEBUG] [Thread-159883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] client lang: <none>
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] server lang: <none>
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] kex follows: False
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] Compression: none
2025-09-29T15:29:14.541 [DEBUG] [Thread-159883] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:29:14.599 [DEBUG] [Thread-159883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:29:14.599 [DEBUG] [Thread-159883] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:29:14.600 [DEBUG] [Thread-159883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:29:14.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:29:14.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:29:14.655 [DEBUG] [Thread-159883] [transport.py] [_log()] userauth is OK
2025-09-29T15:29:14.655 [DEBUG] [Thread-159883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:29:14.655 [DEBUG] [Thread-159883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:29:14.664 [DEBUG] [Thread-159883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:29:14.664 [DEBUG] [Thread-159883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:29:14.684 [INFO] [Thread-159883] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:29:14.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:29:14.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:29:15.655 [DEBUG] [Thread-159883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:29:15.655 [DEBUG] [Thread-159883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:29:15.703 [DEBUG] [Thread-159883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:29:15.703 [DEBUG] [Thread-159883] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:29:15.712 [DEBUG] [Thread-159883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:29:15.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:29:15.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:29:15.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:29:15.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:29:15.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:29:15.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:29:15.746 [DEBUG] [Thread-159883] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:29:25.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:29:25.749 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:29:25.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:29:26.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 29, 22), 16.39, 32.67, 0.0, 15.49, 16.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:29:26.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:29:22
2025-09-29T15:29:26.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:29:26.459 [DEBUG] [Thread-159885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:29:26.599 [DEBUG] [Thread-159886] [transport.py] [_log()] starting thread (client mode): 0x2e3dca90
2025-09-29T15:29:26.599 [DEBUG] [Thread-159886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:29:26.619 [DEBUG] [Thread-159886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:29:26.619 [INFO] [Thread-159886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] client lang: <none>
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] server lang: <none>
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] kex follows: False
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] Compression: none
2025-09-29T15:29:26.621 [DEBUG] [Thread-159886] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:29:26.633 [DEBUG] [Thread-159886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:29:26.633 [DEBUG] [Thread-159886] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:29:26.633 [DEBUG] [Thread-159886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:29:26.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:29:26.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:29:26.634 [DEBUG] [Thread-159886] [transport.py] [_log()] userauth is OK
2025-09-29T15:29:26.634 [DEBUG] [Thread-159886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:29:26.634 [DEBUG] [Thread-159886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:29:26.634 [DEBUG] [Thread-159886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:29:26.634 [DEBUG] [Thread-159886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:29:26.646 [INFO] [Thread-159886] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:29:26.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:29:27.385 [DEBUG] [Thread-159886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:29:27.386 [DEBUG] [Thread-159886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:29:27.386 [DEBUG] [Thread-159886] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:29:27.426 [DEBUG] [Thread-159886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:29:27.426 [DEBUG] [Thread-159886] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:29:27.429 [DEBUG] [Thread-159886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:29:27.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:29:27.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:29:27.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:29:27.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:29:27.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:29:27.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:29:27.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:29:27.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:29:27.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:29:27.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.561873 -999.00  +16.90  15.93     37   +2.10 1 1 1 1 1   888    0 14.83 11.24 ----- 15.2 15.9 198.0 19.7 25.1 -31.6 24.0 -32.0 26.2 -30.0 27.2 -32.2
2025-09-29T15:29:27.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:29:27.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:29:27.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.561873
2025-09-29T15:29:27.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:29:27.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:29:27.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:29:27.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:29:27.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:29:27.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:29:22', tmtdew=16.39, humidity=32.67, cloud=0.0, wind=15.49, temperature=16.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:29:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:29:27.448 [DEBUG] [Thread-159886] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:29:27.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:29:27.544 [DEBUG] [Thread-159889] [transport.py] [_log()] starting thread (client mode): 0x2e3dcc10
2025-09-29T15:29:27.544 [DEBUG] [Thread-159889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:29:27.559 [DEBUG] [Thread-159889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:29:27.560 [INFO] [Thread-159889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:29:27.567 [DEBUG] [Thread-159889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] client lang: <none>
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] server lang: <none>
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] kex follows: False
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] Compression: none
2025-09-29T15:29:27.568 [DEBUG] [Thread-159889] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:29:27.625 [DEBUG] [Thread-159889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:29:27.626 [DEBUG] [Thread-159889] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:29:27.626 [DEBUG] [Thread-159889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:29:27.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:29:27.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:29:27.682 [DEBUG] [Thread-159889] [transport.py] [_log()] userauth is OK
2025-09-29T15:29:27.682 [DEBUG] [Thread-159889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:29:27.683 [DEBUG] [Thread-159889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:29:27.683 [DEBUG] [Thread-159889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:29:27.683 [DEBUG] [Thread-159889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:29:27.702 [INFO] [Thread-159889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:29:27.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:29:27.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:29:28.699 [DEBUG] [Thread-159889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:29:28.700 [DEBUG] [Thread-159889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:29:28.747 [DEBUG] [Thread-159889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:29:28.747 [DEBUG] [Thread-159889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:29:28.756 [DEBUG] [Thread-159889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:29:28.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:29:28.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:29:28.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:29:28.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:29:28.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:29:28.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:29:28.792 [DEBUG] [Thread-159889] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:29:38.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:29:38.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:29:38.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:29:39.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 29, 22), 16.39, 32.67, 0.0, 15.49, 16.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:29:39.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:29:22
2025-09-29T15:29:39.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:29:39.664 [DEBUG] [Thread-159891] [transport.py] [_log()] starting thread (client mode): 0x2b96b070
2025-09-29T15:29:39.664 [DEBUG] [Thread-159891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:29:39.684 [DEBUG] [Thread-159891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:29:39.685 [INFO] [Thread-159891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:29:39.688 [DEBUG] [Thread-159891] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:29:39.688 [DEBUG] [Thread-159891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:29:39.688 [DEBUG] [Thread-159891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:29:39.688 [DEBUG] [Thread-159891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:39.688 [DEBUG] [Thread-159891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:29:39.688 [DEBUG] [Thread-159891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:39.688 [DEBUG] [Thread-159891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:29:39.688 [DEBUG] [Thread-159891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] client lang: <none>
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] server lang: <none>
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] kex follows: False
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] Compression: none
2025-09-29T15:29:39.689 [DEBUG] [Thread-159891] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:29:39.708 [DEBUG] [Thread-159891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:29:39.708 [DEBUG] [Thread-159891] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:29:39.709 [DEBUG] [Thread-159891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:29:39.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:29:39.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:29:39.711 [DEBUG] [Thread-159891] [transport.py] [_log()] userauth is OK
2025-09-29T15:29:39.711 [DEBUG] [Thread-159891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:29:39.711 [DEBUG] [Thread-159891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:29:39.711 [DEBUG] [Thread-159891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:29:39.712 [DEBUG] [Thread-159891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:29:39.735 [INFO] [Thread-159891] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:29:39.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:29:40.506 [DEBUG] [Thread-159891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:29:40.506 [DEBUG] [Thread-159891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:29:40.506 [DEBUG] [Thread-159891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:29:40.547 [DEBUG] [Thread-159891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:29:40.547 [DEBUG] [Thread-159891] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:29:40.550 [DEBUG] [Thread-159891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:29:40.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:29:40.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:29:40.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:29:40.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:29:40.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:29:40.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:29:40.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:29:40.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:29:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:29:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.561873 -999.00  +16.90  15.93     37   +2.10 1 1 1 1 1   888    0 14.83 11.24 ----- 15.2 15.9 198.0 19.7 25.1 -31.6 24.0 -32.0 26.2 -30.0 27.2 -32.2
2025-09-29T15:29:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:29:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:29:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.561873
2025-09-29T15:29:40.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:29:40.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:29:40.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:29:40.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:29:40.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:29:40.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:29:22', tmtdew=16.39, humidity=32.67, cloud=0.0, wind=15.49, temperature=16.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:29:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:29:40.575 [DEBUG] [Thread-159891] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:29:40.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:29:41.491 [DEBUG] [Thread-159894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:29:46.606 [DEBUG] [Thread-159895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:29:56.539 [DEBUG] [Thread-159896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:30:11.565 [DEBUG] [Thread-159897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:30:13.247 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:30:13.248 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:30:26.594 [DEBUG] [Thread-159898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:30:41.623 [DEBUG] [Thread-159899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:30:46.639 [DEBUG] [Thread-159900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:30:56.652 [DEBUG] [Thread-159901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:31:11.683 [DEBUG] [Thread-159902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:31:13.386 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:31:13.387 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:31:26.712 [DEBUG] [Thread-159903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:31:41.739 [DEBUG] [Thread-159904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:31:46.672 [DEBUG] [Thread-159905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:31:52.891 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T15:31:56.771 [DEBUG] [Thread-159906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:32:02.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:32:02.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:32:02.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:32:03.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 31, 30), 16.51, 32.52, 0.0, 18.69, 16.2, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:32:03.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:31:30
2025-09-29T15:32:03.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:32:03.839 [DEBUG] [Thread-159907] [transport.py] [_log()] starting thread (client mode): 0x2e360070
2025-09-29T15:32:03.840 [DEBUG] [Thread-159907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:03.861 [DEBUG] [Thread-159907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:32:03.861 [INFO] [Thread-159907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:03.865 [DEBUG] [Thread-159907] [transport.py] [_log()] Compression: none
2025-09-29T15:32:03.866 [DEBUG] [Thread-159907] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:03.881 [DEBUG] [Thread-159907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:03.881 [DEBUG] [Thread-159907] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:03.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:32:03.881 [DEBUG] [Thread-159907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:32:03.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:03.882 [DEBUG] [Thread-159907] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:03.882 [DEBUG] [Thread-159907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:03.882 [DEBUG] [Thread-159907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:03.882 [DEBUG] [Thread-159907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:32:03.882 [DEBUG] [Thread-159907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:03.898 [INFO] [Thread-159907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:03.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:04.504 [DEBUG] [Thread-159907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:04.504 [DEBUG] [Thread-159907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:04.504 [DEBUG] [Thread-159907] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:32:04.545 [DEBUG] [Thread-159907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:04.545 [DEBUG] [Thread-159907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:04.547 [DEBUG] [Thread-159907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:04.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:04.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:32:04.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:32:04.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:32:04.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:04.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:32:04.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:04.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:04.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:32:04.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.563609 -999.00  +17.00  12.40     36   +2.10 1 1 1 1 1   888    0 14.80 15.16 ----- 16.1 12.4 193.8 18.6 24.6 -30.9 23.5 -33.8 25.7 -30.6 26.8 -31.7
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.563609
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:32:04.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:31:30', tmtdew=16.51, humidity=32.52, cloud=0.0, wind=18.69, temperature=16.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:31:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:32:04.570 [DEBUG] [Thread-159907] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:04.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:32:04.655 [DEBUG] [Thread-159910] [transport.py] [_log()] starting thread (client mode): 0x2e360fa0
2025-09-29T15:32:04.655 [DEBUG] [Thread-159910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:04.670 [DEBUG] [Thread-159910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:32:04.670 [INFO] [Thread-159910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:04.678 [DEBUG] [Thread-159910] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:04.679 [DEBUG] [Thread-159910] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:04.679 [DEBUG] [Thread-159910] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:04.679 [DEBUG] [Thread-159910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:04.679 [DEBUG] [Thread-159910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:04.679 [DEBUG] [Thread-159910] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:04.679 [DEBUG] [Thread-159910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:04.679 [DEBUG] [Thread-159910] [transport.py] [_log()] Compression: none
2025-09-29T15:32:04.679 [DEBUG] [Thread-159910] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:04.735 [DEBUG] [Thread-159910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:04.735 [DEBUG] [Thread-159910] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:04.735 [DEBUG] [Thread-159910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:32:04.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:32:04.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:04.792 [DEBUG] [Thread-159910] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:04.792 [DEBUG] [Thread-159910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:04.792 [DEBUG] [Thread-159910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:04.793 [DEBUG] [Thread-159910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:32:04.793 [DEBUG] [Thread-159910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:04.807 [INFO] [Thread-159910] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:04.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:32:04.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:05.808 [DEBUG] [Thread-159910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:05.808 [DEBUG] [Thread-159910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:05.856 [DEBUG] [Thread-159910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:05.856 [DEBUG] [Thread-159910] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:05.865 [DEBUG] [Thread-159910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:05.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:05.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:32:05.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:32:05.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:05.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:05.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:05.897 [DEBUG] [Thread-159910] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:11.808 [DEBUG] [Thread-159912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:32:13.535 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:32:13.536 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:32:15.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:32:15.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:32:15.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:32:16.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 32, 2), 16.46, 32.63, 0.0, 16.11, 16.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:32:16.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:32:02
2025-09-29T15:32:16.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:32:16.762 [DEBUG] [Thread-159913] [transport.py] [_log()] starting thread (client mode): 0x2b968a60
2025-09-29T15:32:16.762 [DEBUG] [Thread-159913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:16.782 [DEBUG] [Thread-159913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:32:16.782 [INFO] [Thread-159913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] Compression: none
2025-09-29T15:32:16.785 [DEBUG] [Thread-159913] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:16.802 [DEBUG] [Thread-159913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:16.802 [DEBUG] [Thread-159913] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:16.802 [DEBUG] [Thread-159913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:32:16.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:32:16.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:16.803 [DEBUG] [Thread-159913] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:16.803 [DEBUG] [Thread-159913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:16.803 [DEBUG] [Thread-159913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:16.803 [DEBUG] [Thread-159913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:32:16.803 [DEBUG] [Thread-159913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:16.813 [INFO] [Thread-159913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:16.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:17.459 [DEBUG] [Thread-159913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:17.459 [DEBUG] [Thread-159913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:17.459 [DEBUG] [Thread-159913] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:32:17.500 [DEBUG] [Thread-159913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:17.500 [DEBUG] [Thread-159913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:17.503 [DEBUG] [Thread-159913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:17.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:17.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:32:17.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:32:17.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:32:17.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:17.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:32:17.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:17.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:17.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:32:17.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.563609 -999.00  +17.00  12.40     36   +2.10 1 1 1 1 1   888    0 14.80 15.16 ----- 16.1 12.4 193.8 18.6 24.6 -30.9 23.5 -33.8 25.7 -30.6 26.8 -31.7
2025-09-29T15:32:17.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:32:17.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:32:17.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.563609
2025-09-29T15:32:17.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:32:17.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:32:17.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:32:17.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:32:17.528 [DEBUG] [Thread-159913] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:17.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:32:17.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:32:02', tmtdew=16.46, humidity=32.63, cloud=0.0, wind=16.11, temperature=16.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:31:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:32:17.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:32:17.623 [DEBUG] [Thread-159916] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd60
2025-09-29T15:32:17.623 [DEBUG] [Thread-159916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:17.637 [DEBUG] [Thread-159916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:32:17.637 [INFO] [Thread-159916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:32:17.645 [DEBUG] [Thread-159916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:17.645 [DEBUG] [Thread-159916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:32:17.645 [DEBUG] [Thread-159916] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] Compression: none
2025-09-29T15:32:17.646 [DEBUG] [Thread-159916] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:17.704 [DEBUG] [Thread-159916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:17.704 [DEBUG] [Thread-159916] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:17.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:32:17.706 [DEBUG] [Thread-159916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:32:17.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:17.759 [DEBUG] [Thread-159916] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:17.760 [DEBUG] [Thread-159916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:17.760 [DEBUG] [Thread-159916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:17.760 [DEBUG] [Thread-159916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:32:17.760 [DEBUG] [Thread-159916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:17.779 [INFO] [Thread-159916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:17.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:32:17.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:18.781 [DEBUG] [Thread-159916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:18.781 [DEBUG] [Thread-159916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:18.829 [DEBUG] [Thread-159916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:18.829 [DEBUG] [Thread-159916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:18.838 [DEBUG] [Thread-159916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:18.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:18.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:32:18.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:32:18.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:18.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:18.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:18.874 [DEBUG] [Thread-159916] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:26.855 [DEBUG] [Thread-159918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:32:28.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:32:28.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:32:28.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:32:29.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 32, 2), 16.46, 32.63, 0.0, 16.11, 16.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:32:29.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:32:02
2025-09-29T15:32:29.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:32:29.745 [DEBUG] [Thread-159919] [transport.py] [_log()] starting thread (client mode): 0x2e3dd5a0
2025-09-29T15:32:29.745 [DEBUG] [Thread-159919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:29.757 [DEBUG] [Thread-159919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:32:29.757 [INFO] [Thread-159919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:32:29.758 [DEBUG] [Thread-159919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:29.758 [DEBUG] [Thread-159919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] Compression: none
2025-09-29T15:32:29.759 [DEBUG] [Thread-159919] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:29.771 [DEBUG] [Thread-159919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:29.771 [DEBUG] [Thread-159919] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:29.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:32:29.772 [DEBUG] [Thread-159919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:32:29.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:29.774 [DEBUG] [Thread-159919] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:29.774 [DEBUG] [Thread-159919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:29.774 [DEBUG] [Thread-159919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:29.774 [DEBUG] [Thread-159919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:32:29.775 [DEBUG] [Thread-159919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:29.800 [INFO] [Thread-159919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:29.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:30.404 [DEBUG] [Thread-159919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:30.404 [DEBUG] [Thread-159919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:30.404 [DEBUG] [Thread-159919] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:32:30.445 [DEBUG] [Thread-159919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:30.446 [DEBUG] [Thread-159919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:30.448 [DEBUG] [Thread-159919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:30.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:30.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:32:30.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:32:30.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:32:30.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:30.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:32:30.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:30.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:32:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.563956 -999.00  +16.80  13.49     36   +1.90 1 1 1 1 1   888    0 14.95 16.79 ----- 18.5 13.5 203.6 20.4 24.4 -31.8 23.3 -33.1 25.6 -30.9 26.6 -32.3
2025-09-29T15:32:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:32:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:32:30.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.563956
2025-09-29T15:32:30.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:32:30.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:32:30.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:32:30.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:32:30.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:32:30.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:32:02', tmtdew=16.46, humidity=32.63, cloud=0.0, wind=16.11, temperature=16.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:32:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:32:30.474 [DEBUG] [Thread-159919] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:30.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:32:30.570 [DEBUG] [Thread-159922] [transport.py] [_log()] starting thread (client mode): 0x2e363ca0
2025-09-29T15:32:30.570 [DEBUG] [Thread-159922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:30.585 [DEBUG] [Thread-159922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:32:30.585 [INFO] [Thread-159922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:32:30.593 [DEBUG] [Thread-159922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:30.593 [DEBUG] [Thread-159922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:32:30.593 [DEBUG] [Thread-159922] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:30.594 [DEBUG] [Thread-159922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:30.595 [DEBUG] [Thread-159922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:30.595 [DEBUG] [Thread-159922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:30.595 [DEBUG] [Thread-159922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:30.595 [DEBUG] [Thread-159922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:30.595 [DEBUG] [Thread-159922] [transport.py] [_log()] Compression: none
2025-09-29T15:32:30.595 [DEBUG] [Thread-159922] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:30.651 [DEBUG] [Thread-159922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:30.651 [DEBUG] [Thread-159922] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:30.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:32:30.652 [DEBUG] [Thread-159922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:32:30.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:30.707 [DEBUG] [Thread-159922] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:30.707 [DEBUG] [Thread-159922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:30.707 [DEBUG] [Thread-159922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:30.707 [DEBUG] [Thread-159922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:32:30.707 [DEBUG] [Thread-159922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:30.726 [INFO] [Thread-159922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:30.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:32:30.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:31.713 [DEBUG] [Thread-159922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:31.713 [DEBUG] [Thread-159922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:31.761 [DEBUG] [Thread-159922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:31.761 [DEBUG] [Thread-159922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:31.770 [DEBUG] [Thread-159922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:31.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:31.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:32:31.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:32:31.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:31.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:31.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:31.805 [DEBUG] [Thread-159922] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:41.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:32:41.808 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:32:41.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:32:41.896 [DEBUG] [Thread-159924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:32:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 32, 34), 16.58, 32.37, 0.0, 15.86, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:32:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:32:34
2025-09-29T15:32:42.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:32:42.723 [DEBUG] [Thread-159925] [transport.py] [_log()] starting thread (client mode): 0x2e3def80
2025-09-29T15:32:42.723 [DEBUG] [Thread-159925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:42.744 [DEBUG] [Thread-159925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:32:42.744 [INFO] [Thread-159925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] Compression: none
2025-09-29T15:32:42.747 [DEBUG] [Thread-159925] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:42.765 [DEBUG] [Thread-159925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:42.765 [DEBUG] [Thread-159925] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:42.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:32:42.765 [DEBUG] [Thread-159925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:32:42.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:42.766 [DEBUG] [Thread-159925] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:42.766 [DEBUG] [Thread-159925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:42.766 [DEBUG] [Thread-159925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:42.766 [DEBUG] [Thread-159925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:32:42.766 [DEBUG] [Thread-159925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:42.781 [INFO] [Thread-159925] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:42.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:43.424 [DEBUG] [Thread-159925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:43.424 [DEBUG] [Thread-159925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:43.424 [DEBUG] [Thread-159925] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:32:43.466 [DEBUG] [Thread-159925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:43.466 [DEBUG] [Thread-159925] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:43.468 [DEBUG] [Thread-159925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:43.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:43.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:32:43.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:32:43.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:32:43.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:43.484 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:32:43.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:43.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:32:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.563956 -999.00  +16.80  13.49     36   +1.90 1 1 1 1 1   888    0 14.95 16.79 ----- 18.5 13.5 203.6 20.4 24.4 -31.8 23.3 -33.1 25.6 -30.9 26.6 -32.3
2025-09-29T15:32:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:32:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:32:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.563956
2025-09-29T15:32:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:32:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:32:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:32:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:32:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:32:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:32:34', tmtdew=16.58, humidity=32.37, cloud=0.0, wind=15.86, temperature=16.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:32:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:32:43.485 [DEBUG] [Thread-159925] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:43.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:32:43.570 [DEBUG] [Thread-159928] [transport.py] [_log()] starting thread (client mode): 0x2b9cc760
2025-09-29T15:32:43.570 [DEBUG] [Thread-159928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:43.585 [DEBUG] [Thread-159928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:32:43.585 [INFO] [Thread-159928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:32:43.592 [DEBUG] [Thread-159928] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:43.592 [DEBUG] [Thread-159928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:32:43.592 [DEBUG] [Thread-159928] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:43.592 [DEBUG] [Thread-159928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:43.592 [DEBUG] [Thread-159928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:43.592 [DEBUG] [Thread-159928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:43.592 [DEBUG] [Thread-159928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] Compression: none
2025-09-29T15:32:43.593 [DEBUG] [Thread-159928] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:43.648 [DEBUG] [Thread-159928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:43.648 [DEBUG] [Thread-159928] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:43.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:32:43.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:43.649 [DEBUG] [Thread-159928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:32:43.705 [DEBUG] [Thread-159928] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:43.705 [DEBUG] [Thread-159928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:43.706 [DEBUG] [Thread-159928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:43.706 [DEBUG] [Thread-159928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:32:43.706 [DEBUG] [Thread-159928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:43.719 [INFO] [Thread-159928] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:43.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:32:43.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:44.690 [DEBUG] [Thread-159928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:44.690 [DEBUG] [Thread-159928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:44.738 [DEBUG] [Thread-159928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:44.738 [DEBUG] [Thread-159928] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:44.746 [DEBUG] [Thread-159928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:44.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:44.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:32:44.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:32:44.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:44.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:44.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:44.777 [DEBUG] [Thread-159928] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:46.699 [DEBUG] [Thread-159930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:32:54.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:32:54.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:32:54.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:32:55.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 32, 34), 16.58, 32.37, 0.0, 15.86, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:32:55.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:32:34
2025-09-29T15:32:55.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:32:55.649 [DEBUG] [Thread-159931] [transport.py] [_log()] starting thread (client mode): 0x2b96b2e0
2025-09-29T15:32:55.649 [DEBUG] [Thread-159931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:32:55.669 [DEBUG] [Thread-159931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:32:55.669 [INFO] [Thread-159931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:32:55.672 [DEBUG] [Thread-159931] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:32:55.672 [DEBUG] [Thread-159931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:32:55.672 [DEBUG] [Thread-159931] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:32:55.672 [DEBUG] [Thread-159931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] client lang: <none>
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] server lang: <none>
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] kex follows: False
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] Compression: none
2025-09-29T15:32:55.673 [DEBUG] [Thread-159931] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:32:55.690 [DEBUG] [Thread-159931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:32:55.691 [DEBUG] [Thread-159931] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:32:55.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:32:55.693 [DEBUG] [Thread-159931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:32:55.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:32:55.695 [DEBUG] [Thread-159931] [transport.py] [_log()] userauth is OK
2025-09-29T15:32:55.695 [DEBUG] [Thread-159931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:32:55.695 [DEBUG] [Thread-159931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:32:55.695 [DEBUG] [Thread-159931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:32:55.696 [DEBUG] [Thread-159931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:32:55.719 [INFO] [Thread-159931] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:32:55.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:32:56.368 [DEBUG] [Thread-159931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:32:56.368 [DEBUG] [Thread-159931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:32:56.368 [DEBUG] [Thread-159931] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:32:56.408 [DEBUG] [Thread-159931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:32:56.409 [DEBUG] [Thread-159931] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:32:56.411 [DEBUG] [Thread-159931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:32:56.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:32:56.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:32:56.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:32:56.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:32:56.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:32:56.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:32:56.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:32:56.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:32:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:32:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.563956 -999.00  +16.80  13.49     36   +1.90 1 1 1 1 1   888    0 14.95 16.79 ----- 18.5 13.5 203.6 20.4 24.4 -31.8 23.3 -33.1 25.6 -30.9 26.6 -32.3
2025-09-29T15:32:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:32:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:32:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.563956
2025-09-29T15:32:56.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:32:56.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:32:56.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:32:56.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:32:56.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:32:56.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:32:34', tmtdew=16.58, humidity=32.37, cloud=0.0, wind=15.86, temperature=16.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:32:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:32:56.438 [DEBUG] [Thread-159931] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:32:56.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:32:56.929 [DEBUG] [Thread-159934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:33:11.974 [DEBUG] [Thread-159935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:33:13.676 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:33:13.677 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:33:27.006 [DEBUG] [Thread-159936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:33:42.037 [DEBUG] [Thread-159937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:33:46.736 [DEBUG] [Thread-159938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:33:57.072 [DEBUG] [Thread-159939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:34:12.101 [DEBUG] [Thread-159940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:34:13.817 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:34:13.818 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:34:27.132 [DEBUG] [Thread-159941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:34:42.161 [DEBUG] [Thread-159942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:34:46.771 [DEBUG] [Thread-159943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:34:57.189 [DEBUG] [Thread-159944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:35:09.498 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T15:35:12.216 [DEBUG] [Thread-159945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:35:13.955 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:35:13.956 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:35:19.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:35:19.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:35:19.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:35:20.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 35, 13), 16.31, 32.6, 0.0, 12.62, 15.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:35:20.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:35:13
2025-09-29T15:35:20.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:35:20.378 [DEBUG] [Thread-159946] [transport.py] [_log()] starting thread (client mode): 0x2b9cd900
2025-09-29T15:35:20.378 [DEBUG] [Thread-159946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:35:20.390 [DEBUG] [Thread-159946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:35:20.390 [INFO] [Thread-159946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:35:20.393 [DEBUG] [Thread-159946] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:35:20.393 [DEBUG] [Thread-159946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:35:20.393 [DEBUG] [Thread-159946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:35:20.393 [DEBUG] [Thread-159946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] client lang: <none>
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] server lang: <none>
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] kex follows: False
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] Compression: none
2025-09-29T15:35:20.394 [DEBUG] [Thread-159946] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:35:20.411 [DEBUG] [Thread-159946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:35:20.411 [DEBUG] [Thread-159946] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:35:20.412 [DEBUG] [Thread-159946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:35:20.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:35:20.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:35:20.414 [DEBUG] [Thread-159946] [transport.py] [_log()] userauth is OK
2025-09-29T15:35:20.414 [DEBUG] [Thread-159946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:35:20.414 [DEBUG] [Thread-159946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:35:20.414 [DEBUG] [Thread-159946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:35:20.414 [DEBUG] [Thread-159946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:35:20.432 [INFO] [Thread-159946] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:35:20.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:35:21.002 [DEBUG] [Thread-159946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:35:21.003 [DEBUG] [Thread-159946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:35:21.003 [DEBUG] [Thread-159946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:35:21.043 [DEBUG] [Thread-159946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:35:21.044 [DEBUG] [Thread-159946] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:35:21.047 [DEBUG] [Thread-159946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:35:21.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:35:21.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:35:21.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:35:21.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:35:21.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:35:21.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:35:21.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:35:21.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:35:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:35:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.566039 -999.00  +16.10  12.97     37   +1.70 1 1 1 1 1   888    0 15.23 22.07 ----- 12.7 13.0 131.0 17.9 24.3 -29.1 23.6 -28.5 25.5 -29.4 26.7 -29.8
2025-09-29T15:35:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:35:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:35:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.566039
2025-09-29T15:35:21.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:35:21.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:35:21.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:35:21.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:35:21.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:35:21.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:35:13', tmtdew=16.31, humidity=32.6, cloud=0.0, wind=12.62, temperature=15.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:35:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:35:21.073 [DEBUG] [Thread-159946] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:35:21.158 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:35:21.169 [DEBUG] [Thread-159949] [transport.py] [_log()] starting thread (client mode): 0x2e363340
2025-09-29T15:35:21.169 [DEBUG] [Thread-159949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:35:21.184 [DEBUG] [Thread-159949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:35:21.184 [INFO] [Thread-159949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:35:21.191 [DEBUG] [Thread-159949] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:35:21.191 [DEBUG] [Thread-159949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:35:21.191 [DEBUG] [Thread-159949] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:35:21.191 [DEBUG] [Thread-159949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] client lang: <none>
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] server lang: <none>
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] kex follows: False
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] Compression: none
2025-09-29T15:35:21.192 [DEBUG] [Thread-159949] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:35:21.250 [DEBUG] [Thread-159949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:35:21.251 [DEBUG] [Thread-159949] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:35:21.251 [DEBUG] [Thread-159949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:35:21.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:35:21.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:35:21.306 [DEBUG] [Thread-159949] [transport.py] [_log()] userauth is OK
2025-09-29T15:35:21.307 [DEBUG] [Thread-159949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:35:21.307 [DEBUG] [Thread-159949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:35:21.307 [DEBUG] [Thread-159949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:35:21.307 [DEBUG] [Thread-159949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:35:21.329 [INFO] [Thread-159949] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:35:21.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:35:21.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:35:22.289 [DEBUG] [Thread-159949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:35:22.289 [DEBUG] [Thread-159949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:35:22.337 [DEBUG] [Thread-159949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:35:22.337 [DEBUG] [Thread-159949] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:35:22.346 [DEBUG] [Thread-159949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:35:22.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:35:22.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:35:22.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:35:22.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:35:22.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:35:22.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:35:22.381 [DEBUG] [Thread-159949] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:35:27.241 [DEBUG] [Thread-159951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:35:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:35:32.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:35:32.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:35:32.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 35, 13), 16.31, 32.6, 0.0, 12.62, 15.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:35:32.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:35:13
2025-09-29T15:35:33.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:35:33.237 [DEBUG] [Thread-159952] [transport.py] [_log()] starting thread (client mode): 0x2b969ed0
2025-09-29T15:35:33.237 [DEBUG] [Thread-159952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:35:33.258 [DEBUG] [Thread-159952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:35:33.258 [INFO] [Thread-159952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:35:33.261 [DEBUG] [Thread-159952] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:35:33.261 [DEBUG] [Thread-159952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:35:33.261 [DEBUG] [Thread-159952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:35:33.261 [DEBUG] [Thread-159952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:33.261 [DEBUG] [Thread-159952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:33.261 [DEBUG] [Thread-159952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] client lang: <none>
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] server lang: <none>
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] kex follows: False
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] Compression: none
2025-09-29T15:35:33.262 [DEBUG] [Thread-159952] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:35:33.278 [DEBUG] [Thread-159952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:35:33.279 [DEBUG] [Thread-159952] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:35:33.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:35:33.280 [DEBUG] [Thread-159952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:35:33.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:35:33.282 [DEBUG] [Thread-159952] [transport.py] [_log()] userauth is OK
2025-09-29T15:35:33.282 [DEBUG] [Thread-159952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:35:33.282 [DEBUG] [Thread-159952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:35:33.282 [DEBUG] [Thread-159952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:35:33.282 [DEBUG] [Thread-159952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:35:33.306 [INFO] [Thread-159952] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:35:33.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:35:33.953 [DEBUG] [Thread-159952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:35:33.955 [DEBUG] [Thread-159952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:35:33.956 [DEBUG] [Thread-159952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:35:33.994 [DEBUG] [Thread-159952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:35:33.994 [DEBUG] [Thread-159952] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:35:33.997 [DEBUG] [Thread-159952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:35:34.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:35:34.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:35:34.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:35:34.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:35:34.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:35:34.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:35:34.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:35:34.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:35:34.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:35:34.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.566039 -999.00  +16.10  12.97     37   +1.70 1 1 1 1 1   888    0 15.23 22.07 ----- 12.7 13.0 131.0 17.9 24.3 -29.1 23.6 -28.5 25.5 -29.4 26.7 -29.8
2025-09-29T15:35:34.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:35:34.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:35:34.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.566039
2025-09-29T15:35:34.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:35:34.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:35:34.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:35:34.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:35:34.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:35:34.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:35:13', tmtdew=16.31, humidity=32.6, cloud=0.0, wind=12.62, temperature=15.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:35:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:35:34.022 [DEBUG] [Thread-159952] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:35:34.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:35:34.115 [DEBUG] [Thread-159955] [transport.py] [_log()] starting thread (client mode): 0x2b969ae0
2025-09-29T15:35:34.115 [DEBUG] [Thread-159955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:35:34.132 [DEBUG] [Thread-159955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:35:34.133 [INFO] [Thread-159955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:35:34.140 [DEBUG] [Thread-159955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:35:34.141 [DEBUG] [Thread-159955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:35:34.141 [DEBUG] [Thread-159955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:35:34.141 [DEBUG] [Thread-159955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:34.141 [DEBUG] [Thread-159955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:34.141 [DEBUG] [Thread-159955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:34.141 [DEBUG] [Thread-159955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:34.141 [DEBUG] [Thread-159955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:35:34.141 [DEBUG] [Thread-159955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:35:34.142 [DEBUG] [Thread-159955] [transport.py] [_log()] client lang: <none>
2025-09-29T15:35:34.142 [DEBUG] [Thread-159955] [transport.py] [_log()] server lang: <none>
2025-09-29T15:35:34.142 [DEBUG] [Thread-159955] [transport.py] [_log()] kex follows: False
2025-09-29T15:35:34.142 [DEBUG] [Thread-159955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:35:34.142 [DEBUG] [Thread-159955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:35:34.142 [DEBUG] [Thread-159955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:35:34.142 [DEBUG] [Thread-159955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:35:34.143 [DEBUG] [Thread-159955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:35:34.143 [DEBUG] [Thread-159955] [transport.py] [_log()] Compression: none
2025-09-29T15:35:34.143 [DEBUG] [Thread-159955] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:35:34.198 [DEBUG] [Thread-159955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:35:34.198 [DEBUG] [Thread-159955] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:35:34.199 [DEBUG] [Thread-159955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:35:34.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:35:34.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:35:34.254 [DEBUG] [Thread-159955] [transport.py] [_log()] userauth is OK
2025-09-29T15:35:34.255 [DEBUG] [Thread-159955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:35:34.255 [DEBUG] [Thread-159955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:35:34.255 [DEBUG] [Thread-159955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:35:34.255 [DEBUG] [Thread-159955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:35:34.275 [INFO] [Thread-159955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:35:34.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:35:34.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:35:35.239 [DEBUG] [Thread-159955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:35:35.239 [DEBUG] [Thread-159955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:35:35.287 [DEBUG] [Thread-159955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:35:35.287 [DEBUG] [Thread-159955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:35:35.296 [DEBUG] [Thread-159955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:35:35.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:35:35.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:35:35.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:35:35.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:35:35.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:35:35.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:35:35.332 [DEBUG] [Thread-159955] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:35:42.290 [DEBUG] [Thread-159957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:35:45.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:35:45.333 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:35:45.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:35:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 35, 13), 16.31, 32.6, 0.0, 12.62, 15.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:35:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:35:13
2025-09-29T15:35:46.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:35:46.206 [DEBUG] [Thread-159958] [transport.py] [_log()] starting thread (client mode): 0x2e3f8280
2025-09-29T15:35:46.206 [DEBUG] [Thread-159958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:35:46.219 [DEBUG] [Thread-159958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:35:46.219 [INFO] [Thread-159958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:35:46.220 [DEBUG] [Thread-159958] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] client lang: <none>
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] server lang: <none>
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] kex follows: False
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] Compression: none
2025-09-29T15:35:46.221 [DEBUG] [Thread-159958] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:35:46.234 [DEBUG] [Thread-159958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:35:46.234 [DEBUG] [Thread-159958] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:35:46.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:35:46.235 [DEBUG] [Thread-159958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:35:46.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:35:46.235 [DEBUG] [Thread-159958] [transport.py] [_log()] userauth is OK
2025-09-29T15:35:46.235 [DEBUG] [Thread-159958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:35:46.236 [DEBUG] [Thread-159958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:35:46.236 [DEBUG] [Thread-159958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:35:46.236 [DEBUG] [Thread-159958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:35:46.248 [INFO] [Thread-159958] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:35:46.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:35:46.800 [DEBUG] [Thread-159960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:35:46.915 [DEBUG] [Thread-159958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:35:46.915 [DEBUG] [Thread-159958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:35:46.916 [DEBUG] [Thread-159958] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:35:46.956 [DEBUG] [Thread-159958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:35:46.956 [DEBUG] [Thread-159958] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:35:46.959 [DEBUG] [Thread-159958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:35:46.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:35:46.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:35:46.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:35:46.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:35:46.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:35:46.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:35:46.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:35:46.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.566039 -999.00  +16.10  12.97     37   +1.70 1 1 1 1 1   888    0 15.23 22.07 ----- 12.7 13.0 131.0 17.9 24.3 -29.1 23.6 -28.5 25.5 -29.4 26.7 -29.8
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.566039
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:35:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:35:13', tmtdew=16.31, humidity=32.6, cloud=0.0, wind=12.62, temperature=15.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:35:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:35:46.977 [DEBUG] [Thread-159958] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:35:47.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:35:47.063 [DEBUG] [Thread-159962] [transport.py] [_log()] starting thread (client mode): 0x30ddca90
2025-09-29T15:35:47.063 [DEBUG] [Thread-159962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:35:47.080 [DEBUG] [Thread-159962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:35:47.080 [INFO] [Thread-159962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] client lang: <none>
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] server lang: <none>
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] kex follows: False
2025-09-29T15:35:47.087 [DEBUG] [Thread-159962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:35:47.088 [DEBUG] [Thread-159962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:35:47.088 [DEBUG] [Thread-159962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:35:47.088 [DEBUG] [Thread-159962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:35:47.088 [DEBUG] [Thread-159962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:35:47.088 [DEBUG] [Thread-159962] [transport.py] [_log()] Compression: none
2025-09-29T15:35:47.088 [DEBUG] [Thread-159962] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:35:47.145 [DEBUG] [Thread-159962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:35:47.145 [DEBUG] [Thread-159962] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:35:47.145 [DEBUG] [Thread-159962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:35:47.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:35:47.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:35:47.201 [DEBUG] [Thread-159962] [transport.py] [_log()] userauth is OK
2025-09-29T15:35:47.201 [DEBUG] [Thread-159962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:35:47.201 [DEBUG] [Thread-159962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:35:47.201 [DEBUG] [Thread-159962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:35:47.201 [DEBUG] [Thread-159962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:35:47.215 [INFO] [Thread-159962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:35:47.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:35:47.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:35:48.174 [DEBUG] [Thread-159962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:35:48.175 [DEBUG] [Thread-159962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:35:48.222 [DEBUG] [Thread-159962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:35:48.223 [DEBUG] [Thread-159962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:35:48.231 [DEBUG] [Thread-159962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:35:48.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:35:48.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:35:48.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:35:48.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:35:48.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:35:48.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:35:48.265 [DEBUG] [Thread-159962] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:35:57.317 [DEBUG] [Thread-159964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:35:58.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:35:58.268 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:35:58.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:35:58.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 35, 45), 16.17, 33.08, 0.0, 13.43, 15.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:35:58.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:35:45
2025-09-29T15:35:58.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:35:59.134 [DEBUG] [Thread-159965] [transport.py] [_log()] starting thread (client mode): 0x2e3f99c0
2025-09-29T15:35:59.134 [DEBUG] [Thread-159965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:35:59.155 [DEBUG] [Thread-159965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:35:59.155 [INFO] [Thread-159965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] client lang: <none>
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] server lang: <none>
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] kex follows: False
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] Compression: none
2025-09-29T15:35:59.158 [DEBUG] [Thread-159965] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:35:59.166 [DEBUG] [Thread-159965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:35:59.166 [DEBUG] [Thread-159965] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:35:59.167 [DEBUG] [Thread-159965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:35:59.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:35:59.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:35:59.169 [DEBUG] [Thread-159965] [transport.py] [_log()] userauth is OK
2025-09-29T15:35:59.169 [DEBUG] [Thread-159965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:35:59.169 [DEBUG] [Thread-159965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:35:59.169 [DEBUG] [Thread-159965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:35:59.169 [DEBUG] [Thread-159965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:35:59.186 [INFO] [Thread-159965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:35:59.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:35:59.825 [DEBUG] [Thread-159965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:35:59.825 [DEBUG] [Thread-159965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:35:59.835 [DEBUG] [Thread-159965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:35:59.866 [DEBUG] [Thread-159965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:35:59.867 [DEBUG] [Thread-159965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:35:59.870 [DEBUG] [Thread-159965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:35:59.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:35:59.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:35:59.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:35:59.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:35:59.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:35:59.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:35:59.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:35:59.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:35:59.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:35:59.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.566387 -999.00  +16.30   8.47     37   +1.90 1 1 1 1 1   888    0 15.33 25.24 ----- 12.7 8.5 130.3 15.4 24.3 -29.3 23.7 -28.9 25.6 -29.6 26.7 -30.8
2025-09-29T15:35:59.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:35:59.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:35:59.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.566387
2025-09-29T15:35:59.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:35:59.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:35:59.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:35:59.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:35:59.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:35:59.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:35:45', tmtdew=16.17, humidity=33.08, cloud=0.0, wind=13.43, temperature=15.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:35:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:35:59.898 [DEBUG] [Thread-159965] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:35:59.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:35:59.994 [DEBUG] [Thread-159968] [transport.py] [_log()] starting thread (client mode): 0x2e3f82b0
2025-09-29T15:35:59.994 [DEBUG] [Thread-159968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:00.009 [DEBUG] [Thread-159968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:36:00.009 [INFO] [Thread-159968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:36:00.016 [DEBUG] [Thread-159968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:00.016 [DEBUG] [Thread-159968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] Compression: none
2025-09-29T15:36:00.017 [DEBUG] [Thread-159968] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:00.073 [DEBUG] [Thread-159968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:00.073 [DEBUG] [Thread-159968] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:00.074 [DEBUG] [Thread-159968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:36:00.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:36:00.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:00.129 [DEBUG] [Thread-159968] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:00.129 [DEBUG] [Thread-159968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:00.129 [DEBUG] [Thread-159968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:00.129 [DEBUG] [Thread-159968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:36:00.130 [DEBUG] [Thread-159968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:00.148 [INFO] [Thread-159968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:00.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:36:00.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:01.113 [DEBUG] [Thread-159968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:01.114 [DEBUG] [Thread-159968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:01.162 [DEBUG] [Thread-159968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:01.162 [DEBUG] [Thread-159968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:01.175 [DEBUG] [Thread-159968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:01.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:01.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:36:01.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:36:01.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:01.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:01.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:01.216 [DEBUG] [Thread-159968] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:11.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:36:11.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:36:11.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:36:11.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 35, 45), 16.17, 33.08, 0.0, 13.43, 15.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:36:11.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:35:45
2025-09-29T15:36:11.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:36:12.084 [DEBUG] [Thread-159970] [transport.py] [_log()] starting thread (client mode): 0x2e3613c0
2025-09-29T15:36:12.084 [DEBUG] [Thread-159970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:12.104 [DEBUG] [Thread-159970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:36:12.104 [INFO] [Thread-159970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:36:12.107 [DEBUG] [Thread-159970] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:12.107 [DEBUG] [Thread-159970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:36:12.107 [DEBUG] [Thread-159970] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:12.107 [DEBUG] [Thread-159970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:12.107 [DEBUG] [Thread-159970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:12.107 [DEBUG] [Thread-159970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:12.107 [DEBUG] [Thread-159970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] Compression: none
2025-09-29T15:36:12.108 [DEBUG] [Thread-159970] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:12.126 [DEBUG] [Thread-159970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:12.126 [DEBUG] [Thread-159970] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:12.127 [DEBUG] [Thread-159970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:36:12.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:36:12.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:12.129 [DEBUG] [Thread-159970] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:12.129 [DEBUG] [Thread-159970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:12.129 [DEBUG] [Thread-159970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:12.129 [DEBUG] [Thread-159970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:36:12.129 [DEBUG] [Thread-159970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:12.147 [INFO] [Thread-159970] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:12.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:12.344 [DEBUG] [Thread-159972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:36:12.825 [DEBUG] [Thread-159970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:12.825 [DEBUG] [Thread-159970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:12.825 [DEBUG] [Thread-159970] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:36:12.866 [DEBUG] [Thread-159970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:12.866 [DEBUG] [Thread-159970] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:12.868 [DEBUG] [Thread-159970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:12.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:12.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:36:12.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:36:12.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:36:12.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:12.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:36:12.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.566387 -999.00  +16.30   8.47     37   +1.90 1 1 1 1 1   888    0 15.33 25.24 ----- 12.7 8.5 130.3 15.4 24.3 -29.3 23.7 -28.9 25.6 -29.6 26.7 -30.8
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.566387
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:36:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:35:45', tmtdew=16.17, humidity=33.08, cloud=0.0, wind=13.43, temperature=15.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:35:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:36:12.885 [DEBUG] [Thread-159970] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:12.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:36:12.972 [DEBUG] [Thread-159974] [transport.py] [_log()] starting thread (client mode): 0x2e3df370
2025-09-29T15:36:12.972 [DEBUG] [Thread-159974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:12.991 [DEBUG] [Thread-159974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:36:12.991 [INFO] [Thread-159974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:36:12.999 [DEBUG] [Thread-159974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:12.999 [DEBUG] [Thread-159974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:36:12.999 [DEBUG] [Thread-159974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:12.999 [DEBUG] [Thread-159974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:12.999 [DEBUG] [Thread-159974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:12.999 [DEBUG] [Thread-159974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:12.999 [DEBUG] [Thread-159974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] Compression: none
2025-09-29T15:36:13.000 [DEBUG] [Thread-159974] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:13.063 [DEBUG] [Thread-159974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:13.064 [DEBUG] [Thread-159974] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:13.064 [DEBUG] [Thread-159974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:36:13.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:36:13.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:13.125 [DEBUG] [Thread-159974] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:13.125 [DEBUG] [Thread-159974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:13.125 [DEBUG] [Thread-159974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:13.125 [DEBUG] [Thread-159974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:36:13.125 [DEBUG] [Thread-159974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:13.145 [INFO] [Thread-159974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:13.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:36:13.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:14.095 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:36:14.095 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:36:14.104 [DEBUG] [Thread-159974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:14.104 [DEBUG] [Thread-159974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:14.152 [DEBUG] [Thread-159974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:14.152 [DEBUG] [Thread-159974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:14.161 [DEBUG] [Thread-159974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:14.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:14.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:36:14.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:36:14.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:14.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:14.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:14.202 [DEBUG] [Thread-159974] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:24.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:36:24.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:36:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:36:24.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 36, 17), 16.19, 33.05, 0.0, 12.9, 15.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:36:24.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:36:17
2025-09-29T15:36:24.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:36:25.065 [DEBUG] [Thread-159976] [transport.py] [_log()] starting thread (client mode): 0x30ddeef0
2025-09-29T15:36:25.065 [DEBUG] [Thread-159976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:25.083 [DEBUG] [Thread-159976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:36:25.083 [INFO] [Thread-159976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] Compression: none
2025-09-29T15:36:25.084 [DEBUG] [Thread-159976] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:25.092 [DEBUG] [Thread-159976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:25.092 [DEBUG] [Thread-159976] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:25.092 [DEBUG] [Thread-159976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:36:25.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:36:25.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:25.093 [DEBUG] [Thread-159976] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:25.094 [DEBUG] [Thread-159976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:25.094 [DEBUG] [Thread-159976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:25.094 [DEBUG] [Thread-159976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:36:25.094 [DEBUG] [Thread-159976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:25.108 [INFO] [Thread-159976] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:25.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:25.668 [DEBUG] [Thread-159976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:25.668 [DEBUG] [Thread-159976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:25.668 [DEBUG] [Thread-159976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:36:25.709 [DEBUG] [Thread-159976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:25.709 [DEBUG] [Thread-159976] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:25.712 [DEBUG] [Thread-159976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:25.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:25.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:36:25.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:36:25.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:36:25.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:25.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:36:25.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:25.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:25.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:36:25.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.566387 -999.00  +16.30   8.47     37   +1.90 1 1 1 1 1   888    0 15.33 25.24 ----- 12.7 8.5 130.3 15.4 24.3 -29.3 23.7 -28.9 25.6 -29.6 26.7 -30.8
2025-09-29T15:36:25.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:36:25.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:36:25.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.566387
2025-09-29T15:36:25.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:36:25.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:36:25.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:36:25.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:36:25.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:36:25.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:36:17', tmtdew=16.19, humidity=33.05, cloud=0.0, wind=12.9, temperature=15.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:35:35.837', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:36:25.739 [DEBUG] [Thread-159976] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:25.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:36:25.834 [DEBUG] [Thread-159979] [transport.py] [_log()] starting thread (client mode): 0x2b94c550
2025-09-29T15:36:25.834 [DEBUG] [Thread-159979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:25.849 [DEBUG] [Thread-159979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:36:25.849 [INFO] [Thread-159979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:36:25.856 [DEBUG] [Thread-159979] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:25.856 [DEBUG] [Thread-159979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:25.857 [DEBUG] [Thread-159979] [transport.py] [_log()] Compression: none
2025-09-29T15:36:25.858 [DEBUG] [Thread-159979] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:25.916 [DEBUG] [Thread-159979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:25.917 [DEBUG] [Thread-159979] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:25.917 [DEBUG] [Thread-159979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:36:25.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:36:25.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:25.976 [DEBUG] [Thread-159979] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:25.977 [DEBUG] [Thread-159979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:25.977 [DEBUG] [Thread-159979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:25.977 [DEBUG] [Thread-159979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:36:25.977 [DEBUG] [Thread-159979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:25.995 [INFO] [Thread-159979] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:25.996 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:36:25.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:26.992 [DEBUG] [Thread-159979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:26.993 [DEBUG] [Thread-159979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:27.040 [DEBUG] [Thread-159979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:27.040 [DEBUG] [Thread-159979] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:27.049 [DEBUG] [Thread-159979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:27.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:27.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:36:27.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:36:27.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:27.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:27.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:27.084 [DEBUG] [Thread-159979] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:27.389 [DEBUG] [Thread-159981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:36:37.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:36:37.087 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:36:37.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:36:37.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 36, 17), 16.19, 33.05, 0.0, 12.9, 15.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:36:37.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:36:17
2025-09-29T15:36:37.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:36:37.956 [DEBUG] [Thread-159982] [transport.py] [_log()] starting thread (client mode): 0x30ddeb90
2025-09-29T15:36:37.957 [DEBUG] [Thread-159982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:37.976 [DEBUG] [Thread-159982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:36:37.976 [INFO] [Thread-159982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:36:37.978 [DEBUG] [Thread-159982] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:37.978 [DEBUG] [Thread-159982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:36:37.978 [DEBUG] [Thread-159982] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:37.978 [DEBUG] [Thread-159982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:37.978 [DEBUG] [Thread-159982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:37.978 [DEBUG] [Thread-159982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:37.978 [DEBUG] [Thread-159982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:37.978 [DEBUG] [Thread-159982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] Compression: none
2025-09-29T15:36:37.979 [DEBUG] [Thread-159982] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:37.991 [DEBUG] [Thread-159982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:37.991 [DEBUG] [Thread-159982] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:37.991 [DEBUG] [Thread-159982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:36:37.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:36:37.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:37.993 [DEBUG] [Thread-159982] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:37.993 [DEBUG] [Thread-159982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:37.993 [DEBUG] [Thread-159982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:37.993 [DEBUG] [Thread-159982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:36:37.993 [DEBUG] [Thread-159982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:38.004 [INFO] [Thread-159982] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:38.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:38.551 [DEBUG] [Thread-159982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:38.551 [DEBUG] [Thread-159982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:38.551 [DEBUG] [Thread-159982] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:36:38.592 [DEBUG] [Thread-159982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:38.592 [DEBUG] [Thread-159982] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:38.594 [DEBUG] [Thread-159982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:38.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:38.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:36:38.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:36:38.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:36:38.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:38.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:36:38.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:38.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:38.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:36:38.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.566734 -999.00  +16.10  15.33     37   +1.70 1 1 1 1 1   888    0 15.13 22.98 ----- 13.1 15.3 105.8 16.3 24.1 -31.6 23.8 -28.9 25.6 -31.3 26.7 -30.9
2025-09-29T15:36:38.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:36:38.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:36:38.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.566734
2025-09-29T15:36:38.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:36:38.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:36:38.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:36:38.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:36:38.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:36:38.611 [DEBUG] [Thread-159982] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:38.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:36:17', tmtdew=16.19, humidity=33.05, cloud=0.0, wind=12.9, temperature=15.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:36:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:36:38.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:36:38.707 [DEBUG] [Thread-159985] [transport.py] [_log()] starting thread (client mode): 0x2b9cf8e0
2025-09-29T15:36:38.707 [DEBUG] [Thread-159985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:38.722 [DEBUG] [Thread-159985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:36:38.722 [INFO] [Thread-159985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:38.730 [DEBUG] [Thread-159985] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:38.731 [DEBUG] [Thread-159985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:38.731 [DEBUG] [Thread-159985] [transport.py] [_log()] Compression: none
2025-09-29T15:36:38.731 [DEBUG] [Thread-159985] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:38.788 [DEBUG] [Thread-159985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:38.788 [DEBUG] [Thread-159985] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:38.788 [DEBUG] [Thread-159985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:36:38.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:36:38.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:38.844 [DEBUG] [Thread-159985] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:38.844 [DEBUG] [Thread-159985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:38.844 [DEBUG] [Thread-159985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:38.844 [DEBUG] [Thread-159985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:36:38.844 [DEBUG] [Thread-159985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:38.864 [INFO] [Thread-159985] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:38.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:36:38.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:39.845 [DEBUG] [Thread-159985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:39.845 [DEBUG] [Thread-159985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:39.893 [DEBUG] [Thread-159985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:39.894 [DEBUG] [Thread-159985] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:39.903 [DEBUG] [Thread-159985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:39.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:39.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:36:39.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:36:39.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:39.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:39.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:39.937 [DEBUG] [Thread-159985] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:42.426 [DEBUG] [Thread-159987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:36:46.832 [DEBUG] [Thread-159988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:36:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:36:49.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:36:49.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:36:50.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 36, 17), 16.19, 33.05, 0.0, 12.9, 15.66, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:36:50.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:36:17
2025-09-29T15:36:50.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:36:50.847 [DEBUG] [Thread-159989] [transport.py] [_log()] starting thread (client mode): 0x2e3df550
2025-09-29T15:36:50.847 [DEBUG] [Thread-159989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:50.867 [DEBUG] [Thread-159989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:36:50.868 [INFO] [Thread-159989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] Compression: none
2025-09-29T15:36:50.871 [DEBUG] [Thread-159989] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:50.887 [DEBUG] [Thread-159989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:50.887 [DEBUG] [Thread-159989] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:50.888 [DEBUG] [Thread-159989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:36:50.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:36:50.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:50.932 [DEBUG] [Thread-159989] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:50.932 [DEBUG] [Thread-159989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:50.932 [DEBUG] [Thread-159989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:50.932 [DEBUG] [Thread-159989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:36:50.932 [DEBUG] [Thread-159989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:50.960 [INFO] [Thread-159989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:50.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:51.695 [DEBUG] [Thread-159989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:51.695 [DEBUG] [Thread-159989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:51.696 [DEBUG] [Thread-159989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:36:51.736 [DEBUG] [Thread-159989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:51.737 [DEBUG] [Thread-159989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:51.740 [DEBUG] [Thread-159989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:51.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:51.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:36:51.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:36:51.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:36:51.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:51.764 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:36:51.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:51.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:51.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:36:51.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.566734 -999.00  +16.10  15.33     37   +1.70 1 1 1 1 1   888    0 15.13 22.98 ----- 13.1 15.3 105.8 16.3 24.1 -31.6 23.8 -28.9 25.6 -31.3 26.7 -30.9
2025-09-29T15:36:51.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:36:51.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:36:51.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.566734
2025-09-29T15:36:51.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:36:51.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:36:51.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:36:51.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:36:51.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:36:51.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:36:17', tmtdew=16.19, humidity=33.05, cloud=0.0, wind=12.9, temperature=15.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:36:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:36:51.767 [DEBUG] [Thread-159989] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:51.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:36:51.861 [DEBUG] [Thread-159992] [transport.py] [_log()] starting thread (client mode): 0x2b9ce350
2025-09-29T15:36:51.861 [DEBUG] [Thread-159992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:36:51.876 [DEBUG] [Thread-159992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:36:51.876 [INFO] [Thread-159992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] client lang: <none>
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] server lang: <none>
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] kex follows: False
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] Compression: none
2025-09-29T15:36:51.884 [DEBUG] [Thread-159992] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:36:51.943 [DEBUG] [Thread-159992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:36:51.944 [DEBUG] [Thread-159992] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:36:51.944 [DEBUG] [Thread-159992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:36:51.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:36:51.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:36:52.003 [DEBUG] [Thread-159992] [transport.py] [_log()] userauth is OK
2025-09-29T15:36:52.004 [DEBUG] [Thread-159992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:36:52.004 [DEBUG] [Thread-159992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:36:52.004 [DEBUG] [Thread-159992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:36:52.004 [DEBUG] [Thread-159992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:36:52.022 [INFO] [Thread-159992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:36:52.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:36:52.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:36:52.988 [DEBUG] [Thread-159992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:36:52.988 [DEBUG] [Thread-159992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:36:53.036 [DEBUG] [Thread-159992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:36:53.036 [DEBUG] [Thread-159992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:36:53.045 [DEBUG] [Thread-159992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:36:53.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:36:53.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:36:53.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:36:53.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:36:53.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:36:53.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:36:53.081 [DEBUG] [Thread-159992] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:36:57.467 [DEBUG] [Thread-159994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:37:03.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:37:03.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:37:03.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:37:03.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 36, 49), 16.24, 33.15, 0.0, 14.57, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:37:03.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:36:49
2025-09-29T15:37:03.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:37:03.947 [DEBUG] [Thread-159995] [transport.py] [_log()] starting thread (client mode): 0x2b969bd0
2025-09-29T15:37:03.947 [DEBUG] [Thread-159995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:03.967 [DEBUG] [Thread-159995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:37:03.967 [INFO] [Thread-159995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:37:03.970 [DEBUG] [Thread-159995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:03.971 [DEBUG] [Thread-159995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:03.972 [DEBUG] [Thread-159995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:03.972 [DEBUG] [Thread-159995] [transport.py] [_log()] Compression: none
2025-09-29T15:37:03.972 [DEBUG] [Thread-159995] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:03.980 [DEBUG] [Thread-159995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:03.980 [DEBUG] [Thread-159995] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:03.981 [DEBUG] [Thread-159995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:37:03.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:37:03.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:03.982 [DEBUG] [Thread-159995] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:03.982 [DEBUG] [Thread-159995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:03.982 [DEBUG] [Thread-159995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:03.982 [DEBUG] [Thread-159995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:37:03.982 [DEBUG] [Thread-159995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:03.996 [INFO] [Thread-159995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:03.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:04.580 [DEBUG] [Thread-159995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:04.580 [DEBUG] [Thread-159995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:04.581 [DEBUG] [Thread-159995] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:37:04.621 [DEBUG] [Thread-159995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:04.621 [DEBUG] [Thread-159995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:04.624 [DEBUG] [Thread-159995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:04.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:04.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:37:04.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:37:04.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:37:04.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:04.640 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:37:04.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:04.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:04.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:37:04.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.567081 -999.00  +15.90  12.36     38   +1.70 1 1 1 1 1   888    0 15.27 20.24 ----- 9.7 12.4 144.6 15.7 24.2 -29.7 23.8 -28.6 25.7 -29.6 26.7 -30.7
2025-09-29T15:37:04.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:37:04.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:37:04.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.567081
2025-09-29T15:37:04.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:37:04.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:37:04.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:37:04.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:37:04.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:37:04.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:36:49', tmtdew=16.24, humidity=33.15, cloud=0.0, wind=14.57, temperature=15.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:36:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:37:04.642 [DEBUG] [Thread-159995] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:04.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:37:04.738 [DEBUG] [Thread-159998] [transport.py] [_log()] starting thread (client mode): 0x2b969ea0
2025-09-29T15:37:04.738 [DEBUG] [Thread-159998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:04.754 [DEBUG] [Thread-159998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:37:04.754 [INFO] [Thread-159998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:37:04.762 [DEBUG] [Thread-159998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:04.762 [DEBUG] [Thread-159998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:37:04.762 [DEBUG] [Thread-159998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:04.762 [DEBUG] [Thread-159998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:04.762 [DEBUG] [Thread-159998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:04.762 [DEBUG] [Thread-159998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:04.762 [DEBUG] [Thread-159998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:04.762 [DEBUG] [Thread-159998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:04.763 [DEBUG] [Thread-159998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:04.764 [DEBUG] [Thread-159998] [transport.py] [_log()] Compression: none
2025-09-29T15:37:04.764 [DEBUG] [Thread-159998] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:04.828 [DEBUG] [Thread-159998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:04.828 [DEBUG] [Thread-159998] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:04.829 [DEBUG] [Thread-159998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:37:04.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:37:04.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:04.883 [DEBUG] [Thread-159998] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:04.883 [DEBUG] [Thread-159998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:04.883 [DEBUG] [Thread-159998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:04.883 [DEBUG] [Thread-159998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:37:04.883 [DEBUG] [Thread-159998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:04.897 [INFO] [Thread-159998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:04.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:37:04.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:05.908 [DEBUG] [Thread-159998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:05.909 [DEBUG] [Thread-159998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:05.956 [DEBUG] [Thread-159998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:05.956 [DEBUG] [Thread-159998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:05.967 [DEBUG] [Thread-159998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:05.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:05.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:37:05.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:37:05.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:05.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:05.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:06.004 [DEBUG] [Thread-159998] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:12.493 [DEBUG] [Thread-160000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:37:14.233 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:37:14.234 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:37:16.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:37:16.007 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:37:16.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:37:16.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 36, 49), 16.24, 33.15, 0.0, 14.57, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:37:16.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:36:49
2025-09-29T15:37:16.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:37:16.851 [DEBUG] [Thread-160001] [transport.py] [_log()] starting thread (client mode): 0x2e363160
2025-09-29T15:37:16.852 [DEBUG] [Thread-160001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:16.873 [DEBUG] [Thread-160001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:37:16.873 [INFO] [Thread-160001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] Compression: none
2025-09-29T15:37:16.875 [DEBUG] [Thread-160001] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:16.892 [DEBUG] [Thread-160001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:16.893 [DEBUG] [Thread-160001] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:16.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:37:16.894 [DEBUG] [Thread-160001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:37:16.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:16.896 [DEBUG] [Thread-160001] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:16.896 [DEBUG] [Thread-160001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:16.896 [DEBUG] [Thread-160001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:16.896 [DEBUG] [Thread-160001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:37:16.896 [DEBUG] [Thread-160001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:16.920 [INFO] [Thread-160001] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:16.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:17.682 [DEBUG] [Thread-160001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:17.682 [DEBUG] [Thread-160001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:17.683 [DEBUG] [Thread-160001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:37:17.723 [DEBUG] [Thread-160001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:17.723 [DEBUG] [Thread-160001] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:17.726 [DEBUG] [Thread-160001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:17.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:17.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:37:17.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:37:17.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:37:17.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:17.746 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:37:17.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:17.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:37:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.567081 -999.00  +15.90  12.36     38   +1.70 1 1 1 1 1   888    0 15.27 20.24 ----- 9.7 12.4 144.6 15.7 24.2 -29.7 23.8 -28.6 25.7 -29.6 26.7 -30.7
2025-09-29T15:37:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:37:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:37:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.567081
2025-09-29T15:37:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:37:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:37:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:37:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:37:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:37:17.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:36:49', tmtdew=16.24, humidity=33.15, cloud=0.0, wind=14.57, temperature=15.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:36:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:37:17.749 [DEBUG] [Thread-160001] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:17.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:37:17.843 [DEBUG] [Thread-160004] [transport.py] [_log()] starting thread (client mode): 0x2b9691b0
2025-09-29T15:37:17.843 [DEBUG] [Thread-160004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:17.858 [DEBUG] [Thread-160004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:37:17.859 [INFO] [Thread-160004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:37:17.866 [DEBUG] [Thread-160004] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:17.866 [DEBUG] [Thread-160004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] Compression: none
2025-09-29T15:37:17.867 [DEBUG] [Thread-160004] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:17.922 [DEBUG] [Thread-160004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:17.923 [DEBUG] [Thread-160004] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:17.923 [DEBUG] [Thread-160004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:37:17.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:37:17.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:17.978 [DEBUG] [Thread-160004] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:17.979 [DEBUG] [Thread-160004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:17.979 [DEBUG] [Thread-160004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:17.979 [DEBUG] [Thread-160004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:37:17.979 [DEBUG] [Thread-160004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:18.002 [INFO] [Thread-160004] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:18.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:37:18.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:18.986 [DEBUG] [Thread-160004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:18.986 [DEBUG] [Thread-160004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:19.034 [DEBUG] [Thread-160004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:19.034 [DEBUG] [Thread-160004] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:19.043 [DEBUG] [Thread-160004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:19.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:19.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:37:19.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:37:19.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:19.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:19.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:19.079 [DEBUG] [Thread-160004] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:27.527 [DEBUG] [Thread-160006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:37:29.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:37:29.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:37:29.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:37:29.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 37, 21), 16.32, 32.98, 0.0, 10.75, 15.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:37:29.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:37:21
2025-09-29T15:37:29.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:37:29.936 [DEBUG] [Thread-160007] [transport.py] [_log()] starting thread (client mode): 0x2b9cc190
2025-09-29T15:37:29.936 [DEBUG] [Thread-160007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:29.955 [DEBUG] [Thread-160007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:37:29.955 [INFO] [Thread-160007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:37:29.958 [DEBUG] [Thread-160007] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:29.958 [DEBUG] [Thread-160007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] Compression: none
2025-09-29T15:37:29.959 [DEBUG] [Thread-160007] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:29.976 [DEBUG] [Thread-160007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:29.977 [DEBUG] [Thread-160007] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:29.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:37:29.978 [DEBUG] [Thread-160007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:37:29.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:29.980 [DEBUG] [Thread-160007] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:29.980 [DEBUG] [Thread-160007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:29.980 [DEBUG] [Thread-160007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:29.980 [DEBUG] [Thread-160007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:37:29.980 [DEBUG] [Thread-160007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:30.003 [INFO] [Thread-160007] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:30.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:30.722 [DEBUG] [Thread-160007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:30.722 [DEBUG] [Thread-160007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:30.723 [DEBUG] [Thread-160007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:37:30.763 [DEBUG] [Thread-160007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:30.763 [DEBUG] [Thread-160007] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:30.766 [DEBUG] [Thread-160007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:30.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:30.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:37:30.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:37:30.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:37:30.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:30.801 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:37:30.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:30.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:30.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:37:30.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.567081 -999.00  +15.90  12.36     38   +1.70 1 1 1 1 1   888    0 15.27 20.24 ----- 9.7 12.4 144.6 15.7 24.2 -29.7 23.8 -28.6 25.7 -29.6 26.7 -30.7
2025-09-29T15:37:30.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:37:30.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:37:30.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.567081
2025-09-29T15:37:30.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:37:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:37:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:37:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:37:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:37:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:37:21', tmtdew=16.32, humidity=32.98, cloud=0.0, wind=10.75, temperature=15.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:36:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:37:30.804 [DEBUG] [Thread-160007] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:30.891 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:37:30.902 [DEBUG] [Thread-160010] [transport.py] [_log()] starting thread (client mode): 0x2e3601c0
2025-09-29T15:37:30.902 [DEBUG] [Thread-160010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:30.916 [DEBUG] [Thread-160010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:37:30.916 [INFO] [Thread-160010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:37:30.924 [DEBUG] [Thread-160010] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:30.924 [DEBUG] [Thread-160010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:37:30.924 [DEBUG] [Thread-160010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:30.924 [DEBUG] [Thread-160010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] Compression: none
2025-09-29T15:37:30.925 [DEBUG] [Thread-160010] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:30.981 [DEBUG] [Thread-160010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:30.982 [DEBUG] [Thread-160010] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:30.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:37:30.983 [DEBUG] [Thread-160010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:37:30.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:31.039 [DEBUG] [Thread-160010] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:31.039 [DEBUG] [Thread-160010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:31.039 [DEBUG] [Thread-160010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:31.039 [DEBUG] [Thread-160010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:37:31.039 [DEBUG] [Thread-160010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:31.058 [INFO] [Thread-160010] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:31.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:37:31.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:32.033 [DEBUG] [Thread-160010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:32.033 [DEBUG] [Thread-160010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:32.081 [DEBUG] [Thread-160010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:32.081 [DEBUG] [Thread-160010] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:32.090 [DEBUG] [Thread-160010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:32.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:32.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:37:32.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:37:32.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:32.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:32.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:32.125 [DEBUG] [Thread-160010] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:42.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:37:42.122 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:37:42.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:37:42.556 [DEBUG] [Thread-160012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:37:42.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 37, 21), 16.32, 32.98, 0.0, 10.75, 15.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:37:42.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:37:21
2025-09-29T15:37:42.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:37:42.974 [DEBUG] [Thread-160013] [transport.py] [_log()] starting thread (client mode): 0x30ddea10
2025-09-29T15:37:42.975 [DEBUG] [Thread-160013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:42.995 [DEBUG] [Thread-160013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:37:42.995 [INFO] [Thread-160013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:37:42.998 [DEBUG] [Thread-160013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:42.999 [DEBUG] [Thread-160013] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:43.000 [DEBUG] [Thread-160013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:43.000 [DEBUG] [Thread-160013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:43.000 [DEBUG] [Thread-160013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:43.000 [DEBUG] [Thread-160013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:43.000 [DEBUG] [Thread-160013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:43.000 [DEBUG] [Thread-160013] [transport.py] [_log()] Compression: none
2025-09-29T15:37:43.000 [DEBUG] [Thread-160013] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:43.021 [DEBUG] [Thread-160013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:43.022 [DEBUG] [Thread-160013] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:43.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:37:43.023 [DEBUG] [Thread-160013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:37:43.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:43.025 [DEBUG] [Thread-160013] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:43.025 [DEBUG] [Thread-160013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:43.026 [DEBUG] [Thread-160013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:43.026 [DEBUG] [Thread-160013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:37:43.026 [DEBUG] [Thread-160013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:43.058 [INFO] [Thread-160013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:43.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:43.682 [DEBUG] [Thread-160013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:43.683 [DEBUG] [Thread-160013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:43.683 [DEBUG] [Thread-160013] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:37:43.723 [DEBUG] [Thread-160013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:43.723 [DEBUG] [Thread-160013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:43.727 [DEBUG] [Thread-160013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:43.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:43.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:37:43.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:37:43.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:37:43.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:43.748 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:37:43.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:43.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:43.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:37:43.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.567428 -999.00  +16.10  15.64     37   +1.80 1 1 1 1 1   888    0 15.31 21.38 ----- 12.9 15.6 135.4 18.5 24.2 -29.7 23.9 -28.9 25.7 -29.7 26.6 -30.3
2025-09-29T15:37:43.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:37:43.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:37:43.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.567428
2025-09-29T15:37:43.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:37:43.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:37:43.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:37:43.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:37:43.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:37:43.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:37:21', tmtdew=16.32, humidity=32.98, cloud=0.0, wind=10.75, temperature=15.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:37:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:37:43.751 [DEBUG] [Thread-160013] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:43.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:37:43.847 [DEBUG] [Thread-160016] [transport.py] [_log()] starting thread (client mode): 0x2b91fb80
2025-09-29T15:37:43.848 [DEBUG] [Thread-160016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:43.863 [DEBUG] [Thread-160016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:37:43.863 [INFO] [Thread-160016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:37:43.871 [DEBUG] [Thread-160016] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:43.871 [DEBUG] [Thread-160016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:37:43.872 [DEBUG] [Thread-160016] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:43.872 [DEBUG] [Thread-160016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:43.872 [DEBUG] [Thread-160016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:43.872 [DEBUG] [Thread-160016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:43.872 [DEBUG] [Thread-160016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:43.872 [DEBUG] [Thread-160016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:43.872 [DEBUG] [Thread-160016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:43.872 [DEBUG] [Thread-160016] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:43.873 [DEBUG] [Thread-160016] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:43.873 [DEBUG] [Thread-160016] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:43.873 [DEBUG] [Thread-160016] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:43.873 [DEBUG] [Thread-160016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:43.873 [DEBUG] [Thread-160016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:43.873 [DEBUG] [Thread-160016] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:43.873 [DEBUG] [Thread-160016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:43.873 [DEBUG] [Thread-160016] [transport.py] [_log()] Compression: none
2025-09-29T15:37:43.874 [DEBUG] [Thread-160016] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:43.930 [DEBUG] [Thread-160016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:43.931 [DEBUG] [Thread-160016] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:43.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:37:43.933 [DEBUG] [Thread-160016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:37:43.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:43.986 [DEBUG] [Thread-160016] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:43.986 [DEBUG] [Thread-160016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:43.986 [DEBUG] [Thread-160016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:43.986 [DEBUG] [Thread-160016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:37:43.987 [DEBUG] [Thread-160016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:44.009 [INFO] [Thread-160016] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:44.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:37:44.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:44.956 [DEBUG] [Thread-160016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:44.956 [DEBUG] [Thread-160016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:45.004 [DEBUG] [Thread-160016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:45.004 [DEBUG] [Thread-160016] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:45.013 [DEBUG] [Thread-160016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:45.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:45.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:37:45.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:37:45.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:45.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:45.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:45.047 [DEBUG] [Thread-160016] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:46.859 [DEBUG] [Thread-160018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:37:55.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:37:55.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:37:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:37:55.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 37, 21), 16.32, 32.98, 0.0, 10.75, 15.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:37:55.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:37:21
2025-09-29T15:37:55.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:37:55.899 [DEBUG] [Thread-160019] [transport.py] [_log()] starting thread (client mode): 0x2b9bb310
2025-09-29T15:37:55.899 [DEBUG] [Thread-160019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:55.920 [DEBUG] [Thread-160019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:37:55.920 [INFO] [Thread-160019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:37:55.923 [DEBUG] [Thread-160019] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:55.923 [DEBUG] [Thread-160019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:37:55.923 [DEBUG] [Thread-160019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] Compression: none
2025-09-29T15:37:55.924 [DEBUG] [Thread-160019] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:55.943 [DEBUG] [Thread-160019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:55.943 [DEBUG] [Thread-160019] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:55.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:37:55.944 [DEBUG] [Thread-160019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:37:55.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:55.985 [DEBUG] [Thread-160019] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:55.985 [DEBUG] [Thread-160019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:55.985 [DEBUG] [Thread-160019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:55.985 [DEBUG] [Thread-160019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:37:55.985 [DEBUG] [Thread-160019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:56.005 [INFO] [Thread-160019] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:56.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:56.762 [DEBUG] [Thread-160019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:56.762 [DEBUG] [Thread-160019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:56.762 [DEBUG] [Thread-160019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:37:56.803 [DEBUG] [Thread-160019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:56.804 [DEBUG] [Thread-160019] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:56.806 [DEBUG] [Thread-160019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:56.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:56.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:37:56.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:37:56.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:37:56.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:56.836 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:37:56.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:56.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:56.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:37:56.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.567428 -999.00  +16.10  15.64     37   +1.80 1 1 1 1 1   888    0 15.31 21.38 ----- 12.9 15.6 135.4 18.5 24.2 -29.7 23.9 -28.9 25.7 -29.7 26.6 -30.3
2025-09-29T15:37:56.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:37:56.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:37:56.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.567428
2025-09-29T15:37:56.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:37:56.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:37:56.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:37:56.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:37:56.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:37:56.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:37:21', tmtdew=16.32, humidity=32.98, cloud=0.0, wind=10.75, temperature=15.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:37:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:37:56.839 [DEBUG] [Thread-160019] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:37:56.933 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:37:56.943 [DEBUG] [Thread-160022] [transport.py] [_log()] starting thread (client mode): 0x2b91c430
2025-09-29T15:37:56.943 [DEBUG] [Thread-160022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:37:56.958 [DEBUG] [Thread-160022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:37:56.958 [INFO] [Thread-160022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:37:56.965 [DEBUG] [Thread-160022] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:37:56.965 [DEBUG] [Thread-160022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] client lang: <none>
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] server lang: <none>
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] kex follows: False
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] Compression: none
2025-09-29T15:37:56.966 [DEBUG] [Thread-160022] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:37:57.025 [DEBUG] [Thread-160022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:37:57.026 [DEBUG] [Thread-160022] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:37:57.026 [DEBUG] [Thread-160022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:37:57.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:37:57.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:37:57.081 [DEBUG] [Thread-160022] [transport.py] [_log()] userauth is OK
2025-09-29T15:37:57.082 [DEBUG] [Thread-160022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:37:57.082 [DEBUG] [Thread-160022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:37:57.082 [DEBUG] [Thread-160022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:37:57.082 [DEBUG] [Thread-160022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:37:57.101 [INFO] [Thread-160022] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:37:57.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:37:57.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:37:57.590 [DEBUG] [Thread-160024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:37:58.065 [DEBUG] [Thread-160022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:37:58.065 [DEBUG] [Thread-160022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:37:58.113 [DEBUG] [Thread-160022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:37:58.113 [DEBUG] [Thread-160022] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:37:58.122 [DEBUG] [Thread-160022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:37:58.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:37:58.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:37:58.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:37:58.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:37:58.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:37:58.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:37:58.159 [DEBUG] [Thread-160022] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:08.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:38:08.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:38:08.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:38:08.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 37, 53), 16.31, 32.97, 0.0, 9.34, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:38:08.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:37:53
2025-09-29T15:38:08.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:38:09.010 [DEBUG] [Thread-160025] [transport.py] [_log()] starting thread (client mode): 0x2b91d4e0
2025-09-29T15:38:09.010 [DEBUG] [Thread-160025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:38:09.031 [DEBUG] [Thread-160025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:38:09.031 [INFO] [Thread-160025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:38:09.034 [DEBUG] [Thread-160025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] client lang: <none>
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] server lang: <none>
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] kex follows: False
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] Compression: none
2025-09-29T15:38:09.035 [DEBUG] [Thread-160025] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:38:09.053 [DEBUG] [Thread-160025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:38:09.053 [DEBUG] [Thread-160025] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:38:09.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:38:09.054 [DEBUG] [Thread-160025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:38:09.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:38:09.056 [DEBUG] [Thread-160025] [transport.py] [_log()] userauth is OK
2025-09-29T15:38:09.056 [DEBUG] [Thread-160025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:38:09.056 [DEBUG] [Thread-160025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:38:09.056 [DEBUG] [Thread-160025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:38:09.056 [DEBUG] [Thread-160025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:38:09.074 [INFO] [Thread-160025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:38:09.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:38:09.665 [DEBUG] [Thread-160025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:38:09.665 [DEBUG] [Thread-160025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:38:09.665 [DEBUG] [Thread-160025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:38:09.706 [DEBUG] [Thread-160025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:38:09.706 [DEBUG] [Thread-160025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:38:09.709 [DEBUG] [Thread-160025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:38:09.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:38:09.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:38:09.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:38:09.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:38:09.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:38:09.728 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:38:09.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:38:09.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:38:09.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:38:09.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.567775 -999.00  +15.90  11.61     38   +1.70 1 1 1 1 1   888    0 15.25 18.78 ----- 9.3 11.6 111.4 13.7 24.0 -30.3 23.9 -29.0 25.7 -29.8 26.6 -31.4
2025-09-29T15:38:09.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:38:09.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:38:09.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.567775
2025-09-29T15:38:09.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:38:09.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:38:09.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:38:09.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:38:09.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:38:09.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:37:53', tmtdew=16.31, humidity=32.97, cloud=0.0, wind=9.34, temperature=15.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:37:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:38:09.731 [DEBUG] [Thread-160025] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:09.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:38:09.826 [DEBUG] [Thread-160028] [transport.py] [_log()] starting thread (client mode): 0x2b94c550
2025-09-29T15:38:09.826 [DEBUG] [Thread-160028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:38:09.842 [DEBUG] [Thread-160028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:38:09.842 [INFO] [Thread-160028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:38:09.849 [DEBUG] [Thread-160028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:38:09.849 [DEBUG] [Thread-160028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] client lang: <none>
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] server lang: <none>
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] kex follows: False
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] Compression: none
2025-09-29T15:38:09.850 [DEBUG] [Thread-160028] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:38:09.908 [DEBUG] [Thread-160028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:38:09.909 [DEBUG] [Thread-160028] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:38:09.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:38:09.910 [DEBUG] [Thread-160028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:38:09.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:38:09.965 [DEBUG] [Thread-160028] [transport.py] [_log()] userauth is OK
2025-09-29T15:38:09.965 [DEBUG] [Thread-160028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:38:09.965 [DEBUG] [Thread-160028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:38:09.966 [DEBUG] [Thread-160028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:38:09.966 [DEBUG] [Thread-160028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:38:09.985 [INFO] [Thread-160028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:38:09.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:38:09.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:38:10.965 [DEBUG] [Thread-160028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:38:10.965 [DEBUG] [Thread-160028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:38:11.013 [DEBUG] [Thread-160028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:38:11.013 [DEBUG] [Thread-160028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:38:11.022 [DEBUG] [Thread-160028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:38:11.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:38:11.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:38:11.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:38:11.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:38:11.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:38:11.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:38:11.056 [DEBUG] [Thread-160028] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:12.635 [DEBUG] [Thread-160030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:38:14.374 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:38:14.376 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:38:21.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:38:21.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:38:21.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:38:21.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 37, 53), 16.31, 32.97, 0.0, 9.34, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:38:21.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:37:53
2025-09-29T15:38:21.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:38:21.908 [DEBUG] [Thread-160031] [transport.py] [_log()] starting thread (client mode): 0x2e3de140
2025-09-29T15:38:21.908 [DEBUG] [Thread-160031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:38:21.928 [DEBUG] [Thread-160031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:38:21.928 [INFO] [Thread-160031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] client lang: <none>
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] server lang: <none>
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] kex follows: False
2025-09-29T15:38:21.931 [DEBUG] [Thread-160031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:38:21.932 [DEBUG] [Thread-160031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:38:21.932 [DEBUG] [Thread-160031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:38:21.932 [DEBUG] [Thread-160031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:38:21.932 [DEBUG] [Thread-160031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:38:21.932 [DEBUG] [Thread-160031] [transport.py] [_log()] Compression: none
2025-09-29T15:38:21.932 [DEBUG] [Thread-160031] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:38:21.947 [DEBUG] [Thread-160031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:38:21.948 [DEBUG] [Thread-160031] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:38:21.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:38:21.948 [DEBUG] [Thread-160031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:38:21.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:38:21.949 [DEBUG] [Thread-160031] [transport.py] [_log()] userauth is OK
2025-09-29T15:38:21.949 [DEBUG] [Thread-160031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:38:21.949 [DEBUG] [Thread-160031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:38:21.949 [DEBUG] [Thread-160031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:38:21.949 [DEBUG] [Thread-160031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:38:21.957 [INFO] [Thread-160031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:38:21.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:38:22.699 [DEBUG] [Thread-160031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:38:22.699 [DEBUG] [Thread-160031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:38:22.699 [DEBUG] [Thread-160031] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:38:22.740 [DEBUG] [Thread-160031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:38:22.740 [DEBUG] [Thread-160031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:38:22.743 [DEBUG] [Thread-160031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:38:22.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:38:22.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:38:22.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:38:22.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:38:22.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:38:22.759 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:38:22.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:38:22.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:38:22.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:38:22.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.567775 -999.00  +15.90  11.61     38   +1.70 1 1 1 1 1   888    0 15.25 18.78 ----- 9.3 11.6 111.4 13.7 24.0 -30.3 23.9 -29.0 25.7 -29.8 26.6 -31.4
2025-09-29T15:38:22.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:38:22.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:38:22.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.567775
2025-09-29T15:38:22.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:38:22.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:38:22.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:38:22.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:38:22.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:38:22.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:37:53', tmtdew=16.31, humidity=32.97, cloud=0.0, wind=9.34, temperature=15.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:37:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:38:22.761 [DEBUG] [Thread-160031] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:22.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:38:22.856 [DEBUG] [Thread-160034] [transport.py] [_log()] starting thread (client mode): 0x2e3ded10
2025-09-29T15:38:22.856 [DEBUG] [Thread-160034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:38:22.872 [DEBUG] [Thread-160034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:38:22.872 [INFO] [Thread-160034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:38:22.879 [DEBUG] [Thread-160034] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:38:22.879 [DEBUG] [Thread-160034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:38:22.879 [DEBUG] [Thread-160034] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:38:22.879 [DEBUG] [Thread-160034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:22.879 [DEBUG] [Thread-160034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:22.879 [DEBUG] [Thread-160034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] client lang: <none>
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] server lang: <none>
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] kex follows: False
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] Compression: none
2025-09-29T15:38:22.880 [DEBUG] [Thread-160034] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:38:22.936 [DEBUG] [Thread-160034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:38:22.937 [DEBUG] [Thread-160034] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:38:22.938 [DEBUG] [Thread-160034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:38:22.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:38:22.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:38:22.994 [DEBUG] [Thread-160034] [transport.py] [_log()] userauth is OK
2025-09-29T15:38:22.994 [DEBUG] [Thread-160034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:38:22.994 [DEBUG] [Thread-160034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:38:22.994 [DEBUG] [Thread-160034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:38:22.994 [DEBUG] [Thread-160034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:38:23.014 [INFO] [Thread-160034] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:38:23.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:38:23.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:38:24.006 [DEBUG] [Thread-160034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:38:24.006 [DEBUG] [Thread-160034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:38:24.054 [DEBUG] [Thread-160034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:38:24.054 [DEBUG] [Thread-160034] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:38:24.064 [DEBUG] [Thread-160034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:38:24.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:38:24.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:38:24.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:38:24.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:38:24.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:38:24.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:38:24.098 [DEBUG] [Thread-160034] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:27.678 [DEBUG] [Thread-160036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:38:34.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:38:34.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:38:34.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:38:34.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 38, 25), 16.15, 33.33, 0.0, 10.29, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:38:34.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:38:25
2025-09-29T15:38:34.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:38:34.930 [DEBUG] [Thread-160037] [transport.py] [_log()] starting thread (client mode): 0x2e3dd000
2025-09-29T15:38:34.930 [DEBUG] [Thread-160037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:38:34.950 [DEBUG] [Thread-160037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:38:34.950 [INFO] [Thread-160037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:38:34.953 [DEBUG] [Thread-160037] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:38:34.953 [DEBUG] [Thread-160037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] client lang: <none>
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] server lang: <none>
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] kex follows: False
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] Compression: none
2025-09-29T15:38:34.954 [DEBUG] [Thread-160037] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:38:34.971 [DEBUG] [Thread-160037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:38:34.972 [DEBUG] [Thread-160037] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:38:34.972 [DEBUG] [Thread-160037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:38:34.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:38:34.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:38:34.974 [DEBUG] [Thread-160037] [transport.py] [_log()] userauth is OK
2025-09-29T15:38:34.975 [DEBUG] [Thread-160037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:38:34.975 [DEBUG] [Thread-160037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:38:34.975 [DEBUG] [Thread-160037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:38:34.975 [DEBUG] [Thread-160037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:38:34.988 [INFO] [Thread-160037] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:38:34.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:38:35.741 [DEBUG] [Thread-160037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:38:35.741 [DEBUG] [Thread-160037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:38:35.741 [DEBUG] [Thread-160037] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:38:35.782 [DEBUG] [Thread-160037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:38:35.782 [DEBUG] [Thread-160037] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:38:35.785 [DEBUG] [Thread-160037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:38:35.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:38:35.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:38:35.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:38:35.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:38:35.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:38:35.804 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:38:35.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:38:35.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:38:35.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:38:35.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.567775 -999.00  +15.90  11.61     38   +1.70 1 1 1 1 1   888    0 15.25 18.78 ----- 9.3 11.6 111.4 13.7 24.0 -30.3 23.9 -29.0 25.7 -29.8 26.6 -31.4
2025-09-29T15:38:35.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:38:35.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:38:35.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.567775
2025-09-29T15:38:35.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:38:35.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:38:35.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:38:35.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:38:35.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:38:35.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:38:25', tmtdew=16.15, humidity=33.33, cloud=0.0, wind=10.29, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:37:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:38:35.805 [DEBUG] [Thread-160037] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:35.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:38:35.888 [DEBUG] [Thread-160040] [transport.py] [_log()] starting thread (client mode): 0x2b9ccf40
2025-09-29T15:38:35.889 [DEBUG] [Thread-160040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:38:35.907 [DEBUG] [Thread-160040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:38:35.907 [INFO] [Thread-160040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:38:35.914 [DEBUG] [Thread-160040] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:38:35.914 [DEBUG] [Thread-160040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] client lang: <none>
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] server lang: <none>
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] kex follows: False
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] Compression: none
2025-09-29T15:38:35.915 [DEBUG] [Thread-160040] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:38:35.976 [DEBUG] [Thread-160040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:38:35.977 [DEBUG] [Thread-160040] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:38:35.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:38:35.978 [DEBUG] [Thread-160040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:38:35.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:38:36.032 [DEBUG] [Thread-160040] [transport.py] [_log()] userauth is OK
2025-09-29T15:38:36.032 [DEBUG] [Thread-160040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:38:36.032 [DEBUG] [Thread-160040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:38:36.032 [DEBUG] [Thread-160040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:38:36.033 [DEBUG] [Thread-160040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:38:36.051 [INFO] [Thread-160040] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:38:36.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:38:36.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:38:37.026 [DEBUG] [Thread-160040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:38:37.026 [DEBUG] [Thread-160040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:38:37.074 [DEBUG] [Thread-160040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:38:37.074 [DEBUG] [Thread-160040] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:38:37.083 [DEBUG] [Thread-160040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:38:37.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:38:37.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:38:37.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:38:37.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:38:37.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:38:37.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:38:37.117 [DEBUG] [Thread-160040] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:42.707 [DEBUG] [Thread-160042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:38:46.892 [DEBUG] [Thread-160043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:38:47.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:38:47.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:38:47.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:38:47.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 38, 25), 16.15, 33.33, 0.0, 10.29, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:38:47.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:38:25
2025-09-29T15:38:47.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:38:47.938 [DEBUG] [Thread-160044] [transport.py] [_log()] starting thread (client mode): 0x2e3df0a0
2025-09-29T15:38:47.939 [DEBUG] [Thread-160044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:38:47.958 [DEBUG] [Thread-160044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:38:47.959 [INFO] [Thread-160044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:38:47.962 [DEBUG] [Thread-160044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:38:47.962 [DEBUG] [Thread-160044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:38:47.962 [DEBUG] [Thread-160044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:38:47.962 [DEBUG] [Thread-160044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] client lang: <none>
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] server lang: <none>
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] kex follows: False
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:38:47.963 [DEBUG] [Thread-160044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:38:47.964 [DEBUG] [Thread-160044] [transport.py] [_log()] Compression: none
2025-09-29T15:38:47.964 [DEBUG] [Thread-160044] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:38:47.981 [DEBUG] [Thread-160044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:38:47.982 [DEBUG] [Thread-160044] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:38:47.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:38:47.983 [DEBUG] [Thread-160044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:38:47.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:38:47.985 [DEBUG] [Thread-160044] [transport.py] [_log()] userauth is OK
2025-09-29T15:38:47.986 [DEBUG] [Thread-160044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:38:47.986 [DEBUG] [Thread-160044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:38:47.986 [DEBUG] [Thread-160044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:38:47.986 [DEBUG] [Thread-160044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:38:48.020 [INFO] [Thread-160044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:38:48.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:38:48.616 [DEBUG] [Thread-160044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:38:48.616 [DEBUG] [Thread-160044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:38:48.616 [DEBUG] [Thread-160044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:38:48.657 [DEBUG] [Thread-160044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:38:48.657 [DEBUG] [Thread-160044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:38:48.661 [DEBUG] [Thread-160044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:38:48.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:38:48.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:38:48.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:38:48.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:38:48.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:38:48.676 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:38:48.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:38:48.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:38:48.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:38:48.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.568470 -999.00  +16.00   7.50     38   +1.90 1 1 1 1 1   888    0 14.90 14.88 ----- 11.9 7.5 127.9 18.8 24.1 -30.7 23.9 -28.6 25.8 -29.6 26.7 -30.1
2025-09-29T15:38:48.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:38:48.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:38:48.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.568470
2025-09-29T15:38:48.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:38:48.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:38:48.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:38:48.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:38:48.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:38:48.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:38:25', tmtdew=16.15, humidity=33.33, cloud=0.0, wind=10.29, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:38:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:38:48.678 [DEBUG] [Thread-160044] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:48.763 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:38:48.772 [DEBUG] [Thread-160047] [transport.py] [_log()] starting thread (client mode): 0x2e3df190
2025-09-29T15:38:48.772 [DEBUG] [Thread-160047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:38:48.787 [DEBUG] [Thread-160047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:38:48.787 [INFO] [Thread-160047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:38:48.794 [DEBUG] [Thread-160047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] client lang: <none>
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] server lang: <none>
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] kex follows: False
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] Compression: none
2025-09-29T15:38:48.795 [DEBUG] [Thread-160047] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:38:48.851 [DEBUG] [Thread-160047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:38:48.852 [DEBUG] [Thread-160047] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:38:48.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:38:48.853 [DEBUG] [Thread-160047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:38:48.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:38:48.908 [DEBUG] [Thread-160047] [transport.py] [_log()] userauth is OK
2025-09-29T15:38:48.908 [DEBUG] [Thread-160047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:38:48.908 [DEBUG] [Thread-160047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:38:48.908 [DEBUG] [Thread-160047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:38:48.909 [DEBUG] [Thread-160047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:38:48.928 [INFO] [Thread-160047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:38:48.928 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:38:48.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:38:49.927 [DEBUG] [Thread-160047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:38:49.927 [DEBUG] [Thread-160047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:38:49.975 [DEBUG] [Thread-160047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:38:49.975 [DEBUG] [Thread-160047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:38:49.985 [DEBUG] [Thread-160047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:38:49.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:38:49.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:38:50.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:38:50.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:38:50.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:38:50.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:38:50.019 [DEBUG] [Thread-160047] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:38:57.759 [DEBUG] [Thread-160049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:39:00.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:39:00.016 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:39:00.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:39:00.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 38, 57), 16.36, 32.81, 0.0, 11.38, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:39:00.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:38:57
2025-09-29T15:39:00.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:39:00.853 [DEBUG] [Thread-160050] [transport.py] [_log()] starting thread (client mode): 0x2b94fdc0
2025-09-29T15:39:00.853 [DEBUG] [Thread-160050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:00.873 [DEBUG] [Thread-160050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:39:00.873 [INFO] [Thread-160050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:39:00.876 [DEBUG] [Thread-160050] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:00.876 [DEBUG] [Thread-160050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:39:00.876 [DEBUG] [Thread-160050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:00.876 [DEBUG] [Thread-160050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:00.876 [DEBUG] [Thread-160050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:00.876 [DEBUG] [Thread-160050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] Compression: none
2025-09-29T15:39:00.877 [DEBUG] [Thread-160050] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:00.896 [DEBUG] [Thread-160050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:00.897 [DEBUG] [Thread-160050] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:00.897 [DEBUG] [Thread-160050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:39:00.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:39:00.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:00.899 [DEBUG] [Thread-160050] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:00.899 [DEBUG] [Thread-160050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:00.900 [DEBUG] [Thread-160050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:00.900 [DEBUG] [Thread-160050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:39:00.900 [DEBUG] [Thread-160050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:00.923 [INFO] [Thread-160050] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:00.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:01.675 [DEBUG] [Thread-160050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:01.675 [DEBUG] [Thread-160050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:01.675 [DEBUG] [Thread-160050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:39:01.716 [DEBUG] [Thread-160050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:01.716 [DEBUG] [Thread-160050] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:01.718 [DEBUG] [Thread-160050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:01.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:01.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:39:01.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:39:01.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:39:01.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:01.738 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:39:01.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:01.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:01.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:39:01.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.568470 -999.00  +16.00   7.50     38   +1.90 1 1 1 1 1   888    0 14.90 14.88 ----- 11.9 7.5 127.9 18.8 24.1 -30.7 23.9 -28.6 25.8 -29.6 26.7 -30.1
2025-09-29T15:39:01.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:39:01.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:39:01.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.568470
2025-09-29T15:39:01.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:39:01.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:39:01.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:39:01.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:39:01.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:39:01.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:38:57', tmtdew=16.36, humidity=32.81, cloud=0.0, wind=11.38, temperature=15.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:38:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:39:01.740 [DEBUG] [Thread-160050] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:01.818 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:39:01.829 [DEBUG] [Thread-160053] [transport.py] [_log()] starting thread (client mode): 0x2b91c460
2025-09-29T15:39:01.830 [DEBUG] [Thread-160053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:01.844 [DEBUG] [Thread-160053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:39:01.844 [INFO] [Thread-160053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:01.852 [DEBUG] [Thread-160053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:01.853 [DEBUG] [Thread-160053] [transport.py] [_log()] Compression: none
2025-09-29T15:39:01.853 [DEBUG] [Thread-160053] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:01.911 [DEBUG] [Thread-160053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:01.912 [DEBUG] [Thread-160053] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:01.912 [DEBUG] [Thread-160053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:39:01.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:39:01.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:01.968 [DEBUG] [Thread-160053] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:01.968 [DEBUG] [Thread-160053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:01.968 [DEBUG] [Thread-160053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:01.968 [DEBUG] [Thread-160053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:39:01.968 [DEBUG] [Thread-160053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:01.987 [INFO] [Thread-160053] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:01.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:39:01.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:02.962 [DEBUG] [Thread-160053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:02.962 [DEBUG] [Thread-160053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:03.010 [DEBUG] [Thread-160053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:03.010 [DEBUG] [Thread-160053] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:03.018 [DEBUG] [Thread-160053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:03.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:03.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:39:03.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:39:03.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:03.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:03.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:03.050 [DEBUG] [Thread-160053] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:12.796 [DEBUG] [Thread-160055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:39:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:39:13.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:39:13.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:39:13.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 38, 57), 16.36, 32.81, 0.0, 11.38, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:39:13.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:38:57
2025-09-29T15:39:13.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:39:13.873 [DEBUG] [Thread-160056] [transport.py] [_log()] starting thread (client mode): 0x2b91e800
2025-09-29T15:39:13.874 [DEBUG] [Thread-160056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:13.884 [DEBUG] [Thread-160056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:39:13.884 [INFO] [Thread-160056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] Compression: none
2025-09-29T15:39:13.886 [DEBUG] [Thread-160056] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:13.899 [DEBUG] [Thread-160056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:13.899 [DEBUG] [Thread-160056] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:13.899 [DEBUG] [Thread-160056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:39:13.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:39:13.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:13.900 [DEBUG] [Thread-160056] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:13.900 [DEBUG] [Thread-160056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:13.900 [DEBUG] [Thread-160056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:13.900 [DEBUG] [Thread-160056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:39:13.901 [DEBUG] [Thread-160056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:13.932 [INFO] [Thread-160056] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:13.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:14.512 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:39:14.512 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:39:14.526 [DEBUG] [Thread-160056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:14.527 [DEBUG] [Thread-160056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:14.527 [DEBUG] [Thread-160056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:39:14.567 [DEBUG] [Thread-160056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:14.567 [DEBUG] [Thread-160056] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:14.569 [DEBUG] [Thread-160056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:14.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:14.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:39:14.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:39:14.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:39:14.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:14.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:39:14.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:14.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:14.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:39:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.568817 -999.00  +16.30   9.16     38   +1.90 1 1 1 1 1   888    0 14.76 13.62 ----- 9.7 9.2 141.8 13.3 24.2 -29.0 23.9 -29.3 25.8 -29.1 26.7 -30.2
2025-09-29T15:39:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:39:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:39:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.568817
2025-09-29T15:39:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:38:57', tmtdew=16.36, humidity=32.81, cloud=0.0, wind=11.38, temperature=15.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:39:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:39:14.597 [DEBUG] [Thread-160056] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:14.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:39:14.691 [DEBUG] [Thread-160059] [transport.py] [_log()] starting thread (client mode): 0x2e3dded0
2025-09-29T15:39:14.691 [DEBUG] [Thread-160059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:14.706 [DEBUG] [Thread-160059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:39:14.706 [INFO] [Thread-160059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:39:14.714 [DEBUG] [Thread-160059] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:14.715 [DEBUG] [Thread-160059] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:14.716 [DEBUG] [Thread-160059] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:14.716 [DEBUG] [Thread-160059] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:14.716 [DEBUG] [Thread-160059] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:14.716 [DEBUG] [Thread-160059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:14.716 [DEBUG] [Thread-160059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:14.716 [DEBUG] [Thread-160059] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:14.716 [DEBUG] [Thread-160059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:14.716 [DEBUG] [Thread-160059] [transport.py] [_log()] Compression: none
2025-09-29T15:39:14.717 [DEBUG] [Thread-160059] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:14.774 [DEBUG] [Thread-160059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:14.775 [DEBUG] [Thread-160059] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:14.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:39:14.776 [DEBUG] [Thread-160059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:39:14.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:14.831 [DEBUG] [Thread-160059] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:14.832 [DEBUG] [Thread-160059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:14.832 [DEBUG] [Thread-160059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:14.832 [DEBUG] [Thread-160059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:39:14.832 [DEBUG] [Thread-160059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:14.853 [INFO] [Thread-160059] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:14.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:39:14.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:15.822 [DEBUG] [Thread-160059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:15.822 [DEBUG] [Thread-160059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:15.870 [DEBUG] [Thread-160059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:15.870 [DEBUG] [Thread-160059] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:15.879 [DEBUG] [Thread-160059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:15.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:15.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:39:15.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:39:15.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:15.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:15.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:15.915 [DEBUG] [Thread-160059] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:25.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:39:25.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:39:25.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:39:26.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 38, 57), 16.36, 32.81, 0.0, 11.38, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:39:26.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:38:57
2025-09-29T15:39:26.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:39:26.735 [DEBUG] [Thread-160061] [transport.py] [_log()] starting thread (client mode): 0x30ddef20
2025-09-29T15:39:26.736 [DEBUG] [Thread-160061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:26.755 [DEBUG] [Thread-160061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:39:26.755 [INFO] [Thread-160061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:26.759 [DEBUG] [Thread-160061] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:26.760 [DEBUG] [Thread-160061] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:26.760 [DEBUG] [Thread-160061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:26.760 [DEBUG] [Thread-160061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:26.760 [DEBUG] [Thread-160061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:26.760 [DEBUG] [Thread-160061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:26.760 [DEBUG] [Thread-160061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:26.760 [DEBUG] [Thread-160061] [transport.py] [_log()] Compression: none
2025-09-29T15:39:26.760 [DEBUG] [Thread-160061] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:26.779 [DEBUG] [Thread-160061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:26.780 [DEBUG] [Thread-160061] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:26.780 [DEBUG] [Thread-160061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:39:26.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:39:26.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:26.783 [DEBUG] [Thread-160061] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:26.783 [DEBUG] [Thread-160061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:26.783 [DEBUG] [Thread-160061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:26.783 [DEBUG] [Thread-160061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:39:26.783 [DEBUG] [Thread-160061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:26.807 [INFO] [Thread-160061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:26.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:27.585 [DEBUG] [Thread-160061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:27.586 [DEBUG] [Thread-160061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:27.586 [DEBUG] [Thread-160061] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:39:27.626 [DEBUG] [Thread-160061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:27.627 [DEBUG] [Thread-160061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:27.629 [DEBUG] [Thread-160061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:27.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:27.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:39:27.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:39:27.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:39:27.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:27.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:39:27.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:27.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:27.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:39:27.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.568817 -999.00  +16.30   9.16     38   +1.90 1 1 1 1 1   888    0 14.76 13.62 ----- 9.7 9.2 141.8 13.3 24.2 -29.0 23.9 -29.3 25.8 -29.1 26.7 -30.2
2025-09-29T15:39:27.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:39:27.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:39:27.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.568817
2025-09-29T15:39:27.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:39:27.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:39:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:39:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:39:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:39:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:38:57', tmtdew=16.36, humidity=32.81, cloud=0.0, wind=11.38, temperature=15.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:39:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:39:27.649 [DEBUG] [Thread-160061] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:27.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:39:27.744 [DEBUG] [Thread-160064] [transport.py] [_log()] starting thread (client mode): 0x2e3dea40
2025-09-29T15:39:27.745 [DEBUG] [Thread-160064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:27.759 [DEBUG] [Thread-160064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:39:27.759 [INFO] [Thread-160064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:39:27.767 [DEBUG] [Thread-160064] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:27.767 [DEBUG] [Thread-160064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:39:27.767 [DEBUG] [Thread-160064] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:27.768 [DEBUG] [Thread-160064] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:27.769 [DEBUG] [Thread-160064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:27.769 [DEBUG] [Thread-160064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:27.769 [DEBUG] [Thread-160064] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:27.769 [DEBUG] [Thread-160064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:27.769 [DEBUG] [Thread-160064] [transport.py] [_log()] Compression: none
2025-09-29T15:39:27.769 [DEBUG] [Thread-160064] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:27.827 [DEBUG] [Thread-160064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:27.827 [DEBUG] [Thread-160064] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:27.828 [DEBUG] [Thread-160064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:39:27.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:39:27.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:27.841 [DEBUG] [Thread-160066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:39:27.883 [DEBUG] [Thread-160064] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:27.883 [DEBUG] [Thread-160064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:27.883 [DEBUG] [Thread-160064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:27.883 [DEBUG] [Thread-160064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:39:27.883 [DEBUG] [Thread-160064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:27.903 [INFO] [Thread-160064] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:27.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:39:27.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:28.889 [DEBUG] [Thread-160064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:28.890 [DEBUG] [Thread-160064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:28.937 [DEBUG] [Thread-160064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:28.937 [DEBUG] [Thread-160064] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:28.946 [DEBUG] [Thread-160064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:28.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:28.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:39:28.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:39:28.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:28.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:28.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:28.981 [DEBUG] [Thread-160064] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:38.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:39:38.978 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:39:38.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:39:39.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 39, 29), 16.27, 33.01, 0.0, 10.45, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:39:39.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:39:29
2025-09-29T15:39:39.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:39:39.805 [DEBUG] [Thread-160067] [transport.py] [_log()] starting thread (client mode): 0x2b91dd50
2025-09-29T15:39:39.806 [DEBUG] [Thread-160067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:39.827 [DEBUG] [Thread-160067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:39:39.827 [INFO] [Thread-160067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:39:39.829 [DEBUG] [Thread-160067] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] Compression: none
2025-09-29T15:39:39.830 [DEBUG] [Thread-160067] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:39.847 [DEBUG] [Thread-160067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:39.847 [DEBUG] [Thread-160067] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:39.848 [DEBUG] [Thread-160067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:39:39.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:39:39.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:39.850 [DEBUG] [Thread-160067] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:39.850 [DEBUG] [Thread-160067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:39.850 [DEBUG] [Thread-160067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:39.850 [DEBUG] [Thread-160067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:39:39.850 [DEBUG] [Thread-160067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:39.868 [INFO] [Thread-160067] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:39.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:40.615 [DEBUG] [Thread-160067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:40.615 [DEBUG] [Thread-160067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:40.615 [DEBUG] [Thread-160067] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:39:40.656 [DEBUG] [Thread-160067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:40.656 [DEBUG] [Thread-160067] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:40.658 [DEBUG] [Thread-160067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:40.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:40.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:39:40.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:39:40.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:39:40.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:40.675 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:39:40.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:40.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:39:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.568817 -999.00  +16.30   9.16     38   +1.90 1 1 1 1 1   888    0 14.76 13.62 ----- 9.7 9.2 141.8 13.3 24.2 -29.0 23.9 -29.3 25.8 -29.1 26.7 -30.2
2025-09-29T15:39:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:39:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:39:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.568817
2025-09-29T15:39:40.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:39:40.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:39:40.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:39:40.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:39:40.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:39:40.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:39:29', tmtdew=16.27, humidity=33.01, cloud=0.0, wind=10.45, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:39:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:39:40.676 [DEBUG] [Thread-160067] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:40.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:39:40.763 [DEBUG] [Thread-160070] [transport.py] [_log()] starting thread (client mode): 0x2e3601c0
2025-09-29T15:39:40.763 [DEBUG] [Thread-160070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:40.778 [DEBUG] [Thread-160070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:39:40.778 [INFO] [Thread-160070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:39:40.785 [DEBUG] [Thread-160070] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:40.785 [DEBUG] [Thread-160070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:39:40.785 [DEBUG] [Thread-160070] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:40.785 [DEBUG] [Thread-160070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:40.785 [DEBUG] [Thread-160070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] Compression: none
2025-09-29T15:39:40.786 [DEBUG] [Thread-160070] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:40.841 [DEBUG] [Thread-160070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:40.841 [DEBUG] [Thread-160070] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:40.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:39:40.842 [DEBUG] [Thread-160070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:39:40.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:40.899 [DEBUG] [Thread-160070] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:40.899 [DEBUG] [Thread-160070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:40.899 [DEBUG] [Thread-160070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:40.899 [DEBUG] [Thread-160070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:39:40.899 [DEBUG] [Thread-160070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:40.913 [INFO] [Thread-160070] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:40.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:39:40.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:41.890 [DEBUG] [Thread-160070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:41.890 [DEBUG] [Thread-160070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:41.938 [DEBUG] [Thread-160070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:41.938 [DEBUG] [Thread-160070] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:41.946 [DEBUG] [Thread-160070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:41.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:41.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:39:41.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:39:41.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:41.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:41.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:41.977 [DEBUG] [Thread-160070] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:42.881 [DEBUG] [Thread-160072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:39:46.918 [DEBUG] [Thread-160073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:39:51.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:39:51.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:39:51.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:39:52.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 39, 29), 16.27, 33.01, 0.0, 10.45, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:39:52.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:39:29
2025-09-29T15:39:52.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:39:52.799 [DEBUG] [Thread-160074] [transport.py] [_log()] starting thread (client mode): 0x2b94f400
2025-09-29T15:39:52.799 [DEBUG] [Thread-160074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:52.821 [DEBUG] [Thread-160074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:39:52.821 [INFO] [Thread-160074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:39:52.824 [DEBUG] [Thread-160074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:52.824 [DEBUG] [Thread-160074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:39:52.824 [DEBUG] [Thread-160074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:52.824 [DEBUG] [Thread-160074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:52.824 [DEBUG] [Thread-160074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:52.824 [DEBUG] [Thread-160074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:52.824 [DEBUG] [Thread-160074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] Compression: none
2025-09-29T15:39:52.825 [DEBUG] [Thread-160074] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:52.835 [DEBUG] [Thread-160074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:52.835 [DEBUG] [Thread-160074] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:52.835 [DEBUG] [Thread-160074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:39:52.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:39:52.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:52.837 [DEBUG] [Thread-160074] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:52.837 [DEBUG] [Thread-160074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:52.837 [DEBUG] [Thread-160074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:52.837 [DEBUG] [Thread-160074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:39:52.837 [DEBUG] [Thread-160074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:52.856 [INFO] [Thread-160074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:52.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:53.423 [DEBUG] [Thread-160074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:53.424 [DEBUG] [Thread-160074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:53.424 [DEBUG] [Thread-160074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:39:53.464 [DEBUG] [Thread-160074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:53.464 [DEBUG] [Thread-160074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:53.466 [DEBUG] [Thread-160074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:53.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:53.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:39:53.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:39:53.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:39:53.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:53.485 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:39:53.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:53.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:53.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:39:53.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.569164 -999.00  +16.20  12.18     37   +1.90 1 1 1 1 1   888    0 14.73 13.40 ----- 12.2 12.2 166.6 13.0 24.1 -30.4 23.8 -29.3 25.8 -30.3 26.7 -31.7
2025-09-29T15:39:53.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:39:53.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:39:53.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.569164
2025-09-29T15:39:53.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:39:53.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:39:53.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:39:53.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:39:53.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:39:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:39:29', tmtdew=16.27, humidity=33.01, cloud=0.0, wind=10.45, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:39:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:39:53.488 [DEBUG] [Thread-160074] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:53.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:39:53.589 [DEBUG] [Thread-160077] [transport.py] [_log()] starting thread (client mode): 0x2e3fa260
2025-09-29T15:39:53.589 [DEBUG] [Thread-160077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:39:53.605 [DEBUG] [Thread-160077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:39:53.605 [INFO] [Thread-160077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:39:53.612 [DEBUG] [Thread-160077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:39:53.612 [DEBUG] [Thread-160077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] client lang: <none>
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] server lang: <none>
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] kex follows: False
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] Compression: none
2025-09-29T15:39:53.613 [DEBUG] [Thread-160077] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:39:53.674 [DEBUG] [Thread-160077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:39:53.675 [DEBUG] [Thread-160077] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:39:53.675 [DEBUG] [Thread-160077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:39:53.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:39:53.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:39:53.730 [DEBUG] [Thread-160077] [transport.py] [_log()] userauth is OK
2025-09-29T15:39:53.731 [DEBUG] [Thread-160077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:39:53.731 [DEBUG] [Thread-160077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:39:53.731 [DEBUG] [Thread-160077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:39:53.731 [DEBUG] [Thread-160077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:39:53.750 [INFO] [Thread-160077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:39:53.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:39:53.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:39:54.757 [DEBUG] [Thread-160077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:39:54.757 [DEBUG] [Thread-160077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:39:54.805 [DEBUG] [Thread-160077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:39:54.805 [DEBUG] [Thread-160077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:39:54.814 [DEBUG] [Thread-160077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:39:54.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:39:54.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:39:54.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:39:54.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:39:54.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:39:54.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:39:54.848 [DEBUG] [Thread-160077] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:39:57.915 [DEBUG] [Thread-160079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:40:04.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:40:04.851 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:40:04.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:40:05.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 40, 1), 16.37, 32.71, 0.0, 15.18, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:40:05.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:40:01
2025-09-29T15:40:05.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:40:05.677 [DEBUG] [Thread-160080] [transport.py] [_log()] starting thread (client mode): 0x2e377970
2025-09-29T15:40:05.678 [DEBUG] [Thread-160080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:40:05.697 [DEBUG] [Thread-160080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:40:05.697 [INFO] [Thread-160080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:40:05.700 [DEBUG] [Thread-160080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:40:05.700 [DEBUG] [Thread-160080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:40:05.700 [DEBUG] [Thread-160080] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:40:05.700 [DEBUG] [Thread-160080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:05.700 [DEBUG] [Thread-160080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:05.700 [DEBUG] [Thread-160080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] client lang: <none>
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] server lang: <none>
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] kex follows: False
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] Compression: none
2025-09-29T15:40:05.701 [DEBUG] [Thread-160080] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:40:05.718 [DEBUG] [Thread-160080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:40:05.718 [DEBUG] [Thread-160080] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:40:05.719 [DEBUG] [Thread-160080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:40:05.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:40:05.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:40:05.721 [DEBUG] [Thread-160080] [transport.py] [_log()] userauth is OK
2025-09-29T15:40:05.721 [DEBUG] [Thread-160080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:40:05.721 [DEBUG] [Thread-160080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:40:05.721 [DEBUG] [Thread-160080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:40:05.722 [DEBUG] [Thread-160080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:40:05.738 [INFO] [Thread-160080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:40:05.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:40:12.958 [DEBUG] [Thread-160082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:40:13.286 [DEBUG] [Thread-160080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:40:13.286 [DEBUG] [Thread-160080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:40:13.286 [DEBUG] [Thread-160080] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:40:13.327 [DEBUG] [Thread-160080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:40:13.328 [DEBUG] [Thread-160080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:40:13.330 [DEBUG] [Thread-160080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:40:13.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:40:13.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:40:13.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:40:13.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:40:13.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:40:13.431 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:40:13.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:40:13.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:40:13.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:40:13.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.569164 -999.00  +16.20  12.18     37   +1.90 1 1 1 1 1   888    0 14.73 13.40 ----- 12.2 12.2 166.6 13.0 24.1 -30.4 23.8 -29.3 25.8 -30.3 26.7 -31.7
2025-09-29T15:40:13.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:40:13.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:40:13.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.569164
2025-09-29T15:40:13.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:40:13.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:40:13.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:40:13.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:40:13.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:40:13.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:40:01', tmtdew=16.37, humidity=32.71, cloud=0.0, wind=15.18, temperature=16.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:39:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:40:13.434 [DEBUG] [Thread-160080] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:40:13.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:40:13.531 [DEBUG] [Thread-160084] [transport.py] [_log()] starting thread (client mode): 0x2b96e830
2025-09-29T15:40:13.531 [DEBUG] [Thread-160084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:40:13.546 [DEBUG] [Thread-160084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:40:13.546 [INFO] [Thread-160084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] client lang: <none>
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] server lang: <none>
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] kex follows: False
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] Compression: none
2025-09-29T15:40:13.554 [DEBUG] [Thread-160084] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:40:13.614 [DEBUG] [Thread-160084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:40:13.614 [DEBUG] [Thread-160084] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:40:13.615 [DEBUG] [Thread-160084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:40:13.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:40:13.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:40:13.669 [DEBUG] [Thread-160084] [transport.py] [_log()] userauth is OK
2025-09-29T15:40:13.670 [DEBUG] [Thread-160084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:40:13.670 [DEBUG] [Thread-160084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:40:13.670 [DEBUG] [Thread-160084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:40:13.670 [DEBUG] [Thread-160084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:40:13.688 [INFO] [Thread-160084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:40:13.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:40:13.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:40:14.638 [DEBUG] [Thread-160084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:40:14.638 [DEBUG] [Thread-160084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:40:14.650 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:40:14.651 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:40:14.686 [DEBUG] [Thread-160084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:40:14.686 [DEBUG] [Thread-160084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:40:14.695 [DEBUG] [Thread-160084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:40:14.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:40:14.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:40:14.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:40:14.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:40:14.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:40:14.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:40:14.729 [DEBUG] [Thread-160084] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:40:24.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:40:24.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:40:24.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:40:25.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 40, 1), 16.37, 32.71, 0.0, 15.18, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:40:25.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:40:01
2025-09-29T15:40:25.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:40:25.552 [DEBUG] [Thread-160086] [transport.py] [_log()] starting thread (client mode): 0x2b9cc5b0
2025-09-29T15:40:25.552 [DEBUG] [Thread-160086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:40:25.573 [DEBUG] [Thread-160086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:40:25.573 [INFO] [Thread-160086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:40:25.576 [DEBUG] [Thread-160086] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] client lang: <none>
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] server lang: <none>
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] kex follows: False
2025-09-29T15:40:25.577 [DEBUG] [Thread-160086] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:40:25.578 [DEBUG] [Thread-160086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:40:25.578 [DEBUG] [Thread-160086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:40:25.578 [DEBUG] [Thread-160086] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:40:25.578 [DEBUG] [Thread-160086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:40:25.578 [DEBUG] [Thread-160086] [transport.py] [_log()] Compression: none
2025-09-29T15:40:25.578 [DEBUG] [Thread-160086] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:40:25.598 [DEBUG] [Thread-160086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:40:25.598 [DEBUG] [Thread-160086] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:40:25.599 [DEBUG] [Thread-160086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:40:25.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:40:25.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:40:25.601 [DEBUG] [Thread-160086] [transport.py] [_log()] userauth is OK
2025-09-29T15:40:25.602 [DEBUG] [Thread-160086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:40:25.602 [DEBUG] [Thread-160086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:40:25.602 [DEBUG] [Thread-160086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:40:25.602 [DEBUG] [Thread-160086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:40:25.625 [INFO] [Thread-160086] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:40:25.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:40:26.243 [DEBUG] [Thread-160086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:40:26.243 [DEBUG] [Thread-160086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:40:26.243 [DEBUG] [Thread-160086] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:40:26.283 [DEBUG] [Thread-160086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:40:26.283 [DEBUG] [Thread-160086] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:40:26.286 [DEBUG] [Thread-160086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:40:26.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:40:26.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:40:26.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:40:26.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:40:26.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:40:26.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:40:26.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:40:26.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:40:26.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:40:26.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.569511 -999.00  +16.10  10.56     38   +1.80 1 1 1 1 1   888    0 14.83 11.21 ----- 7.6 10.6 145.3 14.3 24.2 -29.9 23.6 -28.5 25.7 -29.8 26.6 -30.7
2025-09-29T15:40:26.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:40:26.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:40:26.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.569511
2025-09-29T15:40:26.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:40:26.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:40:26.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:40:26.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:40:26.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:40:26.311 [DEBUG] [Thread-160086] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:40:26.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:40:01', tmtdew=16.37, humidity=32.71, cloud=0.0, wind=15.18, temperature=16.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:40:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:40:26.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:40:26.405 [DEBUG] [Thread-160089] [transport.py] [_log()] starting thread (client mode): 0x2b91e4a0
2025-09-29T15:40:26.405 [DEBUG] [Thread-160089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:40:26.419 [DEBUG] [Thread-160089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:40:26.419 [INFO] [Thread-160089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] client lang: <none>
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] server lang: <none>
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] kex follows: False
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:40:26.429 [DEBUG] [Thread-160089] [transport.py] [_log()] Compression: none
2025-09-29T15:40:26.430 [DEBUG] [Thread-160089] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:40:26.485 [DEBUG] [Thread-160089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:40:26.485 [DEBUG] [Thread-160089] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:40:26.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:40:26.486 [DEBUG] [Thread-160089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:40:26.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:40:26.541 [DEBUG] [Thread-160089] [transport.py] [_log()] userauth is OK
2025-09-29T15:40:26.541 [DEBUG] [Thread-160089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:40:26.542 [DEBUG] [Thread-160089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:40:26.542 [DEBUG] [Thread-160089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:40:26.542 [DEBUG] [Thread-160089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:40:26.561 [INFO] [Thread-160089] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:40:26.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:40:26.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:40:27.505 [DEBUG] [Thread-160089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:40:27.506 [DEBUG] [Thread-160089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:40:27.553 [DEBUG] [Thread-160089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:40:27.553 [DEBUG] [Thread-160089] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:40:27.562 [DEBUG] [Thread-160089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:40:27.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:40:27.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:40:27.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:40:27.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:40:27.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:40:27.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:40:27.597 [DEBUG] [Thread-160089] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:40:27.989 [DEBUG] [Thread-160091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:40:37.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:40:37.600 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:40:37.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:40:38.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 40, 32), 16.46, 32.5, 0.0, 13.71, 16.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:40:38.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:40:32
2025-09-29T15:40:38.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:40:38.433 [DEBUG] [Thread-160092] [transport.py] [_log()] starting thread (client mode): 0x30ddf430
2025-09-29T15:40:38.433 [DEBUG] [Thread-160092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:40:38.448 [DEBUG] [Thread-160092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:40:38.448 [INFO] [Thread-160092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:40:38.451 [DEBUG] [Thread-160092] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:40:38.451 [DEBUG] [Thread-160092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:40:38.451 [DEBUG] [Thread-160092] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:40:38.451 [DEBUG] [Thread-160092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:38.451 [DEBUG] [Thread-160092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:38.451 [DEBUG] [Thread-160092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] client lang: <none>
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] server lang: <none>
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] kex follows: False
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] Compression: none
2025-09-29T15:40:38.452 [DEBUG] [Thread-160092] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:40:38.468 [DEBUG] [Thread-160092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:40:38.469 [DEBUG] [Thread-160092] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:40:38.469 [DEBUG] [Thread-160092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:40:38.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:40:38.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:40:38.471 [DEBUG] [Thread-160092] [transport.py] [_log()] userauth is OK
2025-09-29T15:40:38.472 [DEBUG] [Thread-160092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:40:38.472 [DEBUG] [Thread-160092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:40:38.472 [DEBUG] [Thread-160092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:40:38.472 [DEBUG] [Thread-160092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:40:38.489 [INFO] [Thread-160092] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:40:38.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:40:39.225 [DEBUG] [Thread-160092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:40:39.226 [DEBUG] [Thread-160092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:40:39.226 [DEBUG] [Thread-160092] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:40:39.266 [DEBUG] [Thread-160092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:40:39.266 [DEBUG] [Thread-160092] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:40:39.269 [DEBUG] [Thread-160092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:40:39.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:40:39.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:40:39.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:40:39.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:40:39.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:40:39.293 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:40:39.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:40:39.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:40:39.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:40:39.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.569511 -999.00  +16.10  10.56     38   +1.80 1 1 1 1 1   888    0 14.83 11.21 ----- 7.6 10.6 145.3 14.3 24.2 -29.9 23.6 -28.5 25.7 -29.8 26.6 -30.7
2025-09-29T15:40:39.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:40:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:40:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.569511
2025-09-29T15:40:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:40:39.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:40:39.295 [DEBUG] [Thread-160092] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:40:39.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:40:39.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:40:39.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:40:39.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:40:32', tmtdew=16.46, humidity=32.5, cloud=0.0, wind=13.71, temperature=16.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:40:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:40:39.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:40:39.388 [DEBUG] [Thread-160095] [transport.py] [_log()] starting thread (client mode): 0x2e374b50
2025-09-29T15:40:39.389 [DEBUG] [Thread-160095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:40:39.403 [DEBUG] [Thread-160095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:40:39.403 [INFO] [Thread-160095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:40:39.411 [DEBUG] [Thread-160095] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:40:39.411 [DEBUG] [Thread-160095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] client lang: <none>
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] server lang: <none>
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] kex follows: False
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] Compression: none
2025-09-29T15:40:39.412 [DEBUG] [Thread-160095] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:40:39.469 [DEBUG] [Thread-160095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:40:39.469 [DEBUG] [Thread-160095] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:40:39.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:40:39.470 [DEBUG] [Thread-160095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:40:39.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:40:39.525 [DEBUG] [Thread-160095] [transport.py] [_log()] userauth is OK
2025-09-29T15:40:39.525 [DEBUG] [Thread-160095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:40:39.525 [DEBUG] [Thread-160095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:40:39.525 [DEBUG] [Thread-160095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:40:39.526 [DEBUG] [Thread-160095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:40:39.545 [INFO] [Thread-160095] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:40:39.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:40:39.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:40:40.484 [DEBUG] [Thread-160095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:40:40.484 [DEBUG] [Thread-160095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:40:40.532 [DEBUG] [Thread-160095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:40:40.532 [DEBUG] [Thread-160095] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:40:40.541 [DEBUG] [Thread-160095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:40:40.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:40:40.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:40:40.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:40:40.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:40:40.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:40:40.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:40:40.576 [DEBUG] [Thread-160095] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:40:43.043 [DEBUG] [Thread-160097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:40:46.950 [DEBUG] [Thread-160098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:40:50.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:40:50.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:40:50.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:40:51.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 40, 32), 16.46, 32.5, 0.0, 13.71, 16.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:40:51.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:40:32
2025-09-29T15:40:51.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:40:51.417 [DEBUG] [Thread-160099] [transport.py] [_log()] starting thread (client mode): 0x2b96f880
2025-09-29T15:40:51.417 [DEBUG] [Thread-160099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:40:51.436 [DEBUG] [Thread-160099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:40:51.436 [INFO] [Thread-160099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] client lang: <none>
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] server lang: <none>
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] kex follows: False
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:40:51.439 [DEBUG] [Thread-160099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:40:51.440 [DEBUG] [Thread-160099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:40:51.440 [DEBUG] [Thread-160099] [transport.py] [_log()] Compression: none
2025-09-29T15:40:51.440 [DEBUG] [Thread-160099] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:40:51.447 [DEBUG] [Thread-160099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:40:51.448 [DEBUG] [Thread-160099] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:40:51.448 [DEBUG] [Thread-160099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:40:51.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:40:51.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:40:51.450 [DEBUG] [Thread-160099] [transport.py] [_log()] userauth is OK
2025-09-29T15:40:51.450 [DEBUG] [Thread-160099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:40:51.450 [DEBUG] [Thread-160099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:40:51.450 [DEBUG] [Thread-160099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:40:51.450 [DEBUG] [Thread-160099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:40:51.468 [INFO] [Thread-160099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:40:51.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:40:52.064 [DEBUG] [Thread-160099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:40:52.065 [DEBUG] [Thread-160099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:40:52.065 [DEBUG] [Thread-160099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:40:52.105 [DEBUG] [Thread-160099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:40:52.106 [DEBUG] [Thread-160099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:40:52.108 [DEBUG] [Thread-160099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:40:52.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:40:52.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:40:52.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:40:52.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:40:52.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:40:52.131 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:40:52.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:40:52.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:40:52.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:40:52.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.569859 -999.00  +16.20  10.20     38   +1.90 1 1 1 1 1   888    0 14.72 9.90 ----- 9.7 10.2 122.5 11.4 24.2 -29.3 23.7 -28.7 25.7 -28.5 26.7 -29.8
2025-09-29T15:40:52.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:40:52.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:40:52.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.569859
2025-09-29T15:40:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:40:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:40:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:40:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:40:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:40:52.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:40:32', tmtdew=16.46, humidity=32.5, cloud=0.0, wind=13.71, temperature=16.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:40:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:40:52.134 [DEBUG] [Thread-160099] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:40:52.219 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:40:52.228 [DEBUG] [Thread-160102] [transport.py] [_log()] starting thread (client mode): 0x2e376020
2025-09-29T15:40:52.228 [DEBUG] [Thread-160102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:40:52.245 [DEBUG] [Thread-160102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:40:52.245 [INFO] [Thread-160102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:40:52.252 [DEBUG] [Thread-160102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] client lang: <none>
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] server lang: <none>
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] kex follows: False
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] Compression: none
2025-09-29T15:40:52.253 [DEBUG] [Thread-160102] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:40:52.313 [DEBUG] [Thread-160102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:40:52.313 [DEBUG] [Thread-160102] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:40:52.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:40:52.314 [DEBUG] [Thread-160102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:40:52.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:40:52.368 [DEBUG] [Thread-160102] [transport.py] [_log()] userauth is OK
2025-09-29T15:40:52.369 [DEBUG] [Thread-160102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:40:52.369 [DEBUG] [Thread-160102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:40:52.369 [DEBUG] [Thread-160102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:40:52.369 [DEBUG] [Thread-160102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:40:52.388 [INFO] [Thread-160102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:40:52.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:40:52.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:40:53.388 [DEBUG] [Thread-160102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:40:53.388 [DEBUG] [Thread-160102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:40:53.436 [DEBUG] [Thread-160102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:40:53.436 [DEBUG] [Thread-160102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:40:53.445 [DEBUG] [Thread-160102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:40:53.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:40:53.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:40:53.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:40:53.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:40:53.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:40:53.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:40:53.480 [DEBUG] [Thread-160102] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:40:58.084 [DEBUG] [Thread-160104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:41:03.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:41:03.483 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:41:03.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:41:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 40, 32), 16.46, 32.5, 0.0, 13.71, 16.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:41:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:40:32
2025-09-29T15:41:04.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:41:04.331 [DEBUG] [Thread-160105] [transport.py] [_log()] starting thread (client mode): 0x2b91e530
2025-09-29T15:41:04.331 [DEBUG] [Thread-160105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:04.351 [DEBUG] [Thread-160105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:41:04.351 [INFO] [Thread-160105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:41:04.354 [DEBUG] [Thread-160105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:04.355 [DEBUG] [Thread-160105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:04.356 [DEBUG] [Thread-160105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:04.356 [DEBUG] [Thread-160105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:04.356 [DEBUG] [Thread-160105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:04.356 [DEBUG] [Thread-160105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:04.356 [DEBUG] [Thread-160105] [transport.py] [_log()] Compression: none
2025-09-29T15:41:04.356 [DEBUG] [Thread-160105] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:04.373 [DEBUG] [Thread-160105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:04.373 [DEBUG] [Thread-160105] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:04.374 [DEBUG] [Thread-160105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:41:04.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:41:04.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:04.376 [DEBUG] [Thread-160105] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:04.376 [DEBUG] [Thread-160105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:04.376 [DEBUG] [Thread-160105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:04.376 [DEBUG] [Thread-160105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:41:04.376 [DEBUG] [Thread-160105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:04.394 [INFO] [Thread-160105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:04.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:04.991 [DEBUG] [Thread-160105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:04.991 [DEBUG] [Thread-160105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:04.991 [DEBUG] [Thread-160105] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:41:05.032 [DEBUG] [Thread-160105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:05.032 [DEBUG] [Thread-160105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:05.034 [DEBUG] [Thread-160105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:05.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:05.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:41:05.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:41:05.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:41:05.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:05.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:41:05.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.569859 -999.00  +16.20  10.20     38   +1.90 1 1 1 1 1   888    0 14.72 9.90 ----- 9.7 10.2 122.5 11.4 24.2 -29.3 23.7 -28.7 25.7 -28.5 26.7 -29.8
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.569859
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:41:05.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:40:32', tmtdew=16.46, humidity=32.5, cloud=0.0, wind=13.71, temperature=16.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:40:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:41:05.076 [DEBUG] [Thread-160105] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:05.147 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:41:05.158 [DEBUG] [Thread-160108] [transport.py] [_log()] starting thread (client mode): 0x2e3601c0
2025-09-29T15:41:05.158 [DEBUG] [Thread-160108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:05.177 [DEBUG] [Thread-160108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:41:05.177 [INFO] [Thread-160108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] Compression: none
2025-09-29T15:41:05.185 [DEBUG] [Thread-160108] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:05.243 [DEBUG] [Thread-160108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:05.243 [DEBUG] [Thread-160108] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:05.243 [DEBUG] [Thread-160108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:41:05.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:41:05.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:05.300 [DEBUG] [Thread-160108] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:05.300 [DEBUG] [Thread-160108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:05.300 [DEBUG] [Thread-160108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:05.300 [DEBUG] [Thread-160108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:41:05.300 [DEBUG] [Thread-160108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:05.315 [INFO] [Thread-160108] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:05.315 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:41:05.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:06.298 [DEBUG] [Thread-160108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:06.298 [DEBUG] [Thread-160108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:06.346 [DEBUG] [Thread-160108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:06.346 [DEBUG] [Thread-160108] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:06.354 [DEBUG] [Thread-160108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:06.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:06.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:41:06.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:41:06.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:06.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:06.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:06.387 [DEBUG] [Thread-160108] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:13.127 [DEBUG] [Thread-160110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:41:14.789 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:41:14.790 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:41:16.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:41:16.389 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:41:16.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:41:16.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 41, 4), 16.41, 32.63, 0.0, 15.51, 16.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:41:16.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:41:04
2025-09-29T15:41:17.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:41:17.233 [DEBUG] [Thread-160111] [transport.py] [_log()] starting thread (client mode): 0x2e377fd0
2025-09-29T15:41:17.233 [DEBUG] [Thread-160111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:17.253 [DEBUG] [Thread-160111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:41:17.253 [INFO] [Thread-160111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:17.256 [DEBUG] [Thread-160111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:17.257 [DEBUG] [Thread-160111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:17.257 [DEBUG] [Thread-160111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:17.257 [DEBUG] [Thread-160111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:17.257 [DEBUG] [Thread-160111] [transport.py] [_log()] Compression: none
2025-09-29T15:41:17.257 [DEBUG] [Thread-160111] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:17.273 [DEBUG] [Thread-160111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:17.273 [DEBUG] [Thread-160111] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:17.274 [DEBUG] [Thread-160111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:41:17.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:41:17.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:17.276 [DEBUG] [Thread-160111] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:17.276 [DEBUG] [Thread-160111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:17.276 [DEBUG] [Thread-160111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:17.276 [DEBUG] [Thread-160111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:41:17.276 [DEBUG] [Thread-160111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:17.301 [INFO] [Thread-160111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:17.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:18.031 [DEBUG] [Thread-160111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:18.031 [DEBUG] [Thread-160111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:18.032 [DEBUG] [Thread-160111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:41:18.072 [DEBUG] [Thread-160111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:18.072 [DEBUG] [Thread-160111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:18.075 [DEBUG] [Thread-160111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:18.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:18.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:41:18.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:41:18.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:41:18.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:18.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:41:18.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:18.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:18.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:41:18.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.569859 -999.00  +16.20  10.20     38   +1.90 1 1 1 1 1   888    0 14.72 9.90 ----- 9.7 10.2 122.5 11.4 24.2 -29.3 23.7 -28.7 25.7 -28.5 26.7 -29.8
2025-09-29T15:41:18.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:41:18.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:41:18.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.569859
2025-09-29T15:41:18.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:41:18.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:41:18.096 [DEBUG] [Thread-160111] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:18.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:41:18.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:41:18.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:41:18.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:41:04', tmtdew=16.41, humidity=32.63, cloud=0.0, wind=15.51, temperature=16.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:40:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:41:18.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:41:18.189 [DEBUG] [Thread-160114] [transport.py] [_log()] starting thread (client mode): 0x2e3750c0
2025-09-29T15:41:18.189 [DEBUG] [Thread-160114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:18.203 [DEBUG] [Thread-160114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:41:18.203 [INFO] [Thread-160114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] Compression: none
2025-09-29T15:41:18.211 [DEBUG] [Thread-160114] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:18.267 [DEBUG] [Thread-160114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:18.267 [DEBUG] [Thread-160114] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:18.267 [DEBUG] [Thread-160114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:41:18.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:41:18.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:18.324 [DEBUG] [Thread-160114] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:18.324 [DEBUG] [Thread-160114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:18.325 [DEBUG] [Thread-160114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:18.325 [DEBUG] [Thread-160114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:41:18.325 [DEBUG] [Thread-160114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:18.344 [INFO] [Thread-160114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:18.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:41:18.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:19.313 [DEBUG] [Thread-160114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:19.313 [DEBUG] [Thread-160114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:19.362 [DEBUG] [Thread-160114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:19.362 [DEBUG] [Thread-160114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:19.371 [DEBUG] [Thread-160114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:19.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:19.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:41:19.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:41:19.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:19.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:19.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:19.405 [DEBUG] [Thread-160114] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:28.158 [DEBUG] [Thread-160116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:41:29.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:41:29.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:41:29.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:41:29.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 41, 4), 16.41, 32.63, 0.0, 15.51, 16.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:41:29.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:41:04
2025-09-29T15:41:30.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:41:30.239 [DEBUG] [Thread-160117] [transport.py] [_log()] starting thread (client mode): 0x2e3fbf40
2025-09-29T15:41:30.239 [DEBUG] [Thread-160117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:30.259 [DEBUG] [Thread-160117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:41:30.259 [INFO] [Thread-160117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:41:30.263 [DEBUG] [Thread-160117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:30.263 [DEBUG] [Thread-160117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:41:30.263 [DEBUG] [Thread-160117] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:30.263 [DEBUG] [Thread-160117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:30.263 [DEBUG] [Thread-160117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:30.263 [DEBUG] [Thread-160117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:30.263 [DEBUG] [Thread-160117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] Compression: none
2025-09-29T15:41:30.264 [DEBUG] [Thread-160117] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:30.282 [DEBUG] [Thread-160117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:30.282 [DEBUG] [Thread-160117] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:30.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:41:30.283 [DEBUG] [Thread-160117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:41:30.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:30.324 [DEBUG] [Thread-160117] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:30.325 [DEBUG] [Thread-160117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:30.325 [DEBUG] [Thread-160117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:30.325 [DEBUG] [Thread-160117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:41:30.325 [DEBUG] [Thread-160117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:30.347 [INFO] [Thread-160117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:30.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:30.982 [DEBUG] [Thread-160117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:30.982 [DEBUG] [Thread-160117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:30.983 [DEBUG] [Thread-160117] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:41:31.023 [DEBUG] [Thread-160117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:31.023 [DEBUG] [Thread-160117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:31.027 [DEBUG] [Thread-160117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:31.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:31.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:41:31.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:41:31.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:41:31.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:31.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:41:31.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:31.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:31.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:41:31.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.570206 -999.00  +16.50  11.41     37   +2.00 1 1 1 1 1   888    0 14.86 7.46 ----- 12.8 11.4 152.6 17.2 24.2 -29.9 23.7 -29.5 25.7 -29.3 26.7 -30.7
2025-09-29T15:41:31.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:41:31.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:41:31.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.570206
2025-09-29T15:41:31.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:41:31.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:41:31.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:41:31.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:41:31.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:41:31.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:41:04', tmtdew=16.41, humidity=32.63, cloud=0.0, wind=15.51, temperature=16.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:41:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:41:31.055 [DEBUG] [Thread-160117] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:31.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:41:31.151 [DEBUG] [Thread-160120] [transport.py] [_log()] starting thread (client mode): 0x2e360820
2025-09-29T15:41:31.151 [DEBUG] [Thread-160120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:31.166 [DEBUG] [Thread-160120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:41:31.166 [INFO] [Thread-160120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:41:31.174 [DEBUG] [Thread-160120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] Compression: none
2025-09-29T15:41:31.175 [DEBUG] [Thread-160120] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:31.231 [DEBUG] [Thread-160120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:31.232 [DEBUG] [Thread-160120] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:31.232 [DEBUG] [Thread-160120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:41:31.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:41:31.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:31.288 [DEBUG] [Thread-160120] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:31.288 [DEBUG] [Thread-160120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:31.288 [DEBUG] [Thread-160120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:31.288 [DEBUG] [Thread-160120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:41:31.288 [DEBUG] [Thread-160120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:31.307 [INFO] [Thread-160120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:31.308 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:41:31.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:32.312 [DEBUG] [Thread-160120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:32.312 [DEBUG] [Thread-160120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:32.360 [DEBUG] [Thread-160120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:32.360 [DEBUG] [Thread-160120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:32.369 [DEBUG] [Thread-160120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:32.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:32.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:41:32.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:41:32.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:32.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:32.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:32.404 [DEBUG] [Thread-160120] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:42.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:41:42.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:41:42.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:41:42.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 41, 36), 16.26, 33.05, 0.0, 18.12, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:41:42.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:41:36
2025-09-29T15:41:43.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:41:43.200 [DEBUG] [Thread-160122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:41:43.234 [DEBUG] [Thread-160123] [transport.py] [_log()] starting thread (client mode): 0x2b96caf0
2025-09-29T15:41:43.234 [DEBUG] [Thread-160123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:43.255 [DEBUG] [Thread-160123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:41:43.255 [INFO] [Thread-160123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:41:43.258 [DEBUG] [Thread-160123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:43.258 [DEBUG] [Thread-160123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:43.259 [DEBUG] [Thread-160123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:43.260 [DEBUG] [Thread-160123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:43.260 [DEBUG] [Thread-160123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:43.260 [DEBUG] [Thread-160123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:43.260 [DEBUG] [Thread-160123] [transport.py] [_log()] Compression: none
2025-09-29T15:41:43.260 [DEBUG] [Thread-160123] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:43.275 [DEBUG] [Thread-160123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:43.275 [DEBUG] [Thread-160123] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:43.275 [DEBUG] [Thread-160123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:41:43.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:41:43.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:43.276 [DEBUG] [Thread-160123] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:43.276 [DEBUG] [Thread-160123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:43.276 [DEBUG] [Thread-160123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:43.276 [DEBUG] [Thread-160123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:41:43.276 [DEBUG] [Thread-160123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:43.285 [INFO] [Thread-160123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:43.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:44.085 [DEBUG] [Thread-160123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:44.086 [DEBUG] [Thread-160123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:44.086 [DEBUG] [Thread-160123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:41:44.126 [DEBUG] [Thread-160123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:44.126 [DEBUG] [Thread-160123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:44.129 [DEBUG] [Thread-160123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:44.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:44.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:41:44.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:41:44.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:41:44.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:44.148 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:41:44.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:44.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:44.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:41:44.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.570206 -999.00  +16.50  11.41     37   +2.00 1 1 1 1 1   888    0 14.86 7.46 ----- 12.8 11.4 152.6 17.2 24.2 -29.9 23.7 -29.5 25.7 -29.3 26.7 -30.7
2025-09-29T15:41:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:41:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:41:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.570206
2025-09-29T15:41:44.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:41:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:41:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:41:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:41:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:41:44.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:41:36', tmtdew=16.26, humidity=33.05, cloud=0.0, wind=18.12, temperature=15.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:41:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:41:44.150 [DEBUG] [Thread-160123] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:44.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:41:44.258 [DEBUG] [Thread-160126] [transport.py] [_log()] starting thread (client mode): 0x2b91f1c0
2025-09-29T15:41:44.258 [DEBUG] [Thread-160126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:44.273 [DEBUG] [Thread-160126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:41:44.273 [INFO] [Thread-160126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:44.281 [DEBUG] [Thread-160126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:44.282 [DEBUG] [Thread-160126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:44.282 [DEBUG] [Thread-160126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:44.282 [DEBUG] [Thread-160126] [transport.py] [_log()] Compression: none
2025-09-29T15:41:44.282 [DEBUG] [Thread-160126] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:44.339 [DEBUG] [Thread-160126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:44.339 [DEBUG] [Thread-160126] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:44.340 [DEBUG] [Thread-160126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:41:44.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:41:44.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:44.396 [DEBUG] [Thread-160126] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:44.396 [DEBUG] [Thread-160126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:44.396 [DEBUG] [Thread-160126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:44.396 [DEBUG] [Thread-160126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:41:44.396 [DEBUG] [Thread-160126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:44.415 [INFO] [Thread-160126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:44.415 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:41:44.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:45.362 [DEBUG] [Thread-160126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:45.363 [DEBUG] [Thread-160126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:45.410 [DEBUG] [Thread-160126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:45.410 [DEBUG] [Thread-160126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:45.419 [DEBUG] [Thread-160126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:45.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:45.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:41:45.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:41:45.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:45.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:45.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:45.454 [DEBUG] [Thread-160126] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:46.982 [DEBUG] [Thread-160128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:41:55.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:41:55.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:41:55.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:41:56.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 41, 36), 16.26, 33.05, 0.0, 18.12, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:41:56.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:41:36
2025-09-29T15:41:56.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:41:56.282 [DEBUG] [Thread-160129] [transport.py] [_log()] starting thread (client mode): 0x2e3f9450
2025-09-29T15:41:56.282 [DEBUG] [Thread-160129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:56.308 [DEBUG] [Thread-160129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:41:56.308 [INFO] [Thread-160129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:56.312 [DEBUG] [Thread-160129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:56.313 [DEBUG] [Thread-160129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:56.313 [DEBUG] [Thread-160129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:56.313 [DEBUG] [Thread-160129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:56.313 [DEBUG] [Thread-160129] [transport.py] [_log()] Compression: none
2025-09-29T15:41:56.313 [DEBUG] [Thread-160129] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:56.321 [DEBUG] [Thread-160129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:56.322 [DEBUG] [Thread-160129] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:56.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:41:56.323 [DEBUG] [Thread-160129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:41:56.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:56.324 [DEBUG] [Thread-160129] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:56.325 [DEBUG] [Thread-160129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:56.325 [DEBUG] [Thread-160129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:56.325 [DEBUG] [Thread-160129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:41:56.325 [DEBUG] [Thread-160129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:56.349 [INFO] [Thread-160129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:56.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:57.109 [DEBUG] [Thread-160129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:57.109 [DEBUG] [Thread-160129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:57.110 [DEBUG] [Thread-160129] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:41:57.150 [DEBUG] [Thread-160129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:57.151 [DEBUG] [Thread-160129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:57.154 [DEBUG] [Thread-160129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:57.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:57.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:41:57.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:41:57.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:41:57.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:57.173 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:41:57.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:57.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:57.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:41:57.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.570206 -999.00  +16.50  11.41     37   +2.00 1 1 1 1 1   888    0 14.86 7.46 ----- 12.8 11.4 152.6 17.2 24.2 -29.9 23.7 -29.5 25.7 -29.3 26.7 -30.7
2025-09-29T15:41:57.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:41:57.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:41:57.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.570206
2025-09-29T15:41:57.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:41:57.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:41:57.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:41:57.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:41:57.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:41:57.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:41:36', tmtdew=16.26, humidity=33.05, cloud=0.0, wind=18.12, temperature=15.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:41:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:41:57.175 [DEBUG] [Thread-160129] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:41:57.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:41:57.266 [DEBUG] [Thread-160132] [transport.py] [_log()] starting thread (client mode): 0x2b96dab0
2025-09-29T15:41:57.266 [DEBUG] [Thread-160132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:41:57.281 [DEBUG] [Thread-160132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:41:57.281 [INFO] [Thread-160132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:41:57.288 [DEBUG] [Thread-160132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] client lang: <none>
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] server lang: <none>
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] kex follows: False
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] Compression: none
2025-09-29T15:41:57.289 [DEBUG] [Thread-160132] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:41:57.347 [DEBUG] [Thread-160132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:41:57.347 [DEBUG] [Thread-160132] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:41:57.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:41:57.348 [DEBUG] [Thread-160132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:41:57.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:41:57.403 [DEBUG] [Thread-160132] [transport.py] [_log()] userauth is OK
2025-09-29T15:41:57.403 [DEBUG] [Thread-160132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:41:57.404 [DEBUG] [Thread-160132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:41:57.404 [DEBUG] [Thread-160132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:41:57.404 [DEBUG] [Thread-160132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:41:57.422 [INFO] [Thread-160132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:41:57.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:41:57.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:41:58.235 [DEBUG] [Thread-160134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:41:58.378 [DEBUG] [Thread-160132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:41:58.378 [DEBUG] [Thread-160132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:41:58.426 [DEBUG] [Thread-160132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:41:58.426 [DEBUG] [Thread-160132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:41:58.435 [DEBUG] [Thread-160132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:41:58.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:41:58.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:41:58.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:41:58.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:41:58.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:41:58.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:41:58.469 [DEBUG] [Thread-160132] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:08.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:42:08.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:42:08.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:42:09.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 41, 36), 16.26, 33.05, 0.0, 18.12, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:42:09.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:41:36
2025-09-29T15:42:09.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:42:09.315 [DEBUG] [Thread-160135] [transport.py] [_log()] starting thread (client mode): 0x30ddd630
2025-09-29T15:42:09.315 [DEBUG] [Thread-160135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:42:09.336 [DEBUG] [Thread-160135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:42:09.336 [INFO] [Thread-160135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:42:09.339 [DEBUG] [Thread-160135] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:42:09.339 [DEBUG] [Thread-160135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:42:09.339 [DEBUG] [Thread-160135] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:42:09.339 [DEBUG] [Thread-160135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:09.339 [DEBUG] [Thread-160135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] client lang: <none>
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] server lang: <none>
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] kex follows: False
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] Compression: none
2025-09-29T15:42:09.340 [DEBUG] [Thread-160135] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:42:09.356 [DEBUG] [Thread-160135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:42:09.356 [DEBUG] [Thread-160135] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:42:09.356 [DEBUG] [Thread-160135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:42:09.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:42:09.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:42:09.357 [DEBUG] [Thread-160135] [transport.py] [_log()] userauth is OK
2025-09-29T15:42:09.357 [DEBUG] [Thread-160135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:42:09.357 [DEBUG] [Thread-160135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:42:09.357 [DEBUG] [Thread-160135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:42:09.357 [DEBUG] [Thread-160135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:42:09.372 [INFO] [Thread-160135] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:42:09.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:42:10.016 [DEBUG] [Thread-160135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:42:10.016 [DEBUG] [Thread-160135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:42:10.016 [DEBUG] [Thread-160135] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:42:10.057 [DEBUG] [Thread-160135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:42:10.057 [DEBUG] [Thread-160135] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:42:10.060 [DEBUG] [Thread-160135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:42:10.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:42:10.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:42:10.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:42:10.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:42:10.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:42:10.077 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:42:10.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.570553 -999.00  +16.50  17.92     37   +1.90 1 1 1 1 1   888    0 14.70 6.11 ----- 20.4 17.9 125.6 22.4 24.2 -30.2 23.7 -29.1 25.7 -31.1 26.7 -30.7
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.570553
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:42:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:42:10.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:41:36', tmtdew=16.26, humidity=33.05, cloud=0.0, wind=18.12, temperature=15.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:41:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:42:10.078 [DEBUG] [Thread-160135] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:10.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:42:10.165 [DEBUG] [Thread-160138] [transport.py] [_log()] starting thread (client mode): 0x2e3fa2f0
2025-09-29T15:42:10.165 [DEBUG] [Thread-160138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:42:10.179 [DEBUG] [Thread-160138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:42:10.179 [INFO] [Thread-160138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] client lang: <none>
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] server lang: <none>
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] kex follows: False
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] Compression: none
2025-09-29T15:42:10.187 [DEBUG] [Thread-160138] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:42:10.247 [DEBUG] [Thread-160138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:42:10.247 [DEBUG] [Thread-160138] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:42:10.247 [DEBUG] [Thread-160138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:42:10.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:42:10.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:42:10.305 [DEBUG] [Thread-160138] [transport.py] [_log()] userauth is OK
2025-09-29T15:42:10.306 [DEBUG] [Thread-160138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:42:10.306 [DEBUG] [Thread-160138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:42:10.306 [DEBUG] [Thread-160138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:42:10.306 [DEBUG] [Thread-160138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:42:10.320 [INFO] [Thread-160138] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:42:10.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:42:10.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:42:11.295 [DEBUG] [Thread-160138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:42:11.295 [DEBUG] [Thread-160138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:42:11.343 [DEBUG] [Thread-160138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:42:11.344 [DEBUG] [Thread-160138] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:42:11.353 [DEBUG] [Thread-160138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:42:11.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:42:11.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:42:11.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:42:11.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:42:11.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:42:11.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:42:11.387 [DEBUG] [Thread-160138] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:13.287 [DEBUG] [Thread-160140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:42:14.930 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:42:14.931 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:42:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:42:21.390 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:42:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:42:21.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 42, 8), 16.41, 32.72, 0.0, 16.36, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:42:21.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:42:08
2025-09-29T15:42:22.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:42:22.241 [DEBUG] [Thread-160141] [transport.py] [_log()] starting thread (client mode): 0x2b96b8e0
2025-09-29T15:42:22.241 [DEBUG] [Thread-160141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:42:22.261 [DEBUG] [Thread-160141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:42:22.261 [INFO] [Thread-160141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] client lang: <none>
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] server lang: <none>
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] kex follows: False
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] Compression: none
2025-09-29T15:42:22.264 [DEBUG] [Thread-160141] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:42:22.281 [DEBUG] [Thread-160141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:42:22.281 [DEBUG] [Thread-160141] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:42:22.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:42:22.283 [DEBUG] [Thread-160141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:42:22.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:42:22.284 [DEBUG] [Thread-160141] [transport.py] [_log()] userauth is OK
2025-09-29T15:42:22.285 [DEBUG] [Thread-160141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:42:22.285 [DEBUG] [Thread-160141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:42:22.285 [DEBUG] [Thread-160141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:42:22.285 [DEBUG] [Thread-160141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:42:22.303 [INFO] [Thread-160141] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:42:22.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:42:23.109 [DEBUG] [Thread-160141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:42:23.109 [DEBUG] [Thread-160141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:42:23.110 [DEBUG] [Thread-160141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:42:23.150 [DEBUG] [Thread-160141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:42:23.150 [DEBUG] [Thread-160141] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:42:23.153 [DEBUG] [Thread-160141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:42:23.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:42:23.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:42:23.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:42:23.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:42:23.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:42:23.175 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:42:23.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:42:23.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:42:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:42:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.570553 -999.00  +16.50  17.92     37   +1.90 1 1 1 1 1   888    0 14.70 6.11 ----- 20.4 17.9 125.6 22.4 24.2 -30.2 23.7 -29.1 25.7 -31.1 26.7 -30.7
2025-09-29T15:42:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:42:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:42:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.570553
2025-09-29T15:42:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:42:23.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:42:23.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:42:23.177 [DEBUG] [Thread-160141] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:23.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:42:23.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:42:23.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:42:08', tmtdew=16.41, humidity=32.72, cloud=0.0, wind=16.36, temperature=15.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:41:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:42:23.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:42:23.272 [DEBUG] [Thread-160144] [transport.py] [_log()] starting thread (client mode): 0x30dde5f0
2025-09-29T15:42:23.272 [DEBUG] [Thread-160144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:42:23.286 [DEBUG] [Thread-160144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:42:23.286 [INFO] [Thread-160144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:42:23.294 [DEBUG] [Thread-160144] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:42:23.294 [DEBUG] [Thread-160144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:42:23.294 [DEBUG] [Thread-160144] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] client lang: <none>
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] server lang: <none>
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] kex follows: False
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] Compression: none
2025-09-29T15:42:23.295 [DEBUG] [Thread-160144] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:42:23.350 [DEBUG] [Thread-160144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:42:23.351 [DEBUG] [Thread-160144] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:42:23.351 [DEBUG] [Thread-160144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:42:23.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:42:23.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:42:23.407 [DEBUG] [Thread-160144] [transport.py] [_log()] userauth is OK
2025-09-29T15:42:23.407 [DEBUG] [Thread-160144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:42:23.407 [DEBUG] [Thread-160144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:42:23.407 [DEBUG] [Thread-160144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:42:23.407 [DEBUG] [Thread-160144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:42:23.430 [INFO] [Thread-160144] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:42:23.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:42:23.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:42:24.387 [DEBUG] [Thread-160144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:42:24.387 [DEBUG] [Thread-160144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:42:24.435 [DEBUG] [Thread-160144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:42:24.435 [DEBUG] [Thread-160144] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:42:24.444 [DEBUG] [Thread-160144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:42:24.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:42:24.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:42:24.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:42:24.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:42:24.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:42:24.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:42:24.479 [DEBUG] [Thread-160144] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:28.321 [DEBUG] [Thread-160146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:42:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:42:34.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:42:34.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:42:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 42, 8), 16.41, 32.72, 0.0, 16.36, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:42:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:42:08
2025-09-29T15:42:35.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:42:35.326 [DEBUG] [Thread-160147] [transport.py] [_log()] starting thread (client mode): 0x2b9692d0
2025-09-29T15:42:35.326 [DEBUG] [Thread-160147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:42:35.346 [DEBUG] [Thread-160147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:42:35.346 [INFO] [Thread-160147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:42:35.347 [DEBUG] [Thread-160147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:42:35.347 [DEBUG] [Thread-160147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:42:35.347 [DEBUG] [Thread-160147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:42:35.347 [DEBUG] [Thread-160147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:35.347 [DEBUG] [Thread-160147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:35.347 [DEBUG] [Thread-160147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] client lang: <none>
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] server lang: <none>
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] kex follows: False
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] Compression: none
2025-09-29T15:42:35.348 [DEBUG] [Thread-160147] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:42:35.364 [DEBUG] [Thread-160147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:42:35.365 [DEBUG] [Thread-160147] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:42:35.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:42:35.366 [DEBUG] [Thread-160147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:42:35.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:42:35.368 [DEBUG] [Thread-160147] [transport.py] [_log()] userauth is OK
2025-09-29T15:42:35.368 [DEBUG] [Thread-160147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:42:35.368 [DEBUG] [Thread-160147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:42:35.368 [DEBUG] [Thread-160147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:42:35.368 [DEBUG] [Thread-160147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:42:35.392 [INFO] [Thread-160147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:42:35.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:42:36.006 [DEBUG] [Thread-160147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:42:36.006 [DEBUG] [Thread-160147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:42:36.006 [DEBUG] [Thread-160147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:42:36.047 [DEBUG] [Thread-160147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:42:36.047 [DEBUG] [Thread-160147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:42:36.050 [DEBUG] [Thread-160147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:42:36.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:42:36.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:42:36.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:42:36.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:42:36.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:42:36.074 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:42:36.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:42:36.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:42:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:42:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.570901 -999.00  +16.10  14.12     37   +1.80 1 1 1 1 1   888    0 14.47 5.17 ----- 13.5 14.1 141.6 20.4 24.1 -29.8 23.7 -29.5 25.6 -30.5 26.5 -31.4
2025-09-29T15:42:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:42:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:42:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.570901
2025-09-29T15:42:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:42:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:42:36.076 [DEBUG] [Thread-160147] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:42:36.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:42:36.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:42:36.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:42:08', tmtdew=16.41, humidity=32.72, cloud=0.0, wind=16.36, temperature=15.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:42:05.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:42:36.159 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:42:36.171 [DEBUG] [Thread-160150] [transport.py] [_log()] starting thread (client mode): 0x2b969900
2025-09-29T15:42:36.171 [DEBUG] [Thread-160150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:42:36.186 [DEBUG] [Thread-160150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:42:36.186 [INFO] [Thread-160150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:42:36.194 [DEBUG] [Thread-160150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:42:36.194 [DEBUG] [Thread-160150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:42:36.194 [DEBUG] [Thread-160150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] client lang: <none>
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] server lang: <none>
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] kex follows: False
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] Compression: none
2025-09-29T15:42:36.195 [DEBUG] [Thread-160150] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:42:36.250 [DEBUG] [Thread-160150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:42:36.250 [DEBUG] [Thread-160150] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:42:36.251 [DEBUG] [Thread-160150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:42:36.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:42:36.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:42:36.310 [DEBUG] [Thread-160150] [transport.py] [_log()] userauth is OK
2025-09-29T15:42:36.310 [DEBUG] [Thread-160150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:42:36.310 [DEBUG] [Thread-160150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:42:36.310 [DEBUG] [Thread-160150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:42:36.310 [DEBUG] [Thread-160150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:42:36.329 [INFO] [Thread-160150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:42:36.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:42:36.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:42:37.291 [DEBUG] [Thread-160150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:42:37.292 [DEBUG] [Thread-160150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:42:37.339 [DEBUG] [Thread-160150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:42:37.339 [DEBUG] [Thread-160150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:42:37.348 [DEBUG] [Thread-160150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:42:37.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:42:37.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:42:37.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:42:37.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:42:37.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:42:37.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:42:37.383 [DEBUG] [Thread-160150] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:43.367 [DEBUG] [Thread-160152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:42:47.014 [DEBUG] [Thread-160153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:42:47.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:42:47.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:42:47.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:42:47.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 42, 40), 16.49, 32.33, 0.0, 18.07, 16.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:42:47.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:42:40
2025-09-29T15:42:48.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:42:48.221 [DEBUG] [Thread-160154] [transport.py] [_log()] starting thread (client mode): 0x2b96ba30
2025-09-29T15:42:48.221 [DEBUG] [Thread-160154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:42:48.241 [DEBUG] [Thread-160154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:42:48.242 [INFO] [Thread-160154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] client lang: <none>
2025-09-29T15:42:48.245 [DEBUG] [Thread-160154] [transport.py] [_log()] server lang: <none>
2025-09-29T15:42:48.246 [DEBUG] [Thread-160154] [transport.py] [_log()] kex follows: False
2025-09-29T15:42:48.246 [DEBUG] [Thread-160154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:42:48.246 [DEBUG] [Thread-160154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:42:48.246 [DEBUG] [Thread-160154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:42:48.246 [DEBUG] [Thread-160154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:42:48.246 [DEBUG] [Thread-160154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:42:48.246 [DEBUG] [Thread-160154] [transport.py] [_log()] Compression: none
2025-09-29T15:42:48.246 [DEBUG] [Thread-160154] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:42:48.264 [DEBUG] [Thread-160154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:42:48.265 [DEBUG] [Thread-160154] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:42:48.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:42:48.266 [DEBUG] [Thread-160154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:42:48.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:42:48.268 [DEBUG] [Thread-160154] [transport.py] [_log()] userauth is OK
2025-09-29T15:42:48.268 [DEBUG] [Thread-160154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:42:48.268 [DEBUG] [Thread-160154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:42:48.269 [DEBUG] [Thread-160154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:42:48.269 [DEBUG] [Thread-160154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:42:48.296 [INFO] [Thread-160154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:42:48.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:42:49.078 [DEBUG] [Thread-160154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:42:49.078 [DEBUG] [Thread-160154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:42:49.078 [DEBUG] [Thread-160154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:42:49.119 [DEBUG] [Thread-160154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:42:49.120 [DEBUG] [Thread-160154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:42:49.122 [DEBUG] [Thread-160154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:42:49.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:42:49.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:42:49.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:42:49.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:42:49.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:42:49.146 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:42:49.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:42:49.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:42:49.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:42:49.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.570901 -999.00  +16.10  14.12     37   +1.80 1 1 1 1 1   888    0 14.47 5.17 ----- 13.5 14.1 141.6 20.4 24.1 -29.8 23.7 -29.5 25.6 -30.5 26.5 -31.4
2025-09-29T15:42:49.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:42:49.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:42:49.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.570901
2025-09-29T15:42:49.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:42:49.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:42:49.148 [DEBUG] [Thread-160154] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:49.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:42:49.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:42:49.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:42:49.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:42:40', tmtdew=16.49, humidity=32.33, cloud=0.0, wind=18.07, temperature=16.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:42:05.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:42:49.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:42:49.241 [DEBUG] [Thread-160157] [transport.py] [_log()] starting thread (client mode): 0x2b96a1a0
2025-09-29T15:42:49.241 [DEBUG] [Thread-160157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:42:49.256 [DEBUG] [Thread-160157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:42:49.256 [INFO] [Thread-160157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:42:49.264 [DEBUG] [Thread-160157] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:42:49.264 [DEBUG] [Thread-160157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:42:49.264 [DEBUG] [Thread-160157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:42:49.264 [DEBUG] [Thread-160157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:49.264 [DEBUG] [Thread-160157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:42:49.264 [DEBUG] [Thread-160157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:49.264 [DEBUG] [Thread-160157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] client lang: <none>
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] server lang: <none>
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] kex follows: False
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:42:49.265 [DEBUG] [Thread-160157] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:42:49.266 [DEBUG] [Thread-160157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:42:49.266 [DEBUG] [Thread-160157] [transport.py] [_log()] Compression: none
2025-09-29T15:42:49.266 [DEBUG] [Thread-160157] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:42:49.326 [DEBUG] [Thread-160157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:42:49.326 [DEBUG] [Thread-160157] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:42:49.327 [DEBUG] [Thread-160157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:42:49.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:42:49.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:42:49.382 [DEBUG] [Thread-160157] [transport.py] [_log()] userauth is OK
2025-09-29T15:42:49.382 [DEBUG] [Thread-160157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:42:49.382 [DEBUG] [Thread-160157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:42:49.382 [DEBUG] [Thread-160157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:42:49.382 [DEBUG] [Thread-160157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:42:49.396 [INFO] [Thread-160157] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:42:49.396 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:42:49.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:42:50.381 [DEBUG] [Thread-160157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:42:50.381 [DEBUG] [Thread-160157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:42:50.429 [DEBUG] [Thread-160157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:42:50.429 [DEBUG] [Thread-160157] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:42:50.438 [DEBUG] [Thread-160157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:42:50.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:42:50.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:42:50.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:42:50.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:42:50.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:42:50.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:42:50.472 [DEBUG] [Thread-160157] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:42:58.415 [DEBUG] [Thread-160159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:43:00.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:43:00.474 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:43:00.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:43:01.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 42, 40), 16.49, 32.33, 0.0, 18.07, 16.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:43:01.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:42:40
2025-09-29T15:43:01.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:43:01.304 [DEBUG] [Thread-160160] [transport.py] [_log()] starting thread (client mode): 0x2b96a350
2025-09-29T15:43:01.304 [DEBUG] [Thread-160160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:01.324 [DEBUG] [Thread-160160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:43:01.325 [INFO] [Thread-160160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:01.328 [DEBUG] [Thread-160160] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:01.329 [DEBUG] [Thread-160160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:01.329 [DEBUG] [Thread-160160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:01.329 [DEBUG] [Thread-160160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:01.329 [DEBUG] [Thread-160160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:01.329 [DEBUG] [Thread-160160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:01.329 [DEBUG] [Thread-160160] [transport.py] [_log()] Compression: none
2025-09-29T15:43:01.329 [DEBUG] [Thread-160160] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:01.347 [DEBUG] [Thread-160160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:01.347 [DEBUG] [Thread-160160] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:01.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:43:01.348 [DEBUG] [Thread-160160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:43:01.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:01.348 [DEBUG] [Thread-160160] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:01.348 [DEBUG] [Thread-160160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:01.348 [DEBUG] [Thread-160160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:01.348 [DEBUG] [Thread-160160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:43:01.348 [DEBUG] [Thread-160160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:01.358 [INFO] [Thread-160160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:01.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:02.158 [DEBUG] [Thread-160160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:02.159 [DEBUG] [Thread-160160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:02.159 [DEBUG] [Thread-160160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:43:02.199 [DEBUG] [Thread-160160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:02.199 [DEBUG] [Thread-160160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:02.202 [DEBUG] [Thread-160160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:02.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:02.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:43:02.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:43:02.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:43:02.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:02.220 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:43:02.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:02.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:02.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:43:02.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.570901 -999.00  +16.10  14.12     37   +1.80 1 1 1 1 1   888    0 14.47 5.17 ----- 13.5 14.1 141.6 20.4 24.1 -29.8 23.7 -29.5 25.6 -30.5 26.5 -31.4
2025-09-29T15:43:02.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:43:02.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:43:02.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.570901
2025-09-29T15:43:02.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:43:02.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:43:02.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:43:02.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:43:02.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:43:02.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:42:40', tmtdew=16.49, humidity=32.33, cloud=0.0, wind=18.07, temperature=16.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:42:05.846', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:43:02.223 [DEBUG] [Thread-160160] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:02.307 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:43:02.318 [DEBUG] [Thread-160163] [transport.py] [_log()] starting thread (client mode): 0x2e377fd0
2025-09-29T15:43:02.318 [DEBUG] [Thread-160163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:02.334 [DEBUG] [Thread-160163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:43:02.334 [INFO] [Thread-160163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:43:02.341 [DEBUG] [Thread-160163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:02.341 [DEBUG] [Thread-160163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] Compression: none
2025-09-29T15:43:02.342 [DEBUG] [Thread-160163] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:02.397 [DEBUG] [Thread-160163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:02.398 [DEBUG] [Thread-160163] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:02.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:43:02.399 [DEBUG] [Thread-160163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:43:02.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:02.454 [DEBUG] [Thread-160163] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:02.454 [DEBUG] [Thread-160163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:02.454 [DEBUG] [Thread-160163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:02.454 [DEBUG] [Thread-160163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:43:02.455 [DEBUG] [Thread-160163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:02.473 [INFO] [Thread-160163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:02.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:43:02.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:03.438 [DEBUG] [Thread-160163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:03.438 [DEBUG] [Thread-160163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:03.486 [DEBUG] [Thread-160163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:03.486 [DEBUG] [Thread-160163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:03.494 [DEBUG] [Thread-160163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:03.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:03.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:43:03.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:43:03.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:03.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:03.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:03.527 [DEBUG] [Thread-160163] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:13.459 [DEBUG] [Thread-160165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:43:13.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:43:13.529 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:43:13.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:43:14.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 42, 40), 16.49, 32.33, 0.0, 18.07, 16.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:43:14.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:42:40
2025-09-29T15:43:14.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:43:14.409 [DEBUG] [Thread-160166] [transport.py] [_log()] starting thread (client mode): 0x2b968dc0
2025-09-29T15:43:14.409 [DEBUG] [Thread-160166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:14.430 [DEBUG] [Thread-160166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:43:14.430 [INFO] [Thread-160166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] Compression: none
2025-09-29T15:43:14.433 [DEBUG] [Thread-160166] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:14.450 [DEBUG] [Thread-160166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:14.450 [DEBUG] [Thread-160166] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:14.450 [DEBUG] [Thread-160166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:43:14.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:43:14.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:14.451 [DEBUG] [Thread-160166] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:14.451 [DEBUG] [Thread-160166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:14.451 [DEBUG] [Thread-160166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:14.451 [DEBUG] [Thread-160166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:43:14.451 [DEBUG] [Thread-160166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:14.466 [INFO] [Thread-160166] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:14.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:15.069 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:43:15.071 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:43:15.097 [DEBUG] [Thread-160166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:15.097 [DEBUG] [Thread-160166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:15.098 [DEBUG] [Thread-160166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:43:15.138 [DEBUG] [Thread-160166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:15.139 [DEBUG] [Thread-160166] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:15.141 [DEBUG] [Thread-160166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:15.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:15.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:43:15.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:43:15.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:43:15.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:15.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:43:15.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:15.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:15.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:43:15.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.571248 -999.00  +16.00  12.95     38   +1.80 1 1 1 1 1   888    0 14.36 4.06 ----- 12.9 12.9 138.0 18.6 24.1 -29.3 23.7 -29.1 25.6 -30.2 26.5 -31.5
2025-09-29T15:43:15.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:43:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:43:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.571248
2025-09-29T15:43:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:43:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:43:15.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:43:15.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:43:15.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:43:15.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:42:40', tmtdew=16.49, humidity=32.33, cloud=0.0, wind=18.07, temperature=16.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:42:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:43:15.165 [DEBUG] [Thread-160166] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:15.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:43:15.262 [DEBUG] [Thread-160169] [transport.py] [_log()] starting thread (client mode): 0x2b968c70
2025-09-29T15:43:15.262 [DEBUG] [Thread-160169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:15.277 [DEBUG] [Thread-160169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:43:15.277 [INFO] [Thread-160169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:43:15.285 [DEBUG] [Thread-160169] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:15.285 [DEBUG] [Thread-160169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:43:15.285 [DEBUG] [Thread-160169] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:15.285 [DEBUG] [Thread-160169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:15.285 [DEBUG] [Thread-160169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:15.285 [DEBUG] [Thread-160169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:15.285 [DEBUG] [Thread-160169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:15.285 [DEBUG] [Thread-160169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:15.286 [DEBUG] [Thread-160169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:15.287 [DEBUG] [Thread-160169] [transport.py] [_log()] Compression: none
2025-09-29T15:43:15.287 [DEBUG] [Thread-160169] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:15.341 [DEBUG] [Thread-160169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:15.342 [DEBUG] [Thread-160169] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:15.342 [DEBUG] [Thread-160169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:43:15.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:43:15.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:15.398 [DEBUG] [Thread-160169] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:15.398 [DEBUG] [Thread-160169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:15.398 [DEBUG] [Thread-160169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:15.398 [DEBUG] [Thread-160169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:43:15.398 [DEBUG] [Thread-160169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:15.418 [INFO] [Thread-160169] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:15.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:43:15.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:16.475 [DEBUG] [Thread-160169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:16.475 [DEBUG] [Thread-160169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:16.523 [DEBUG] [Thread-160169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:16.523 [DEBUG] [Thread-160169] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:16.532 [DEBUG] [Thread-160169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:16.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:16.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:43:16.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:43:16.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:16.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:16.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:16.566 [DEBUG] [Thread-160169] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:26.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:43:26.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:43:26.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:43:27.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 43, 12), 16.25, 32.81, 0.0, 15.63, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:43:27.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:43:12
2025-09-29T15:43:27.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:43:27.421 [DEBUG] [Thread-160171] [transport.py] [_log()] starting thread (client mode): 0x2b968af0
2025-09-29T15:43:27.422 [DEBUG] [Thread-160171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:27.441 [DEBUG] [Thread-160171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:43:27.442 [INFO] [Thread-160171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:43:27.445 [DEBUG] [Thread-160171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:27.445 [DEBUG] [Thread-160171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:43:27.445 [DEBUG] [Thread-160171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:27.445 [DEBUG] [Thread-160171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:27.445 [DEBUG] [Thread-160171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] Compression: none
2025-09-29T15:43:27.446 [DEBUG] [Thread-160171] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:27.462 [DEBUG] [Thread-160171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:27.463 [DEBUG] [Thread-160171] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:27.463 [DEBUG] [Thread-160171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:43:27.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:43:27.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:27.465 [DEBUG] [Thread-160171] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:27.465 [DEBUG] [Thread-160171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:27.465 [DEBUG] [Thread-160171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:27.465 [DEBUG] [Thread-160171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:43:27.465 [DEBUG] [Thread-160171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:27.483 [INFO] [Thread-160171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:27.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:28.287 [DEBUG] [Thread-160171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:28.287 [DEBUG] [Thread-160171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:28.287 [DEBUG] [Thread-160171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:43:28.328 [DEBUG] [Thread-160171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:28.328 [DEBUG] [Thread-160171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:28.331 [DEBUG] [Thread-160171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:28.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:28.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:43:28.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:43:28.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:43:28.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:28.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:43:28.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:28.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.571248 -999.00  +16.00  12.95     38   +1.80 1 1 1 1 1   888    0 14.36 4.06 ----- 12.9 12.9 138.0 18.6 24.1 -29.3 23.7 -29.1 25.6 -30.2 26.5 -31.5
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.571248
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:43:28.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:43:12', tmtdew=16.25, humidity=32.81, cloud=0.0, wind=15.63, temperature=15.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:42:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:43:28.352 [DEBUG] [Thread-160171] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:28.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:43:28.437 [DEBUG] [Thread-160174] [transport.py] [_log()] starting thread (client mode): 0x2b96b970
2025-09-29T15:43:28.437 [DEBUG] [Thread-160174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:28.451 [DEBUG] [Thread-160174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:43:28.451 [INFO] [Thread-160174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] Compression: none
2025-09-29T15:43:28.459 [DEBUG] [Thread-160174] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:28.484 [DEBUG] [Thread-160176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:43:28.516 [DEBUG] [Thread-160174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:28.517 [DEBUG] [Thread-160174] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:28.517 [DEBUG] [Thread-160174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:43:28.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:43:28.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:28.573 [DEBUG] [Thread-160174] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:28.573 [DEBUG] [Thread-160174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:28.573 [DEBUG] [Thread-160174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:28.573 [DEBUG] [Thread-160174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:43:28.573 [DEBUG] [Thread-160174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:28.588 [INFO] [Thread-160174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:28.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:43:28.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:29.603 [DEBUG] [Thread-160174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:29.603 [DEBUG] [Thread-160174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:29.651 [DEBUG] [Thread-160174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:29.651 [DEBUG] [Thread-160174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:29.659 [DEBUG] [Thread-160174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:29.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:29.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:43:29.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:43:29.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:29.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:29.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:29.691 [DEBUG] [Thread-160174] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:39.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:43:39.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:43:39.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:43:40.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 43, 12), 16.25, 32.81, 0.0, 15.63, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:43:40.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:43:12
2025-09-29T15:43:40.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:43:40.527 [DEBUG] [Thread-160177] [transport.py] [_log()] starting thread (client mode): 0x2b968490
2025-09-29T15:43:40.527 [DEBUG] [Thread-160177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:40.546 [DEBUG] [Thread-160177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:43:40.547 [INFO] [Thread-160177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:40.550 [DEBUG] [Thread-160177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] Compression: none
2025-09-29T15:43:40.551 [DEBUG] [Thread-160177] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:40.570 [DEBUG] [Thread-160177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:40.571 [DEBUG] [Thread-160177] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:40.571 [DEBUG] [Thread-160177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:43:40.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:43:40.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:40.612 [DEBUG] [Thread-160177] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:40.613 [DEBUG] [Thread-160177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:40.613 [DEBUG] [Thread-160177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:40.613 [DEBUG] [Thread-160177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:43:40.613 [DEBUG] [Thread-160177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:40.638 [INFO] [Thread-160177] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:40.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:41.288 [DEBUG] [Thread-160177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:41.288 [DEBUG] [Thread-160177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:41.288 [DEBUG] [Thread-160177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:43:41.329 [DEBUG] [Thread-160177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:41.329 [DEBUG] [Thread-160177] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:41.332 [DEBUG] [Thread-160177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:41.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:41.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:43:41.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:43:41.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:43:41.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:41.361 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:43:41.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:41.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:41.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:43:41.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.571595 -999.00  +16.10  10.30     38   +1.90 1 1 1 1 1   888    0 14.60 2.78 ----- 8.8 10.3 155.6 18.9 24.0 -30.1 23.6 -29.3 25.6 -30.1 26.6 -31.0
2025-09-29T15:43:41.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:43:41.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:43:41.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.571595
2025-09-29T15:43:41.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:43:41.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:43:41.364 [DEBUG] [Thread-160177] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:41.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:43:41.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:43:41.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:43:41.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:43:12', tmtdew=16.25, humidity=32.81, cloud=0.0, wind=15.63, temperature=15.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:43:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:43:41.448 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:43:41.460 [DEBUG] [Thread-160180] [transport.py] [_log()] starting thread (client mode): 0x2e361240
2025-09-29T15:43:41.460 [DEBUG] [Thread-160180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:41.475 [DEBUG] [Thread-160180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:43:41.475 [INFO] [Thread-160180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:43:41.483 [DEBUG] [Thread-160180] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:41.483 [DEBUG] [Thread-160180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:43:41.483 [DEBUG] [Thread-160180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:41.483 [DEBUG] [Thread-160180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:41.483 [DEBUG] [Thread-160180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] Compression: none
2025-09-29T15:43:41.484 [DEBUG] [Thread-160180] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:41.541 [DEBUG] [Thread-160180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:41.541 [DEBUG] [Thread-160180] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:41.542 [DEBUG] [Thread-160180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:43:41.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:43:41.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:41.597 [DEBUG] [Thread-160180] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:41.597 [DEBUG] [Thread-160180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:41.598 [DEBUG] [Thread-160180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:41.598 [DEBUG] [Thread-160180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:43:41.598 [DEBUG] [Thread-160180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:41.616 [INFO] [Thread-160180] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:41.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:43:41.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:42.600 [DEBUG] [Thread-160180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:42.600 [DEBUG] [Thread-160180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:42.648 [DEBUG] [Thread-160180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:42.648 [DEBUG] [Thread-160180] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:42.657 [DEBUG] [Thread-160180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:42.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:42.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:43:42.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:43:42.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:42.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:42.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:42.691 [DEBUG] [Thread-160180] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:43.516 [DEBUG] [Thread-160182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:43:47.047 [DEBUG] [Thread-160183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:43:52.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:43:52.687 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:43:52.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:43:53.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 43, 44), 15.91, 33.98, 0.0, 15.26, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:43:53.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:43:44
2025-09-29T15:43:53.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:43:53.518 [DEBUG] [Thread-160184] [transport.py] [_log()] starting thread (client mode): 0x2e3755d0
2025-09-29T15:43:53.518 [DEBUG] [Thread-160184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:53.538 [DEBUG] [Thread-160184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:43:53.538 [INFO] [Thread-160184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:53.541 [DEBUG] [Thread-160184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:53.542 [DEBUG] [Thread-160184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:53.542 [DEBUG] [Thread-160184] [transport.py] [_log()] Compression: none
2025-09-29T15:43:53.542 [DEBUG] [Thread-160184] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:53.556 [DEBUG] [Thread-160184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:53.557 [DEBUG] [Thread-160184] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:53.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:43:53.557 [DEBUG] [Thread-160184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:43:53.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:53.558 [DEBUG] [Thread-160184] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:53.559 [DEBUG] [Thread-160184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:53.559 [DEBUG] [Thread-160184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:53.559 [DEBUG] [Thread-160184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:43:53.559 [DEBUG] [Thread-160184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:53.583 [INFO] [Thread-160184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:53.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:54.373 [DEBUG] [Thread-160184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:54.374 [DEBUG] [Thread-160184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:54.374 [DEBUG] [Thread-160184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:43:54.415 [DEBUG] [Thread-160184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:54.415 [DEBUG] [Thread-160184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:54.417 [DEBUG] [Thread-160184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:54.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:54.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:43:54.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:43:54.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:43:54.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:54.439 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:43:54.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:54.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:54.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:43:54.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.571595 -999.00  +16.10  10.30     38   +1.90 1 1 1 1 1   888    0 14.60 2.78 ----- 8.8 10.3 155.6 18.9 24.0 -30.1 23.6 -29.3 25.6 -30.1 26.6 -31.0
2025-09-29T15:43:54.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:43:54.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:43:54.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.571595
2025-09-29T15:43:54.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:43:54.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:43:54.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:43:54.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:43:54.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:43:54.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:43:44', tmtdew=15.91, humidity=33.98, cloud=0.0, wind=15.26, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:43:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:43:54.441 [DEBUG] [Thread-160184] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:54.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:43:54.536 [DEBUG] [Thread-160187] [transport.py] [_log()] starting thread (client mode): 0x2e363130
2025-09-29T15:43:54.536 [DEBUG] [Thread-160187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:43:54.550 [DEBUG] [Thread-160187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:43:54.550 [INFO] [Thread-160187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:43:54.558 [DEBUG] [Thread-160187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:43:54.558 [DEBUG] [Thread-160187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:43:54.558 [DEBUG] [Thread-160187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] client lang: <none>
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] server lang: <none>
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] kex follows: False
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] Compression: none
2025-09-29T15:43:54.559 [DEBUG] [Thread-160187] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:43:54.617 [DEBUG] [Thread-160187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:43:54.617 [DEBUG] [Thread-160187] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:43:54.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:43:54.619 [DEBUG] [Thread-160187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:43:54.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:43:54.673 [DEBUG] [Thread-160187] [transport.py] [_log()] userauth is OK
2025-09-29T15:43:54.673 [DEBUG] [Thread-160187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:43:54.673 [DEBUG] [Thread-160187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:43:54.673 [DEBUG] [Thread-160187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:43:54.673 [DEBUG] [Thread-160187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:43:54.692 [INFO] [Thread-160187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:43:54.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:43:54.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:43:55.685 [DEBUG] [Thread-160187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:43:55.685 [DEBUG] [Thread-160187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:43:55.733 [DEBUG] [Thread-160187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:43:55.733 [DEBUG] [Thread-160187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:43:55.742 [DEBUG] [Thread-160187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:43:55.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:43:55.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:43:55.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:43:55.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:43:55.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:43:55.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:43:55.777 [DEBUG] [Thread-160187] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:43:58.560 [DEBUG] [Thread-160189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:44:05.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:44:05.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:44:05.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:44:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 43, 44), 15.91, 33.98, 0.0, 15.26, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:44:06.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:43:44
2025-09-29T15:44:06.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:44:06.645 [DEBUG] [Thread-160190] [transport.py] [_log()] starting thread (client mode): 0x2b96c310
2025-09-29T15:44:06.645 [DEBUG] [Thread-160190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:06.668 [DEBUG] [Thread-160190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:44:06.668 [INFO] [Thread-160190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:06.671 [DEBUG] [Thread-160190] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:06.672 [DEBUG] [Thread-160190] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:06.672 [DEBUG] [Thread-160190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:06.672 [DEBUG] [Thread-160190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:06.672 [DEBUG] [Thread-160190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:06.672 [DEBUG] [Thread-160190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:06.672 [DEBUG] [Thread-160190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:06.672 [DEBUG] [Thread-160190] [transport.py] [_log()] Compression: none
2025-09-29T15:44:06.672 [DEBUG] [Thread-160190] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:06.687 [DEBUG] [Thread-160190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:06.687 [DEBUG] [Thread-160190] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:06.687 [DEBUG] [Thread-160190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:44:06.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:44:06.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:06.688 [DEBUG] [Thread-160190] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:06.688 [DEBUG] [Thread-160190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:06.688 [DEBUG] [Thread-160190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:06.688 [DEBUG] [Thread-160190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:44:06.688 [DEBUG] [Thread-160190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:06.714 [INFO] [Thread-160190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:06.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:07.525 [DEBUG] [Thread-160190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:07.525 [DEBUG] [Thread-160190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:07.526 [DEBUG] [Thread-160190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:44:07.567 [DEBUG] [Thread-160190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:07.567 [DEBUG] [Thread-160190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:07.569 [DEBUG] [Thread-160190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:07.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:07.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:44:07.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:44:07.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:44:07.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:07.587 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:44:07.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:07.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:07.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:44:07.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.571595 -999.00  +16.10  10.30     38   +1.90 1 1 1 1 1   888    0 14.60 2.78 ----- 8.8 10.3 155.6 18.9 24.0 -30.1 23.6 -29.3 25.6 -30.1 26.6 -31.0
2025-09-29T15:44:07.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:44:07.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:44:07.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.571595
2025-09-29T15:44:07.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:44:07.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:44:07.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:44:07.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:44:07.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:44:07.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:43:44', tmtdew=15.91, humidity=33.98, cloud=0.0, wind=15.26, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:43:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:44:07.588 [DEBUG] [Thread-160190] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:07.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:44:07.673 [DEBUG] [Thread-160193] [transport.py] [_log()] starting thread (client mode): 0x2b9cdfc0
2025-09-29T15:44:07.673 [DEBUG] [Thread-160193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:07.692 [DEBUG] [Thread-160193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:44:07.692 [INFO] [Thread-160193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:07.701 [DEBUG] [Thread-160193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:07.702 [DEBUG] [Thread-160193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:07.702 [DEBUG] [Thread-160193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:07.702 [DEBUG] [Thread-160193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:07.702 [DEBUG] [Thread-160193] [transport.py] [_log()] Compression: none
2025-09-29T15:44:07.702 [DEBUG] [Thread-160193] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:07.755 [DEBUG] [Thread-160193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:07.756 [DEBUG] [Thread-160193] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:07.756 [DEBUG] [Thread-160193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:44:07.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:44:07.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:07.812 [DEBUG] [Thread-160193] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:07.812 [DEBUG] [Thread-160193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:07.813 [DEBUG] [Thread-160193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:07.813 [DEBUG] [Thread-160193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:44:07.813 [DEBUG] [Thread-160193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:07.827 [INFO] [Thread-160193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:07.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:44:07.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:08.802 [DEBUG] [Thread-160193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:08.802 [DEBUG] [Thread-160193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:08.850 [DEBUG] [Thread-160193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:08.850 [DEBUG] [Thread-160193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:08.858 [DEBUG] [Thread-160193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:08.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:08.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:44:08.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:44:08.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:08.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:08.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:08.889 [DEBUG] [Thread-160193] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:13.605 [DEBUG] [Thread-160195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:44:15.212 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:44:15.214 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:44:18.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:44:18.892 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:44:18.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:44:19.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 44, 16), 15.76, 34.31, 0.0, 13.29, 15.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:44:19.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:44:16
2025-09-29T15:44:19.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:44:19.719 [DEBUG] [Thread-160196] [transport.py] [_log()] starting thread (client mode): 0x2e3fb940
2025-09-29T15:44:19.719 [DEBUG] [Thread-160196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:19.734 [DEBUG] [Thread-160196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:44:19.734 [INFO] [Thread-160196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:44:19.737 [DEBUG] [Thread-160196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:19.737 [DEBUG] [Thread-160196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:44:19.737 [DEBUG] [Thread-160196] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:19.737 [DEBUG] [Thread-160196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:19.737 [DEBUG] [Thread-160196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:19.737 [DEBUG] [Thread-160196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:19.737 [DEBUG] [Thread-160196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:19.737 [DEBUG] [Thread-160196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] Compression: none
2025-09-29T15:44:19.738 [DEBUG] [Thread-160196] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:19.753 [DEBUG] [Thread-160196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:19.754 [DEBUG] [Thread-160196] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:19.754 [DEBUG] [Thread-160196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:44:19.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:44:19.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:19.756 [DEBUG] [Thread-160196] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:19.756 [DEBUG] [Thread-160196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:19.756 [DEBUG] [Thread-160196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:19.756 [DEBUG] [Thread-160196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:44:19.756 [DEBUG] [Thread-160196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:19.780 [INFO] [Thread-160196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:19.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:20.413 [DEBUG] [Thread-160196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:20.413 [DEBUG] [Thread-160196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:20.414 [DEBUG] [Thread-160196] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:44:20.454 [DEBUG] [Thread-160196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:20.454 [DEBUG] [Thread-160196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:20.457 [DEBUG] [Thread-160196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:20.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:20.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:44:20.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:44:20.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:44:20.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:20.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:44:20.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:20.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:20.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:44:20.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.572289 -999.00  +16.40  19.26     37   +2.00 1 1 1 1 1   888    0 14.39 1.18 ----- 20.9 19.3 144.4 23.6 24.0 -29.7 23.5 -28.5 25.5 -31.0 26.6 -30.4
2025-09-29T15:44:20.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:44:20.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:44:20.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.572289
2025-09-29T15:44:20.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:44:20.481 [DEBUG] [Thread-160196] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:20.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:44:20.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:44:20.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:44:20.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:44:20.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:44:16', tmtdew=15.76, humidity=34.31, cloud=0.0, wind=13.29, temperature=15.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:44:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:44:20.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:44:20.566 [DEBUG] [Thread-160199] [transport.py] [_log()] starting thread (client mode): 0x2e3fbf40
2025-09-29T15:44:20.566 [DEBUG] [Thread-160199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:20.581 [DEBUG] [Thread-160199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:44:20.581 [INFO] [Thread-160199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:20.588 [DEBUG] [Thread-160199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] Compression: none
2025-09-29T15:44:20.589 [DEBUG] [Thread-160199] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:20.643 [DEBUG] [Thread-160199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:20.643 [DEBUG] [Thread-160199] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:20.643 [DEBUG] [Thread-160199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:44:20.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:44:20.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:20.700 [DEBUG] [Thread-160199] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:20.700 [DEBUG] [Thread-160199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:20.700 [DEBUG] [Thread-160199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:20.700 [DEBUG] [Thread-160199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:44:20.700 [DEBUG] [Thread-160199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:20.714 [INFO] [Thread-160199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:20.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:44:20.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:21.737 [DEBUG] [Thread-160199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:21.737 [DEBUG] [Thread-160199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:21.788 [DEBUG] [Thread-160199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:21.788 [DEBUG] [Thread-160199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:21.797 [DEBUG] [Thread-160199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:21.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:21.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:44:21.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:44:21.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:21.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:21.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:21.831 [DEBUG] [Thread-160199] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:28.635 [DEBUG] [Thread-160201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:44:31.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:44:31.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:44:31.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:44:32.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 44, 16), 15.76, 34.31, 0.0, 13.29, 15.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:44:32.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:44:16
2025-09-29T15:44:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:44:32.660 [DEBUG] [Thread-160202] [transport.py] [_log()] starting thread (client mode): 0x2b96e590
2025-09-29T15:44:32.660 [DEBUG] [Thread-160202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:32.680 [DEBUG] [Thread-160202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:44:32.680 [INFO] [Thread-160202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:32.683 [DEBUG] [Thread-160202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] Compression: none
2025-09-29T15:44:32.684 [DEBUG] [Thread-160202] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:32.701 [DEBUG] [Thread-160202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:32.702 [DEBUG] [Thread-160202] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:32.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:44:32.703 [DEBUG] [Thread-160202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:44:32.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:32.704 [DEBUG] [Thread-160202] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:32.704 [DEBUG] [Thread-160202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:32.704 [DEBUG] [Thread-160202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:32.704 [DEBUG] [Thread-160202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:44:32.705 [DEBUG] [Thread-160202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:32.726 [INFO] [Thread-160202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:32.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:33.502 [DEBUG] [Thread-160202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:33.503 [DEBUG] [Thread-160202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:33.503 [DEBUG] [Thread-160202] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:44:33.543 [DEBUG] [Thread-160202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:33.544 [DEBUG] [Thread-160202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:33.546 [DEBUG] [Thread-160202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:33.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:33.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:44:33.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:44:33.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:44:33.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:33.569 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:44:33.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:33.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:33.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:44:33.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.572289 -999.00  +16.40  19.26     37   +2.00 1 1 1 1 1   888    0 14.39 1.18 ----- 20.9 19.3 144.4 23.6 24.0 -29.7 23.5 -28.5 25.5 -31.0 26.6 -30.4
2025-09-29T15:44:33.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:44:33.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:44:33.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.572289
2025-09-29T15:44:33.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:44:33.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:44:33.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:44:33.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:44:33.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:44:33.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:44:16', tmtdew=15.76, humidity=34.31, cloud=0.0, wind=13.29, temperature=15.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:44:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:44:33.572 [DEBUG] [Thread-160202] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:33.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:44:33.666 [DEBUG] [Thread-160205] [transport.py] [_log()] starting thread (client mode): 0x2b96cca0
2025-09-29T15:44:33.666 [DEBUG] [Thread-160205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:33.680 [DEBUG] [Thread-160205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:44:33.680 [INFO] [Thread-160205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:44:33.688 [DEBUG] [Thread-160205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:33.688 [DEBUG] [Thread-160205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:44:33.688 [DEBUG] [Thread-160205] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:33.688 [DEBUG] [Thread-160205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:33.689 [DEBUG] [Thread-160205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:33.689 [DEBUG] [Thread-160205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:33.689 [DEBUG] [Thread-160205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:33.689 [DEBUG] [Thread-160205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:33.689 [DEBUG] [Thread-160205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:33.689 [DEBUG] [Thread-160205] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:33.689 [DEBUG] [Thread-160205] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:33.689 [DEBUG] [Thread-160205] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:33.690 [DEBUG] [Thread-160205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:33.690 [DEBUG] [Thread-160205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:33.690 [DEBUG] [Thread-160205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:33.690 [DEBUG] [Thread-160205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:33.690 [DEBUG] [Thread-160205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:33.690 [DEBUG] [Thread-160205] [transport.py] [_log()] Compression: none
2025-09-29T15:44:33.690 [DEBUG] [Thread-160205] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:33.745 [DEBUG] [Thread-160205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:33.745 [DEBUG] [Thread-160205] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:33.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:44:33.746 [DEBUG] [Thread-160205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:44:33.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:33.800 [DEBUG] [Thread-160205] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:33.801 [DEBUG] [Thread-160205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:33.801 [DEBUG] [Thread-160205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:33.801 [DEBUG] [Thread-160205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:44:33.801 [DEBUG] [Thread-160205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:33.819 [INFO] [Thread-160205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:33.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:44:33.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:34.821 [DEBUG] [Thread-160205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:34.822 [DEBUG] [Thread-160205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:34.869 [DEBUG] [Thread-160205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:34.869 [DEBUG] [Thread-160205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:34.878 [DEBUG] [Thread-160205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:34.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:34.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:44:34.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:44:34.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:34.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:34.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:34.913 [DEBUG] [Thread-160205] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:43.677 [DEBUG] [Thread-160207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:44:44.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:44:44.914 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:44:44.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:44:45.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 44, 16), 15.76, 34.31, 0.0, 13.29, 15.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:44:45.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:44:16
2025-09-29T15:44:45.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:44:45.788 [DEBUG] [Thread-160208] [transport.py] [_log()] starting thread (client mode): 0x2e3f9b10
2025-09-29T15:44:45.788 [DEBUG] [Thread-160208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:45.807 [DEBUG] [Thread-160208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:44:45.807 [INFO] [Thread-160208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] Compression: none
2025-09-29T15:44:45.809 [DEBUG] [Thread-160208] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:45.816 [DEBUG] [Thread-160208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:45.817 [DEBUG] [Thread-160208] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:45.817 [DEBUG] [Thread-160208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:44:45.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:44:45.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:45.818 [DEBUG] [Thread-160208] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:45.818 [DEBUG] [Thread-160208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:45.818 [DEBUG] [Thread-160208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:45.818 [DEBUG] [Thread-160208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:44:45.818 [DEBUG] [Thread-160208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:45.827 [INFO] [Thread-160208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:45.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:46.375 [DEBUG] [Thread-160208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:46.375 [DEBUG] [Thread-160208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:46.375 [DEBUG] [Thread-160208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:44:46.416 [DEBUG] [Thread-160208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:46.416 [DEBUG] [Thread-160208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:46.418 [DEBUG] [Thread-160208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:46.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:46.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:44:46.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:44:46.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:44:46.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:46.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:44:46.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.572636 -999.00  +16.10  12.07     37   +1.70 1 1 1 1 1   888    0 14.43 0.61 ----- 20.2 12.1 165.2 24.4 23.8 -30.1 23.4 -30.4 25.3 -30.5 26.3 -34.0
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.572636
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:44:46.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:44:16', tmtdew=15.76, humidity=34.31, cloud=0.0, wind=13.29, temperature=15.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:44:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:44:46.436 [DEBUG] [Thread-160208] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:46.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:44:46.523 [DEBUG] [Thread-160211] [transport.py] [_log()] starting thread (client mode): 0x2b9cd8a0
2025-09-29T15:44:46.523 [DEBUG] [Thread-160211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:46.538 [DEBUG] [Thread-160211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:44:46.538 [INFO] [Thread-160211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:44:46.545 [DEBUG] [Thread-160211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:46.545 [DEBUG] [Thread-160211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:44:46.545 [DEBUG] [Thread-160211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:46.545 [DEBUG] [Thread-160211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:46.545 [DEBUG] [Thread-160211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:46.545 [DEBUG] [Thread-160211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] Compression: none
2025-09-29T15:44:46.546 [DEBUG] [Thread-160211] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:46.603 [DEBUG] [Thread-160211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:46.603 [DEBUG] [Thread-160211] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:46.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:44:46.603 [DEBUG] [Thread-160211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:44:46.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:46.660 [DEBUG] [Thread-160211] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:46.660 [DEBUG] [Thread-160211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:46.660 [DEBUG] [Thread-160211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:46.660 [DEBUG] [Thread-160211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:44:46.660 [DEBUG] [Thread-160211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:46.676 [INFO] [Thread-160211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:46.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:44:46.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:47.077 [DEBUG] [Thread-160213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:44:47.660 [DEBUG] [Thread-160211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:47.660 [DEBUG] [Thread-160211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:47.708 [DEBUG] [Thread-160211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:47.708 [DEBUG] [Thread-160211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:47.716 [DEBUG] [Thread-160211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:47.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:47.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:44:47.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:44:47.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:47.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:47.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:47.750 [DEBUG] [Thread-160211] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:57.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:44:57.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:44:57.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:44:58.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 44, 48), 16.19, 33.16, 0.0, 17.63, 15.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:44:58.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:44:48
2025-09-29T15:44:58.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:44:58.574 [DEBUG] [Thread-160214] [transport.py] [_log()] starting thread (client mode): 0x2e374e50
2025-09-29T15:44:58.574 [DEBUG] [Thread-160214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:58.595 [DEBUG] [Thread-160214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:44:58.595 [INFO] [Thread-160214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:44:58.598 [DEBUG] [Thread-160214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:58.598 [DEBUG] [Thread-160214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:44:58.598 [DEBUG] [Thread-160214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:58.598 [DEBUG] [Thread-160214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:58.598 [DEBUG] [Thread-160214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:58.598 [DEBUG] [Thread-160214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:58.598 [DEBUG] [Thread-160214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:58.598 [DEBUG] [Thread-160214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] Compression: none
2025-09-29T15:44:58.599 [DEBUG] [Thread-160214] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:58.607 [DEBUG] [Thread-160214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:58.607 [DEBUG] [Thread-160214] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:58.608 [DEBUG] [Thread-160214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:44:58.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:44:58.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:58.610 [DEBUG] [Thread-160214] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:58.610 [DEBUG] [Thread-160214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:58.610 [DEBUG] [Thread-160214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:58.610 [DEBUG] [Thread-160214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:44:58.610 [DEBUG] [Thread-160214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:58.629 [INFO] [Thread-160214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:58.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:44:58.706 [DEBUG] [Thread-160216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:44:59.443 [DEBUG] [Thread-160214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:44:59.443 [DEBUG] [Thread-160214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:44:59.443 [DEBUG] [Thread-160214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:44:59.484 [DEBUG] [Thread-160214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:44:59.484 [DEBUG] [Thread-160214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:44:59.487 [DEBUG] [Thread-160214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:44:59.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:44:59.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:44:59.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:44:59.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:44:59.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:44:59.509 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:44:59.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:44:59.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:44:59.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:44:59.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.572636 -999.00  +16.10  12.07     37   +1.70 1 1 1 1 1   888    0 14.43 0.61 ----- 20.2 12.1 165.2 24.4 23.8 -30.1 23.4 -30.4 25.3 -30.5 26.3 -34.0
2025-09-29T15:44:59.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:44:59.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:44:59.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.572636
2025-09-29T15:44:59.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:44:59.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:44:59.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:44:59.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:44:59.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:44:59.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:44:48', tmtdew=16.19, humidity=33.16, cloud=0.0, wind=17.63, temperature=15.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:44:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:44:59.511 [DEBUG] [Thread-160214] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:44:59.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:44:59.611 [DEBUG] [Thread-160218] [transport.py] [_log()] starting thread (client mode): 0x2b9ce5c0
2025-09-29T15:44:59.611 [DEBUG] [Thread-160218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:44:59.625 [DEBUG] [Thread-160218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:44:59.625 [INFO] [Thread-160218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] client lang: <none>
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] server lang: <none>
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] kex follows: False
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:44:59.633 [DEBUG] [Thread-160218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:44:59.634 [DEBUG] [Thread-160218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:44:59.634 [DEBUG] [Thread-160218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:44:59.634 [DEBUG] [Thread-160218] [transport.py] [_log()] Compression: none
2025-09-29T15:44:59.634 [DEBUG] [Thread-160218] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:44:59.691 [DEBUG] [Thread-160218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:44:59.692 [DEBUG] [Thread-160218] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:44:59.692 [DEBUG] [Thread-160218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:44:59.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:44:59.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:44:59.749 [DEBUG] [Thread-160218] [transport.py] [_log()] userauth is OK
2025-09-29T15:44:59.749 [DEBUG] [Thread-160218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:44:59.749 [DEBUG] [Thread-160218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:44:59.749 [DEBUG] [Thread-160218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:44:59.749 [DEBUG] [Thread-160218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:44:59.767 [INFO] [Thread-160218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:44:59.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:44:59.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:00.728 [DEBUG] [Thread-160218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:00.728 [DEBUG] [Thread-160218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:00.776 [DEBUG] [Thread-160218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:00.776 [DEBUG] [Thread-160218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:00.785 [DEBUG] [Thread-160218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:00.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:00.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:45:00.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:45:00.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:00.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:00.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:00.819 [DEBUG] [Thread-160218] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:10.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:45:10.814 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:45:10.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:45:11.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 44, 48), 16.19, 33.16, 0.0, 17.63, 15.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:45:11.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:44:48
2025-09-29T15:45:11.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:45:11.638 [DEBUG] [Thread-160220] [transport.py] [_log()] starting thread (client mode): 0x2e3f8040
2025-09-29T15:45:11.638 [DEBUG] [Thread-160220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:45:11.658 [DEBUG] [Thread-160220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:45:11.659 [INFO] [Thread-160220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:45:11.661 [DEBUG] [Thread-160220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:45:11.662 [DEBUG] [Thread-160220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:45:11.662 [DEBUG] [Thread-160220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:45:11.662 [DEBUG] [Thread-160220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:11.662 [DEBUG] [Thread-160220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:11.662 [DEBUG] [Thread-160220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:11.662 [DEBUG] [Thread-160220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:11.662 [DEBUG] [Thread-160220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] client lang: <none>
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] server lang: <none>
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] kex follows: False
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] Compression: none
2025-09-29T15:45:11.663 [DEBUG] [Thread-160220] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:45:11.681 [DEBUG] [Thread-160220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:45:11.681 [DEBUG] [Thread-160220] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:45:11.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:45:11.682 [DEBUG] [Thread-160220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:45:11.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:45:11.684 [DEBUG] [Thread-160220] [transport.py] [_log()] userauth is OK
2025-09-29T15:45:11.685 [DEBUG] [Thread-160220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:45:11.685 [DEBUG] [Thread-160220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:45:11.685 [DEBUG] [Thread-160220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:45:11.685 [DEBUG] [Thread-160220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:45:11.708 [INFO] [Thread-160220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:45:11.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:13.751 [DEBUG] [Thread-160222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:45:15.353 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:45:15.355 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:45:18.222 [DEBUG] [Thread-160220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:18.223 [DEBUG] [Thread-160220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:18.223 [DEBUG] [Thread-160220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:45:18.263 [DEBUG] [Thread-160220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:18.264 [DEBUG] [Thread-160220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:18.267 [DEBUG] [Thread-160220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:18.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:18.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:45:18.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:45:18.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:45:18.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:18.299 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:45:18.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:18.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:45:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.572636 -999.00  +16.10  12.07     37   +1.70 1 1 1 1 1   888    0 14.43 0.61 ----- 20.2 12.1 165.2 24.4 23.8 -30.1 23.4 -30.4 25.3 -30.5 26.3 -34.0
2025-09-29T15:45:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:45:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:45:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.572636
2025-09-29T15:45:18.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:45:18.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:45:18.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:45:18.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:45:18.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:45:18.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:44:48', tmtdew=16.19, humidity=33.16, cloud=0.0, wind=17.63, temperature=15.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:44:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:45:18.302 [DEBUG] [Thread-160220] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:18.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:45:18.399 [DEBUG] [Thread-160224] [transport.py] [_log()] starting thread (client mode): 0x2e374b80
2025-09-29T15:45:18.399 [DEBUG] [Thread-160224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:45:18.414 [DEBUG] [Thread-160224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:45:18.415 [INFO] [Thread-160224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:45:18.422 [DEBUG] [Thread-160224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:45:18.422 [DEBUG] [Thread-160224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] client lang: <none>
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] server lang: <none>
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] kex follows: False
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] Compression: none
2025-09-29T15:45:18.423 [DEBUG] [Thread-160224] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:45:18.480 [DEBUG] [Thread-160224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:45:18.480 [DEBUG] [Thread-160224] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:45:18.481 [DEBUG] [Thread-160224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:45:18.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:45:18.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:45:18.536 [DEBUG] [Thread-160224] [transport.py] [_log()] userauth is OK
2025-09-29T15:45:18.536 [DEBUG] [Thread-160224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:45:18.536 [DEBUG] [Thread-160224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:45:18.536 [DEBUG] [Thread-160224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:45:18.536 [DEBUG] [Thread-160224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:45:18.555 [INFO] [Thread-160224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:45:18.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:45:18.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:19.534 [DEBUG] [Thread-160224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:19.534 [DEBUG] [Thread-160224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:19.581 [DEBUG] [Thread-160224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:19.581 [DEBUG] [Thread-160224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:19.590 [DEBUG] [Thread-160224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:19.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:19.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:45:19.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:45:19.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:19.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:19.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:19.624 [DEBUG] [Thread-160224] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:28.796 [DEBUG] [Thread-160226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:45:29.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:45:29.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:45:29.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:45:30.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 45, 20), 16.31, 32.93, 0.0, 19.64, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:45:30.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:45:20
2025-09-29T15:45:30.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:45:30.476 [DEBUG] [Thread-160227] [transport.py] [_log()] starting thread (client mode): 0x2e360fd0
2025-09-29T15:45:30.476 [DEBUG] [Thread-160227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:45:30.500 [DEBUG] [Thread-160227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:45:30.500 [INFO] [Thread-160227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:45:30.503 [DEBUG] [Thread-160227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] client lang: <none>
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] server lang: <none>
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] kex follows: False
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] Compression: none
2025-09-29T15:45:30.504 [DEBUG] [Thread-160227] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:45:30.523 [DEBUG] [Thread-160227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:45:30.524 [DEBUG] [Thread-160227] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:45:30.524 [DEBUG] [Thread-160227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:45:30.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:45:30.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:45:30.526 [DEBUG] [Thread-160227] [transport.py] [_log()] userauth is OK
2025-09-29T15:45:30.526 [DEBUG] [Thread-160227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:45:30.526 [DEBUG] [Thread-160227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:45:30.526 [DEBUG] [Thread-160227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:45:30.526 [DEBUG] [Thread-160227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:45:30.562 [INFO] [Thread-160227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:45:30.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:31.156 [DEBUG] [Thread-160227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:31.156 [DEBUG] [Thread-160227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:31.156 [DEBUG] [Thread-160227] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:45:31.198 [DEBUG] [Thread-160227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:31.198 [DEBUG] [Thread-160227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:31.200 [DEBUG] [Thread-160227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:31.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:31.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:45:31.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:45:31.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:45:31.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:31.219 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:45:31.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:31.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:31.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:45:31.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.572983 -999.00  +15.90  14.39     38   +1.70 1 1 1 1 1   888    0 14.29 -1.19 ----- 13.2 14.4 140.0 21.4 23.8 -29.6 23.3 -30.1 25.3 -29.9 26.2 -31.3
2025-09-29T15:45:31.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:45:31.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:45:31.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.572983
2025-09-29T15:45:31.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:45:31.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:45:31.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:45:31.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:45:31.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:45:31.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:45:20', tmtdew=16.31, humidity=32.93, cloud=0.0, wind=19.64, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:45:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:45:31.222 [DEBUG] [Thread-160227] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:31.308 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:45:31.319 [DEBUG] [Thread-160230] [transport.py] [_log()] starting thread (client mode): 0x2b96a6b0
2025-09-29T15:45:31.319 [DEBUG] [Thread-160230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:45:31.333 [DEBUG] [Thread-160230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:45:31.334 [INFO] [Thread-160230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:45:31.342 [DEBUG] [Thread-160230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:45:31.342 [DEBUG] [Thread-160230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:45:31.342 [DEBUG] [Thread-160230] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:45:31.342 [DEBUG] [Thread-160230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:31.342 [DEBUG] [Thread-160230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] client lang: <none>
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] server lang: <none>
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] kex follows: False
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] Compression: none
2025-09-29T15:45:31.343 [DEBUG] [Thread-160230] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:45:31.398 [DEBUG] [Thread-160230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:45:31.399 [DEBUG] [Thread-160230] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:45:31.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:45:31.399 [DEBUG] [Thread-160230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:45:31.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:45:31.455 [DEBUG] [Thread-160230] [transport.py] [_log()] userauth is OK
2025-09-29T15:45:31.455 [DEBUG] [Thread-160230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:45:31.455 [DEBUG] [Thread-160230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:45:31.455 [DEBUG] [Thread-160230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:45:31.455 [DEBUG] [Thread-160230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:45:31.477 [INFO] [Thread-160230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:45:31.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:45:31.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:32.445 [DEBUG] [Thread-160230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:32.446 [DEBUG] [Thread-160230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:32.494 [DEBUG] [Thread-160230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:32.494 [DEBUG] [Thread-160230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:32.503 [DEBUG] [Thread-160230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:32.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:32.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:45:32.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:45:32.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:32.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:32.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:32.537 [DEBUG] [Thread-160230] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:42.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:45:42.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:45:42.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:45:43.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 45, 20), 16.31, 32.93, 0.0, 19.64, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:45:43.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:45:20
2025-09-29T15:45:43.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:45:43.355 [DEBUG] [Thread-160232] [transport.py] [_log()] starting thread (client mode): 0x2b91f880
2025-09-29T15:45:43.355 [DEBUG] [Thread-160232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:45:43.375 [DEBUG] [Thread-160232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:45:43.376 [INFO] [Thread-160232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:45:43.379 [DEBUG] [Thread-160232] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:45:43.379 [DEBUG] [Thread-160232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:45:43.379 [DEBUG] [Thread-160232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:45:43.379 [DEBUG] [Thread-160232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:43.379 [DEBUG] [Thread-160232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:43.379 [DEBUG] [Thread-160232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:43.379 [DEBUG] [Thread-160232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] client lang: <none>
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] server lang: <none>
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] kex follows: False
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] Compression: none
2025-09-29T15:45:43.380 [DEBUG] [Thread-160232] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:45:43.402 [DEBUG] [Thread-160232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:45:43.402 [DEBUG] [Thread-160232] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:45:43.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:45:43.403 [DEBUG] [Thread-160232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:45:43.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:45:43.405 [DEBUG] [Thread-160232] [transport.py] [_log()] userauth is OK
2025-09-29T15:45:43.405 [DEBUG] [Thread-160232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:45:43.405 [DEBUG] [Thread-160232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:45:43.405 [DEBUG] [Thread-160232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:45:43.406 [DEBUG] [Thread-160232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:45:43.429 [INFO] [Thread-160232] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:45:43.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:43.826 [DEBUG] [Thread-160234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:45:44.229 [DEBUG] [Thread-160232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:44.229 [DEBUG] [Thread-160232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:44.229 [DEBUG] [Thread-160232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:45:44.270 [DEBUG] [Thread-160232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:44.271 [DEBUG] [Thread-160232] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:44.273 [DEBUG] [Thread-160232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:44.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:44.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:45:44.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:45:44.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:45:44.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:44.290 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:45:44.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:44.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:44.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:45:44.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.572983 -999.00  +15.90  14.39     38   +1.70 1 1 1 1 1   888    0 14.29 -1.19 ----- 13.2 14.4 140.0 21.4 23.8 -29.6 23.3 -30.1 25.3 -29.9 26.2 -31.3
2025-09-29T15:45:44.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:45:44.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:45:44.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.572983
2025-09-29T15:45:44.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:45:44.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:45:44.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:45:44.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:45:44.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:45:44.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:45:20', tmtdew=16.31, humidity=32.93, cloud=0.0, wind=19.64, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:45:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:45:44.293 [DEBUG] [Thread-160232] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:44.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:45:44.388 [DEBUG] [Thread-160236] [transport.py] [_log()] starting thread (client mode): 0x2e3df880
2025-09-29T15:45:44.388 [DEBUG] [Thread-160236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:45:44.403 [DEBUG] [Thread-160236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:45:44.404 [INFO] [Thread-160236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:45:44.411 [DEBUG] [Thread-160236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:45:44.411 [DEBUG] [Thread-160236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:45:44.411 [DEBUG] [Thread-160236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:45:44.411 [DEBUG] [Thread-160236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] client lang: <none>
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] server lang: <none>
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] kex follows: False
2025-09-29T15:45:44.412 [DEBUG] [Thread-160236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:45:44.413 [DEBUG] [Thread-160236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:45:44.413 [DEBUG] [Thread-160236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:45:44.413 [DEBUG] [Thread-160236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:45:44.413 [DEBUG] [Thread-160236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:45:44.413 [DEBUG] [Thread-160236] [transport.py] [_log()] Compression: none
2025-09-29T15:45:44.413 [DEBUG] [Thread-160236] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:45:44.471 [DEBUG] [Thread-160236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:45:44.472 [DEBUG] [Thread-160236] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:45:44.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:45:44.473 [DEBUG] [Thread-160236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:45:44.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:45:44.527 [DEBUG] [Thread-160236] [transport.py] [_log()] userauth is OK
2025-09-29T15:45:44.528 [DEBUG] [Thread-160236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:45:44.528 [DEBUG] [Thread-160236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:45:44.528 [DEBUG] [Thread-160236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:45:44.528 [DEBUG] [Thread-160236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:45:44.547 [INFO] [Thread-160236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:45:44.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:45:44.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:45.508 [DEBUG] [Thread-160236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:45.508 [DEBUG] [Thread-160236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:45.556 [DEBUG] [Thread-160236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:45.556 [DEBUG] [Thread-160236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:45.564 [DEBUG] [Thread-160236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:45.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:45.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:45:45.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:45:45.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:45.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:45.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:45.595 [DEBUG] [Thread-160236] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:47.118 [DEBUG] [Thread-160238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:45:55.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:45:55.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:45:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:45:56.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 45, 52), 16.34, 32.55, 0.0, 21.51, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:45:56.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:45:52
2025-09-29T15:45:56.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:45:56.422 [DEBUG] [Thread-160239] [transport.py] [_log()] starting thread (client mode): 0x2b91d180
2025-09-29T15:45:56.422 [DEBUG] [Thread-160239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:45:56.442 [DEBUG] [Thread-160239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:45:56.443 [INFO] [Thread-160239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] client lang: <none>
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] server lang: <none>
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] kex follows: False
2025-09-29T15:45:56.446 [DEBUG] [Thread-160239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:45:56.447 [DEBUG] [Thread-160239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:45:56.447 [DEBUG] [Thread-160239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:45:56.447 [DEBUG] [Thread-160239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:45:56.447 [DEBUG] [Thread-160239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:45:56.447 [DEBUG] [Thread-160239] [transport.py] [_log()] Compression: none
2025-09-29T15:45:56.447 [DEBUG] [Thread-160239] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:45:56.465 [DEBUG] [Thread-160239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:45:56.465 [DEBUG] [Thread-160239] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:45:56.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:45:56.466 [DEBUG] [Thread-160239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:45:56.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:45:56.468 [DEBUG] [Thread-160239] [transport.py] [_log()] userauth is OK
2025-09-29T15:45:56.468 [DEBUG] [Thread-160239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:45:56.469 [DEBUG] [Thread-160239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:45:56.469 [DEBUG] [Thread-160239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:45:56.469 [DEBUG] [Thread-160239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:45:56.490 [INFO] [Thread-160239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:45:56.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:57.078 [DEBUG] [Thread-160239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:57.079 [DEBUG] [Thread-160239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:57.079 [DEBUG] [Thread-160239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:45:57.119 [DEBUG] [Thread-160239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:57.119 [DEBUG] [Thread-160239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:57.122 [DEBUG] [Thread-160239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:57.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:57.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:45:57.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:45:57.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:45:57.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:57.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:45:57.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:57.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:57.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:45:57.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.573331 -999.00  +16.00  14.52     38   +1.80 1 1 1 1 1   888    0 14.40 -3.12 ----- 13.8 14.5 149.8 19.3 23.8 -29.1 23.3 -28.9 25.3 -30.2 26.3 -31.8
2025-09-29T15:45:57.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:45:57.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:45:57.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.573331
2025-09-29T15:45:57.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:45:57.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:45:57.146 [DEBUG] [Thread-160239] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:57.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:45:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:45:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:45:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:45:52', tmtdew=16.34, humidity=32.55, cloud=0.0, wind=21.51, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:45:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:45:57.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:45:57.239 [DEBUG] [Thread-160242] [transport.py] [_log()] starting thread (client mode): 0x2b96bb50
2025-09-29T15:45:57.239 [DEBUG] [Thread-160242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:45:57.254 [DEBUG] [Thread-160242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:45:57.254 [INFO] [Thread-160242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:45:57.261 [DEBUG] [Thread-160242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:45:57.262 [DEBUG] [Thread-160242] [transport.py] [_log()] client lang: <none>
2025-09-29T15:45:57.263 [DEBUG] [Thread-160242] [transport.py] [_log()] server lang: <none>
2025-09-29T15:45:57.263 [DEBUG] [Thread-160242] [transport.py] [_log()] kex follows: False
2025-09-29T15:45:57.263 [DEBUG] [Thread-160242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:45:57.263 [DEBUG] [Thread-160242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:45:57.263 [DEBUG] [Thread-160242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:45:57.264 [DEBUG] [Thread-160242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:45:57.264 [DEBUG] [Thread-160242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:45:57.264 [DEBUG] [Thread-160242] [transport.py] [_log()] Compression: none
2025-09-29T15:45:57.264 [DEBUG] [Thread-160242] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:45:57.319 [DEBUG] [Thread-160242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:45:57.319 [DEBUG] [Thread-160242] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:45:57.320 [DEBUG] [Thread-160242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:45:57.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:45:57.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:45:57.375 [DEBUG] [Thread-160242] [transport.py] [_log()] userauth is OK
2025-09-29T15:45:57.375 [DEBUG] [Thread-160242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:45:57.375 [DEBUG] [Thread-160242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:45:57.376 [DEBUG] [Thread-160242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:45:57.376 [DEBUG] [Thread-160242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:45:57.394 [INFO] [Thread-160242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:45:57.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:45:57.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:45:58.390 [DEBUG] [Thread-160242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:45:58.390 [DEBUG] [Thread-160242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:45:58.438 [DEBUG] [Thread-160242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:45:58.438 [DEBUG] [Thread-160242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:45:58.447 [DEBUG] [Thread-160242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:45:58.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:45:58.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:45:58.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:45:58.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:45:58.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:45:58.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:45:58.482 [DEBUG] [Thread-160242] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:45:58.880 [DEBUG] [Thread-160244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:46:08.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:46:08.485 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:46:08.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:46:09.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 45, 52), 16.34, 32.55, 0.0, 21.51, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:46:09.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:45:52
2025-09-29T15:46:09.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:46:09.308 [DEBUG] [Thread-160245] [transport.py] [_log()] starting thread (client mode): 0x2e377fd0
2025-09-29T15:46:09.308 [DEBUG] [Thread-160245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:46:09.329 [DEBUG] [Thread-160245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:46:09.330 [INFO] [Thread-160245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] client lang: <none>
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] server lang: <none>
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] kex follows: False
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] Compression: none
2025-09-29T15:46:09.333 [DEBUG] [Thread-160245] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:46:09.350 [DEBUG] [Thread-160245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:46:09.350 [DEBUG] [Thread-160245] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:46:09.351 [DEBUG] [Thread-160245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:46:09.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:46:09.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:46:09.353 [DEBUG] [Thread-160245] [transport.py] [_log()] userauth is OK
2025-09-29T15:46:09.353 [DEBUG] [Thread-160245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:46:09.353 [DEBUG] [Thread-160245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:46:09.353 [DEBUG] [Thread-160245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:46:09.353 [DEBUG] [Thread-160245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:46:09.370 [INFO] [Thread-160245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:46:09.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:46:10.134 [DEBUG] [Thread-160245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:46:10.134 [DEBUG] [Thread-160245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:46:10.134 [DEBUG] [Thread-160245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:46:10.175 [DEBUG] [Thread-160245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:46:10.175 [DEBUG] [Thread-160245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:46:10.177 [DEBUG] [Thread-160245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:46:10.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:46:10.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:46:10.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:46:10.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:46:10.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:46:10.196 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:46:10.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.573331 -999.00  +16.00  14.52     38   +1.80 1 1 1 1 1   888    0 14.40 -3.12 ----- 13.8 14.5 149.8 19.3 23.8 -29.1 23.3 -28.9 25.3 -30.2 26.3 -31.8
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.573331
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:46:10.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:45:52', tmtdew=16.34, humidity=32.55, cloud=0.0, wind=21.51, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:45:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:46:10.197 [DEBUG] [Thread-160245] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:46:10.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:46:10.280 [DEBUG] [Thread-160248] [transport.py] [_log()] starting thread (client mode): 0x2e3f8a00
2025-09-29T15:46:10.280 [DEBUG] [Thread-160248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:46:10.294 [DEBUG] [Thread-160248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:46:10.294 [INFO] [Thread-160248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:46:10.302 [DEBUG] [Thread-160248] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:46:10.302 [DEBUG] [Thread-160248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:46:10.302 [DEBUG] [Thread-160248] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:46:10.302 [DEBUG] [Thread-160248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:10.302 [DEBUG] [Thread-160248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:10.302 [DEBUG] [Thread-160248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] client lang: <none>
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] server lang: <none>
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] kex follows: False
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:46:10.303 [DEBUG] [Thread-160248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:46:10.304 [DEBUG] [Thread-160248] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:46:10.304 [DEBUG] [Thread-160248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:46:10.304 [DEBUG] [Thread-160248] [transport.py] [_log()] Compression: none
2025-09-29T15:46:10.304 [DEBUG] [Thread-160248] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:46:10.358 [DEBUG] [Thread-160248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:46:10.358 [DEBUG] [Thread-160248] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:46:10.359 [DEBUG] [Thread-160248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:46:10.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:46:10.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:46:10.415 [DEBUG] [Thread-160248] [transport.py] [_log()] userauth is OK
2025-09-29T15:46:10.415 [DEBUG] [Thread-160248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:46:10.415 [DEBUG] [Thread-160248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:46:10.415 [DEBUG] [Thread-160248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:46:10.415 [DEBUG] [Thread-160248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:46:10.434 [INFO] [Thread-160248] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:46:10.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:46:10.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:46:11.388 [DEBUG] [Thread-160248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:46:11.388 [DEBUG] [Thread-160248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:46:11.436 [DEBUG] [Thread-160248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:46:11.436 [DEBUG] [Thread-160248] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:46:11.445 [DEBUG] [Thread-160248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:46:11.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:46:11.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:46:11.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:46:11.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:46:11.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:46:11.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:46:11.479 [DEBUG] [Thread-160248] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:46:13.929 [DEBUG] [Thread-160250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:46:15.495 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:46:15.496 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:46:21.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:46:21.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:46:21.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:46:22.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 45, 52), 16.34, 32.55, 0.0, 21.51, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:46:22.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:45:52
2025-09-29T15:46:22.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:46:22.295 [DEBUG] [Thread-160251] [transport.py] [_log()] starting thread (client mode): 0x2b91c850
2025-09-29T15:46:22.296 [DEBUG] [Thread-160251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:46:22.314 [DEBUG] [Thread-160251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:46:22.315 [INFO] [Thread-160251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:46:22.317 [DEBUG] [Thread-160251] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] client lang: <none>
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] server lang: <none>
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] kex follows: False
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:46:22.318 [DEBUG] [Thread-160251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:46:22.319 [DEBUG] [Thread-160251] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:46:22.319 [DEBUG] [Thread-160251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:46:22.319 [DEBUG] [Thread-160251] [transport.py] [_log()] Compression: none
2025-09-29T15:46:22.319 [DEBUG] [Thread-160251] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:46:22.335 [DEBUG] [Thread-160251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:46:22.335 [DEBUG] [Thread-160251] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:46:22.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:46:22.336 [DEBUG] [Thread-160251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:46:22.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:46:22.338 [DEBUG] [Thread-160251] [transport.py] [_log()] userauth is OK
2025-09-29T15:46:22.338 [DEBUG] [Thread-160251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:46:22.338 [DEBUG] [Thread-160251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:46:22.338 [DEBUG] [Thread-160251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:46:22.338 [DEBUG] [Thread-160251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:46:22.362 [INFO] [Thread-160251] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:46:22.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:46:23.087 [DEBUG] [Thread-160251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:46:23.087 [DEBUG] [Thread-160251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:46:23.087 [DEBUG] [Thread-160251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:46:23.128 [DEBUG] [Thread-160251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:46:23.128 [DEBUG] [Thread-160251] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:46:23.131 [DEBUG] [Thread-160251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:46:23.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:46:23.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:46:23.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:46:23.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:46:23.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:46:23.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:46:23.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:46:23.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:46:23.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:46:23.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.573331 -999.00  +16.00  14.52     38   +1.80 1 1 1 1 1   888    0 14.40 -3.12 ----- 13.8 14.5 149.8 19.3 23.8 -29.1 23.3 -28.9 25.3 -30.2 26.3 -31.8
2025-09-29T15:46:23.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:46:23.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:46:23.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.573331
2025-09-29T15:46:23.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:46:23.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:46:23.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:46:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:46:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:46:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:45:52', tmtdew=16.34, humidity=32.55, cloud=0.0, wind=21.51, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:45:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:46:23.150 [DEBUG] [Thread-160251] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:46:23.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:46:23.243 [DEBUG] [Thread-160254] [transport.py] [_log()] starting thread (client mode): 0x2b968790
2025-09-29T15:46:23.243 [DEBUG] [Thread-160254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:46:23.258 [DEBUG] [Thread-160254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:46:23.258 [INFO] [Thread-160254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:46:23.265 [DEBUG] [Thread-160254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:46:23.266 [DEBUG] [Thread-160254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:46:23.266 [DEBUG] [Thread-160254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:46:23.266 [DEBUG] [Thread-160254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:23.266 [DEBUG] [Thread-160254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:23.266 [DEBUG] [Thread-160254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:23.266 [DEBUG] [Thread-160254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:23.266 [DEBUG] [Thread-160254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:46:23.266 [DEBUG] [Thread-160254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] client lang: <none>
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] server lang: <none>
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] kex follows: False
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:46:23.267 [DEBUG] [Thread-160254] [transport.py] [_log()] Compression: none
2025-09-29T15:46:23.268 [DEBUG] [Thread-160254] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:46:23.321 [DEBUG] [Thread-160254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:46:23.321 [DEBUG] [Thread-160254] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:46:23.321 [DEBUG] [Thread-160254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:46:23.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:46:23.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:46:23.378 [DEBUG] [Thread-160254] [transport.py] [_log()] userauth is OK
2025-09-29T15:46:23.378 [DEBUG] [Thread-160254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:46:23.378 [DEBUG] [Thread-160254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:46:23.378 [DEBUG] [Thread-160254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:46:23.378 [DEBUG] [Thread-160254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:46:23.392 [INFO] [Thread-160254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:46:23.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:46:23.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:46:24.373 [DEBUG] [Thread-160254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:46:24.373 [DEBUG] [Thread-160254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:46:24.421 [DEBUG] [Thread-160254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:46:24.421 [DEBUG] [Thread-160254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:46:24.430 [DEBUG] [Thread-160254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:46:24.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:46:24.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:46:24.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:46:24.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:46:24.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:46:24.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:46:24.464 [DEBUG] [Thread-160254] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:46:28.959 [DEBUG] [Thread-160256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:46:34.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:46:34.467 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:46:34.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:46:35.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 46, 24), 16.45, 32.33, 0.0, 22.21, 16.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:46:35.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:46:24
2025-09-29T15:46:35.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:46:35.296 [DEBUG] [Thread-160257] [transport.py] [_log()] starting thread (client mode): 0x2e363a60
2025-09-29T15:46:35.296 [DEBUG] [Thread-160257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:46:35.317 [DEBUG] [Thread-160257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:46:35.317 [INFO] [Thread-160257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:46:35.320 [DEBUG] [Thread-160257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:46:35.320 [DEBUG] [Thread-160257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:46:35.320 [DEBUG] [Thread-160257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:46:35.320 [DEBUG] [Thread-160257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:35.320 [DEBUG] [Thread-160257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:35.320 [DEBUG] [Thread-160257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] client lang: <none>
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] server lang: <none>
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] kex follows: False
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:46:35.321 [DEBUG] [Thread-160257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:46:35.322 [DEBUG] [Thread-160257] [transport.py] [_log()] Compression: none
2025-09-29T15:46:35.322 [DEBUG] [Thread-160257] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:46:35.340 [DEBUG] [Thread-160257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:46:35.340 [DEBUG] [Thread-160257] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:46:35.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:46:35.341 [DEBUG] [Thread-160257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:46:35.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:46:35.343 [DEBUG] [Thread-160257] [transport.py] [_log()] userauth is OK
2025-09-29T15:46:35.343 [DEBUG] [Thread-160257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:46:35.343 [DEBUG] [Thread-160257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:46:35.344 [DEBUG] [Thread-160257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:46:35.344 [DEBUG] [Thread-160257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:46:35.367 [INFO] [Thread-160257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:46:35.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:46:36.011 [DEBUG] [Thread-160257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:46:36.011 [DEBUG] [Thread-160257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:46:36.011 [DEBUG] [Thread-160257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:46:36.052 [DEBUG] [Thread-160257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:46:36.052 [DEBUG] [Thread-160257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:46:36.055 [DEBUG] [Thread-160257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:46:36.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:46:36.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:46:36.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:46:36.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:46:36.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:46:36.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:46:36.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:46:36.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:46:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:46:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.573678 -999.00  +16.30  11.89     38   +2.00 1 1 1 1 1   888    0 14.35 -4.08 ----- 11.3 11.9 166.4 18.0 23.8 -29.8 23.3 -28.6 25.2 -29.7 26.3 -30.7
2025-09-29T15:46:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:46:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:46:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.573678
2025-09-29T15:46:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:46:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:46:36.077 [DEBUG] [Thread-160257] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:46:36.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:46:36.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:46:36.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:46:36.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:46:24', tmtdew=16.45, humidity=32.33, cloud=0.0, wind=22.21, temperature=16.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:46:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:46:36.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:46:36.176 [DEBUG] [Thread-160260] [transport.py] [_log()] starting thread (client mode): 0x2b91e470
2025-09-29T15:46:36.176 [DEBUG] [Thread-160260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:46:36.191 [DEBUG] [Thread-160260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:46:36.191 [INFO] [Thread-160260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:46:36.201 [DEBUG] [Thread-160260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:46:36.201 [DEBUG] [Thread-160260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:46:36.201 [DEBUG] [Thread-160260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:46:36.201 [DEBUG] [Thread-160260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:36.201 [DEBUG] [Thread-160260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:36.201 [DEBUG] [Thread-160260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] client lang: <none>
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] server lang: <none>
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] kex follows: False
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:46:36.202 [DEBUG] [Thread-160260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:46:36.203 [DEBUG] [Thread-160260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:46:36.203 [DEBUG] [Thread-160260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:46:36.203 [DEBUG] [Thread-160260] [transport.py] [_log()] Compression: none
2025-09-29T15:46:36.203 [DEBUG] [Thread-160260] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:46:36.266 [DEBUG] [Thread-160260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:46:36.266 [DEBUG] [Thread-160260] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:46:36.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:46:36.268 [DEBUG] [Thread-160260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:46:36.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:46:36.326 [DEBUG] [Thread-160260] [transport.py] [_log()] userauth is OK
2025-09-29T15:46:36.326 [DEBUG] [Thread-160260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:46:36.326 [DEBUG] [Thread-160260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:46:36.327 [DEBUG] [Thread-160260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:46:36.327 [DEBUG] [Thread-160260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:46:36.346 [INFO] [Thread-160260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:46:36.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:46:36.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:46:37.305 [DEBUG] [Thread-160260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:46:37.305 [DEBUG] [Thread-160260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:46:37.353 [DEBUG] [Thread-160260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:46:37.353 [DEBUG] [Thread-160260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:46:37.362 [DEBUG] [Thread-160260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:46:37.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:46:37.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:46:37.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:46:37.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:46:37.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:46:37.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:46:37.397 [DEBUG] [Thread-160260] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:46:43.994 [DEBUG] [Thread-160262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:46:47.154 [DEBUG] [Thread-160263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:46:47.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:46:47.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:46:47.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:46:47.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 46, 24), 16.45, 32.33, 0.0, 22.21, 16.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:46:47.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:46:24
2025-09-29T15:46:48.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:46:48.228 [DEBUG] [Thread-160264] [transport.py] [_log()] starting thread (client mode): 0x30ddffd0
2025-09-29T15:46:48.228 [DEBUG] [Thread-160264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:46:48.249 [DEBUG] [Thread-160264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:46:48.249 [INFO] [Thread-160264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:46:48.252 [DEBUG] [Thread-160264] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] client lang: <none>
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] server lang: <none>
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] kex follows: False
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] Compression: none
2025-09-29T15:46:48.253 [DEBUG] [Thread-160264] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:46:48.270 [DEBUG] [Thread-160264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:46:48.270 [DEBUG] [Thread-160264] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:46:48.271 [DEBUG] [Thread-160264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:46:48.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:46:48.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:46:48.273 [DEBUG] [Thread-160264] [transport.py] [_log()] userauth is OK
2025-09-29T15:46:48.273 [DEBUG] [Thread-160264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:46:48.273 [DEBUG] [Thread-160264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:46:48.273 [DEBUG] [Thread-160264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:46:48.273 [DEBUG] [Thread-160264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:46:48.296 [INFO] [Thread-160264] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:46:48.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:46:49.071 [DEBUG] [Thread-160264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:46:49.071 [DEBUG] [Thread-160264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:46:49.072 [DEBUG] [Thread-160264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:46:49.112 [DEBUG] [Thread-160264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:46:49.112 [DEBUG] [Thread-160264] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:46:49.117 [DEBUG] [Thread-160264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:46:49.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:46:49.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:46:49.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:46:49.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:46:49.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:46:49.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:46:49.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:46:49.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:46:49.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:46:49.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.573678 -999.00  +16.30  11.89     38   +2.00 1 1 1 1 1   888    0 14.35 -4.08 ----- 11.3 11.9 166.4 18.0 23.8 -29.8 23.3 -28.6 25.2 -29.7 26.3 -30.7
2025-09-29T15:46:49.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:46:49.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:46:49.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.573678
2025-09-29T15:46:49.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:46:49.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:46:49.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:46:49.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:46:49.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:46:49.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:46:24', tmtdew=16.45, humidity=32.33, cloud=0.0, wind=22.21, temperature=16.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:46:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:46:49.136 [DEBUG] [Thread-160264] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:46:49.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:46:49.231 [DEBUG] [Thread-160267] [transport.py] [_log()] starting thread (client mode): 0x2e377460
2025-09-29T15:46:49.231 [DEBUG] [Thread-160267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:46:49.246 [DEBUG] [Thread-160267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:46:49.246 [INFO] [Thread-160267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] client lang: <none>
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] server lang: <none>
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] kex follows: False
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:46:49.254 [DEBUG] [Thread-160267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:46:49.255 [DEBUG] [Thread-160267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:46:49.255 [DEBUG] [Thread-160267] [transport.py] [_log()] Compression: none
2025-09-29T15:46:49.255 [DEBUG] [Thread-160267] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:46:49.315 [DEBUG] [Thread-160267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:46:49.315 [DEBUG] [Thread-160267] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:46:49.316 [DEBUG] [Thread-160267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:46:49.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:46:49.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:46:49.370 [DEBUG] [Thread-160267] [transport.py] [_log()] userauth is OK
2025-09-29T15:46:49.370 [DEBUG] [Thread-160267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:46:49.370 [DEBUG] [Thread-160267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:46:49.371 [DEBUG] [Thread-160267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:46:49.371 [DEBUG] [Thread-160267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:46:49.390 [INFO] [Thread-160267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:46:49.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:46:49.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:46:50.409 [DEBUG] [Thread-160267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:46:50.409 [DEBUG] [Thread-160267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:46:50.457 [DEBUG] [Thread-160267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:46:50.457 [DEBUG] [Thread-160267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:46:50.466 [DEBUG] [Thread-160267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:46:50.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:46:50.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:46:50.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:46:50.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:46:50.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:46:50.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:46:50.502 [DEBUG] [Thread-160267] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:46:59.036 [DEBUG] [Thread-160269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:47:00.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:47:00.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:47:00.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:47:01.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 46, 56), 16.32, 32.88, 0.0, 20.22, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:47:01.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:46:56
2025-09-29T15:47:01.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:47:01.338 [DEBUG] [Thread-160270] [transport.py] [_log()] starting thread (client mode): 0x2e3c1030
2025-09-29T15:47:01.338 [DEBUG] [Thread-160270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:01.354 [DEBUG] [Thread-160270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:47:01.354 [INFO] [Thread-160270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:47:01.357 [DEBUG] [Thread-160270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:01.357 [DEBUG] [Thread-160270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:47:01.357 [DEBUG] [Thread-160270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:01.357 [DEBUG] [Thread-160270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:01.357 [DEBUG] [Thread-160270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] Compression: none
2025-09-29T15:47:01.358 [DEBUG] [Thread-160270] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:01.376 [DEBUG] [Thread-160270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:01.376 [DEBUG] [Thread-160270] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:01.377 [DEBUG] [Thread-160270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:47:01.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:47:01.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:01.379 [DEBUG] [Thread-160270] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:01.379 [DEBUG] [Thread-160270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:01.379 [DEBUG] [Thread-160270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:01.379 [DEBUG] [Thread-160270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:47:01.380 [DEBUG] [Thread-160270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:01.403 [INFO] [Thread-160270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:01.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:02.041 [DEBUG] [Thread-160270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:02.041 [DEBUG] [Thread-160270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:02.041 [DEBUG] [Thread-160270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:47:02.082 [DEBUG] [Thread-160270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:02.082 [DEBUG] [Thread-160270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:02.085 [DEBUG] [Thread-160270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:02.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:02.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:47:02.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:47:02.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:47:02.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:02.108 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:47:02.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:02.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:02.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:47:02.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.574025 -999.00  +16.40  12.72     37   +2.00 1 1 1 1 1   888    0 14.02 -5.44 ----- 20.5 12.7 156.0 17.8 23.7 -31.3 23.1 -31.6 25.2 -31.3 26.2 -31.0
2025-09-29T15:47:02.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:47:02.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:47:02.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.574025
2025-09-29T15:47:02.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:47:02.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:47:02.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:47:02.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:47:02.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:47:02.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:46:56', tmtdew=16.32, humidity=32.88, cloud=0.0, wind=20.22, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:46:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:47:02.111 [DEBUG] [Thread-160270] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:02.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:47:02.207 [DEBUG] [Thread-160273] [transport.py] [_log()] starting thread (client mode): 0x2e3c32b0
2025-09-29T15:47:02.208 [DEBUG] [Thread-160273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:02.228 [DEBUG] [Thread-160273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:47:02.229 [INFO] [Thread-160273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:47:02.236 [DEBUG] [Thread-160273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:02.236 [DEBUG] [Thread-160273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:47:02.236 [DEBUG] [Thread-160273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:02.236 [DEBUG] [Thread-160273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:02.236 [DEBUG] [Thread-160273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:02.236 [DEBUG] [Thread-160273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] Compression: none
2025-09-29T15:47:02.237 [DEBUG] [Thread-160273] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:02.294 [DEBUG] [Thread-160273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:02.294 [DEBUG] [Thread-160273] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:02.295 [DEBUG] [Thread-160273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:47:02.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:47:02.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:02.350 [DEBUG] [Thread-160273] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:02.350 [DEBUG] [Thread-160273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:02.350 [DEBUG] [Thread-160273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:02.350 [DEBUG] [Thread-160273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:47:02.350 [DEBUG] [Thread-160273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:02.369 [INFO] [Thread-160273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:02.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:47:02.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:03.340 [DEBUG] [Thread-160273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:03.340 [DEBUG] [Thread-160273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:03.388 [DEBUG] [Thread-160273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:03.388 [DEBUG] [Thread-160273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:03.396 [DEBUG] [Thread-160273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:03.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:03.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:47:03.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:47:03.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:03.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:03.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:03.428 [DEBUG] [Thread-160273] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:13.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:47:13.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:47:13.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:47:13.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 46, 56), 16.32, 32.88, 0.0, 20.22, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:47:13.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:46:56
2025-09-29T15:47:14.066 [DEBUG] [Thread-160275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:47:14.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:47:14.254 [DEBUG] [Thread-160276] [transport.py] [_log()] starting thread (client mode): 0x30dde5f0
2025-09-29T15:47:14.254 [DEBUG] [Thread-160276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:14.273 [DEBUG] [Thread-160276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:47:14.273 [INFO] [Thread-160276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:47:14.276 [DEBUG] [Thread-160276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:14.276 [DEBUG] [Thread-160276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:47:14.276 [DEBUG] [Thread-160276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:14.276 [DEBUG] [Thread-160276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:14.276 [DEBUG] [Thread-160276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:14.277 [DEBUG] [Thread-160276] [transport.py] [_log()] Compression: none
2025-09-29T15:47:14.278 [DEBUG] [Thread-160276] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:14.296 [DEBUG] [Thread-160276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:14.297 [DEBUG] [Thread-160276] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:14.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:47:14.298 [DEBUG] [Thread-160276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:47:14.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:14.299 [DEBUG] [Thread-160276] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:14.300 [DEBUG] [Thread-160276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:14.300 [DEBUG] [Thread-160276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:14.300 [DEBUG] [Thread-160276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:47:14.300 [DEBUG] [Thread-160276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:14.325 [INFO] [Thread-160276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:14.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:15.103 [DEBUG] [Thread-160276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:15.104 [DEBUG] [Thread-160276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:15.104 [DEBUG] [Thread-160276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:47:15.144 [DEBUG] [Thread-160276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:15.144 [DEBUG] [Thread-160276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:15.147 [DEBUG] [Thread-160276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:15.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:15.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:47:15.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:47:15.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:47:15.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:15.169 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:47:15.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:15.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:15.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:47:15.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.574025 -999.00  +16.40  12.72     37   +2.00 1 1 1 1 1   888    0 14.02 -5.44 ----- 20.5 12.7 156.0 17.8 23.7 -31.3 23.1 -31.6 25.2 -31.3 26.2 -31.0
2025-09-29T15:47:15.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:47:15.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:47:15.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.574025
2025-09-29T15:47:15.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:47:15.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:47:15.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:47:15.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:47:15.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:47:15.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:46:56', tmtdew=16.32, humidity=32.88, cloud=0.0, wind=20.22, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:46:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:47:15.172 [DEBUG] [Thread-160276] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:15.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:47:15.265 [DEBUG] [Thread-160279] [transport.py] [_log()] starting thread (client mode): 0x2e3c29e0
2025-09-29T15:47:15.265 [DEBUG] [Thread-160279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:15.280 [DEBUG] [Thread-160279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:47:15.280 [INFO] [Thread-160279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:47:15.287 [DEBUG] [Thread-160279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] Compression: none
2025-09-29T15:47:15.288 [DEBUG] [Thread-160279] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:15.346 [DEBUG] [Thread-160279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:15.346 [DEBUG] [Thread-160279] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:15.347 [DEBUG] [Thread-160279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:47:15.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:47:15.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:15.402 [DEBUG] [Thread-160279] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:15.402 [DEBUG] [Thread-160279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:15.402 [DEBUG] [Thread-160279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:15.402 [DEBUG] [Thread-160279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:47:15.402 [DEBUG] [Thread-160279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:15.427 [INFO] [Thread-160279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:15.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:47:15.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:15.634 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:47:15.635 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:47:16.418 [DEBUG] [Thread-160279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:16.418 [DEBUG] [Thread-160279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:16.467 [DEBUG] [Thread-160279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:16.467 [DEBUG] [Thread-160279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:16.475 [DEBUG] [Thread-160279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:16.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:16.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:47:16.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:47:16.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:16.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:16.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:16.506 [DEBUG] [Thread-160279] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:26.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:47:26.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:47:26.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:47:27.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 46, 56), 16.32, 32.88, 0.0, 20.22, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:47:27.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:46:56
2025-09-29T15:47:27.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:47:27.350 [DEBUG] [Thread-160281] [transport.py] [_log()] starting thread (client mode): 0x2e3c31f0
2025-09-29T15:47:27.350 [DEBUG] [Thread-160281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:27.372 [DEBUG] [Thread-160281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:47:27.372 [INFO] [Thread-160281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:27.375 [DEBUG] [Thread-160281] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] Compression: none
2025-09-29T15:47:27.376 [DEBUG] [Thread-160281] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:27.395 [DEBUG] [Thread-160281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:27.395 [DEBUG] [Thread-160281] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:27.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:47:27.397 [DEBUG] [Thread-160281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:47:27.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:27.399 [DEBUG] [Thread-160281] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:27.399 [DEBUG] [Thread-160281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:27.399 [DEBUG] [Thread-160281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:27.399 [DEBUG] [Thread-160281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:47:27.400 [DEBUG] [Thread-160281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:27.415 [INFO] [Thread-160281] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:27.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:28.219 [DEBUG] [Thread-160281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:28.219 [DEBUG] [Thread-160281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:28.219 [DEBUG] [Thread-160281] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:47:28.260 [DEBUG] [Thread-160281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:28.261 [DEBUG] [Thread-160281] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:28.263 [DEBUG] [Thread-160281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:28.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:28.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:47:28.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:47:28.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:47:28.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:28.284 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:47:28.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:28.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:28.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:47:28.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.574025 -999.00  +16.40  12.72     37   +2.00 1 1 1 1 1   888    0 14.02 -5.44 ----- 20.5 12.7 156.0 17.8 23.7 -31.3 23.1 -31.6 25.2 -31.3 26.2 -31.0
2025-09-29T15:47:28.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:47:28.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:47:28.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.574025
2025-09-29T15:47:28.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:47:28.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:47:28.286 [DEBUG] [Thread-160281] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:28.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:47:28.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:47:28.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:47:28.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:46:56', tmtdew=16.32, humidity=32.88, cloud=0.0, wind=20.22, temperature=15.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:46:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:47:28.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:47:28.385 [DEBUG] [Thread-160284] [transport.py] [_log()] starting thread (client mode): 0x2e377a90
2025-09-29T15:47:28.385 [DEBUG] [Thread-160284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:28.399 [DEBUG] [Thread-160284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:47:28.399 [INFO] [Thread-160284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:47:28.408 [DEBUG] [Thread-160284] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:28.408 [DEBUG] [Thread-160284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:47:28.408 [DEBUG] [Thread-160284] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] Compression: none
2025-09-29T15:47:28.409 [DEBUG] [Thread-160284] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:28.470 [DEBUG] [Thread-160284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:28.471 [DEBUG] [Thread-160284] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:28.471 [DEBUG] [Thread-160284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:47:28.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:47:28.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:28.531 [DEBUG] [Thread-160284] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:28.531 [DEBUG] [Thread-160284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:28.531 [DEBUG] [Thread-160284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:28.531 [DEBUG] [Thread-160284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:47:28.531 [DEBUG] [Thread-160284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:28.550 [INFO] [Thread-160284] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:28.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:47:28.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:29.097 [DEBUG] [Thread-160286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:47:29.530 [DEBUG] [Thread-160284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:29.530 [DEBUG] [Thread-160284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:29.579 [DEBUG] [Thread-160284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:29.579 [DEBUG] [Thread-160284] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:29.587 [DEBUG] [Thread-160284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:29.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:29.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:47:29.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:47:29.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:29.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:29.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:29.618 [DEBUG] [Thread-160284] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:39.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:47:39.621 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:47:39.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:47:40.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 47, 28), 16.13, 33.26, 0.0, 19.27, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:47:40.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:47:28
2025-09-29T15:47:40.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:47:40.468 [DEBUG] [Thread-160287] [transport.py] [_log()] starting thread (client mode): 0x30ddff70
2025-09-29T15:47:40.468 [DEBUG] [Thread-160287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:40.488 [DEBUG] [Thread-160287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:47:40.488 [INFO] [Thread-160287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:47:40.491 [DEBUG] [Thread-160287] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:40.491 [DEBUG] [Thread-160287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:47:40.491 [DEBUG] [Thread-160287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:40.491 [DEBUG] [Thread-160287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:40.491 [DEBUG] [Thread-160287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:40.491 [DEBUG] [Thread-160287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:40.491 [DEBUG] [Thread-160287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:40.491 [DEBUG] [Thread-160287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] Compression: none
2025-09-29T15:47:40.492 [DEBUG] [Thread-160287] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:40.508 [DEBUG] [Thread-160287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:40.508 [DEBUG] [Thread-160287] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:40.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:47:40.509 [DEBUG] [Thread-160287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:47:40.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:40.511 [DEBUG] [Thread-160287] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:40.511 [DEBUG] [Thread-160287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:40.511 [DEBUG] [Thread-160287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:40.511 [DEBUG] [Thread-160287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:47:40.511 [DEBUG] [Thread-160287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:40.529 [INFO] [Thread-160287] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:40.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:41.161 [DEBUG] [Thread-160287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:41.162 [DEBUG] [Thread-160287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:41.162 [DEBUG] [Thread-160287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:47:41.202 [DEBUG] [Thread-160287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:41.202 [DEBUG] [Thread-160287] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:41.205 [DEBUG] [Thread-160287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:41.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:41.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:47:41.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:47:41.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:47:41.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:41.228 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:47:41.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:41.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:47:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.574373 -999.00  +16.20  10.65     37   +1.80 1 1 1 1 1   888    0 14.34 -7.68 ----- 11.3 10.7 154.8 22.4 23.7 -30.0 23.1 -29.1 25.0 -28.7 26.1 -32.3
2025-09-29T15:47:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:47:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:47:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.574373
2025-09-29T15:47:41.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:47:41.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:47:41.230 [DEBUG] [Thread-160287] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:47:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:47:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:47:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:47:28', tmtdew=16.13, humidity=33.26, cloud=0.0, wind=19.27, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:47:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:47:41.317 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:47:41.328 [DEBUG] [Thread-160290] [transport.py] [_log()] starting thread (client mode): 0x2b94e680
2025-09-29T15:47:41.328 [DEBUG] [Thread-160290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:41.347 [DEBUG] [Thread-160290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:47:41.347 [INFO] [Thread-160290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:41.355 [DEBUG] [Thread-160290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:41.356 [DEBUG] [Thread-160290] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:41.356 [DEBUG] [Thread-160290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:41.356 [DEBUG] [Thread-160290] [transport.py] [_log()] Compression: none
2025-09-29T15:47:41.356 [DEBUG] [Thread-160290] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:41.413 [DEBUG] [Thread-160290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:41.413 [DEBUG] [Thread-160290] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:41.414 [DEBUG] [Thread-160290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:47:41.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:47:41.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:41.473 [DEBUG] [Thread-160290] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:41.474 [DEBUG] [Thread-160290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:41.474 [DEBUG] [Thread-160290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:41.474 [DEBUG] [Thread-160290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:47:41.474 [DEBUG] [Thread-160290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:41.497 [INFO] [Thread-160290] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:41.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:47:41.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:42.486 [DEBUG] [Thread-160290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:42.486 [DEBUG] [Thread-160290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:42.533 [DEBUG] [Thread-160290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:42.533 [DEBUG] [Thread-160290] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:42.542 [DEBUG] [Thread-160290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:42.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:42.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:47:42.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:47:42.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:42.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:42.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:42.577 [DEBUG] [Thread-160290] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:44.126 [DEBUG] [Thread-160292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:47:47.195 [DEBUG] [Thread-160293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:47:52.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:47:52.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:47:52.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:47:53.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 47, 28), 16.13, 33.26, 0.0, 19.27, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:47:53.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:47:28
2025-09-29T15:47:53.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:47:53.400 [DEBUG] [Thread-160294] [transport.py] [_log()] starting thread (client mode): 0x2e3c16f0
2025-09-29T15:47:53.400 [DEBUG] [Thread-160294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:53.420 [DEBUG] [Thread-160294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:47:53.420 [INFO] [Thread-160294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:47:53.423 [DEBUG] [Thread-160294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:53.423 [DEBUG] [Thread-160294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:47:53.423 [DEBUG] [Thread-160294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] Compression: none
2025-09-29T15:47:53.424 [DEBUG] [Thread-160294] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:53.440 [DEBUG] [Thread-160294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:53.441 [DEBUG] [Thread-160294] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:53.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:47:53.442 [DEBUG] [Thread-160294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:47:53.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:53.443 [DEBUG] [Thread-160294] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:53.443 [DEBUG] [Thread-160294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:53.443 [DEBUG] [Thread-160294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:53.444 [DEBUG] [Thread-160294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:47:53.444 [DEBUG] [Thread-160294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:53.461 [INFO] [Thread-160294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:53.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:54.262 [DEBUG] [Thread-160294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:54.262 [DEBUG] [Thread-160294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:54.262 [DEBUG] [Thread-160294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:47:54.303 [DEBUG] [Thread-160294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:54.303 [DEBUG] [Thread-160294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:54.305 [DEBUG] [Thread-160294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:54.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:54.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:47:54.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:47:54.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:47:54.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:54.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:47:54.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:54.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.574373 -999.00  +16.20  10.65     37   +1.80 1 1 1 1 1   888    0 14.34 -7.68 ----- 11.3 10.7 154.8 22.4 23.7 -30.0 23.1 -29.1 25.0 -28.7 26.1 -32.3
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.574373
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:47:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:47:28', tmtdew=16.13, humidity=33.26, cloud=0.0, wind=19.27, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:47:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:47:54.324 [DEBUG] [Thread-160294] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:54.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:47:54.407 [DEBUG] [Thread-160297] [transport.py] [_log()] starting thread (client mode): 0x2e3c3e50
2025-09-29T15:47:54.407 [DEBUG] [Thread-160297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:47:54.422 [DEBUG] [Thread-160297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:47:54.422 [INFO] [Thread-160297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] client lang: <none>
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] server lang: <none>
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] kex follows: False
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] Compression: none
2025-09-29T15:47:54.430 [DEBUG] [Thread-160297] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:47:54.488 [DEBUG] [Thread-160297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:47:54.488 [DEBUG] [Thread-160297] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:47:54.488 [DEBUG] [Thread-160297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:47:54.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:47:54.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:47:54.545 [DEBUG] [Thread-160297] [transport.py] [_log()] userauth is OK
2025-09-29T15:47:54.545 [DEBUG] [Thread-160297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:47:54.545 [DEBUG] [Thread-160297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:47:54.546 [DEBUG] [Thread-160297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:47:54.546 [DEBUG] [Thread-160297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:47:54.563 [INFO] [Thread-160297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:47:54.563 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:47:54.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:47:55.542 [DEBUG] [Thread-160297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:47:55.542 [DEBUG] [Thread-160297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:47:55.590 [DEBUG] [Thread-160297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:47:55.590 [DEBUG] [Thread-160297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:47:55.598 [DEBUG] [Thread-160297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:47:55.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:47:55.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:47:55.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:47:55.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:47:55.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:47:55.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:47:55.630 [DEBUG] [Thread-160297] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:47:59.167 [DEBUG] [Thread-160299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:48:05.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:48:05.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:48:05.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:48:06.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 47, 28), 16.23, 32.76, 0.0, 21.07, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:48:06.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:47:28
2025-09-29T15:48:06.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:48:06.460 [DEBUG] [Thread-160300] [transport.py] [_log()] starting thread (client mode): 0x2e3c1750
2025-09-29T15:48:06.460 [DEBUG] [Thread-160300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:06.480 [DEBUG] [Thread-160300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:48:06.480 [INFO] [Thread-160300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:48:06.483 [DEBUG] [Thread-160300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:06.484 [DEBUG] [Thread-160300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:06.485 [DEBUG] [Thread-160300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:06.485 [DEBUG] [Thread-160300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:06.485 [DEBUG] [Thread-160300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:06.485 [DEBUG] [Thread-160300] [transport.py] [_log()] Compression: none
2025-09-29T15:48:06.485 [DEBUG] [Thread-160300] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:06.503 [DEBUG] [Thread-160300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:06.504 [DEBUG] [Thread-160300] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:06.505 [DEBUG] [Thread-160300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:48:06.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:48:06.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:06.507 [DEBUG] [Thread-160300] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:06.507 [DEBUG] [Thread-160300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:06.508 [DEBUG] [Thread-160300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:06.508 [DEBUG] [Thread-160300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:48:06.508 [DEBUG] [Thread-160300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:06.525 [INFO] [Thread-160300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:06.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:07.137 [DEBUG] [Thread-160300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:07.137 [DEBUG] [Thread-160300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:07.138 [DEBUG] [Thread-160300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:48:07.178 [DEBUG] [Thread-160300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:07.178 [DEBUG] [Thread-160300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:07.181 [DEBUG] [Thread-160300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:07.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:07.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:48:07.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:48:07.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:48:07.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:07.199 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:48:07.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.574720 -999.00  +16.10  13.00     38   +1.80 1 1 1 1 1   888    0 14.29 -9.13 ----- 12.3 13.0 165.9 14.6 23.5 -30.0 22.9 -28.8 24.8 -30.7 26.0 -31.1
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.574720
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:48:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:47:28', tmtdew=16.23, humidity=32.76, cloud=0.0, wind=21.07, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:47:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:48:07.200 [DEBUG] [Thread-160300] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:07.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:48:07.283 [DEBUG] [Thread-160303] [transport.py] [_log()] starting thread (client mode): 0x2e3767a0
2025-09-29T15:48:07.283 [DEBUG] [Thread-160303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:07.298 [DEBUG] [Thread-160303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:48:07.298 [INFO] [Thread-160303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:48:07.305 [DEBUG] [Thread-160303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] Compression: none
2025-09-29T15:48:07.306 [DEBUG] [Thread-160303] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:07.366 [DEBUG] [Thread-160303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:07.366 [DEBUG] [Thread-160303] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:07.367 [DEBUG] [Thread-160303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:48:07.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:48:07.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:07.425 [DEBUG] [Thread-160303] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:07.425 [DEBUG] [Thread-160303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:07.425 [DEBUG] [Thread-160303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:07.425 [DEBUG] [Thread-160303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:48:07.425 [DEBUG] [Thread-160303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:07.445 [INFO] [Thread-160303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:07.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:48:07.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:08.433 [DEBUG] [Thread-160303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:08.433 [DEBUG] [Thread-160303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:08.481 [DEBUG] [Thread-160303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:08.481 [DEBUG] [Thread-160303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:08.490 [DEBUG] [Thread-160303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:08.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:08.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:48:08.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:48:08.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:08.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:08.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:08.525 [DEBUG] [Thread-160303] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:14.200 [DEBUG] [Thread-160305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:48:15.771 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:48:15.773 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:48:18.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:48:18.528 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:48:18.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:48:19.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 47, 28), 16.23, 32.76, 0.0, 21.07, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:48:19.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:47:28
2025-09-29T15:48:19.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:48:19.352 [DEBUG] [Thread-160306] [transport.py] [_log()] starting thread (client mode): 0x2e3746a0
2025-09-29T15:48:19.352 [DEBUG] [Thread-160306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:19.372 [DEBUG] [Thread-160306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:48:19.372 [INFO] [Thread-160306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:48:19.375 [DEBUG] [Thread-160306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:19.376 [DEBUG] [Thread-160306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:19.377 [DEBUG] [Thread-160306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:19.377 [DEBUG] [Thread-160306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:19.377 [DEBUG] [Thread-160306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:19.377 [DEBUG] [Thread-160306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:19.377 [DEBUG] [Thread-160306] [transport.py] [_log()] Compression: none
2025-09-29T15:48:19.377 [DEBUG] [Thread-160306] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:19.394 [DEBUG] [Thread-160306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:19.394 [DEBUG] [Thread-160306] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:19.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:48:19.396 [DEBUG] [Thread-160306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:48:19.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:19.397 [DEBUG] [Thread-160306] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:19.398 [DEBUG] [Thread-160306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:19.398 [DEBUG] [Thread-160306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:19.398 [DEBUG] [Thread-160306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:48:19.398 [DEBUG] [Thread-160306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:19.421 [INFO] [Thread-160306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:19.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:20.215 [DEBUG] [Thread-160306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:20.215 [DEBUG] [Thread-160306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:20.215 [DEBUG] [Thread-160306] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:48:20.256 [DEBUG] [Thread-160306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:20.256 [DEBUG] [Thread-160306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:20.259 [DEBUG] [Thread-160306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:20.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:20.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:48:20.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:48:20.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:48:20.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:20.282 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:48:20.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:20.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:20.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:48:20.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.574720 -999.00  +16.10  13.00     38   +1.80 1 1 1 1 1   888    0 14.29 -9.13 ----- 12.3 13.0 165.9 14.6 23.5 -30.0 22.9 -28.8 24.8 -30.7 26.0 -31.1
2025-09-29T15:48:20.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:48:20.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:48:20.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.574720
2025-09-29T15:48:20.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:48:20.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:48:20.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:48:20.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:48:20.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:48:20.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:47:28', tmtdew=16.23, humidity=32.76, cloud=0.0, wind=21.07, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:47:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:48:20.285 [DEBUG] [Thread-160306] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:20.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:48:20.379 [DEBUG] [Thread-160309] [transport.py] [_log()] starting thread (client mode): 0x2e3c0ac0
2025-09-29T15:48:20.379 [DEBUG] [Thread-160309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:20.393 [DEBUG] [Thread-160309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:48:20.393 [INFO] [Thread-160309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:48:20.401 [DEBUG] [Thread-160309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:20.401 [DEBUG] [Thread-160309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] Compression: none
2025-09-29T15:48:20.402 [DEBUG] [Thread-160309] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:20.460 [DEBUG] [Thread-160309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:20.461 [DEBUG] [Thread-160309] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:20.461 [DEBUG] [Thread-160309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:48:20.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:48:20.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:20.517 [DEBUG] [Thread-160309] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:20.517 [DEBUG] [Thread-160309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:20.517 [DEBUG] [Thread-160309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:20.517 [DEBUG] [Thread-160309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:48:20.517 [DEBUG] [Thread-160309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:20.538 [INFO] [Thread-160309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:20.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:48:20.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:21.505 [DEBUG] [Thread-160309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:21.505 [DEBUG] [Thread-160309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:21.554 [DEBUG] [Thread-160309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:21.554 [DEBUG] [Thread-160309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:21.563 [DEBUG] [Thread-160309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:21.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:21.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:48:21.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:48:21.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:21.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:21.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:21.598 [DEBUG] [Thread-160309] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:29.242 [DEBUG] [Thread-160311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:48:31.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:48:31.599 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:48:31.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:48:32.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 47, 28), 16.23, 32.76, 0.0, 21.07, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:48:32.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:47:28
2025-09-29T15:48:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:48:32.452 [DEBUG] [Thread-160312] [transport.py] [_log()] starting thread (client mode): 0x2e3c0130
2025-09-29T15:48:32.452 [DEBUG] [Thread-160312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:32.473 [DEBUG] [Thread-160312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:48:32.473 [INFO] [Thread-160312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:32.476 [DEBUG] [Thread-160312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:32.477 [DEBUG] [Thread-160312] [transport.py] [_log()] Compression: none
2025-09-29T15:48:32.477 [DEBUG] [Thread-160312] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:32.491 [DEBUG] [Thread-160312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:32.492 [DEBUG] [Thread-160312] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:32.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:48:32.492 [DEBUG] [Thread-160312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:48:32.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:32.493 [DEBUG] [Thread-160312] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:32.493 [DEBUG] [Thread-160312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:32.493 [DEBUG] [Thread-160312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:32.493 [DEBUG] [Thread-160312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:48:32.493 [DEBUG] [Thread-160312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:32.502 [INFO] [Thread-160312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:32.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:33.306 [DEBUG] [Thread-160312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:33.306 [DEBUG] [Thread-160312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:33.306 [DEBUG] [Thread-160312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:48:33.347 [DEBUG] [Thread-160312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:33.347 [DEBUG] [Thread-160312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:33.349 [DEBUG] [Thread-160312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:33.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:33.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:48:33.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:48:33.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:48:33.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:33.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:48:33.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:33.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:48:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.574720 -999.00  +16.10  13.00     38   +1.80 1 1 1 1 1   888    0 14.29 -9.13 ----- 12.3 13.0 165.9 14.6 23.5 -30.0 22.9 -28.8 24.8 -30.7 26.0 -31.1
2025-09-29T15:48:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:48:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:48:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.574720
2025-09-29T15:48:33.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:48:33.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:48:33.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:48:33.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:48:33.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:48:33.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:47:28', tmtdew=16.23, humidity=32.76, cloud=0.0, wind=21.07, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:47:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:48:33.370 [DEBUG] [Thread-160312] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:33.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:48:33.454 [DEBUG] [Thread-160315] [transport.py] [_log()] starting thread (client mode): 0x30ddf7c0
2025-09-29T15:48:33.454 [DEBUG] [Thread-160315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:33.469 [DEBUG] [Thread-160315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:48:33.469 [INFO] [Thread-160315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] Compression: none
2025-09-29T15:48:33.477 [DEBUG] [Thread-160315] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:33.531 [DEBUG] [Thread-160315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:33.531 [DEBUG] [Thread-160315] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:33.531 [DEBUG] [Thread-160315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:48:33.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:48:33.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:33.588 [DEBUG] [Thread-160315] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:33.589 [DEBUG] [Thread-160315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:33.589 [DEBUG] [Thread-160315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:33.589 [DEBUG] [Thread-160315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:48:33.589 [DEBUG] [Thread-160315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:33.602 [INFO] [Thread-160315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:33.603 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:48:33.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:34.571 [DEBUG] [Thread-160315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:34.571 [DEBUG] [Thread-160315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:34.619 [DEBUG] [Thread-160315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:34.619 [DEBUG] [Thread-160315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:34.627 [DEBUG] [Thread-160315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:34.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:34.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:48:34.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:48:34.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:34.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:34.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:34.658 [DEBUG] [Thread-160315] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:44.273 [DEBUG] [Thread-160317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:48:44.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:48:44.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:48:44.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:48:45.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 48, 32), 15.96, 33.29, 0.0, 15.86, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:48:45.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:48:32
2025-09-29T15:48:45.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:48:45.494 [DEBUG] [Thread-160318] [transport.py] [_log()] starting thread (client mode): 0x2b91c520
2025-09-29T15:48:45.495 [DEBUG] [Thread-160318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:45.515 [DEBUG] [Thread-160318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:48:45.515 [INFO] [Thread-160318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] Compression: none
2025-09-29T15:48:45.519 [DEBUG] [Thread-160318] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:45.539 [DEBUG] [Thread-160318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:45.540 [DEBUG] [Thread-160318] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:45.540 [DEBUG] [Thread-160318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:48:45.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:48:45.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:45.542 [DEBUG] [Thread-160318] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:45.542 [DEBUG] [Thread-160318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:45.542 [DEBUG] [Thread-160318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:45.543 [DEBUG] [Thread-160318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:48:45.543 [DEBUG] [Thread-160318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:45.578 [INFO] [Thread-160318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:45.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:46.183 [DEBUG] [Thread-160318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:46.183 [DEBUG] [Thread-160318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:46.184 [DEBUG] [Thread-160318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:48:46.224 [DEBUG] [Thread-160318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:46.224 [DEBUG] [Thread-160318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:46.227 [DEBUG] [Thread-160318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:46.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:46.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:48:46.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:48:46.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:48:46.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:46.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:48:46.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:46.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:46.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:48:46.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.575067 -999.00  +16.10   9.58     38   +2.00 1 1 1 1 1   888    0 14.06 -11.54 ----- 11.9 9.6 143.2 19.1 23.6 -29.3 22.8 -28.7 24.9 -30.0 25.9 -31.3
2025-09-29T15:48:46.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:48:46.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:48:46.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.575067
2025-09-29T15:48:46.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:48:46.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:48:46.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:48:46.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:48:46.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:48:46.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:48:32', tmtdew=15.96, humidity=33.29, cloud=0.0, wind=15.86, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:48:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:48:46.253 [DEBUG] [Thread-160318] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:46.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:48:46.349 [DEBUG] [Thread-160321] [transport.py] [_log()] starting thread (client mode): 0x2b91f880
2025-09-29T15:48:46.349 [DEBUG] [Thread-160321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:46.365 [DEBUG] [Thread-160321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:48:46.365 [INFO] [Thread-160321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:46.373 [DEBUG] [Thread-160321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:46.374 [DEBUG] [Thread-160321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:46.374 [DEBUG] [Thread-160321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:46.374 [DEBUG] [Thread-160321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:46.374 [DEBUG] [Thread-160321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:46.374 [DEBUG] [Thread-160321] [transport.py] [_log()] Compression: none
2025-09-29T15:48:46.374 [DEBUG] [Thread-160321] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:46.433 [DEBUG] [Thread-160321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:46.434 [DEBUG] [Thread-160321] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:46.434 [DEBUG] [Thread-160321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:48:46.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:48:46.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:46.489 [DEBUG] [Thread-160321] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:46.489 [DEBUG] [Thread-160321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:46.489 [DEBUG] [Thread-160321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:46.489 [DEBUG] [Thread-160321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:48:46.489 [DEBUG] [Thread-160321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:46.508 [INFO] [Thread-160321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:46.509 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:48:46.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:47.237 [DEBUG] [Thread-160323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:48:47.504 [DEBUG] [Thread-160321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:47.504 [DEBUG] [Thread-160321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:47.553 [DEBUG] [Thread-160321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:47.553 [DEBUG] [Thread-160321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:47.565 [DEBUG] [Thread-160321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:47.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:47.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:48:47.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:48:47.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:47.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:47.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:47.607 [DEBUG] [Thread-160321] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:57.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:48:57.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:48:57.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:48:58.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 48, 32), 15.96, 33.29, 0.0, 15.86, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:48:58.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:48:32
2025-09-29T15:48:58.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:48:58.425 [DEBUG] [Thread-160324] [transport.py] [_log()] starting thread (client mode): 0x2e3dc160
2025-09-29T15:48:58.425 [DEBUG] [Thread-160324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:48:58.445 [DEBUG] [Thread-160324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:48:58.445 [INFO] [Thread-160324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:48:58.448 [DEBUG] [Thread-160324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:48:58.448 [DEBUG] [Thread-160324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:48:58.448 [DEBUG] [Thread-160324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:48:58.448 [DEBUG] [Thread-160324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] client lang: <none>
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] server lang: <none>
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] kex follows: False
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] Compression: none
2025-09-29T15:48:58.449 [DEBUG] [Thread-160324] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:48:58.466 [DEBUG] [Thread-160324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:48:58.467 [DEBUG] [Thread-160324] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:48:58.467 [DEBUG] [Thread-160324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:48:58.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:48:58.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:48:58.469 [DEBUG] [Thread-160324] [transport.py] [_log()] userauth is OK
2025-09-29T15:48:58.470 [DEBUG] [Thread-160324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:48:58.470 [DEBUG] [Thread-160324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:48:58.470 [DEBUG] [Thread-160324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:48:58.470 [DEBUG] [Thread-160324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:48:58.493 [INFO] [Thread-160324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:48:58.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:48:59.285 [DEBUG] [Thread-160324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:48:59.285 [DEBUG] [Thread-160324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:48:59.286 [DEBUG] [Thread-160324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:48:59.306 [DEBUG] [Thread-160326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:48:59.326 [DEBUG] [Thread-160324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:48:59.326 [DEBUG] [Thread-160324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:48:59.329 [DEBUG] [Thread-160324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:48:59.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:48:59.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:48:59.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:48:59.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:48:59.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:48:59.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:48:59.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:48:59.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:48:59.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:48:59.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.575067 -999.00  +16.10   9.58     38   +2.00 1 1 1 1 1   888    0 14.06 -11.54 ----- 11.9 9.6 143.2 19.1 23.6 -29.3 22.8 -28.7 24.9 -30.0 25.9 -31.3
2025-09-29T15:48:59.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:48:59.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:48:59.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.575067
2025-09-29T15:48:59.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:48:59.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:48:59.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:48:59.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:48:59.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:48:59.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:48:32', tmtdew=15.96, humidity=33.29, cloud=0.0, wind=15.86, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:48:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:48:59.353 [DEBUG] [Thread-160324] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:48:59.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:49:14.348 [DEBUG] [Thread-160328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:49:15.910 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:49:15.911 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:49:29.382 [DEBUG] [Thread-160329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:49:44.411 [DEBUG] [Thread-160330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:49:47.264 [DEBUG] [Thread-160331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:49:59.441 [DEBUG] [Thread-160332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:50:14.473 [DEBUG] [Thread-160333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:50:16.050 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:50:16.051 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:50:29.501 [DEBUG] [Thread-160334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:50:44.530 [DEBUG] [Thread-160335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:50:47.296 [DEBUG] [Thread-160336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:50:59.557 [DEBUG] [Thread-160337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:51:12.058 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T15:51:14.586 [DEBUG] [Thread-160338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:51:16.191 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:51:16.192 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:51:22.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:51:22.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:51:22.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:51:22.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 51, 12), 15.88, 33.93, 0.0, 27.68, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:51:22.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:51:12
2025-09-29T15:51:22.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:51:22.950 [DEBUG] [Thread-160339] [transport.py] [_log()] starting thread (client mode): 0x2b9cc370
2025-09-29T15:51:22.950 [DEBUG] [Thread-160339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:51:22.969 [DEBUG] [Thread-160339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:51:22.970 [INFO] [Thread-160339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:51:22.973 [DEBUG] [Thread-160339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:51:22.973 [DEBUG] [Thread-160339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:51:22.973 [DEBUG] [Thread-160339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:51:22.973 [DEBUG] [Thread-160339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:22.973 [DEBUG] [Thread-160339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:22.973 [DEBUG] [Thread-160339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:22.973 [DEBUG] [Thread-160339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:22.973 [DEBUG] [Thread-160339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] client lang: <none>
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] server lang: <none>
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] kex follows: False
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] Compression: none
2025-09-29T15:51:22.974 [DEBUG] [Thread-160339] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:51:22.994 [DEBUG] [Thread-160339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:51:22.995 [DEBUG] [Thread-160339] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:51:22.995 [DEBUG] [Thread-160339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:51:22.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:51:22.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:51:22.999 [DEBUG] [Thread-160339] [transport.py] [_log()] userauth is OK
2025-09-29T15:51:22.999 [DEBUG] [Thread-160339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:51:22.999 [DEBUG] [Thread-160339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:51:22.999 [DEBUG] [Thread-160339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:51:23.000 [DEBUG] [Thread-160339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:51:23.017 [INFO] [Thread-160339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:51:23.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:51:23.621 [DEBUG] [Thread-160339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:51:23.622 [DEBUG] [Thread-160339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:51:23.622 [DEBUG] [Thread-160339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:51:23.662 [DEBUG] [Thread-160339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:51:23.662 [DEBUG] [Thread-160339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:51:23.664 [DEBUG] [Thread-160339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:51:23.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:51:23.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:51:23.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:51:23.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:51:23.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:51:23.684 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:51:23.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:51:23.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:51:23.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:51:23.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.576803 -999.00  +15.60  24.54     39   +1.90 1 1 1 1 1   888    0 14.03 -17.74 ----- 21.8 24.5 181.2 30.4 22.8 -30.9 22.3 -36.7 24.1 -31.4 25.4 -33.7
2025-09-29T15:51:23.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:51:23.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:51:23.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.576803
2025-09-29T15:51:23.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:51:23.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:51:23.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:51:23.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:51:23.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:51:23.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:51:12', tmtdew=15.88, humidity=33.93, cloud=0.0, wind=27.68, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:50:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:51:23.686 [DEBUG] [Thread-160339] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:51:23.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:51:23.783 [DEBUG] [Thread-160342] [transport.py] [_log()] starting thread (client mode): 0x2e3c00d0
2025-09-29T15:51:23.783 [DEBUG] [Thread-160342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:51:23.798 [DEBUG] [Thread-160342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:51:23.798 [INFO] [Thread-160342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:51:23.806 [DEBUG] [Thread-160342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:51:23.806 [DEBUG] [Thread-160342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:51:23.806 [DEBUG] [Thread-160342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:51:23.806 [DEBUG] [Thread-160342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:23.806 [DEBUG] [Thread-160342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:23.806 [DEBUG] [Thread-160342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:23.806 [DEBUG] [Thread-160342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] client lang: <none>
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] server lang: <none>
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] kex follows: False
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:51:23.807 [DEBUG] [Thread-160342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:51:23.808 [DEBUG] [Thread-160342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:51:23.808 [DEBUG] [Thread-160342] [transport.py] [_log()] Compression: none
2025-09-29T15:51:23.808 [DEBUG] [Thread-160342] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:51:23.862 [DEBUG] [Thread-160342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:51:23.863 [DEBUG] [Thread-160342] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:51:23.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:51:23.864 [DEBUG] [Thread-160342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:51:23.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:51:23.923 [DEBUG] [Thread-160342] [transport.py] [_log()] userauth is OK
2025-09-29T15:51:23.923 [DEBUG] [Thread-160342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:51:23.923 [DEBUG] [Thread-160342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:51:23.923 [DEBUG] [Thread-160342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:51:23.924 [DEBUG] [Thread-160342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:51:23.943 [INFO] [Thread-160342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:51:23.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:51:23.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:51:24.917 [DEBUG] [Thread-160342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:51:24.917 [DEBUG] [Thread-160342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:51:24.965 [DEBUG] [Thread-160342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:51:24.965 [DEBUG] [Thread-160342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:51:24.974 [DEBUG] [Thread-160342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:51:24.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:51:24.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:51:24.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:51:25.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:51:25.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:51:25.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:51:25.008 [DEBUG] [Thread-160342] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:51:29.617 [DEBUG] [Thread-160344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:51:35.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:51:35.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:51:35.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:51:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 51, 12), 15.88, 33.93, 0.0, 27.68, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:51:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:51:12
2025-09-29T15:51:35.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:51:35.886 [DEBUG] [Thread-160345] [transport.py] [_log()] starting thread (client mode): 0x30ddeb90
2025-09-29T15:51:35.887 [DEBUG] [Thread-160345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:51:35.910 [DEBUG] [Thread-160345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:51:35.910 [INFO] [Thread-160345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:51:35.913 [DEBUG] [Thread-160345] [transport.py] [_log()] client lang: <none>
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] server lang: <none>
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] kex follows: False
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] Compression: none
2025-09-29T15:51:35.914 [DEBUG] [Thread-160345] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:51:35.931 [DEBUG] [Thread-160345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:51:35.931 [DEBUG] [Thread-160345] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:51:35.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:51:35.941 [DEBUG] [Thread-160345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:51:35.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:51:35.943 [DEBUG] [Thread-160345] [transport.py] [_log()] userauth is OK
2025-09-29T15:51:35.943 [DEBUG] [Thread-160345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:51:35.943 [DEBUG] [Thread-160345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:51:35.943 [DEBUG] [Thread-160345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:51:35.944 [DEBUG] [Thread-160345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:51:35.967 [INFO] [Thread-160345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:51:35.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:51:36.592 [DEBUG] [Thread-160345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:51:36.593 [DEBUG] [Thread-160345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:51:36.593 [DEBUG] [Thread-160345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:51:36.633 [DEBUG] [Thread-160345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:51:36.634 [DEBUG] [Thread-160345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:51:36.637 [DEBUG] [Thread-160345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:51:36.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:51:36.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:51:36.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:51:36.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:51:36.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:51:36.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:51:36.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:51:36.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:51:36.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:51:36.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.577150 -999.00  +15.50  16.80     40   +1.90 1 1 1 1 1   888    0 13.75 -20.28 ----- 15.6 16.8 181.6 25.6 22.7 -30.2 21.7 -34.5 24.1 -29.9 25.1 -32.8
2025-09-29T15:51:36.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:51:36.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:51:36.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.577150
2025-09-29T15:51:36.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:51:36.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:51:36.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:51:36.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:51:36.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:51:36.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:51:12', tmtdew=15.88, humidity=33.93, cloud=0.0, wind=27.68, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:51:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:51:36.662 [DEBUG] [Thread-160345] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:51:36.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:51:36.756 [DEBUG] [Thread-160348] [transport.py] [_log()] starting thread (client mode): 0x2e3758d0
2025-09-29T15:51:36.756 [DEBUG] [Thread-160348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:51:36.772 [DEBUG] [Thread-160348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:51:36.772 [INFO] [Thread-160348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:51:36.780 [DEBUG] [Thread-160348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:51:36.780 [DEBUG] [Thread-160348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:51:36.780 [DEBUG] [Thread-160348] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:51:36.780 [DEBUG] [Thread-160348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:36.780 [DEBUG] [Thread-160348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] client lang: <none>
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] server lang: <none>
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] kex follows: False
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] Compression: none
2025-09-29T15:51:36.781 [DEBUG] [Thread-160348] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:51:36.838 [DEBUG] [Thread-160348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:51:36.839 [DEBUG] [Thread-160348] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:51:36.839 [DEBUG] [Thread-160348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:51:36.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:51:36.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:51:36.895 [DEBUG] [Thread-160348] [transport.py] [_log()] userauth is OK
2025-09-29T15:51:36.895 [DEBUG] [Thread-160348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:51:36.895 [DEBUG] [Thread-160348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:51:36.895 [DEBUG] [Thread-160348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:51:36.895 [DEBUG] [Thread-160348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:51:36.908 [INFO] [Thread-160348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:51:36.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:51:36.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:51:37.862 [DEBUG] [Thread-160348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:51:37.862 [DEBUG] [Thread-160348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:51:37.909 [DEBUG] [Thread-160348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:51:37.909 [DEBUG] [Thread-160348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:51:37.918 [DEBUG] [Thread-160348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:51:37.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:51:37.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:51:37.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:51:37.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:51:37.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:51:37.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:51:37.952 [DEBUG] [Thread-160348] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:51:44.661 [DEBUG] [Thread-160350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:51:47.327 [DEBUG] [Thread-160351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:51:47.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:51:47.955 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:51:47.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:51:48.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 51, 44), 16.02, 33.48, 0.0, 15.14, 15.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:51:48.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:51:44
2025-09-29T15:51:48.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:51:48.825 [DEBUG] [Thread-160352] [transport.py] [_log()] starting thread (client mode): 0x2e3771c0
2025-09-29T15:51:48.825 [DEBUG] [Thread-160352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:51:48.847 [DEBUG] [Thread-160352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:51:48.847 [INFO] [Thread-160352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:51:48.852 [DEBUG] [Thread-160352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:51:48.852 [DEBUG] [Thread-160352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:51:48.852 [DEBUG] [Thread-160352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] client lang: <none>
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] server lang: <none>
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] kex follows: False
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] Compression: none
2025-09-29T15:51:48.853 [DEBUG] [Thread-160352] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:51:48.870 [DEBUG] [Thread-160352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:51:48.870 [DEBUG] [Thread-160352] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:51:48.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:51:48.871 [DEBUG] [Thread-160352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:51:48.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:51:48.874 [DEBUG] [Thread-160352] [transport.py] [_log()] userauth is OK
2025-09-29T15:51:48.874 [DEBUG] [Thread-160352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:51:48.874 [DEBUG] [Thread-160352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:51:48.874 [DEBUG] [Thread-160352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:51:48.874 [DEBUG] [Thread-160352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:51:48.896 [INFO] [Thread-160352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:51:48.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:51:49.551 [DEBUG] [Thread-160352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:51:49.551 [DEBUG] [Thread-160352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:51:49.551 [DEBUG] [Thread-160352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:51:49.593 [DEBUG] [Thread-160352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:51:49.593 [DEBUG] [Thread-160352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:51:49.596 [DEBUG] [Thread-160352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:51:49.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:51:49.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:51:49.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:51:49.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:51:49.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:51:49.619 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:51:49.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:51:49.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:51:49.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:51:49.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.577150 -999.00  +15.50  16.80     40   +1.90 1 1 1 1 1   888    0 13.75 -20.28 ----- 15.6 16.8 181.6 25.6 22.7 -30.2 21.7 -34.5 24.1 -29.9 25.1 -32.8
2025-09-29T15:51:49.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:51:49.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:51:49.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.577150
2025-09-29T15:51:49.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:51:49.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:51:49.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:51:49.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:51:49.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:51:49.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:51:44', tmtdew=16.02, humidity=33.48, cloud=0.0, wind=15.14, temperature=15.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:51:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:51:49.621 [DEBUG] [Thread-160352] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:51:49.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:51:49.713 [DEBUG] [Thread-160355] [transport.py] [_log()] starting thread (client mode): 0x2b91e8c0
2025-09-29T15:51:49.713 [DEBUG] [Thread-160355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:51:49.728 [DEBUG] [Thread-160355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:51:49.728 [INFO] [Thread-160355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:51:49.736 [DEBUG] [Thread-160355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:51:49.736 [DEBUG] [Thread-160355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:51:49.736 [DEBUG] [Thread-160355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] client lang: <none>
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] server lang: <none>
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] kex follows: False
2025-09-29T15:51:49.737 [DEBUG] [Thread-160355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:51:49.738 [DEBUG] [Thread-160355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:51:49.738 [DEBUG] [Thread-160355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:51:49.738 [DEBUG] [Thread-160355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:51:49.738 [DEBUG] [Thread-160355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:51:49.738 [DEBUG] [Thread-160355] [transport.py] [_log()] Compression: none
2025-09-29T15:51:49.738 [DEBUG] [Thread-160355] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:51:49.795 [DEBUG] [Thread-160355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:51:49.795 [DEBUG] [Thread-160355] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:51:49.796 [DEBUG] [Thread-160355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:51:49.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:51:49.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:51:49.850 [DEBUG] [Thread-160355] [transport.py] [_log()] userauth is OK
2025-09-29T15:51:49.850 [DEBUG] [Thread-160355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:51:49.851 [DEBUG] [Thread-160355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:51:49.851 [DEBUG] [Thread-160355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:51:49.851 [DEBUG] [Thread-160355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:51:49.868 [INFO] [Thread-160355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:51:49.869 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:51:49.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:51:50.875 [DEBUG] [Thread-160355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:51:50.875 [DEBUG] [Thread-160355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:51:50.923 [DEBUG] [Thread-160355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:51:50.923 [DEBUG] [Thread-160355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:51:50.932 [DEBUG] [Thread-160355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:51:50.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:51:50.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:51:50.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:51:50.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:51:50.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:51:50.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:51:50.964 [DEBUG] [Thread-160355] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:51:59.697 [DEBUG] [Thread-160357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:52:00.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:52:00.966 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:52:00.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:52:01.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 51, 44), 16.02, 33.48, 0.0, 15.14, 15.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:52:01.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:51:44
2025-09-29T15:52:01.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:52:01.828 [DEBUG] [Thread-160358] [transport.py] [_log()] starting thread (client mode): 0x2e3c03d0
2025-09-29T15:52:01.828 [DEBUG] [Thread-160358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:01.849 [DEBUG] [Thread-160358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:52:01.849 [INFO] [Thread-160358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:52:01.852 [DEBUG] [Thread-160358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:01.852 [DEBUG] [Thread-160358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:52:01.852 [DEBUG] [Thread-160358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:01.852 [DEBUG] [Thread-160358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:01.852 [DEBUG] [Thread-160358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:01.852 [DEBUG] [Thread-160358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] Compression: none
2025-09-29T15:52:01.853 [DEBUG] [Thread-160358] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:01.871 [DEBUG] [Thread-160358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:01.872 [DEBUG] [Thread-160358] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:01.872 [DEBUG] [Thread-160358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:52:01.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:52:01.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:01.874 [DEBUG] [Thread-160358] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:01.874 [DEBUG] [Thread-160358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:01.875 [DEBUG] [Thread-160358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:01.875 [DEBUG] [Thread-160358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:52:01.875 [DEBUG] [Thread-160358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:01.910 [INFO] [Thread-160358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:01.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:02.552 [DEBUG] [Thread-160358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:02.552 [DEBUG] [Thread-160358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:02.552 [DEBUG] [Thread-160358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:52:02.593 [DEBUG] [Thread-160358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:02.594 [DEBUG] [Thread-160358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:02.596 [DEBUG] [Thread-160358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:02.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:02.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:52:02.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:52:02.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:52:02.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:02.618 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:52:02.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:02.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:02.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:52:02.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.577498 -999.00  +15.30   9.78     40   +1.80 1 1 1 1 1   888    0 13.81 -21.77 ----- 8.9 9.8 176.4 28.8 22.6 -29.4 21.7 -33.8 24.0 -28.0 25.0 -33.3
2025-09-29T15:52:02.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:52:02.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:52:02.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.577498
2025-09-29T15:52:02.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:52:02.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:52:02.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:52:02.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:52:02.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:52:02.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:51:44', tmtdew=16.02, humidity=33.48, cloud=0.0, wind=15.14, temperature=15.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:51:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:52:02.621 [DEBUG] [Thread-160358] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:02.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:52:02.715 [DEBUG] [Thread-160361] [transport.py] [_log()] starting thread (client mode): 0x2e3c14b0
2025-09-29T15:52:02.715 [DEBUG] [Thread-160361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:02.730 [DEBUG] [Thread-160361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:52:02.730 [INFO] [Thread-160361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:52:02.738 [DEBUG] [Thread-160361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:02.738 [DEBUG] [Thread-160361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:52:02.738 [DEBUG] [Thread-160361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:02.738 [DEBUG] [Thread-160361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:02.738 [DEBUG] [Thread-160361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:02.738 [DEBUG] [Thread-160361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:02.738 [DEBUG] [Thread-160361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:02.739 [DEBUG] [Thread-160361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:02.740 [DEBUG] [Thread-160361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:02.740 [DEBUG] [Thread-160361] [transport.py] [_log()] Compression: none
2025-09-29T15:52:02.740 [DEBUG] [Thread-160361] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:02.795 [DEBUG] [Thread-160361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:02.796 [DEBUG] [Thread-160361] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:02.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:52:02.797 [DEBUG] [Thread-160361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:52:02.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:02.850 [DEBUG] [Thread-160361] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:02.851 [DEBUG] [Thread-160361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:02.851 [DEBUG] [Thread-160361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:02.851 [DEBUG] [Thread-160361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:52:02.851 [DEBUG] [Thread-160361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:02.869 [INFO] [Thread-160361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:02.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:52:02.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:03.878 [DEBUG] [Thread-160361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:03.878 [DEBUG] [Thread-160361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:03.926 [DEBUG] [Thread-160361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:03.927 [DEBUG] [Thread-160361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:03.935 [DEBUG] [Thread-160361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:03.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:03.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:52:03.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:52:03.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:03.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:03.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:03.970 [DEBUG] [Thread-160361] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:13.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:52:13.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:52:13.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:52:14.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 51, 44), 16.02, 33.48, 0.0, 15.14, 15.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:52:14.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:51:44
2025-09-29T15:52:14.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:52:14.739 [DEBUG] [Thread-160363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:52:14.846 [DEBUG] [Thread-160364] [transport.py] [_log()] starting thread (client mode): 0x2e3fb430
2025-09-29T15:52:14.846 [DEBUG] [Thread-160364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:14.866 [DEBUG] [Thread-160364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:52:14.866 [INFO] [Thread-160364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:52:14.870 [DEBUG] [Thread-160364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:14.870 [DEBUG] [Thread-160364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:52:14.870 [DEBUG] [Thread-160364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:14.870 [DEBUG] [Thread-160364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:14.870 [DEBUG] [Thread-160364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:14.870 [DEBUG] [Thread-160364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:14.870 [DEBUG] [Thread-160364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] Compression: none
2025-09-29T15:52:14.871 [DEBUG] [Thread-160364] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:14.885 [DEBUG] [Thread-160364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:14.886 [DEBUG] [Thread-160364] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:14.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:52:14.887 [DEBUG] [Thread-160364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:52:14.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:14.889 [DEBUG] [Thread-160364] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:14.889 [DEBUG] [Thread-160364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:14.889 [DEBUG] [Thread-160364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:14.890 [DEBUG] [Thread-160364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:52:14.890 [DEBUG] [Thread-160364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:14.915 [INFO] [Thread-160364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:14.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:15.583 [DEBUG] [Thread-160364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:15.583 [DEBUG] [Thread-160364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:15.584 [DEBUG] [Thread-160364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:52:15.624 [DEBUG] [Thread-160364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:15.624 [DEBUG] [Thread-160364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:15.627 [DEBUG] [Thread-160364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:15.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:15.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:52:15.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:52:15.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:52:15.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:15.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:52:15.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:15.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:15.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:52:15.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.577498 -999.00  +15.30   9.78     40   +1.80 1 1 1 1 1   888    0 13.81 -21.77 ----- 8.9 9.8 176.4 28.8 22.6 -29.4 21.7 -33.8 24.0 -28.0 25.0 -33.3
2025-09-29T15:52:15.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:52:15.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:52:15.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.577498
2025-09-29T15:52:15.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:52:15.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:52:15.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:52:15.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:52:15.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:52:15.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:51:44', tmtdew=16.02, humidity=33.48, cloud=0.0, wind=15.14, temperature=15.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:51:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:52:15.653 [DEBUG] [Thread-160364] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:15.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:52:15.749 [DEBUG] [Thread-160367] [transport.py] [_log()] starting thread (client mode): 0x2b91f070
2025-09-29T15:52:15.749 [DEBUG] [Thread-160367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:15.763 [DEBUG] [Thread-160367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:52:15.763 [INFO] [Thread-160367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:15.771 [DEBUG] [Thread-160367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:15.772 [DEBUG] [Thread-160367] [transport.py] [_log()] Compression: none
2025-09-29T15:52:15.772 [DEBUG] [Thread-160367] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:15.830 [DEBUG] [Thread-160367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:15.830 [DEBUG] [Thread-160367] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:15.831 [DEBUG] [Thread-160367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:52:15.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:52:15.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:15.890 [DEBUG] [Thread-160367] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:15.890 [DEBUG] [Thread-160367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:15.890 [DEBUG] [Thread-160367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:15.890 [DEBUG] [Thread-160367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:52:15.890 [DEBUG] [Thread-160367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:15.904 [INFO] [Thread-160367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:15.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:52:15.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:16.333 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:52:16.334 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:52:16.859 [DEBUG] [Thread-160367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:16.859 [DEBUG] [Thread-160367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:16.907 [DEBUG] [Thread-160367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:16.907 [DEBUG] [Thread-160367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:16.915 [DEBUG] [Thread-160367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:16.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:16.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:52:16.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:52:16.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:16.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:16.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:16.946 [DEBUG] [Thread-160367] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:26.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:52:26.949 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:52:26.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:52:27.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 52, 16), 15.87, 33.76, 0.0, 15.46, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:52:27.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:52:16
2025-09-29T15:52:27.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:52:27.804 [DEBUG] [Thread-160369] [transport.py] [_log()] starting thread (client mode): 0x2e3753f0
2025-09-29T15:52:27.804 [DEBUG] [Thread-160369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:27.825 [DEBUG] [Thread-160369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:52:27.825 [INFO] [Thread-160369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:52:27.828 [DEBUG] [Thread-160369] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:27.828 [DEBUG] [Thread-160369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:52:27.828 [DEBUG] [Thread-160369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:27.828 [DEBUG] [Thread-160369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:27.828 [DEBUG] [Thread-160369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:27.828 [DEBUG] [Thread-160369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:27.828 [DEBUG] [Thread-160369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] Compression: none
2025-09-29T15:52:27.829 [DEBUG] [Thread-160369] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:27.847 [DEBUG] [Thread-160369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:27.847 [DEBUG] [Thread-160369] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:27.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:52:27.848 [DEBUG] [Thread-160369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:52:27.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:27.850 [DEBUG] [Thread-160369] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:27.850 [DEBUG] [Thread-160369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:27.851 [DEBUG] [Thread-160369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:27.851 [DEBUG] [Thread-160369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:52:27.851 [DEBUG] [Thread-160369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:27.874 [INFO] [Thread-160369] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:27.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:28.501 [DEBUG] [Thread-160369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:28.501 [DEBUG] [Thread-160369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:28.501 [DEBUG] [Thread-160369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:52:28.542 [DEBUG] [Thread-160369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:28.542 [DEBUG] [Thread-160369] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:28.545 [DEBUG] [Thread-160369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:28.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:28.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:52:28.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:52:28.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:52:28.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:28.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:52:28.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:28.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:28.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:52:28.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.577498 -999.00  +15.30   9.78     40   +1.80 1 1 1 1 1   888    0 13.81 -21.77 ----- 8.9 9.8 176.4 28.8 22.6 -29.4 21.7 -33.8 24.0 -28.0 25.0 -33.3
2025-09-29T15:52:28.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:52:28.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:52:28.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.577498
2025-09-29T15:52:28.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:52:28.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:52:28.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:52:28.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:52:28.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:52:28.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:52:16', tmtdew=15.87, humidity=33.76, cloud=0.0, wind=15.46, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:51:35.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:52:28.570 [DEBUG] [Thread-160369] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:28.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:52:28.663 [DEBUG] [Thread-160372] [transport.py] [_log()] starting thread (client mode): 0x2b91fe20
2025-09-29T15:52:28.664 [DEBUG] [Thread-160372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:28.678 [DEBUG] [Thread-160372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:52:28.678 [INFO] [Thread-160372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:52:28.686 [DEBUG] [Thread-160372] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:28.686 [DEBUG] [Thread-160372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:52:28.686 [DEBUG] [Thread-160372] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:28.686 [DEBUG] [Thread-160372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:28.687 [DEBUG] [Thread-160372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:28.688 [DEBUG] [Thread-160372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:28.688 [DEBUG] [Thread-160372] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:28.688 [DEBUG] [Thread-160372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:28.688 [DEBUG] [Thread-160372] [transport.py] [_log()] Compression: none
2025-09-29T15:52:28.688 [DEBUG] [Thread-160372] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:28.750 [DEBUG] [Thread-160372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:28.751 [DEBUG] [Thread-160372] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:28.751 [DEBUG] [Thread-160372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:52:28.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:52:28.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:28.806 [DEBUG] [Thread-160372] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:28.807 [DEBUG] [Thread-160372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:28.807 [DEBUG] [Thread-160372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:28.807 [DEBUG] [Thread-160372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:52:28.807 [DEBUG] [Thread-160372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:28.826 [INFO] [Thread-160372] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:28.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:52:28.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:29.777 [DEBUG] [Thread-160374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:52:29.778 [DEBUG] [Thread-160372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:29.783 [DEBUG] [Thread-160372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:29.826 [DEBUG] [Thread-160372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:29.826 [DEBUG] [Thread-160372] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:29.835 [DEBUG] [Thread-160372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:29.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:29.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:52:29.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:52:29.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:29.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:29.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:29.869 [DEBUG] [Thread-160372] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:39.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:52:39.872 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:52:39.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:52:40.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 52, 16), 15.87, 33.76, 0.0, 15.46, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:52:40.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:52:16
2025-09-29T15:52:40.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:52:40.757 [DEBUG] [Thread-160375] [transport.py] [_log()] starting thread (client mode): 0x2e3614e0
2025-09-29T15:52:40.757 [DEBUG] [Thread-160375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:40.779 [DEBUG] [Thread-160375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:52:40.779 [INFO] [Thread-160375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:40.782 [DEBUG] [Thread-160375] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] Compression: none
2025-09-29T15:52:40.783 [DEBUG] [Thread-160375] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:40.800 [DEBUG] [Thread-160375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:40.800 [DEBUG] [Thread-160375] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:40.801 [DEBUG] [Thread-160375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:52:40.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:52:40.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:40.803 [DEBUG] [Thread-160375] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:40.803 [DEBUG] [Thread-160375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:40.803 [DEBUG] [Thread-160375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:40.803 [DEBUG] [Thread-160375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:52:40.803 [DEBUG] [Thread-160375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:40.827 [INFO] [Thread-160375] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:40.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:41.433 [DEBUG] [Thread-160375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:41.434 [DEBUG] [Thread-160375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:41.434 [DEBUG] [Thread-160375] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:52:41.474 [DEBUG] [Thread-160375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:41.475 [DEBUG] [Thread-160375] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:41.478 [DEBUG] [Thread-160375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:41.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:41.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:52:41.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:52:41.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:52:41.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:41.501 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:52:41.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:41.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:41.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:52:41.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.577845 -999.00  +15.40  12.36     40   +2.10 1 1 1 1 1   888    0 13.66 -24.78 ----- 14.3 12.4 184.2 16.2 22.6 -29.5 21.6 -30.0 24.0 -28.9 24.9 -31.1
2025-09-29T15:52:41.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:52:41.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:52:41.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.577845
2025-09-29T15:52:41.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:52:41.503 [DEBUG] [Thread-160375] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:41.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:52:41.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:52:41.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:52:41.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:52:41.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:52:16', tmtdew=15.87, humidity=33.76, cloud=0.0, wind=15.46, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:52:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:52:41.589 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:52:41.603 [DEBUG] [Thread-160378] [transport.py] [_log()] starting thread (client mode): 0x2e3c14b0
2025-09-29T15:52:41.603 [DEBUG] [Thread-160378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:41.618 [DEBUG] [Thread-160378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:52:41.618 [INFO] [Thread-160378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:52:41.625 [DEBUG] [Thread-160378] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:41.626 [DEBUG] [Thread-160378] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:41.627 [DEBUG] [Thread-160378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:41.627 [DEBUG] [Thread-160378] [transport.py] [_log()] Compression: none
2025-09-29T15:52:41.627 [DEBUG] [Thread-160378] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:41.682 [DEBUG] [Thread-160378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:41.682 [DEBUG] [Thread-160378] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:41.683 [DEBUG] [Thread-160378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:52:41.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:52:41.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:41.738 [DEBUG] [Thread-160378] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:41.738 [DEBUG] [Thread-160378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:41.738 [DEBUG] [Thread-160378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:41.738 [DEBUG] [Thread-160378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:52:41.739 [DEBUG] [Thread-160378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:41.757 [INFO] [Thread-160378] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:41.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:52:41.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:42.740 [DEBUG] [Thread-160378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:42.740 [DEBUG] [Thread-160378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:42.788 [DEBUG] [Thread-160378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:42.788 [DEBUG] [Thread-160378] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:42.797 [DEBUG] [Thread-160378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:42.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:42.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:52:42.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:52:42.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:42.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:42.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:42.831 [DEBUG] [Thread-160378] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:44.828 [DEBUG] [Thread-160380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:52:47.374 [DEBUG] [Thread-160381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:52:52.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:52:52.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:52:52.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:52:53.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 52, 47), 15.26, 35.16, 0.0, 15.79, 15.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:52:53.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:52:47
2025-09-29T15:52:53.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:52:53.714 [DEBUG] [Thread-160382] [transport.py] [_log()] starting thread (client mode): 0x2e3fa2c0
2025-09-29T15:52:53.714 [DEBUG] [Thread-160382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:53.733 [DEBUG] [Thread-160382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:52:53.733 [INFO] [Thread-160382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] Compression: none
2025-09-29T15:52:53.737 [DEBUG] [Thread-160382] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:53.754 [DEBUG] [Thread-160382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:53.754 [DEBUG] [Thread-160382] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:53.754 [DEBUG] [Thread-160382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:52:53.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:52:53.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:53.756 [DEBUG] [Thread-160382] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:53.756 [DEBUG] [Thread-160382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:53.756 [DEBUG] [Thread-160382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:53.756 [DEBUG] [Thread-160382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:52:53.756 [DEBUG] [Thread-160382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:53.774 [INFO] [Thread-160382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:53.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:54.410 [DEBUG] [Thread-160382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:54.410 [DEBUG] [Thread-160382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:54.411 [DEBUG] [Thread-160382] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:52:54.451 [DEBUG] [Thread-160382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:54.452 [DEBUG] [Thread-160382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:54.455 [DEBUG] [Thread-160382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:54.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:54.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:52:54.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:52:54.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:52:54.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:54.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:52:54.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:54.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:52:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.577845 -999.00  +15.40  12.36     40   +2.10 1 1 1 1 1   888    0 13.66 -24.78 ----- 14.3 12.4 184.2 16.2 22.6 -29.5 21.6 -30.0 24.0 -28.9 24.9 -31.1
2025-09-29T15:52:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:52:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:52:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.577845
2025-09-29T15:52:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:52:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:52:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:52:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:52:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:52:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:52:47', tmtdew=15.26, humidity=35.16, cloud=0.0, wind=15.79, temperature=15.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:52:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:52:54.482 [DEBUG] [Thread-160382] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:54.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:52:54.577 [DEBUG] [Thread-160385] [transport.py] [_log()] starting thread (client mode): 0x2e3f8ee0
2025-09-29T15:52:54.577 [DEBUG] [Thread-160385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:52:54.592 [DEBUG] [Thread-160385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:52:54.592 [INFO] [Thread-160385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:52:54.599 [DEBUG] [Thread-160385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:52:54.599 [DEBUG] [Thread-160385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] client lang: <none>
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] server lang: <none>
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] kex follows: False
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] Compression: none
2025-09-29T15:52:54.600 [DEBUG] [Thread-160385] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:52:54.657 [DEBUG] [Thread-160385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:52:54.658 [DEBUG] [Thread-160385] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:52:54.658 [DEBUG] [Thread-160385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:52:54.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:52:54.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:52:54.714 [DEBUG] [Thread-160385] [transport.py] [_log()] userauth is OK
2025-09-29T15:52:54.714 [DEBUG] [Thread-160385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:52:54.714 [DEBUG] [Thread-160385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:52:54.714 [DEBUG] [Thread-160385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:52:54.715 [DEBUG] [Thread-160385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:52:54.734 [INFO] [Thread-160385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:52:54.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:52:54.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:52:55.713 [DEBUG] [Thread-160385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:52:55.713 [DEBUG] [Thread-160385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:52:55.761 [DEBUG] [Thread-160385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:52:55.761 [DEBUG] [Thread-160385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:52:55.771 [DEBUG] [Thread-160385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:52:55.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:52:55.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:52:55.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:52:55.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:52:55.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:52:55.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:52:55.805 [DEBUG] [Thread-160385] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:52:59.869 [DEBUG] [Thread-160387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:53:05.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:53:05.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:53:05.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:53:06.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 52, 47), 15.26, 35.16, 0.0, 15.79, 15.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:53:06.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:52:47
2025-09-29T15:53:06.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:53:06.667 [DEBUG] [Thread-160388] [transport.py] [_log()] starting thread (client mode): 0x2e3f9fc0
2025-09-29T15:53:06.667 [DEBUG] [Thread-160388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:06.686 [DEBUG] [Thread-160388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:53:06.686 [INFO] [Thread-160388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:53:06.689 [DEBUG] [Thread-160388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:06.689 [DEBUG] [Thread-160388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:53:06.689 [DEBUG] [Thread-160388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:06.689 [DEBUG] [Thread-160388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] Compression: none
2025-09-29T15:53:06.690 [DEBUG] [Thread-160388] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:06.707 [DEBUG] [Thread-160388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:06.707 [DEBUG] [Thread-160388] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:06.708 [DEBUG] [Thread-160388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:53:06.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:53:06.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:06.710 [DEBUG] [Thread-160388] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:06.710 [DEBUG] [Thread-160388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:06.710 [DEBUG] [Thread-160388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:06.710 [DEBUG] [Thread-160388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:53:06.710 [DEBUG] [Thread-160388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:06.732 [INFO] [Thread-160388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:06.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:07.385 [DEBUG] [Thread-160388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:07.386 [DEBUG] [Thread-160388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:07.386 [DEBUG] [Thread-160388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:53:07.426 [DEBUG] [Thread-160388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:07.426 [DEBUG] [Thread-160388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:07.429 [DEBUG] [Thread-160388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:07.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:07.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:53:07.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:53:07.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:53:07.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:07.454 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:53:07.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:07.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:07.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:53:07.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.578192 -999.00  +15.60  11.29     41   +2.40 1 1 1 1 1   888    0 13.65 -29.71 ----- 13.9 11.3 166.6 20.9 22.6 -28.1 21.6 -31.4 24.0 -28.4 24.9 -30.2
2025-09-29T15:53:07.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:53:07.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:53:07.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.578192
2025-09-29T15:53:07.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:53:07.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:53:07.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:53:07.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:53:07.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:53:07.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:52:47', tmtdew=15.26, humidity=35.16, cloud=0.0, wind=15.79, temperature=15.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:52:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:53:07.457 [DEBUG] [Thread-160388] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:07.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:53:07.554 [DEBUG] [Thread-160391] [transport.py] [_log()] starting thread (client mode): 0x2b91dae0
2025-09-29T15:53:07.554 [DEBUG] [Thread-160391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:07.569 [DEBUG] [Thread-160391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:53:07.569 [INFO] [Thread-160391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:53:07.577 [DEBUG] [Thread-160391] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:07.577 [DEBUG] [Thread-160391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:53:07.577 [DEBUG] [Thread-160391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:07.578 [DEBUG] [Thread-160391] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:07.579 [DEBUG] [Thread-160391] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:07.579 [DEBUG] [Thread-160391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:07.579 [DEBUG] [Thread-160391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:07.579 [DEBUG] [Thread-160391] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:07.579 [DEBUG] [Thread-160391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:07.579 [DEBUG] [Thread-160391] [transport.py] [_log()] Compression: none
2025-09-29T15:53:07.579 [DEBUG] [Thread-160391] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:07.634 [DEBUG] [Thread-160391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:07.635 [DEBUG] [Thread-160391] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:07.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:53:07.637 [DEBUG] [Thread-160391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:53:07.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:07.690 [DEBUG] [Thread-160391] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:07.690 [DEBUG] [Thread-160391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:07.690 [DEBUG] [Thread-160391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:07.690 [DEBUG] [Thread-160391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:53:07.691 [DEBUG] [Thread-160391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:07.714 [INFO] [Thread-160391] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:07.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:53:07.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:08.659 [DEBUG] [Thread-160391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:08.659 [DEBUG] [Thread-160391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:08.707 [DEBUG] [Thread-160391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:08.707 [DEBUG] [Thread-160391] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:08.716 [DEBUG] [Thread-160391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:08.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:08.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:53:08.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:53:08.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:08.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:08.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:08.750 [DEBUG] [Thread-160391] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:14.905 [DEBUG] [Thread-160393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:53:16.472 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:53:16.474 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:53:18.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:53:18.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:53:18.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:53:19.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 52, 47), 15.26, 35.16, 0.0, 15.79, 15.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:53:19.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:52:47
2025-09-29T15:53:19.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:53:19.629 [DEBUG] [Thread-160394] [transport.py] [_log()] starting thread (client mode): 0x2e362c50
2025-09-29T15:53:19.630 [DEBUG] [Thread-160394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:19.649 [DEBUG] [Thread-160394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:53:19.650 [INFO] [Thread-160394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:19.653 [DEBUG] [Thread-160394] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:19.654 [DEBUG] [Thread-160394] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:19.654 [DEBUG] [Thread-160394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:19.654 [DEBUG] [Thread-160394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:19.654 [DEBUG] [Thread-160394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:19.654 [DEBUG] [Thread-160394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:19.654 [DEBUG] [Thread-160394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:19.654 [DEBUG] [Thread-160394] [transport.py] [_log()] Compression: none
2025-09-29T15:53:19.654 [DEBUG] [Thread-160394] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:19.672 [DEBUG] [Thread-160394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:19.672 [DEBUG] [Thread-160394] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:19.673 [DEBUG] [Thread-160394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:53:19.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:53:19.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:19.675 [DEBUG] [Thread-160394] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:19.675 [DEBUG] [Thread-160394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:19.675 [DEBUG] [Thread-160394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:19.675 [DEBUG] [Thread-160394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:53:19.676 [DEBUG] [Thread-160394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:19.699 [INFO] [Thread-160394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:19.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:20.357 [DEBUG] [Thread-160394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:20.357 [DEBUG] [Thread-160394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:20.357 [DEBUG] [Thread-160394] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:53:20.398 [DEBUG] [Thread-160394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:20.398 [DEBUG] [Thread-160394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:20.401 [DEBUG] [Thread-160394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:20.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:20.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:53:20.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:53:20.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:53:20.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:20.417 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:53:20.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.578192 -999.00  +15.60  11.29     41   +2.40 1 1 1 1 1   888    0 13.65 -29.71 ----- 13.9 11.3 166.6 20.9 22.6 -28.1 21.6 -31.4 24.0 -28.4 24.9 -30.2
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.578192
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:53:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:53:20.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:52:47', tmtdew=15.26, humidity=35.16, cloud=0.0, wind=15.79, temperature=15.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:52:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:53:20.418 [DEBUG] [Thread-160394] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:20.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:53:20.501 [DEBUG] [Thread-160397] [transport.py] [_log()] starting thread (client mode): 0x2e3c1360
2025-09-29T15:53:20.502 [DEBUG] [Thread-160397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:20.515 [DEBUG] [Thread-160397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:53:20.516 [INFO] [Thread-160397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] Compression: none
2025-09-29T15:53:20.523 [DEBUG] [Thread-160397] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:20.581 [DEBUG] [Thread-160397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:20.581 [DEBUG] [Thread-160397] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:20.581 [DEBUG] [Thread-160397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:53:20.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:53:20.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:20.637 [DEBUG] [Thread-160397] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:20.637 [DEBUG] [Thread-160397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:20.638 [DEBUG] [Thread-160397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:20.638 [DEBUG] [Thread-160397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:53:20.638 [DEBUG] [Thread-160397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:20.652 [INFO] [Thread-160397] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:20.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:53:20.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:21.628 [DEBUG] [Thread-160397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:21.629 [DEBUG] [Thread-160397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:21.677 [DEBUG] [Thread-160397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:21.677 [DEBUG] [Thread-160397] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:21.685 [DEBUG] [Thread-160397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:21.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:21.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:53:21.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:53:21.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:21.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:21.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:21.717 [DEBUG] [Thread-160397] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:29.947 [DEBUG] [Thread-160399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:53:31.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:53:31.720 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:53:31.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:53:32.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 53, 19), 15.17, 35.4, 0.0, 16.32, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:53:32.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:53:19
2025-09-29T15:53:32.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:53:32.595 [DEBUG] [Thread-160400] [transport.py] [_log()] starting thread (client mode): 0x30dddd80
2025-09-29T15:53:32.595 [DEBUG] [Thread-160400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:32.614 [DEBUG] [Thread-160400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:53:32.614 [INFO] [Thread-160400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:53:32.618 [DEBUG] [Thread-160400] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:32.618 [DEBUG] [Thread-160400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:53:32.618 [DEBUG] [Thread-160400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:32.618 [DEBUG] [Thread-160400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:32.618 [DEBUG] [Thread-160400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:32.618 [DEBUG] [Thread-160400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:32.618 [DEBUG] [Thread-160400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:32.618 [DEBUG] [Thread-160400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] Compression: none
2025-09-29T15:53:32.619 [DEBUG] [Thread-160400] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:32.637 [DEBUG] [Thread-160400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:32.637 [DEBUG] [Thread-160400] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:32.638 [DEBUG] [Thread-160400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:53:32.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:53:32.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:32.641 [DEBUG] [Thread-160400] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:32.641 [DEBUG] [Thread-160400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:32.641 [DEBUG] [Thread-160400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:32.641 [DEBUG] [Thread-160400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:53:32.641 [DEBUG] [Thread-160400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:32.664 [INFO] [Thread-160400] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:32.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:33.339 [DEBUG] [Thread-160400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:33.339 [DEBUG] [Thread-160400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:33.339 [DEBUG] [Thread-160400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:53:33.380 [DEBUG] [Thread-160400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:33.380 [DEBUG] [Thread-160400] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:33.383 [DEBUG] [Thread-160400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:33.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:33.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:53:33.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:53:33.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:53:33.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:33.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:53:33.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:33.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:33.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:53:33.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.578192 -999.00  +15.60  11.29     41   +2.40 1 1 1 1 1   888    0 13.65 -29.71 ----- 13.9 11.3 166.6 20.9 22.6 -28.1 21.6 -31.4 24.0 -28.4 24.9 -30.2
2025-09-29T15:53:33.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:53:33.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:53:33.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.578192
2025-09-29T15:53:33.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:53:33.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:53:33.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:53:33.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:53:33.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:53:33.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:53:19', tmtdew=15.17, humidity=35.4, cloud=0.0, wind=16.32, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:52:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:53:33.408 [DEBUG] [Thread-160400] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:33.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:53:33.493 [DEBUG] [Thread-160403] [transport.py] [_log()] starting thread (client mode): 0x2e361240
2025-09-29T15:53:33.494 [DEBUG] [Thread-160403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:33.512 [DEBUG] [Thread-160403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:53:33.513 [INFO] [Thread-160403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:53:33.520 [DEBUG] [Thread-160403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:33.520 [DEBUG] [Thread-160403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:33.521 [DEBUG] [Thread-160403] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:33.522 [DEBUG] [Thread-160403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:33.522 [DEBUG] [Thread-160403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:33.522 [DEBUG] [Thread-160403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:33.522 [DEBUG] [Thread-160403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:33.522 [DEBUG] [Thread-160403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:33.522 [DEBUG] [Thread-160403] [transport.py] [_log()] Compression: none
2025-09-29T15:53:33.522 [DEBUG] [Thread-160403] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:33.579 [DEBUG] [Thread-160403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:33.579 [DEBUG] [Thread-160403] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:33.580 [DEBUG] [Thread-160403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:53:33.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:53:33.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:33.638 [DEBUG] [Thread-160403] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:33.639 [DEBUG] [Thread-160403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:33.639 [DEBUG] [Thread-160403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:33.639 [DEBUG] [Thread-160403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:53:33.639 [DEBUG] [Thread-160403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:33.658 [INFO] [Thread-160403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:33.659 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:53:33.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:34.743 [DEBUG] [Thread-160403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:34.744 [DEBUG] [Thread-160403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:34.792 [DEBUG] [Thread-160403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:34.792 [DEBUG] [Thread-160403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:34.801 [DEBUG] [Thread-160403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:34.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:34.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:53:34.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:53:34.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:34.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:34.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:34.835 [DEBUG] [Thread-160403] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:44.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:53:44.838 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:53:44.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:53:44.972 [DEBUG] [Thread-160405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:53:45.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 53, 19), 15.17, 35.4, 0.0, 16.32, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:53:45.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:53:19
2025-09-29T15:53:45.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:53:45.702 [DEBUG] [Thread-160406] [transport.py] [_log()] starting thread (client mode): 0x2b96d780
2025-09-29T15:53:45.702 [DEBUG] [Thread-160406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:45.726 [DEBUG] [Thread-160406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:53:45.727 [INFO] [Thread-160406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:53:45.729 [DEBUG] [Thread-160406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:45.729 [DEBUG] [Thread-160406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:53:45.729 [DEBUG] [Thread-160406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:45.729 [DEBUG] [Thread-160406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] Compression: none
2025-09-29T15:53:45.730 [DEBUG] [Thread-160406] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:45.739 [DEBUG] [Thread-160406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:45.739 [DEBUG] [Thread-160406] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:45.740 [DEBUG] [Thread-160406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:53:45.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:53:45.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:45.742 [DEBUG] [Thread-160406] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:45.742 [DEBUG] [Thread-160406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:45.742 [DEBUG] [Thread-160406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:45.742 [DEBUG] [Thread-160406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:53:45.742 [DEBUG] [Thread-160406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:45.770 [INFO] [Thread-160406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:45.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:46.435 [DEBUG] [Thread-160406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:46.435 [DEBUG] [Thread-160406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:46.436 [DEBUG] [Thread-160406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:53:46.476 [DEBUG] [Thread-160406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:46.477 [DEBUG] [Thread-160406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:46.480 [DEBUG] [Thread-160406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:46.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:46.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:53:46.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:53:46.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:53:46.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:46.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:53:46.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:46.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:46.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:53:46.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.578539 -999.00  +15.90  19.73     40   +2.60 1 1 1 1 1   888    0 13.25 -32.08 ----- 24.4 19.7 164.4 24.9 22.6 -29.6 21.9 -27.1 23.9 -29.6 25.1 -29.6
2025-09-29T15:53:46.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:53:46.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:53:46.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.578539
2025-09-29T15:53:46.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:53:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:53:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:53:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:53:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:53:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:53:19', tmtdew=15.17, humidity=35.4, cloud=0.0, wind=16.32, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:53:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:53:46.507 [DEBUG] [Thread-160406] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:46.603 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:53:46.615 [DEBUG] [Thread-160409] [transport.py] [_log()] starting thread (client mode): 0x2b9ccac0
2025-09-29T15:53:46.615 [DEBUG] [Thread-160409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:46.630 [DEBUG] [Thread-160409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:53:46.630 [INFO] [Thread-160409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:53:46.638 [DEBUG] [Thread-160409] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:46.639 [DEBUG] [Thread-160409] [transport.py] [_log()] Compression: none
2025-09-29T15:53:46.640 [DEBUG] [Thread-160409] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:46.698 [DEBUG] [Thread-160409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:46.698 [DEBUG] [Thread-160409] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:46.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:53:46.699 [DEBUG] [Thread-160409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:53:46.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:46.753 [DEBUG] [Thread-160409] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:46.754 [DEBUG] [Thread-160409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:46.754 [DEBUG] [Thread-160409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:46.754 [DEBUG] [Thread-160409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:53:46.754 [DEBUG] [Thread-160409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:46.776 [INFO] [Thread-160409] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:46.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:53:46.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:47.426 [DEBUG] [Thread-160411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:53:47.870 [DEBUG] [Thread-160409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:47.870 [DEBUG] [Thread-160409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:47.918 [DEBUG] [Thread-160409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:47.919 [DEBUG] [Thread-160409] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:47.928 [DEBUG] [Thread-160409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:47.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:47.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:53:47.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:53:47.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:47.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:47.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:47.965 [DEBUG] [Thread-160409] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:57.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:53:57.957 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:53:57.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:53:58.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 53, 51), 15.31, 35.45, 0.0, 23.41, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:53:58.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:53:51
2025-09-29T15:53:58.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:53:58.830 [DEBUG] [Thread-160412] [transport.py] [_log()] starting thread (client mode): 0x2e3632e0
2025-09-29T15:53:58.830 [DEBUG] [Thread-160412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:58.850 [DEBUG] [Thread-160412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:53:58.850 [INFO] [Thread-160412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:58.855 [DEBUG] [Thread-160412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:58.856 [DEBUG] [Thread-160412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:58.856 [DEBUG] [Thread-160412] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:58.856 [DEBUG] [Thread-160412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:58.856 [DEBUG] [Thread-160412] [transport.py] [_log()] Compression: none
2025-09-29T15:53:58.856 [DEBUG] [Thread-160412] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:58.873 [DEBUG] [Thread-160412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:58.874 [DEBUG] [Thread-160412] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:58.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:53:58.875 [DEBUG] [Thread-160412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:53:58.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:58.877 [DEBUG] [Thread-160412] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:58.877 [DEBUG] [Thread-160412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:58.877 [DEBUG] [Thread-160412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:58.877 [DEBUG] [Thread-160412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:53:58.877 [DEBUG] [Thread-160412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:58.900 [INFO] [Thread-160412] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:58.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:53:59.507 [DEBUG] [Thread-160412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:53:59.508 [DEBUG] [Thread-160412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:53:59.508 [DEBUG] [Thread-160412] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:53:59.549 [DEBUG] [Thread-160412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:53:59.549 [DEBUG] [Thread-160412] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:53:59.551 [DEBUG] [Thread-160412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:53:59.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:53:59.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:53:59.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:53:59.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:53:59.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:53:59.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:53:59.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:53:59.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:53:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:53:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.578539 -999.00  +15.90  19.73     40   +2.60 1 1 1 1 1   888    0 13.25 -32.08 ----- 24.4 19.7 164.4 24.9 22.6 -29.6 21.9 -27.1 23.9 -29.6 25.1 -29.6
2025-09-29T15:53:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:53:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:53:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.578539
2025-09-29T15:53:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:53:59.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:53:59.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:53:59.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:53:59.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:53:59.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:53:51', tmtdew=15.31, humidity=35.45, cloud=0.0, wind=23.41, temperature=15.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:53:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:53:59.574 [DEBUG] [Thread-160412] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:53:59.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:53:59.666 [DEBUG] [Thread-160415] [transport.py] [_log()] starting thread (client mode): 0x2e360f10
2025-09-29T15:53:59.666 [DEBUG] [Thread-160415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:53:59.681 [DEBUG] [Thread-160415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:53:59.681 [INFO] [Thread-160415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:53:59.688 [DEBUG] [Thread-160415] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:53:59.688 [DEBUG] [Thread-160415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:53:59.688 [DEBUG] [Thread-160415] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] client lang: <none>
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] server lang: <none>
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] kex follows: False
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] Compression: none
2025-09-29T15:53:59.689 [DEBUG] [Thread-160415] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:53:59.744 [DEBUG] [Thread-160415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:53:59.744 [DEBUG] [Thread-160415] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:53:59.744 [DEBUG] [Thread-160415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:53:59.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:53:59.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:53:59.801 [DEBUG] [Thread-160415] [transport.py] [_log()] userauth is OK
2025-09-29T15:53:59.801 [DEBUG] [Thread-160415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:53:59.801 [DEBUG] [Thread-160415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:53:59.801 [DEBUG] [Thread-160415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:53:59.801 [DEBUG] [Thread-160415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:53:59.819 [INFO] [Thread-160415] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:53:59.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:53:59.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:00.009 [DEBUG] [Thread-160417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:54:00.827 [DEBUG] [Thread-160415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:00.827 [DEBUG] [Thread-160415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:00.875 [DEBUG] [Thread-160415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:00.875 [DEBUG] [Thread-160415] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:00.884 [DEBUG] [Thread-160415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:00.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:00.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:54:00.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:54:00.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:00.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:00.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:00.918 [DEBUG] [Thread-160415] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:54:10.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:54:10.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:54:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:54:11.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 53, 51), 15.31, 35.45, 0.0, 23.41, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:54:11.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:53:51
2025-09-29T15:54:11.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:54:11.792 [DEBUG] [Thread-160418] [transport.py] [_log()] starting thread (client mode): 0x2e3f8ac0
2025-09-29T15:54:11.792 [DEBUG] [Thread-160418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:54:11.812 [DEBUG] [Thread-160418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:54:11.812 [INFO] [Thread-160418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:54:11.815 [DEBUG] [Thread-160418] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:54:11.815 [DEBUG] [Thread-160418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:54:11.815 [DEBUG] [Thread-160418] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:54:11.815 [DEBUG] [Thread-160418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:11.815 [DEBUG] [Thread-160418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:11.815 [DEBUG] [Thread-160418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:11.815 [DEBUG] [Thread-160418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] client lang: <none>
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] server lang: <none>
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] kex follows: False
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] Compression: none
2025-09-29T15:54:11.816 [DEBUG] [Thread-160418] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:54:11.834 [DEBUG] [Thread-160418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:54:11.835 [DEBUG] [Thread-160418] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:54:11.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:54:11.835 [DEBUG] [Thread-160418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:54:11.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:54:11.837 [DEBUG] [Thread-160418] [transport.py] [_log()] userauth is OK
2025-09-29T15:54:11.838 [DEBUG] [Thread-160418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:54:11.838 [DEBUG] [Thread-160418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:54:11.838 [DEBUG] [Thread-160418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:54:11.838 [DEBUG] [Thread-160418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:54:11.862 [INFO] [Thread-160418] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:54:11.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:12.442 [DEBUG] [Thread-160418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:12.443 [DEBUG] [Thread-160418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:12.443 [DEBUG] [Thread-160418] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:54:12.483 [DEBUG] [Thread-160418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:12.483 [DEBUG] [Thread-160418] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:12.486 [DEBUG] [Thread-160418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:12.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:12.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:54:12.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:54:12.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:54:12.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:12.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:54:12.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:12.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:12.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:54:12.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.578886 -999.00  +15.90  13.03     40   +2.50 1 1 1 1 1   888    0 13.22 -35.58 ----- 21.6 13.0 159.6 27.7 22.6 -30.1 21.9 -28.0 23.9 -29.7 24.9 -31.0
2025-09-29T15:54:12.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:54:12.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:54:12.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.578886
2025-09-29T15:54:12.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:54:12.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:54:12.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:54:12.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:54:12.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:54:12.512 [DEBUG] [Thread-160418] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:54:12.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:53:51', tmtdew=15.31, humidity=35.45, cloud=0.0, wind=23.41, temperature=15.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:53:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:54:12.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:54:12.604 [DEBUG] [Thread-160421] [transport.py] [_log()] starting thread (client mode): 0x2e3fabf0
2025-09-29T15:54:12.604 [DEBUG] [Thread-160421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:54:12.618 [DEBUG] [Thread-160421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:54:12.618 [INFO] [Thread-160421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:54:12.626 [DEBUG] [Thread-160421] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:54:12.627 [DEBUG] [Thread-160421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:54:12.627 [DEBUG] [Thread-160421] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:54:12.627 [DEBUG] [Thread-160421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:12.627 [DEBUG] [Thread-160421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:12.627 [DEBUG] [Thread-160421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:12.627 [DEBUG] [Thread-160421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:12.627 [DEBUG] [Thread-160421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:54:12.627 [DEBUG] [Thread-160421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:54:12.628 [DEBUG] [Thread-160421] [transport.py] [_log()] client lang: <none>
2025-09-29T15:54:12.628 [DEBUG] [Thread-160421] [transport.py] [_log()] server lang: <none>
2025-09-29T15:54:12.628 [DEBUG] [Thread-160421] [transport.py] [_log()] kex follows: False
2025-09-29T15:54:12.628 [DEBUG] [Thread-160421] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:54:12.628 [DEBUG] [Thread-160421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:54:12.628 [DEBUG] [Thread-160421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:54:12.628 [DEBUG] [Thread-160421] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:54:12.629 [DEBUG] [Thread-160421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:54:12.629 [DEBUG] [Thread-160421] [transport.py] [_log()] Compression: none
2025-09-29T15:54:12.629 [DEBUG] [Thread-160421] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:54:12.685 [DEBUG] [Thread-160421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:54:12.685 [DEBUG] [Thread-160421] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:54:12.686 [DEBUG] [Thread-160421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:54:12.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:54:12.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:54:12.741 [DEBUG] [Thread-160421] [transport.py] [_log()] userauth is OK
2025-09-29T15:54:12.741 [DEBUG] [Thread-160421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:54:12.742 [DEBUG] [Thread-160421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:54:12.742 [DEBUG] [Thread-160421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:54:12.742 [DEBUG] [Thread-160421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:54:12.761 [INFO] [Thread-160421] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:54:12.762 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:54:12.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:13.712 [DEBUG] [Thread-160421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:13.712 [DEBUG] [Thread-160421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:13.760 [DEBUG] [Thread-160421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:13.760 [DEBUG] [Thread-160421] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:13.768 [DEBUG] [Thread-160421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:13.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:13.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:54:13.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:54:13.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:13.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:13.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:13.799 [DEBUG] [Thread-160421] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:54:15.050 [DEBUG] [Thread-160423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:54:16.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:54:16.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:54:23.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:54:23.802 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:54:23.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:54:24.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 53, 51), 15.31, 35.45, 0.0, 23.41, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:54:24.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:53:51
2025-09-29T15:54:24.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:54:24.704 [DEBUG] [Thread-160424] [transport.py] [_log()] starting thread (client mode): 0x2e3fbb50
2025-09-29T15:54:24.704 [DEBUG] [Thread-160424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:54:24.725 [DEBUG] [Thread-160424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:54:24.725 [INFO] [Thread-160424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] client lang: <none>
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] server lang: <none>
2025-09-29T15:54:24.727 [DEBUG] [Thread-160424] [transport.py] [_log()] kex follows: False
2025-09-29T15:54:24.728 [DEBUG] [Thread-160424] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:54:24.728 [DEBUG] [Thread-160424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:54:24.728 [DEBUG] [Thread-160424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:54:24.728 [DEBUG] [Thread-160424] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:54:24.728 [DEBUG] [Thread-160424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:54:24.728 [DEBUG] [Thread-160424] [transport.py] [_log()] Compression: none
2025-09-29T15:54:24.728 [DEBUG] [Thread-160424] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:54:24.745 [DEBUG] [Thread-160424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:54:24.746 [DEBUG] [Thread-160424] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:54:24.746 [DEBUG] [Thread-160424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:54:24.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:54:24.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:54:24.747 [DEBUG] [Thread-160424] [transport.py] [_log()] userauth is OK
2025-09-29T15:54:24.747 [DEBUG] [Thread-160424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:54:24.747 [DEBUG] [Thread-160424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:54:24.747 [DEBUG] [Thread-160424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:54:24.747 [DEBUG] [Thread-160424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:54:24.759 [INFO] [Thread-160424] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:54:24.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:25.381 [DEBUG] [Thread-160424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:25.381 [DEBUG] [Thread-160424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:25.381 [DEBUG] [Thread-160424] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:54:25.422 [DEBUG] [Thread-160424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:25.422 [DEBUG] [Thread-160424] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:25.424 [DEBUG] [Thread-160424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:25.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:25.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:54:25.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:54:25.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:54:25.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:25.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:54:25.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.578886 -999.00  +15.90  13.03     40   +2.50 1 1 1 1 1   888    0 13.22 -35.58 ----- 21.6 13.0 159.6 27.7 22.6 -30.1 21.9 -28.0 23.9 -29.7 24.9 -31.0
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.578886
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:54:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:53:51', tmtdew=15.31, humidity=35.45, cloud=0.0, wind=23.41, temperature=15.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:53:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:54:25.445 [DEBUG] [Thread-160424] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:54:25.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:54:25.528 [DEBUG] [Thread-160427] [transport.py] [_log()] starting thread (client mode): 0x2e361240
2025-09-29T15:54:25.528 [DEBUG] [Thread-160427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:54:25.542 [DEBUG] [Thread-160427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:54:25.542 [INFO] [Thread-160427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] client lang: <none>
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] server lang: <none>
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] kex follows: False
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:54:25.550 [DEBUG] [Thread-160427] [transport.py] [_log()] Compression: none
2025-09-29T15:54:25.551 [DEBUG] [Thread-160427] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:54:25.608 [DEBUG] [Thread-160427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:54:25.608 [DEBUG] [Thread-160427] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:54:25.608 [DEBUG] [Thread-160427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:54:25.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:54:25.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:54:25.665 [DEBUG] [Thread-160427] [transport.py] [_log()] userauth is OK
2025-09-29T15:54:25.665 [DEBUG] [Thread-160427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:54:25.665 [DEBUG] [Thread-160427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:54:25.665 [DEBUG] [Thread-160427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:54:25.665 [DEBUG] [Thread-160427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:54:25.683 [INFO] [Thread-160427] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:54:25.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:54:25.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:26.674 [DEBUG] [Thread-160427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:26.674 [DEBUG] [Thread-160427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:26.722 [DEBUG] [Thread-160427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:26.722 [DEBUG] [Thread-160427] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:26.731 [DEBUG] [Thread-160427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:26.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:26.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:54:26.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:54:26.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:26.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:26.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:26.766 [DEBUG] [Thread-160427] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:54:30.091 [DEBUG] [Thread-160429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:54:36.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:54:36.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:54:36.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:54:37.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 54, 23), 15.39, 35.32, 0.0, 24.3, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:54:37.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:54:23
2025-09-29T15:54:37.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:54:37.621 [DEBUG] [Thread-160430] [transport.py] [_log()] starting thread (client mode): 0x2b9cccd0
2025-09-29T15:54:37.621 [DEBUG] [Thread-160430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:54:37.641 [DEBUG] [Thread-160430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:54:37.642 [INFO] [Thread-160430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:54:37.645 [DEBUG] [Thread-160430] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:54:37.645 [DEBUG] [Thread-160430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:54:37.645 [DEBUG] [Thread-160430] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:54:37.645 [DEBUG] [Thread-160430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:37.645 [DEBUG] [Thread-160430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:37.645 [DEBUG] [Thread-160430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:37.645 [DEBUG] [Thread-160430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] client lang: <none>
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] server lang: <none>
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] kex follows: False
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] Compression: none
2025-09-29T15:54:37.646 [DEBUG] [Thread-160430] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:54:37.663 [DEBUG] [Thread-160430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:54:37.664 [DEBUG] [Thread-160430] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:54:37.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:54:37.665 [DEBUG] [Thread-160430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:54:37.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:54:37.667 [DEBUG] [Thread-160430] [transport.py] [_log()] userauth is OK
2025-09-29T15:54:37.667 [DEBUG] [Thread-160430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:54:37.667 [DEBUG] [Thread-160430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:54:37.667 [DEBUG] [Thread-160430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:54:37.667 [DEBUG] [Thread-160430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:54:37.691 [INFO] [Thread-160430] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:54:37.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:38.305 [DEBUG] [Thread-160430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:38.306 [DEBUG] [Thread-160430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:38.306 [DEBUG] [Thread-160430] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:54:38.346 [DEBUG] [Thread-160430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:38.347 [DEBUG] [Thread-160430] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:38.350 [DEBUG] [Thread-160430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:38.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:38.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:54:38.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:54:38.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:54:38.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:38.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:54:38.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:38.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:38.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:54:38.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.578886 -999.00  +15.90  13.03     40   +2.50 1 1 1 1 1   888    0 13.22 -35.58 ----- 21.6 13.0 159.6 27.7 22.6 -30.1 21.9 -28.0 23.9 -29.7 24.9 -31.0
2025-09-29T15:54:38.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:54:38.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:54:38.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.578886
2025-09-29T15:54:38.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:54:38.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:54:38.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:54:38.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:54:38.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:54:38.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:54:23', tmtdew=15.39, humidity=35.32, cloud=0.0, wind=24.3, temperature=15.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:53:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:54:38.378 [DEBUG] [Thread-160430] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:54:38.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:54:38.474 [DEBUG] [Thread-160433] [transport.py] [_log()] starting thread (client mode): 0x2b9cdfc0
2025-09-29T15:54:38.474 [DEBUG] [Thread-160433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:54:38.489 [DEBUG] [Thread-160433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:54:38.489 [INFO] [Thread-160433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:54:38.496 [DEBUG] [Thread-160433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] client lang: <none>
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] server lang: <none>
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] kex follows: False
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] Compression: none
2025-09-29T15:54:38.497 [DEBUG] [Thread-160433] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:54:38.553 [DEBUG] [Thread-160433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:54:38.553 [DEBUG] [Thread-160433] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:54:38.553 [DEBUG] [Thread-160433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:54:38.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:54:38.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:54:38.609 [DEBUG] [Thread-160433] [transport.py] [_log()] userauth is OK
2025-09-29T15:54:38.609 [DEBUG] [Thread-160433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:54:38.609 [DEBUG] [Thread-160433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:54:38.609 [DEBUG] [Thread-160433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:54:38.609 [DEBUG] [Thread-160433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:54:38.627 [INFO] [Thread-160433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:54:38.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:54:38.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:39.597 [DEBUG] [Thread-160433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:39.597 [DEBUG] [Thread-160433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:39.645 [DEBUG] [Thread-160433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:39.645 [DEBUG] [Thread-160433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:39.654 [DEBUG] [Thread-160433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:39.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:39.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:54:39.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:54:39.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:39.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:39.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:39.689 [DEBUG] [Thread-160433] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:54:45.122 [DEBUG] [Thread-160435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:54:47.460 [DEBUG] [Thread-160436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:54:49.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:54:49.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:54:49.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:54:50.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 54, 23), 15.39, 35.32, 0.0, 24.3, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:54:50.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:54:23
2025-09-29T15:54:50.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:54:50.538 [DEBUG] [Thread-160437] [transport.py] [_log()] starting thread (client mode): 0x2e3fa260
2025-09-29T15:54:50.538 [DEBUG] [Thread-160437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:54:50.560 [DEBUG] [Thread-160437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:54:50.560 [INFO] [Thread-160437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:54:50.563 [DEBUG] [Thread-160437] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:54:50.563 [DEBUG] [Thread-160437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] client lang: <none>
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] server lang: <none>
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] kex follows: False
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:54:50.564 [DEBUG] [Thread-160437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:54:50.565 [DEBUG] [Thread-160437] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:54:50.565 [DEBUG] [Thread-160437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:54:50.565 [DEBUG] [Thread-160437] [transport.py] [_log()] Compression: none
2025-09-29T15:54:50.565 [DEBUG] [Thread-160437] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:54:50.582 [DEBUG] [Thread-160437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:54:50.583 [DEBUG] [Thread-160437] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:54:50.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:54:50.584 [DEBUG] [Thread-160437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:54:50.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:54:50.586 [DEBUG] [Thread-160437] [transport.py] [_log()] userauth is OK
2025-09-29T15:54:50.586 [DEBUG] [Thread-160437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:54:50.586 [DEBUG] [Thread-160437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:54:50.586 [DEBUG] [Thread-160437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:54:50.586 [DEBUG] [Thread-160437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:54:50.612 [INFO] [Thread-160437] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:54:50.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:51.225 [DEBUG] [Thread-160437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:51.225 [DEBUG] [Thread-160437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:51.225 [DEBUG] [Thread-160437] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:54:51.266 [DEBUG] [Thread-160437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:51.266 [DEBUG] [Thread-160437] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:51.269 [DEBUG] [Thread-160437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:51.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:51.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:54:51.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:54:51.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:54:51.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:51.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:54:51.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:51.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:54:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.579581 -999.00  +15.50  30.65     41   +2.40 1 1 2 1 1   888    0 12.85 -45.23 ----- 29.5 30.6 170.6 37.5 22.3 -29.7 21.8 -28.5 23.5 -30.4 24.6 -30.2
2025-09-29T15:54:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:54:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:54:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.579581
2025-09-29T15:54:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:54:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:54:51.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:54:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:54:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:54:51.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:54:23', tmtdew=15.39, humidity=35.32, cloud=0.0, wind=24.3, temperature=15.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:54:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:54:51.297 [DEBUG] [Thread-160437] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:54:51.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:54:51.397 [DEBUG] [Thread-160440] [transport.py] [_log()] starting thread (client mode): 0x2b94f520
2025-09-29T15:54:51.397 [DEBUG] [Thread-160440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:54:51.414 [DEBUG] [Thread-160440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:54:51.414 [INFO] [Thread-160440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] client lang: <none>
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] server lang: <none>
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] kex follows: False
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] Compression: none
2025-09-29T15:54:51.424 [DEBUG] [Thread-160440] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:54:51.482 [DEBUG] [Thread-160440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:54:51.482 [DEBUG] [Thread-160440] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:54:51.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:54:51.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:54:51.482 [DEBUG] [Thread-160440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:54:51.542 [DEBUG] [Thread-160440] [transport.py] [_log()] userauth is OK
2025-09-29T15:54:51.542 [DEBUG] [Thread-160440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:54:51.542 [DEBUG] [Thread-160440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:54:51.542 [DEBUG] [Thread-160440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:54:51.542 [DEBUG] [Thread-160440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:54:51.562 [INFO] [Thread-160440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:54:51.563 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:54:51.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:54:52.548 [DEBUG] [Thread-160440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:54:52.548 [DEBUG] [Thread-160440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:54:52.596 [DEBUG] [Thread-160440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:54:52.596 [DEBUG] [Thread-160440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:54:52.604 [DEBUG] [Thread-160440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:54:52.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:54:52.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:54:52.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:54:52.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:54:52.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:54:52.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:54:52.635 [DEBUG] [Thread-160440] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:00.178 [DEBUG] [Thread-160442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:55:02.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:55:02.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:55:02.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:55:03.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 54, 55), 15.69, 34.59, 0.0, 28.09, 16.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:55:03.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:54:55
2025-09-29T15:55:03.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:55:03.479 [DEBUG] [Thread-160443] [transport.py] [_log()] starting thread (client mode): 0x2b91dcf0
2025-09-29T15:55:03.480 [DEBUG] [Thread-160443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:03.500 [DEBUG] [Thread-160443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:55:03.500 [INFO] [Thread-160443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:55:03.503 [DEBUG] [Thread-160443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:03.503 [DEBUG] [Thread-160443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] Compression: none
2025-09-29T15:55:03.504 [DEBUG] [Thread-160443] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:03.513 [DEBUG] [Thread-160443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:03.514 [DEBUG] [Thread-160443] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:03.514 [DEBUG] [Thread-160443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:55:03.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:55:03.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:03.516 [DEBUG] [Thread-160443] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:03.516 [DEBUG] [Thread-160443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:03.516 [DEBUG] [Thread-160443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:03.516 [DEBUG] [Thread-160443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:55:03.516 [DEBUG] [Thread-160443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:03.552 [INFO] [Thread-160443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:03.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:06.021 [DEBUG] [Thread-160443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:06.021 [DEBUG] [Thread-160443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:06.022 [DEBUG] [Thread-160443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:55:06.062 [DEBUG] [Thread-160443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:06.063 [DEBUG] [Thread-160443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:06.066 [DEBUG] [Thread-160443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:06.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:06.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:55:06.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:55:06.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:55:06.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:06.131 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:55:06.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:06.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:06.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:55:06.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.579581 -999.00  +15.50  30.65     41   +2.40 1 1 2 1 1   888    0 12.85 -45.23 ----- 29.5 30.6 170.6 37.5 22.3 -29.7 21.8 -28.5 23.5 -30.4 24.6 -30.2
2025-09-29T15:55:06.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:55:06.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:55:06.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.579581
2025-09-29T15:55:06.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:55:06.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:55:06.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:55:06.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:55:06.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:55:06.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:54:55', tmtdew=15.69, humidity=34.59, cloud=0.0, wind=28.09, temperature=16.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:54:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:55:06.133 [DEBUG] [Thread-160443] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:06.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:55:06.231 [DEBUG] [Thread-160446] [transport.py] [_log()] starting thread (client mode): 0x2b91dab0
2025-09-29T15:55:06.232 [DEBUG] [Thread-160446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:06.246 [DEBUG] [Thread-160446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:55:06.246 [INFO] [Thread-160446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:55:06.254 [DEBUG] [Thread-160446] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:06.254 [DEBUG] [Thread-160446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:55:06.254 [DEBUG] [Thread-160446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:06.255 [DEBUG] [Thread-160446] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:06.256 [DEBUG] [Thread-160446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:06.256 [DEBUG] [Thread-160446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:06.256 [DEBUG] [Thread-160446] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:06.256 [DEBUG] [Thread-160446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:06.256 [DEBUG] [Thread-160446] [transport.py] [_log()] Compression: none
2025-09-29T15:55:06.256 [DEBUG] [Thread-160446] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:06.317 [DEBUG] [Thread-160446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:06.317 [DEBUG] [Thread-160446] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:06.318 [DEBUG] [Thread-160446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:55:06.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:55:06.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:06.373 [DEBUG] [Thread-160446] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:06.373 [DEBUG] [Thread-160446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:06.373 [DEBUG] [Thread-160446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:06.373 [DEBUG] [Thread-160446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:55:06.373 [DEBUG] [Thread-160446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:06.392 [INFO] [Thread-160446] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:06.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:55:06.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:07.412 [DEBUG] [Thread-160446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:07.413 [DEBUG] [Thread-160446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:07.460 [DEBUG] [Thread-160446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:07.460 [DEBUG] [Thread-160446] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:07.469 [DEBUG] [Thread-160446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:07.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:07.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:55:07.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:55:07.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:07.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:07.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:07.503 [DEBUG] [Thread-160446] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:15.224 [DEBUG] [Thread-160448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:55:16.752 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:55:16.753 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:55:17.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:55:17.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:55:17.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:55:18.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 54, 55), 15.69, 34.59, 0.0, 28.09, 16.01, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:55:18.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:54:55
2025-09-29T15:55:18.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:55:18.345 [DEBUG] [Thread-160449] [transport.py] [_log()] starting thread (client mode): 0x2b91c8e0
2025-09-29T15:55:18.345 [DEBUG] [Thread-160449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:18.365 [DEBUG] [Thread-160449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:55:18.365 [INFO] [Thread-160449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:55:18.368 [DEBUG] [Thread-160449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:18.368 [DEBUG] [Thread-160449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:55:18.368 [DEBUG] [Thread-160449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:18.368 [DEBUG] [Thread-160449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] Compression: none
2025-09-29T15:55:18.369 [DEBUG] [Thread-160449] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:18.384 [DEBUG] [Thread-160449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:18.384 [DEBUG] [Thread-160449] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:18.384 [DEBUG] [Thread-160449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:55:18.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:55:18.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:18.385 [DEBUG] [Thread-160449] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:18.385 [DEBUG] [Thread-160449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:18.385 [DEBUG] [Thread-160449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:18.385 [DEBUG] [Thread-160449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:55:18.385 [DEBUG] [Thread-160449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:18.394 [INFO] [Thread-160449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:18.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:19.008 [DEBUG] [Thread-160449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:19.009 [DEBUG] [Thread-160449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:19.009 [DEBUG] [Thread-160449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:55:19.049 [DEBUG] [Thread-160449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:19.050 [DEBUG] [Thread-160449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:19.053 [DEBUG] [Thread-160449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:19.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:19.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:55:19.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:55:19.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:55:19.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:19.074 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:55:19.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:19.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:19.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:55:19.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.579928 -999.00  +15.30  17.15     41   +2.40 1 1 1 1 1   888    0 12.90 -46.66 ----- 13.4 17.1 172.6 27.7 22.3 -29.4 21.4 -31.4 23.4 -28.8 24.5 -31.0
2025-09-29T15:55:19.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:55:19.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:55:19.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.579928
2025-09-29T15:55:19.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:55:19.077 [DEBUG] [Thread-160449] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:19.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:55:19.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:55:19.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:55:19.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:55:19.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:54:55', tmtdew=15.69, humidity=34.59, cloud=0.0, wind=28.09, temperature=16.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:55:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:55:19.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:55:19.172 [DEBUG] [Thread-160452] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-29T15:55:19.172 [DEBUG] [Thread-160452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:19.187 [DEBUG] [Thread-160452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:55:19.187 [INFO] [Thread-160452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:55:19.194 [DEBUG] [Thread-160452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] Compression: none
2025-09-29T15:55:19.195 [DEBUG] [Thread-160452] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:19.253 [DEBUG] [Thread-160452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:19.254 [DEBUG] [Thread-160452] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:19.254 [DEBUG] [Thread-160452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:55:19.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:55:19.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:19.310 [DEBUG] [Thread-160452] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:19.310 [DEBUG] [Thread-160452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:19.310 [DEBUG] [Thread-160452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:19.310 [DEBUG] [Thread-160452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:55:19.310 [DEBUG] [Thread-160452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:19.329 [INFO] [Thread-160452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:19.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:55:19.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:20.281 [DEBUG] [Thread-160452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:20.281 [DEBUG] [Thread-160452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:20.329 [DEBUG] [Thread-160452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:20.330 [DEBUG] [Thread-160452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:20.339 [DEBUG] [Thread-160452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:20.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:20.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:55:20.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:55:20.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:20.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:20.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:20.378 [DEBUG] [Thread-160452] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:30.260 [DEBUG] [Thread-160454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:55:30.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:55:30.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:55:30.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:55:31.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 55, 27), 15.74, 34.46, 0.0, 25.6, 15.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:55:31.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:55:27
2025-09-29T15:55:31.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:55:31.267 [DEBUG] [Thread-160455] [transport.py] [_log()] starting thread (client mode): 0x2b91f5b0
2025-09-29T15:55:31.267 [DEBUG] [Thread-160455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:31.287 [DEBUG] [Thread-160455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:55:31.287 [INFO] [Thread-160455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:55:31.290 [DEBUG] [Thread-160455] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:31.290 [DEBUG] [Thread-160455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:55:31.290 [DEBUG] [Thread-160455] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:31.290 [DEBUG] [Thread-160455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:31.290 [DEBUG] [Thread-160455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] Compression: none
2025-09-29T15:55:31.291 [DEBUG] [Thread-160455] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:31.305 [DEBUG] [Thread-160455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:31.305 [DEBUG] [Thread-160455] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:31.306 [DEBUG] [Thread-160455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:55:31.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:55:31.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:31.348 [DEBUG] [Thread-160455] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:31.348 [DEBUG] [Thread-160455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:31.348 [DEBUG] [Thread-160455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:31.348 [DEBUG] [Thread-160455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:55:31.348 [DEBUG] [Thread-160455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:31.379 [INFO] [Thread-160455] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:31.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:32.008 [DEBUG] [Thread-160455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:32.009 [DEBUG] [Thread-160455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:32.009 [DEBUG] [Thread-160455] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:55:32.050 [DEBUG] [Thread-160455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:32.050 [DEBUG] [Thread-160455] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:32.052 [DEBUG] [Thread-160455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:32.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:32.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:55:32.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:55:32.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:55:32.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:32.069 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:55:32.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:32.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:32.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.579928 -999.00  +15.30  17.15     41   +2.40 1 1 1 1 1   888    0 12.90 -46.66 ----- 13.4 17.1 172.6 27.7 22.3 -29.4 21.4 -31.4 23.4 -28.8 24.5 -31.0
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.579928
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:55:32.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:55:27', tmtdew=15.74, humidity=34.46, cloud=0.0, wind=25.6, temperature=15.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:55:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:55:32.071 [DEBUG] [Thread-160455] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:32.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:55:32.154 [DEBUG] [Thread-160458] [transport.py] [_log()] starting thread (client mode): 0x2b91d960
2025-09-29T15:55:32.154 [DEBUG] [Thread-160458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:32.168 [DEBUG] [Thread-160458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:55:32.169 [INFO] [Thread-160458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] Compression: none
2025-09-29T15:55:32.176 [DEBUG] [Thread-160458] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:32.231 [DEBUG] [Thread-160458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:32.231 [DEBUG] [Thread-160458] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:32.231 [DEBUG] [Thread-160458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:55:32.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:55:32.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:32.288 [DEBUG] [Thread-160458] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:32.288 [DEBUG] [Thread-160458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:32.288 [DEBUG] [Thread-160458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:32.288 [DEBUG] [Thread-160458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:55:32.288 [DEBUG] [Thread-160458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:32.302 [INFO] [Thread-160458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:32.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:55:32.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:33.293 [DEBUG] [Thread-160458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:33.293 [DEBUG] [Thread-160458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:33.341 [DEBUG] [Thread-160458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:33.341 [DEBUG] [Thread-160458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:33.349 [DEBUG] [Thread-160458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:33.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:33.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:55:33.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:55:33.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:33.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:33.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:33.381 [DEBUG] [Thread-160458] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:43.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:55:43.374 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:55:43.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:55:43.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 55, 27), 15.74, 34.46, 0.0, 25.6, 15.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:55:43.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:55:27
2025-09-29T15:55:44.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:55:44.215 [DEBUG] [Thread-160460] [transport.py] [_log()] starting thread (client mode): 0x2b94f280
2025-09-29T15:55:44.215 [DEBUG] [Thread-160460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:44.237 [DEBUG] [Thread-160460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:55:44.237 [INFO] [Thread-160460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:55:44.239 [DEBUG] [Thread-160460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:44.239 [DEBUG] [Thread-160460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:55:44.239 [DEBUG] [Thread-160460] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:44.239 [DEBUG] [Thread-160460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:44.239 [DEBUG] [Thread-160460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:44.239 [DEBUG] [Thread-160460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] Compression: none
2025-09-29T15:55:44.240 [DEBUG] [Thread-160460] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:44.258 [DEBUG] [Thread-160460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:44.258 [DEBUG] [Thread-160460] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:44.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:55:44.259 [DEBUG] [Thread-160460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:55:44.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:44.261 [DEBUG] [Thread-160460] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:44.262 [DEBUG] [Thread-160460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:44.262 [DEBUG] [Thread-160460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:44.262 [DEBUG] [Thread-160460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:55:44.262 [DEBUG] [Thread-160460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:44.286 [INFO] [Thread-160460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:44.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:44.931 [DEBUG] [Thread-160460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:44.931 [DEBUG] [Thread-160460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:44.932 [DEBUG] [Thread-160460] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:55:44.974 [DEBUG] [Thread-160460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:44.974 [DEBUG] [Thread-160460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:44.977 [DEBUG] [Thread-160460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:44.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:44.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:55:44.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:55:44.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:55:44.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:45.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:55:45.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.579928 -999.00  +15.30  17.15     41   +2.40 1 1 1 1 1   888    0 12.90 -46.66 ----- 13.4 17.1 172.6 27.7 22.3 -29.4 21.4 -31.4 23.4 -28.8 24.5 -31.0
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.579928
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:55:45.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:55:27', tmtdew=15.74, humidity=34.46, cloud=0.0, wind=25.6, temperature=15.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:55:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:55:45.002 [DEBUG] [Thread-160460] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:45.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:55:45.095 [DEBUG] [Thread-160463] [transport.py] [_log()] starting thread (client mode): 0x2b91d660
2025-09-29T15:55:45.095 [DEBUG] [Thread-160463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:45.109 [DEBUG] [Thread-160463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:55:45.110 [INFO] [Thread-160463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:55:45.118 [DEBUG] [Thread-160463] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:45.118 [DEBUG] [Thread-160463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:55:45.118 [DEBUG] [Thread-160463] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:45.118 [DEBUG] [Thread-160463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:45.119 [DEBUG] [Thread-160463] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:45.120 [DEBUG] [Thread-160463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:45.120 [DEBUG] [Thread-160463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:45.120 [DEBUG] [Thread-160463] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:45.120 [DEBUG] [Thread-160463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:45.120 [DEBUG] [Thread-160463] [transport.py] [_log()] Compression: none
2025-09-29T15:55:45.120 [DEBUG] [Thread-160463] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:45.176 [DEBUG] [Thread-160463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:45.176 [DEBUG] [Thread-160463] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:45.177 [DEBUG] [Thread-160463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:55:45.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:55:45.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:45.232 [DEBUG] [Thread-160463] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:45.232 [DEBUG] [Thread-160463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:45.232 [DEBUG] [Thread-160463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:45.232 [DEBUG] [Thread-160463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:55:45.232 [DEBUG] [Thread-160463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:45.251 [INFO] [Thread-160463] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:45.252 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:55:45.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:45.294 [DEBUG] [Thread-160465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:55:46.196 [DEBUG] [Thread-160463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:46.196 [DEBUG] [Thread-160463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:46.244 [DEBUG] [Thread-160463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:46.244 [DEBUG] [Thread-160463] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:46.253 [DEBUG] [Thread-160463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:46.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:46.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:55:46.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:55:46.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:46.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:46.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:46.288 [DEBUG] [Thread-160463] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:47.493 [DEBUG] [Thread-160466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:55:56.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:55:56.286 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:55:56.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:55:56.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 55, 27), 15.74, 34.46, 0.0, 25.6, 15.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:55:56.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:55:27
2025-09-29T15:55:56.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:55:57.138 [DEBUG] [Thread-160467] [transport.py] [_log()] starting thread (client mode): 0x2e3775e0
2025-09-29T15:55:57.138 [DEBUG] [Thread-160467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:57.160 [DEBUG] [Thread-160467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:55:57.160 [INFO] [Thread-160467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] Compression: none
2025-09-29T15:55:57.164 [DEBUG] [Thread-160467] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:57.181 [DEBUG] [Thread-160467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:57.182 [DEBUG] [Thread-160467] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:57.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:55:57.183 [DEBUG] [Thread-160467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:55:57.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:57.185 [DEBUG] [Thread-160467] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:57.185 [DEBUG] [Thread-160467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:57.186 [DEBUG] [Thread-160467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:57.186 [DEBUG] [Thread-160467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:55:57.186 [DEBUG] [Thread-160467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:57.208 [INFO] [Thread-160467] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:57.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:57.869 [DEBUG] [Thread-160467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:57.869 [DEBUG] [Thread-160467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:57.870 [DEBUG] [Thread-160467] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:55:57.910 [DEBUG] [Thread-160467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:57.911 [DEBUG] [Thread-160467] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:57.914 [DEBUG] [Thread-160467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:57.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:57.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:55:57.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:55:57.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:55:57.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:57.935 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:55:57.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:57.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:57.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:55:57.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.580275 -999.00  +15.40  15.67     41   +2.50 1 1 1 1 1   888    0 12.53 -53.54 ----- 14.6 15.7 158.5 21.7 22.2 -29.4 21.3 -29.5 23.5 -27.7 24.5 -30.9
2025-09-29T15:55:57.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:55:57.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:55:57.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.580275
2025-09-29T15:55:57.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:55:57.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:55:57.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:55:57.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:55:57.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:55:57.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:55:27', tmtdew=15.74, humidity=34.46, cloud=0.0, wind=25.6, temperature=15.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:55:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:55:57.938 [DEBUG] [Thread-160467] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:55:58.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:55:58.032 [DEBUG] [Thread-160470] [transport.py] [_log()] starting thread (client mode): 0x2b9cc760
2025-09-29T15:55:58.032 [DEBUG] [Thread-160470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:55:58.047 [DEBUG] [Thread-160470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:55:58.048 [INFO] [Thread-160470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] client lang: <none>
2025-09-29T15:55:58.058 [DEBUG] [Thread-160470] [transport.py] [_log()] server lang: <none>
2025-09-29T15:55:58.059 [DEBUG] [Thread-160470] [transport.py] [_log()] kex follows: False
2025-09-29T15:55:58.059 [DEBUG] [Thread-160470] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:55:58.059 [DEBUG] [Thread-160470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:55:58.059 [DEBUG] [Thread-160470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:55:58.059 [DEBUG] [Thread-160470] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:55:58.059 [DEBUG] [Thread-160470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:55:58.059 [DEBUG] [Thread-160470] [transport.py] [_log()] Compression: none
2025-09-29T15:55:58.059 [DEBUG] [Thread-160470] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:55:58.121 [DEBUG] [Thread-160470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:55:58.122 [DEBUG] [Thread-160470] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:55:58.122 [DEBUG] [Thread-160470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:55:58.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:55:58.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:55:58.182 [DEBUG] [Thread-160470] [transport.py] [_log()] userauth is OK
2025-09-29T15:55:58.182 [DEBUG] [Thread-160470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:55:58.182 [DEBUG] [Thread-160470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:55:58.183 [DEBUG] [Thread-160470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:55:58.183 [DEBUG] [Thread-160470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:55:58.204 [INFO] [Thread-160470] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:55:58.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:55:58.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:55:59.148 [DEBUG] [Thread-160470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:55:59.148 [DEBUG] [Thread-160470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:55:59.196 [DEBUG] [Thread-160470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:55:59.196 [DEBUG] [Thread-160470] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:55:59.205 [DEBUG] [Thread-160470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:55:59.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:55:59.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:55:59.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:55:59.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:55:59.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:55:59.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:55:59.238 [DEBUG] [Thread-160470] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:56:00.339 [DEBUG] [Thread-160472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:56:09.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:56:09.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:56:09.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:56:09.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 55, 59), 15.3, 35.37, 0.0, 19.34, 15.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:56:09.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:55:59
2025-09-29T15:56:09.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:56:10.127 [DEBUG] [Thread-160473] [transport.py] [_log()] starting thread (client mode): 0x2e3f9090
2025-09-29T15:56:10.127 [DEBUG] [Thread-160473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:56:10.147 [DEBUG] [Thread-160473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:56:10.147 [INFO] [Thread-160473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] client lang: <none>
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] server lang: <none>
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] kex follows: False
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] Compression: none
2025-09-29T15:56:10.150 [DEBUG] [Thread-160473] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:56:10.164 [DEBUG] [Thread-160473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:56:10.165 [DEBUG] [Thread-160473] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:56:10.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:56:10.165 [DEBUG] [Thread-160473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:56:10.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:56:10.166 [DEBUG] [Thread-160473] [transport.py] [_log()] userauth is OK
2025-09-29T15:56:10.166 [DEBUG] [Thread-160473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:56:10.166 [DEBUG] [Thread-160473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:56:10.166 [DEBUG] [Thread-160473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:56:10.166 [DEBUG] [Thread-160473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:56:10.176 [INFO] [Thread-160473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:56:10.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:56:10.785 [DEBUG] [Thread-160473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:56:10.785 [DEBUG] [Thread-160473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:56:10.785 [DEBUG] [Thread-160473] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:56:10.826 [DEBUG] [Thread-160473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:56:10.826 [DEBUG] [Thread-160473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:56:10.828 [DEBUG] [Thread-160473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:56:10.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:56:10.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:56:10.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:56:10.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:56:10.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:56:10.846 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:56:10.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.580275 -999.00  +15.40  15.67     41   +2.50 1 1 1 1 1   888    0 12.53 -53.54 ----- 14.6 15.7 158.5 21.7 22.2 -29.4 21.3 -29.5 23.5 -27.7 24.5 -30.9
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.580275
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:56:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:55:59', tmtdew=15.3, humidity=35.37, cloud=0.0, wind=19.34, temperature=15.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:55:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:56:10.847 [DEBUG] [Thread-160473] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:56:10.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:56:10.933 [DEBUG] [Thread-160476] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd60
2025-09-29T15:56:10.933 [DEBUG] [Thread-160476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:56:10.947 [DEBUG] [Thread-160476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:56:10.947 [INFO] [Thread-160476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] client lang: <none>
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] server lang: <none>
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] kex follows: False
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] Compression: none
2025-09-29T15:56:10.955 [DEBUG] [Thread-160476] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:56:11.010 [DEBUG] [Thread-160476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:56:11.011 [DEBUG] [Thread-160476] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:56:11.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:56:11.011 [DEBUG] [Thread-160476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:56:11.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:56:11.068 [DEBUG] [Thread-160476] [transport.py] [_log()] userauth is OK
2025-09-29T15:56:11.068 [DEBUG] [Thread-160476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:56:11.068 [DEBUG] [Thread-160476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:56:11.068 [DEBUG] [Thread-160476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:56:11.068 [DEBUG] [Thread-160476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:56:11.084 [INFO] [Thread-160476] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:56:11.084 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:56:11.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:56:12.021 [DEBUG] [Thread-160476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:56:12.021 [DEBUG] [Thread-160476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:56:12.069 [DEBUG] [Thread-160476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:56:12.069 [DEBUG] [Thread-160476] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:56:12.077 [DEBUG] [Thread-160476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:56:12.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:56:12.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:56:12.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:56:12.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:56:12.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:56:12.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:56:12.108 [DEBUG] [Thread-160476] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:56:15.375 [DEBUG] [Thread-160478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:56:16.892 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:56:16.893 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:56:22.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:56:22.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:56:22.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:56:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 55, 59), 15.3, 35.37, 0.0, 19.34, 15.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:56:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:55:59
2025-09-29T15:56:22.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:56:22.942 [DEBUG] [Thread-160479] [transport.py] [_log()] starting thread (client mode): 0x2e375d50
2025-09-29T15:56:22.942 [DEBUG] [Thread-160479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:56:22.961 [DEBUG] [Thread-160479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:56:22.961 [INFO] [Thread-160479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] client lang: <none>
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] server lang: <none>
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] kex follows: False
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] Compression: none
2025-09-29T15:56:22.965 [DEBUG] [Thread-160479] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:56:22.981 [DEBUG] [Thread-160479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:56:22.982 [DEBUG] [Thread-160479] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:56:22.982 [DEBUG] [Thread-160479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:56:22.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:56:22.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:56:22.984 [DEBUG] [Thread-160479] [transport.py] [_log()] userauth is OK
2025-09-29T15:56:22.985 [DEBUG] [Thread-160479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:56:22.985 [DEBUG] [Thread-160479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:56:22.985 [DEBUG] [Thread-160479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:56:22.985 [DEBUG] [Thread-160479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:56:23.002 [INFO] [Thread-160479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:56:23.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:56:23.581 [DEBUG] [Thread-160479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:56:23.582 [DEBUG] [Thread-160479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:56:23.582 [DEBUG] [Thread-160479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:56:23.622 [DEBUG] [Thread-160479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:56:23.622 [DEBUG] [Thread-160479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:56:23.625 [DEBUG] [Thread-160479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:56:23.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:56:23.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:56:23.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:56:23.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:56:23.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:56:23.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:56:23.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:56:23.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:56:23.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:56:23.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.580623 -999.00  +15.60  14.59     41   +2.50 1 1 1 1 1   888    0 12.47 -57.00 ----- 15.7 14.6 145.3 25.2 22.2 -29.7 21.4 -28.4 23.4 -28.2 24.4 -31.4
2025-09-29T15:56:23.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:56:23.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:56:23.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.580623
2025-09-29T15:56:23.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:56:23.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:56:23.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:56:23.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:56:23.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:56:23.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:55:59', tmtdew=15.3, humidity=35.37, cloud=0.0, wind=19.34, temperature=15.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:56:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:56:23.658 [DEBUG] [Thread-160479] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:56:23.743 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:56:23.753 [DEBUG] [Thread-160482] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e60
2025-09-29T15:56:23.753 [DEBUG] [Thread-160482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:56:23.769 [DEBUG] [Thread-160482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:56:23.769 [INFO] [Thread-160482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] client lang: <none>
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] server lang: <none>
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] kex follows: False
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:56:23.777 [DEBUG] [Thread-160482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:56:23.778 [DEBUG] [Thread-160482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:56:23.778 [DEBUG] [Thread-160482] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:56:23.778 [DEBUG] [Thread-160482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:56:23.778 [DEBUG] [Thread-160482] [transport.py] [_log()] Compression: none
2025-09-29T15:56:23.778 [DEBUG] [Thread-160482] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:56:23.836 [DEBUG] [Thread-160482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:56:23.836 [DEBUG] [Thread-160482] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:56:23.845 [DEBUG] [Thread-160482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:56:23.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:56:23.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:56:23.892 [DEBUG] [Thread-160482] [transport.py] [_log()] userauth is OK
2025-09-29T15:56:23.892 [DEBUG] [Thread-160482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:56:23.892 [DEBUG] [Thread-160482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:56:23.893 [DEBUG] [Thread-160482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:56:23.893 [DEBUG] [Thread-160482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:56:23.911 [INFO] [Thread-160482] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:56:23.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:56:23.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:56:24.919 [DEBUG] [Thread-160482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:56:24.919 [DEBUG] [Thread-160482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:56:24.967 [DEBUG] [Thread-160482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:56:24.967 [DEBUG] [Thread-160482] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:56:24.976 [DEBUG] [Thread-160482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:56:24.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:56:24.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:56:24.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:56:25.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:56:25.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:56:25.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:56:25.011 [DEBUG] [Thread-160482] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:56:30.420 [DEBUG] [Thread-160484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:56:35.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:56:35.014 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:56:35.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:56:35.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 56, 31), 15.42, 35.14, 0.0, 22.48, 15.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:56:35.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:56:31
2025-09-29T15:56:35.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:56:35.832 [DEBUG] [Thread-160485] [transport.py] [_log()] starting thread (client mode): 0x2b91c5e0
2025-09-29T15:56:35.833 [DEBUG] [Thread-160485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:56:35.852 [DEBUG] [Thread-160485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:56:35.852 [INFO] [Thread-160485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:56:35.855 [DEBUG] [Thread-160485] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] client lang: <none>
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] server lang: <none>
2025-09-29T15:56:35.856 [DEBUG] [Thread-160485] [transport.py] [_log()] kex follows: False
2025-09-29T15:56:35.857 [DEBUG] [Thread-160485] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:56:35.857 [DEBUG] [Thread-160485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:56:35.857 [DEBUG] [Thread-160485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:56:35.857 [DEBUG] [Thread-160485] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:56:35.857 [DEBUG] [Thread-160485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:56:35.857 [DEBUG] [Thread-160485] [transport.py] [_log()] Compression: none
2025-09-29T15:56:35.857 [DEBUG] [Thread-160485] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:56:35.878 [DEBUG] [Thread-160485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:56:35.879 [DEBUG] [Thread-160485] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:56:35.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:56:35.880 [DEBUG] [Thread-160485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:56:35.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:56:35.882 [DEBUG] [Thread-160485] [transport.py] [_log()] userauth is OK
2025-09-29T15:56:35.882 [DEBUG] [Thread-160485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:56:35.882 [DEBUG] [Thread-160485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:56:35.882 [DEBUG] [Thread-160485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:56:35.882 [DEBUG] [Thread-160485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:56:35.916 [INFO] [Thread-160485] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:56:35.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:56:36.513 [DEBUG] [Thread-160485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:56:36.513 [DEBUG] [Thread-160485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:56:36.514 [DEBUG] [Thread-160485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:56:36.554 [DEBUG] [Thread-160485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:56:36.554 [DEBUG] [Thread-160485] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:56:36.557 [DEBUG] [Thread-160485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:56:36.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:56:36.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:56:36.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:56:36.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:56:36.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:56:36.579 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:56:36.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:56:36.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:56:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:56:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.580623 -999.00  +15.60  14.59     41   +2.50 1 1 1 1 1   888    0 12.47 -57.00 ----- 15.7 14.6 145.3 25.2 22.2 -29.7 21.4 -28.4 23.4 -28.2 24.4 -31.4
2025-09-29T15:56:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:56:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:56:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.580623
2025-09-29T15:56:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:56:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:56:36.581 [DEBUG] [Thread-160485] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:56:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:56:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:56:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:56:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:56:31', tmtdew=15.42, humidity=35.14, cloud=0.0, wind=22.48, temperature=15.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:56:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:56:36.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:56:36.675 [DEBUG] [Thread-160488] [transport.py] [_log()] starting thread (client mode): 0x2e377e20
2025-09-29T15:56:36.675 [DEBUG] [Thread-160488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:56:36.689 [DEBUG] [Thread-160488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:56:36.689 [INFO] [Thread-160488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] client lang: <none>
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] server lang: <none>
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] kex follows: False
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:56:36.697 [DEBUG] [Thread-160488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:56:36.698 [DEBUG] [Thread-160488] [transport.py] [_log()] Compression: none
2025-09-29T15:56:36.698 [DEBUG] [Thread-160488] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:56:36.757 [DEBUG] [Thread-160488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:56:36.758 [DEBUG] [Thread-160488] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:56:36.759 [DEBUG] [Thread-160488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:56:36.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:56:36.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:56:36.816 [DEBUG] [Thread-160488] [transport.py] [_log()] userauth is OK
2025-09-29T15:56:36.817 [DEBUG] [Thread-160488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:56:36.817 [DEBUG] [Thread-160488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:56:36.817 [DEBUG] [Thread-160488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:56:36.817 [DEBUG] [Thread-160488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:56:36.836 [INFO] [Thread-160488] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:56:36.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:56:36.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:56:37.810 [DEBUG] [Thread-160488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:56:37.810 [DEBUG] [Thread-160488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:56:37.857 [DEBUG] [Thread-160488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:56:37.857 [DEBUG] [Thread-160488] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:56:37.866 [DEBUG] [Thread-160488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:56:37.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:56:37.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:56:37.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:56:37.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:56:37.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:56:37.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:56:37.900 [DEBUG] [Thread-160488] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:56:45.463 [DEBUG] [Thread-160490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:56:47.520 [DEBUG] [Thread-160491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:56:47.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:56:47.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:56:47.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:56:48.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 56, 31), 15.42, 35.14, 0.0, 22.48, 15.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:56:48.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:56:31
2025-09-29T15:56:48.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:56:48.766 [DEBUG] [Thread-160492] [transport.py] [_log()] starting thread (client mode): 0x2b91f790
2025-09-29T15:56:48.766 [DEBUG] [Thread-160492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:56:48.785 [DEBUG] [Thread-160492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:56:48.785 [INFO] [Thread-160492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] client lang: <none>
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] server lang: <none>
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] kex follows: False
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:56:48.786 [DEBUG] [Thread-160492] [transport.py] [_log()] Compression: none
2025-09-29T15:56:48.787 [DEBUG] [Thread-160492] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:56:48.793 [DEBUG] [Thread-160492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:56:48.793 [DEBUG] [Thread-160492] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:56:48.794 [DEBUG] [Thread-160492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:56:48.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:56:48.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:56:48.794 [DEBUG] [Thread-160492] [transport.py] [_log()] userauth is OK
2025-09-29T15:56:48.794 [DEBUG] [Thread-160492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:56:48.794 [DEBUG] [Thread-160492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:56:48.794 [DEBUG] [Thread-160492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:56:48.794 [DEBUG] [Thread-160492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:56:48.803 [INFO] [Thread-160492] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:56:48.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:56:49.376 [DEBUG] [Thread-160492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:56:49.377 [DEBUG] [Thread-160492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:56:49.377 [DEBUG] [Thread-160492] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:56:49.418 [DEBUG] [Thread-160492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:56:49.418 [DEBUG] [Thread-160492] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:56:49.420 [DEBUG] [Thread-160492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:56:49.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:56:49.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:56:49.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:56:49.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:56:49.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:56:49.436 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:56:49.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:56:49.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:56:49.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:56:49.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.580623 -999.00  +15.60  14.59     41   +2.50 1 1 1 1 1   888    0 12.47 -57.00 ----- 15.7 14.6 145.3 25.2 22.2 -29.7 21.4 -28.4 23.4 -28.2 24.4 -31.4
2025-09-29T15:56:49.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:56:49.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:56:49.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.580623
2025-09-29T15:56:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:56:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:56:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:56:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:56:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:56:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:56:31', tmtdew=15.42, humidity=35.14, cloud=0.0, wind=22.48, temperature=15.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:56:05.827', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:56:49.437 [DEBUG] [Thread-160492] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:56:49.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:56:49.521 [DEBUG] [Thread-160495] [transport.py] [_log()] starting thread (client mode): 0x2b9cf2b0
2025-09-29T15:56:49.522 [DEBUG] [Thread-160495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:56:49.537 [DEBUG] [Thread-160495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:56:49.537 [INFO] [Thread-160495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:56:49.544 [DEBUG] [Thread-160495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] client lang: <none>
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] server lang: <none>
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] kex follows: False
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] Compression: none
2025-09-29T15:56:49.545 [DEBUG] [Thread-160495] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:56:49.603 [DEBUG] [Thread-160495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:56:49.603 [DEBUG] [Thread-160495] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:56:49.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:56:49.603 [DEBUG] [Thread-160495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:56:49.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:56:49.659 [DEBUG] [Thread-160495] [transport.py] [_log()] userauth is OK
2025-09-29T15:56:49.659 [DEBUG] [Thread-160495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:56:49.660 [DEBUG] [Thread-160495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:56:49.660 [DEBUG] [Thread-160495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:56:49.660 [DEBUG] [Thread-160495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:56:49.674 [INFO] [Thread-160495] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:56:49.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:56:49.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:56:50.660 [DEBUG] [Thread-160495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:56:50.660 [DEBUG] [Thread-160495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:56:50.708 [DEBUG] [Thread-160495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:56:50.708 [DEBUG] [Thread-160495] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:56:50.717 [DEBUG] [Thread-160495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:56:50.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:56:50.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:56:50.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:56:50.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:56:50.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:56:50.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:56:50.751 [DEBUG] [Thread-160495] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:00.499 [DEBUG] [Thread-160497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:57:00.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:57:00.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:57:00.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:57:01.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 56, 31), 15.42, 35.14, 0.0, 22.48, 15.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:57:01.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:56:31
2025-09-29T15:57:01.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:57:01.601 [DEBUG] [Thread-160498] [transport.py] [_log()] starting thread (client mode): 0x2e3c04c0
2025-09-29T15:57:01.601 [DEBUG] [Thread-160498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:01.620 [DEBUG] [Thread-160498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:57:01.620 [INFO] [Thread-160498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:57:01.622 [DEBUG] [Thread-160498] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:01.622 [DEBUG] [Thread-160498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:57:01.622 [DEBUG] [Thread-160498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:01.622 [DEBUG] [Thread-160498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:01.622 [DEBUG] [Thread-160498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] Compression: none
2025-09-29T15:57:01.623 [DEBUG] [Thread-160498] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:01.632 [DEBUG] [Thread-160498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:01.632 [DEBUG] [Thread-160498] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:01.633 [DEBUG] [Thread-160498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:57:01.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:57:01.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:01.634 [DEBUG] [Thread-160498] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:01.634 [DEBUG] [Thread-160498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:01.635 [DEBUG] [Thread-160498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:01.635 [DEBUG] [Thread-160498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:57:01.635 [DEBUG] [Thread-160498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:01.652 [INFO] [Thread-160498] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:01.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:02.284 [DEBUG] [Thread-160498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:02.285 [DEBUG] [Thread-160498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:02.285 [DEBUG] [Thread-160498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:57:02.325 [DEBUG] [Thread-160498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:02.325 [DEBUG] [Thread-160498] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:02.328 [DEBUG] [Thread-160498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:02.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:02.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:57:02.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:57:02.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:57:02.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:02.349 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:57:02.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:02.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:57:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.580970 -999.00  +15.70  22.76     40   +2.40 1 1 1 1 1   888    0 12.14 -61.10 ----- 21.6 22.8 141.2 35.4 22.2 -29.0 21.4 -27.4 23.3 -28.2 24.4 -30.6
2025-09-29T15:57:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:57:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:57:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.580970
2025-09-29T15:57:02.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:57:02.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:57:02.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:57:02.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:57:02.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:57:02.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:56:31', tmtdew=15.42, humidity=35.14, cloud=0.0, wind=22.48, temperature=15.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:56:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:57:02.352 [DEBUG] [Thread-160498] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:02.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:57:02.448 [DEBUG] [Thread-160501] [transport.py] [_log()] starting thread (client mode): 0x2b91e620
2025-09-29T15:57:02.448 [DEBUG] [Thread-160501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:02.465 [DEBUG] [Thread-160501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:57:02.465 [INFO] [Thread-160501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:02.476 [DEBUG] [Thread-160501] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:02.477 [DEBUG] [Thread-160501] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:02.477 [DEBUG] [Thread-160501] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:02.477 [DEBUG] [Thread-160501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:02.477 [DEBUG] [Thread-160501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:02.477 [DEBUG] [Thread-160501] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:02.477 [DEBUG] [Thread-160501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:02.477 [DEBUG] [Thread-160501] [transport.py] [_log()] Compression: none
2025-09-29T15:57:02.477 [DEBUG] [Thread-160501] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:02.532 [DEBUG] [Thread-160501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:02.532 [DEBUG] [Thread-160501] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:02.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:57:02.533 [DEBUG] [Thread-160501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:57:02.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:02.588 [DEBUG] [Thread-160501] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:02.588 [DEBUG] [Thread-160501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:02.588 [DEBUG] [Thread-160501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:02.588 [DEBUG] [Thread-160501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:57:02.589 [DEBUG] [Thread-160501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:02.608 [INFO] [Thread-160501] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:02.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:57:02.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:03.576 [DEBUG] [Thread-160501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:03.576 [DEBUG] [Thread-160501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:03.623 [DEBUG] [Thread-160501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:03.624 [DEBUG] [Thread-160501] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:03.632 [DEBUG] [Thread-160501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:03.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:03.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:57:03.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:57:03.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:03.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:03.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:03.663 [DEBUG] [Thread-160501] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:13.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:57:13.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:57:13.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:57:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 57, 3), 15.59, 34.74, 0.0, 26.25, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:57:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:57:03
2025-09-29T15:57:14.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:57:14.507 [DEBUG] [Thread-160503] [transport.py] [_log()] starting thread (client mode): 0x30ddca90
2025-09-29T15:57:14.507 [DEBUG] [Thread-160503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:14.527 [DEBUG] [Thread-160503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:57:14.527 [INFO] [Thread-160503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:57:14.528 [DEBUG] [Thread-160503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:14.528 [DEBUG] [Thread-160503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:57:14.528 [DEBUG] [Thread-160503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] Compression: none
2025-09-29T15:57:14.529 [DEBUG] [Thread-160503] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:14.548 [DEBUG] [Thread-160503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:14.549 [DEBUG] [Thread-160503] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:14.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:57:14.550 [DEBUG] [Thread-160503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:57:14.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:14.552 [DEBUG] [Thread-160503] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:14.552 [DEBUG] [Thread-160503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:14.552 [DEBUG] [Thread-160503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:14.552 [DEBUG] [Thread-160503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:57:14.552 [DEBUG] [Thread-160503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:14.588 [INFO] [Thread-160503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:14.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:15.229 [DEBUG] [Thread-160503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:15.229 [DEBUG] [Thread-160503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:15.229 [DEBUG] [Thread-160503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:57:15.269 [DEBUG] [Thread-160503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:15.270 [DEBUG] [Thread-160503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:15.272 [DEBUG] [Thread-160503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:15.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:15.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:57:15.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:57:15.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:57:15.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:15.293 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:57:15.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:15.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:15.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:57:15.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.580970 -999.00  +15.70  22.76     40   +2.40 1 1 1 1 1   888    0 12.14 -61.10 ----- 21.6 22.8 141.2 35.4 22.2 -29.0 21.4 -27.4 23.3 -28.2 24.4 -30.6
2025-09-29T15:57:15.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:57:15.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:57:15.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.580970
2025-09-29T15:57:15.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:57:15.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:57:15.295 [DEBUG] [Thread-160503] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:15.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:57:15.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:57:15.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:57:15.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:57:03', tmtdew=15.59, humidity=34.74, cloud=0.0, wind=26.25, temperature=15.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:56:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:57:15.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:57:15.390 [DEBUG] [Thread-160506] [transport.py] [_log()] starting thread (client mode): 0x2e3c3520
2025-09-29T15:57:15.390 [DEBUG] [Thread-160506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:15.409 [DEBUG] [Thread-160506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:57:15.409 [INFO] [Thread-160506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:15.417 [DEBUG] [Thread-160506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] Compression: none
2025-09-29T15:57:15.418 [DEBUG] [Thread-160506] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:15.475 [DEBUG] [Thread-160506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:15.476 [DEBUG] [Thread-160506] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:15.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:57:15.477 [DEBUG] [Thread-160506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:57:15.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:15.528 [DEBUG] [Thread-160508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:57:15.532 [DEBUG] [Thread-160506] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:15.532 [DEBUG] [Thread-160506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:15.532 [DEBUG] [Thread-160506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:15.532 [DEBUG] [Thread-160506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:57:15.532 [DEBUG] [Thread-160506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:15.548 [INFO] [Thread-160506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:15.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:57:15.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:16.487 [DEBUG] [Thread-160506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:16.487 [DEBUG] [Thread-160506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:16.535 [DEBUG] [Thread-160506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:16.535 [DEBUG] [Thread-160506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:16.544 [DEBUG] [Thread-160506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:16.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:16.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:57:16.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:57:16.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:16.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:16.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:16.578 [DEBUG] [Thread-160506] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:17.031 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:57:17.032 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:57:26.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:57:26.581 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:57:26.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:57:27.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 57, 3), 15.59, 34.74, 0.0, 26.25, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:57:27.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:57:03
2025-09-29T15:57:27.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:57:27.446 [DEBUG] [Thread-160509] [transport.py] [_log()] starting thread (client mode): 0x2e363550
2025-09-29T15:57:27.446 [DEBUG] [Thread-160509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:27.465 [DEBUG] [Thread-160509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:57:27.465 [INFO] [Thread-160509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:27.466 [DEBUG] [Thread-160509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:27.467 [DEBUG] [Thread-160509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:27.467 [DEBUG] [Thread-160509] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:27.467 [DEBUG] [Thread-160509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:27.467 [DEBUG] [Thread-160509] [transport.py] [_log()] Compression: none
2025-09-29T15:57:27.467 [DEBUG] [Thread-160509] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:27.478 [DEBUG] [Thread-160509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:27.478 [DEBUG] [Thread-160509] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:27.478 [DEBUG] [Thread-160509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:57:27.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:57:27.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:27.479 [DEBUG] [Thread-160509] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:27.479 [DEBUG] [Thread-160509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:27.479 [DEBUG] [Thread-160509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:27.479 [DEBUG] [Thread-160509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:57:27.479 [DEBUG] [Thread-160509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:27.491 [INFO] [Thread-160509] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:27.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:28.077 [DEBUG] [Thread-160509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:28.077 [DEBUG] [Thread-160509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:28.078 [DEBUG] [Thread-160509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:57:28.119 [DEBUG] [Thread-160509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:28.119 [DEBUG] [Thread-160509] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:28.121 [DEBUG] [Thread-160509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:28.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:28.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:57:28.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:57:28.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:57:28.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:28.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:57:28.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:28.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:57:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.580970 -999.00  +15.70  22.76     40   +2.40 1 1 1 1 1   888    0 12.14 -61.10 ----- 21.6 22.8 141.2 35.4 22.2 -29.0 21.4 -27.4 23.3 -28.2 24.4 -30.6
2025-09-29T15:57:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:57:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:57:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.580970
2025-09-29T15:57:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:57:28.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:57:28.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:57:28.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:57:28.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:57:28.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:57:03', tmtdew=15.59, humidity=34.74, cloud=0.0, wind=26.25, temperature=15.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:56:35.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:57:28.140 [DEBUG] [Thread-160509] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:28.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:57:28.225 [DEBUG] [Thread-160512] [transport.py] [_log()] starting thread (client mode): 0x2e3f9cf0
2025-09-29T15:57:28.225 [DEBUG] [Thread-160512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:28.239 [DEBUG] [Thread-160512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:57:28.240 [INFO] [Thread-160512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:28.247 [DEBUG] [Thread-160512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:28.248 [DEBUG] [Thread-160512] [transport.py] [_log()] Compression: none
2025-09-29T15:57:28.248 [DEBUG] [Thread-160512] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:28.307 [DEBUG] [Thread-160512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:28.307 [DEBUG] [Thread-160512] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:28.307 [DEBUG] [Thread-160512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:57:28.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:57:28.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:28.363 [DEBUG] [Thread-160512] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:28.363 [DEBUG] [Thread-160512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:28.363 [DEBUG] [Thread-160512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:28.363 [DEBUG] [Thread-160512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:57:28.363 [DEBUG] [Thread-160512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:28.377 [INFO] [Thread-160512] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:28.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:57:28.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:29.335 [DEBUG] [Thread-160512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:29.336 [DEBUG] [Thread-160512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:29.383 [DEBUG] [Thread-160512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:29.383 [DEBUG] [Thread-160512] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:29.393 [DEBUG] [Thread-160512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:29.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:29.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:57:29.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:57:29.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:29.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:29.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:29.427 [DEBUG] [Thread-160512] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:30.570 [DEBUG] [Thread-160514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:57:39.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:57:39.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:57:39.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:57:40.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 57, 35), 15.74, 34.24, 0.0, 29.2, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:57:40.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:57:35
2025-09-29T15:57:40.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:57:40.269 [DEBUG] [Thread-160515] [transport.py] [_log()] starting thread (client mode): 0x2b969cc0
2025-09-29T15:57:40.269 [DEBUG] [Thread-160515] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:40.289 [DEBUG] [Thread-160515] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:57:40.289 [INFO] [Thread-160515] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:57:40.292 [DEBUG] [Thread-160515] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:40.293 [DEBUG] [Thread-160515] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:40.294 [DEBUG] [Thread-160515] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:40.294 [DEBUG] [Thread-160515] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:40.294 [DEBUG] [Thread-160515] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:40.294 [DEBUG] [Thread-160515] [transport.py] [_log()] Compression: none
2025-09-29T15:57:40.294 [DEBUG] [Thread-160515] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:40.311 [DEBUG] [Thread-160515] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:40.311 [DEBUG] [Thread-160515] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:40.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:57:40.312 [DEBUG] [Thread-160515] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:57:40.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:40.314 [DEBUG] [Thread-160515] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:40.314 [DEBUG] [Thread-160515] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:40.314 [DEBUG] [Thread-160515] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:40.314 [DEBUG] [Thread-160515] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:57:40.314 [DEBUG] [Thread-160515] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:40.331 [INFO] [Thread-160515] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:40.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:41.018 [DEBUG] [Thread-160515] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:41.018 [DEBUG] [Thread-160515] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:41.019 [DEBUG] [Thread-160515] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:57:41.059 [DEBUG] [Thread-160515] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:41.060 [DEBUG] [Thread-160515] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:41.063 [DEBUG] [Thread-160515] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:41.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:41.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:57:41.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:57:41.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:57:41.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:41.090 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:57:41.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:41.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:41.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:57:41.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.581317 -999.00  +15.80  20.30     40   +2.40 1 1 1 1 1   888    0 12.12 -61.45 ----- 19.8 20.3 160.4 29.1 22.1 -28.6 21.4 -27.8 23.3 -28.4 24.3 -29.2
2025-09-29T15:57:41.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:57:41.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:57:41.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.581317
2025-09-29T15:57:41.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:57:41.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:57:41.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:57:41.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:57:41.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:57:41.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:57:35', tmtdew=15.74, humidity=34.24, cloud=0.0, wind=29.2, temperature=15.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:57:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:57:41.093 [DEBUG] [Thread-160515] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:41.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:57:41.191 [DEBUG] [Thread-160518] [transport.py] [_log()] starting thread (client mode): 0x2e376b90
2025-09-29T15:57:41.191 [DEBUG] [Thread-160518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:41.205 [DEBUG] [Thread-160518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:57:41.206 [INFO] [Thread-160518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:57:41.213 [DEBUG] [Thread-160518] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:41.213 [DEBUG] [Thread-160518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:57:41.213 [DEBUG] [Thread-160518] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:41.213 [DEBUG] [Thread-160518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:41.213 [DEBUG] [Thread-160518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] Compression: none
2025-09-29T15:57:41.214 [DEBUG] [Thread-160518] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:41.271 [DEBUG] [Thread-160518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:41.271 [DEBUG] [Thread-160518] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:41.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:57:41.272 [DEBUG] [Thread-160518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:57:41.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:41.327 [DEBUG] [Thread-160518] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:41.328 [DEBUG] [Thread-160518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:41.328 [DEBUG] [Thread-160518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:41.328 [DEBUG] [Thread-160518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:57:41.328 [DEBUG] [Thread-160518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:41.347 [INFO] [Thread-160518] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:41.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:57:41.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:42.291 [DEBUG] [Thread-160518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:42.292 [DEBUG] [Thread-160518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:42.344 [DEBUG] [Thread-160518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:42.344 [DEBUG] [Thread-160518] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:42.357 [DEBUG] [Thread-160518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:42.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:42.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:57:42.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:57:42.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:42.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:42.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:42.408 [DEBUG] [Thread-160518] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:45.596 [DEBUG] [Thread-160520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:57:47.552 [DEBUG] [Thread-160521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:57:52.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:57:52.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:57:52.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:57:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 57, 35), 15.74, 34.24, 0.0, 29.2, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:57:52.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:57:35
2025-09-29T15:57:53.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:57:53.247 [DEBUG] [Thread-160522] [transport.py] [_log()] starting thread (client mode): 0x30dddd20
2025-09-29T15:57:53.247 [DEBUG] [Thread-160522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:53.259 [DEBUG] [Thread-160522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:57:53.259 [INFO] [Thread-160522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] Compression: none
2025-09-29T15:57:53.261 [DEBUG] [Thread-160522] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:53.269 [DEBUG] [Thread-160522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:53.269 [DEBUG] [Thread-160522] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:53.269 [DEBUG] [Thread-160522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:57:53.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:57:53.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:53.270 [DEBUG] [Thread-160522] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:53.270 [DEBUG] [Thread-160522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:53.270 [DEBUG] [Thread-160522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:53.270 [DEBUG] [Thread-160522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:57:53.270 [DEBUG] [Thread-160522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:53.283 [INFO] [Thread-160522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:53.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:53.843 [DEBUG] [Thread-160522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:53.843 [DEBUG] [Thread-160522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:53.844 [DEBUG] [Thread-160522] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:57:53.884 [DEBUG] [Thread-160522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:53.884 [DEBUG] [Thread-160522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:53.887 [DEBUG] [Thread-160522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:53.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:53.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:57:53.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:57:53.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:57:53.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:53.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:57:53.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:53.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:57:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.581317 -999.00  +15.80  20.30     40   +2.40 1 1 1 1 1   888    0 12.12 -61.45 ----- 19.8 20.3 160.4 29.1 22.1 -28.6 21.4 -27.8 23.3 -28.4 24.3 -29.2
2025-09-29T15:57:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:57:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:57:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.581317
2025-09-29T15:57:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:57:53.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:57:53.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:57:53.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:57:53.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:57:53.912 [DEBUG] [Thread-160522] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:57:53.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:57:35', tmtdew=15.74, humidity=34.24, cloud=0.0, wind=29.2, temperature=15.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:57:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:57:53.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:57:54.008 [DEBUG] [Thread-160525] [transport.py] [_log()] starting thread (client mode): 0x2e377940
2025-09-29T15:57:54.008 [DEBUG] [Thread-160525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:57:54.023 [DEBUG] [Thread-160525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:57:54.024 [INFO] [Thread-160525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:57:54.031 [DEBUG] [Thread-160525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:57:54.031 [DEBUG] [Thread-160525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] client lang: <none>
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] server lang: <none>
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] kex follows: False
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] Compression: none
2025-09-29T15:57:54.032 [DEBUG] [Thread-160525] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:57:54.093 [DEBUG] [Thread-160525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:57:54.094 [DEBUG] [Thread-160525] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:57:54.094 [DEBUG] [Thread-160525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:57:54.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:57:54.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:57:54.151 [DEBUG] [Thread-160525] [transport.py] [_log()] userauth is OK
2025-09-29T15:57:54.151 [DEBUG] [Thread-160525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:57:54.151 [DEBUG] [Thread-160525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:57:54.151 [DEBUG] [Thread-160525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:57:54.152 [DEBUG] [Thread-160525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:57:54.173 [INFO] [Thread-160525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:57:54.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:57:54.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:57:55.164 [DEBUG] [Thread-160525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:57:55.165 [DEBUG] [Thread-160525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:57:55.212 [DEBUG] [Thread-160525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:57:55.212 [DEBUG] [Thread-160525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:57:55.221 [DEBUG] [Thread-160525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:57:55.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:57:55.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:57:55.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:57:55.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:57:55.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:57:55.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:57:55.256 [DEBUG] [Thread-160525] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:00.649 [DEBUG] [Thread-160527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:58:05.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:58:05.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:58:05.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:58:05.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 57, 35), 15.74, 34.24, 0.0, 29.2, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:58:05.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:57:35
2025-09-29T15:58:05.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:58:06.126 [DEBUG] [Thread-160528] [transport.py] [_log()] starting thread (client mode): 0x2b96bcd0
2025-09-29T15:58:06.126 [DEBUG] [Thread-160528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:06.148 [DEBUG] [Thread-160528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:58:06.148 [INFO] [Thread-160528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:06.151 [DEBUG] [Thread-160528] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] Compression: none
2025-09-29T15:58:06.152 [DEBUG] [Thread-160528] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:06.169 [DEBUG] [Thread-160528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:06.169 [DEBUG] [Thread-160528] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:06.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:58:06.169 [DEBUG] [Thread-160528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:58:06.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:06.170 [DEBUG] [Thread-160528] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:06.170 [DEBUG] [Thread-160528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:06.170 [DEBUG] [Thread-160528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:06.170 [DEBUG] [Thread-160528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:58:06.170 [DEBUG] [Thread-160528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:06.179 [INFO] [Thread-160528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:06.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:06.743 [DEBUG] [Thread-160528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:06.744 [DEBUG] [Thread-160528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:06.744 [DEBUG] [Thread-160528] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:58:06.784 [DEBUG] [Thread-160528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:06.784 [DEBUG] [Thread-160528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:06.787 [DEBUG] [Thread-160528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:06.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:06.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:58:06.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:58:06.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:58:06.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:06.807 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:58:06.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:06.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:06.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:58:06.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.581664 -999.00  +15.60  23.35     41   +2.30 1 1 1 1 1   888    0 12.32 -61.16 ----- 24.3 23.4 154.6 30.3 22.0 -30.0 21.4 -28.0 23.2 -28.5 24.2 -31.0
2025-09-29T15:58:06.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:58:06.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:58:06.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.581664
2025-09-29T15:58:06.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:58:06.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:58:06.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:58:06.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:58:06.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:58:06.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:57:35', tmtdew=15.74, humidity=34.24, cloud=0.0, wind=29.2, temperature=15.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:57:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:58:06.809 [DEBUG] [Thread-160528] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:06.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:58:06.906 [DEBUG] [Thread-160531] [transport.py] [_log()] starting thread (client mode): 0x30ddfbe0
2025-09-29T15:58:06.906 [DEBUG] [Thread-160531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:06.922 [DEBUG] [Thread-160531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:58:06.922 [INFO] [Thread-160531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:58:06.930 [DEBUG] [Thread-160531] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:06.930 [DEBUG] [Thread-160531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:58:06.930 [DEBUG] [Thread-160531] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:06.930 [DEBUG] [Thread-160531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:06.930 [DEBUG] [Thread-160531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:06.930 [DEBUG] [Thread-160531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:06.931 [DEBUG] [Thread-160531] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:06.932 [DEBUG] [Thread-160531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:06.932 [DEBUG] [Thread-160531] [transport.py] [_log()] Compression: none
2025-09-29T15:58:06.932 [DEBUG] [Thread-160531] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:06.988 [DEBUG] [Thread-160531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:06.988 [DEBUG] [Thread-160531] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:06.989 [DEBUG] [Thread-160531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:58:06.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:58:06.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:07.047 [DEBUG] [Thread-160531] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:07.047 [DEBUG] [Thread-160531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:07.048 [DEBUG] [Thread-160531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:07.048 [DEBUG] [Thread-160531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:58:07.048 [DEBUG] [Thread-160531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:07.066 [INFO] [Thread-160531] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:07.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:58:07.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:08.057 [DEBUG] [Thread-160531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:08.057 [DEBUG] [Thread-160531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:08.108 [DEBUG] [Thread-160531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:08.108 [DEBUG] [Thread-160531] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:08.119 [DEBUG] [Thread-160531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:08.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:08.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:58:08.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:58:08.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:08.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:08.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:08.151 [DEBUG] [Thread-160531] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:15.675 [DEBUG] [Thread-160533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:58:17.170 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:58:17.171 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:58:18.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:58:18.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:58:18.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:58:18.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 58, 6), 15.63, 34.47, 0.0, 26.43, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:58:18.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:58:06
2025-09-29T15:58:18.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:58:19.002 [DEBUG] [Thread-160534] [transport.py] [_log()] starting thread (client mode): 0x30dde8f0
2025-09-29T15:58:19.002 [DEBUG] [Thread-160534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:19.022 [DEBUG] [Thread-160534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:58:19.023 [INFO] [Thread-160534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:19.026 [DEBUG] [Thread-160534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:19.027 [DEBUG] [Thread-160534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:19.027 [DEBUG] [Thread-160534] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:19.027 [DEBUG] [Thread-160534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:19.027 [DEBUG] [Thread-160534] [transport.py] [_log()] Compression: none
2025-09-29T15:58:19.027 [DEBUG] [Thread-160534] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:19.047 [DEBUG] [Thread-160534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:19.047 [DEBUG] [Thread-160534] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:19.048 [DEBUG] [Thread-160534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:58:19.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:58:19.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:19.050 [DEBUG] [Thread-160534] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:19.050 [DEBUG] [Thread-160534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:19.050 [DEBUG] [Thread-160534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:19.050 [DEBUG] [Thread-160534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:58:19.050 [DEBUG] [Thread-160534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:19.067 [INFO] [Thread-160534] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:19.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:19.800 [DEBUG] [Thread-160534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:19.801 [DEBUG] [Thread-160534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:19.801 [DEBUG] [Thread-160534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:58:19.841 [DEBUG] [Thread-160534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:19.841 [DEBUG] [Thread-160534] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:19.844 [DEBUG] [Thread-160534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:19.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:19.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:58:19.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:58:19.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:58:19.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:19.865 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:58:19.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:19.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:58:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.581664 -999.00  +15.60  23.35     41   +2.30 1 1 1 1 1   888    0 12.32 -61.16 ----- 24.3 23.4 154.6 30.3 22.0 -30.0 21.4 -28.0 23.2 -28.5 24.2 -31.0
2025-09-29T15:58:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:58:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:58:19.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.581664
2025-09-29T15:58:19.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:58:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:58:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:58:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:58:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:58:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:58:06', tmtdew=15.63, humidity=34.47, cloud=0.0, wind=26.43, temperature=15.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:57:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:58:19.868 [DEBUG] [Thread-160534] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:19.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:58:19.966 [DEBUG] [Thread-160537] [transport.py] [_log()] starting thread (client mode): 0x2e3774f0
2025-09-29T15:58:19.966 [DEBUG] [Thread-160537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:19.981 [DEBUG] [Thread-160537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:58:19.981 [INFO] [Thread-160537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:58:19.988 [DEBUG] [Thread-160537] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:19.988 [DEBUG] [Thread-160537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:58:19.988 [DEBUG] [Thread-160537] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:19.988 [DEBUG] [Thread-160537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:19.988 [DEBUG] [Thread-160537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:19.988 [DEBUG] [Thread-160537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] Compression: none
2025-09-29T15:58:19.989 [DEBUG] [Thread-160537] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:20.047 [DEBUG] [Thread-160537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:20.048 [DEBUG] [Thread-160537] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:20.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:58:20.049 [DEBUG] [Thread-160537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:58:20.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:20.103 [DEBUG] [Thread-160537] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:20.103 [DEBUG] [Thread-160537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:20.103 [DEBUG] [Thread-160537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:20.103 [DEBUG] [Thread-160537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:58:20.103 [DEBUG] [Thread-160537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:20.121 [INFO] [Thread-160537] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:20.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:58:20.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:21.083 [DEBUG] [Thread-160537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:21.084 [DEBUG] [Thread-160537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:21.131 [DEBUG] [Thread-160537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:21.131 [DEBUG] [Thread-160537] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:21.140 [DEBUG] [Thread-160537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:21.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:21.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:58:21.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:58:21.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:21.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:21.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:21.175 [DEBUG] [Thread-160537] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:30.713 [DEBUG] [Thread-160539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:58:31.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:58:31.177 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:58:31.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:58:31.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 58, 6), 15.63, 34.47, 0.0, 26.43, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:58:31.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:58:06
2025-09-29T15:58:31.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:58:32.018 [DEBUG] [Thread-160540] [transport.py] [_log()] starting thread (client mode): 0x30ddfeb0
2025-09-29T15:58:32.018 [DEBUG] [Thread-160540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:32.038 [DEBUG] [Thread-160540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:58:32.038 [INFO] [Thread-160540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:32.041 [DEBUG] [Thread-160540] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] Compression: none
2025-09-29T15:58:32.042 [DEBUG] [Thread-160540] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:32.061 [DEBUG] [Thread-160540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:32.061 [DEBUG] [Thread-160540] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:32.062 [DEBUG] [Thread-160540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:58:32.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:58:32.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:32.064 [DEBUG] [Thread-160540] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:32.065 [DEBUG] [Thread-160540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:32.065 [DEBUG] [Thread-160540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:32.065 [DEBUG] [Thread-160540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:58:32.065 [DEBUG] [Thread-160540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:32.098 [INFO] [Thread-160540] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:32.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:32.862 [DEBUG] [Thread-160540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:32.862 [DEBUG] [Thread-160540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:32.862 [DEBUG] [Thread-160540] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:58:32.903 [DEBUG] [Thread-160540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:32.903 [DEBUG] [Thread-160540] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:32.905 [DEBUG] [Thread-160540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:32.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:32.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:58:32.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:58:32.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:58:32.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:32.925 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:58:32.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:32.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:32.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:58:32.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.581664 -999.00  +15.60  23.35     41   +2.30 1 1 1 1 1   888    0 12.32 -61.16 ----- 24.3 23.4 154.6 30.3 22.0 -30.0 21.4 -28.0 23.2 -28.5 24.2 -31.0
2025-09-29T15:58:32.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:58:32.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:58:32.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.581664
2025-09-29T15:58:32.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:58:32.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:58:32.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:58:32.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:58:32.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:58:32.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:58:06', tmtdew=15.63, humidity=34.47, cloud=0.0, wind=26.43, temperature=15.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:57:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:58:32.928 [DEBUG] [Thread-160540] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:33.012 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:58:33.023 [DEBUG] [Thread-160543] [transport.py] [_log()] starting thread (client mode): 0x2b968460
2025-09-29T15:58:33.023 [DEBUG] [Thread-160543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:33.038 [DEBUG] [Thread-160543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:58:33.038 [INFO] [Thread-160543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:58:33.047 [DEBUG] [Thread-160543] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:33.047 [DEBUG] [Thread-160543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:58:33.047 [DEBUG] [Thread-160543] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:33.047 [DEBUG] [Thread-160543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:33.047 [DEBUG] [Thread-160543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:33.047 [DEBUG] [Thread-160543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] Compression: none
2025-09-29T15:58:33.048 [DEBUG] [Thread-160543] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:33.104 [DEBUG] [Thread-160543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:33.105 [DEBUG] [Thread-160543] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:33.106 [DEBUG] [Thread-160543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:58:33.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:58:33.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:33.163 [DEBUG] [Thread-160543] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:33.163 [DEBUG] [Thread-160543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:33.164 [DEBUG] [Thread-160543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:33.164 [DEBUG] [Thread-160543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:58:33.164 [DEBUG] [Thread-160543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:33.183 [INFO] [Thread-160543] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:33.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:58:33.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:34.134 [DEBUG] [Thread-160543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:34.135 [DEBUG] [Thread-160543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:34.182 [DEBUG] [Thread-160543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:34.182 [DEBUG] [Thread-160543] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:34.191 [DEBUG] [Thread-160543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:34.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:34.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:58:34.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:58:34.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:34.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:34.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:34.226 [DEBUG] [Thread-160543] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:58:44.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:58:44.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:58:44.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 58, 38), 15.31, 35.42, 0.0, 22.41, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:58:44.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:58:38
2025-09-29T15:58:44.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:58:45.069 [DEBUG] [Thread-160545] [transport.py] [_log()] starting thread (client mode): 0x2e377460
2025-09-29T15:58:45.070 [DEBUG] [Thread-160545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:45.088 [DEBUG] [Thread-160545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:58:45.088 [INFO] [Thread-160545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:58:45.091 [DEBUG] [Thread-160545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:45.091 [DEBUG] [Thread-160545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] Compression: none
2025-09-29T15:58:45.092 [DEBUG] [Thread-160545] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:45.109 [DEBUG] [Thread-160545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:45.110 [DEBUG] [Thread-160545] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:45.110 [DEBUG] [Thread-160545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:58:45.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:58:45.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:45.112 [DEBUG] [Thread-160545] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:45.112 [DEBUG] [Thread-160545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:45.113 [DEBUG] [Thread-160545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:45.113 [DEBUG] [Thread-160545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:58:45.113 [DEBUG] [Thread-160545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:45.136 [INFO] [Thread-160545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:45.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:45.728 [DEBUG] [Thread-160545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:45.728 [DEBUG] [Thread-160545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:45.728 [DEBUG] [Thread-160545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:58:45.756 [DEBUG] [Thread-160547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:58:45.769 [DEBUG] [Thread-160545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:45.769 [DEBUG] [Thread-160545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:45.771 [DEBUG] [Thread-160545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:45.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:45.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:58:45.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:58:45.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:58:45.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:45.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:58:45.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:45.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:45.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:58:45.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.582011 -999.00  +15.40  23.94     41   +2.30 1 1 1 1 1   888    0 12.26 -62.88 ----- 19.4 23.9 170.8 29.6 21.9 -29.5 21.2 -28.5 23.0 -28.0 24.0 -31.0
2025-09-29T15:58:45.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:58:45.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:58:45.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.582011
2025-09-29T15:58:45.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:58:45.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:58:45.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:58:45.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:58:45.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:58:45.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:58:38', tmtdew=15.31, humidity=35.42, cloud=0.0, wind=22.41, temperature=15.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:58:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:58:45.790 [DEBUG] [Thread-160545] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:45.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:58:45.889 [DEBUG] [Thread-160549] [transport.py] [_log()] starting thread (client mode): 0x30dddd80
2025-09-29T15:58:45.889 [DEBUG] [Thread-160549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:45.904 [DEBUG] [Thread-160549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:58:45.904 [INFO] [Thread-160549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:45.912 [DEBUG] [Thread-160549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:45.913 [DEBUG] [Thread-160549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:45.913 [DEBUG] [Thread-160549] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:45.913 [DEBUG] [Thread-160549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:45.913 [DEBUG] [Thread-160549] [transport.py] [_log()] Compression: none
2025-09-29T15:58:45.913 [DEBUG] [Thread-160549] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:45.969 [DEBUG] [Thread-160549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:45.969 [DEBUG] [Thread-160549] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:45.969 [DEBUG] [Thread-160549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:58:45.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:58:45.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:46.027 [DEBUG] [Thread-160549] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:46.027 [DEBUG] [Thread-160549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:46.027 [DEBUG] [Thread-160549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:46.027 [DEBUG] [Thread-160549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:58:46.027 [DEBUG] [Thread-160549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:46.040 [INFO] [Thread-160549] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:46.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:58:46.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:47.061 [DEBUG] [Thread-160549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:47.061 [DEBUG] [Thread-160549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:47.109 [DEBUG] [Thread-160549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:47.109 [DEBUG] [Thread-160549] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:47.118 [DEBUG] [Thread-160549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:47.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:47.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:58:47.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:58:47.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:47.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:47.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:47.152 [DEBUG] [Thread-160549] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:47.585 [DEBUG] [Thread-160551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:58:57.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:58:57.146 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:58:57.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:58:57.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 58, 38), 15.31, 35.42, 0.0, 22.41, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:58:57.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:58:38
2025-09-29T15:58:57.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:58:57.992 [DEBUG] [Thread-160552] [transport.py] [_log()] starting thread (client mode): 0x2e3767a0
2025-09-29T15:58:57.992 [DEBUG] [Thread-160552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:58.013 [DEBUG] [Thread-160552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:58:58.014 [INFO] [Thread-160552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:58:58.017 [DEBUG] [Thread-160552] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:58.017 [DEBUG] [Thread-160552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:58:58.017 [DEBUG] [Thread-160552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:58.017 [DEBUG] [Thread-160552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:58.017 [DEBUG] [Thread-160552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:58.017 [DEBUG] [Thread-160552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:58.017 [DEBUG] [Thread-160552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:58.017 [DEBUG] [Thread-160552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] Compression: none
2025-09-29T15:58:58.018 [DEBUG] [Thread-160552] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:58.026 [DEBUG] [Thread-160552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:58.027 [DEBUG] [Thread-160552] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:58.027 [DEBUG] [Thread-160552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:58:58.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:58:58.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:58.029 [DEBUG] [Thread-160552] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:58.030 [DEBUG] [Thread-160552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:58.030 [DEBUG] [Thread-160552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:58.030 [DEBUG] [Thread-160552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:58:58.030 [DEBUG] [Thread-160552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:58.054 [INFO] [Thread-160552] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:58.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:58:58.786 [DEBUG] [Thread-160552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:58:58.787 [DEBUG] [Thread-160552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:58:58.787 [DEBUG] [Thread-160552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:58:58.827 [DEBUG] [Thread-160552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:58:58.827 [DEBUG] [Thread-160552] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:58:58.830 [DEBUG] [Thread-160552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:58:58.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:58:58.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:58:58.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:58:58.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:58:58.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:58:58.856 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:58:58.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:58:58.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:58:58.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:58:58.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.582011 -999.00  +15.40  23.94     41   +2.30 1 1 1 1 1   888    0 12.26 -62.88 ----- 19.4 23.9 170.8 29.6 21.9 -29.5 21.2 -28.5 23.0 -28.0 24.0 -31.0
2025-09-29T15:58:58.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:58:58.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:58:58.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.582011
2025-09-29T15:58:58.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:58:58.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:58:58.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:58:58.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:58:58.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:58:58.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:58:38', tmtdew=15.31, humidity=35.42, cloud=0.0, wind=22.41, temperature=15.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:58:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:58:58.858 [DEBUG] [Thread-160552] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:58:58.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:58:58.948 [DEBUG] [Thread-160555] [transport.py] [_log()] starting thread (client mode): 0x2b96aad0
2025-09-29T15:58:58.948 [DEBUG] [Thread-160555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:58:58.964 [DEBUG] [Thread-160555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:58:58.964 [INFO] [Thread-160555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:58:58.972 [DEBUG] [Thread-160555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:58:58.972 [DEBUG] [Thread-160555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:58:58.972 [DEBUG] [Thread-160555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:58:58.972 [DEBUG] [Thread-160555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:58.972 [DEBUG] [Thread-160555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:58:58.972 [DEBUG] [Thread-160555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] client lang: <none>
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] server lang: <none>
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] kex follows: False
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] Compression: none
2025-09-29T15:58:58.973 [DEBUG] [Thread-160555] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:58:59.031 [DEBUG] [Thread-160555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:58:59.032 [DEBUG] [Thread-160555] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:58:59.032 [DEBUG] [Thread-160555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:58:59.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:58:59.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:58:59.087 [DEBUG] [Thread-160555] [transport.py] [_log()] userauth is OK
2025-09-29T15:58:59.087 [DEBUG] [Thread-160555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:58:59.088 [DEBUG] [Thread-160555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:58:59.088 [DEBUG] [Thread-160555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:58:59.088 [DEBUG] [Thread-160555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:58:59.106 [INFO] [Thread-160555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:58:59.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:58:59.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:00.079 [DEBUG] [Thread-160555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:00.079 [DEBUG] [Thread-160555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:00.127 [DEBUG] [Thread-160555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:00.127 [DEBUG] [Thread-160555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:00.136 [DEBUG] [Thread-160555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:00.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:00.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:59:00.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:59:00.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:00.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:00.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:00.171 [DEBUG] [Thread-160555] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:59:00.785 [DEBUG] [Thread-160557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:59:10.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:59:10.168 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:59:10.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:59:10.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 58, 38), 15.31, 35.42, 0.0, 22.41, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:59:10.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:58:38
2025-09-29T15:59:10.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:59:11.000 [DEBUG] [Thread-160558] [transport.py] [_log()] starting thread (client mode): 0x2e3c0100
2025-09-29T15:59:11.000 [DEBUG] [Thread-160558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:59:11.020 [DEBUG] [Thread-160558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:59:11.020 [INFO] [Thread-160558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:59:11.022 [DEBUG] [Thread-160558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:59:11.022 [DEBUG] [Thread-160558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] client lang: <none>
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] server lang: <none>
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] kex follows: False
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] Compression: none
2025-09-29T15:59:11.023 [DEBUG] [Thread-160558] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:59:11.036 [DEBUG] [Thread-160558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:59:11.036 [DEBUG] [Thread-160558] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:59:11.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:59:11.037 [DEBUG] [Thread-160558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:59:11.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:59:11.039 [DEBUG] [Thread-160558] [transport.py] [_log()] userauth is OK
2025-09-29T15:59:11.039 [DEBUG] [Thread-160558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:59:11.039 [DEBUG] [Thread-160558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:59:11.039 [DEBUG] [Thread-160558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:59:11.039 [DEBUG] [Thread-160558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:59:11.056 [INFO] [Thread-160558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:59:11.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:11.669 [DEBUG] [Thread-160558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:11.669 [DEBUG] [Thread-160558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:11.670 [DEBUG] [Thread-160558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:59:11.711 [DEBUG] [Thread-160558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:11.711 [DEBUG] [Thread-160558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:11.714 [DEBUG] [Thread-160558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:11.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:11.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:59:11.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:59:11.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:59:11.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:11.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:59:11.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.582359 -999.00  +15.30  21.51     41   +2.20 1 1 1 1 1   888    0 11.88 -66.14 ----- 17.3 21.5 162.4 29.1 21.8 -28.4 21.1 -27.6 22.9 -28.8 24.1 -29.8
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.582359
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:59:11.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:58:38', tmtdew=15.31, humidity=35.42, cloud=0.0, wind=22.41, temperature=15.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:58:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:59:11.735 [DEBUG] [Thread-160558] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:59:11.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:59:11.820 [DEBUG] [Thread-160561] [transport.py] [_log()] starting thread (client mode): 0x2b94dc90
2025-09-29T15:59:11.820 [DEBUG] [Thread-160561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:59:11.834 [DEBUG] [Thread-160561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:59:11.834 [INFO] [Thread-160561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:59:11.841 [DEBUG] [Thread-160561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] client lang: <none>
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] server lang: <none>
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] kex follows: False
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] Compression: none
2025-09-29T15:59:11.842 [DEBUG] [Thread-160561] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:59:11.897 [DEBUG] [Thread-160561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:59:11.898 [DEBUG] [Thread-160561] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:59:11.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:59:11.898 [DEBUG] [Thread-160561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:59:11.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:59:11.955 [DEBUG] [Thread-160561] [transport.py] [_log()] userauth is OK
2025-09-29T15:59:11.955 [DEBUG] [Thread-160561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:59:11.955 [DEBUG] [Thread-160561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:59:11.955 [DEBUG] [Thread-160561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:59:11.955 [DEBUG] [Thread-160561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:59:11.969 [INFO] [Thread-160561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:59:11.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:59:11.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:12.982 [DEBUG] [Thread-160561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:12.982 [DEBUG] [Thread-160561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:13.032 [DEBUG] [Thread-160561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:13.032 [DEBUG] [Thread-160561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:13.041 [DEBUG] [Thread-160561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:13.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:13.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:59:13.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:59:13.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:13.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:13.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:13.081 [DEBUG] [Thread-160561] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:59:15.830 [DEBUG] [Thread-160563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:59:17.308 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:59:17.309 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:59:23.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:59:23.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:59:23.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:59:23.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 59, 10), 15.3, 35.44, 0.0, 21.81, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:59:23.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:59:10
2025-09-29T15:59:23.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:59:23.911 [DEBUG] [Thread-160564] [transport.py] [_log()] starting thread (client mode): 0x2e3c25c0
2025-09-29T15:59:23.911 [DEBUG] [Thread-160564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:59:23.933 [DEBUG] [Thread-160564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:59:23.933 [INFO] [Thread-160564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:59:23.936 [DEBUG] [Thread-160564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:59:23.936 [DEBUG] [Thread-160564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:59:23.936 [DEBUG] [Thread-160564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:59:23.936 [DEBUG] [Thread-160564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] client lang: <none>
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] server lang: <none>
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] kex follows: False
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:59:23.937 [DEBUG] [Thread-160564] [transport.py] [_log()] Compression: none
2025-09-29T15:59:23.938 [DEBUG] [Thread-160564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:59:23.955 [DEBUG] [Thread-160564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:59:23.956 [DEBUG] [Thread-160564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:59:23.957 [DEBUG] [Thread-160564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:59:23.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:59:23.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:59:23.959 [DEBUG] [Thread-160564] [transport.py] [_log()] userauth is OK
2025-09-29T15:59:23.960 [DEBUG] [Thread-160564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:59:23.960 [DEBUG] [Thread-160564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:59:23.960 [DEBUG] [Thread-160564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:59:23.960 [DEBUG] [Thread-160564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:59:23.980 [INFO] [Thread-160564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:59:23.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:24.685 [DEBUG] [Thread-160564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:24.685 [DEBUG] [Thread-160564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:24.685 [DEBUG] [Thread-160564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:59:24.726 [DEBUG] [Thread-160564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:24.726 [DEBUG] [Thread-160564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:24.730 [DEBUG] [Thread-160564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:24.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:24.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:59:24.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:59:24.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:59:24.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:24.744 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:59:24.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:24.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:24.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:59:24.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.582359 -999.00  +15.30  21.51     41   +2.20 1 1 1 1 1   888    0 11.88 -66.14 ----- 17.3 21.5 162.4 29.1 21.8 -28.4 21.1 -27.6 22.9 -28.8 24.1 -29.8
2025-09-29T15:59:24.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:59:24.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:59:24.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.582359
2025-09-29T15:59:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:59:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:59:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:59:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:59:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:59:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:59:10', tmtdew=15.3, humidity=35.44, cloud=0.0, wind=21.81, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:58:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:59:24.747 [DEBUG] [Thread-160564] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:59:24.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:59:24.844 [DEBUG] [Thread-160567] [transport.py] [_log()] starting thread (client mode): 0x2e3c25f0
2025-09-29T15:59:24.844 [DEBUG] [Thread-160567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:59:24.859 [DEBUG] [Thread-160567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:59:24.860 [INFO] [Thread-160567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:59:24.868 [DEBUG] [Thread-160567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:59:24.868 [DEBUG] [Thread-160567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:59:24.868 [DEBUG] [Thread-160567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:59:24.868 [DEBUG] [Thread-160567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:24.868 [DEBUG] [Thread-160567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:24.868 [DEBUG] [Thread-160567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:24.868 [DEBUG] [Thread-160567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:24.868 [DEBUG] [Thread-160567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] client lang: <none>
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] server lang: <none>
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] kex follows: False
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] Compression: none
2025-09-29T15:59:24.869 [DEBUG] [Thread-160567] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:59:24.927 [DEBUG] [Thread-160567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:59:24.927 [DEBUG] [Thread-160567] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:59:24.928 [DEBUG] [Thread-160567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:59:24.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:59:24.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:59:24.983 [DEBUG] [Thread-160567] [transport.py] [_log()] userauth is OK
2025-09-29T15:59:24.984 [DEBUG] [Thread-160567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:59:24.984 [DEBUG] [Thread-160567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:59:24.984 [DEBUG] [Thread-160567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:59:24.984 [DEBUG] [Thread-160567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:59:25.002 [INFO] [Thread-160567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:59:25.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:59:25.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:26.061 [DEBUG] [Thread-160567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:26.061 [DEBUG] [Thread-160567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:26.109 [DEBUG] [Thread-160567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:26.109 [DEBUG] [Thread-160567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:26.118 [DEBUG] [Thread-160567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:26.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:26.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:59:26.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:59:26.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:26.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:26.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:26.152 [DEBUG] [Thread-160567] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:59:30.873 [DEBUG] [Thread-160569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:59:36.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:59:36.155 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:59:36.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:59:36.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 59, 10), 15.3, 35.44, 0.0, 21.81, 15.73, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:59:36.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:59:10
2025-09-29T15:59:36.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:59:36.990 [DEBUG] [Thread-160570] [transport.py] [_log()] starting thread (client mode): 0x2e3c2a70
2025-09-29T15:59:36.991 [DEBUG] [Thread-160570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:59:37.011 [DEBUG] [Thread-160570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:59:37.011 [INFO] [Thread-160570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] client lang: <none>
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] server lang: <none>
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] kex follows: False
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] Compression: none
2025-09-29T15:59:37.013 [DEBUG] [Thread-160570] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:59:37.031 [DEBUG] [Thread-160570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:59:37.032 [DEBUG] [Thread-160570] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:59:37.032 [DEBUG] [Thread-160570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:59:37.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:59:37.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:59:37.033 [DEBUG] [Thread-160570] [transport.py] [_log()] userauth is OK
2025-09-29T15:59:37.033 [DEBUG] [Thread-160570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:59:37.033 [DEBUG] [Thread-160570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:59:37.033 [DEBUG] [Thread-160570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:59:37.033 [DEBUG] [Thread-160570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:59:37.043 [INFO] [Thread-160570] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:59:37.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:37.796 [DEBUG] [Thread-160570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:37.796 [DEBUG] [Thread-160570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:37.796 [DEBUG] [Thread-160570] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:59:37.837 [DEBUG] [Thread-160570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:37.837 [DEBUG] [Thread-160570] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:37.840 [DEBUG] [Thread-160570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:37.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:37.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:59:37.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:59:37.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:59:37.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:37.865 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:59:37.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:37.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:37.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:59:37.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.582359 -999.00  +15.30  21.51     41   +2.20 1 1 1 1 1   888    0 11.88 -66.14 ----- 17.3 21.5 162.4 29.1 21.8 -28.4 21.1 -27.6 22.9 -28.8 24.1 -29.8
2025-09-29T15:59:37.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:59:37.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:59:37.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.582359
2025-09-29T15:59:37.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:59:37.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:59:37.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:59:37.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:59:37.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:59:37.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:59:10', tmtdew=15.3, humidity=35.44, cloud=0.0, wind=21.81, temperature=15.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:58:35.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:59:37.868 [DEBUG] [Thread-160570] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:59:37.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:59:37.956 [DEBUG] [Thread-160573] [transport.py] [_log()] starting thread (client mode): 0x2b96bfd0
2025-09-29T15:59:37.956 [DEBUG] [Thread-160573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:59:37.971 [DEBUG] [Thread-160573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:59:37.972 [INFO] [Thread-160573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:59:37.979 [DEBUG] [Thread-160573] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:59:37.979 [DEBUG] [Thread-160573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:59:37.979 [DEBUG] [Thread-160573] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] client lang: <none>
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] server lang: <none>
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] kex follows: False
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] Compression: none
2025-09-29T15:59:37.980 [DEBUG] [Thread-160573] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:59:38.038 [DEBUG] [Thread-160573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:59:38.038 [DEBUG] [Thread-160573] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:59:38.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:59:38.039 [DEBUG] [Thread-160573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:59:38.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:59:38.094 [DEBUG] [Thread-160573] [transport.py] [_log()] userauth is OK
2025-09-29T15:59:38.095 [DEBUG] [Thread-160573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:59:38.095 [DEBUG] [Thread-160573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:59:38.095 [DEBUG] [Thread-160573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:59:38.095 [DEBUG] [Thread-160573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:59:38.118 [INFO] [Thread-160573] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:59:38.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:59:38.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:39.117 [DEBUG] [Thread-160573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:39.117 [DEBUG] [Thread-160573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:39.165 [DEBUG] [Thread-160573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:39.165 [DEBUG] [Thread-160573] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:39.175 [DEBUG] [Thread-160573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:39.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:39.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:59:39.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:59:39.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:39.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:39.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:39.210 [DEBUG] [Thread-160573] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:59:45.921 [DEBUG] [Thread-160575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:59:47.617 [DEBUG] [Thread-160576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T15:59:49.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T15:59:49.209 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T15:59:49.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T15:59:49.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 59, 42), 15.46, 35.19, 0.0, 19.3, 15.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T15:59:49.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:59:42
2025-09-29T15:59:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T15:59:50.053 [DEBUG] [Thread-160577] [transport.py] [_log()] starting thread (client mode): 0x2e3c0910
2025-09-29T15:59:50.054 [DEBUG] [Thread-160577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:59:50.075 [DEBUG] [Thread-160577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T15:59:50.075 [INFO] [Thread-160577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T15:59:50.079 [DEBUG] [Thread-160577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:59:50.079 [DEBUG] [Thread-160577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T15:59:50.079 [DEBUG] [Thread-160577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:59:50.079 [DEBUG] [Thread-160577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] client lang: <none>
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] server lang: <none>
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] kex follows: False
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] Compression: none
2025-09-29T15:59:50.080 [DEBUG] [Thread-160577] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:59:50.097 [DEBUG] [Thread-160577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:59:50.097 [DEBUG] [Thread-160577] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:59:50.098 [DEBUG] [Thread-160577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T15:59:50.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T15:59:50.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:59:50.100 [DEBUG] [Thread-160577] [transport.py] [_log()] userauth is OK
2025-09-29T15:59:50.100 [DEBUG] [Thread-160577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:59:50.100 [DEBUG] [Thread-160577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:59:50.101 [DEBUG] [Thread-160577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T15:59:50.101 [DEBUG] [Thread-160577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:59:50.126 [INFO] [Thread-160577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:59:50.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:50.765 [DEBUG] [Thread-160577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:50.766 [DEBUG] [Thread-160577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:50.766 [DEBUG] [Thread-160577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T15:59:50.807 [DEBUG] [Thread-160577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:50.807 [DEBUG] [Thread-160577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:50.810 [DEBUG] [Thread-160577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:50.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:50.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T15:59:50.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T15:59:50.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T15:59:50.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:50.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T15:59:50.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:50.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:50.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T15:59:50.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.583053 -999.00  +15.40  17.73     41   +2.30 1 1 1 1 1   888    0 11.84 -71.32 ----- 15.1 17.7 130.4 22.9 21.8 -28.4 21.2 -27.4 23.1 -28.8 24.0 -29.7
2025-09-29T15:59:50.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T15:59:50.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T15:59:50.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.583053
2025-09-29T15:59:50.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T15:59:50.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T15:59:50.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T15:59:50.827 [DEBUG] [Thread-160577] [transport.py] [_log()] EOF in transport thread
2025-09-29T15:59:50.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T15:59:50.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T15:59:50.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:59:42', tmtdew=15.46, humidity=35.19, cloud=0.0, wind=19.3, temperature=15.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:59:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T15:59:50.912 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T15:59:50.921 [DEBUG] [Thread-160580] [transport.py] [_log()] starting thread (client mode): 0x2b94d0c0
2025-09-29T15:59:50.921 [DEBUG] [Thread-160580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T15:59:50.936 [DEBUG] [Thread-160580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T15:59:50.936 [INFO] [Thread-160580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T15:59:50.943 [DEBUG] [Thread-160580] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T15:59:50.944 [DEBUG] [Thread-160580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T15:59:50.944 [DEBUG] [Thread-160580] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T15:59:50.944 [DEBUG] [Thread-160580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:50.944 [DEBUG] [Thread-160580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T15:59:50.944 [DEBUG] [Thread-160580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:50.944 [DEBUG] [Thread-160580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T15:59:50.944 [DEBUG] [Thread-160580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] client lang: <none>
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] server lang: <none>
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] kex follows: False
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] Compression: none
2025-09-29T15:59:50.945 [DEBUG] [Thread-160580] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T15:59:51.002 [DEBUG] [Thread-160580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T15:59:51.003 [DEBUG] [Thread-160580] [transport.py] [_log()] Switch to new keys ...
2025-09-29T15:59:51.003 [DEBUG] [Thread-160580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T15:59:51.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T15:59:51.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T15:59:51.058 [DEBUG] [Thread-160580] [transport.py] [_log()] userauth is OK
2025-09-29T15:59:51.059 [DEBUG] [Thread-160580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T15:59:51.059 [DEBUG] [Thread-160580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T15:59:51.059 [DEBUG] [Thread-160580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T15:59:51.059 [DEBUG] [Thread-160580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T15:59:51.078 [INFO] [Thread-160580] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T15:59:51.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T15:59:51.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T15:59:52.070 [DEBUG] [Thread-160580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T15:59:52.070 [DEBUG] [Thread-160580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T15:59:52.119 [DEBUG] [Thread-160580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T15:59:52.119 [DEBUG] [Thread-160580] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T15:59:52.127 [DEBUG] [Thread-160580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T15:59:52.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T15:59:52.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T15:59:52.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T15:59:52.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T15:59:52.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T15:59:52.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T15:59:52.159 [DEBUG] [Thread-160580] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:00.953 [DEBUG] [Thread-160582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:00:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:00:02.156 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:00:02.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:00:02.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 15, 59, 42), 15.46, 35.19, 0.0, 19.3, 15.76, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:00:02.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 15:59:42
2025-09-29T16:00:02.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:00:03.002 [DEBUG] [Thread-160583] [transport.py] [_log()] starting thread (client mode): 0x2b94de70
2025-09-29T16:00:03.002 [DEBUG] [Thread-160583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:03.017 [DEBUG] [Thread-160583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:00:03.017 [INFO] [Thread-160583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] Compression: none
2025-09-29T16:00:03.019 [DEBUG] [Thread-160583] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:03.026 [DEBUG] [Thread-160583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:03.026 [DEBUG] [Thread-160583] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:03.026 [DEBUG] [Thread-160583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:00:03.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:00:03.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:03.027 [DEBUG] [Thread-160583] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:03.027 [DEBUG] [Thread-160583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:03.027 [DEBUG] [Thread-160583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:03.027 [DEBUG] [Thread-160583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:00:03.027 [DEBUG] [Thread-160583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:00:03.035 [INFO] [Thread-160583] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:00:03.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:00:08.620 [DEBUG] [Thread-160583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:00:08.620 [DEBUG] [Thread-160583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:00:08.620 [DEBUG] [Thread-160583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:00:08.660 [DEBUG] [Thread-160583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:00:08.660 [DEBUG] [Thread-160583] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:00:08.664 [DEBUG] [Thread-160583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:00:08.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:00:08.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:00:08.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:00:08.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:00:08.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:00:08.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:00:08.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:00:08.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:00:08.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:00:08.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.583053 -999.00  +15.40  17.73     41   +2.30 1 1 1 1 1   888    0 11.84 -71.32 ----- 15.1 17.7 130.4 22.9 21.8 -28.4 21.2 -27.4 23.1 -28.8 24.0 -29.7
2025-09-29T16:00:08.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:00:08.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:00:08.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.583053
2025-09-29T16:00:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:00:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:00:08.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:00:08.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:00:08.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:00:08.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T15:59:42', tmtdew=15.46, humidity=35.19, cloud=0.0, wind=19.3, temperature=15.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T13:59:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:00:08.824 [DEBUG] [Thread-160583] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:08.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:00:08.923 [DEBUG] [Thread-160586] [transport.py] [_log()] starting thread (client mode): 0x2b94f400
2025-09-29T16:00:08.923 [DEBUG] [Thread-160586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:08.938 [DEBUG] [Thread-160586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:00:08.938 [INFO] [Thread-160586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:00:08.945 [DEBUG] [Thread-160586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:08.946 [DEBUG] [Thread-160586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:08.947 [DEBUG] [Thread-160586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:08.947 [DEBUG] [Thread-160586] [transport.py] [_log()] Compression: none
2025-09-29T16:00:08.947 [DEBUG] [Thread-160586] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:09.002 [DEBUG] [Thread-160586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:09.002 [DEBUG] [Thread-160586] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:09.003 [DEBUG] [Thread-160586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:00:09.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:00:09.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:09.058 [DEBUG] [Thread-160586] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:09.059 [DEBUG] [Thread-160586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:09.059 [DEBUG] [Thread-160586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:09.059 [DEBUG] [Thread-160586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:00:09.059 [DEBUG] [Thread-160586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:00:09.078 [INFO] [Thread-160586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:00:09.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:00:09.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:00:10.024 [DEBUG] [Thread-160586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:00:10.024 [DEBUG] [Thread-160586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:00:10.072 [DEBUG] [Thread-160586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:00:10.072 [DEBUG] [Thread-160586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:00:10.081 [DEBUG] [Thread-160586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:00:10.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:00:10.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:00:10.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:00:10.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:00:10.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:00:10.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:00:10.116 [DEBUG] [Thread-160586] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:16.002 [DEBUG] [Thread-160588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:00:17.448 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:00:17.449 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:00:20.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:00:20.116 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:00:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:00:20.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 0, 14), 15.39, 35.33, 0.0, 16.75, 15.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:00:20.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:00:14
2025-09-29T16:00:20.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:00:20.969 [DEBUG] [Thread-160589] [transport.py] [_log()] starting thread (client mode): 0x2e3c3790
2025-09-29T16:00:20.969 [DEBUG] [Thread-160589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:20.990 [DEBUG] [Thread-160589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:00:20.990 [INFO] [Thread-160589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:20.994 [DEBUG] [Thread-160589] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] Compression: none
2025-09-29T16:00:20.995 [DEBUG] [Thread-160589] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:21.012 [DEBUG] [Thread-160589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:21.012 [DEBUG] [Thread-160589] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:21.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:00:21.013 [DEBUG] [Thread-160589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:00:21.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:21.015 [DEBUG] [Thread-160589] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:21.015 [DEBUG] [Thread-160589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:21.015 [DEBUG] [Thread-160589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:21.015 [DEBUG] [Thread-160589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:00:21.015 [DEBUG] [Thread-160589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:00:21.040 [INFO] [Thread-160589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:00:21.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:00:21.629 [DEBUG] [Thread-160589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:00:21.630 [DEBUG] [Thread-160589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:00:21.630 [DEBUG] [Thread-160589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:00:21.670 [DEBUG] [Thread-160589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:00:21.670 [DEBUG] [Thread-160589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:00:21.672 [DEBUG] [Thread-160589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:00:21.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:00:21.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:00:21.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:00:21.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:00:21.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:00:21.693 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:00:21.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:00:21.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:00:21.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:00:21.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.583400 -999.00  +15.40  15.67     41   +2.40 1 1 1 1 1   888    0 11.44 -83.19 ----- 14.6 15.7 141.6 23.3 21.8 -28.2 21.3 -27.9 23.1 -29.2 24.0 -29.9
2025-09-29T16:00:21.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:00:21.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:00:21.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.583400
2025-09-29T16:00:21.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:00:21.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:00:21.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:00:21.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:00:21.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:00:21.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:00:14', tmtdew=15.39, humidity=35.33, cloud=0.0, wind=16.75, temperature=15.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:00:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:00:21.696 [DEBUG] [Thread-160589] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:21.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:00:21.793 [DEBUG] [Thread-160592] [transport.py] [_log()] starting thread (client mode): 0x2b968910
2025-09-29T16:00:21.793 [DEBUG] [Thread-160592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:21.809 [DEBUG] [Thread-160592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:00:21.809 [INFO] [Thread-160592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:00:21.816 [DEBUG] [Thread-160592] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] Compression: none
2025-09-29T16:00:21.817 [DEBUG] [Thread-160592] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:21.873 [DEBUG] [Thread-160592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:21.874 [DEBUG] [Thread-160592] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:21.874 [DEBUG] [Thread-160592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:00:21.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:00:21.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:21.930 [DEBUG] [Thread-160592] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:21.930 [DEBUG] [Thread-160592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:21.930 [DEBUG] [Thread-160592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:21.930 [DEBUG] [Thread-160592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:00:21.930 [DEBUG] [Thread-160592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:00:21.949 [INFO] [Thread-160592] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:00:21.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:00:21.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:00:22.957 [DEBUG] [Thread-160592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:00:22.957 [DEBUG] [Thread-160592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:00:23.005 [DEBUG] [Thread-160592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:00:23.005 [DEBUG] [Thread-160592] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:00:23.014 [DEBUG] [Thread-160592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:00:23.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:00:23.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:00:23.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:00:23.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:00:23.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:00:23.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:00:23.048 [DEBUG] [Thread-160592] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:31.028 [DEBUG] [Thread-160594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:00:33.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:00:33.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:00:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:00:33.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 0, 14), 15.39, 35.33, 0.0, 16.75, 15.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:00:33.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:00:14
2025-09-29T16:00:33.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:00:33.917 [DEBUG] [Thread-160595] [transport.py] [_log()] starting thread (client mode): 0x2e3fa1a0
2025-09-29T16:00:33.917 [DEBUG] [Thread-160595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:33.938 [DEBUG] [Thread-160595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:00:33.938 [INFO] [Thread-160595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] Compression: none
2025-09-29T16:00:33.941 [DEBUG] [Thread-160595] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:33.956 [DEBUG] [Thread-160595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:33.956 [DEBUG] [Thread-160595] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:33.956 [DEBUG] [Thread-160595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:00:33.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:00:33.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:33.957 [DEBUG] [Thread-160595] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:33.957 [DEBUG] [Thread-160595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:33.957 [DEBUG] [Thread-160595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:33.957 [DEBUG] [Thread-160595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:00:33.957 [DEBUG] [Thread-160595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:00:33.967 [INFO] [Thread-160595] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:00:33.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:00:34.731 [DEBUG] [Thread-160595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:00:34.731 [DEBUG] [Thread-160595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:00:34.732 [DEBUG] [Thread-160595] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:00:34.773 [DEBUG] [Thread-160595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:00:34.773 [DEBUG] [Thread-160595] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:00:34.775 [DEBUG] [Thread-160595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:00:34.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:00:34.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:00:34.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:00:34.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:00:34.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:00:34.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:00:34.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.583400 -999.00  +15.40  15.67     41   +2.40 1 1 1 1 1   888    0 11.44 -83.19 ----- 14.6 15.7 141.6 23.3 21.8 -28.2 21.3 -27.9 23.1 -29.2 24.0 -29.9
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.583400
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:00:34.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:00:14', tmtdew=15.39, humidity=35.33, cloud=0.0, wind=16.75, temperature=15.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:00:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:00:34.792 [DEBUG] [Thread-160595] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:34.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:00:34.877 [DEBUG] [Thread-160598] [transport.py] [_log()] starting thread (client mode): 0x2e3c3df0
2025-09-29T16:00:34.877 [DEBUG] [Thread-160598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:34.893 [DEBUG] [Thread-160598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:00:34.893 [INFO] [Thread-160598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] Compression: none
2025-09-29T16:00:34.901 [DEBUG] [Thread-160598] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:34.957 [DEBUG] [Thread-160598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:34.957 [DEBUG] [Thread-160598] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:34.957 [DEBUG] [Thread-160598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:00:34.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:00:34.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:35.014 [DEBUG] [Thread-160598] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:35.014 [DEBUG] [Thread-160598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:35.014 [DEBUG] [Thread-160598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:35.014 [DEBUG] [Thread-160598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:00:35.014 [DEBUG] [Thread-160598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:00:35.032 [INFO] [Thread-160598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:00:35.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:00:35.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:00:36.012 [DEBUG] [Thread-160598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:00:36.012 [DEBUG] [Thread-160598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:00:36.060 [DEBUG] [Thread-160598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:00:36.060 [DEBUG] [Thread-160598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:00:36.069 [DEBUG] [Thread-160598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:00:36.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:00:36.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:00:36.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:00:36.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:00:36.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:00:36.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:00:36.101 [DEBUG] [Thread-160598] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:46.066 [DEBUG] [Thread-160600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:00:46.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:00:46.104 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:00:46.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:00:46.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 0, 14), 15.39, 35.33, 0.0, 16.75, 15.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:00:46.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:00:14
2025-09-29T16:00:46.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:00:46.946 [DEBUG] [Thread-160601] [transport.py] [_log()] starting thread (client mode): 0x2b969210
2025-09-29T16:00:46.946 [DEBUG] [Thread-160601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:46.967 [DEBUG] [Thread-160601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:00:46.967 [INFO] [Thread-160601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:00:46.969 [DEBUG] [Thread-160601] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:46.969 [DEBUG] [Thread-160601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:00:46.969 [DEBUG] [Thread-160601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:46.969 [DEBUG] [Thread-160601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:46.969 [DEBUG] [Thread-160601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:46.969 [DEBUG] [Thread-160601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:46.969 [DEBUG] [Thread-160601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] Compression: none
2025-09-29T16:00:46.970 [DEBUG] [Thread-160601] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:46.985 [DEBUG] [Thread-160601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:46.986 [DEBUG] [Thread-160601] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:46.986 [DEBUG] [Thread-160601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:00:46.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:00:46.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:46.986 [DEBUG] [Thread-160601] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:46.986 [DEBUG] [Thread-160601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:46.986 [DEBUG] [Thread-160601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:46.986 [DEBUG] [Thread-160601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:00:46.986 [DEBUG] [Thread-160601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:00:46.996 [INFO] [Thread-160601] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:00:46.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:00:47.644 [DEBUG] [Thread-160603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:00:47.725 [DEBUG] [Thread-160601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:00:47.725 [DEBUG] [Thread-160601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:00:47.725 [DEBUG] [Thread-160601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:00:47.766 [DEBUG] [Thread-160601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:00:47.766 [DEBUG] [Thread-160601] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:00:47.768 [DEBUG] [Thread-160601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:00:47.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:00:47.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:00:47.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:00:47.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:00:47.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:00:47.786 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:00:47.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.583400 -999.00  +15.40  15.67     41   +2.40 1 1 1 1 1   888    0 11.44 -83.19 ----- 14.6 15.7 141.6 23.3 21.8 -28.2 21.3 -27.9 23.1 -29.2 24.0 -29.9
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.583400
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:00:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:00:14', tmtdew=15.39, humidity=35.33, cloud=0.0, wind=16.75, temperature=15.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:00:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:00:47.787 [DEBUG] [Thread-160601] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:47.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:00:47.872 [DEBUG] [Thread-160605] [transport.py] [_log()] starting thread (client mode): 0x2b91cee0
2025-09-29T16:00:47.872 [DEBUG] [Thread-160605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:47.887 [DEBUG] [Thread-160605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:00:47.887 [INFO] [Thread-160605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:47.894 [DEBUG] [Thread-160605] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] Compression: none
2025-09-29T16:00:47.895 [DEBUG] [Thread-160605] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:47.953 [DEBUG] [Thread-160605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:47.954 [DEBUG] [Thread-160605] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:47.954 [DEBUG] [Thread-160605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:00:47.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:00:47.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:48.014 [DEBUG] [Thread-160605] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:48.014 [DEBUG] [Thread-160605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:48.014 [DEBUG] [Thread-160605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:48.014 [DEBUG] [Thread-160605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:00:48.014 [DEBUG] [Thread-160605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:00:48.030 [INFO] [Thread-160605] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:00:48.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:00:48.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:00:49.019 [DEBUG] [Thread-160605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:00:49.020 [DEBUG] [Thread-160605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:00:49.067 [DEBUG] [Thread-160605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:00:49.067 [DEBUG] [Thread-160605] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:00:49.075 [DEBUG] [Thread-160605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:00:49.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:00:49.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:00:49.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:00:49.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:00:49.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:00:49.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:00:49.112 [DEBUG] [Thread-160605] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:00:59.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:00:59.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:00:59.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:00:59.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 0, 46), 15.11, 35.84, 0.0, 17.31, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:00:59.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:00:46
2025-09-29T16:00:59.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:00:59.940 [DEBUG] [Thread-160607] [transport.py] [_log()] starting thread (client mode): 0x2e3610f0
2025-09-29T16:00:59.940 [DEBUG] [Thread-160607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:00:59.962 [DEBUG] [Thread-160607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:00:59.962 [INFO] [Thread-160607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] client lang: <none>
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] server lang: <none>
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] kex follows: False
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] Compression: none
2025-09-29T16:00:59.965 [DEBUG] [Thread-160607] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:00:59.983 [DEBUG] [Thread-160607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:00:59.983 [DEBUG] [Thread-160607] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:00:59.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:00:59.984 [DEBUG] [Thread-160607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:00:59.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:00:59.986 [DEBUG] [Thread-160607] [transport.py] [_log()] userauth is OK
2025-09-29T16:00:59.987 [DEBUG] [Thread-160607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:00:59.987 [DEBUG] [Thread-160607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:00:59.987 [DEBUG] [Thread-160607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:00:59.987 [DEBUG] [Thread-160607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:00.004 [INFO] [Thread-160607] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:00.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:00.652 [DEBUG] [Thread-160607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:00.652 [DEBUG] [Thread-160607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:00.653 [DEBUG] [Thread-160607] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:01:00.693 [DEBUG] [Thread-160607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:00.693 [DEBUG] [Thread-160607] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:00.695 [DEBUG] [Thread-160607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:00.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:00.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:01:00.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:01:00.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:01:00.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:00.711 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:01:00.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:00.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:00.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:01:00.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.583747 -999.00  +15.70  16.78     41   +2.50 1 1 1 1 1   888    0 11.61 -79.55 ----- 17.5 16.8 150.6 21.8 21.7 -28.4 21.3 -27.6 23.1 -29.4 24.0 -29.7
2025-09-29T16:01:00.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:01:00.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:01:00.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.583747
2025-09-29T16:01:00.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:01:00.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:01:00.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:01:00.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:01:00.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:01:00.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:00:46', tmtdew=15.11, humidity=35.84, cloud=0.0, wind=17.31, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:00:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:01:00.714 [DEBUG] [Thread-160607] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:00.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:01:00.807 [DEBUG] [Thread-160610] [transport.py] [_log()] starting thread (client mode): 0x2e3c01c0
2025-09-29T16:01:00.807 [DEBUG] [Thread-160610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:00.822 [DEBUG] [Thread-160610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:01:00.822 [INFO] [Thread-160610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:01:00.829 [DEBUG] [Thread-160610] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] Compression: none
2025-09-29T16:01:00.830 [DEBUG] [Thread-160610] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:00.885 [DEBUG] [Thread-160610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:00.886 [DEBUG] [Thread-160610] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:00.886 [DEBUG] [Thread-160610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:01:00.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:01:00.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:00.942 [DEBUG] [Thread-160610] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:00.942 [DEBUG] [Thread-160610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:00.942 [DEBUG] [Thread-160610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:00.942 [DEBUG] [Thread-160610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:01:00.942 [DEBUG] [Thread-160610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:00.962 [INFO] [Thread-160610] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:00.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:01:00.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:01.098 [DEBUG] [Thread-160612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:01:01.967 [DEBUG] [Thread-160610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:01.967 [DEBUG] [Thread-160610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:02.016 [DEBUG] [Thread-160610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:02.016 [DEBUG] [Thread-160610] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:02.024 [DEBUG] [Thread-160610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:02.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:02.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:01:02.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:01:02.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:02.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:02.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:02.056 [DEBUG] [Thread-160610] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:12.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:01:12.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:01:12.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:01:12.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 0, 46), 15.11, 35.84, 0.0, 17.31, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:01:12.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:00:46
2025-09-29T16:01:12.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:01:12.896 [DEBUG] [Thread-160613] [transport.py] [_log()] starting thread (client mode): 0x2e3f8f40
2025-09-29T16:01:12.896 [DEBUG] [Thread-160613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:12.916 [DEBUG] [Thread-160613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:01:12.916 [INFO] [Thread-160613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:01:12.919 [DEBUG] [Thread-160613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:12.919 [DEBUG] [Thread-160613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:01:12.919 [DEBUG] [Thread-160613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:12.919 [DEBUG] [Thread-160613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:12.919 [DEBUG] [Thread-160613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:12.919 [DEBUG] [Thread-160613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] Compression: none
2025-09-29T16:01:12.920 [DEBUG] [Thread-160613] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:12.936 [DEBUG] [Thread-160613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:12.936 [DEBUG] [Thread-160613] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:12.937 [DEBUG] [Thread-160613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:01:12.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:01:12.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:12.937 [DEBUG] [Thread-160613] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:12.937 [DEBUG] [Thread-160613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:12.937 [DEBUG] [Thread-160613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:12.937 [DEBUG] [Thread-160613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:01:12.937 [DEBUG] [Thread-160613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:12.947 [INFO] [Thread-160613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:12.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:13.673 [DEBUG] [Thread-160613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:13.673 [DEBUG] [Thread-160613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:13.673 [DEBUG] [Thread-160613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:01:13.714 [DEBUG] [Thread-160613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:13.714 [DEBUG] [Thread-160613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:13.716 [DEBUG] [Thread-160613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:13.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:13.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:01:13.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:01:13.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:01:13.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:13.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:01:13.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:13.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:01:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.583747 -999.00  +15.70  16.78     41   +2.50 1 1 1 1 1   888    0 11.61 -79.55 ----- 17.5 16.8 150.6 21.8 21.7 -28.4 21.3 -27.6 23.1 -29.4 24.0 -29.7
2025-09-29T16:01:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:01:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:01:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.583747
2025-09-29T16:01:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:01:13.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:01:13.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:01:13.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:01:13.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:01:13.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:00:46', tmtdew=15.11, humidity=35.84, cloud=0.0, wind=17.31, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:00:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:01:13.733 [DEBUG] [Thread-160613] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:13.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:01:13.819 [DEBUG] [Thread-160616] [transport.py] [_log()] starting thread (client mode): 0x2e3f8820
2025-09-29T16:01:13.819 [DEBUG] [Thread-160616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:13.833 [DEBUG] [Thread-160616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:01:13.833 [INFO] [Thread-160616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] Compression: none
2025-09-29T16:01:13.841 [DEBUG] [Thread-160616] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:13.896 [DEBUG] [Thread-160616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:13.896 [DEBUG] [Thread-160616] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:13.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:01:13.896 [DEBUG] [Thread-160616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:01:13.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:13.955 [DEBUG] [Thread-160616] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:13.956 [DEBUG] [Thread-160616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:13.956 [DEBUG] [Thread-160616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:13.956 [DEBUG] [Thread-160616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:01:13.956 [DEBUG] [Thread-160616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:13.969 [INFO] [Thread-160616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:13.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:01:13.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:14.930 [DEBUG] [Thread-160616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:14.930 [DEBUG] [Thread-160616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:14.978 [DEBUG] [Thread-160616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:14.978 [DEBUG] [Thread-160616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:14.986 [DEBUG] [Thread-160616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:14.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:14.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:01:15.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:01:15.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:15.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:15.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:15.018 [DEBUG] [Thread-160616] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:16.149 [DEBUG] [Thread-160618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:01:17.587 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:01:17.589 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:01:25.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:01:25.020 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:01:25.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:01:25.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 1, 18), 15.05, 35.97, 0.0, 18.63, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:01:25.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:01:18
2025-09-29T16:01:25.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:01:25.844 [DEBUG] [Thread-160619] [transport.py] [_log()] starting thread (client mode): 0x2b96bee0
2025-09-29T16:01:25.844 [DEBUG] [Thread-160619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:25.864 [DEBUG] [Thread-160619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:01:25.864 [INFO] [Thread-160619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] Compression: none
2025-09-29T16:01:25.868 [DEBUG] [Thread-160619] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:25.880 [DEBUG] [Thread-160619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:25.880 [DEBUG] [Thread-160619] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:25.881 [DEBUG] [Thread-160619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:01:25.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:01:25.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:25.883 [DEBUG] [Thread-160619] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:25.883 [DEBUG] [Thread-160619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:25.883 [DEBUG] [Thread-160619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:25.883 [DEBUG] [Thread-160619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:01:25.883 [DEBUG] [Thread-160619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:25.906 [INFO] [Thread-160619] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:25.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:26.563 [DEBUG] [Thread-160619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:26.563 [DEBUG] [Thread-160619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:26.564 [DEBUG] [Thread-160619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:01:26.604 [DEBUG] [Thread-160619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:26.604 [DEBUG] [Thread-160619] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:26.607 [DEBUG] [Thread-160619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:26.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:26.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:01:26.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:01:26.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:01:26.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:26.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:01:26.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:26.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:26.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:01:26.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.584095 -999.00  +15.60  18.89     41   +2.40 1 1 1 1 1   888    0 11.49 -78.88 ----- 21.0 18.9 144.2 23.5 21.7 -29.3 21.3 -28.1 23.0 -28.4 24.0 -30.5
2025-09-29T16:01:26.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:01:26.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:01:26.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.584095
2025-09-29T16:01:26.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:01:26.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:01:26.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:01:26.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:01:26.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:01:26.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:01:18', tmtdew=15.05, humidity=35.97, cloud=0.0, wind=18.63, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:01:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:01:26.632 [DEBUG] [Thread-160619] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:26.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:01:26.728 [DEBUG] [Thread-160622] [transport.py] [_log()] starting thread (client mode): 0x2e3dca90
2025-09-29T16:01:26.728 [DEBUG] [Thread-160622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:26.742 [DEBUG] [Thread-160622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:01:26.742 [INFO] [Thread-160622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:01:26.749 [DEBUG] [Thread-160622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:26.749 [DEBUG] [Thread-160622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:01:26.749 [DEBUG] [Thread-160622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] Compression: none
2025-09-29T16:01:26.750 [DEBUG] [Thread-160622] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:26.806 [DEBUG] [Thread-160622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:26.807 [DEBUG] [Thread-160622] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:26.807 [DEBUG] [Thread-160622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:01:26.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:01:26.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:26.862 [DEBUG] [Thread-160622] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:26.862 [DEBUG] [Thread-160622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:26.862 [DEBUG] [Thread-160622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:26.862 [DEBUG] [Thread-160622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:01:26.862 [DEBUG] [Thread-160622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:26.880 [INFO] [Thread-160622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:26.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:01:26.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:27.859 [DEBUG] [Thread-160622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:27.859 [DEBUG] [Thread-160622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:27.907 [DEBUG] [Thread-160622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:27.907 [DEBUG] [Thread-160622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:27.916 [DEBUG] [Thread-160622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:27.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:27.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:01:27.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:01:27.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:27.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:27.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:27.951 [DEBUG] [Thread-160622] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:31.176 [DEBUG] [Thread-160624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:01:37.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:01:37.955 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:01:37.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:01:38.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 1, 18), 15.05, 35.97, 0.0, 18.63, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:01:38.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:01:18
2025-09-29T16:01:38.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:01:38.805 [DEBUG] [Thread-160625] [transport.py] [_log()] starting thread (client mode): 0x2e3f8b20
2025-09-29T16:01:38.806 [DEBUG] [Thread-160625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:38.825 [DEBUG] [Thread-160625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:01:38.826 [INFO] [Thread-160625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] Compression: none
2025-09-29T16:01:38.829 [DEBUG] [Thread-160625] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:38.848 [DEBUG] [Thread-160625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:38.849 [DEBUG] [Thread-160625] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:38.849 [DEBUG] [Thread-160625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:01:38.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:01:38.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:38.851 [DEBUG] [Thread-160625] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:38.851 [DEBUG] [Thread-160625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:38.851 [DEBUG] [Thread-160625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:38.851 [DEBUG] [Thread-160625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:01:38.851 [DEBUG] [Thread-160625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:38.875 [INFO] [Thread-160625] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:38.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:39.639 [DEBUG] [Thread-160625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:39.639 [DEBUG] [Thread-160625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:39.639 [DEBUG] [Thread-160625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:01:39.680 [DEBUG] [Thread-160625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:39.680 [DEBUG] [Thread-160625] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:39.683 [DEBUG] [Thread-160625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:39.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:39.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:01:39.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:01:39.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:01:39.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:39.704 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:01:39.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:39.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:39.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:01:39.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.584095 -999.00  +15.60  18.89     41   +2.40 1 1 1 1 1   888    0 11.49 -78.88 ----- 21.0 18.9 144.2 23.5 21.7 -29.3 21.3 -28.1 23.0 -28.4 24.0 -30.5
2025-09-29T16:01:39.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:01:39.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:01:39.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.584095
2025-09-29T16:01:39.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:01:39.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:01:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:01:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:01:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:01:39.707 [DEBUG] [Thread-160625] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:01:18', tmtdew=15.05, humidity=35.97, cloud=0.0, wind=18.63, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:01:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:01:39.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:01:39.803 [DEBUG] [Thread-160628] [transport.py] [_log()] starting thread (client mode): 0x2e3f8a00
2025-09-29T16:01:39.803 [DEBUG] [Thread-160628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:39.821 [DEBUG] [Thread-160628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:01:39.821 [INFO] [Thread-160628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:01:39.828 [DEBUG] [Thread-160628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:39.829 [DEBUG] [Thread-160628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:39.830 [DEBUG] [Thread-160628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:39.830 [DEBUG] [Thread-160628] [transport.py] [_log()] Compression: none
2025-09-29T16:01:39.830 [DEBUG] [Thread-160628] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:39.885 [DEBUG] [Thread-160628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:39.886 [DEBUG] [Thread-160628] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:39.886 [DEBUG] [Thread-160628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:01:39.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:01:39.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:39.942 [DEBUG] [Thread-160628] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:39.942 [DEBUG] [Thread-160628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:39.942 [DEBUG] [Thread-160628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:39.942 [DEBUG] [Thread-160628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:01:39.942 [DEBUG] [Thread-160628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:39.960 [INFO] [Thread-160628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:39.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:01:39.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:40.920 [DEBUG] [Thread-160628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:40.920 [DEBUG] [Thread-160628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:40.968 [DEBUG] [Thread-160628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:40.968 [DEBUG] [Thread-160628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:40.977 [DEBUG] [Thread-160628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:40.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:40.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:01:40.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:01:41.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:41.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:41.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:41.012 [DEBUG] [Thread-160628] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:46.231 [DEBUG] [Thread-160630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:01:47.677 [DEBUG] [Thread-160631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:01:51.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:01:51.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:01:51.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:01:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 1, 18), 15.05, 35.97, 0.0, 18.63, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:01:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:01:18
2025-09-29T16:01:51.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:01:51.912 [DEBUG] [Thread-160632] [transport.py] [_log()] starting thread (client mode): 0x2b91d510
2025-09-29T16:01:51.912 [DEBUG] [Thread-160632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:51.927 [DEBUG] [Thread-160632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:01:51.928 [INFO] [Thread-160632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] Compression: none
2025-09-29T16:01:51.931 [DEBUG] [Thread-160632] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:51.946 [DEBUG] [Thread-160632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:51.946 [DEBUG] [Thread-160632] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:51.946 [DEBUG] [Thread-160632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:01:51.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:01:51.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:51.947 [DEBUG] [Thread-160632] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:51.947 [DEBUG] [Thread-160632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:51.947 [DEBUG] [Thread-160632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:51.947 [DEBUG] [Thread-160632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:01:51.947 [DEBUG] [Thread-160632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:51.960 [INFO] [Thread-160632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:51.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:52.751 [DEBUG] [Thread-160632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:52.751 [DEBUG] [Thread-160632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:52.752 [DEBUG] [Thread-160632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:01:52.792 [DEBUG] [Thread-160632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:52.792 [DEBUG] [Thread-160632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:52.796 [DEBUG] [Thread-160632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:52.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:52.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:01:52.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:01:52.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:01:52.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:52.813 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:01:52.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.584095 -999.00  +15.60  18.89     41   +2.40 1 1 1 1 1   888    0 11.49 -78.88 ----- 21.0 18.9 144.2 23.5 21.7 -29.3 21.3 -28.1 23.0 -28.4 24.0 -30.5
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.584095
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:01:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:01:52.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:01:18', tmtdew=15.05, humidity=35.97, cloud=0.0, wind=18.63, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:01:05.808', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:01:52.814 [DEBUG] [Thread-160632] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:01:52.886 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:01:52.895 [DEBUG] [Thread-160635] [transport.py] [_log()] starting thread (client mode): 0x2e3f8fd0
2025-09-29T16:01:52.895 [DEBUG] [Thread-160635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:01:52.909 [DEBUG] [Thread-160635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:01:52.910 [INFO] [Thread-160635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] client lang: <none>
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] server lang: <none>
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] kex follows: False
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:01:52.917 [DEBUG] [Thread-160635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:01:52.918 [DEBUG] [Thread-160635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:01:52.918 [DEBUG] [Thread-160635] [transport.py] [_log()] Compression: none
2025-09-29T16:01:52.918 [DEBUG] [Thread-160635] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:01:52.976 [DEBUG] [Thread-160635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:01:52.976 [DEBUG] [Thread-160635] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:01:52.976 [DEBUG] [Thread-160635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:01:52.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:01:52.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:01:53.034 [DEBUG] [Thread-160635] [transport.py] [_log()] userauth is OK
2025-09-29T16:01:53.034 [DEBUG] [Thread-160635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:01:53.034 [DEBUG] [Thread-160635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:01:53.034 [DEBUG] [Thread-160635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:01:53.034 [DEBUG] [Thread-160635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:01:53.047 [INFO] [Thread-160635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:01:53.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:01:53.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:01:54.037 [DEBUG] [Thread-160635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:01:54.037 [DEBUG] [Thread-160635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:01:54.085 [DEBUG] [Thread-160635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:01:54.085 [DEBUG] [Thread-160635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:01:54.094 [DEBUG] [Thread-160635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:01:54.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:01:54.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:01:54.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:01:54.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:01:54.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:01:54.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:01:54.126 [DEBUG] [Thread-160635] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:01.261 [DEBUG] [Thread-160637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:02:04.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:02:04.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:02:04.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:02:04.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 1, 50), 15.26, 35.45, 0.0, 26.27, 15.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:02:04.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:01:50
2025-09-29T16:02:04.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:02:04.970 [DEBUG] [Thread-160638] [transport.py] [_log()] starting thread (client mode): 0x2b91e8c0
2025-09-29T16:02:04.970 [DEBUG] [Thread-160638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:04.989 [DEBUG] [Thread-160638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:02:04.989 [INFO] [Thread-160638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:02:04.992 [DEBUG] [Thread-160638] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:04.992 [DEBUG] [Thread-160638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:02:04.992 [DEBUG] [Thread-160638] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:04.992 [DEBUG] [Thread-160638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:04.992 [DEBUG] [Thread-160638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:04.992 [DEBUG] [Thread-160638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:04.992 [DEBUG] [Thread-160638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:04.992 [DEBUG] [Thread-160638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] Compression: none
2025-09-29T16:02:04.993 [DEBUG] [Thread-160638] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:05.009 [DEBUG] [Thread-160638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:05.010 [DEBUG] [Thread-160638] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:05.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:02:05.011 [DEBUG] [Thread-160638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:02:05.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:05.012 [DEBUG] [Thread-160638] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:05.012 [DEBUG] [Thread-160638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:05.012 [DEBUG] [Thread-160638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:05.013 [DEBUG] [Thread-160638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:02:05.013 [DEBUG] [Thread-160638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:05.026 [INFO] [Thread-160638] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:05.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:05.598 [DEBUG] [Thread-160638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:05.598 [DEBUG] [Thread-160638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:05.599 [DEBUG] [Thread-160638] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:02:05.639 [DEBUG] [Thread-160638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:05.639 [DEBUG] [Thread-160638] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:05.644 [DEBUG] [Thread-160638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:05.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:05.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:02:05.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:02:05.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:02:05.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:05.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:02:05.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:05.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:05.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:02:05.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.584442 -999.00  +15.50  17.20     41   +2.50 1 1 1 1 1   887    0 11.38 -82.54 ----- 15.6 17.2 143.2 20.8 21.6 -29.8 21.1 -27.7 23.0 -27.6 23.9 -29.2
2025-09-29T16:02:05.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:02:05.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:02:05.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.584442
2025-09-29T16:02:05.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:02:05.668 [DEBUG] [Thread-160638] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:05.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:02:05.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:02:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:02:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:02:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:01:50', tmtdew=15.26, humidity=35.45, cloud=0.0, wind=26.27, temperature=15.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:01:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:02:05.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:02:05.772 [DEBUG] [Thread-160641] [transport.py] [_log()] starting thread (client mode): 0x2b969a20
2025-09-29T16:02:05.772 [DEBUG] [Thread-160641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:05.789 [DEBUG] [Thread-160641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:02:05.789 [INFO] [Thread-160641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:05.797 [DEBUG] [Thread-160641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:05.798 [DEBUG] [Thread-160641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:05.798 [DEBUG] [Thread-160641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:05.798 [DEBUG] [Thread-160641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:05.798 [DEBUG] [Thread-160641] [transport.py] [_log()] Compression: none
2025-09-29T16:02:05.798 [DEBUG] [Thread-160641] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:05.853 [DEBUG] [Thread-160641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:05.854 [DEBUG] [Thread-160641] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:05.854 [DEBUG] [Thread-160641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:02:05.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:02:05.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:05.910 [DEBUG] [Thread-160641] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:05.910 [DEBUG] [Thread-160641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:05.910 [DEBUG] [Thread-160641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:05.910 [DEBUG] [Thread-160641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:02:05.910 [DEBUG] [Thread-160641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:05.930 [INFO] [Thread-160641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:05.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:02:05.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:06.942 [DEBUG] [Thread-160641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:06.942 [DEBUG] [Thread-160641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:06.990 [DEBUG] [Thread-160641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:06.990 [DEBUG] [Thread-160641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:06.999 [DEBUG] [Thread-160641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:07.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:07.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:02:07.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:02:07.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:07.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:07.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:07.034 [DEBUG] [Thread-160641] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:16.297 [DEBUG] [Thread-160643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:02:17.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:02:17.034 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:02:17.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:02:17.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 1, 50), 15.26, 35.45, 0.0, 26.27, 15.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:02:17.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:01:50
2025-09-29T16:02:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:02:17.728 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:02:17.729 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:02:17.861 [DEBUG] [Thread-160644] [transport.py] [_log()] starting thread (client mode): 0x2b9cceb0
2025-09-29T16:02:17.861 [DEBUG] [Thread-160644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:17.875 [DEBUG] [Thread-160644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:02:17.875 [INFO] [Thread-160644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:17.879 [DEBUG] [Thread-160644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:17.880 [DEBUG] [Thread-160644] [transport.py] [_log()] Compression: none
2025-09-29T16:02:17.880 [DEBUG] [Thread-160644] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:17.892 [DEBUG] [Thread-160644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:17.892 [DEBUG] [Thread-160644] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:17.892 [DEBUG] [Thread-160644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:02:17.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:02:17.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:17.894 [DEBUG] [Thread-160644] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:17.894 [DEBUG] [Thread-160644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:17.894 [DEBUG] [Thread-160644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:17.895 [DEBUG] [Thread-160644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:02:17.895 [DEBUG] [Thread-160644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:17.918 [INFO] [Thread-160644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:17.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:18.694 [DEBUG] [Thread-160644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:18.695 [DEBUG] [Thread-160644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:18.695 [DEBUG] [Thread-160644] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:02:18.735 [DEBUG] [Thread-160644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:18.735 [DEBUG] [Thread-160644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:18.740 [DEBUG] [Thread-160644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:18.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:18.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:02:18.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:02:18.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:02:18.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:18.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:02:18.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:18.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:18.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:02:18.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.584442 -999.00  +15.50  17.20     41   +2.50 1 1 1 1 1   887    0 11.38 -82.54 ----- 15.6 17.2 143.2 20.8 21.6 -29.8 21.1 -27.7 23.0 -27.6 23.9 -29.2
2025-09-29T16:02:18.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:02:18.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:02:18.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.584442
2025-09-29T16:02:18.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:02:18.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:02:18.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:02:18.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:02:18.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:02:18.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:01:50', tmtdew=15.26, humidity=35.45, cloud=0.0, wind=26.27, temperature=15.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:01:35.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:02:18.764 [DEBUG] [Thread-160644] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:18.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:02:18.867 [DEBUG] [Thread-160647] [transport.py] [_log()] starting thread (client mode): 0x2e3dfaf0
2025-09-29T16:02:18.867 [DEBUG] [Thread-160647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:18.881 [DEBUG] [Thread-160647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:02:18.881 [INFO] [Thread-160647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] Compression: none
2025-09-29T16:02:18.889 [DEBUG] [Thread-160647] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:18.945 [DEBUG] [Thread-160647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:18.945 [DEBUG] [Thread-160647] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:18.946 [DEBUG] [Thread-160647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:02:18.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:02:18.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:19.005 [DEBUG] [Thread-160647] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:19.006 [DEBUG] [Thread-160647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:19.006 [DEBUG] [Thread-160647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:19.006 [DEBUG] [Thread-160647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:02:19.006 [DEBUG] [Thread-160647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:19.026 [INFO] [Thread-160647] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:19.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:02:19.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:19.989 [DEBUG] [Thread-160647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:19.989 [DEBUG] [Thread-160647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:20.037 [DEBUG] [Thread-160647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:20.037 [DEBUG] [Thread-160647] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:20.045 [DEBUG] [Thread-160647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:20.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:20.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:02:20.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:02:20.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:20.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:20.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:20.078 [DEBUG] [Thread-160647] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:30.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:02:30.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:02:30.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:02:30.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 2, 22), 15.27, 35.42, 0.0, 24.56, 15.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:02:30.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:02:22
2025-09-29T16:02:30.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:02:30.929 [DEBUG] [Thread-160649] [transport.py] [_log()] starting thread (client mode): 0x2e3df460
2025-09-29T16:02:30.929 [DEBUG] [Thread-160649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:30.949 [DEBUG] [Thread-160649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:02:30.949 [INFO] [Thread-160649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:02:30.952 [DEBUG] [Thread-160649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:30.952 [DEBUG] [Thread-160649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:02:30.952 [DEBUG] [Thread-160649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:30.952 [DEBUG] [Thread-160649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:30.952 [DEBUG] [Thread-160649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:30.952 [DEBUG] [Thread-160649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:30.952 [DEBUG] [Thread-160649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:30.952 [DEBUG] [Thread-160649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] Compression: none
2025-09-29T16:02:30.953 [DEBUG] [Thread-160649] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:30.968 [DEBUG] [Thread-160649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:30.968 [DEBUG] [Thread-160649] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:30.968 [DEBUG] [Thread-160649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:02:30.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:02:30.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:30.969 [DEBUG] [Thread-160649] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:30.969 [DEBUG] [Thread-160649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:30.969 [DEBUG] [Thread-160649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:30.969 [DEBUG] [Thread-160649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:02:30.969 [DEBUG] [Thread-160649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:30.984 [INFO] [Thread-160649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:30.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:31.337 [DEBUG] [Thread-160651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:02:31.605 [DEBUG] [Thread-160649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:31.605 [DEBUG] [Thread-160649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:31.605 [DEBUG] [Thread-160649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:02:31.646 [DEBUG] [Thread-160649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:31.646 [DEBUG] [Thread-160649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:31.647 [DEBUG] [Thread-160649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:31.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:31.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:02:31.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:02:31.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:02:31.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:31.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:02:31.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:31.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:31.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:02:31.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.584789 -999.00  +15.60  14.11     41   +2.40 1 1 1 1 1   887    0 11.30 -83.72 ----- 11.6 14.1 154.0 26.6 21.7 -29.0 21.1 -29.5 23.0 -28.8 24.0 -31.5
2025-09-29T16:02:31.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:02:31.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:02:31.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.584789
2025-09-29T16:02:31.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:02:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:02:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:02:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:02:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:02:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:02:22', tmtdew=15.27, humidity=35.42, cloud=0.0, wind=24.56, temperature=15.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:02:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:02:31.657 [DEBUG] [Thread-160649] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:31.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:02:31.740 [DEBUG] [Thread-160653] [transport.py] [_log()] starting thread (client mode): 0x2b9ce500
2025-09-29T16:02:31.740 [DEBUG] [Thread-160653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:31.754 [DEBUG] [Thread-160653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:02:31.755 [INFO] [Thread-160653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] Compression: none
2025-09-29T16:02:31.762 [DEBUG] [Thread-160653] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:31.820 [DEBUG] [Thread-160653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:31.821 [DEBUG] [Thread-160653] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:31.821 [DEBUG] [Thread-160653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:02:31.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:02:31.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:31.877 [DEBUG] [Thread-160653] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:31.877 [DEBUG] [Thread-160653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:31.877 [DEBUG] [Thread-160653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:31.877 [DEBUG] [Thread-160653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:02:31.877 [DEBUG] [Thread-160653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:31.894 [INFO] [Thread-160653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:31.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:02:31.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:32.867 [DEBUG] [Thread-160653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:32.868 [DEBUG] [Thread-160653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:32.916 [DEBUG] [Thread-160653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:32.916 [DEBUG] [Thread-160653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:32.925 [DEBUG] [Thread-160653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:32.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:32.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:02:32.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:02:32.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:32.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:32.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:32.958 [DEBUG] [Thread-160653] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:42.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:02:42.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:02:42.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:02:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 2, 22), 15.27, 35.42, 0.0, 24.56, 15.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:02:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:02:22
2025-09-29T16:02:43.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:02:43.799 [DEBUG] [Thread-160655] [transport.py] [_log()] starting thread (client mode): 0x2b94dc60
2025-09-29T16:02:43.799 [DEBUG] [Thread-160655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:43.821 [DEBUG] [Thread-160655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:02:43.821 [INFO] [Thread-160655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:43.824 [DEBUG] [Thread-160655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:43.825 [DEBUG] [Thread-160655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:43.825 [DEBUG] [Thread-160655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:43.825 [DEBUG] [Thread-160655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:43.825 [DEBUG] [Thread-160655] [transport.py] [_log()] Compression: none
2025-09-29T16:02:43.825 [DEBUG] [Thread-160655] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:43.841 [DEBUG] [Thread-160655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:43.842 [DEBUG] [Thread-160655] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:43.842 [DEBUG] [Thread-160655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:02:43.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:02:43.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:43.844 [DEBUG] [Thread-160655] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:43.844 [DEBUG] [Thread-160655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:43.844 [DEBUG] [Thread-160655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:43.844 [DEBUG] [Thread-160655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:02:43.844 [DEBUG] [Thread-160655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:43.862 [INFO] [Thread-160655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:43.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:44.624 [DEBUG] [Thread-160655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:44.625 [DEBUG] [Thread-160655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:44.625 [DEBUG] [Thread-160655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:02:44.666 [DEBUG] [Thread-160655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:44.666 [DEBUG] [Thread-160655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:44.668 [DEBUG] [Thread-160655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:44.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:44.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:02:44.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:02:44.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:02:44.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:44.683 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:02:44.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:44.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:44.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:02:44.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.584789 -999.00  +15.60  14.11     41   +2.40 1 1 1 1 1   887    0 11.30 -83.72 ----- 11.6 14.1 154.0 26.6 21.7 -29.0 21.1 -29.5 23.0 -28.8 24.0 -31.5
2025-09-29T16:02:44.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:02:44.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:02:44.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.584789
2025-09-29T16:02:44.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:02:44.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:02:44.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:02:44.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:02:44.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:02:44.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:02:22', tmtdew=15.27, humidity=35.42, cloud=0.0, wind=24.56, temperature=15.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:02:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:02:44.685 [DEBUG] [Thread-160655] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:44.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:02:44.781 [DEBUG] [Thread-160658] [transport.py] [_log()] starting thread (client mode): 0x2b9cd570
2025-09-29T16:02:44.781 [DEBUG] [Thread-160658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:44.796 [DEBUG] [Thread-160658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:02:44.796 [INFO] [Thread-160658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:44.804 [DEBUG] [Thread-160658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:44.805 [DEBUG] [Thread-160658] [transport.py] [_log()] Compression: none
2025-09-29T16:02:44.805 [DEBUG] [Thread-160658] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:44.861 [DEBUG] [Thread-160658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:44.861 [DEBUG] [Thread-160658] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:44.862 [DEBUG] [Thread-160658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:02:44.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:02:44.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:44.917 [DEBUG] [Thread-160658] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:44.917 [DEBUG] [Thread-160658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:44.917 [DEBUG] [Thread-160658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:44.918 [DEBUG] [Thread-160658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:02:44.918 [DEBUG] [Thread-160658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:44.937 [INFO] [Thread-160658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:44.938 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:02:44.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:45.890 [DEBUG] [Thread-160658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:45.890 [DEBUG] [Thread-160658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:45.938 [DEBUG] [Thread-160658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:45.938 [DEBUG] [Thread-160658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:45.947 [DEBUG] [Thread-160658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:45.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:45.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:02:45.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:02:45.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:45.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:45.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:45.981 [DEBUG] [Thread-160658] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:46.368 [DEBUG] [Thread-160660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:02:47.710 [DEBUG] [Thread-160661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:02:55.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:02:55.983 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:02:55.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:02:56.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 2, 22), 15.27, 35.42, 0.0, 24.56, 15.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:02:56.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:02:22
2025-09-29T16:02:56.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:02:56.847 [DEBUG] [Thread-160662] [transport.py] [_log()] starting thread (client mode): 0x2b94d5d0
2025-09-29T16:02:56.848 [DEBUG] [Thread-160662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:56.869 [DEBUG] [Thread-160662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:02:56.869 [INFO] [Thread-160662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:02:56.872 [DEBUG] [Thread-160662] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:56.872 [DEBUG] [Thread-160662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:02:56.872 [DEBUG] [Thread-160662] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:56.872 [DEBUG] [Thread-160662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:56.872 [DEBUG] [Thread-160662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:56.872 [DEBUG] [Thread-160662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:56.872 [DEBUG] [Thread-160662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:56.872 [DEBUG] [Thread-160662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] Compression: none
2025-09-29T16:02:56.873 [DEBUG] [Thread-160662] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:56.889 [DEBUG] [Thread-160662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:56.890 [DEBUG] [Thread-160662] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:56.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:02:56.890 [DEBUG] [Thread-160662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:02:56.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:56.893 [DEBUG] [Thread-160662] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:56.893 [DEBUG] [Thread-160662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:56.893 [DEBUG] [Thread-160662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:56.894 [DEBUG] [Thread-160662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:02:56.894 [DEBUG] [Thread-160662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:56.917 [INFO] [Thread-160662] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:56.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:57.703 [DEBUG] [Thread-160662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:57.703 [DEBUG] [Thread-160662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:57.703 [DEBUG] [Thread-160662] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:02:57.744 [DEBUG] [Thread-160662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:57.744 [DEBUG] [Thread-160662] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:57.746 [DEBUG] [Thread-160662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:57.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:57.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:02:57.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:02:57.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:02:57.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:57.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:02:57.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:57.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.584789 -999.00  +15.60  14.11     41   +2.40 1 1 1 1 1   887    0 11.30 -83.72 ----- 11.6 14.1 154.0 26.6 21.7 -29.0 21.1 -29.5 23.0 -28.8 24.0 -31.5
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.584789
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:02:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:02:22', tmtdew=15.27, humidity=35.42, cloud=0.0, wind=24.56, temperature=15.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:02:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:02:57.758 [DEBUG] [Thread-160662] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:02:57.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:02:57.840 [DEBUG] [Thread-160665] [transport.py] [_log()] starting thread (client mode): 0x2e3dded0
2025-09-29T16:02:57.840 [DEBUG] [Thread-160665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:02:57.855 [DEBUG] [Thread-160665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:02:57.855 [INFO] [Thread-160665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:02:57.862 [DEBUG] [Thread-160665] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] client lang: <none>
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] server lang: <none>
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] kex follows: False
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:02:57.863 [DEBUG] [Thread-160665] [transport.py] [_log()] Compression: none
2025-09-29T16:02:57.864 [DEBUG] [Thread-160665] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:02:57.921 [DEBUG] [Thread-160665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:02:57.921 [DEBUG] [Thread-160665] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:02:57.922 [DEBUG] [Thread-160665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:02:57.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:02:57.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:02:57.977 [DEBUG] [Thread-160665] [transport.py] [_log()] userauth is OK
2025-09-29T16:02:57.977 [DEBUG] [Thread-160665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:02:57.977 [DEBUG] [Thread-160665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:02:57.978 [DEBUG] [Thread-160665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:02:57.978 [DEBUG] [Thread-160665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:02:57.996 [INFO] [Thread-160665] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:02:57.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:02:57.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:02:58.960 [DEBUG] [Thread-160665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:02:58.960 [DEBUG] [Thread-160665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:02:59.008 [DEBUG] [Thread-160665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:02:59.008 [DEBUG] [Thread-160665] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:02:59.017 [DEBUG] [Thread-160665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:02:59.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:02:59.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:02:59.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:02:59.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:02:59.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:02:59.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:02:59.052 [DEBUG] [Thread-160665] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:03:01.413 [DEBUG] [Thread-160667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:03:09.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:03:09.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:03:09.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:03:09.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 2, 54), 15.29, 35.39, 0.0, 22.76, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:03:09.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:02:54
2025-09-29T16:03:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:03:09.901 [DEBUG] [Thread-160668] [transport.py] [_log()] starting thread (client mode): 0x2b91c190
2025-09-29T16:03:09.901 [DEBUG] [Thread-160668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:03:09.921 [DEBUG] [Thread-160668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:03:09.921 [INFO] [Thread-160668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:03:09.924 [DEBUG] [Thread-160668] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] client lang: <none>
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] server lang: <none>
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] kex follows: False
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] Compression: none
2025-09-29T16:03:09.925 [DEBUG] [Thread-160668] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:03:09.942 [DEBUG] [Thread-160668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:03:09.942 [DEBUG] [Thread-160668] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:03:09.942 [DEBUG] [Thread-160668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:03:09.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:03:09.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:03:09.943 [DEBUG] [Thread-160668] [transport.py] [_log()] userauth is OK
2025-09-29T16:03:09.943 [DEBUG] [Thread-160668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:03:09.943 [DEBUG] [Thread-160668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:03:09.943 [DEBUG] [Thread-160668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:03:09.943 [DEBUG] [Thread-160668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:03:09.960 [INFO] [Thread-160668] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:03:09.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:03:10.564 [DEBUG] [Thread-160668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:03:10.564 [DEBUG] [Thread-160668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:03:10.564 [DEBUG] [Thread-160668] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:03:10.605 [DEBUG] [Thread-160668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:03:10.605 [DEBUG] [Thread-160668] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:03:10.608 [DEBUG] [Thread-160668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:03:10.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:03:10.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:03:10.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:03:10.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:03:10.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:03:10.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:03:10.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:03:10.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:03:10.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:03:10.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.585136 -999.00  +15.60  18.38     41   +2.40 1 1 1 1 1   887    0 10.95 -90.15 ----- 13.9 18.4 150.0 25.2 21.6 -28.8 21.1 -27.7 22.9 -28.5 23.9 -30.4
2025-09-29T16:03:10.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:03:10.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:03:10.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.585136
2025-09-29T16:03:10.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:03:10.635 [DEBUG] [Thread-160668] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:03:10.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:03:10.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:03:10.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:03:10.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:03:10.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:02:54', tmtdew=15.29, humidity=35.39, cloud=0.0, wind=22.76, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:02:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:03:10.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:03:10.725 [DEBUG] [Thread-160671] [transport.py] [_log()] starting thread (client mode): 0x2b9ce8c0
2025-09-29T16:03:10.725 [DEBUG] [Thread-160671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:03:10.740 [DEBUG] [Thread-160671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:03:10.740 [INFO] [Thread-160671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] client lang: <none>
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] server lang: <none>
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] kex follows: False
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:03:10.748 [DEBUG] [Thread-160671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:03:10.749 [DEBUG] [Thread-160671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:03:10.749 [DEBUG] [Thread-160671] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:03:10.749 [DEBUG] [Thread-160671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:03:10.749 [DEBUG] [Thread-160671] [transport.py] [_log()] Compression: none
2025-09-29T16:03:10.749 [DEBUG] [Thread-160671] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:03:10.804 [DEBUG] [Thread-160671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:03:10.805 [DEBUG] [Thread-160671] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:03:10.806 [DEBUG] [Thread-160671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:03:10.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:03:10.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:03:10.861 [DEBUG] [Thread-160671] [transport.py] [_log()] userauth is OK
2025-09-29T16:03:10.862 [DEBUG] [Thread-160671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:03:10.862 [DEBUG] [Thread-160671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:03:10.862 [DEBUG] [Thread-160671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:03:10.862 [DEBUG] [Thread-160671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:03:10.881 [INFO] [Thread-160671] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:03:10.882 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:03:10.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:03:11.822 [DEBUG] [Thread-160671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:03:11.823 [DEBUG] [Thread-160671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:03:11.870 [DEBUG] [Thread-160671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:03:11.870 [DEBUG] [Thread-160671] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:03:11.879 [DEBUG] [Thread-160671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:03:11.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:03:11.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:03:11.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:03:11.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:03:11.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:03:11.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:03:11.915 [DEBUG] [Thread-160671] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:03:16.442 [DEBUG] [Thread-160673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:03:17.873 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:03:17.874 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:03:21.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:03:21.915 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:03:21.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:03:22.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 2, 54), 15.29, 35.39, 0.0, 22.76, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:03:22.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:02:54
2025-09-29T16:03:22.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:03:22.736 [DEBUG] [Thread-160674] [transport.py] [_log()] starting thread (client mode): 0x2b96e590
2025-09-29T16:03:22.736 [DEBUG] [Thread-160674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:03:22.756 [DEBUG] [Thread-160674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:03:22.756 [INFO] [Thread-160674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:03:22.759 [DEBUG] [Thread-160674] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] client lang: <none>
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] server lang: <none>
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] kex follows: False
2025-09-29T16:03:22.760 [DEBUG] [Thread-160674] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:03:22.761 [DEBUG] [Thread-160674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:03:22.761 [DEBUG] [Thread-160674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:03:22.761 [DEBUG] [Thread-160674] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:03:22.761 [DEBUG] [Thread-160674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:03:22.761 [DEBUG] [Thread-160674] [transport.py] [_log()] Compression: none
2025-09-29T16:03:22.761 [DEBUG] [Thread-160674] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:03:22.778 [DEBUG] [Thread-160674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:03:22.779 [DEBUG] [Thread-160674] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:03:22.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:03:22.779 [DEBUG] [Thread-160674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:03:22.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:03:22.782 [DEBUG] [Thread-160674] [transport.py] [_log()] userauth is OK
2025-09-29T16:03:22.782 [DEBUG] [Thread-160674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:03:22.782 [DEBUG] [Thread-160674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:03:22.782 [DEBUG] [Thread-160674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:03:22.782 [DEBUG] [Thread-160674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:03:22.800 [INFO] [Thread-160674] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:03:22.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:03:23.602 [DEBUG] [Thread-160674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:03:23.605 [DEBUG] [Thread-160674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:03:23.605 [DEBUG] [Thread-160674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:03:23.643 [DEBUG] [Thread-160674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:03:23.643 [DEBUG] [Thread-160674] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:03:23.646 [DEBUG] [Thread-160674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:03:23.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:03:23.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:03:23.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:03:23.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:03:23.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:03:23.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:03:23.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:03:23.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:03:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:03:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.585136 -999.00  +15.60  18.38     41   +2.40 1 1 1 1 1   887    0 10.95 -90.15 ----- 13.9 18.4 150.0 25.2 21.6 -28.8 21.1 -27.7 22.9 -28.5 23.9 -30.4
2025-09-29T16:03:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:03:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:03:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.585136
2025-09-29T16:03:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:03:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:03:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:03:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:03:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:03:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:02:54', tmtdew=15.29, humidity=35.39, cloud=0.0, wind=22.76, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:02:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:03:23.670 [DEBUG] [Thread-160674] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:03:23.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:03:23.764 [DEBUG] [Thread-160677] [transport.py] [_log()] starting thread (client mode): 0x2b9ce920
2025-09-29T16:03:23.764 [DEBUG] [Thread-160677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:03:23.779 [DEBUG] [Thread-160677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:03:23.779 [INFO] [Thread-160677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:03:23.786 [DEBUG] [Thread-160677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:03:23.787 [DEBUG] [Thread-160677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:03:23.787 [DEBUG] [Thread-160677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:03:23.787 [DEBUG] [Thread-160677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:23.787 [DEBUG] [Thread-160677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:23.787 [DEBUG] [Thread-160677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:23.787 [DEBUG] [Thread-160677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] client lang: <none>
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] server lang: <none>
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] kex follows: False
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] Compression: none
2025-09-29T16:03:23.788 [DEBUG] [Thread-160677] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:03:23.845 [DEBUG] [Thread-160677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:03:23.845 [DEBUG] [Thread-160677] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:03:23.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:03:23.846 [DEBUG] [Thread-160677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:03:23.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:03:23.901 [DEBUG] [Thread-160677] [transport.py] [_log()] userauth is OK
2025-09-29T16:03:23.902 [DEBUG] [Thread-160677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:03:23.902 [DEBUG] [Thread-160677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:03:23.902 [DEBUG] [Thread-160677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:03:23.902 [DEBUG] [Thread-160677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:03:23.921 [INFO] [Thread-160677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:03:23.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:03:23.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:03:24.876 [DEBUG] [Thread-160677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:03:24.877 [DEBUG] [Thread-160677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:03:24.924 [DEBUG] [Thread-160677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:03:24.924 [DEBUG] [Thread-160677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:03:24.933 [DEBUG] [Thread-160677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:03:24.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:03:24.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:03:24.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:03:24.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:03:24.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:03:24.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:03:24.968 [DEBUG] [Thread-160677] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:03:31.486 [DEBUG] [Thread-160679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:03:34.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:03:34.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:03:34.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:03:35.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 3, 26), 15.37, 35.24, 0.0, 21.21, 15.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:03:35.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:03:26
2025-09-29T16:03:35.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:03:35.799 [DEBUG] [Thread-160680] [transport.py] [_log()] starting thread (client mode): 0x2b91c160
2025-09-29T16:03:35.799 [DEBUG] [Thread-160680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:03:35.823 [DEBUG] [Thread-160680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:03:35.823 [INFO] [Thread-160680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:03:35.826 [DEBUG] [Thread-160680] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] client lang: <none>
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] server lang: <none>
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] kex follows: False
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] Compression: none
2025-09-29T16:03:35.827 [DEBUG] [Thread-160680] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:03:35.843 [DEBUG] [Thread-160680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:03:35.844 [DEBUG] [Thread-160680] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:03:35.844 [DEBUG] [Thread-160680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:03:35.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:03:35.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:03:35.846 [DEBUG] [Thread-160680] [transport.py] [_log()] userauth is OK
2025-09-29T16:03:35.846 [DEBUG] [Thread-160680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:03:35.846 [DEBUG] [Thread-160680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:03:35.846 [DEBUG] [Thread-160680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:03:35.846 [DEBUG] [Thread-160680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:03:35.858 [INFO] [Thread-160680] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:03:35.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:03:36.491 [DEBUG] [Thread-160680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:03:36.491 [DEBUG] [Thread-160680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:03:36.492 [DEBUG] [Thread-160680] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:03:36.532 [DEBUG] [Thread-160680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:03:36.532 [DEBUG] [Thread-160680] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:03:36.534 [DEBUG] [Thread-160680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:03:36.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:03:36.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:03:36.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:03:36.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:03:36.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:03:36.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:03:36.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:03:36.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:03:36.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:03:36.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.585484 -999.00  +15.70  18.02     40   +2.40 1 1 1 1 1   887    0 11.03 -90.72 ----- 19.0 18.0 164.8 20.4 21.6 -28.0 21.1 -27.3 22.9 -29.3 23.9 -28.7
2025-09-29T16:03:36.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:03:36.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:03:36.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.585484
2025-09-29T16:03:36.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:03:36.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:03:36.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:03:36.556 [DEBUG] [Thread-160680] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:03:36.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:03:36.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:03:36.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:03:26', tmtdew=15.37, humidity=35.24, cloud=0.0, wind=21.21, temperature=15.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:03:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:03:36.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:03:36.654 [DEBUG] [Thread-160683] [transport.py] [_log()] starting thread (client mode): 0x2e362680
2025-09-29T16:03:36.654 [DEBUG] [Thread-160683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:03:36.669 [DEBUG] [Thread-160683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:03:36.669 [INFO] [Thread-160683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:03:36.677 [DEBUG] [Thread-160683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] client lang: <none>
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] server lang: <none>
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] kex follows: False
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] Compression: none
2025-09-29T16:03:36.678 [DEBUG] [Thread-160683] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:03:36.733 [DEBUG] [Thread-160683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:03:36.733 [DEBUG] [Thread-160683] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:03:36.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:03:36.734 [DEBUG] [Thread-160683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:03:36.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:03:36.789 [DEBUG] [Thread-160683] [transport.py] [_log()] userauth is OK
2025-09-29T16:03:36.790 [DEBUG] [Thread-160683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:03:36.790 [DEBUG] [Thread-160683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:03:36.790 [DEBUG] [Thread-160683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:03:36.790 [DEBUG] [Thread-160683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:03:36.809 [INFO] [Thread-160683] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:03:36.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:03:36.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:03:37.866 [DEBUG] [Thread-160683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:03:37.866 [DEBUG] [Thread-160683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:03:37.914 [DEBUG] [Thread-160683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:03:37.914 [DEBUG] [Thread-160683] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:03:37.923 [DEBUG] [Thread-160683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:03:37.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:03:37.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:03:37.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:03:37.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:03:37.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:03:37.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:03:37.959 [DEBUG] [Thread-160683] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:03:46.513 [DEBUG] [Thread-160685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:03:47.738 [DEBUG] [Thread-160686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:03:47.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:03:47.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:03:47.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:03:48.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 3, 26), 15.37, 35.24, 0.0, 21.21, 15.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:03:48.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:03:26
2025-09-29T16:03:48.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:03:48.788 [DEBUG] [Thread-160687] [transport.py] [_log()] starting thread (client mode): 0x2b9ce350
2025-09-29T16:03:48.788 [DEBUG] [Thread-160687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:03:48.807 [DEBUG] [Thread-160687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:03:48.807 [INFO] [Thread-160687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] client lang: <none>
2025-09-29T16:03:48.810 [DEBUG] [Thread-160687] [transport.py] [_log()] server lang: <none>
2025-09-29T16:03:48.811 [DEBUG] [Thread-160687] [transport.py] [_log()] kex follows: False
2025-09-29T16:03:48.811 [DEBUG] [Thread-160687] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:03:48.811 [DEBUG] [Thread-160687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:03:48.811 [DEBUG] [Thread-160687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:03:48.811 [DEBUG] [Thread-160687] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:03:48.811 [DEBUG] [Thread-160687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:03:48.811 [DEBUG] [Thread-160687] [transport.py] [_log()] Compression: none
2025-09-29T16:03:48.811 [DEBUG] [Thread-160687] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:03:48.828 [DEBUG] [Thread-160687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:03:48.828 [DEBUG] [Thread-160687] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:03:48.829 [DEBUG] [Thread-160687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:03:48.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:03:48.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:03:48.831 [DEBUG] [Thread-160687] [transport.py] [_log()] userauth is OK
2025-09-29T16:03:48.831 [DEBUG] [Thread-160687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:03:48.831 [DEBUG] [Thread-160687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:03:48.831 [DEBUG] [Thread-160687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:03:48.831 [DEBUG] [Thread-160687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:03:48.847 [INFO] [Thread-160687] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:03:48.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:03:49.623 [DEBUG] [Thread-160687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:03:49.623 [DEBUG] [Thread-160687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:03:49.623 [DEBUG] [Thread-160687] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:03:49.664 [DEBUG] [Thread-160687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:03:49.664 [DEBUG] [Thread-160687] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:03:49.667 [DEBUG] [Thread-160687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:03:49.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:03:49.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:03:49.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:03:49.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:03:49.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:03:49.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:03:49.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:03:49.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:03:49.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:03:49.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.585484 -999.00  +15.70  18.02     40   +2.40 1 1 1 1 1   887    0 11.03 -90.72 ----- 19.0 18.0 164.8 20.4 21.6 -28.0 21.1 -27.3 22.9 -29.3 23.9 -28.7
2025-09-29T16:03:49.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:03:49.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:03:49.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.585484
2025-09-29T16:03:49.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:03:49.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:03:49.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:03:49.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:03:49.690 [DEBUG] [Thread-160687] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:03:49.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:03:49.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:03:26', tmtdew=15.37, humidity=35.24, cloud=0.0, wind=21.21, temperature=15.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:03:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:03:49.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:03:49.787 [DEBUG] [Thread-160690] [transport.py] [_log()] starting thread (client mode): 0x2e3f8820
2025-09-29T16:03:49.788 [DEBUG] [Thread-160690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:03:49.805 [DEBUG] [Thread-160690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:03:49.805 [INFO] [Thread-160690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:03:49.815 [DEBUG] [Thread-160690] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] client lang: <none>
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] server lang: <none>
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] kex follows: False
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:03:49.816 [DEBUG] [Thread-160690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:03:49.817 [DEBUG] [Thread-160690] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:03:49.817 [DEBUG] [Thread-160690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:03:49.817 [DEBUG] [Thread-160690] [transport.py] [_log()] Compression: none
2025-09-29T16:03:49.817 [DEBUG] [Thread-160690] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:03:49.877 [DEBUG] [Thread-160690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:03:49.878 [DEBUG] [Thread-160690] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:03:49.878 [DEBUG] [Thread-160690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:03:49.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:03:49.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:03:49.934 [DEBUG] [Thread-160690] [transport.py] [_log()] userauth is OK
2025-09-29T16:03:49.934 [DEBUG] [Thread-160690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:03:49.934 [DEBUG] [Thread-160690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:03:49.934 [DEBUG] [Thread-160690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:03:49.934 [DEBUG] [Thread-160690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:03:49.953 [INFO] [Thread-160690] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:03:49.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:03:49.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:03:50.948 [DEBUG] [Thread-160690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:03:50.948 [DEBUG] [Thread-160690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:03:50.996 [DEBUG] [Thread-160690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:03:50.996 [DEBUG] [Thread-160690] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:03:51.005 [DEBUG] [Thread-160690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:03:51.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:03:51.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:03:51.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:03:51.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:03:51.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:03:51.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:03:51.040 [DEBUG] [Thread-160690] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:01.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:04:01.033 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:04:01.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:04:01.548 [DEBUG] [Thread-160692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:04:01.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 3, 58), 15.64, 34.46, 0.0, 22.37, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:04:01.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:03:58
2025-09-29T16:04:01.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:04:01.881 [DEBUG] [Thread-160693] [transport.py] [_log()] starting thread (client mode): 0x2e362050
2025-09-29T16:04:01.881 [DEBUG] [Thread-160693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:01.901 [DEBUG] [Thread-160693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:04:01.901 [INFO] [Thread-160693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:01.903 [DEBUG] [Thread-160693] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] Compression: none
2025-09-29T16:04:01.904 [DEBUG] [Thread-160693] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:01.914 [DEBUG] [Thread-160693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:01.915 [DEBUG] [Thread-160693] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:01.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:04:01.916 [DEBUG] [Thread-160693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:04:01.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:01.918 [DEBUG] [Thread-160693] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:01.918 [DEBUG] [Thread-160693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:01.918 [DEBUG] [Thread-160693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:01.918 [DEBUG] [Thread-160693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:04:01.918 [DEBUG] [Thread-160693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:01.937 [INFO] [Thread-160693] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:01.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:02.729 [DEBUG] [Thread-160693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:02.729 [DEBUG] [Thread-160693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:02.729 [DEBUG] [Thread-160693] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:04:02.770 [DEBUG] [Thread-160693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:02.770 [DEBUG] [Thread-160693] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:02.773 [DEBUG] [Thread-160693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:02.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:02.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:04:02.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:04:02.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:04:02.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:02.796 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:04:02.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:02.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:02.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:04:02.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.585484 -999.00  +15.70  18.02     40   +2.40 1 1 1 1 1   887    0 11.03 -90.72 ----- 19.0 18.0 164.8 20.4 21.6 -28.0 21.1 -27.3 22.9 -29.3 23.9 -28.7
2025-09-29T16:04:02.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:04:02.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:04:02.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.585484
2025-09-29T16:04:02.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:04:02.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:04:02.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:04:02.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:04:02.798 [DEBUG] [Thread-160693] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:02.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:04:02.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:03:58', tmtdew=15.64, humidity=34.46, cloud=0.0, wind=22.37, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:03:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:04:02.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:04:02.895 [DEBUG] [Thread-160696] [transport.py] [_log()] starting thread (client mode): 0x2b94fd60
2025-09-29T16:04:02.895 [DEBUG] [Thread-160696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:02.910 [DEBUG] [Thread-160696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:04:02.910 [INFO] [Thread-160696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:02.918 [DEBUG] [Thread-160696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:02.919 [DEBUG] [Thread-160696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:02.919 [DEBUG] [Thread-160696] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:02.919 [DEBUG] [Thread-160696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:02.919 [DEBUG] [Thread-160696] [transport.py] [_log()] Compression: none
2025-09-29T16:04:02.919 [DEBUG] [Thread-160696] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:02.977 [DEBUG] [Thread-160696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:02.978 [DEBUG] [Thread-160696] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:02.978 [DEBUG] [Thread-160696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:04:02.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:04:02.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:03.034 [DEBUG] [Thread-160696] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:03.034 [DEBUG] [Thread-160696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:03.034 [DEBUG] [Thread-160696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:03.034 [DEBUG] [Thread-160696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:04:03.034 [DEBUG] [Thread-160696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:03.053 [INFO] [Thread-160696] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:03.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:04:03.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:04.020 [DEBUG] [Thread-160696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:04.020 [DEBUG] [Thread-160696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:04.069 [DEBUG] [Thread-160696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:04.069 [DEBUG] [Thread-160696] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:04.078 [DEBUG] [Thread-160696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:04.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:04.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:04:04.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:04:04.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:04.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:04.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:04.111 [DEBUG] [Thread-160696] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:14.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:04:14.110 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:04:14.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:04:14.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 3, 58), 15.64, 34.46, 0.0, 22.37, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:04:14.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:03:58
2025-09-29T16:04:14.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:04:14.936 [DEBUG] [Thread-160698] [transport.py] [_log()] starting thread (client mode): 0x2b91fd60
2025-09-29T16:04:14.936 [DEBUG] [Thread-160698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:14.956 [DEBUG] [Thread-160698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:04:14.956 [INFO] [Thread-160698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] Compression: none
2025-09-29T16:04:14.959 [DEBUG] [Thread-160698] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:14.977 [DEBUG] [Thread-160698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:14.978 [DEBUG] [Thread-160698] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:14.978 [DEBUG] [Thread-160698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:04:14.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:04:14.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:14.981 [DEBUG] [Thread-160698] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:14.981 [DEBUG] [Thread-160698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:14.982 [DEBUG] [Thread-160698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:14.982 [DEBUG] [Thread-160698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:04:14.982 [DEBUG] [Thread-160698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:15.002 [INFO] [Thread-160698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:15.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:15.648 [DEBUG] [Thread-160698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:15.649 [DEBUG] [Thread-160698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:15.649 [DEBUG] [Thread-160698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:04:15.689 [DEBUG] [Thread-160698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:15.689 [DEBUG] [Thread-160698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:15.692 [DEBUG] [Thread-160698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:15.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:15.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:04:15.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:04:15.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:04:15.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:15.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:04:15.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:15.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:15.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:04:15.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.585831 -999.00  +15.50  15.56     41   +2.30 1 1 1 1 1   887    0 10.95 -92.60 ----- 13.6 15.6 176.2 23.4 21.6 -29.2 21.0 -27.8 22.8 -28.6 23.9 -29.6
2025-09-29T16:04:15.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:04:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:04:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.585831
2025-09-29T16:04:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:04:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:04:15.715 [DEBUG] [Thread-160698] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:04:15.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:04:15.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:04:15.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:03:58', tmtdew=15.64, humidity=34.46, cloud=0.0, wind=22.37, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:03:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:04:15.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:04:15.809 [DEBUG] [Thread-160701] [transport.py] [_log()] starting thread (client mode): 0x2e3f8250
2025-09-29T16:04:15.809 [DEBUG] [Thread-160701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:15.825 [DEBUG] [Thread-160701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:04:15.825 [INFO] [Thread-160701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:04:15.837 [DEBUG] [Thread-160701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:15.837 [DEBUG] [Thread-160701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:04:15.837 [DEBUG] [Thread-160701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:15.837 [DEBUG] [Thread-160701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:15.837 [DEBUG] [Thread-160701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:15.837 [DEBUG] [Thread-160701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:15.837 [DEBUG] [Thread-160701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:15.838 [DEBUG] [Thread-160701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:15.839 [DEBUG] [Thread-160701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:15.839 [DEBUG] [Thread-160701] [transport.py] [_log()] Compression: none
2025-09-29T16:04:15.839 [DEBUG] [Thread-160701] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:15.894 [DEBUG] [Thread-160701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:15.894 [DEBUG] [Thread-160701] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:15.895 [DEBUG] [Thread-160701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:04:15.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:04:15.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:15.950 [DEBUG] [Thread-160701] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:15.951 [DEBUG] [Thread-160701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:15.951 [DEBUG] [Thread-160701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:15.951 [DEBUG] [Thread-160701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:04:15.951 [DEBUG] [Thread-160701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:15.971 [INFO] [Thread-160701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:15.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:04:15.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:16.576 [DEBUG] [Thread-160703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:04:16.944 [DEBUG] [Thread-160701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:16.945 [DEBUG] [Thread-160701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:16.992 [DEBUG] [Thread-160701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:16.992 [DEBUG] [Thread-160701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:17.001 [DEBUG] [Thread-160701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:17.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:17.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:04:17.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:04:17.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:17.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:17.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:17.034 [DEBUG] [Thread-160701] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:18.012 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:04:18.014 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:04:27.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:04:27.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:04:27.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:04:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 3, 58), 15.64, 34.46, 0.0, 22.37, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:04:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:03:58
2025-09-29T16:04:27.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:04:27.866 [DEBUG] [Thread-160704] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-29T16:04:27.866 [DEBUG] [Thread-160704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:27.887 [DEBUG] [Thread-160704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:04:27.887 [INFO] [Thread-160704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] Compression: none
2025-09-29T16:04:27.890 [DEBUG] [Thread-160704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:27.908 [DEBUG] [Thread-160704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:27.909 [DEBUG] [Thread-160704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:27.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:04:27.910 [DEBUG] [Thread-160704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:04:27.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:27.912 [DEBUG] [Thread-160704] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:27.912 [DEBUG] [Thread-160704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:27.912 [DEBUG] [Thread-160704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:27.913 [DEBUG] [Thread-160704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:04:27.913 [DEBUG] [Thread-160704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:27.929 [INFO] [Thread-160704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:27.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:28.744 [DEBUG] [Thread-160704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:28.744 [DEBUG] [Thread-160704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:28.744 [DEBUG] [Thread-160704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:04:28.785 [DEBUG] [Thread-160704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:28.785 [DEBUG] [Thread-160704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:28.788 [DEBUG] [Thread-160704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:28.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:28.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:04:28.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:04:28.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:04:28.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:28.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:04:28.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:28.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:04:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.585831 -999.00  +15.50  15.56     41   +2.30 1 1 1 1 1   887    0 10.95 -92.60 ----- 13.6 15.6 176.2 23.4 21.6 -29.2 21.0 -27.8 22.8 -28.6 23.9 -29.6
2025-09-29T16:04:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:04:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:04:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.585831
2025-09-29T16:04:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:04:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:04:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:04:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:04:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:04:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:03:58', tmtdew=15.64, humidity=34.46, cloud=0.0, wind=22.37, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:03:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:04:28.812 [DEBUG] [Thread-160704] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:28.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:04:28.907 [DEBUG] [Thread-160707] [transport.py] [_log()] starting thread (client mode): 0x2e3f9090
2025-09-29T16:04:28.908 [DEBUG] [Thread-160707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:28.922 [DEBUG] [Thread-160707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:04:28.922 [INFO] [Thread-160707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] Compression: none
2025-09-29T16:04:28.930 [DEBUG] [Thread-160707] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:28.985 [DEBUG] [Thread-160707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:28.986 [DEBUG] [Thread-160707] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:28.986 [DEBUG] [Thread-160707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:04:28.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:04:28.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:29.042 [DEBUG] [Thread-160707] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:29.043 [DEBUG] [Thread-160707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:29.043 [DEBUG] [Thread-160707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:29.043 [DEBUG] [Thread-160707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:04:29.043 [DEBUG] [Thread-160707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:29.062 [INFO] [Thread-160707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:29.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:04:29.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:30.051 [DEBUG] [Thread-160707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:30.051 [DEBUG] [Thread-160707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:30.099 [DEBUG] [Thread-160707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:30.099 [DEBUG] [Thread-160707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:30.108 [DEBUG] [Thread-160707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:30.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:30.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:04:30.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:04:30.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:30.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:30.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:30.143 [DEBUG] [Thread-160707] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:31.619 [DEBUG] [Thread-160709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:04:40.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:04:40.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:04:40.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:04:40.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 4, 30), 15.5, 34.74, 0.0, 19.6, 15.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:04:40.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:04:30
2025-09-29T16:04:40.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:04:41.005 [DEBUG] [Thread-160710] [transport.py] [_log()] starting thread (client mode): 0x2e362080
2025-09-29T16:04:41.005 [DEBUG] [Thread-160710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:41.025 [DEBUG] [Thread-160710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:04:41.025 [INFO] [Thread-160710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:41.027 [DEBUG] [Thread-160710] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:41.028 [DEBUG] [Thread-160710] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:41.028 [DEBUG] [Thread-160710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:41.028 [DEBUG] [Thread-160710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:41.028 [DEBUG] [Thread-160710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:41.028 [DEBUG] [Thread-160710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:41.028 [DEBUG] [Thread-160710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:41.028 [DEBUG] [Thread-160710] [transport.py] [_log()] Compression: none
2025-09-29T16:04:41.028 [DEBUG] [Thread-160710] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:41.037 [DEBUG] [Thread-160710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:41.037 [DEBUG] [Thread-160710] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:41.037 [DEBUG] [Thread-160710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:04:41.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:04:41.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:41.038 [DEBUG] [Thread-160710] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:41.038 [DEBUG] [Thread-160710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:41.038 [DEBUG] [Thread-160710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:41.038 [DEBUG] [Thread-160710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:04:41.038 [DEBUG] [Thread-160710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:41.046 [INFO] [Thread-160710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:41.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:41.662 [DEBUG] [Thread-160710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:41.662 [DEBUG] [Thread-160710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:41.662 [DEBUG] [Thread-160710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:04:41.702 [DEBUG] [Thread-160710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:41.703 [DEBUG] [Thread-160710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:41.705 [DEBUG] [Thread-160710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:41.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:41.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:04:41.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:04:41.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:04:41.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:41.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:04:41.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:41.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:41.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:04:41.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.586525 -999.00  +15.10  21.10     41   +2.10 1 1 1 1 1   887    0 10.55 -106.40 ----- 20.3 21.1 160.8 25.1 21.4 -28.7 20.5 -28.3 22.7 -29.2 23.6 -29.1
2025-09-29T16:04:41.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:04:41.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:04:41.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.586525
2025-09-29T16:04:41.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:04:41.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:04:41.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:04:41.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:04:41.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:04:41.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:04:30', tmtdew=15.5, humidity=34.74, cloud=0.0, wind=19.6, temperature=15.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:04:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:04:41.733 [DEBUG] [Thread-160710] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:41.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:04:41.831 [DEBUG] [Thread-160713] [transport.py] [_log()] starting thread (client mode): 0x2e377ca0
2025-09-29T16:04:41.831 [DEBUG] [Thread-160713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:41.846 [DEBUG] [Thread-160713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:04:41.846 [INFO] [Thread-160713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:04:41.853 [DEBUG] [Thread-160713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:41.854 [DEBUG] [Thread-160713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:04:41.854 [DEBUG] [Thread-160713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:41.854 [DEBUG] [Thread-160713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:41.854 [DEBUG] [Thread-160713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:41.854 [DEBUG] [Thread-160713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:41.854 [DEBUG] [Thread-160713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] Compression: none
2025-09-29T16:04:41.855 [DEBUG] [Thread-160713] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:41.910 [DEBUG] [Thread-160713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:41.911 [DEBUG] [Thread-160713] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:41.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:04:41.912 [DEBUG] [Thread-160713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:04:41.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:41.967 [DEBUG] [Thread-160713] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:41.967 [DEBUG] [Thread-160713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:41.967 [DEBUG] [Thread-160713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:41.967 [DEBUG] [Thread-160713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:04:41.967 [DEBUG] [Thread-160713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:41.986 [INFO] [Thread-160713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:41.987 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:04:41.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:42.973 [DEBUG] [Thread-160713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:42.973 [DEBUG] [Thread-160713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:43.021 [DEBUG] [Thread-160713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:43.021 [DEBUG] [Thread-160713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:43.030 [DEBUG] [Thread-160713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:43.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:43.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:04:43.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:04:43.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:43.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:43.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:43.066 [DEBUG] [Thread-160713] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:46.647 [DEBUG] [Thread-160715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:04:47.776 [DEBUG] [Thread-160716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:04:53.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:04:53.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:04:53.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:04:53.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 4, 30), 15.5, 34.74, 0.0, 19.6, 15.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:04:53.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:04:30
2025-09-29T16:04:53.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:04:53.921 [DEBUG] [Thread-160717] [transport.py] [_log()] starting thread (client mode): 0x2e3fb520
2025-09-29T16:04:53.921 [DEBUG] [Thread-160717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:53.941 [DEBUG] [Thread-160717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:04:53.942 [INFO] [Thread-160717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:04:53.945 [DEBUG] [Thread-160717] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:53.945 [DEBUG] [Thread-160717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:04:53.945 [DEBUG] [Thread-160717] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:53.945 [DEBUG] [Thread-160717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:53.945 [DEBUG] [Thread-160717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:53.945 [DEBUG] [Thread-160717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:53.945 [DEBUG] [Thread-160717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] Compression: none
2025-09-29T16:04:53.946 [DEBUG] [Thread-160717] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:53.966 [DEBUG] [Thread-160717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:53.966 [DEBUG] [Thread-160717] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:53.967 [DEBUG] [Thread-160717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:04:53.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:04:53.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:53.969 [DEBUG] [Thread-160717] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:53.969 [DEBUG] [Thread-160717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:53.969 [DEBUG] [Thread-160717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:53.970 [DEBUG] [Thread-160717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:04:53.970 [DEBUG] [Thread-160717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:53.991 [INFO] [Thread-160717] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:53.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:54.761 [DEBUG] [Thread-160717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:54.761 [DEBUG] [Thread-160717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:54.762 [DEBUG] [Thread-160717] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:04:54.802 [DEBUG] [Thread-160717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:54.803 [DEBUG] [Thread-160717] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:54.806 [DEBUG] [Thread-160717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:54.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:54.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:04:54.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:04:54.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:04:54.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:54.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:04:54.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:54.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:54.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:04:54.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.586525 -999.00  +15.10  21.10     41   +2.10 1 1 1 1 1   887    0 10.55 -106.40 ----- 20.3 21.1 160.8 25.1 21.4 -28.7 20.5 -28.3 22.7 -29.2 23.6 -29.1
2025-09-29T16:04:54.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:04:54.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:04:54.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.586525
2025-09-29T16:04:54.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:04:54.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:04:54.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:04:54.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:04:54.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:04:54.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:04:30', tmtdew=15.5, humidity=34.74, cloud=0.0, wind=19.6, temperature=15.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:04:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:04:54.834 [DEBUG] [Thread-160717] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:04:54.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:04:54.929 [DEBUG] [Thread-160720] [transport.py] [_log()] starting thread (client mode): 0x2b969c60
2025-09-29T16:04:54.929 [DEBUG] [Thread-160720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:04:54.944 [DEBUG] [Thread-160720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:04:54.945 [INFO] [Thread-160720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:04:54.952 [DEBUG] [Thread-160720] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:04:54.952 [DEBUG] [Thread-160720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] client lang: <none>
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] server lang: <none>
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] kex follows: False
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] Compression: none
2025-09-29T16:04:54.953 [DEBUG] [Thread-160720] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:04:55.010 [DEBUG] [Thread-160720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:04:55.011 [DEBUG] [Thread-160720] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:04:55.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:04:55.012 [DEBUG] [Thread-160720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:04:55.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:04:55.067 [DEBUG] [Thread-160720] [transport.py] [_log()] userauth is OK
2025-09-29T16:04:55.067 [DEBUG] [Thread-160720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:04:55.067 [DEBUG] [Thread-160720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:04:55.067 [DEBUG] [Thread-160720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:04:55.067 [DEBUG] [Thread-160720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:04:55.086 [INFO] [Thread-160720] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:04:55.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:04:55.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:04:56.076 [DEBUG] [Thread-160720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:04:56.076 [DEBUG] [Thread-160720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:04:56.124 [DEBUG] [Thread-160720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:04:56.124 [DEBUG] [Thread-160720] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:04:56.133 [DEBUG] [Thread-160720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:04:56.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:04:56.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:04:56.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:04:56.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:04:56.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:04:56.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:04:56.164 [DEBUG] [Thread-160720] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:05:01.698 [DEBUG] [Thread-160722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:05:06.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:05:06.167 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:05:06.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:05:06.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 5, 2), 15.24, 35.3, 0.0, 18.03, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:05:06.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:05:02
2025-09-29T16:05:06.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:05:06.995 [DEBUG] [Thread-160723] [transport.py] [_log()] starting thread (client mode): 0x2b969d20
2025-09-29T16:05:06.995 [DEBUG] [Thread-160723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:05:07.013 [DEBUG] [Thread-160723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:05:07.013 [INFO] [Thread-160723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:05:07.015 [DEBUG] [Thread-160723] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:05:07.015 [DEBUG] [Thread-160723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:05:07.015 [DEBUG] [Thread-160723] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:05:07.015 [DEBUG] [Thread-160723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:07.015 [DEBUG] [Thread-160723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:07.015 [DEBUG] [Thread-160723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] client lang: <none>
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] server lang: <none>
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] kex follows: False
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] Compression: none
2025-09-29T16:05:07.016 [DEBUG] [Thread-160723] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:05:07.027 [DEBUG] [Thread-160723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:05:07.028 [DEBUG] [Thread-160723] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:05:07.028 [DEBUG] [Thread-160723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:05:07.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:05:07.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:05:07.030 [DEBUG] [Thread-160723] [transport.py] [_log()] userauth is OK
2025-09-29T16:05:07.030 [DEBUG] [Thread-160723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:05:07.030 [DEBUG] [Thread-160723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:05:07.030 [DEBUG] [Thread-160723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:05:07.030 [DEBUG] [Thread-160723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:05:07.054 [INFO] [Thread-160723] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:05:07.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:05:13.884 [DEBUG] [Thread-160723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:05:13.884 [DEBUG] [Thread-160723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:05:13.884 [DEBUG] [Thread-160723] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:05:13.924 [DEBUG] [Thread-160723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:05:13.924 [DEBUG] [Thread-160723] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:05:13.927 [DEBUG] [Thread-160723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:05:14.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:05:14.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:05:14.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:05:14.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:05:14.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:05:14.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:05:14.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:05:14.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:05:14.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:05:14.065 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-09-29T16:05:14.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:05:02', tmtdew=15.24, humidity=35.3, cloud=0.0, wind=18.03, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:05:14.067 [DEBUG] [Thread-160723] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:05:14.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:05:14.165 [DEBUG] [Thread-160726] [transport.py] [_log()] starting thread (client mode): 0x2e3f9ae0
2025-09-29T16:05:14.165 [DEBUG] [Thread-160726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:05:14.180 [DEBUG] [Thread-160726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:05:14.180 [INFO] [Thread-160726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:05:14.187 [DEBUG] [Thread-160726] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:05:14.187 [DEBUG] [Thread-160726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] client lang: <none>
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] server lang: <none>
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] kex follows: False
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] Compression: none
2025-09-29T16:05:14.188 [DEBUG] [Thread-160726] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:05:14.246 [DEBUG] [Thread-160726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:05:14.247 [DEBUG] [Thread-160726] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:05:14.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:05:14.248 [DEBUG] [Thread-160726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:05:14.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:05:14.303 [DEBUG] [Thread-160726] [transport.py] [_log()] userauth is OK
2025-09-29T16:05:14.303 [DEBUG] [Thread-160726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:05:14.303 [DEBUG] [Thread-160726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:05:14.303 [DEBUG] [Thread-160726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:05:14.303 [DEBUG] [Thread-160726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:05:14.322 [INFO] [Thread-160726] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:05:14.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:05:14.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:05:15.285 [DEBUG] [Thread-160726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:05:15.285 [DEBUG] [Thread-160726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:05:15.333 [DEBUG] [Thread-160726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:05:15.333 [DEBUG] [Thread-160726] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:05:15.342 [DEBUG] [Thread-160726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:05:15.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:05:15.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:05:15.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:05:15.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:05:15.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:05:15.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:05:15.376 [DEBUG] [Thread-160726] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:05:16.725 [DEBUG] [Thread-160728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:05:18.152 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:05:18.153 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:05:25.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:05:25.379 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:05:25.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:05:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 5, 2), 15.24, 35.3, 0.0, 18.03, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:05:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:05:02
2025-09-29T16:05:26.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:05:26.205 [DEBUG] [Thread-160729] [transport.py] [_log()] starting thread (client mode): 0x2e3632e0
2025-09-29T16:05:26.205 [DEBUG] [Thread-160729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:05:26.226 [DEBUG] [Thread-160729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:05:26.226 [INFO] [Thread-160729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] client lang: <none>
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] server lang: <none>
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] kex follows: False
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] Compression: none
2025-09-29T16:05:26.228 [DEBUG] [Thread-160729] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:05:26.240 [DEBUG] [Thread-160729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:05:26.240 [DEBUG] [Thread-160729] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:05:26.240 [DEBUG] [Thread-160729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:05:26.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:05:26.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:05:26.243 [DEBUG] [Thread-160729] [transport.py] [_log()] userauth is OK
2025-09-29T16:05:26.243 [DEBUG] [Thread-160729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:05:26.243 [DEBUG] [Thread-160729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:05:26.243 [DEBUG] [Thread-160729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:05:26.243 [DEBUG] [Thread-160729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:05:26.261 [INFO] [Thread-160729] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:05:26.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:05:26.859 [DEBUG] [Thread-160729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:05:26.859 [DEBUG] [Thread-160729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:05:26.860 [DEBUG] [Thread-160729] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:05:26.900 [DEBUG] [Thread-160729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:05:26.900 [DEBUG] [Thread-160729] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:05:26.903 [DEBUG] [Thread-160729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:05:26.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:05:26.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:05:26.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:05:26.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:05:26.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:05:26.920 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:05:26.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:05:26.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:05:26.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:05:26.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.586872 -999.00  +15.10  13.45     41   +2.20 1 1 1 1 1   887    0 10.11 -109.20 ----- 14.8 13.4 150.6 21.6 21.4 -28.9 20.7 -27.4 22.6 -28.5 23.6 -29.5
2025-09-29T16:05:26.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:05:26.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:05:26.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.586872
2025-09-29T16:05:26.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:05:26.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:05:26.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:05:26.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:05:26.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:05:26.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:05:02', tmtdew=15.24, humidity=35.3, cloud=0.0, wind=18.03, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:05:05.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:05:26.923 [DEBUG] [Thread-160729] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:05:27.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:05:27.018 [DEBUG] [Thread-160732] [transport.py] [_log()] starting thread (client mode): 0x2e361cc0
2025-09-29T16:05:27.018 [DEBUG] [Thread-160732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:05:27.040 [DEBUG] [Thread-160732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:05:27.040 [INFO] [Thread-160732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:05:27.048 [DEBUG] [Thread-160732] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:05:27.048 [DEBUG] [Thread-160732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:05:27.048 [DEBUG] [Thread-160732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:05:27.048 [DEBUG] [Thread-160732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:27.048 [DEBUG] [Thread-160732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] client lang: <none>
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] server lang: <none>
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] kex follows: False
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:05:27.049 [DEBUG] [Thread-160732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:05:27.050 [DEBUG] [Thread-160732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:05:27.050 [DEBUG] [Thread-160732] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:05:27.050 [DEBUG] [Thread-160732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:05:27.050 [DEBUG] [Thread-160732] [transport.py] [_log()] Compression: none
2025-09-29T16:05:27.050 [DEBUG] [Thread-160732] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:05:27.109 [DEBUG] [Thread-160732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:05:27.109 [DEBUG] [Thread-160732] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:05:27.110 [DEBUG] [Thread-160732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:05:27.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:05:27.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:05:27.167 [DEBUG] [Thread-160732] [transport.py] [_log()] userauth is OK
2025-09-29T16:05:27.168 [DEBUG] [Thread-160732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:05:27.168 [DEBUG] [Thread-160732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:05:27.168 [DEBUG] [Thread-160732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:05:27.168 [DEBUG] [Thread-160732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:05:27.188 [INFO] [Thread-160732] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:05:27.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:05:27.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:05:28.199 [DEBUG] [Thread-160732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:05:28.200 [DEBUG] [Thread-160732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:05:28.247 [DEBUG] [Thread-160732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:05:28.247 [DEBUG] [Thread-160732] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:05:28.256 [DEBUG] [Thread-160732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:05:28.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:05:28.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:05:28.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:05:28.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:05:28.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:05:28.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:05:28.292 [DEBUG] [Thread-160732] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:05:31.778 [DEBUG] [Thread-160734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:05:38.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:05:38.294 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:05:38.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:05:38.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 5, 34), 14.67, 36.57, 0.0, 18.48, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:05:38.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:05:34
2025-09-29T16:05:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:05:39.165 [DEBUG] [Thread-160735] [transport.py] [_log()] starting thread (client mode): 0x2e3c0250
2025-09-29T16:05:39.165 [DEBUG] [Thread-160735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:05:39.185 [DEBUG] [Thread-160735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:05:39.185 [INFO] [Thread-160735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:05:39.188 [DEBUG] [Thread-160735] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:05:39.188 [DEBUG] [Thread-160735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:05:39.188 [DEBUG] [Thread-160735] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:05:39.188 [DEBUG] [Thread-160735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:39.188 [DEBUG] [Thread-160735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:39.188 [DEBUG] [Thread-160735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:39.188 [DEBUG] [Thread-160735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:39.188 [DEBUG] [Thread-160735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] client lang: <none>
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] server lang: <none>
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] kex follows: False
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] Compression: none
2025-09-29T16:05:39.189 [DEBUG] [Thread-160735] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:05:39.205 [DEBUG] [Thread-160735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:05:39.205 [DEBUG] [Thread-160735] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:05:39.205 [DEBUG] [Thread-160735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:05:39.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:05:39.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:05:39.206 [DEBUG] [Thread-160735] [transport.py] [_log()] userauth is OK
2025-09-29T16:05:39.206 [DEBUG] [Thread-160735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:05:39.206 [DEBUG] [Thread-160735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:05:39.206 [DEBUG] [Thread-160735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:05:39.206 [DEBUG] [Thread-160735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:05:39.225 [INFO] [Thread-160735] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:05:39.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:05:39.940 [DEBUG] [Thread-160735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:05:39.940 [DEBUG] [Thread-160735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:05:39.940 [DEBUG] [Thread-160735] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:05:39.981 [DEBUG] [Thread-160735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:05:39.981 [DEBUG] [Thread-160735] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:05:39.983 [DEBUG] [Thread-160735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:05:39.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:05:39.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:05:39.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:05:39.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:05:39.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:05:39.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:05:39.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:05:39.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.586872 -999.00  +15.10  13.45     41   +2.20 1 1 1 1 1   887    0 10.11 -109.20 ----- 14.8 13.4 150.6 21.6 21.4 -28.9 20.7 -27.4 22.6 -28.5 23.6 -29.5
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.586872
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:05:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:05:34', tmtdew=14.67, humidity=36.57, cloud=0.0, wind=18.48, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:05:05.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:05:39.994 [DEBUG] [Thread-160735] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:05:40.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:05:40.081 [DEBUG] [Thread-160738] [transport.py] [_log()] starting thread (client mode): 0x2b91c6a0
2025-09-29T16:05:40.081 [DEBUG] [Thread-160738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:05:40.096 [DEBUG] [Thread-160738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:05:40.097 [INFO] [Thread-160738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] client lang: <none>
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] server lang: <none>
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] kex follows: False
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] Compression: none
2025-09-29T16:05:40.104 [DEBUG] [Thread-160738] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:05:40.162 [DEBUG] [Thread-160738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:05:40.162 [DEBUG] [Thread-160738] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:05:40.162 [DEBUG] [Thread-160738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:05:40.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:05:40.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:05:40.219 [DEBUG] [Thread-160738] [transport.py] [_log()] userauth is OK
2025-09-29T16:05:40.219 [DEBUG] [Thread-160738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:05:40.219 [DEBUG] [Thread-160738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:05:40.219 [DEBUG] [Thread-160738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:05:40.219 [DEBUG] [Thread-160738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:05:40.237 [INFO] [Thread-160738] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:05:40.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:05:40.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:05:41.219 [DEBUG] [Thread-160738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:05:41.219 [DEBUG] [Thread-160738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:05:41.267 [DEBUG] [Thread-160738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:05:41.267 [DEBUG] [Thread-160738] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:05:41.275 [DEBUG] [Thread-160738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:05:41.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:05:41.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:05:41.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:05:41.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:05:41.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:05:41.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:05:41.309 [DEBUG] [Thread-160738] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:05:46.820 [DEBUG] [Thread-160740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:05:47.823 [DEBUG] [Thread-160741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:05:51.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:05:51.311 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:05:51.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:05:51.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 5, 34), 14.67, 36.57, 0.0, 18.48, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:05:51.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:05:34
2025-09-29T16:05:52.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:05:52.153 [DEBUG] [Thread-160742] [transport.py] [_log()] starting thread (client mode): 0x2b96ab00
2025-09-29T16:05:52.153 [DEBUG] [Thread-160742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:05:52.174 [DEBUG] [Thread-160742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:05:52.174 [INFO] [Thread-160742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] client lang: <none>
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] server lang: <none>
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] kex follows: False
2025-09-29T16:05:52.177 [DEBUG] [Thread-160742] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:05:52.178 [DEBUG] [Thread-160742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:05:52.178 [DEBUG] [Thread-160742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:05:52.178 [DEBUG] [Thread-160742] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:05:52.178 [DEBUG] [Thread-160742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:05:52.178 [DEBUG] [Thread-160742] [transport.py] [_log()] Compression: none
2025-09-29T16:05:52.178 [DEBUG] [Thread-160742] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:05:52.194 [DEBUG] [Thread-160742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:05:52.195 [DEBUG] [Thread-160742] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:05:52.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:05:52.196 [DEBUG] [Thread-160742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:05:52.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:05:52.198 [DEBUG] [Thread-160742] [transport.py] [_log()] userauth is OK
2025-09-29T16:05:52.198 [DEBUG] [Thread-160742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:05:52.198 [DEBUG] [Thread-160742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:05:52.198 [DEBUG] [Thread-160742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:05:52.198 [DEBUG] [Thread-160742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:05:52.222 [INFO] [Thread-160742] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:05:52.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:05:52.830 [DEBUG] [Thread-160742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:05:52.830 [DEBUG] [Thread-160742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:05:52.831 [DEBUG] [Thread-160742] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:05:52.871 [DEBUG] [Thread-160742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:05:52.871 [DEBUG] [Thread-160742] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:05:52.877 [DEBUG] [Thread-160742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:05:52.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:05:52.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:05:52.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:05:52.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:05:52.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:05:52.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:05:52.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:05:52.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:05:52.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:05:52.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.587219 -999.00  +15.00  17.08     41   +2.20 1 1 1 1 1   887    0 10.50 -98.68 ----- 16.0 17.1 144.2 24.5 21.3 -28.3 20.7 -27.6 22.7 -28.0 23.5 -30.6
2025-09-29T16:05:52.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:05:52.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:05:52.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.587219
2025-09-29T16:05:52.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:05:52.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:05:52.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:05:52.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:05:52.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:05:52.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:05:34', tmtdew=14.67, humidity=36.57, cloud=0.0, wind=18.48, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:05:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:05:52.902 [DEBUG] [Thread-160742] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:05:52.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:05:53.007 [DEBUG] [Thread-160745] [transport.py] [_log()] starting thread (client mode): 0x2b91d9c0
2025-09-29T16:05:53.007 [DEBUG] [Thread-160745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:05:53.022 [DEBUG] [Thread-160745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:05:53.022 [INFO] [Thread-160745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] client lang: <none>
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] server lang: <none>
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] kex follows: False
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] Compression: none
2025-09-29T16:05:53.030 [DEBUG] [Thread-160745] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:05:53.087 [DEBUG] [Thread-160745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:05:53.088 [DEBUG] [Thread-160745] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:05:53.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:05:53.089 [DEBUG] [Thread-160745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:05:53.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:05:53.143 [DEBUG] [Thread-160745] [transport.py] [_log()] userauth is OK
2025-09-29T16:05:53.144 [DEBUG] [Thread-160745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:05:53.144 [DEBUG] [Thread-160745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:05:53.144 [DEBUG] [Thread-160745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:05:53.144 [DEBUG] [Thread-160745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:05:53.162 [INFO] [Thread-160745] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:05:53.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:05:53.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:05:54.196 [DEBUG] [Thread-160745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:05:54.196 [DEBUG] [Thread-160745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:05:54.244 [DEBUG] [Thread-160745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:05:54.244 [DEBUG] [Thread-160745] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:05:54.253 [DEBUG] [Thread-160745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:05:54.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:05:54.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:05:54.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:05:54.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:05:54.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:05:54.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:05:54.287 [DEBUG] [Thread-160745] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:01.866 [DEBUG] [Thread-160747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:06:04.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:06:04.290 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:06:04.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:06:04.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 5, 34), 14.67, 36.57, 0.0, 18.48, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:06:04.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:05:34
2025-09-29T16:06:04.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:06:05.114 [DEBUG] [Thread-160748] [transport.py] [_log()] starting thread (client mode): 0x2e3c3af0
2025-09-29T16:06:05.114 [DEBUG] [Thread-160748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:05.134 [DEBUG] [Thread-160748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:06:05.134 [INFO] [Thread-160748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:06:05.138 [DEBUG] [Thread-160748] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:05.138 [DEBUG] [Thread-160748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:06:05.138 [DEBUG] [Thread-160748] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:05.138 [DEBUG] [Thread-160748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:05.138 [DEBUG] [Thread-160748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:05.138 [DEBUG] [Thread-160748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:05.138 [DEBUG] [Thread-160748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] Compression: none
2025-09-29T16:06:05.139 [DEBUG] [Thread-160748] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:05.158 [DEBUG] [Thread-160748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:05.159 [DEBUG] [Thread-160748] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:05.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:06:05.160 [DEBUG] [Thread-160748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:06:05.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:05.162 [DEBUG] [Thread-160748] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:05.162 [DEBUG] [Thread-160748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:05.162 [DEBUG] [Thread-160748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:05.162 [DEBUG] [Thread-160748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:06:05.162 [DEBUG] [Thread-160748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:05.194 [INFO] [Thread-160748] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:05.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:05.926 [DEBUG] [Thread-160748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:05.926 [DEBUG] [Thread-160748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:05.926 [DEBUG] [Thread-160748] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:06:05.966 [DEBUG] [Thread-160748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:05.966 [DEBUG] [Thread-160748] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:05.969 [DEBUG] [Thread-160748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:05.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:05.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:06:05.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:06:05.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:06:05.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:05.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:06:05.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:05.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:06:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.587219 -999.00  +15.00  17.08     41   +2.20 1 1 1 1 1   887    0 10.50 -98.68 ----- 16.0 17.1 144.2 24.5 21.3 -28.3 20.7 -27.6 22.7 -28.0 23.5 -30.6
2025-09-29T16:06:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:06:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:06:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.587219
2025-09-29T16:06:05.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:06:05.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:06:05.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:06:05.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:06:05.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:06:05.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:05:34', tmtdew=14.67, humidity=36.57, cloud=0.0, wind=18.48, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:05:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:06:05.988 [DEBUG] [Thread-160748] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:06.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:06:06.085 [DEBUG] [Thread-160751] [transport.py] [_log()] starting thread (client mode): 0x2e3c3be0
2025-09-29T16:06:06.085 [DEBUG] [Thread-160751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:06.099 [DEBUG] [Thread-160751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:06:06.100 [INFO] [Thread-160751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:06:06.107 [DEBUG] [Thread-160751] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:06.107 [DEBUG] [Thread-160751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:06.108 [DEBUG] [Thread-160751] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:06.109 [DEBUG] [Thread-160751] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:06.109 [DEBUG] [Thread-160751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:06.109 [DEBUG] [Thread-160751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:06.109 [DEBUG] [Thread-160751] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:06.109 [DEBUG] [Thread-160751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:06.109 [DEBUG] [Thread-160751] [transport.py] [_log()] Compression: none
2025-09-29T16:06:06.109 [DEBUG] [Thread-160751] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:06.164 [DEBUG] [Thread-160751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:06.165 [DEBUG] [Thread-160751] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:06.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:06:06.166 [DEBUG] [Thread-160751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:06:06.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:06.223 [DEBUG] [Thread-160751] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:06.223 [DEBUG] [Thread-160751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:06.223 [DEBUG] [Thread-160751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:06.223 [DEBUG] [Thread-160751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:06:06.223 [DEBUG] [Thread-160751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:06.241 [INFO] [Thread-160751] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:06.241 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:06:06.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:07.192 [DEBUG] [Thread-160751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:07.192 [DEBUG] [Thread-160751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:07.240 [DEBUG] [Thread-160751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:07.240 [DEBUG] [Thread-160751] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:07.248 [DEBUG] [Thread-160751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:07.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:07.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:06:07.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:06:07.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:07.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:07.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:07.280 [DEBUG] [Thread-160751] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:16.907 [DEBUG] [Thread-160753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:06:17.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:06:17.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:06:17.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:06:17.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 6, 5), 14.68, 36.57, 0.0, 16.66, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:06:17.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:06:05
2025-09-29T16:06:18.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:06:18.162 [DEBUG] [Thread-160754] [transport.py] [_log()] starting thread (client mode): 0x2e360820
2025-09-29T16:06:18.162 [DEBUG] [Thread-160754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:18.183 [DEBUG] [Thread-160754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:06:18.183 [INFO] [Thread-160754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] Compression: none
2025-09-29T16:06:18.187 [DEBUG] [Thread-160754] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:18.205 [DEBUG] [Thread-160754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:18.205 [DEBUG] [Thread-160754] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:18.205 [DEBUG] [Thread-160754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:06:18.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:06:18.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:18.206 [DEBUG] [Thread-160754] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:18.206 [DEBUG] [Thread-160754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:18.206 [DEBUG] [Thread-160754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:18.206 [DEBUG] [Thread-160754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:06:18.206 [DEBUG] [Thread-160754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:18.223 [INFO] [Thread-160754] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:18.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:18.292 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:06:18.293 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:06:18.986 [DEBUG] [Thread-160754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:18.986 [DEBUG] [Thread-160754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:18.986 [DEBUG] [Thread-160754] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:06:19.027 [DEBUG] [Thread-160754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:19.027 [DEBUG] [Thread-160754] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:19.028 [DEBUG] [Thread-160754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:19.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:19.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:06:19.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:06:19.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:06:19.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:19.044 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:06:19.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:19.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:19.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:06:19.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.587219 -999.00  +15.00  17.08     41   +2.20 1 1 1 1 1   887    0 10.50 -98.68 ----- 16.0 17.1 144.2 24.5 21.3 -28.3 20.7 -27.6 22.7 -28.0 23.5 -30.6
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.587219
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:06:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:06:05', tmtdew=14.68, humidity=36.57, cloud=0.0, wind=16.66, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:05:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:06:19.045 [DEBUG] [Thread-160754] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:19.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:06:19.129 [DEBUG] [Thread-160757] [transport.py] [_log()] starting thread (client mode): 0x2e3c1240
2025-09-29T16:06:19.129 [DEBUG] [Thread-160757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:19.147 [DEBUG] [Thread-160757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:06:19.147 [INFO] [Thread-160757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:06:19.154 [DEBUG] [Thread-160757] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] Compression: none
2025-09-29T16:06:19.155 [DEBUG] [Thread-160757] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:19.210 [DEBUG] [Thread-160757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:19.211 [DEBUG] [Thread-160757] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:19.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:06:19.211 [DEBUG] [Thread-160757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:06:19.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:19.267 [DEBUG] [Thread-160757] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:19.268 [DEBUG] [Thread-160757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:19.268 [DEBUG] [Thread-160757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:19.268 [DEBUG] [Thread-160757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:06:19.268 [DEBUG] [Thread-160757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:19.285 [INFO] [Thread-160757] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:19.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:06:19.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:20.328 [DEBUG] [Thread-160757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:20.328 [DEBUG] [Thread-160757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:20.375 [DEBUG] [Thread-160757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:20.376 [DEBUG] [Thread-160757] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:20.385 [DEBUG] [Thread-160757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:20.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:20.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:06:20.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:06:20.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:20.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:20.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:20.419 [DEBUG] [Thread-160757] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:30.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:06:30.422 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:06:30.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:06:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 6, 5), 14.68, 36.57, 0.0, 16.66, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:06:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:06:05
2025-09-29T16:06:31.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:06:31.266 [DEBUG] [Thread-160759] [transport.py] [_log()] starting thread (client mode): 0x2e3c2230
2025-09-29T16:06:31.266 [DEBUG] [Thread-160759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:31.286 [DEBUG] [Thread-160759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:06:31.286 [INFO] [Thread-160759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:06:31.289 [DEBUG] [Thread-160759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:31.290 [DEBUG] [Thread-160759] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:31.291 [DEBUG] [Thread-160759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:31.291 [DEBUG] [Thread-160759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:31.291 [DEBUG] [Thread-160759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:31.291 [DEBUG] [Thread-160759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:31.291 [DEBUG] [Thread-160759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:31.291 [DEBUG] [Thread-160759] [transport.py] [_log()] Compression: none
2025-09-29T16:06:31.291 [DEBUG] [Thread-160759] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:31.310 [DEBUG] [Thread-160759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:31.311 [DEBUG] [Thread-160759] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:31.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:06:31.312 [DEBUG] [Thread-160759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:06:31.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:31.314 [DEBUG] [Thread-160759] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:31.314 [DEBUG] [Thread-160759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:31.314 [DEBUG] [Thread-160759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:31.314 [DEBUG] [Thread-160759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:06:31.314 [DEBUG] [Thread-160759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:31.340 [INFO] [Thread-160759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:31.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:31.937 [DEBUG] [Thread-160761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:06:31.940 [DEBUG] [Thread-160759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:31.941 [DEBUG] [Thread-160759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:31.941 [DEBUG] [Thread-160759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:06:31.981 [DEBUG] [Thread-160759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:31.981 [DEBUG] [Thread-160759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:31.983 [DEBUG] [Thread-160759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:31.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:31.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:06:31.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:06:31.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:06:32.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:32.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:06:32.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:32.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:32.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:06:32.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.587567 -999.00  +15.10   5.96     42   +2.30 1 1 1 1 1   887    0 10.89 -95.25 ----- 8.8 6.0 145.8 12.3 21.3 -29.9 20.8 -27.3 22.8 -27.5 23.6 -28.2
2025-09-29T16:06:32.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:06:32.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:06:32.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.587567
2025-09-29T16:06:32.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:06:32.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:06:32.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:06:32.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:06:32.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:06:32.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:06:05', tmtdew=14.68, humidity=36.57, cloud=0.0, wind=16.66, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:06:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:06:32.006 [DEBUG] [Thread-160759] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:32.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:06:32.102 [DEBUG] [Thread-160763] [transport.py] [_log()] starting thread (client mode): 0x2e377940
2025-09-29T16:06:32.102 [DEBUG] [Thread-160763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:32.117 [DEBUG] [Thread-160763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:06:32.117 [INFO] [Thread-160763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:32.125 [DEBUG] [Thread-160763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:32.126 [DEBUG] [Thread-160763] [transport.py] [_log()] Compression: none
2025-09-29T16:06:32.126 [DEBUG] [Thread-160763] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:32.184 [DEBUG] [Thread-160763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:32.184 [DEBUG] [Thread-160763] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:32.185 [DEBUG] [Thread-160763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:06:32.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:06:32.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:32.240 [DEBUG] [Thread-160763] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:32.240 [DEBUG] [Thread-160763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:32.240 [DEBUG] [Thread-160763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:32.240 [DEBUG] [Thread-160763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:06:32.240 [DEBUG] [Thread-160763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:32.259 [INFO] [Thread-160763] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:32.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:06:32.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:33.270 [DEBUG] [Thread-160763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:33.271 [DEBUG] [Thread-160763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:33.319 [DEBUG] [Thread-160763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:33.319 [DEBUG] [Thread-160763] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:33.328 [DEBUG] [Thread-160763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:33.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:33.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:06:33.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:06:33.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:33.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:33.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:33.364 [DEBUG] [Thread-160763] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:43.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:06:43.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:06:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:06:43.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 6, 37), 14.65, 36.9, 0.0, 16.08, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:06:43.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:06:37
2025-09-29T16:06:44.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:06:44.223 [DEBUG] [Thread-160765] [transport.py] [_log()] starting thread (client mode): 0x2e3774f0
2025-09-29T16:06:44.223 [DEBUG] [Thread-160765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:44.243 [DEBUG] [Thread-160765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:06:44.243 [INFO] [Thread-160765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:44.246 [DEBUG] [Thread-160765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:44.247 [DEBUG] [Thread-160765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:44.247 [DEBUG] [Thread-160765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:44.247 [DEBUG] [Thread-160765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:44.247 [DEBUG] [Thread-160765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:44.247 [DEBUG] [Thread-160765] [transport.py] [_log()] Compression: none
2025-09-29T16:06:44.247 [DEBUG] [Thread-160765] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:44.262 [DEBUG] [Thread-160765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:44.262 [DEBUG] [Thread-160765] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:44.262 [DEBUG] [Thread-160765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:06:44.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:06:44.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:44.304 [DEBUG] [Thread-160765] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:44.304 [DEBUG] [Thread-160765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:44.304 [DEBUG] [Thread-160765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:44.304 [DEBUG] [Thread-160765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:06:44.304 [DEBUG] [Thread-160765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:44.323 [INFO] [Thread-160765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:44.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:45.056 [DEBUG] [Thread-160765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:45.056 [DEBUG] [Thread-160765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:45.057 [DEBUG] [Thread-160765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:06:45.097 [DEBUG] [Thread-160765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:45.097 [DEBUG] [Thread-160765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:45.100 [DEBUG] [Thread-160765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:45.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:45.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:06:45.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:06:45.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:06:45.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:45.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:06:45.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:45.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:45.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:06:45.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.587567 -999.00  +15.10   5.96     42   +2.30 1 1 1 1 1   887    0 10.89 -95.25 ----- 8.8 6.0 145.8 12.3 21.3 -29.9 20.8 -27.3 22.8 -27.5 23.6 -28.2
2025-09-29T16:06:45.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:06:45.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:06:45.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.587567
2025-09-29T16:06:45.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:06:45.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:06:45.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:06:45.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:06:45.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:06:45.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:06:37', tmtdew=14.65, humidity=36.9, cloud=0.0, wind=16.08, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:06:05.789', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:06:45.124 [DEBUG] [Thread-160765] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:45.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:06:45.219 [DEBUG] [Thread-160768] [transport.py] [_log()] starting thread (client mode): 0x2e3768c0
2025-09-29T16:06:45.219 [DEBUG] [Thread-160768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:45.233 [DEBUG] [Thread-160768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:06:45.234 [INFO] [Thread-160768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:06:45.241 [DEBUG] [Thread-160768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:45.241 [DEBUG] [Thread-160768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:06:45.241 [DEBUG] [Thread-160768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:45.241 [DEBUG] [Thread-160768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] Compression: none
2025-09-29T16:06:45.242 [DEBUG] [Thread-160768] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:45.299 [DEBUG] [Thread-160768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:45.300 [DEBUG] [Thread-160768] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:45.300 [DEBUG] [Thread-160768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:06:45.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:06:45.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:45.357 [DEBUG] [Thread-160768] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:45.358 [DEBUG] [Thread-160768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:45.358 [DEBUG] [Thread-160768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:45.358 [DEBUG] [Thread-160768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:06:45.358 [DEBUG] [Thread-160768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:45.381 [INFO] [Thread-160768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:45.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:06:45.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:46.372 [DEBUG] [Thread-160768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:46.372 [DEBUG] [Thread-160768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:46.420 [DEBUG] [Thread-160768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:46.420 [DEBUG] [Thread-160768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:46.429 [DEBUG] [Thread-160768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:46.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:46.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:06:46.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:06:46.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:46.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:46.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:46.462 [DEBUG] [Thread-160768] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:46.981 [DEBUG] [Thread-160770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:06:47.861 [DEBUG] [Thread-160771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:06:56.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:06:56.464 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:06:56.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:06:57.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 6, 37), 14.65, 36.9, 0.0, 16.08, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:06:57.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:06:37
2025-09-29T16:06:57.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:06:57.320 [DEBUG] [Thread-160772] [transport.py] [_log()] starting thread (client mode): 0x2e38d9c0
2025-09-29T16:06:57.320 [DEBUG] [Thread-160772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:57.341 [DEBUG] [Thread-160772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:06:57.341 [INFO] [Thread-160772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:57.344 [DEBUG] [Thread-160772] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:57.345 [DEBUG] [Thread-160772] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:57.345 [DEBUG] [Thread-160772] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:57.345 [DEBUG] [Thread-160772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:57.345 [DEBUG] [Thread-160772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:57.345 [DEBUG] [Thread-160772] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:57.345 [DEBUG] [Thread-160772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:57.345 [DEBUG] [Thread-160772] [transport.py] [_log()] Compression: none
2025-09-29T16:06:57.345 [DEBUG] [Thread-160772] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:57.360 [DEBUG] [Thread-160772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:57.360 [DEBUG] [Thread-160772] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:57.360 [DEBUG] [Thread-160772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:06:57.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:06:57.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:57.361 [DEBUG] [Thread-160772] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:57.361 [DEBUG] [Thread-160772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:57.361 [DEBUG] [Thread-160772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:57.361 [DEBUG] [Thread-160772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:06:57.361 [DEBUG] [Thread-160772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:57.370 [INFO] [Thread-160772] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:57.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:57.957 [DEBUG] [Thread-160772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:57.957 [DEBUG] [Thread-160772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:57.957 [DEBUG] [Thread-160772] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:06:57.998 [DEBUG] [Thread-160772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:57.998 [DEBUG] [Thread-160772] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:58.000 [DEBUG] [Thread-160772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:58.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:58.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:06:58.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:06:58.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:06:58.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:58.013 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:06:58.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.587914 -999.00  +15.10  11.02     41   +2.20 1 1 1 1 1   887    0 10.48 -96.51 ----- 9.9 11.0 148.2 14.4 21.4 -27.9 20.9 -27.2 22.9 -27.7 23.7 -29.3
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.587914
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:06:58.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:06:37', tmtdew=14.65, humidity=36.9, cloud=0.0, wind=16.08, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:06:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:06:58.014 [DEBUG] [Thread-160772] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:06:58.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:06:58.097 [DEBUG] [Thread-160775] [transport.py] [_log()] starting thread (client mode): 0x2e38eda0
2025-09-29T16:06:58.097 [DEBUG] [Thread-160775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:06:58.113 [DEBUG] [Thread-160775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:06:58.113 [INFO] [Thread-160775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] client lang: <none>
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] server lang: <none>
2025-09-29T16:06:58.120 [DEBUG] [Thread-160775] [transport.py] [_log()] kex follows: False
2025-09-29T16:06:58.121 [DEBUG] [Thread-160775] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:06:58.121 [DEBUG] [Thread-160775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:06:58.121 [DEBUG] [Thread-160775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:06:58.121 [DEBUG] [Thread-160775] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:06:58.121 [DEBUG] [Thread-160775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:06:58.121 [DEBUG] [Thread-160775] [transport.py] [_log()] Compression: none
2025-09-29T16:06:58.121 [DEBUG] [Thread-160775] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:06:58.175 [DEBUG] [Thread-160775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:06:58.175 [DEBUG] [Thread-160775] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:06:58.176 [DEBUG] [Thread-160775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:06:58.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:06:58.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:06:58.232 [DEBUG] [Thread-160775] [transport.py] [_log()] userauth is OK
2025-09-29T16:06:58.232 [DEBUG] [Thread-160775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:06:58.232 [DEBUG] [Thread-160775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:06:58.232 [DEBUG] [Thread-160775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:06:58.232 [DEBUG] [Thread-160775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:06:58.249 [INFO] [Thread-160775] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:06:58.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:06:58.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:06:59.231 [DEBUG] [Thread-160775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:06:59.231 [DEBUG] [Thread-160775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:06:59.279 [DEBUG] [Thread-160775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:06:59.279 [DEBUG] [Thread-160775] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:06:59.289 [DEBUG] [Thread-160775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:06:59.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:06:59.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:06:59.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:06:59.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:06:59.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:06:59.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:06:59.323 [DEBUG] [Thread-160775] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:07:02.022 [DEBUG] [Thread-160777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:07:09.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:07:09.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:07:09.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:07:09.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 6, 37), 14.65, 36.9, 0.0, 16.08, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:07:09.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:06:37
2025-09-29T16:07:10.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:07:10.155 [DEBUG] [Thread-160778] [transport.py] [_log()] starting thread (client mode): 0x2e38ef80
2025-09-29T16:07:10.155 [DEBUG] [Thread-160778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:07:10.175 [DEBUG] [Thread-160778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:07:10.175 [INFO] [Thread-160778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] client lang: <none>
2025-09-29T16:07:10.178 [DEBUG] [Thread-160778] [transport.py] [_log()] server lang: <none>
2025-09-29T16:07:10.179 [DEBUG] [Thread-160778] [transport.py] [_log()] kex follows: False
2025-09-29T16:07:10.179 [DEBUG] [Thread-160778] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:07:10.179 [DEBUG] [Thread-160778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:07:10.179 [DEBUG] [Thread-160778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:07:10.179 [DEBUG] [Thread-160778] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:07:10.179 [DEBUG] [Thread-160778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:07:10.179 [DEBUG] [Thread-160778] [transport.py] [_log()] Compression: none
2025-09-29T16:07:10.179 [DEBUG] [Thread-160778] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:07:10.197 [DEBUG] [Thread-160778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:07:10.197 [DEBUG] [Thread-160778] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:07:10.197 [DEBUG] [Thread-160778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:07:10.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:07:10.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:07:10.240 [DEBUG] [Thread-160778] [transport.py] [_log()] userauth is OK
2025-09-29T16:07:10.240 [DEBUG] [Thread-160778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:07:10.240 [DEBUG] [Thread-160778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:07:10.240 [DEBUG] [Thread-160778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:07:10.240 [DEBUG] [Thread-160778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:07:10.259 [INFO] [Thread-160778] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:07:10.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:07:10.971 [DEBUG] [Thread-160778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:07:10.971 [DEBUG] [Thread-160778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:07:10.971 [DEBUG] [Thread-160778] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:07:11.012 [DEBUG] [Thread-160778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:07:11.012 [DEBUG] [Thread-160778] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:07:11.014 [DEBUG] [Thread-160778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:07:11.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:07:11.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:07:11.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:07:11.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:07:11.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:07:11.027 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:07:11.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.587914 -999.00  +15.10  11.02     41   +2.20 1 1 1 1 1   887    0 10.48 -96.51 ----- 9.9 11.0 148.2 14.4 21.4 -27.9 20.9 -27.2 22.9 -27.7 23.7 -29.3
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.587914
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:07:11.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:06:37', tmtdew=14.65, humidity=36.9, cloud=0.0, wind=16.08, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:06:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:07:11.028 [DEBUG] [Thread-160778] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:07:11.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:07:11.112 [DEBUG] [Thread-160781] [transport.py] [_log()] starting thread (client mode): 0x2e3dccd0
2025-09-29T16:07:11.113 [DEBUG] [Thread-160781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:07:11.127 [DEBUG] [Thread-160781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:07:11.127 [INFO] [Thread-160781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] client lang: <none>
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] server lang: <none>
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] kex follows: False
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] Compression: none
2025-09-29T16:07:11.135 [DEBUG] [Thread-160781] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:07:11.191 [DEBUG] [Thread-160781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:07:11.191 [DEBUG] [Thread-160781] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:07:11.191 [DEBUG] [Thread-160781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:07:11.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:07:11.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:07:11.248 [DEBUG] [Thread-160781] [transport.py] [_log()] userauth is OK
2025-09-29T16:07:11.248 [DEBUG] [Thread-160781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:07:11.248 [DEBUG] [Thread-160781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:07:11.248 [DEBUG] [Thread-160781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:07:11.248 [DEBUG] [Thread-160781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:07:11.265 [INFO] [Thread-160781] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:07:11.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:07:11.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:07:12.256 [DEBUG] [Thread-160781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:07:12.257 [DEBUG] [Thread-160781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:07:12.304 [DEBUG] [Thread-160781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:07:12.304 [DEBUG] [Thread-160781] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:07:12.314 [DEBUG] [Thread-160781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:07:12.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:07:12.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:07:12.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:07:12.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:07:12.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:07:12.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:07:12.349 [DEBUG] [Thread-160781] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:07:17.064 [DEBUG] [Thread-160783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:07:18.430 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:07:18.432 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:07:22.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:07:22.351 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:07:22.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:07:22.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 7, 9), 14.67, 36.87, 0.0, 21.14, 14.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:07:22.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:07:09
2025-09-29T16:07:23.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:07:23.182 [DEBUG] [Thread-160784] [transport.py] [_log()] starting thread (client mode): 0x2e377fd0
2025-09-29T16:07:23.182 [DEBUG] [Thread-160784] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:07:23.202 [DEBUG] [Thread-160784] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:07:23.202 [INFO] [Thread-160784] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:07:23.205 [DEBUG] [Thread-160784] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:07:23.205 [DEBUG] [Thread-160784] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:07:23.205 [DEBUG] [Thread-160784] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:07:23.205 [DEBUG] [Thread-160784] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:23.205 [DEBUG] [Thread-160784] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:23.205 [DEBUG] [Thread-160784] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:23.205 [DEBUG] [Thread-160784] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] client lang: <none>
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] server lang: <none>
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] kex follows: False
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] Compression: none
2025-09-29T16:07:23.206 [DEBUG] [Thread-160784] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:07:23.224 [DEBUG] [Thread-160784] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:07:23.225 [DEBUG] [Thread-160784] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:07:23.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:07:23.226 [DEBUG] [Thread-160784] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:07:23.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:07:23.228 [DEBUG] [Thread-160784] [transport.py] [_log()] userauth is OK
2025-09-29T16:07:23.228 [DEBUG] [Thread-160784] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:07:23.228 [DEBUG] [Thread-160784] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:07:23.229 [DEBUG] [Thread-160784] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:07:23.229 [DEBUG] [Thread-160784] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:07:23.251 [INFO] [Thread-160784] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:07:23.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:07:23.979 [DEBUG] [Thread-160784] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:07:23.979 [DEBUG] [Thread-160784] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:07:23.980 [DEBUG] [Thread-160784] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:07:24.020 [DEBUG] [Thread-160784] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:07:24.020 [DEBUG] [Thread-160784] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:07:24.024 [DEBUG] [Thread-160784] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:07:24.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:07:24.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:07:24.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:07:24.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:07:24.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:07:24.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:07:24.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:07:24.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:07:24.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:07:24.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.587914 -999.00  +15.10  11.02     41   +2.20 1 1 1 1 1   887    0 10.48 -96.51 ----- 9.9 11.0 148.2 14.4 21.4 -27.9 20.9 -27.2 22.9 -27.7 23.7 -29.3
2025-09-29T16:07:24.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:07:24.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:07:24.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.587914
2025-09-29T16:07:24.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:07:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:07:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:07:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:07:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:07:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:07:09', tmtdew=14.67, humidity=36.87, cloud=0.0, wind=21.14, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:06:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:07:24.047 [DEBUG] [Thread-160784] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:07:24.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:07:24.141 [DEBUG] [Thread-160787] [transport.py] [_log()] starting thread (client mode): 0x2e38cd00
2025-09-29T16:07:24.141 [DEBUG] [Thread-160787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:07:24.156 [DEBUG] [Thread-160787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:07:24.156 [INFO] [Thread-160787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:07:24.164 [DEBUG] [Thread-160787] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:07:24.165 [DEBUG] [Thread-160787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:07:24.165 [DEBUG] [Thread-160787] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:07:24.165 [DEBUG] [Thread-160787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:24.165 [DEBUG] [Thread-160787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:24.165 [DEBUG] [Thread-160787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:24.165 [DEBUG] [Thread-160787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:24.165 [DEBUG] [Thread-160787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:07:24.165 [DEBUG] [Thread-160787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] client lang: <none>
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] server lang: <none>
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] kex follows: False
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:07:24.166 [DEBUG] [Thread-160787] [transport.py] [_log()] Compression: none
2025-09-29T16:07:24.167 [DEBUG] [Thread-160787] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:07:24.220 [DEBUG] [Thread-160787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:07:24.221 [DEBUG] [Thread-160787] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:07:24.221 [DEBUG] [Thread-160787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:07:24.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:07:24.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:07:24.276 [DEBUG] [Thread-160787] [transport.py] [_log()] userauth is OK
2025-09-29T16:07:24.277 [DEBUG] [Thread-160787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:07:24.277 [DEBUG] [Thread-160787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:07:24.277 [DEBUG] [Thread-160787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:07:24.277 [DEBUG] [Thread-160787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:07:24.296 [INFO] [Thread-160787] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:07:24.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:07:24.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:07:25.298 [DEBUG] [Thread-160787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:07:25.298 [DEBUG] [Thread-160787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:07:25.346 [DEBUG] [Thread-160787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:07:25.346 [DEBUG] [Thread-160787] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:07:25.356 [DEBUG] [Thread-160787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:07:25.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:07:25.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:07:25.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:07:25.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:07:25.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:07:25.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:07:25.390 [DEBUG] [Thread-160787] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:07:32.092 [DEBUG] [Thread-160789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:07:35.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:07:35.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:07:35.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:07:35.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 7, 9), 14.67, 36.87, 0.0, 21.14, 14.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:07:35.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:07:09
2025-09-29T16:07:36.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:07:36.219 [DEBUG] [Thread-160790] [transport.py] [_log()] starting thread (client mode): 0x2e38dae0
2025-09-29T16:07:36.219 [DEBUG] [Thread-160790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:07:36.240 [DEBUG] [Thread-160790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:07:36.240 [INFO] [Thread-160790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:07:36.243 [DEBUG] [Thread-160790] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:07:36.243 [DEBUG] [Thread-160790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:07:36.243 [DEBUG] [Thread-160790] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:07:36.243 [DEBUG] [Thread-160790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:36.243 [DEBUG] [Thread-160790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:36.243 [DEBUG] [Thread-160790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] client lang: <none>
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] server lang: <none>
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] kex follows: False
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] Compression: none
2025-09-29T16:07:36.244 [DEBUG] [Thread-160790] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:07:36.260 [DEBUG] [Thread-160790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:07:36.260 [DEBUG] [Thread-160790] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:07:36.261 [DEBUG] [Thread-160790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:07:36.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:07:36.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:07:36.263 [DEBUG] [Thread-160790] [transport.py] [_log()] userauth is OK
2025-09-29T16:07:36.263 [DEBUG] [Thread-160790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:07:36.264 [DEBUG] [Thread-160790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:07:36.264 [DEBUG] [Thread-160790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:07:36.264 [DEBUG] [Thread-160790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:07:36.278 [INFO] [Thread-160790] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:07:36.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:07:36.860 [DEBUG] [Thread-160790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:07:36.860 [DEBUG] [Thread-160790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:07:36.860 [DEBUG] [Thread-160790] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:07:36.900 [DEBUG] [Thread-160790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:07:36.901 [DEBUG] [Thread-160790] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:07:36.904 [DEBUG] [Thread-160790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:07:36.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:07:36.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:07:36.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:07:36.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:07:36.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:07:36.920 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:07:36.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.588261 -999.00  +15.30  14.92     41   +2.40 1 1 1 1 1   887    0 11.03 -93.75 ----- 15.8 14.9 141.0 17.4 21.4 -28.5 20.9 -27.3 22.9 -28.5 23.9 -27.7
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.588261
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:07:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:07:09', tmtdew=14.67, humidity=36.87, cloud=0.0, wind=21.14, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:07:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:07:36.921 [DEBUG] [Thread-160790] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:07:36.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:07:37.006 [DEBUG] [Thread-160793] [transport.py] [_log()] starting thread (client mode): 0x2e3746a0
2025-09-29T16:07:37.006 [DEBUG] [Thread-160793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:07:37.021 [DEBUG] [Thread-160793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:07:37.021 [INFO] [Thread-160793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:07:37.028 [DEBUG] [Thread-160793] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] client lang: <none>
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] server lang: <none>
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] kex follows: False
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] Compression: none
2025-09-29T16:07:37.029 [DEBUG] [Thread-160793] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:07:37.088 [DEBUG] [Thread-160793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:07:37.089 [DEBUG] [Thread-160793] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:07:37.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:07:37.090 [DEBUG] [Thread-160793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:07:37.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:07:37.152 [DEBUG] [Thread-160793] [transport.py] [_log()] userauth is OK
2025-09-29T16:07:37.152 [DEBUG] [Thread-160793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:07:37.153 [DEBUG] [Thread-160793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:07:37.153 [DEBUG] [Thread-160793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:07:37.153 [DEBUG] [Thread-160793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:07:37.171 [INFO] [Thread-160793] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:07:37.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:07:37.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:07:38.142 [DEBUG] [Thread-160793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:07:38.143 [DEBUG] [Thread-160793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:07:38.190 [DEBUG] [Thread-160793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:07:38.190 [DEBUG] [Thread-160793] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:07:38.199 [DEBUG] [Thread-160793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:07:38.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:07:38.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:07:38.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:07:38.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:07:38.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:07:38.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:07:38.234 [DEBUG] [Thread-160793] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:07:47.131 [DEBUG] [Thread-160795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:07:47.892 [DEBUG] [Thread-160796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:07:48.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:07:48.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:07:48.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:07:48.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 7, 41), 14.97, 36.15, 0.0, 21.01, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:07:48.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:07:41
2025-09-29T16:07:48.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:07:49.061 [DEBUG] [Thread-160797] [transport.py] [_log()] starting thread (client mode): 0x2e38f0d0
2025-09-29T16:07:49.061 [DEBUG] [Thread-160797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:07:49.081 [DEBUG] [Thread-160797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:07:49.081 [INFO] [Thread-160797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] client lang: <none>
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] server lang: <none>
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] kex follows: False
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] Compression: none
2025-09-29T16:07:49.085 [DEBUG] [Thread-160797] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:07:49.103 [DEBUG] [Thread-160797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:07:49.103 [DEBUG] [Thread-160797] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:07:49.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:07:49.104 [DEBUG] [Thread-160797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:07:49.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:07:49.106 [DEBUG] [Thread-160797] [transport.py] [_log()] userauth is OK
2025-09-29T16:07:49.106 [DEBUG] [Thread-160797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:07:49.106 [DEBUG] [Thread-160797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:07:49.106 [DEBUG] [Thread-160797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:07:49.106 [DEBUG] [Thread-160797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:07:49.130 [INFO] [Thread-160797] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:07:49.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:07:49.926 [DEBUG] [Thread-160797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:07:49.927 [DEBUG] [Thread-160797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:07:49.927 [DEBUG] [Thread-160797] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:07:49.967 [DEBUG] [Thread-160797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:07:49.967 [DEBUG] [Thread-160797] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:07:49.970 [DEBUG] [Thread-160797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:07:49.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:07:49.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:07:49.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:07:49.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:07:49.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:07:49.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:07:49.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:07:49.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:07:49.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:07:49.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.588261 -999.00  +15.30  14.92     41   +2.40 1 1 1 1 1   887    0 11.03 -93.75 ----- 15.8 14.9 141.0 17.4 21.4 -28.5 20.9 -27.3 22.9 -28.5 23.9 -27.7
2025-09-29T16:07:49.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:07:49.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:07:49.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.588261
2025-09-29T16:07:49.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:07:49.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:07:49.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:07:49.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:07:49.995 [DEBUG] [Thread-160797] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:07:49.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:07:49.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:07:41', tmtdew=14.97, humidity=36.15, cloud=0.0, wind=21.01, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:07:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:07:50.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:07:50.089 [DEBUG] [Thread-160800] [transport.py] [_log()] starting thread (client mode): 0x2e38c670
2025-09-29T16:07:50.089 [DEBUG] [Thread-160800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:07:50.107 [DEBUG] [Thread-160800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:07:50.107 [INFO] [Thread-160800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:07:50.117 [DEBUG] [Thread-160800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:07:50.117 [DEBUG] [Thread-160800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:07:50.117 [DEBUG] [Thread-160800] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] client lang: <none>
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] server lang: <none>
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] kex follows: False
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] Compression: none
2025-09-29T16:07:50.118 [DEBUG] [Thread-160800] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:07:50.173 [DEBUG] [Thread-160800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:07:50.174 [DEBUG] [Thread-160800] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:07:50.174 [DEBUG] [Thread-160800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:07:50.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:07:50.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:07:50.229 [DEBUG] [Thread-160800] [transport.py] [_log()] userauth is OK
2025-09-29T16:07:50.229 [DEBUG] [Thread-160800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:07:50.229 [DEBUG] [Thread-160800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:07:50.229 [DEBUG] [Thread-160800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:07:50.229 [DEBUG] [Thread-160800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:07:50.245 [INFO] [Thread-160800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:07:50.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:07:50.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:07:51.240 [DEBUG] [Thread-160800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:07:51.240 [DEBUG] [Thread-160800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:07:51.288 [DEBUG] [Thread-160800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:07:51.288 [DEBUG] [Thread-160800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:07:51.299 [DEBUG] [Thread-160800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:07:51.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:07:51.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:07:51.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:07:51.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:07:51.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:07:51.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:07:51.341 [DEBUG] [Thread-160800] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:01.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:08:01.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:08:01.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:08:01.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 7, 41), 14.97, 36.15, 0.0, 21.01, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:08:01.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:07:41
2025-09-29T16:08:02.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:08:02.166 [DEBUG] [Thread-160802] [transport.py] [_log()] starting thread (client mode): 0x2e3c22f0
2025-09-29T16:08:02.166 [DEBUG] [Thread-160802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:02.167 [DEBUG] [Thread-160803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:08:02.177 [DEBUG] [Thread-160802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:08:02.177 [INFO] [Thread-160802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:02.178 [DEBUG] [Thread-160802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:02.179 [DEBUG] [Thread-160802] [transport.py] [_log()] Compression: none
2025-09-29T16:08:02.179 [DEBUG] [Thread-160802] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:02.200 [DEBUG] [Thread-160802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:02.201 [DEBUG] [Thread-160802] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:02.201 [DEBUG] [Thread-160802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:08:02.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:08:02.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:02.202 [DEBUG] [Thread-160802] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:02.202 [DEBUG] [Thread-160802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:02.202 [DEBUG] [Thread-160802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:02.202 [DEBUG] [Thread-160802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:08:02.202 [DEBUG] [Thread-160802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:02.224 [INFO] [Thread-160802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:02.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:02.807 [DEBUG] [Thread-160802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:02.807 [DEBUG] [Thread-160802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:02.807 [DEBUG] [Thread-160802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:08:02.848 [DEBUG] [Thread-160802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:02.848 [DEBUG] [Thread-160802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:02.850 [DEBUG] [Thread-160802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:02.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:02.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:08:02.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:08:02.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:08:02.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:02.867 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:08:02.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.588608 -999.00  +15.40  17.76     41   +2.30 1 1 1 1 1   887    0 10.77 -95.17 ----- 19.1 17.8 164.0 22.5 21.5 -28.4 21.0 -27.4 22.8 -28.1 23.8 -29.1
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.588608
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:08:02.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:07:41', tmtdew=14.97, humidity=36.15, cloud=0.0, wind=21.01, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:07:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:08:02.867 [DEBUG] [Thread-160802] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:02.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:08:02.952 [DEBUG] [Thread-160806] [transport.py] [_log()] starting thread (client mode): 0x2e3c0610
2025-09-29T16:08:02.953 [DEBUG] [Thread-160806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:02.968 [DEBUG] [Thread-160806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:08:02.968 [INFO] [Thread-160806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:08:02.976 [DEBUG] [Thread-160806] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:02.976 [DEBUG] [Thread-160806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:08:02.976 [DEBUG] [Thread-160806] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:02.976 [DEBUG] [Thread-160806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:02.976 [DEBUG] [Thread-160806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:02.976 [DEBUG] [Thread-160806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:02.977 [DEBUG] [Thread-160806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:02.977 [DEBUG] [Thread-160806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:02.977 [DEBUG] [Thread-160806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:02.977 [DEBUG] [Thread-160806] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:02.977 [DEBUG] [Thread-160806] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:02.977 [DEBUG] [Thread-160806] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:02.977 [DEBUG] [Thread-160806] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:02.977 [DEBUG] [Thread-160806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:02.978 [DEBUG] [Thread-160806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:02.978 [DEBUG] [Thread-160806] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:02.978 [DEBUG] [Thread-160806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:02.978 [DEBUG] [Thread-160806] [transport.py] [_log()] Compression: none
2025-09-29T16:08:02.978 [DEBUG] [Thread-160806] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:03.032 [DEBUG] [Thread-160806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:03.033 [DEBUG] [Thread-160806] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:03.033 [DEBUG] [Thread-160806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:08:03.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:08:03.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:03.089 [DEBUG] [Thread-160806] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:03.089 [DEBUG] [Thread-160806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:03.089 [DEBUG] [Thread-160806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:03.089 [DEBUG] [Thread-160806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:08:03.089 [DEBUG] [Thread-160806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:03.108 [INFO] [Thread-160806] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:03.108 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:08:03.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:04.070 [DEBUG] [Thread-160806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:04.071 [DEBUG] [Thread-160806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:04.119 [DEBUG] [Thread-160806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:04.119 [DEBUG] [Thread-160806] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:04.128 [DEBUG] [Thread-160806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:04.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:04.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:08:04.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:08:04.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:04.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:04.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:04.162 [DEBUG] [Thread-160806] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:14.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:08:14.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:08:14.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:08:14.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 7, 41), 14.97, 36.15, 0.0, 21.01, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:08:14.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:07:41
2025-09-29T16:08:14.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:08:15.005 [DEBUG] [Thread-160808] [transport.py] [_log()] starting thread (client mode): 0x2e3df8e0
2025-09-29T16:08:15.005 [DEBUG] [Thread-160808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:15.027 [DEBUG] [Thread-160808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:08:15.027 [INFO] [Thread-160808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] Compression: none
2025-09-29T16:08:15.031 [DEBUG] [Thread-160808] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:15.049 [DEBUG] [Thread-160808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:15.049 [DEBUG] [Thread-160808] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:15.049 [DEBUG] [Thread-160808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:08:15.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:08:15.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:15.050 [DEBUG] [Thread-160808] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:15.050 [DEBUG] [Thread-160808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:15.050 [DEBUG] [Thread-160808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:15.050 [DEBUG] [Thread-160808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:08:15.050 [DEBUG] [Thread-160808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:15.058 [INFO] [Thread-160808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:15.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:15.855 [DEBUG] [Thread-160808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:15.855 [DEBUG] [Thread-160808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:15.855 [DEBUG] [Thread-160808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:08:15.896 [DEBUG] [Thread-160808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:15.896 [DEBUG] [Thread-160808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:15.898 [DEBUG] [Thread-160808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:15.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:15.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:08:15.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:08:15.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:08:15.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:15.916 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:08:15.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:15.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:15.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:08:15.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.588608 -999.00  +15.40  17.76     41   +2.30 1 1 1 1 1   887    0 10.77 -95.17 ----- 19.1 17.8 164.0 22.5 21.5 -28.4 21.0 -27.4 22.8 -28.1 23.8 -29.1
2025-09-29T16:08:15.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:08:15.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:08:15.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.588608
2025-09-29T16:08:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:08:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:08:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:08:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:08:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:08:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:07:41', tmtdew=14.97, humidity=36.15, cloud=0.0, wind=21.01, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:07:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:08:15.917 [DEBUG] [Thread-160808] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:15.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:08:16.001 [DEBUG] [Thread-160811] [transport.py] [_log()] starting thread (client mode): 0x2e38d930
2025-09-29T16:08:16.001 [DEBUG] [Thread-160811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:16.017 [DEBUG] [Thread-160811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:08:16.017 [INFO] [Thread-160811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:08:16.024 [DEBUG] [Thread-160811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:16.024 [DEBUG] [Thread-160811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:08:16.024 [DEBUG] [Thread-160811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:16.024 [DEBUG] [Thread-160811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:16.024 [DEBUG] [Thread-160811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] Compression: none
2025-09-29T16:08:16.025 [DEBUG] [Thread-160811] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:16.080 [DEBUG] [Thread-160811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:16.080 [DEBUG] [Thread-160811] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:16.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:08:16.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:16.080 [DEBUG] [Thread-160811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:08:16.137 [DEBUG] [Thread-160811] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:16.137 [DEBUG] [Thread-160811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:16.137 [DEBUG] [Thread-160811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:16.137 [DEBUG] [Thread-160811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:08:16.137 [DEBUG] [Thread-160811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:16.152 [INFO] [Thread-160811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:16.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:08:16.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:17.139 [DEBUG] [Thread-160811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:17.140 [DEBUG] [Thread-160811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:17.187 [DEBUG] [Thread-160811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:17.187 [DEBUG] [Thread-160811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:17.196 [DEBUG] [Thread-160811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:17.202 [DEBUG] [Thread-160813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:08:17.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:17.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:08:17.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:08:17.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:17.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:17.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:17.231 [DEBUG] [Thread-160811] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:18.571 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:08:18.571 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:08:27.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:08:27.234 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:08:27.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:08:27.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 8, 13), 15.1, 35.87, 0.0, 19.02, 15.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:08:27.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:08:13
2025-09-29T16:08:27.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:08:28.080 [DEBUG] [Thread-160814] [transport.py] [_log()] starting thread (client mode): 0x2e38d2d0
2025-09-29T16:08:28.080 [DEBUG] [Thread-160814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:28.100 [DEBUG] [Thread-160814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:08:28.100 [INFO] [Thread-160814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:08:28.103 [DEBUG] [Thread-160814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:28.103 [DEBUG] [Thread-160814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:08:28.103 [DEBUG] [Thread-160814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:28.103 [DEBUG] [Thread-160814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:28.103 [DEBUG] [Thread-160814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:28.103 [DEBUG] [Thread-160814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:28.103 [DEBUG] [Thread-160814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:28.103 [DEBUG] [Thread-160814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] Compression: none
2025-09-29T16:08:28.104 [DEBUG] [Thread-160814] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:28.119 [DEBUG] [Thread-160814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:28.120 [DEBUG] [Thread-160814] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:28.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:08:28.121 [DEBUG] [Thread-160814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:08:28.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:28.123 [DEBUG] [Thread-160814] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:28.123 [DEBUG] [Thread-160814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:28.123 [DEBUG] [Thread-160814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:28.123 [DEBUG] [Thread-160814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:08:28.123 [DEBUG] [Thread-160814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:28.137 [INFO] [Thread-160814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:28.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:28.920 [DEBUG] [Thread-160814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:28.920 [DEBUG] [Thread-160814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:28.920 [DEBUG] [Thread-160814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:08:28.961 [DEBUG] [Thread-160814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:28.961 [DEBUG] [Thread-160814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:28.964 [DEBUG] [Thread-160814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:28.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:28.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:08:28.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:08:28.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:08:28.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:28.986 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:08:28.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:28.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:28.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:08:28.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.588608 -999.00  +15.40  17.76     41   +2.30 1 1 1 1 1   887    0 10.77 -95.17 ----- 19.1 17.8 164.0 22.5 21.5 -28.4 21.0 -27.4 22.8 -28.1 23.8 -29.1
2025-09-29T16:08:28.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:08:28.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:08:28.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.588608
2025-09-29T16:08:28.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:08:28.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:08:28.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:08:28.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:08:28.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:08:28.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:08:13', tmtdew=15.1, humidity=35.87, cloud=0.0, wind=19.02, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:07:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:08:28.989 [DEBUG] [Thread-160814] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:29.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:08:29.085 [DEBUG] [Thread-160817] [transport.py] [_log()] starting thread (client mode): 0x2e38f520
2025-09-29T16:08:29.085 [DEBUG] [Thread-160817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:29.100 [DEBUG] [Thread-160817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:08:29.100 [INFO] [Thread-160817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:29.108 [DEBUG] [Thread-160817] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:29.109 [DEBUG] [Thread-160817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:29.109 [DEBUG] [Thread-160817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:29.109 [DEBUG] [Thread-160817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:29.109 [DEBUG] [Thread-160817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:29.109 [DEBUG] [Thread-160817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:29.109 [DEBUG] [Thread-160817] [transport.py] [_log()] Compression: none
2025-09-29T16:08:29.109 [DEBUG] [Thread-160817] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:29.165 [DEBUG] [Thread-160817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:29.165 [DEBUG] [Thread-160817] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:29.165 [DEBUG] [Thread-160817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:08:29.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:08:29.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:29.221 [DEBUG] [Thread-160817] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:29.221 [DEBUG] [Thread-160817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:29.222 [DEBUG] [Thread-160817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:29.222 [DEBUG] [Thread-160817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:08:29.222 [DEBUG] [Thread-160817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:29.240 [INFO] [Thread-160817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:29.241 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:08:29.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:30.227 [DEBUG] [Thread-160817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:30.228 [DEBUG] [Thread-160817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:30.275 [DEBUG] [Thread-160817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:30.275 [DEBUG] [Thread-160817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:30.284 [DEBUG] [Thread-160817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:30.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:30.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:08:30.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:08:30.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:30.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:30.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:30.319 [DEBUG] [Thread-160817] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:32.255 [DEBUG] [Thread-160819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:08:40.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:08:40.315 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:08:40.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:08:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 8, 13), 15.1, 35.87, 0.0, 19.02, 15.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:08:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:08:13
2025-09-29T16:08:41.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:08:41.154 [DEBUG] [Thread-160820] [transport.py] [_log()] starting thread (client mode): 0x2e3c20e0
2025-09-29T16:08:41.154 [DEBUG] [Thread-160820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:41.174 [DEBUG] [Thread-160820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:08:41.174 [INFO] [Thread-160820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:41.177 [DEBUG] [Thread-160820] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:41.178 [DEBUG] [Thread-160820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:41.178 [DEBUG] [Thread-160820] [transport.py] [_log()] Compression: none
2025-09-29T16:08:41.178 [DEBUG] [Thread-160820] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:41.197 [DEBUG] [Thread-160820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:41.197 [DEBUG] [Thread-160820] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:41.198 [DEBUG] [Thread-160820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:08:41.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:08:41.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:41.199 [DEBUG] [Thread-160820] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:41.199 [DEBUG] [Thread-160820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:41.199 [DEBUG] [Thread-160820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:41.200 [DEBUG] [Thread-160820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:08:41.200 [DEBUG] [Thread-160820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:41.223 [INFO] [Thread-160820] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:41.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:41.870 [DEBUG] [Thread-160820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:41.870 [DEBUG] [Thread-160820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:41.871 [DEBUG] [Thread-160820] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:08:41.911 [DEBUG] [Thread-160820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:41.911 [DEBUG] [Thread-160820] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:41.914 [DEBUG] [Thread-160820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:41.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:41.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:08:41.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:08:41.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:08:41.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:41.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:08:41.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:41.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:41.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:08:41.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.588956 -999.00  +15.50  16.67     41   +2.30 1 1 1 1 1   887    0 10.26 -105.52 ----- 17.9 16.7 153.8 26.3 21.5 -28.6 20.9 -27.4 22.9 -27.3 23.8 -30.3
2025-09-29T16:08:41.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:08:41.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:08:41.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.588956
2025-09-29T16:08:41.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:08:41.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:08:41.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:08:41.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:08:41.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:08:41.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:08:13', tmtdew=15.1, humidity=35.87, cloud=0.0, wind=19.02, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:08:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:08:41.933 [DEBUG] [Thread-160820] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:42.018 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:08:42.030 [DEBUG] [Thread-160823] [transport.py] [_log()] starting thread (client mode): 0x2e3772e0
2025-09-29T16:08:42.030 [DEBUG] [Thread-160823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:42.044 [DEBUG] [Thread-160823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:08:42.044 [INFO] [Thread-160823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:08:42.052 [DEBUG] [Thread-160823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:42.052 [DEBUG] [Thread-160823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] Compression: none
2025-09-29T16:08:42.053 [DEBUG] [Thread-160823] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:42.108 [DEBUG] [Thread-160823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:42.109 [DEBUG] [Thread-160823] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:42.109 [DEBUG] [Thread-160823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:08:42.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:08:42.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:42.165 [DEBUG] [Thread-160823] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:42.165 [DEBUG] [Thread-160823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:42.165 [DEBUG] [Thread-160823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:42.165 [DEBUG] [Thread-160823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:08:42.165 [DEBUG] [Thread-160823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:42.179 [INFO] [Thread-160823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:42.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:08:42.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:43.159 [DEBUG] [Thread-160823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:43.160 [DEBUG] [Thread-160823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:43.207 [DEBUG] [Thread-160823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:43.207 [DEBUG] [Thread-160823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:43.216 [DEBUG] [Thread-160823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:43.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:43.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:08:43.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:08:43.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:43.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:43.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:43.251 [DEBUG] [Thread-160823] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:47.308 [DEBUG] [Thread-160825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:08:47.924 [DEBUG] [Thread-160826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:08:53.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:08:53.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:08:53.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:08:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 8, 46), 15.41, 35.12, 0.0, 16.67, 15.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:08:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:08:46
2025-09-29T16:08:53.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:08:54.089 [DEBUG] [Thread-160827] [transport.py] [_log()] starting thread (client mode): 0x30ddf4f0
2025-09-29T16:08:54.089 [DEBUG] [Thread-160827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:54.108 [DEBUG] [Thread-160827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:08:54.108 [INFO] [Thread-160827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:08:54.111 [DEBUG] [Thread-160827] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:54.111 [DEBUG] [Thread-160827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:54.112 [DEBUG] [Thread-160827] [transport.py] [_log()] Compression: none
2025-09-29T16:08:54.113 [DEBUG] [Thread-160827] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:54.132 [DEBUG] [Thread-160827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:54.133 [DEBUG] [Thread-160827] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:54.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:08:54.133 [DEBUG] [Thread-160827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:08:54.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:54.135 [DEBUG] [Thread-160827] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:54.136 [DEBUG] [Thread-160827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:54.136 [DEBUG] [Thread-160827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:54.136 [DEBUG] [Thread-160827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:08:54.136 [DEBUG] [Thread-160827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:54.159 [INFO] [Thread-160827] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:54.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:54.932 [DEBUG] [Thread-160827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:54.932 [DEBUG] [Thread-160827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:54.932 [DEBUG] [Thread-160827] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:08:54.973 [DEBUG] [Thread-160827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:54.973 [DEBUG] [Thread-160827] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:54.975 [DEBUG] [Thread-160827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:54.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:54.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:08:54.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:08:54.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:08:54.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:54.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:08:54.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:54.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:54.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:08:54.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.588956 -999.00  +15.50  16.67     41   +2.30 1 1 1 1 1   887    0 10.26 -105.52 ----- 17.9 16.7 153.8 26.3 21.5 -28.6 20.9 -27.4 22.9 -27.3 23.8 -30.3
2025-09-29T16:08:54.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:08:54.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:08:54.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.588956
2025-09-29T16:08:54.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:08:54.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:08:54.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:08:54.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:08:54.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:08:54.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:08:46', tmtdew=15.41, humidity=35.12, cloud=0.0, wind=16.67, temperature=15.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:08:05.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:08:54.991 [DEBUG] [Thread-160827] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:08:55.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:08:55.085 [DEBUG] [Thread-160830] [transport.py] [_log()] starting thread (client mode): 0x2b969930
2025-09-29T16:08:55.085 [DEBUG] [Thread-160830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:08:55.100 [DEBUG] [Thread-160830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:08:55.100 [INFO] [Thread-160830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:08:55.107 [DEBUG] [Thread-160830] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:08:55.108 [DEBUG] [Thread-160830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:08:55.108 [DEBUG] [Thread-160830] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:08:55.108 [DEBUG] [Thread-160830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:55.108 [DEBUG] [Thread-160830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:08:55.108 [DEBUG] [Thread-160830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:55.108 [DEBUG] [Thread-160830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:08:55.108 [DEBUG] [Thread-160830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:08:55.108 [DEBUG] [Thread-160830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] client lang: <none>
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] server lang: <none>
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] kex follows: False
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:08:55.109 [DEBUG] [Thread-160830] [transport.py] [_log()] Compression: none
2025-09-29T16:08:55.110 [DEBUG] [Thread-160830] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:08:55.165 [DEBUG] [Thread-160830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:08:55.166 [DEBUG] [Thread-160830] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:08:55.167 [DEBUG] [Thread-160830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:08:55.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:08:55.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:08:55.221 [DEBUG] [Thread-160830] [transport.py] [_log()] userauth is OK
2025-09-29T16:08:55.222 [DEBUG] [Thread-160830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:08:55.222 [DEBUG] [Thread-160830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:08:55.222 [DEBUG] [Thread-160830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:08:55.222 [DEBUG] [Thread-160830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:08:55.246 [INFO] [Thread-160830] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:08:55.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:08:55.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:08:56.248 [DEBUG] [Thread-160830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:08:56.249 [DEBUG] [Thread-160830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:08:56.296 [DEBUG] [Thread-160830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:08:56.296 [DEBUG] [Thread-160830] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:08:56.304 [DEBUG] [Thread-160830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:08:56.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:08:56.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:08:56.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:08:56.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:08:56.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:08:56.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:08:56.336 [DEBUG] [Thread-160830] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:09:02.351 [DEBUG] [Thread-160832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:09:06.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:09:06.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:09:06.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:09:06.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 8, 46), 15.41, 35.12, 0.0, 16.67, 15.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:09:06.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:08:46
2025-09-29T16:09:06.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:09:07.147 [DEBUG] [Thread-160833] [transport.py] [_log()] starting thread (client mode): 0x2b9cc460
2025-09-29T16:09:07.148 [DEBUG] [Thread-160833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:09:07.165 [DEBUG] [Thread-160833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:09:07.165 [INFO] [Thread-160833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] client lang: <none>
2025-09-29T16:09:07.167 [DEBUG] [Thread-160833] [transport.py] [_log()] server lang: <none>
2025-09-29T16:09:07.168 [DEBUG] [Thread-160833] [transport.py] [_log()] kex follows: False
2025-09-29T16:09:07.168 [DEBUG] [Thread-160833] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:09:07.168 [DEBUG] [Thread-160833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:09:07.168 [DEBUG] [Thread-160833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:09:07.168 [DEBUG] [Thread-160833] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:09:07.168 [DEBUG] [Thread-160833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:09:07.168 [DEBUG] [Thread-160833] [transport.py] [_log()] Compression: none
2025-09-29T16:09:07.168 [DEBUG] [Thread-160833] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:09:07.177 [DEBUG] [Thread-160833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:09:07.178 [DEBUG] [Thread-160833] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:09:07.178 [DEBUG] [Thread-160833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:09:07.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:09:07.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:09:07.181 [DEBUG] [Thread-160833] [transport.py] [_log()] userauth is OK
2025-09-29T16:09:07.181 [DEBUG] [Thread-160833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:09:07.181 [DEBUG] [Thread-160833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:09:07.181 [DEBUG] [Thread-160833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:09:07.181 [DEBUG] [Thread-160833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:09:07.202 [INFO] [Thread-160833] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:09:07.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:09:07.760 [DEBUG] [Thread-160833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:09:07.760 [DEBUG] [Thread-160833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:09:07.761 [DEBUG] [Thread-160833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:09:07.801 [DEBUG] [Thread-160833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:09:07.801 [DEBUG] [Thread-160833] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:09:07.803 [DEBUG] [Thread-160833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:09:07.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:09:07.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:09:07.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:09:07.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:09:07.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:09:07.819 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:09:07.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:09:07.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:09:07.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:09:07.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.589303 -999.00  +15.30  16.19     41   +2.20 1 1 1 1 1   887    0 10.55 -96.75 ----- 16.6 16.2 118.8 25.7 21.5 -29.9 21.0 -27.1 22.9 -28.8 23.9 -29.4
2025-09-29T16:09:07.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:09:07.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:09:07.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.589303
2025-09-29T16:09:07.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:09:07.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:09:07.821 [DEBUG] [Thread-160833] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:09:07.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:09:07.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:09:07.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:09:07.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:08:46', tmtdew=15.41, humidity=35.12, cloud=0.0, wind=16.67, temperature=15.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:08:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:09:07.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:09:07.909 [DEBUG] [Thread-160836] [transport.py] [_log()] starting thread (client mode): 0x2e3de590
2025-09-29T16:09:07.910 [DEBUG] [Thread-160836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:09:07.925 [DEBUG] [Thread-160836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:09:07.925 [INFO] [Thread-160836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:09:07.932 [DEBUG] [Thread-160836] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] client lang: <none>
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] server lang: <none>
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] kex follows: False
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] Compression: none
2025-09-29T16:09:07.933 [DEBUG] [Thread-160836] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:09:07.994 [DEBUG] [Thread-160836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:09:07.995 [DEBUG] [Thread-160836] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:09:07.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:09:07.996 [DEBUG] [Thread-160836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:09:07.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:09:08.049 [DEBUG] [Thread-160836] [transport.py] [_log()] userauth is OK
2025-09-29T16:09:08.050 [DEBUG] [Thread-160836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:09:08.050 [DEBUG] [Thread-160836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:09:08.050 [DEBUG] [Thread-160836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:09:08.050 [DEBUG] [Thread-160836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:09:08.069 [INFO] [Thread-160836] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:09:08.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:09:08.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:09:09.056 [DEBUG] [Thread-160836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:09:09.056 [DEBUG] [Thread-160836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:09:09.103 [DEBUG] [Thread-160836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:09:09.103 [DEBUG] [Thread-160836] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:09:09.112 [DEBUG] [Thread-160836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:09:09.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:09:09.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:09:09.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:09:09.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:09:09.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:09:09.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:09:09.146 [DEBUG] [Thread-160836] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:09:17.400 [DEBUG] [Thread-160838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:09:18.708 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:09:18.709 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:09:19.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:09:19.149 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:09:19.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:09:19.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 8, 46), 15.41, 35.12, 0.0, 16.67, 15.8, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:09:19.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:08:46
2025-09-29T16:09:19.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:09:20.034 [DEBUG] [Thread-160839] [transport.py] [_log()] starting thread (client mode): 0x2b969810
2025-09-29T16:09:20.034 [DEBUG] [Thread-160839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:09:20.054 [DEBUG] [Thread-160839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:09:20.054 [INFO] [Thread-160839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:09:20.057 [DEBUG] [Thread-160839] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:09:20.057 [DEBUG] [Thread-160839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:09:20.057 [DEBUG] [Thread-160839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] client lang: <none>
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] server lang: <none>
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] kex follows: False
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] Compression: none
2025-09-29T16:09:20.058 [DEBUG] [Thread-160839] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:09:20.071 [DEBUG] [Thread-160839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:09:20.072 [DEBUG] [Thread-160839] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:09:20.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:09:20.072 [DEBUG] [Thread-160839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:09:20.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:09:20.073 [DEBUG] [Thread-160839] [transport.py] [_log()] userauth is OK
2025-09-29T16:09:20.073 [DEBUG] [Thread-160839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:09:20.073 [DEBUG] [Thread-160839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:09:20.073 [DEBUG] [Thread-160839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:09:20.073 [DEBUG] [Thread-160839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:09:20.091 [INFO] [Thread-160839] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:09:20.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:09:20.887 [DEBUG] [Thread-160839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:09:20.887 [DEBUG] [Thread-160839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:09:20.888 [DEBUG] [Thread-160839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:09:20.928 [DEBUG] [Thread-160839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:09:20.929 [DEBUG] [Thread-160839] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:09:20.932 [DEBUG] [Thread-160839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:09:20.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:09:20.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:09:20.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:09:20.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:09:20.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:09:20.952 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:09:20.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:09:20.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:09:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:09:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.589303 -999.00  +15.30  16.19     41   +2.20 1 1 1 1 1   887    0 10.55 -96.75 ----- 16.6 16.2 118.8 25.7 21.5 -29.9 21.0 -27.1 22.9 -28.8 23.9 -29.4
2025-09-29T16:09:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:09:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:09:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.589303
2025-09-29T16:09:20.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:09:20.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:09:20.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:09:20.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:09:20.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:09:20.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:08:46', tmtdew=15.41, humidity=35.12, cloud=0.0, wind=16.67, temperature=15.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:08:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:09:20.955 [DEBUG] [Thread-160839] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:09:21.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:09:21.048 [DEBUG] [Thread-160842] [transport.py] [_log()] starting thread (client mode): 0x2b969330
2025-09-29T16:09:21.048 [DEBUG] [Thread-160842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:09:21.063 [DEBUG] [Thread-160842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:09:21.063 [INFO] [Thread-160842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:09:21.070 [DEBUG] [Thread-160842] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] client lang: <none>
2025-09-29T16:09:21.071 [DEBUG] [Thread-160842] [transport.py] [_log()] server lang: <none>
2025-09-29T16:09:21.072 [DEBUG] [Thread-160842] [transport.py] [_log()] kex follows: False
2025-09-29T16:09:21.072 [DEBUG] [Thread-160842] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:09:21.072 [DEBUG] [Thread-160842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:09:21.072 [DEBUG] [Thread-160842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:09:21.072 [DEBUG] [Thread-160842] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:09:21.072 [DEBUG] [Thread-160842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:09:21.072 [DEBUG] [Thread-160842] [transport.py] [_log()] Compression: none
2025-09-29T16:09:21.072 [DEBUG] [Thread-160842] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:09:21.130 [DEBUG] [Thread-160842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:09:21.130 [DEBUG] [Thread-160842] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:09:21.131 [DEBUG] [Thread-160842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:09:21.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:09:21.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:09:21.186 [DEBUG] [Thread-160842] [transport.py] [_log()] userauth is OK
2025-09-29T16:09:21.186 [DEBUG] [Thread-160842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:09:21.186 [DEBUG] [Thread-160842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:09:21.186 [DEBUG] [Thread-160842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:09:21.186 [DEBUG] [Thread-160842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:09:21.205 [INFO] [Thread-160842] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:09:21.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:09:21.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:09:22.170 [DEBUG] [Thread-160842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:09:22.170 [DEBUG] [Thread-160842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:09:22.218 [DEBUG] [Thread-160842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:09:22.218 [DEBUG] [Thread-160842] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:09:22.227 [DEBUG] [Thread-160842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:09:22.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:09:22.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:09:22.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:09:22.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:09:22.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:09:22.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:09:22.263 [DEBUG] [Thread-160842] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:09:32.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:09:32.266 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:09:32.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:09:32.440 [DEBUG] [Thread-160844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:09:32.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 9, 18), 15.44, 35.07, 0.0, 14.7, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:09:32.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:09:18
2025-09-29T16:09:32.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:09:33.099 [DEBUG] [Thread-160845] [transport.py] [_log()] starting thread (client mode): 0x2e3df8e0
2025-09-29T16:09:33.099 [DEBUG] [Thread-160845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:09:33.119 [DEBUG] [Thread-160845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:09:33.119 [INFO] [Thread-160845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:09:33.122 [DEBUG] [Thread-160845] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] client lang: <none>
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] server lang: <none>
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] kex follows: False
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:09:33.123 [DEBUG] [Thread-160845] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:09:33.124 [DEBUG] [Thread-160845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:09:33.124 [DEBUG] [Thread-160845] [transport.py] [_log()] Compression: none
2025-09-29T16:09:33.124 [DEBUG] [Thread-160845] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:09:33.143 [DEBUG] [Thread-160845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:09:33.143 [DEBUG] [Thread-160845] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:09:33.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:09:33.144 [DEBUG] [Thread-160845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:09:33.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:09:33.146 [DEBUG] [Thread-160845] [transport.py] [_log()] userauth is OK
2025-09-29T16:09:33.146 [DEBUG] [Thread-160845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:09:33.146 [DEBUG] [Thread-160845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:09:33.146 [DEBUG] [Thread-160845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:09:33.146 [DEBUG] [Thread-160845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:09:33.166 [INFO] [Thread-160845] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:09:33.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:09:33.968 [DEBUG] [Thread-160845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:09:33.968 [DEBUG] [Thread-160845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:09:33.969 [DEBUG] [Thread-160845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:09:34.009 [DEBUG] [Thread-160845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:09:34.009 [DEBUG] [Thread-160845] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:09:34.012 [DEBUG] [Thread-160845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:09:34.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:09:34.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:09:34.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:09:34.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:09:34.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:09:34.037 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:09:34.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:09:34.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:09:34.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:09:34.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.589303 -999.00  +15.30  16.19     41   +2.20 1 1 1 1 1   887    0 10.55 -96.75 ----- 16.6 16.2 118.8 25.7 21.5 -29.9 21.0 -27.1 22.9 -28.8 23.9 -29.4
2025-09-29T16:09:34.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:09:34.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:09:34.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.589303
2025-09-29T16:09:34.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:09:34.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:09:34.039 [DEBUG] [Thread-160845] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:09:34.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:09:34.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:09:34.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:09:34.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:09:18', tmtdew=15.44, humidity=35.07, cloud=0.0, wind=14.7, temperature=15.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:08:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:09:34.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:09:34.126 [DEBUG] [Thread-160848] [transport.py] [_log()] starting thread (client mode): 0x2b968be0
2025-09-29T16:09:34.126 [DEBUG] [Thread-160848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:09:34.141 [DEBUG] [Thread-160848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:09:34.141 [INFO] [Thread-160848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] client lang: <none>
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] server lang: <none>
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] kex follows: False
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] Compression: none
2025-09-29T16:09:34.149 [DEBUG] [Thread-160848] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:09:34.204 [DEBUG] [Thread-160848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:09:34.205 [DEBUG] [Thread-160848] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:09:34.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:09:34.205 [DEBUG] [Thread-160848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:09:34.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:09:34.262 [DEBUG] [Thread-160848] [transport.py] [_log()] userauth is OK
2025-09-29T16:09:34.262 [DEBUG] [Thread-160848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:09:34.262 [DEBUG] [Thread-160848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:09:34.262 [DEBUG] [Thread-160848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:09:34.262 [DEBUG] [Thread-160848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:09:34.283 [INFO] [Thread-160848] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:09:34.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:09:34.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:09:35.348 [DEBUG] [Thread-160848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:09:35.348 [DEBUG] [Thread-160848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:09:35.396 [DEBUG] [Thread-160848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:09:35.396 [DEBUG] [Thread-160848] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:09:35.405 [DEBUG] [Thread-160848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:09:35.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:09:35.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:09:35.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:09:35.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:09:35.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:09:35.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:09:35.439 [DEBUG] [Thread-160848] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:09:45.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:09:45.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:09:45.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:09:46.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 9, 18), 15.44, 35.07, 0.0, 14.7, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:09:46.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:09:18
2025-09-29T16:09:46.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:09:46.274 [DEBUG] [Thread-160850] [transport.py] [_log()] starting thread (client mode): 0x2b96be20
2025-09-29T16:09:46.274 [DEBUG] [Thread-160850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:09:46.293 [DEBUG] [Thread-160850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:09:46.293 [INFO] [Thread-160850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:09:46.296 [DEBUG] [Thread-160850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:09:46.296 [DEBUG] [Thread-160850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:09:46.296 [DEBUG] [Thread-160850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:09:46.296 [DEBUG] [Thread-160850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:46.296 [DEBUG] [Thread-160850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:09:46.296 [DEBUG] [Thread-160850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:46.296 [DEBUG] [Thread-160850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] client lang: <none>
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] server lang: <none>
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] kex follows: False
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] Compression: none
2025-09-29T16:09:46.297 [DEBUG] [Thread-160850] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:09:46.316 [DEBUG] [Thread-160850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:09:46.316 [DEBUG] [Thread-160850] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:09:46.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:09:46.318 [DEBUG] [Thread-160850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:09:46.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:09:46.320 [DEBUG] [Thread-160850] [transport.py] [_log()] userauth is OK
2025-09-29T16:09:46.320 [DEBUG] [Thread-160850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:09:46.321 [DEBUG] [Thread-160850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:09:46.321 [DEBUG] [Thread-160850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:09:46.321 [DEBUG] [Thread-160850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:09:46.342 [INFO] [Thread-160850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:09:46.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:09:46.937 [DEBUG] [Thread-160850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:09:46.937 [DEBUG] [Thread-160850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:09:46.937 [DEBUG] [Thread-160850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:09:46.977 [DEBUG] [Thread-160850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:09:46.977 [DEBUG] [Thread-160850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:09:46.980 [DEBUG] [Thread-160850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:09:46.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:09:46.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:09:46.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:09:46.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:09:47.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:09:47.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:09:47.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:09:47.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:09:47.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:09:47.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.589997 -999.00  +15.50  20.77     41   +2.40 1 1 1 1 1   887    0 10.68 -86.03 ----- 17.4 20.8 187.8 22.4 21.5 -27.8 21.1 -28.7 22.9 -27.5 23.9 -28.7
2025-09-29T16:09:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:09:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:09:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.589997
2025-09-29T16:09:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:09:47.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:09:47.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:09:47.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:09:47.005 [DEBUG] [Thread-160850] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:09:47.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:09:47.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:09:18', tmtdew=15.44, humidity=35.07, cloud=0.0, wind=14.7, temperature=15.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:09:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:09:47.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:09:47.469 [DEBUG] [Thread-160853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:09:47.962 [DEBUG] [Thread-160854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:10:02.510 [DEBUG] [Thread-160855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:10:17.537 [DEBUG] [Thread-160856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:10:18.850 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:10:18.851 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:10:32.566 [DEBUG] [Thread-160857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:10:47.595 [DEBUG] [Thread-160858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:10:47.993 [DEBUG] [Thread-160859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:11:02.625 [DEBUG] [Thread-160860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:11:17.657 [DEBUG] [Thread-160861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:11:18.991 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:11:18.992 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:11:32.686 [DEBUG] [Thread-160862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:11:47.717 [DEBUG] [Thread-160863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:11:48.029 [DEBUG] [Thread-160864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:12:01.338 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T16:12:02.746 [DEBUG] [Thread-160865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:12:11.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:12:11.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:12:11.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:12:11.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 11, 58), 15.56, 34.89, 0.0, 20.06, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:12:11.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:11:58
2025-09-29T16:12:12.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:12:12.222 [DEBUG] [Thread-160866] [transport.py] [_log()] starting thread (client mode): 0x2e3fae60
2025-09-29T16:12:12.222 [DEBUG] [Thread-160866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:12:12.241 [DEBUG] [Thread-160866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:12:12.241 [INFO] [Thread-160866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:12:12.245 [DEBUG] [Thread-160866] [transport.py] [_log()] client lang: <none>
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] server lang: <none>
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] kex follows: False
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] Compression: none
2025-09-29T16:12:12.246 [DEBUG] [Thread-160866] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:12:12.263 [DEBUG] [Thread-160866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:12:12.264 [DEBUG] [Thread-160866] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:12:12.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:12:12.265 [DEBUG] [Thread-160866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:12:12.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:12:12.266 [DEBUG] [Thread-160866] [transport.py] [_log()] userauth is OK
2025-09-29T16:12:12.267 [DEBUG] [Thread-160866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:12:12.267 [DEBUG] [Thread-160866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:12:12.267 [DEBUG] [Thread-160866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:12:12.267 [DEBUG] [Thread-160866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:12:12.284 [INFO] [Thread-160866] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:12:12.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:12:12.933 [DEBUG] [Thread-160866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:12:12.933 [DEBUG] [Thread-160866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:12:12.933 [DEBUG] [Thread-160866] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:12:12.974 [DEBUG] [Thread-160866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:12:12.974 [DEBUG] [Thread-160866] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:12:12.977 [DEBUG] [Thread-160866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:12:12.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:12:12.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:12:12.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:12:12.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:12:13.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:12:13.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:12:13.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:12:13.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:12:13.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:12:13.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.591386 -999.00  +15.30  18.36     41   +2.20 1 1 1 1 1   887    0 11.14 -75.20 ----- 18.5 18.4 156.0 27.7 21.4 -29.5 20.8 -27.5 22.7 -28.8 23.6 -29.8
2025-09-29T16:12:13.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:12:13.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:12:13.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.591386
2025-09-29T16:12:13.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:12:13.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:12:13.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:12:13.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:12:13.004 [DEBUG] [Thread-160866] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:12:13.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:12:13.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:11:58', tmtdew=15.56, humidity=34.89, cloud=0.0, wind=20.06, temperature=15.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:11:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:12:13.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:12:13.098 [DEBUG] [Thread-160869] [transport.py] [_log()] starting thread (client mode): 0x2e3c2290
2025-09-29T16:12:13.098 [DEBUG] [Thread-160869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:12:13.114 [DEBUG] [Thread-160869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:12:13.114 [INFO] [Thread-160869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:12:13.121 [DEBUG] [Thread-160869] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:12:13.121 [DEBUG] [Thread-160869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] client lang: <none>
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] server lang: <none>
2025-09-29T16:12:13.122 [DEBUG] [Thread-160869] [transport.py] [_log()] kex follows: False
2025-09-29T16:12:13.123 [DEBUG] [Thread-160869] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:12:13.123 [DEBUG] [Thread-160869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:12:13.123 [DEBUG] [Thread-160869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:12:13.123 [DEBUG] [Thread-160869] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:12:13.123 [DEBUG] [Thread-160869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:12:13.123 [DEBUG] [Thread-160869] [transport.py] [_log()] Compression: none
2025-09-29T16:12:13.123 [DEBUG] [Thread-160869] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:12:13.180 [DEBUG] [Thread-160869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:12:13.181 [DEBUG] [Thread-160869] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:12:13.181 [DEBUG] [Thread-160869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:12:13.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:12:13.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:12:13.240 [DEBUG] [Thread-160869] [transport.py] [_log()] userauth is OK
2025-09-29T16:12:13.240 [DEBUG] [Thread-160869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:12:13.240 [DEBUG] [Thread-160869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:12:13.240 [DEBUG] [Thread-160869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:12:13.241 [DEBUG] [Thread-160869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:12:13.260 [INFO] [Thread-160869] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:12:13.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:12:13.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:12:14.243 [DEBUG] [Thread-160869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:12:14.243 [DEBUG] [Thread-160869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:12:14.291 [DEBUG] [Thread-160869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:12:14.291 [DEBUG] [Thread-160869] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:12:14.301 [DEBUG] [Thread-160869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:12:14.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:12:14.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:12:14.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:12:14.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:12:14.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:12:14.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:12:14.336 [DEBUG] [Thread-160869] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:12:17.775 [DEBUG] [Thread-160871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:12:19.131 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:12:19.132 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:12:24.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:12:24.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:12:24.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:12:24.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 11, 58), 15.56, 34.89, 0.0, 20.06, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:12:24.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:11:58
2025-09-29T16:12:25.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:12:25.187 [DEBUG] [Thread-160872] [transport.py] [_log()] starting thread (client mode): 0x2b969ff0
2025-09-29T16:12:25.187 [DEBUG] [Thread-160872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:12:25.208 [DEBUG] [Thread-160872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:12:25.208 [INFO] [Thread-160872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:12:25.211 [DEBUG] [Thread-160872] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:12:25.211 [DEBUG] [Thread-160872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:12:25.211 [DEBUG] [Thread-160872] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:12:25.211 [DEBUG] [Thread-160872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] client lang: <none>
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] server lang: <none>
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] kex follows: False
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] Compression: none
2025-09-29T16:12:25.212 [DEBUG] [Thread-160872] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:12:25.229 [DEBUG] [Thread-160872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:12:25.230 [DEBUG] [Thread-160872] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:12:25.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:12:25.231 [DEBUG] [Thread-160872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:12:25.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:12:25.232 [DEBUG] [Thread-160872] [transport.py] [_log()] userauth is OK
2025-09-29T16:12:25.233 [DEBUG] [Thread-160872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:12:25.233 [DEBUG] [Thread-160872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:12:25.233 [DEBUG] [Thread-160872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:12:25.233 [DEBUG] [Thread-160872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:12:25.257 [INFO] [Thread-160872] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:12:25.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:12:25.892 [DEBUG] [Thread-160872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:12:25.892 [DEBUG] [Thread-160872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:12:25.893 [DEBUG] [Thread-160872] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:12:25.933 [DEBUG] [Thread-160872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:12:25.934 [DEBUG] [Thread-160872] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:12:25.937 [DEBUG] [Thread-160872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:12:25.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:12:25.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:12:25.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:12:25.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:12:25.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:12:25.961 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:12:25.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:12:25.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:12:25.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:12:25.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.591386 -999.00  +15.30  18.36     41   +2.20 1 1 1 1 1   887    0 11.14 -75.20 ----- 18.5 18.4 156.0 27.7 21.4 -29.5 20.8 -27.5 22.7 -28.8 23.6 -29.8
2025-09-29T16:12:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:12:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:12:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.591386
2025-09-29T16:12:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:12:25.963 [DEBUG] [Thread-160872] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:12:25.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:12:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:12:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:12:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:12:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:11:58', tmtdew=15.56, humidity=34.89, cloud=0.0, wind=20.06, temperature=15.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:11:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:12:26.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:12:26.059 [DEBUG] [Thread-160875] [transport.py] [_log()] starting thread (client mode): 0x2e3de590
2025-09-29T16:12:26.059 [DEBUG] [Thread-160875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:12:26.073 [DEBUG] [Thread-160875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:12:26.073 [INFO] [Thread-160875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:12:26.081 [DEBUG] [Thread-160875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:12:26.081 [DEBUG] [Thread-160875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] client lang: <none>
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] server lang: <none>
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] kex follows: False
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] Compression: none
2025-09-29T16:12:26.082 [DEBUG] [Thread-160875] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:12:26.139 [DEBUG] [Thread-160875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:12:26.139 [DEBUG] [Thread-160875] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:12:26.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:12:26.140 [DEBUG] [Thread-160875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:12:26.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:12:26.199 [DEBUG] [Thread-160875] [transport.py] [_log()] userauth is OK
2025-09-29T16:12:26.199 [DEBUG] [Thread-160875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:12:26.199 [DEBUG] [Thread-160875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:12:26.199 [DEBUG] [Thread-160875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:12:26.199 [DEBUG] [Thread-160875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:12:26.217 [INFO] [Thread-160875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:12:26.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:12:26.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:12:27.180 [DEBUG] [Thread-160875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:12:27.180 [DEBUG] [Thread-160875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:12:27.228 [DEBUG] [Thread-160875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:12:27.228 [DEBUG] [Thread-160875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:12:27.237 [DEBUG] [Thread-160875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:12:27.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:12:27.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:12:27.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:12:27.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:12:27.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:12:27.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:12:27.270 [DEBUG] [Thread-160875] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:12:32.809 [DEBUG] [Thread-160877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:12:37.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:12:37.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:12:37.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:12:37.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 12, 30), 15.53, 34.93, 0.0, 22.57, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:12:37.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:12:30
2025-09-29T16:12:38.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:12:38.184 [DEBUG] [Thread-160878] [transport.py] [_log()] starting thread (client mode): 0x2e360f10
2025-09-29T16:12:38.184 [DEBUG] [Thread-160878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:12:38.204 [DEBUG] [Thread-160878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:12:38.204 [INFO] [Thread-160878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:12:38.207 [DEBUG] [Thread-160878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:12:38.207 [DEBUG] [Thread-160878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:12:38.207 [DEBUG] [Thread-160878] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:12:38.207 [DEBUG] [Thread-160878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] client lang: <none>
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] server lang: <none>
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] kex follows: False
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] Compression: none
2025-09-29T16:12:38.208 [DEBUG] [Thread-160878] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:12:38.224 [DEBUG] [Thread-160878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:12:38.225 [DEBUG] [Thread-160878] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:12:38.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:12:38.225 [DEBUG] [Thread-160878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:12:38.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:12:38.225 [DEBUG] [Thread-160878] [transport.py] [_log()] userauth is OK
2025-09-29T16:12:38.226 [DEBUG] [Thread-160878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:12:38.226 [DEBUG] [Thread-160878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:12:38.226 [DEBUG] [Thread-160878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:12:38.226 [DEBUG] [Thread-160878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:12:38.235 [INFO] [Thread-160878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:12:38.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:12:38.890 [DEBUG] [Thread-160878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:12:38.890 [DEBUG] [Thread-160878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:12:38.890 [DEBUG] [Thread-160878] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:12:38.931 [DEBUG] [Thread-160878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:12:38.931 [DEBUG] [Thread-160878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:12:38.933 [DEBUG] [Thread-160878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:12:38.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:12:38.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:12:38.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:12:38.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:12:38.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:12:38.952 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:12:38.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.591733 -999.00  +15.10  18.03     41   +2.20 1 1 1 1 1   887    0 10.81 -76.27 ----- 16.1 18.0 145.3 21.5 21.4 -29.1 20.7 -27.4 22.6 -28.4 23.6 -29.5
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.591733
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:12:38.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:12:38.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:12:30', tmtdew=15.53, humidity=34.93, cloud=0.0, wind=22.57, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:12:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:12:38.953 [DEBUG] [Thread-160878] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:12:39.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:12:39.041 [DEBUG] [Thread-160881] [transport.py] [_log()] starting thread (client mode): 0x2b969840
2025-09-29T16:12:39.041 [DEBUG] [Thread-160881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:12:39.058 [DEBUG] [Thread-160881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:12:39.058 [INFO] [Thread-160881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] client lang: <none>
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] server lang: <none>
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] kex follows: False
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:12:39.069 [DEBUG] [Thread-160881] [transport.py] [_log()] Compression: none
2025-09-29T16:12:39.070 [DEBUG] [Thread-160881] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:12:39.128 [DEBUG] [Thread-160881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:12:39.128 [DEBUG] [Thread-160881] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:12:39.128 [DEBUG] [Thread-160881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:12:39.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:12:39.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:12:39.186 [DEBUG] [Thread-160881] [transport.py] [_log()] userauth is OK
2025-09-29T16:12:39.186 [DEBUG] [Thread-160881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:12:39.186 [DEBUG] [Thread-160881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:12:39.186 [DEBUG] [Thread-160881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:12:39.187 [DEBUG] [Thread-160881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:12:39.209 [INFO] [Thread-160881] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:12:39.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:12:39.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:12:40.141 [DEBUG] [Thread-160881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:12:40.141 [DEBUG] [Thread-160881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:12:40.189 [DEBUG] [Thread-160881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:12:40.189 [DEBUG] [Thread-160881] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:12:40.197 [DEBUG] [Thread-160881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:12:40.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:12:40.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:12:40.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:12:40.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:12:40.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:12:40.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:12:40.229 [DEBUG] [Thread-160881] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:12:47.838 [DEBUG] [Thread-160883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:12:48.069 [DEBUG] [Thread-160884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:12:50.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:12:50.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:12:50.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:12:50.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 12, 30), 15.53, 34.93, 0.0, 22.57, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:12:50.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:12:30
2025-09-29T16:12:50.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:12:51.110 [DEBUG] [Thread-160885] [transport.py] [_log()] starting thread (client mode): 0x2e362f80
2025-09-29T16:12:51.110 [DEBUG] [Thread-160885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:12:51.130 [DEBUG] [Thread-160885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:12:51.130 [INFO] [Thread-160885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] client lang: <none>
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] server lang: <none>
2025-09-29T16:12:51.133 [DEBUG] [Thread-160885] [transport.py] [_log()] kex follows: False
2025-09-29T16:12:51.134 [DEBUG] [Thread-160885] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:12:51.134 [DEBUG] [Thread-160885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:12:51.134 [DEBUG] [Thread-160885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:12:51.134 [DEBUG] [Thread-160885] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:12:51.134 [DEBUG] [Thread-160885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:12:51.134 [DEBUG] [Thread-160885] [transport.py] [_log()] Compression: none
2025-09-29T16:12:51.134 [DEBUG] [Thread-160885] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:12:51.142 [DEBUG] [Thread-160885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:12:51.142 [DEBUG] [Thread-160885] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:12:51.142 [DEBUG] [Thread-160885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:12:51.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:12:51.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:12:51.144 [DEBUG] [Thread-160885] [transport.py] [_log()] userauth is OK
2025-09-29T16:12:51.144 [DEBUG] [Thread-160885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:12:51.144 [DEBUG] [Thread-160885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:12:51.144 [DEBUG] [Thread-160885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:12:51.144 [DEBUG] [Thread-160885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:12:51.167 [INFO] [Thread-160885] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:12:51.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:12:51.779 [DEBUG] [Thread-160885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:12:51.780 [DEBUG] [Thread-160885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:12:51.780 [DEBUG] [Thread-160885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:12:51.820 [DEBUG] [Thread-160885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:12:51.821 [DEBUG] [Thread-160885] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:12:51.823 [DEBUG] [Thread-160885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:12:51.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:12:51.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:12:51.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:12:51.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:12:51.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:12:51.846 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:12:51.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:12:51.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:12:51.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:12:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.591733 -999.00  +15.10  18.03     41   +2.20 1 1 1 1 1   887    0 10.81 -76.27 ----- 16.1 18.0 145.3 21.5 21.4 -29.1 20.7 -27.4 22.6 -28.4 23.6 -29.5
2025-09-29T16:12:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:12:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:12:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.591733
2025-09-29T16:12:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:12:51.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:12:51.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:12:51.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:12:51.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:12:51.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:12:30', tmtdew=15.53, humidity=34.93, cloud=0.0, wind=22.57, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:12:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:12:51.848 [DEBUG] [Thread-160885] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:12:51.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:12:51.941 [DEBUG] [Thread-160888] [transport.py] [_log()] starting thread (client mode): 0x2b91f520
2025-09-29T16:12:51.941 [DEBUG] [Thread-160888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:12:51.956 [DEBUG] [Thread-160888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:12:51.957 [INFO] [Thread-160888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:12:51.964 [DEBUG] [Thread-160888] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:12:51.964 [DEBUG] [Thread-160888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] client lang: <none>
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] server lang: <none>
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] kex follows: False
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] Compression: none
2025-09-29T16:12:51.965 [DEBUG] [Thread-160888] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:12:52.023 [DEBUG] [Thread-160888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:12:52.024 [DEBUG] [Thread-160888] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:12:52.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:12:52.024 [DEBUG] [Thread-160888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:12:52.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:12:52.079 [DEBUG] [Thread-160888] [transport.py] [_log()] userauth is OK
2025-09-29T16:12:52.079 [DEBUG] [Thread-160888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:12:52.079 [DEBUG] [Thread-160888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:12:52.079 [DEBUG] [Thread-160888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:12:52.080 [DEBUG] [Thread-160888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:12:52.099 [INFO] [Thread-160888] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:12:52.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:12:52.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:12:53.092 [DEBUG] [Thread-160888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:12:53.093 [DEBUG] [Thread-160888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:12:53.140 [DEBUG] [Thread-160888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:12:53.140 [DEBUG] [Thread-160888] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:12:53.149 [DEBUG] [Thread-160888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:12:53.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:12:53.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:12:53.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:12:53.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:12:53.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:12:53.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:12:53.184 [DEBUG] [Thread-160888] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:02.880 [DEBUG] [Thread-160890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:13:03.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:13:03.187 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:13:03.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:13:03.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 12, 30), 15.53, 34.93, 0.0, 22.57, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:13:03.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:12:30
2025-09-29T16:13:03.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:13:04.113 [DEBUG] [Thread-160891] [transport.py] [_log()] starting thread (client mode): 0x2e3faef0
2025-09-29T16:13:04.113 [DEBUG] [Thread-160891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:04.133 [DEBUG] [Thread-160891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:13:04.134 [INFO] [Thread-160891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:04.137 [DEBUG] [Thread-160891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:04.138 [DEBUG] [Thread-160891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:04.138 [DEBUG] [Thread-160891] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:04.138 [DEBUG] [Thread-160891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:04.138 [DEBUG] [Thread-160891] [transport.py] [_log()] Compression: none
2025-09-29T16:13:04.138 [DEBUG] [Thread-160891] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:04.154 [DEBUG] [Thread-160891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:04.154 [DEBUG] [Thread-160891] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:04.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:13:04.155 [DEBUG] [Thread-160891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:13:04.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:04.157 [DEBUG] [Thread-160891] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:04.157 [DEBUG] [Thread-160891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:04.157 [DEBUG] [Thread-160891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:04.157 [DEBUG] [Thread-160891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:13:04.157 [DEBUG] [Thread-160891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:04.177 [INFO] [Thread-160891] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:04.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:04.808 [DEBUG] [Thread-160891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:04.808 [DEBUG] [Thread-160891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:04.808 [DEBUG] [Thread-160891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:13:04.849 [DEBUG] [Thread-160891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:04.849 [DEBUG] [Thread-160891] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:04.852 [DEBUG] [Thread-160891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:04.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:04.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:13:04.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:13:04.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:13:04.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:04.873 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:13:04.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:04.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:13:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.591733 -999.00  +15.10  18.03     41   +2.20 1 1 1 1 1   887    0 10.81 -76.27 ----- 16.1 18.0 145.3 21.5 21.4 -29.1 20.7 -27.4 22.6 -28.4 23.6 -29.5
2025-09-29T16:13:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:13:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:13:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.591733
2025-09-29T16:13:04.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:13:04.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:13:04.876 [DEBUG] [Thread-160891] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:04.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:13:04.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:13:04.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:13:04.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:12:30', tmtdew=15.53, humidity=34.93, cloud=0.0, wind=22.57, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:12:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:13:04.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:13:04.971 [DEBUG] [Thread-160894] [transport.py] [_log()] starting thread (client mode): 0x2e3f8ac0
2025-09-29T16:13:04.971 [DEBUG] [Thread-160894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:04.986 [DEBUG] [Thread-160894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:13:04.986 [INFO] [Thread-160894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:04.993 [DEBUG] [Thread-160894] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:04.994 [DEBUG] [Thread-160894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:04.994 [DEBUG] [Thread-160894] [transport.py] [_log()] Compression: none
2025-09-29T16:13:04.994 [DEBUG] [Thread-160894] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:05.051 [DEBUG] [Thread-160894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:05.051 [DEBUG] [Thread-160894] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:05.051 [DEBUG] [Thread-160894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:13:05.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:13:05.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:05.107 [DEBUG] [Thread-160894] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:05.107 [DEBUG] [Thread-160894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:05.107 [DEBUG] [Thread-160894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:05.107 [DEBUG] [Thread-160894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:13:05.107 [DEBUG] [Thread-160894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:05.122 [INFO] [Thread-160894] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:05.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:13:05.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:06.133 [DEBUG] [Thread-160894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:06.133 [DEBUG] [Thread-160894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:06.181 [DEBUG] [Thread-160894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:06.181 [DEBUG] [Thread-160894] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:06.190 [DEBUG] [Thread-160894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:06.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:06.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:13:06.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:13:06.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:06.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:06.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:06.228 [DEBUG] [Thread-160894] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:16.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:13:16.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:13:16.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:13:16.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 13, 1), 15.18, 35.69, 0.0, 22.3, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:13:16.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:13:01
2025-09-29T16:13:16.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:13:17.141 [DEBUG] [Thread-160896] [transport.py] [_log()] starting thread (client mode): 0x2e377670
2025-09-29T16:13:17.141 [DEBUG] [Thread-160896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:17.161 [DEBUG] [Thread-160896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:13:17.161 [INFO] [Thread-160896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] Compression: none
2025-09-29T16:13:17.165 [DEBUG] [Thread-160896] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:17.182 [DEBUG] [Thread-160896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:17.182 [DEBUG] [Thread-160896] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:17.182 [DEBUG] [Thread-160896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:13:17.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:13:17.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:17.182 [DEBUG] [Thread-160896] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:17.182 [DEBUG] [Thread-160896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:17.182 [DEBUG] [Thread-160896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:17.182 [DEBUG] [Thread-160896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:13:17.182 [DEBUG] [Thread-160896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:17.209 [INFO] [Thread-160896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:17.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:17.883 [DEBUG] [Thread-160896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:17.883 [DEBUG] [Thread-160896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:17.883 [DEBUG] [Thread-160896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:13:17.905 [DEBUG] [Thread-160898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:13:17.924 [DEBUG] [Thread-160896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:17.924 [DEBUG] [Thread-160896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:17.926 [DEBUG] [Thread-160896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:17.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:17.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:13:17.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:13:17.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:13:17.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:17.943 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:13:17.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:17.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:17.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.592080 -999.00  +15.20  17.52     41   +2.20 1 1 1 1 1   887    0 10.90 -77.24 ----- 13.8 17.5 136.2 27.4 21.3 -28.8 20.7 -27.6 22.6 -28.3 23.5 -29.8
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.592080
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:13:17.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:13:01', tmtdew=15.18, humidity=35.69, cloud=0.0, wind=22.3, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:12:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:13:17.945 [DEBUG] [Thread-160896] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:18.018 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:13:18.028 [DEBUG] [Thread-160900] [transport.py] [_log()] starting thread (client mode): 0x2e3771c0
2025-09-29T16:13:18.028 [DEBUG] [Thread-160900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:18.043 [DEBUG] [Thread-160900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:13:18.043 [INFO] [Thread-160900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:13:18.050 [DEBUG] [Thread-160900] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:18.050 [DEBUG] [Thread-160900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:13:18.050 [DEBUG] [Thread-160900] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] Compression: none
2025-09-29T16:13:18.051 [DEBUG] [Thread-160900] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:18.106 [DEBUG] [Thread-160900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:18.106 [DEBUG] [Thread-160900] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:18.106 [DEBUG] [Thread-160900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:13:18.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:13:18.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:18.163 [DEBUG] [Thread-160900] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:18.163 [DEBUG] [Thread-160900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:18.163 [DEBUG] [Thread-160900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:18.163 [DEBUG] [Thread-160900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:13:18.163 [DEBUG] [Thread-160900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:18.180 [INFO] [Thread-160900] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:18.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:13:18.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:19.172 [DEBUG] [Thread-160900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:19.173 [DEBUG] [Thread-160900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:19.219 [DEBUG] [Thread-160900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:19.219 [DEBUG] [Thread-160900] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:19.228 [DEBUG] [Thread-160900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:19.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:19.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:13:19.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:13:19.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:19.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:19.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:19.264 [DEBUG] [Thread-160900] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:19.272 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:13:19.274 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:13:29.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:13:29.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:13:29.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:13:29.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 13, 1), 15.18, 35.69, 0.0, 22.3, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:13:29.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:13:01
2025-09-29T16:13:29.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:13:30.141 [DEBUG] [Thread-160902] [transport.py] [_log()] starting thread (client mode): 0x2b91f700
2025-09-29T16:13:30.141 [DEBUG] [Thread-160902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:30.161 [DEBUG] [Thread-160902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:13:30.161 [INFO] [Thread-160902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] Compression: none
2025-09-29T16:13:30.164 [DEBUG] [Thread-160902] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:30.180 [DEBUG] [Thread-160902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:30.181 [DEBUG] [Thread-160902] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:30.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:13:30.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:30.181 [DEBUG] [Thread-160902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:13:30.182 [DEBUG] [Thread-160902] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:30.182 [DEBUG] [Thread-160902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:30.182 [DEBUG] [Thread-160902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:30.182 [DEBUG] [Thread-160902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:13:30.182 [DEBUG] [Thread-160902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:30.195 [INFO] [Thread-160902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:30.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:30.820 [DEBUG] [Thread-160902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:30.820 [DEBUG] [Thread-160902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:30.821 [DEBUG] [Thread-160902] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:13:30.861 [DEBUG] [Thread-160902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:30.861 [DEBUG] [Thread-160902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:30.864 [DEBUG] [Thread-160902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:30.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:30.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:13:30.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:13:30.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:13:30.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:30.890 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:13:30.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:30.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:13:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.592080 -999.00  +15.20  17.52     41   +2.20 1 1 1 1 1   887    0 10.90 -77.24 ----- 13.8 17.5 136.2 27.4 21.3 -28.8 20.7 -27.6 22.6 -28.3 23.5 -29.8
2025-09-29T16:13:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:13:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:13:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.592080
2025-09-29T16:13:30.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:13:30.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:13:30.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:13:30.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:13:30.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:13:30.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:13:01', tmtdew=15.18, humidity=35.69, cloud=0.0, wind=22.3, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:12:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:13:30.893 [DEBUG] [Thread-160902] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:30.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:13:30.989 [DEBUG] [Thread-160905] [transport.py] [_log()] starting thread (client mode): 0x2b94f460
2025-09-29T16:13:30.990 [DEBUG] [Thread-160905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:31.005 [DEBUG] [Thread-160905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:13:31.005 [INFO] [Thread-160905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:31.013 [DEBUG] [Thread-160905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:31.014 [DEBUG] [Thread-160905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:31.014 [DEBUG] [Thread-160905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:31.014 [DEBUG] [Thread-160905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:31.014 [DEBUG] [Thread-160905] [transport.py] [_log()] Compression: none
2025-09-29T16:13:31.014 [DEBUG] [Thread-160905] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:31.070 [DEBUG] [Thread-160905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:31.071 [DEBUG] [Thread-160905] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:31.071 [DEBUG] [Thread-160905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:13:31.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:13:31.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:31.127 [DEBUG] [Thread-160905] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:31.128 [DEBUG] [Thread-160905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:31.128 [DEBUG] [Thread-160905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:31.128 [DEBUG] [Thread-160905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:13:31.128 [DEBUG] [Thread-160905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:31.147 [INFO] [Thread-160905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:31.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:13:31.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:32.124 [DEBUG] [Thread-160905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:32.125 [DEBUG] [Thread-160905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:32.172 [DEBUG] [Thread-160905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:32.172 [DEBUG] [Thread-160905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:32.181 [DEBUG] [Thread-160905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:32.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:32.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:13:32.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:13:32.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:32.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:32.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:32.216 [DEBUG] [Thread-160905] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:32.936 [DEBUG] [Thread-160907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:13:42.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:13:42.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:13:42.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:13:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 13, 33), 15.43, 35.17, 0.0, 21.63, 15.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:13:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:13:33
2025-09-29T16:13:42.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:13:43.085 [DEBUG] [Thread-160908] [transport.py] [_log()] starting thread (client mode): 0x2b91dbd0
2025-09-29T16:13:43.086 [DEBUG] [Thread-160908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:43.104 [DEBUG] [Thread-160908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:13:43.104 [INFO] [Thread-160908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:13:43.106 [DEBUG] [Thread-160908] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:43.106 [DEBUG] [Thread-160908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] Compression: none
2025-09-29T16:13:43.107 [DEBUG] [Thread-160908] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:43.118 [DEBUG] [Thread-160908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:43.119 [DEBUG] [Thread-160908] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:43.119 [DEBUG] [Thread-160908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:13:43.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:13:43.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:43.121 [DEBUG] [Thread-160908] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:43.121 [DEBUG] [Thread-160908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:43.121 [DEBUG] [Thread-160908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:43.121 [DEBUG] [Thread-160908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:13:43.122 [DEBUG] [Thread-160908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:43.145 [INFO] [Thread-160908] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:43.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:43.782 [DEBUG] [Thread-160908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:43.782 [DEBUG] [Thread-160908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:43.782 [DEBUG] [Thread-160908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:13:43.823 [DEBUG] [Thread-160908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:43.824 [DEBUG] [Thread-160908] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:43.826 [DEBUG] [Thread-160908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:43.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:43.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:13:43.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:13:43.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:13:43.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:43.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:13:43.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:43.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:43.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:13:43.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.592428 -999.00  +15.20  23.16     41   +2.10 1 1 1 1 1   887    0 11.11 -69.96 ----- 19.5 23.2 142.2 26.1 21.2 -28.8 20.7 -27.2 22.5 -28.6 23.5 -29.1
2025-09-29T16:13:43.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:13:43.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:13:43.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.592428
2025-09-29T16:13:43.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:13:43.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:13:43.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:13:43.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:13:43.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:13:43.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:13:33', tmtdew=15.43, humidity=35.17, cloud=0.0, wind=21.63, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:13:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:13:43.852 [DEBUG] [Thread-160908] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:43.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:13:43.948 [DEBUG] [Thread-160911] [transport.py] [_log()] starting thread (client mode): 0x2b91c9a0
2025-09-29T16:13:43.948 [DEBUG] [Thread-160911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:43.963 [DEBUG] [Thread-160911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:13:43.963 [INFO] [Thread-160911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:13:43.970 [DEBUG] [Thread-160911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:43.971 [DEBUG] [Thread-160911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:13:43.971 [DEBUG] [Thread-160911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:43.971 [DEBUG] [Thread-160911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:43.971 [DEBUG] [Thread-160911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:43.971 [DEBUG] [Thread-160911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] Compression: none
2025-09-29T16:13:43.972 [DEBUG] [Thread-160911] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:44.026 [DEBUG] [Thread-160911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:44.027 [DEBUG] [Thread-160911] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:44.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:13:44.028 [DEBUG] [Thread-160911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:13:44.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:44.083 [DEBUG] [Thread-160911] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:44.083 [DEBUG] [Thread-160911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:44.084 [DEBUG] [Thread-160911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:44.084 [DEBUG] [Thread-160911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:13:44.084 [DEBUG] [Thread-160911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:44.103 [INFO] [Thread-160911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:44.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:13:44.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:45.058 [DEBUG] [Thread-160911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:45.058 [DEBUG] [Thread-160911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:45.106 [DEBUG] [Thread-160911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:45.106 [DEBUG] [Thread-160911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:45.116 [DEBUG] [Thread-160911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:45.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:45.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:13:45.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:13:45.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:45.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:45.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:45.151 [DEBUG] [Thread-160911] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:47.980 [DEBUG] [Thread-160913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:13:48.104 [DEBUG] [Thread-160914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:13:55.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:13:55.152 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:13:55.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:13:55.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 13, 33), 15.43, 35.17, 0.0, 21.63, 15.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:13:55.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:13:33
2025-09-29T16:13:55.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:13:56.055 [DEBUG] [Thread-160915] [transport.py] [_log()] starting thread (client mode): 0x2b91cbe0
2025-09-29T16:13:56.055 [DEBUG] [Thread-160915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:56.075 [DEBUG] [Thread-160915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:13:56.075 [INFO] [Thread-160915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:56.078 [DEBUG] [Thread-160915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] Compression: none
2025-09-29T16:13:56.079 [DEBUG] [Thread-160915] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:56.095 [DEBUG] [Thread-160915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:56.096 [DEBUG] [Thread-160915] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:56.096 [DEBUG] [Thread-160915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:13:56.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:13:56.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:56.140 [DEBUG] [Thread-160915] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:56.140 [DEBUG] [Thread-160915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:56.140 [DEBUG] [Thread-160915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:56.140 [DEBUG] [Thread-160915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:13:56.140 [DEBUG] [Thread-160915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:56.156 [INFO] [Thread-160915] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:56.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:56.806 [DEBUG] [Thread-160915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:56.806 [DEBUG] [Thread-160915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:56.806 [DEBUG] [Thread-160915] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:13:56.846 [DEBUG] [Thread-160915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:56.847 [DEBUG] [Thread-160915] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:56.850 [DEBUG] [Thread-160915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:56.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:56.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:13:56.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:13:56.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:13:56.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:56.870 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:13:56.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:56.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:56.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:13:56.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.592428 -999.00  +15.20  23.16     41   +2.10 1 1 1 1 1   887    0 11.11 -69.96 ----- 19.5 23.2 142.2 26.1 21.2 -28.8 20.7 -27.2 22.5 -28.6 23.5 -29.1
2025-09-29T16:13:56.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:13:56.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:13:56.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.592428
2025-09-29T16:13:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:13:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:13:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:13:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:13:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:13:56.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:13:33', tmtdew=15.43, humidity=35.17, cloud=0.0, wind=21.63, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:13:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:13:56.873 [DEBUG] [Thread-160915] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:13:56.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:13:56.967 [DEBUG] [Thread-160918] [transport.py] [_log()] starting thread (client mode): 0x2b9cc490
2025-09-29T16:13:56.967 [DEBUG] [Thread-160918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:13:56.982 [DEBUG] [Thread-160918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:13:56.982 [INFO] [Thread-160918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:13:56.989 [DEBUG] [Thread-160918] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:13:56.989 [DEBUG] [Thread-160918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:13:56.989 [DEBUG] [Thread-160918] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:13:56.989 [DEBUG] [Thread-160918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:56.989 [DEBUG] [Thread-160918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:13:56.989 [DEBUG] [Thread-160918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:56.989 [DEBUG] [Thread-160918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] client lang: <none>
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] server lang: <none>
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] kex follows: False
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] Compression: none
2025-09-29T16:13:56.990 [DEBUG] [Thread-160918] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:13:57.051 [DEBUG] [Thread-160918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:13:57.052 [DEBUG] [Thread-160918] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:13:57.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:13:57.052 [DEBUG] [Thread-160918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:13:57.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:13:57.108 [DEBUG] [Thread-160918] [transport.py] [_log()] userauth is OK
2025-09-29T16:13:57.108 [DEBUG] [Thread-160918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:13:57.108 [DEBUG] [Thread-160918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:13:57.108 [DEBUG] [Thread-160918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:13:57.108 [DEBUG] [Thread-160918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:13:57.126 [INFO] [Thread-160918] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:13:57.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:13:57.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:13:58.079 [DEBUG] [Thread-160918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:13:58.080 [DEBUG] [Thread-160918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:13:58.127 [DEBUG] [Thread-160918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:13:58.127 [DEBUG] [Thread-160918] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:13:58.137 [DEBUG] [Thread-160918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:13:58.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:13:58.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:13:58.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:13:58.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:13:58.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:13:58.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:13:58.172 [DEBUG] [Thread-160918] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:03.026 [DEBUG] [Thread-160920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:14:08.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:14:08.175 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:14:08.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:14:08.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 14, 5), 15.42, 35.17, 0.0, 19.97, 15.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:14:08.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:14:05
2025-09-29T16:14:08.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:14:09.043 [DEBUG] [Thread-160921] [transport.py] [_log()] starting thread (client mode): 0x2b91eec0
2025-09-29T16:14:09.043 [DEBUG] [Thread-160921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:14:09.063 [DEBUG] [Thread-160921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:14:09.063 [INFO] [Thread-160921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:14:09.066 [DEBUG] [Thread-160921] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:14:09.066 [DEBUG] [Thread-160921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:14:09.066 [DEBUG] [Thread-160921] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:14:09.066 [DEBUG] [Thread-160921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:09.066 [DEBUG] [Thread-160921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:09.066 [DEBUG] [Thread-160921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] client lang: <none>
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] server lang: <none>
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] kex follows: False
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] Compression: none
2025-09-29T16:14:09.067 [DEBUG] [Thread-160921] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:14:09.083 [DEBUG] [Thread-160921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:14:09.083 [DEBUG] [Thread-160921] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:14:09.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:14:09.084 [DEBUG] [Thread-160921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:14:09.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:14:09.086 [DEBUG] [Thread-160921] [transport.py] [_log()] userauth is OK
2025-09-29T16:14:09.086 [DEBUG] [Thread-160921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:14:09.086 [DEBUG] [Thread-160921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:14:09.086 [DEBUG] [Thread-160921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:14:09.087 [DEBUG] [Thread-160921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:14:09.101 [INFO] [Thread-160921] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:14:09.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:14:09.754 [DEBUG] [Thread-160921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:14:09.754 [DEBUG] [Thread-160921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:14:09.754 [DEBUG] [Thread-160921] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:14:09.795 [DEBUG] [Thread-160921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:14:09.795 [DEBUG] [Thread-160921] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:14:09.798 [DEBUG] [Thread-160921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:14:09.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:14:09.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:14:09.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:14:09.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:14:09.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:14:09.824 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:14:09.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:14:09.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:14:09.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:14:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.592428 -999.00  +15.20  23.16     41   +2.10 1 1 1 1 1   887    0 11.11 -69.96 ----- 19.5 23.2 142.2 26.1 21.2 -28.8 20.7 -27.2 22.5 -28.6 23.5 -29.1
2025-09-29T16:14:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:14:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:14:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.592428
2025-09-29T16:14:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:14:09.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:14:09.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:14:09.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:14:09.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:14:09.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:14:05', tmtdew=15.42, humidity=35.17, cloud=0.0, wind=19.97, temperature=15.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:13:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:14:09.826 [DEBUG] [Thread-160921] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:09.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:14:09.934 [DEBUG] [Thread-160924] [transport.py] [_log()] starting thread (client mode): 0x2b91f820
2025-09-29T16:14:09.934 [DEBUG] [Thread-160924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:14:09.948 [DEBUG] [Thread-160924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:14:09.948 [INFO] [Thread-160924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:14:09.956 [DEBUG] [Thread-160924] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:14:09.956 [DEBUG] [Thread-160924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:14:09.956 [DEBUG] [Thread-160924] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] client lang: <none>
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] server lang: <none>
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] kex follows: False
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] Compression: none
2025-09-29T16:14:09.957 [DEBUG] [Thread-160924] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:14:10.015 [DEBUG] [Thread-160924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:14:10.015 [DEBUG] [Thread-160924] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:14:10.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:14:10.016 [DEBUG] [Thread-160924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:14:10.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:14:10.072 [DEBUG] [Thread-160924] [transport.py] [_log()] userauth is OK
2025-09-29T16:14:10.072 [DEBUG] [Thread-160924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:14:10.072 [DEBUG] [Thread-160924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:14:10.072 [DEBUG] [Thread-160924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:14:10.072 [DEBUG] [Thread-160924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:14:10.091 [INFO] [Thread-160924] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:14:10.092 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:14:10.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:14:11.070 [DEBUG] [Thread-160924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:14:11.070 [DEBUG] [Thread-160924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:14:11.119 [DEBUG] [Thread-160924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:14:11.119 [DEBUG] [Thread-160924] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:14:11.127 [DEBUG] [Thread-160924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:14:11.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:14:11.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:14:11.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:14:11.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:14:11.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:14:11.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:14:11.159 [DEBUG] [Thread-160924] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:18.054 [DEBUG] [Thread-160926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:14:19.415 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:14:19.416 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:14:21.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:14:21.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:14:21.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:14:21.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 14, 5), 15.42, 35.17, 0.0, 19.97, 15.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:14:21.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:14:05
2025-09-29T16:14:21.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:14:22.022 [DEBUG] [Thread-160927] [transport.py] [_log()] starting thread (client mode): 0x2e3614e0
2025-09-29T16:14:22.022 [DEBUG] [Thread-160927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:14:22.046 [DEBUG] [Thread-160927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:14:22.046 [INFO] [Thread-160927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:14:22.049 [DEBUG] [Thread-160927] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:14:22.049 [DEBUG] [Thread-160927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:14:22.049 [DEBUG] [Thread-160927] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:14:22.049 [DEBUG] [Thread-160927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] client lang: <none>
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] server lang: <none>
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] kex follows: False
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:14:22.050 [DEBUG] [Thread-160927] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:14:22.051 [DEBUG] [Thread-160927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:14:22.051 [DEBUG] [Thread-160927] [transport.py] [_log()] Compression: none
2025-09-29T16:14:22.051 [DEBUG] [Thread-160927] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:14:22.063 [DEBUG] [Thread-160927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:14:22.064 [DEBUG] [Thread-160927] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:14:22.064 [DEBUG] [Thread-160927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:14:22.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:14:22.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:14:22.066 [DEBUG] [Thread-160927] [transport.py] [_log()] userauth is OK
2025-09-29T16:14:22.066 [DEBUG] [Thread-160927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:14:22.066 [DEBUG] [Thread-160927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:14:22.066 [DEBUG] [Thread-160927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:14:22.066 [DEBUG] [Thread-160927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:14:22.084 [INFO] [Thread-160927] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:14:22.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:14:22.678 [DEBUG] [Thread-160927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:14:22.678 [DEBUG] [Thread-160927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:14:22.678 [DEBUG] [Thread-160927] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:14:22.719 [DEBUG] [Thread-160927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:14:22.719 [DEBUG] [Thread-160927] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:14:22.722 [DEBUG] [Thread-160927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:14:22.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:14:22.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:14:22.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:14:22.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:14:22.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:14:22.745 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:14:22.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:14:22.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:14:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:14:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.593122 -999.00  +15.40  13.68     41   +2.30 1 1 1 1 1   887    0 11.29 -67.60 ----- 8.9 13.7 124.4 17.1 21.2 -27.8 20.8 -28.2 22.6 -28.0 23.6 -28.6
2025-09-29T16:14:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:14:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:14:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.593122
2025-09-29T16:14:22.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:14:22.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:14:22.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:14:22.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:14:22.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:14:22.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:14:05', tmtdew=15.42, humidity=35.17, cloud=0.0, wind=19.97, temperature=15.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:14:05.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:14:22.748 [DEBUG] [Thread-160927] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:22.832 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:14:22.841 [DEBUG] [Thread-160930] [transport.py] [_log()] starting thread (client mode): 0x2e3758d0
2025-09-29T16:14:22.841 [DEBUG] [Thread-160930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:14:22.856 [DEBUG] [Thread-160930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:14:22.857 [INFO] [Thread-160930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:14:22.864 [DEBUG] [Thread-160930] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:14:22.864 [DEBUG] [Thread-160930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:14:22.864 [DEBUG] [Thread-160930] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:14:22.865 [DEBUG] [Thread-160930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:22.865 [DEBUG] [Thread-160930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:22.865 [DEBUG] [Thread-160930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:22.865 [DEBUG] [Thread-160930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:22.865 [DEBUG] [Thread-160930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:14:22.865 [DEBUG] [Thread-160930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:14:22.865 [DEBUG] [Thread-160930] [transport.py] [_log()] client lang: <none>
2025-09-29T16:14:22.865 [DEBUG] [Thread-160930] [transport.py] [_log()] server lang: <none>
2025-09-29T16:14:22.866 [DEBUG] [Thread-160930] [transport.py] [_log()] kex follows: False
2025-09-29T16:14:22.866 [DEBUG] [Thread-160930] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:14:22.866 [DEBUG] [Thread-160930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:14:22.866 [DEBUG] [Thread-160930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:14:22.866 [DEBUG] [Thread-160930] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:14:22.866 [DEBUG] [Thread-160930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:14:22.866 [DEBUG] [Thread-160930] [transport.py] [_log()] Compression: none
2025-09-29T16:14:22.866 [DEBUG] [Thread-160930] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:14:22.922 [DEBUG] [Thread-160930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:14:22.923 [DEBUG] [Thread-160930] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:14:22.923 [DEBUG] [Thread-160930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:14:22.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:14:22.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:14:22.979 [DEBUG] [Thread-160930] [transport.py] [_log()] userauth is OK
2025-09-29T16:14:22.979 [DEBUG] [Thread-160930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:14:22.980 [DEBUG] [Thread-160930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:14:22.980 [DEBUG] [Thread-160930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:14:22.980 [DEBUG] [Thread-160930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:14:22.999 [INFO] [Thread-160930] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:14:23.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:14:23.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:14:23.982 [DEBUG] [Thread-160930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:14:23.983 [DEBUG] [Thread-160930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:14:24.031 [DEBUG] [Thread-160930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:14:24.031 [DEBUG] [Thread-160930] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:14:24.040 [DEBUG] [Thread-160930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:14:24.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:14:24.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:14:24.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:14:24.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:14:24.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:14:24.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:14:24.073 [DEBUG] [Thread-160930] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:33.095 [DEBUG] [Thread-160932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:14:34.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:14:34.075 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:14:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:14:34.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 14, 5), 15.42, 35.17, 0.0, 19.97, 15.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:14:34.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:14:05
2025-09-29T16:14:34.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:14:34.925 [DEBUG] [Thread-160933] [transport.py] [_log()] starting thread (client mode): 0x2b9ce350
2025-09-29T16:14:34.925 [DEBUG] [Thread-160933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:14:34.945 [DEBUG] [Thread-160933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:14:34.945 [INFO] [Thread-160933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] client lang: <none>
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] server lang: <none>
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] kex follows: False
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] Compression: none
2025-09-29T16:14:34.949 [DEBUG] [Thread-160933] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:14:34.966 [DEBUG] [Thread-160933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:14:34.966 [DEBUG] [Thread-160933] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:14:34.967 [DEBUG] [Thread-160933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:14:34.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:14:34.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:14:34.969 [DEBUG] [Thread-160933] [transport.py] [_log()] userauth is OK
2025-09-29T16:14:34.969 [DEBUG] [Thread-160933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:14:34.969 [DEBUG] [Thread-160933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:14:34.969 [DEBUG] [Thread-160933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:14:34.969 [DEBUG] [Thread-160933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:14:35.004 [INFO] [Thread-160933] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:14:35.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:14:35.576 [DEBUG] [Thread-160933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:14:35.576 [DEBUG] [Thread-160933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:14:35.577 [DEBUG] [Thread-160933] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:14:35.617 [DEBUG] [Thread-160933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:14:35.618 [DEBUG] [Thread-160933] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:14:35.620 [DEBUG] [Thread-160933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:14:35.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:14:35.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:14:35.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:14:35.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:14:35.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:14:35.643 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:14:35.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:14:35.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:14:35.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:14:35.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.593122 -999.00  +15.40  13.68     41   +2.30 1 1 1 1 1   887    0 11.29 -67.60 ----- 8.9 13.7 124.4 17.1 21.2 -27.8 20.8 -28.2 22.6 -28.0 23.6 -28.6
2025-09-29T16:14:35.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:14:35.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:14:35.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.593122
2025-09-29T16:14:35.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:14:35.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:14:35.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:14:35.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:14:35.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:14:35.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:14:05', tmtdew=15.42, humidity=35.17, cloud=0.0, wind=19.97, temperature=15.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:14:05.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:14:35.645 [DEBUG] [Thread-160933] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:35.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:14:35.741 [DEBUG] [Thread-160936] [transport.py] [_log()] starting thread (client mode): 0x2b96b280
2025-09-29T16:14:35.742 [DEBUG] [Thread-160936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:14:35.755 [DEBUG] [Thread-160936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:14:35.755 [INFO] [Thread-160936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] client lang: <none>
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] server lang: <none>
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] kex follows: False
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:14:35.763 [DEBUG] [Thread-160936] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:14:35.764 [DEBUG] [Thread-160936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:14:35.764 [DEBUG] [Thread-160936] [transport.py] [_log()] Compression: none
2025-09-29T16:14:35.764 [DEBUG] [Thread-160936] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:14:35.819 [DEBUG] [Thread-160936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:14:35.819 [DEBUG] [Thread-160936] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:14:35.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:14:35.821 [DEBUG] [Thread-160936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:14:35.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:14:35.876 [DEBUG] [Thread-160936] [transport.py] [_log()] userauth is OK
2025-09-29T16:14:35.876 [DEBUG] [Thread-160936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:14:35.876 [DEBUG] [Thread-160936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:14:35.876 [DEBUG] [Thread-160936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:14:35.876 [DEBUG] [Thread-160936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:14:35.895 [INFO] [Thread-160936] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:14:35.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:14:35.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:14:36.879 [DEBUG] [Thread-160936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:14:36.880 [DEBUG] [Thread-160936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:14:36.927 [DEBUG] [Thread-160936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:14:36.927 [DEBUG] [Thread-160936] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:14:36.935 [DEBUG] [Thread-160936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:14:36.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:14:36.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:14:36.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:14:36.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:14:36.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:14:36.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:14:36.966 [DEBUG] [Thread-160936] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:46.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:14:46.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:14:46.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:14:47.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 14, 37), 15.19, 35.36, 0.0, 18.02, 15.33, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:14:47.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:14:37
2025-09-29T16:14:47.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:14:47.832 [DEBUG] [Thread-160938] [transport.py] [_log()] starting thread (client mode): 0x30dde8f0
2025-09-29T16:14:47.832 [DEBUG] [Thread-160938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:14:47.853 [DEBUG] [Thread-160938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:14:47.853 [INFO] [Thread-160938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] client lang: <none>
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] server lang: <none>
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] kex follows: False
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:14:47.856 [DEBUG] [Thread-160938] [transport.py] [_log()] Compression: none
2025-09-29T16:14:47.857 [DEBUG] [Thread-160938] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:14:47.873 [DEBUG] [Thread-160938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:14:47.873 [DEBUG] [Thread-160938] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:14:47.874 [DEBUG] [Thread-160938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:14:47.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:14:47.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:14:47.876 [DEBUG] [Thread-160938] [transport.py] [_log()] userauth is OK
2025-09-29T16:14:47.876 [DEBUG] [Thread-160938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:14:47.876 [DEBUG] [Thread-160938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:14:47.876 [DEBUG] [Thread-160938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:14:47.876 [DEBUG] [Thread-160938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:14:47.900 [INFO] [Thread-160938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:14:47.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:14:48.122 [DEBUG] [Thread-160940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:14:48.145 [DEBUG] [Thread-160941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:14:48.527 [DEBUG] [Thread-160938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:14:48.527 [DEBUG] [Thread-160938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:14:48.528 [DEBUG] [Thread-160938] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:14:48.568 [DEBUG] [Thread-160938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:14:48.568 [DEBUG] [Thread-160938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:14:48.571 [DEBUG] [Thread-160938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:14:48.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:14:48.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:14:48.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:14:48.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:14:48.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:14:48.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:14:48.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:14:48.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:14:48.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:14:48.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.593469 -999.00  +15.60  11.40     40   +2.30 1 1 1 1 1   887    0 11.52 -59.48 ----- 13.7 11.4 145.0 15.1 21.3 -28.5 20.9 -27.7 22.8 -27.2 23.6 -29.5
2025-09-29T16:14:48.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:14:48.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:14:48.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.593469
2025-09-29T16:14:48.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:14:48.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:14:48.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:14:48.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:14:48.598 [DEBUG] [Thread-160938] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:48.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:14:48.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:14:37', tmtdew=15.19, humidity=35.36, cloud=0.0, wind=18.02, temperature=15.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:14:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:14:48.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:14:48.692 [DEBUG] [Thread-160943] [transport.py] [_log()] starting thread (client mode): 0x2e361a20
2025-09-29T16:14:48.693 [DEBUG] [Thread-160943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:14:48.708 [DEBUG] [Thread-160943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:14:48.708 [INFO] [Thread-160943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:14:48.715 [DEBUG] [Thread-160943] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:14:48.716 [DEBUG] [Thread-160943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:14:48.716 [DEBUG] [Thread-160943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:14:48.716 [DEBUG] [Thread-160943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:48.716 [DEBUG] [Thread-160943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:14:48.716 [DEBUG] [Thread-160943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:48.716 [DEBUG] [Thread-160943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:14:48.716 [DEBUG] [Thread-160943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] client lang: <none>
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] server lang: <none>
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] kex follows: False
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] Compression: none
2025-09-29T16:14:48.717 [DEBUG] [Thread-160943] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:14:48.774 [DEBUG] [Thread-160943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:14:48.774 [DEBUG] [Thread-160943] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:14:48.774 [DEBUG] [Thread-160943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:14:48.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:14:48.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:14:48.831 [DEBUG] [Thread-160943] [transport.py] [_log()] userauth is OK
2025-09-29T16:14:48.831 [DEBUG] [Thread-160943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:14:48.831 [DEBUG] [Thread-160943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:14:48.831 [DEBUG] [Thread-160943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:14:48.831 [DEBUG] [Thread-160943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:14:48.846 [INFO] [Thread-160943] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:14:48.846 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:14:48.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:14:49.888 [DEBUG] [Thread-160943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:14:49.888 [DEBUG] [Thread-160943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:14:49.936 [DEBUG] [Thread-160943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:14:49.936 [DEBUG] [Thread-160943] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:14:49.946 [DEBUG] [Thread-160943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:14:49.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:14:49.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:14:49.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:14:49.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:14:49.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:14:49.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:14:49.982 [DEBUG] [Thread-160943] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:14:59.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:14:59.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:14:59.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:15:00.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 14, 37), 15.19, 35.36, 0.0, 18.02, 15.33, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:15:00.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:14:37
2025-09-29T16:15:00.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:15:00.834 [DEBUG] [Thread-160945] [transport.py] [_log()] starting thread (client mode): 0x2e362c50
2025-09-29T16:15:00.834 [DEBUG] [Thread-160945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:00.854 [DEBUG] [Thread-160945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:15:00.855 [INFO] [Thread-160945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:15:00.858 [DEBUG] [Thread-160945] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:00.858 [DEBUG] [Thread-160945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:15:00.858 [DEBUG] [Thread-160945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:00.858 [DEBUG] [Thread-160945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:00.858 [DEBUG] [Thread-160945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:00.858 [DEBUG] [Thread-160945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:00.858 [DEBUG] [Thread-160945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:00.858 [DEBUG] [Thread-160945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] Compression: none
2025-09-29T16:15:00.859 [DEBUG] [Thread-160945] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:00.875 [DEBUG] [Thread-160945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:00.876 [DEBUG] [Thread-160945] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:00.876 [DEBUG] [Thread-160945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:15:00.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:15:00.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:00.878 [DEBUG] [Thread-160945] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:00.878 [DEBUG] [Thread-160945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:00.879 [DEBUG] [Thread-160945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:00.879 [DEBUG] [Thread-160945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:15:00.879 [DEBUG] [Thread-160945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:00.903 [INFO] [Thread-160945] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:00.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:01.551 [DEBUG] [Thread-160945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:01.551 [DEBUG] [Thread-160945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:01.551 [DEBUG] [Thread-160945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:15:01.592 [DEBUG] [Thread-160945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:01.592 [DEBUG] [Thread-160945] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:01.595 [DEBUG] [Thread-160945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:01.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:01.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:15:01.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:15:01.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:15:01.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:01.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:15:01.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:01.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:01.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:15:01.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.593469 -999.00  +15.60  11.40     40   +2.30 1 1 1 1 1   887    0 11.52 -59.48 ----- 13.7 11.4 145.0 15.1 21.3 -28.5 20.9 -27.7 22.8 -27.2 23.6 -29.5
2025-09-29T16:15:01.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:15:01.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:15:01.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.593469
2025-09-29T16:15:01.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:15:01.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:15:01.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:15:01.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:15:01.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:15:01.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:14:37', tmtdew=15.19, humidity=35.36, cloud=0.0, wind=18.02, temperature=15.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:14:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:15:01.619 [DEBUG] [Thread-160945] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:01.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:15:01.714 [DEBUG] [Thread-160948] [transport.py] [_log()] starting thread (client mode): 0x2b94eb90
2025-09-29T16:15:01.714 [DEBUG] [Thread-160948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:01.729 [DEBUG] [Thread-160948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:15:01.729 [INFO] [Thread-160948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:15:01.736 [DEBUG] [Thread-160948] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:01.736 [DEBUG] [Thread-160948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:01.737 [DEBUG] [Thread-160948] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:01.738 [DEBUG] [Thread-160948] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:01.738 [DEBUG] [Thread-160948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:01.738 [DEBUG] [Thread-160948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:01.738 [DEBUG] [Thread-160948] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:01.738 [DEBUG] [Thread-160948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:01.738 [DEBUG] [Thread-160948] [transport.py] [_log()] Compression: none
2025-09-29T16:15:01.739 [DEBUG] [Thread-160948] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:01.796 [DEBUG] [Thread-160948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:01.796 [DEBUG] [Thread-160948] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:01.796 [DEBUG] [Thread-160948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:15:01.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:15:01.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:01.852 [DEBUG] [Thread-160948] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:01.852 [DEBUG] [Thread-160948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:01.852 [DEBUG] [Thread-160948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:01.852 [DEBUG] [Thread-160948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:15:01.852 [DEBUG] [Thread-160948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:01.872 [INFO] [Thread-160948] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:01.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:15:01.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:02.831 [DEBUG] [Thread-160948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:02.831 [DEBUG] [Thread-160948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:02.879 [DEBUG] [Thread-160948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:02.879 [DEBUG] [Thread-160948] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:02.887 [DEBUG] [Thread-160948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:02.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:02.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:15:02.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:15:02.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:02.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:02.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:02.919 [DEBUG] [Thread-160948] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:03.154 [DEBUG] [Thread-160950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:15:12.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:15:12.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:15:12.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:15:13.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 15, 9), 15.05, 35.67, 0.0, 19.16, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:15:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:15:09
2025-09-29T16:15:13.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:15:13.782 [DEBUG] [Thread-160951] [transport.py] [_log()] starting thread (client mode): 0x2b91e9e0
2025-09-29T16:15:13.782 [DEBUG] [Thread-160951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:13.802 [DEBUG] [Thread-160951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:15:13.802 [INFO] [Thread-160951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] Compression: none
2025-09-29T16:15:13.804 [DEBUG] [Thread-160951] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:13.814 [DEBUG] [Thread-160951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:13.814 [DEBUG] [Thread-160951] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:13.814 [DEBUG] [Thread-160951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:15:13.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:15:13.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:13.816 [DEBUG] [Thread-160951] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:13.816 [DEBUG] [Thread-160951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:13.816 [DEBUG] [Thread-160951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:13.816 [DEBUG] [Thread-160951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:15:13.816 [DEBUG] [Thread-160951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:13.838 [INFO] [Thread-160951] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:13.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:14.447 [DEBUG] [Thread-160951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:14.447 [DEBUG] [Thread-160951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:14.448 [DEBUG] [Thread-160951] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:15:14.488 [DEBUG] [Thread-160951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:14.488 [DEBUG] [Thread-160951] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:14.491 [DEBUG] [Thread-160951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:14.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:14.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:15:14.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:15:14.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:15:14.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:14.607 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:15:14.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:14.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:14.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:15:14.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.593469 -999.00  +15.60  11.40     40   +2.30 1 1 1 1 1   887    0 11.52 -59.48 ----- 13.7 11.4 145.0 15.1 21.3 -28.5 20.9 -27.7 22.8 -27.2 23.6 -29.5
2025-09-29T16:15:14.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:15:14.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:15:14.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.593469
2025-09-29T16:15:14.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:15:14.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:15:14.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:15:14.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:15:14.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:15:14.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:15:09', tmtdew=15.05, humidity=35.67, cloud=0.0, wind=19.16, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:14:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:15:14.609 [DEBUG] [Thread-160951] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:14.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:15:14.706 [DEBUG] [Thread-160954] [transport.py] [_log()] starting thread (client mode): 0x2e3756c0
2025-09-29T16:15:14.706 [DEBUG] [Thread-160954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:14.723 [DEBUG] [Thread-160954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:15:14.723 [INFO] [Thread-160954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:15:14.730 [DEBUG] [Thread-160954] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:14.730 [DEBUG] [Thread-160954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:15:14.730 [DEBUG] [Thread-160954] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] Compression: none
2025-09-29T16:15:14.731 [DEBUG] [Thread-160954] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:14.787 [DEBUG] [Thread-160954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:14.788 [DEBUG] [Thread-160954] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:14.788 [DEBUG] [Thread-160954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:15:14.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:15:14.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:14.843 [DEBUG] [Thread-160954] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:14.844 [DEBUG] [Thread-160954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:14.844 [DEBUG] [Thread-160954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:14.844 [DEBUG] [Thread-160954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:15:14.844 [DEBUG] [Thread-160954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:14.865 [INFO] [Thread-160954] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:14.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:15:14.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:15.829 [DEBUG] [Thread-160954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:15.829 [DEBUG] [Thread-160954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:15.877 [DEBUG] [Thread-160954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:15.877 [DEBUG] [Thread-160954] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:15.886 [DEBUG] [Thread-160954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:15.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:15.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:15:15.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:15:15.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:15.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:15.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:15.919 [DEBUG] [Thread-160954] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:18.210 [DEBUG] [Thread-160956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:15:19.566 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:15:19.567 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:15:25.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:15:25.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:15:25.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:15:26.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 15, 9), 15.05, 35.67, 0.0, 19.16, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:15:26.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:15:09
2025-09-29T16:15:26.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:15:26.763 [DEBUG] [Thread-160957] [transport.py] [_log()] starting thread (client mode): 0x2e377130
2025-09-29T16:15:26.763 [DEBUG] [Thread-160957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:26.781 [DEBUG] [Thread-160957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:15:26.782 [INFO] [Thread-160957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:26.783 [DEBUG] [Thread-160957] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:26.784 [DEBUG] [Thread-160957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:26.784 [DEBUG] [Thread-160957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:26.784 [DEBUG] [Thread-160957] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:26.784 [DEBUG] [Thread-160957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:26.784 [DEBUG] [Thread-160957] [transport.py] [_log()] Compression: none
2025-09-29T16:15:26.784 [DEBUG] [Thread-160957] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:26.795 [DEBUG] [Thread-160957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:26.796 [DEBUG] [Thread-160957] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:26.796 [DEBUG] [Thread-160957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:15:26.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:15:26.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:26.798 [DEBUG] [Thread-160957] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:26.798 [DEBUG] [Thread-160957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:26.798 [DEBUG] [Thread-160957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:26.798 [DEBUG] [Thread-160957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:15:26.798 [DEBUG] [Thread-160957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:26.815 [INFO] [Thread-160957] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:26.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:27.410 [DEBUG] [Thread-160957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:27.411 [DEBUG] [Thread-160957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:27.411 [DEBUG] [Thread-160957] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:15:27.451 [DEBUG] [Thread-160957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:27.451 [DEBUG] [Thread-160957] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:27.454 [DEBUG] [Thread-160957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:27.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:27.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:15:27.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:15:27.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:15:27.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:27.475 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:15:27.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:27.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:27.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:15:27.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.593816 -999.00  +15.60  10.43     40   +2.30 1 1 1 1 1   887    0 11.82 -56.70 ----- 18.5 10.4 176.8 22.0 21.4 -28.8 20.9 -27.9 22.8 -27.6 23.6 -29.7
2025-09-29T16:15:27.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:15:27.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:15:27.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.593816
2025-09-29T16:15:27.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:15:27.476 [DEBUG] [Thread-160957] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:27.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:15:27.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:15:27.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:15:27.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:15:27.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:15:09', tmtdew=15.05, humidity=35.67, cloud=0.0, wind=19.16, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:15:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:15:27.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:15:27.572 [DEBUG] [Thread-160960] [transport.py] [_log()] starting thread (client mode): 0x2b96aad0
2025-09-29T16:15:27.572 [DEBUG] [Thread-160960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:27.587 [DEBUG] [Thread-160960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:15:27.587 [INFO] [Thread-160960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:15:27.594 [DEBUG] [Thread-160960] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] Compression: none
2025-09-29T16:15:27.595 [DEBUG] [Thread-160960] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:27.652 [DEBUG] [Thread-160960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:27.652 [DEBUG] [Thread-160960] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:27.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:15:27.653 [DEBUG] [Thread-160960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:15:27.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:27.708 [DEBUG] [Thread-160960] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:27.708 [DEBUG] [Thread-160960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:27.708 [DEBUG] [Thread-160960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:27.708 [DEBUG] [Thread-160960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:15:27.708 [DEBUG] [Thread-160960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:27.724 [INFO] [Thread-160960] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:27.724 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:15:27.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:28.673 [DEBUG] [Thread-160960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:28.674 [DEBUG] [Thread-160960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:28.721 [DEBUG] [Thread-160960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:28.721 [DEBUG] [Thread-160960] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:28.730 [DEBUG] [Thread-160960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:28.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:28.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:15:28.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:15:28.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:28.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:28.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:28.764 [DEBUG] [Thread-160960] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:33.246 [DEBUG] [Thread-160962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:15:38.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:15:38.758 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:15:38.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:15:39.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 15, 9), 15.05, 35.67, 0.0, 19.16, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:15:39.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:15:09
2025-09-29T16:15:39.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:15:39.593 [DEBUG] [Thread-160963] [transport.py] [_log()] starting thread (client mode): 0x2e362f80
2025-09-29T16:15:39.593 [DEBUG] [Thread-160963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:39.614 [DEBUG] [Thread-160963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:15:39.614 [INFO] [Thread-160963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:15:39.617 [DEBUG] [Thread-160963] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:39.618 [DEBUG] [Thread-160963] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:39.619 [DEBUG] [Thread-160963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:39.619 [DEBUG] [Thread-160963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:39.619 [DEBUG] [Thread-160963] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:39.619 [DEBUG] [Thread-160963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:39.619 [DEBUG] [Thread-160963] [transport.py] [_log()] Compression: none
2025-09-29T16:15:39.619 [DEBUG] [Thread-160963] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:39.637 [DEBUG] [Thread-160963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:39.637 [DEBUG] [Thread-160963] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:39.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:15:39.638 [DEBUG] [Thread-160963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:15:39.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:39.640 [DEBUG] [Thread-160963] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:39.640 [DEBUG] [Thread-160963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:39.640 [DEBUG] [Thread-160963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:39.640 [DEBUG] [Thread-160963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:15:39.640 [DEBUG] [Thread-160963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:39.664 [INFO] [Thread-160963] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:39.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:41.170 [DEBUG] [Thread-160963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:41.171 [DEBUG] [Thread-160963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:41.171 [DEBUG] [Thread-160963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:15:41.211 [DEBUG] [Thread-160963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:41.212 [DEBUG] [Thread-160963] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:41.215 [DEBUG] [Thread-160963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:41.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:41.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:15:41.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:15:41.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:15:41.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:41.238 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:15:41.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:41.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:41.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:15:41.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.593816 -999.00  +15.60  10.43     40   +2.30 1 1 1 1 1   887    0 11.82 -56.70 ----- 18.5 10.4 176.8 22.0 21.4 -28.8 20.9 -27.9 22.8 -27.6 23.6 -29.7
2025-09-29T16:15:41.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:15:41.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:15:41.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.593816
2025-09-29T16:15:41.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:15:41.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:15:41.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:15:41.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:15:41.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:15:41.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:15:09', tmtdew=15.05, humidity=35.67, cloud=0.0, wind=19.16, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:15:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:15:41.241 [DEBUG] [Thread-160963] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:41.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:15:41.337 [DEBUG] [Thread-160966] [transport.py] [_log()] starting thread (client mode): 0x2b94f3a0
2025-09-29T16:15:41.337 [DEBUG] [Thread-160966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:41.353 [DEBUG] [Thread-160966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:15:41.353 [INFO] [Thread-160966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:41.361 [DEBUG] [Thread-160966] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:41.362 [DEBUG] [Thread-160966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:41.362 [DEBUG] [Thread-160966] [transport.py] [_log()] Compression: none
2025-09-29T16:15:41.362 [DEBUG] [Thread-160966] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:41.420 [DEBUG] [Thread-160966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:41.420 [DEBUG] [Thread-160966] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:41.421 [DEBUG] [Thread-160966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:15:41.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:15:41.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:41.475 [DEBUG] [Thread-160966] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:41.476 [DEBUG] [Thread-160966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:41.476 [DEBUG] [Thread-160966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:41.476 [DEBUG] [Thread-160966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:15:41.476 [DEBUG] [Thread-160966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:41.495 [INFO] [Thread-160966] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:41.495 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:15:41.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:42.474 [DEBUG] [Thread-160966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:42.474 [DEBUG] [Thread-160966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:42.522 [DEBUG] [Thread-160966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:42.522 [DEBUG] [Thread-160966] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:42.530 [DEBUG] [Thread-160966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:42.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:42.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:15:42.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:15:42.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:42.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:42.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:42.561 [DEBUG] [Thread-160966] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:48.171 [DEBUG] [Thread-160968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:15:48.300 [DEBUG] [Thread-160969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:15:52.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:15:52.564 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:15:52.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:15:53.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 15, 41), 15.09, 35.77, 0.0, 16.89, 15.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:15:53.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:15:41
2025-09-29T16:15:53.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:15:53.410 [DEBUG] [Thread-160970] [transport.py] [_log()] starting thread (client mode): 0x2e377ca0
2025-09-29T16:15:53.410 [DEBUG] [Thread-160970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:53.426 [DEBUG] [Thread-160970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:15:53.426 [INFO] [Thread-160970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:53.429 [DEBUG] [Thread-160970] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:53.430 [DEBUG] [Thread-160970] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:53.430 [DEBUG] [Thread-160970] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:53.430 [DEBUG] [Thread-160970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:53.430 [DEBUG] [Thread-160970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:53.430 [DEBUG] [Thread-160970] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:53.430 [DEBUG] [Thread-160970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:53.430 [DEBUG] [Thread-160970] [transport.py] [_log()] Compression: none
2025-09-29T16:15:53.430 [DEBUG] [Thread-160970] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:53.446 [DEBUG] [Thread-160970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:53.447 [DEBUG] [Thread-160970] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:53.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:15:53.447 [DEBUG] [Thread-160970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:15:53.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:53.449 [DEBUG] [Thread-160970] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:53.450 [DEBUG] [Thread-160970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:53.450 [DEBUG] [Thread-160970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:53.450 [DEBUG] [Thread-160970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:15:53.450 [DEBUG] [Thread-160970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:53.474 [INFO] [Thread-160970] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:53.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:54.073 [DEBUG] [Thread-160970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:54.074 [DEBUG] [Thread-160970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:54.074 [DEBUG] [Thread-160970] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:15:54.114 [DEBUG] [Thread-160970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:54.115 [DEBUG] [Thread-160970] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:54.116 [DEBUG] [Thread-160970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:54.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:54.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:15:54.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:15:54.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:15:54.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:54.137 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:15:54.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:54.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:54.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:15:54.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.594164 -999.00  +15.50  14.98     41   +2.30 1 1 1 1 1   887    0 11.43 -58.23 ----- 10.4 15.0 158.2 22.8 21.2 -29.0 20.6 -30.7 22.7 -28.5 23.5 -30.5
2025-09-29T16:15:54.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:15:54.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:15:54.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.594164
2025-09-29T16:15:54.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:15:54.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:15:54.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:15:54.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:15:54.139 [DEBUG] [Thread-160970] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:15:54.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:15:54.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:15:41', tmtdew=15.09, humidity=35.77, cloud=0.0, wind=16.89, temperature=15.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:15:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:15:54.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:15:54.232 [DEBUG] [Thread-160973] [transport.py] [_log()] starting thread (client mode): 0x2e3fb160
2025-09-29T16:15:54.232 [DEBUG] [Thread-160973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:15:54.247 [DEBUG] [Thread-160973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:15:54.247 [INFO] [Thread-160973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:15:54.255 [DEBUG] [Thread-160973] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:15:54.255 [DEBUG] [Thread-160973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:15:54.255 [DEBUG] [Thread-160973] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:15:54.255 [DEBUG] [Thread-160973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:54.255 [DEBUG] [Thread-160973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] client lang: <none>
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] server lang: <none>
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] kex follows: False
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:15:54.256 [DEBUG] [Thread-160973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:15:54.257 [DEBUG] [Thread-160973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:15:54.257 [DEBUG] [Thread-160973] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:15:54.257 [DEBUG] [Thread-160973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:15:54.257 [DEBUG] [Thread-160973] [transport.py] [_log()] Compression: none
2025-09-29T16:15:54.257 [DEBUG] [Thread-160973] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:15:54.311 [DEBUG] [Thread-160973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:15:54.312 [DEBUG] [Thread-160973] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:15:54.312 [DEBUG] [Thread-160973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:15:54.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:15:54.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:15:54.367 [DEBUG] [Thread-160973] [transport.py] [_log()] userauth is OK
2025-09-29T16:15:54.368 [DEBUG] [Thread-160973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:15:54.368 [DEBUG] [Thread-160973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:15:54.368 [DEBUG] [Thread-160973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:15:54.368 [DEBUG] [Thread-160973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:15:54.387 [INFO] [Thread-160973] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:15:54.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:15:54.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:15:55.354 [DEBUG] [Thread-160973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:15:55.354 [DEBUG] [Thread-160973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:15:55.402 [DEBUG] [Thread-160973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:15:55.402 [DEBUG] [Thread-160973] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:15:55.411 [DEBUG] [Thread-160973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:15:55.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:15:55.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:15:55.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:15:55.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:15:55.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:15:55.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:15:55.446 [DEBUG] [Thread-160973] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:03.327 [DEBUG] [Thread-160975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:16:05.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:16:05.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:16:05.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:16:06.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 15, 41), 15.09, 35.77, 0.0, 16.89, 15.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:16:06.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:15:41
2025-09-29T16:16:06.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:16:06.285 [DEBUG] [Thread-160976] [transport.py] [_log()] starting thread (client mode): 0x2e38fa60
2025-09-29T16:16:06.285 [DEBUG] [Thread-160976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:06.305 [DEBUG] [Thread-160976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:16:06.305 [INFO] [Thread-160976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:06.308 [DEBUG] [Thread-160976] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:06.309 [DEBUG] [Thread-160976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:06.309 [DEBUG] [Thread-160976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:06.309 [DEBUG] [Thread-160976] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:06.309 [DEBUG] [Thread-160976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:06.309 [DEBUG] [Thread-160976] [transport.py] [_log()] Compression: none
2025-09-29T16:16:06.309 [DEBUG] [Thread-160976] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:06.327 [DEBUG] [Thread-160976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:06.328 [DEBUG] [Thread-160976] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:06.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:16:06.329 [DEBUG] [Thread-160976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:16:06.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:06.331 [DEBUG] [Thread-160976] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:06.331 [DEBUG] [Thread-160976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:06.331 [DEBUG] [Thread-160976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:06.332 [DEBUG] [Thread-160976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:16:06.332 [DEBUG] [Thread-160976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:06.354 [INFO] [Thread-160976] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:06.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:07.105 [DEBUG] [Thread-160976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:07.105 [DEBUG] [Thread-160976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:07.106 [DEBUG] [Thread-160976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:16:07.146 [DEBUG] [Thread-160976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:07.146 [DEBUG] [Thread-160976] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:07.149 [DEBUG] [Thread-160976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:07.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:07.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:16:07.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:16:07.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:16:07.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:07.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:16:07.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:07.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:16:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.594164 -999.00  +15.50  14.98     41   +2.30 1 1 1 1 1   887    0 11.43 -58.23 ----- 10.4 15.0 158.2 22.8 21.2 -29.0 20.6 -30.7 22.7 -28.5 23.5 -30.5
2025-09-29T16:16:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:16:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:16:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.594164
2025-09-29T16:16:07.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:16:07.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:16:07.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:16:07.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:16:07.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:16:07.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:15:41', tmtdew=15.09, humidity=35.77, cloud=0.0, wind=16.89, temperature=15.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:15:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:16:07.169 [DEBUG] [Thread-160976] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:07.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:16:07.264 [DEBUG] [Thread-160979] [transport.py] [_log()] starting thread (client mode): 0x2b968670
2025-09-29T16:16:07.265 [DEBUG] [Thread-160979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:07.279 [DEBUG] [Thread-160979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:16:07.279 [INFO] [Thread-160979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:16:07.286 [DEBUG] [Thread-160979] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] Compression: none
2025-09-29T16:16:07.287 [DEBUG] [Thread-160979] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:07.343 [DEBUG] [Thread-160979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:07.343 [DEBUG] [Thread-160979] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:07.344 [DEBUG] [Thread-160979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:16:07.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:16:07.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:07.400 [DEBUG] [Thread-160979] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:07.400 [DEBUG] [Thread-160979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:07.400 [DEBUG] [Thread-160979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:07.401 [DEBUG] [Thread-160979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:16:07.401 [DEBUG] [Thread-160979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:07.419 [INFO] [Thread-160979] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:07.419 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:16:07.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:08.396 [DEBUG] [Thread-160979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:08.396 [DEBUG] [Thread-160979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:08.444 [DEBUG] [Thread-160979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:08.444 [DEBUG] [Thread-160979] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:08.453 [DEBUG] [Thread-160979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:08.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:08.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:16:08.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:16:08.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:08.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:08.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:08.488 [DEBUG] [Thread-160979] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:18.377 [DEBUG] [Thread-160981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:16:18.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:16:18.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:16:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:16:19.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 16, 13), 15.13, 35.69, 0.0, 15.46, 15.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:16:19.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:16:13
2025-09-29T16:16:19.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:16:19.325 [DEBUG] [Thread-160982] [transport.py] [_log()] starting thread (client mode): 0x2e3df190
2025-09-29T16:16:19.325 [DEBUG] [Thread-160982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:19.340 [DEBUG] [Thread-160982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:16:19.340 [INFO] [Thread-160982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] Compression: none
2025-09-29T16:16:19.343 [DEBUG] [Thread-160982] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:19.360 [DEBUG] [Thread-160982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:19.360 [DEBUG] [Thread-160982] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:19.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:16:19.361 [DEBUG] [Thread-160982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:16:19.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:19.363 [DEBUG] [Thread-160982] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:19.363 [DEBUG] [Thread-160982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:19.364 [DEBUG] [Thread-160982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:19.364 [DEBUG] [Thread-160982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:16:19.364 [DEBUG] [Thread-160982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:19.387 [INFO] [Thread-160982] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:19.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:19.706 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:16:19.707 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:16:20.156 [DEBUG] [Thread-160982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:20.156 [DEBUG] [Thread-160982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:20.157 [DEBUG] [Thread-160982] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:16:20.198 [DEBUG] [Thread-160982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:20.198 [DEBUG] [Thread-160982] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:20.200 [DEBUG] [Thread-160982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:20.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:20.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:16:20.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:16:20.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:16:20.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:20.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:16:20.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.594164 -999.00  +15.50  14.98     41   +2.30 1 1 1 1 1   887    0 11.43 -58.23 ----- 10.4 15.0 158.2 22.8 21.2 -29.0 20.6 -30.7 22.7 -28.5 23.5 -30.5
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.594164
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:16:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:16:13', tmtdew=15.13, humidity=35.69, cloud=0.0, wind=15.46, temperature=15.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:15:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:16:20.213 [DEBUG] [Thread-160982] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:20.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:16:20.295 [DEBUG] [Thread-160985] [transport.py] [_log()] starting thread (client mode): 0x2e38ceb0
2025-09-29T16:16:20.295 [DEBUG] [Thread-160985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:20.309 [DEBUG] [Thread-160985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:16:20.310 [INFO] [Thread-160985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:16:20.317 [DEBUG] [Thread-160985] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:20.317 [DEBUG] [Thread-160985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:16:20.317 [DEBUG] [Thread-160985] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] Compression: none
2025-09-29T16:16:20.318 [DEBUG] [Thread-160985] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:20.376 [DEBUG] [Thread-160985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:20.376 [DEBUG] [Thread-160985] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:20.377 [DEBUG] [Thread-160985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:16:20.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:16:20.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:20.432 [DEBUG] [Thread-160985] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:20.432 [DEBUG] [Thread-160985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:20.432 [DEBUG] [Thread-160985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:20.432 [DEBUG] [Thread-160985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:16:20.432 [DEBUG] [Thread-160985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:20.451 [INFO] [Thread-160985] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:20.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:16:20.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:21.439 [DEBUG] [Thread-160985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:21.439 [DEBUG] [Thread-160985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:21.487 [DEBUG] [Thread-160985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:21.487 [DEBUG] [Thread-160985] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:21.496 [DEBUG] [Thread-160985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:21.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:21.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:16:21.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:16:21.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:21.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:21.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:21.531 [DEBUG] [Thread-160985] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:31.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:16:31.534 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:16:31.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:16:32.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 16, 13), 15.13, 35.69, 0.0, 15.46, 15.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:16:32.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:16:13
2025-09-29T16:16:32.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:16:32.365 [DEBUG] [Thread-160987] [transport.py] [_log()] starting thread (client mode): 0x2b94c100
2025-09-29T16:16:32.365 [DEBUG] [Thread-160987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:32.385 [DEBUG] [Thread-160987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:16:32.385 [INFO] [Thread-160987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:16:32.388 [DEBUG] [Thread-160987] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:32.388 [DEBUG] [Thread-160987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:16:32.388 [DEBUG] [Thread-160987] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:32.388 [DEBUG] [Thread-160987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] Compression: none
2025-09-29T16:16:32.389 [DEBUG] [Thread-160987] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:32.407 [DEBUG] [Thread-160987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:32.407 [DEBUG] [Thread-160987] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:32.408 [DEBUG] [Thread-160987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:16:32.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:16:32.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:32.410 [DEBUG] [Thread-160987] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:32.410 [DEBUG] [Thread-160987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:32.410 [DEBUG] [Thread-160987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:32.410 [DEBUG] [Thread-160987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:16:32.410 [DEBUG] [Thread-160987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:32.428 [INFO] [Thread-160987] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:32.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:33.035 [DEBUG] [Thread-160987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:33.035 [DEBUG] [Thread-160987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:33.035 [DEBUG] [Thread-160987] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:16:33.076 [DEBUG] [Thread-160987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:33.077 [DEBUG] [Thread-160987] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:33.080 [DEBUG] [Thread-160987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:33.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:33.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:16:33.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:16:33.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:16:33.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:33.101 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:16:33.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:33.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:33.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:16:33.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.594511 -999.00  +15.40  26.02     41   +2.30 1 1 1 1 1   887    0 11.92 -50.08 ----- 20.2 26.0 157.2 32.0 21.3 -28.6 20.8 -27.8 22.8 -27.8 23.6 -30.4
2025-09-29T16:16:33.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:16:33.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:16:33.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.594511
2025-09-29T16:16:33.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:16:33.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:16:33.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:16:33.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:16:33.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:16:33.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:16:13', tmtdew=15.13, humidity=35.69, cloud=0.0, wind=15.46, temperature=15.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:16:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:16:33.104 [DEBUG] [Thread-160987] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:33.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:16:33.200 [DEBUG] [Thread-160990] [transport.py] [_log()] starting thread (client mode): 0x2e38f820
2025-09-29T16:16:33.200 [DEBUG] [Thread-160990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:33.214 [DEBUG] [Thread-160990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:16:33.214 [INFO] [Thread-160990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:33.222 [DEBUG] [Thread-160990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:33.223 [DEBUG] [Thread-160990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:33.223 [DEBUG] [Thread-160990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:33.223 [DEBUG] [Thread-160990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:33.223 [DEBUG] [Thread-160990] [transport.py] [_log()] Compression: none
2025-09-29T16:16:33.223 [DEBUG] [Thread-160990] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:33.280 [DEBUG] [Thread-160990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:33.281 [DEBUG] [Thread-160990] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:33.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:16:33.282 [DEBUG] [Thread-160990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:16:33.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:33.336 [DEBUG] [Thread-160990] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:33.336 [DEBUG] [Thread-160990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:33.337 [DEBUG] [Thread-160990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:33.337 [DEBUG] [Thread-160990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:16:33.337 [DEBUG] [Thread-160990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:33.357 [INFO] [Thread-160990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:33.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:16:33.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:33.406 [DEBUG] [Thread-160992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:16:34.307 [DEBUG] [Thread-160990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:34.308 [DEBUG] [Thread-160990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:34.355 [DEBUG] [Thread-160990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:34.355 [DEBUG] [Thread-160990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:34.364 [DEBUG] [Thread-160990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:34.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:34.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:16:34.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:16:34.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:34.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:34.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:34.399 [DEBUG] [Thread-160990] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:44.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:16:44.401 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:16:44.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:16:44.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 16, 13), 15.13, 35.69, 0.0, 15.46, 15.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:16:44.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:16:13
2025-09-29T16:16:45.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:16:45.243 [DEBUG] [Thread-160993] [transport.py] [_log()] starting thread (client mode): 0x2b96bee0
2025-09-29T16:16:45.243 [DEBUG] [Thread-160993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:45.264 [DEBUG] [Thread-160993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:16:45.264 [INFO] [Thread-160993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:16:45.266 [DEBUG] [Thread-160993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] Compression: none
2025-09-29T16:16:45.267 [DEBUG] [Thread-160993] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:45.284 [DEBUG] [Thread-160993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:45.285 [DEBUG] [Thread-160993] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:45.285 [DEBUG] [Thread-160993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:16:45.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:16:45.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:45.285 [DEBUG] [Thread-160993] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:45.286 [DEBUG] [Thread-160993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:45.286 [DEBUG] [Thread-160993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:45.286 [DEBUG] [Thread-160993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:16:45.286 [DEBUG] [Thread-160993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:45.313 [INFO] [Thread-160993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:45.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:46.065 [DEBUG] [Thread-160993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:46.066 [DEBUG] [Thread-160993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:46.066 [DEBUG] [Thread-160993] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:16:46.107 [DEBUG] [Thread-160993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:46.107 [DEBUG] [Thread-160993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:46.109 [DEBUG] [Thread-160993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:46.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:46.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:16:46.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:16:46.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:16:46.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:46.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:16:46.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.594511 -999.00  +15.40  26.02     41   +2.30 1 1 1 1 1   887    0 11.92 -50.08 ----- 20.2 26.0 157.2 32.0 21.3 -28.6 20.8 -27.8 22.8 -27.8 23.6 -30.4
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.594511
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:16:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:16:13', tmtdew=15.13, humidity=35.69, cloud=0.0, wind=15.46, temperature=15.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:16:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:16:46.127 [DEBUG] [Thread-160993] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:46.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:16:46.213 [DEBUG] [Thread-160996] [transport.py] [_log()] starting thread (client mode): 0x2e363490
2025-09-29T16:16:46.213 [DEBUG] [Thread-160996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:46.228 [DEBUG] [Thread-160996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:16:46.228 [INFO] [Thread-160996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:46.235 [DEBUG] [Thread-160996] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:46.236 [DEBUG] [Thread-160996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:46.236 [DEBUG] [Thread-160996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:46.236 [DEBUG] [Thread-160996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:46.236 [DEBUG] [Thread-160996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:46.236 [DEBUG] [Thread-160996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:46.236 [DEBUG] [Thread-160996] [transport.py] [_log()] Compression: none
2025-09-29T16:16:46.236 [DEBUG] [Thread-160996] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:46.290 [DEBUG] [Thread-160996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:46.291 [DEBUG] [Thread-160996] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:46.291 [DEBUG] [Thread-160996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:16:46.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:16:46.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:46.348 [DEBUG] [Thread-160996] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:46.348 [DEBUG] [Thread-160996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:46.348 [DEBUG] [Thread-160996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:46.348 [DEBUG] [Thread-160996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:16:46.348 [DEBUG] [Thread-160996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:46.362 [INFO] [Thread-160996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:46.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:16:46.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:47.325 [DEBUG] [Thread-160996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:47.325 [DEBUG] [Thread-160996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:47.373 [DEBUG] [Thread-160996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:47.373 [DEBUG] [Thread-160996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:47.382 [DEBUG] [Thread-160996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:47.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:47.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:16:47.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:16:47.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:47.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:47.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:47.413 [DEBUG] [Thread-160996] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:48.205 [DEBUG] [Thread-160998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:16:48.447 [DEBUG] [Thread-160999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:16:57.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:16:57.416 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:16:57.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:16:57.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 16, 45), 15.2, 35.74, 0.0, 21.35, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:16:57.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:16:45
2025-09-29T16:16:58.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:16:58.240 [DEBUG] [Thread-161000] [transport.py] [_log()] starting thread (client mode): 0x2e362050
2025-09-29T16:16:58.240 [DEBUG] [Thread-161000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:58.262 [DEBUG] [Thread-161000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:16:58.262 [INFO] [Thread-161000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:16:58.265 [DEBUG] [Thread-161000] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:58.265 [DEBUG] [Thread-161000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:58.266 [DEBUG] [Thread-161000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:58.267 [DEBUG] [Thread-161000] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:58.267 [DEBUG] [Thread-161000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:58.267 [DEBUG] [Thread-161000] [transport.py] [_log()] Compression: none
2025-09-29T16:16:58.267 [DEBUG] [Thread-161000] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:58.284 [DEBUG] [Thread-161000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:58.285 [DEBUG] [Thread-161000] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:58.285 [DEBUG] [Thread-161000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:16:58.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:16:58.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:58.287 [DEBUG] [Thread-161000] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:58.287 [DEBUG] [Thread-161000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:58.287 [DEBUG] [Thread-161000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:58.288 [DEBUG] [Thread-161000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:16:58.288 [DEBUG] [Thread-161000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:58.311 [INFO] [Thread-161000] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:58.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:16:58.894 [DEBUG] [Thread-161000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:16:58.894 [DEBUG] [Thread-161000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:16:58.895 [DEBUG] [Thread-161000] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:16:58.935 [DEBUG] [Thread-161000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:16:58.936 [DEBUG] [Thread-161000] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:16:58.938 [DEBUG] [Thread-161000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:16:58.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:16:58.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:16:58.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:16:58.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:16:58.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:16:58.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:16:58.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:16:58.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:16:58.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:16:58.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.594858 -999.00  +15.10  19.74     41   +2.20 1 1 1 1 1   887    0 12.12 -42.89 ----- 16.5 19.7 183.0 28.3 21.1 -29.9 20.6 -28.2 22.5 -29.0 23.4 -31.0
2025-09-29T16:16:58.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:16:58.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:16:58.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.594858
2025-09-29T16:16:58.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:16:58.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:16:58.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:16:58.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:16:58.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:16:58.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:16:45', tmtdew=15.2, humidity=35.74, cloud=0.0, wind=21.35, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:16:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:16:58.959 [DEBUG] [Thread-161000] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:16:59.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:16:59.051 [DEBUG] [Thread-161003] [transport.py] [_log()] starting thread (client mode): 0x2e3c3100
2025-09-29T16:16:59.051 [DEBUG] [Thread-161003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:16:59.066 [DEBUG] [Thread-161003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:16:59.067 [INFO] [Thread-161003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:16:59.074 [DEBUG] [Thread-161003] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] client lang: <none>
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] server lang: <none>
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] kex follows: False
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] Compression: none
2025-09-29T16:16:59.075 [DEBUG] [Thread-161003] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:16:59.132 [DEBUG] [Thread-161003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:16:59.132 [DEBUG] [Thread-161003] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:16:59.133 [DEBUG] [Thread-161003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:16:59.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:16:59.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:16:59.188 [DEBUG] [Thread-161003] [transport.py] [_log()] userauth is OK
2025-09-29T16:16:59.188 [DEBUG] [Thread-161003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:16:59.188 [DEBUG] [Thread-161003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:16:59.188 [DEBUG] [Thread-161003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:16:59.188 [DEBUG] [Thread-161003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:16:59.207 [INFO] [Thread-161003] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:16:59.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:16:59.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:00.186 [DEBUG] [Thread-161003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:00.186 [DEBUG] [Thread-161003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:00.235 [DEBUG] [Thread-161003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:00.235 [DEBUG] [Thread-161003] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:00.244 [DEBUG] [Thread-161003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:00.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:00.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:17:00.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:17:00.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:00.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:00.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:00.278 [DEBUG] [Thread-161003] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:17:03.474 [DEBUG] [Thread-161005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:17:10.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:17:10.281 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:17:10.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:17:10.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 16, 45), 15.2, 35.74, 0.0, 21.35, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:17:10.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:16:45
2025-09-29T16:17:10.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:17:11.104 [DEBUG] [Thread-161006] [transport.py] [_log()] starting thread (client mode): 0x2e3c23b0
2025-09-29T16:17:11.104 [DEBUG] [Thread-161006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:17:11.124 [DEBUG] [Thread-161006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:17:11.124 [INFO] [Thread-161006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] client lang: <none>
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] server lang: <none>
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] kex follows: False
2025-09-29T16:17:11.126 [DEBUG] [Thread-161006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:17:11.127 [DEBUG] [Thread-161006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:17:11.127 [DEBUG] [Thread-161006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:17:11.127 [DEBUG] [Thread-161006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:17:11.127 [DEBUG] [Thread-161006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:17:11.127 [DEBUG] [Thread-161006] [transport.py] [_log()] Compression: none
2025-09-29T16:17:11.127 [DEBUG] [Thread-161006] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:17:11.140 [DEBUG] [Thread-161006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:17:11.140 [DEBUG] [Thread-161006] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:17:11.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:17:11.142 [DEBUG] [Thread-161006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:17:11.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:17:11.144 [DEBUG] [Thread-161006] [transport.py] [_log()] userauth is OK
2025-09-29T16:17:11.144 [DEBUG] [Thread-161006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:17:11.144 [DEBUG] [Thread-161006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:17:11.144 [DEBUG] [Thread-161006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:17:11.144 [DEBUG] [Thread-161006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:17:11.170 [INFO] [Thread-161006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:17:11.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:11.911 [DEBUG] [Thread-161006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:11.912 [DEBUG] [Thread-161006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:11.912 [DEBUG] [Thread-161006] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:17:11.952 [DEBUG] [Thread-161006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:11.953 [DEBUG] [Thread-161006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:11.956 [DEBUG] [Thread-161006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:11.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:11.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:17:11.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:17:11.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:17:11.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:11.981 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:17:11.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:11.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:11.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:17:11.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.594858 -999.00  +15.10  19.74     41   +2.20 1 1 1 1 1   887    0 12.12 -42.89 ----- 16.5 19.7 183.0 28.3 21.1 -29.9 20.6 -28.2 22.5 -29.0 23.4 -31.0
2025-09-29T16:17:11.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:17:11.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:17:11.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.594858
2025-09-29T16:17:11.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:17:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:17:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:17:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:17:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:17:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:16:45', tmtdew=15.2, humidity=35.74, cloud=0.0, wind=21.35, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:16:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:17:11.983 [DEBUG] [Thread-161006] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:17:12.068 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:17:12.079 [DEBUG] [Thread-161009] [transport.py] [_log()] starting thread (client mode): 0x2e362980
2025-09-29T16:17:12.079 [DEBUG] [Thread-161009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:17:12.094 [DEBUG] [Thread-161009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:17:12.094 [INFO] [Thread-161009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:17:12.101 [DEBUG] [Thread-161009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:17:12.102 [DEBUG] [Thread-161009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:17:12.102 [DEBUG] [Thread-161009] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:17:12.102 [DEBUG] [Thread-161009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:12.102 [DEBUG] [Thread-161009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:12.102 [DEBUG] [Thread-161009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:12.102 [DEBUG] [Thread-161009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] client lang: <none>
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] server lang: <none>
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] kex follows: False
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] Compression: none
2025-09-29T16:17:12.103 [DEBUG] [Thread-161009] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:17:12.159 [DEBUG] [Thread-161009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:17:12.160 [DEBUG] [Thread-161009] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:17:12.160 [DEBUG] [Thread-161009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:17:12.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:17:12.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:17:12.216 [DEBUG] [Thread-161009] [transport.py] [_log()] userauth is OK
2025-09-29T16:17:12.216 [DEBUG] [Thread-161009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:17:12.216 [DEBUG] [Thread-161009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:17:12.217 [DEBUG] [Thread-161009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:17:12.217 [DEBUG] [Thread-161009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:17:12.236 [INFO] [Thread-161009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:17:12.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:17:12.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:13.181 [DEBUG] [Thread-161009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:13.182 [DEBUG] [Thread-161009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:13.229 [DEBUG] [Thread-161009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:13.229 [DEBUG] [Thread-161009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:13.237 [DEBUG] [Thread-161009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:13.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:13.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:17:13.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:17:13.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:13.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:13.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:13.271 [DEBUG] [Thread-161009] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:17:18.504 [DEBUG] [Thread-161011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:17:19.846 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:17:19.847 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:17:23.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:17:23.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:17:23.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:17:23.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 17, 17), 15.09, 36.02, 0.0, 23.75, 15.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:17:23.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:17:17
2025-09-29T16:17:23.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:17:24.117 [DEBUG] [Thread-161012] [transport.py] [_log()] starting thread (client mode): 0x2e3c01c0
2025-09-29T16:17:24.117 [DEBUG] [Thread-161012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:17:24.138 [DEBUG] [Thread-161012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:17:24.138 [INFO] [Thread-161012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] client lang: <none>
2025-09-29T16:17:24.141 [DEBUG] [Thread-161012] [transport.py] [_log()] server lang: <none>
2025-09-29T16:17:24.142 [DEBUG] [Thread-161012] [transport.py] [_log()] kex follows: False
2025-09-29T16:17:24.142 [DEBUG] [Thread-161012] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:17:24.142 [DEBUG] [Thread-161012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:17:24.142 [DEBUG] [Thread-161012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:17:24.142 [DEBUG] [Thread-161012] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:17:24.142 [DEBUG] [Thread-161012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:17:24.142 [DEBUG] [Thread-161012] [transport.py] [_log()] Compression: none
2025-09-29T16:17:24.142 [DEBUG] [Thread-161012] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:17:24.161 [DEBUG] [Thread-161012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:17:24.161 [DEBUG] [Thread-161012] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:17:24.162 [DEBUG] [Thread-161012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:17:24.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:17:24.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:17:24.163 [DEBUG] [Thread-161012] [transport.py] [_log()] userauth is OK
2025-09-29T16:17:24.164 [DEBUG] [Thread-161012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:17:24.164 [DEBUG] [Thread-161012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:17:24.164 [DEBUG] [Thread-161012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:17:24.164 [DEBUG] [Thread-161012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:17:24.181 [INFO] [Thread-161012] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:17:24.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:24.932 [DEBUG] [Thread-161012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:24.933 [DEBUG] [Thread-161012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:24.933 [DEBUG] [Thread-161012] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:17:24.973 [DEBUG] [Thread-161012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:24.973 [DEBUG] [Thread-161012] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:24.976 [DEBUG] [Thread-161012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:24.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:24.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:17:24.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:17:24.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:17:24.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:24.998 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:17:24.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:24.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:24.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:17:24.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.594858 -999.00  +15.10  19.74     41   +2.20 1 1 1 1 1   887    0 12.12 -42.89 ----- 16.5 19.7 183.0 28.3 21.1 -29.9 20.6 -28.2 22.5 -29.0 23.4 -31.0
2025-09-29T16:17:24.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:17:24.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:17:24.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.594858
2025-09-29T16:17:24.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:17:25.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:17:25.000 [DEBUG] [Thread-161012] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:17:25.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:17:25.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:17:25.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:17:25.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:17:17', tmtdew=15.09, humidity=36.02, cloud=0.0, wind=23.75, temperature=15.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:16:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:17:25.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:17:25.097 [DEBUG] [Thread-161015] [transport.py] [_log()] starting thread (client mode): 0x2e38f6a0
2025-09-29T16:17:25.097 [DEBUG] [Thread-161015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:17:25.111 [DEBUG] [Thread-161015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:17:25.112 [INFO] [Thread-161015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:17:25.119 [DEBUG] [Thread-161015] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:17:25.119 [DEBUG] [Thread-161015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:17:25.119 [DEBUG] [Thread-161015] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:17:25.119 [DEBUG] [Thread-161015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:25.119 [DEBUG] [Thread-161015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] client lang: <none>
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] server lang: <none>
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] kex follows: False
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] Compression: none
2025-09-29T16:17:25.120 [DEBUG] [Thread-161015] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:17:25.175 [DEBUG] [Thread-161015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:17:25.175 [DEBUG] [Thread-161015] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:17:25.176 [DEBUG] [Thread-161015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:17:25.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:17:25.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:17:25.444 [DEBUG] [Thread-161015] [transport.py] [_log()] userauth is OK
2025-09-29T16:17:25.445 [DEBUG] [Thread-161015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:17:25.445 [DEBUG] [Thread-161015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:17:25.445 [DEBUG] [Thread-161015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:17:25.445 [DEBUG] [Thread-161015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:17:25.463 [INFO] [Thread-161015] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:17:25.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:17:25.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:26.451 [DEBUG] [Thread-161015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:26.451 [DEBUG] [Thread-161015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:26.499 [DEBUG] [Thread-161015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:26.499 [DEBUG] [Thread-161015] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:26.508 [DEBUG] [Thread-161015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:26.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:26.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:17:26.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:17:26.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:26.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:26.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:26.546 [DEBUG] [Thread-161015] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:17:33.531 [DEBUG] [Thread-161017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:17:36.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:17:36.549 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:17:36.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:17:37.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 17, 17), 15.09, 36.02, 0.0, 23.75, 15.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:17:37.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:17:17
2025-09-29T16:17:37.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:17:37.371 [DEBUG] [Thread-161018] [transport.py] [_log()] starting thread (client mode): 0x2e3dc160
2025-09-29T16:17:37.371 [DEBUG] [Thread-161018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:17:37.391 [DEBUG] [Thread-161018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:17:37.391 [INFO] [Thread-161018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:17:37.394 [DEBUG] [Thread-161018] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:17:37.394 [DEBUG] [Thread-161018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:17:37.394 [DEBUG] [Thread-161018] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] client lang: <none>
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] server lang: <none>
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] kex follows: False
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] Compression: none
2025-09-29T16:17:37.395 [DEBUG] [Thread-161018] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:17:37.413 [DEBUG] [Thread-161018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:17:37.414 [DEBUG] [Thread-161018] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:17:37.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:17:37.415 [DEBUG] [Thread-161018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:17:37.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:17:37.416 [DEBUG] [Thread-161018] [transport.py] [_log()] userauth is OK
2025-09-29T16:17:37.417 [DEBUG] [Thread-161018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:17:37.417 [DEBUG] [Thread-161018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:17:37.417 [DEBUG] [Thread-161018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:17:37.417 [DEBUG] [Thread-161018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:17:37.450 [INFO] [Thread-161018] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:17:37.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:38.041 [DEBUG] [Thread-161018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:38.041 [DEBUG] [Thread-161018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:38.041 [DEBUG] [Thread-161018] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:17:38.082 [DEBUG] [Thread-161018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:38.082 [DEBUG] [Thread-161018] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:38.084 [DEBUG] [Thread-161018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:38.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:38.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:17:38.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:17:38.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:17:38.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:38.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:17:38.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:38.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:17:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.595205 -999.00  +15.20   7.91     42   +2.30 1 1 1 1 1   887    0 12.18 -37.52 ----- 16.2 7.9 213.3 23.2 21.0 -29.2 20.1 -32.6 22.3 -29.4 23.2 -29.1
2025-09-29T16:17:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:17:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:17:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.595205
2025-09-29T16:17:38.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:17:38.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:17:38.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:17:38.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:17:38.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:17:38.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:17:17', tmtdew=15.09, humidity=36.02, cloud=0.0, wind=23.75, temperature=15.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:17:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:17:38.109 [DEBUG] [Thread-161018] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:17:38.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:17:38.206 [DEBUG] [Thread-161021] [transport.py] [_log()] starting thread (client mode): 0x2b94c340
2025-09-29T16:17:38.206 [DEBUG] [Thread-161021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:17:38.221 [DEBUG] [Thread-161021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:17:38.221 [INFO] [Thread-161021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:17:38.228 [DEBUG] [Thread-161021] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] client lang: <none>
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] server lang: <none>
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] kex follows: False
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] Compression: none
2025-09-29T16:17:38.229 [DEBUG] [Thread-161021] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:17:38.287 [DEBUG] [Thread-161021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:17:38.288 [DEBUG] [Thread-161021] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:17:38.288 [DEBUG] [Thread-161021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:17:38.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:17:38.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:17:38.344 [DEBUG] [Thread-161021] [transport.py] [_log()] userauth is OK
2025-09-29T16:17:38.344 [DEBUG] [Thread-161021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:17:38.344 [DEBUG] [Thread-161021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:17:38.344 [DEBUG] [Thread-161021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:17:38.345 [DEBUG] [Thread-161021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:17:38.363 [INFO] [Thread-161021] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:17:38.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:17:38.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:39.327 [DEBUG] [Thread-161021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:39.327 [DEBUG] [Thread-161021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:39.375 [DEBUG] [Thread-161021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:39.375 [DEBUG] [Thread-161021] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:39.383 [DEBUG] [Thread-161021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:39.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:39.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:17:39.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:17:39.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:39.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:39.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:39.415 [DEBUG] [Thread-161021] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:17:48.232 [DEBUG] [Thread-161023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:17:48.573 [DEBUG] [Thread-161024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:17:49.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:17:49.410 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:17:49.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:17:49.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 17, 17), 15.09, 36.02, 0.0, 23.75, 15.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:17:49.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:17:17
2025-09-29T16:17:50.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:17:50.246 [DEBUG] [Thread-161025] [transport.py] [_log()] starting thread (client mode): 0x2e3dd0c0
2025-09-29T16:17:50.246 [DEBUG] [Thread-161025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:17:50.269 [DEBUG] [Thread-161025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:17:50.269 [INFO] [Thread-161025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] client lang: <none>
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] server lang: <none>
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] kex follows: False
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] Compression: none
2025-09-29T16:17:50.273 [DEBUG] [Thread-161025] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:17:50.288 [DEBUG] [Thread-161025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:17:50.288 [DEBUG] [Thread-161025] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:17:50.289 [DEBUG] [Thread-161025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:17:50.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:17:50.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:17:50.289 [DEBUG] [Thread-161025] [transport.py] [_log()] userauth is OK
2025-09-29T16:17:50.289 [DEBUG] [Thread-161025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:17:50.290 [DEBUG] [Thread-161025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:17:50.290 [DEBUG] [Thread-161025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:17:50.290 [DEBUG] [Thread-161025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:17:50.302 [INFO] [Thread-161025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:17:50.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:51.093 [DEBUG] [Thread-161025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:51.093 [DEBUG] [Thread-161025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:51.093 [DEBUG] [Thread-161025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:17:51.135 [DEBUG] [Thread-161025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:51.135 [DEBUG] [Thread-161025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:51.138 [DEBUG] [Thread-161025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:51.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:51.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:17:51.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:17:51.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:17:51.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:51.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:17:51.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.595205 -999.00  +15.20   7.91     42   +2.30 1 1 1 1 1   887    0 12.18 -37.52 ----- 16.2 7.9 213.3 23.2 21.0 -29.2 20.1 -32.6 22.3 -29.4 23.2 -29.1
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.595205
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:17:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:17:51.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:17:17', tmtdew=15.09, humidity=36.02, cloud=0.0, wind=23.75, temperature=15.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:17:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:17:51.158 [DEBUG] [Thread-161025] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:17:51.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:17:51.241 [DEBUG] [Thread-161028] [transport.py] [_log()] starting thread (client mode): 0x2e3dcc10
2025-09-29T16:17:51.242 [DEBUG] [Thread-161028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:17:51.258 [DEBUG] [Thread-161028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:17:51.258 [INFO] [Thread-161028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:17:51.266 [DEBUG] [Thread-161028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:17:51.266 [DEBUG] [Thread-161028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:17:51.266 [DEBUG] [Thread-161028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:17:51.266 [DEBUG] [Thread-161028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:51.266 [DEBUG] [Thread-161028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:17:51.266 [DEBUG] [Thread-161028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] client lang: <none>
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] server lang: <none>
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] kex follows: False
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] Compression: none
2025-09-29T16:17:51.267 [DEBUG] [Thread-161028] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:17:51.326 [DEBUG] [Thread-161028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:17:51.326 [DEBUG] [Thread-161028] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:17:51.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:17:51.326 [DEBUG] [Thread-161028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:17:51.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:17:51.384 [DEBUG] [Thread-161028] [transport.py] [_log()] userauth is OK
2025-09-29T16:17:51.384 [DEBUG] [Thread-161028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:17:51.384 [DEBUG] [Thread-161028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:17:51.384 [DEBUG] [Thread-161028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:17:51.384 [DEBUG] [Thread-161028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:17:51.399 [INFO] [Thread-161028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:17:51.399 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:17:51.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:17:52.404 [DEBUG] [Thread-161028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:17:52.404 [DEBUG] [Thread-161028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:17:52.452 [DEBUG] [Thread-161028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:17:52.452 [DEBUG] [Thread-161028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:17:52.461 [DEBUG] [Thread-161028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:17:52.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:17:52.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:17:52.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:17:52.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:17:52.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:17:52.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:17:52.495 [DEBUG] [Thread-161028] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:02.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:18:02.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:18:02.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:18:03.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 17, 49), 14.97, 36.32, 0.0, 21.33, 15.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:18:03.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:17:49
2025-09-29T16:18:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:18:03.307 [DEBUG] [Thread-161030] [transport.py] [_log()] starting thread (client mode): 0x2e3dd870
2025-09-29T16:18:03.307 [DEBUG] [Thread-161030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:03.319 [DEBUG] [Thread-161030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:18:03.319 [INFO] [Thread-161030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:18:03.320 [DEBUG] [Thread-161030] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:03.320 [DEBUG] [Thread-161030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:18:03.320 [DEBUG] [Thread-161030] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:03.320 [DEBUG] [Thread-161030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:03.320 [DEBUG] [Thread-161030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:03.320 [DEBUG] [Thread-161030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] Compression: none
2025-09-29T16:18:03.321 [DEBUG] [Thread-161030] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:03.330 [DEBUG] [Thread-161030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:03.331 [DEBUG] [Thread-161030] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:03.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:18:03.331 [DEBUG] [Thread-161030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:18:03.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:03.332 [DEBUG] [Thread-161030] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:03.332 [DEBUG] [Thread-161030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:03.332 [DEBUG] [Thread-161030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:03.332 [DEBUG] [Thread-161030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:18:03.332 [DEBUG] [Thread-161030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:03.347 [INFO] [Thread-161030] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:03.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:03.616 [DEBUG] [Thread-161032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:18:03.896 [DEBUG] [Thread-161030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:03.896 [DEBUG] [Thread-161030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:03.896 [DEBUG] [Thread-161030] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:18:03.937 [DEBUG] [Thread-161030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:03.937 [DEBUG] [Thread-161030] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:03.939 [DEBUG] [Thread-161030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:03.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:03.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:18:03.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:18:03.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:18:03.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:03.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:18:03.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:03.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.595553 -999.00  +15.20  11.40     41   +2.30 1 1 1 1 1   887    0 12.10 -34.44 ----- 12.2 11.4 179.6 21.0 21.0 -29.4 20.4 -29.9 22.4 -27.5 23.2 -30.0
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.595553
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:18:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:17:49', tmtdew=14.97, humidity=36.32, cloud=0.0, wind=21.33, temperature=15.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:17:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:18:03.955 [DEBUG] [Thread-161030] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:04.031 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:18:04.041 [DEBUG] [Thread-161034] [transport.py] [_log()] starting thread (client mode): 0x2e3c1720
2025-09-29T16:18:04.042 [DEBUG] [Thread-161034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:04.057 [DEBUG] [Thread-161034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:18:04.057 [INFO] [Thread-161034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:18:04.064 [DEBUG] [Thread-161034] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:04.064 [DEBUG] [Thread-161034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:18:04.064 [DEBUG] [Thread-161034] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:04.064 [DEBUG] [Thread-161034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:04.064 [DEBUG] [Thread-161034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] Compression: none
2025-09-29T16:18:04.065 [DEBUG] [Thread-161034] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:04.124 [DEBUG] [Thread-161034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:04.124 [DEBUG] [Thread-161034] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:04.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:18:04.125 [DEBUG] [Thread-161034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:18:04.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:04.180 [DEBUG] [Thread-161034] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:04.180 [DEBUG] [Thread-161034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:04.180 [DEBUG] [Thread-161034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:04.180 [DEBUG] [Thread-161034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:18:04.180 [DEBUG] [Thread-161034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:04.199 [INFO] [Thread-161034] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:04.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:18:04.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:05.181 [DEBUG] [Thread-161034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:05.181 [DEBUG] [Thread-161034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:05.229 [DEBUG] [Thread-161034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:05.229 [DEBUG] [Thread-161034] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:05.238 [DEBUG] [Thread-161034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:05.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:05.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:18:05.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:18:05.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:05.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:05.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:05.273 [DEBUG] [Thread-161034] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:15.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:18:15.275 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:18:15.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:18:15.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 17, 49), 14.97, 36.32, 0.0, 21.33, 15.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:18:15.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:17:49
2025-09-29T16:18:15.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:18:16.091 [DEBUG] [Thread-161036] [transport.py] [_log()] starting thread (client mode): 0x2e375420
2025-09-29T16:18:16.091 [DEBUG] [Thread-161036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:16.110 [DEBUG] [Thread-161036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:18:16.110 [INFO] [Thread-161036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:18:16.113 [DEBUG] [Thread-161036] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:16.114 [DEBUG] [Thread-161036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:16.115 [DEBUG] [Thread-161036] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:16.115 [DEBUG] [Thread-161036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:16.115 [DEBUG] [Thread-161036] [transport.py] [_log()] Compression: none
2025-09-29T16:18:16.115 [DEBUG] [Thread-161036] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:16.133 [DEBUG] [Thread-161036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:16.133 [DEBUG] [Thread-161036] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:16.134 [DEBUG] [Thread-161036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:18:16.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:18:16.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:16.136 [DEBUG] [Thread-161036] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:16.136 [DEBUG] [Thread-161036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:16.136 [DEBUG] [Thread-161036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:16.136 [DEBUG] [Thread-161036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:18:16.136 [DEBUG] [Thread-161036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:16.161 [INFO] [Thread-161036] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:16.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:16.785 [DEBUG] [Thread-161036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:16.785 [DEBUG] [Thread-161036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:16.785 [DEBUG] [Thread-161036] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:18:16.826 [DEBUG] [Thread-161036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:16.826 [DEBUG] [Thread-161036] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:16.829 [DEBUG] [Thread-161036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:16.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:16.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:18:16.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:18:16.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:18:16.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:16.846 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:18:16.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:16.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:16.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:18:16.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.595553 -999.00  +15.20  11.40     41   +2.30 1 1 1 1 1   887    0 12.10 -34.44 ----- 12.2 11.4 179.6 21.0 21.0 -29.4 20.4 -29.9 22.4 -27.5 23.2 -30.0
2025-09-29T16:18:16.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:18:16.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:18:16.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.595553
2025-09-29T16:18:16.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:18:16.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:18:16.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:18:16.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:18:16.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:18:16.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:17:49', tmtdew=14.97, humidity=36.32, cloud=0.0, wind=21.33, temperature=15.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:17:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:18:16.848 [DEBUG] [Thread-161036] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:16.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:18:16.931 [DEBUG] [Thread-161039] [transport.py] [_log()] starting thread (client mode): 0x2e361930
2025-09-29T16:18:16.931 [DEBUG] [Thread-161039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:16.946 [DEBUG] [Thread-161039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:18:16.946 [INFO] [Thread-161039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] Compression: none
2025-09-29T16:18:16.954 [DEBUG] [Thread-161039] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:17.012 [DEBUG] [Thread-161039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:17.012 [DEBUG] [Thread-161039] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:17.012 [DEBUG] [Thread-161039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:18:17.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:18:17.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:17.068 [DEBUG] [Thread-161039] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:17.068 [DEBUG] [Thread-161039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:17.068 [DEBUG] [Thread-161039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:17.068 [DEBUG] [Thread-161039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:18:17.068 [DEBUG] [Thread-161039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:17.084 [INFO] [Thread-161039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:17.084 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:18:17.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:18.061 [DEBUG] [Thread-161039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:18.061 [DEBUG] [Thread-161039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:18.109 [DEBUG] [Thread-161039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:18.109 [DEBUG] [Thread-161039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:18.117 [DEBUG] [Thread-161039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:18.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:18.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:18:18.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:18:18.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:18.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:18.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:18.148 [DEBUG] [Thread-161039] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:18.639 [DEBUG] [Thread-161041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:18:19.986 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:18:19.987 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:18:28.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:18:28.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:18:28.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:18:28.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 18, 21), 14.87, 36.54, 0.0, 21.1, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:18:28.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:18:21
2025-09-29T16:18:28.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:18:28.983 [DEBUG] [Thread-161042] [transport.py] [_log()] starting thread (client mode): 0x2e362830
2025-09-29T16:18:28.983 [DEBUG] [Thread-161042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:29.003 [DEBUG] [Thread-161042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:18:29.004 [INFO] [Thread-161042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:18:29.006 [DEBUG] [Thread-161042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:29.007 [DEBUG] [Thread-161042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:29.008 [DEBUG] [Thread-161042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:29.008 [DEBUG] [Thread-161042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:29.008 [DEBUG] [Thread-161042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:29.008 [DEBUG] [Thread-161042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:29.008 [DEBUG] [Thread-161042] [transport.py] [_log()] Compression: none
2025-09-29T16:18:29.008 [DEBUG] [Thread-161042] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:29.027 [DEBUG] [Thread-161042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:29.027 [DEBUG] [Thread-161042] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:29.028 [DEBUG] [Thread-161042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:18:29.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:18:29.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:29.068 [DEBUG] [Thread-161042] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:29.068 [DEBUG] [Thread-161042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:29.068 [DEBUG] [Thread-161042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:29.068 [DEBUG] [Thread-161042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:18:29.068 [DEBUG] [Thread-161042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:29.085 [INFO] [Thread-161042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:29.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:29.838 [DEBUG] [Thread-161042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:29.838 [DEBUG] [Thread-161042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:29.839 [DEBUG] [Thread-161042] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:18:29.879 [DEBUG] [Thread-161042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:29.879 [DEBUG] [Thread-161042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:29.881 [DEBUG] [Thread-161042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:29.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:29.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:18:29.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:18:29.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:18:29.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:29.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:18:29.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:29.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:29.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:18:29.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.595553 -999.00  +15.20  11.40     41   +2.30 1 1 1 1 1   887    0 12.10 -34.44 ----- 12.2 11.4 179.6 21.0 21.0 -29.4 20.4 -29.9 22.4 -27.5 23.2 -30.0
2025-09-29T16:18:29.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:18:29.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:18:29.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.595553
2025-09-29T16:18:29.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:18:29.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:18:29.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:18:29.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:18:29.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:18:29.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:18:21', tmtdew=14.87, humidity=36.54, cloud=0.0, wind=21.1, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:17:35.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:18:29.898 [DEBUG] [Thread-161042] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:29.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:18:29.994 [DEBUG] [Thread-161045] [transport.py] [_log()] starting thread (client mode): 0x2e3c3e50
2025-09-29T16:18:29.994 [DEBUG] [Thread-161045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:30.010 [DEBUG] [Thread-161045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:18:30.011 [INFO] [Thread-161045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:18:30.018 [DEBUG] [Thread-161045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:30.018 [DEBUG] [Thread-161045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] Compression: none
2025-09-29T16:18:30.019 [DEBUG] [Thread-161045] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:30.079 [DEBUG] [Thread-161045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:30.080 [DEBUG] [Thread-161045] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:30.080 [DEBUG] [Thread-161045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:18:30.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:18:30.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:30.136 [DEBUG] [Thread-161045] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:30.136 [DEBUG] [Thread-161045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:30.136 [DEBUG] [Thread-161045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:30.136 [DEBUG] [Thread-161045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:18:30.136 [DEBUG] [Thread-161045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:30.156 [INFO] [Thread-161045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:30.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:18:30.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:31.145 [DEBUG] [Thread-161045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:31.145 [DEBUG] [Thread-161045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:31.193 [DEBUG] [Thread-161045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:31.193 [DEBUG] [Thread-161045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:31.202 [DEBUG] [Thread-161045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:31.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:31.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:18:31.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:18:31.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:31.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:31.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:31.237 [DEBUG] [Thread-161045] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:33.671 [DEBUG] [Thread-161047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:18:41.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:18:41.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:18:41.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:18:41.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 18, 21), 14.87, 36.54, 0.0, 21.1, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:18:41.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:18:21
2025-09-29T16:18:41.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:18:42.083 [DEBUG] [Thread-161048] [transport.py] [_log()] starting thread (client mode): 0x2b9cc940
2025-09-29T16:18:42.083 [DEBUG] [Thread-161048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:42.099 [DEBUG] [Thread-161048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:18:42.099 [INFO] [Thread-161048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:18:42.102 [DEBUG] [Thread-161048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:42.102 [DEBUG] [Thread-161048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] Compression: none
2025-09-29T16:18:42.103 [DEBUG] [Thread-161048] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:42.121 [DEBUG] [Thread-161048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:42.122 [DEBUG] [Thread-161048] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:42.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:18:42.123 [DEBUG] [Thread-161048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:18:42.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:42.124 [DEBUG] [Thread-161048] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:42.124 [DEBUG] [Thread-161048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:42.125 [DEBUG] [Thread-161048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:42.125 [DEBUG] [Thread-161048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:18:42.125 [DEBUG] [Thread-161048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:42.149 [INFO] [Thread-161048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:42.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:42.820 [DEBUG] [Thread-161048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:42.820 [DEBUG] [Thread-161048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:42.821 [DEBUG] [Thread-161048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:18:42.861 [DEBUG] [Thread-161048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:42.861 [DEBUG] [Thread-161048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:42.863 [DEBUG] [Thread-161048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:42.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:42.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:18:42.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:18:42.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:18:42.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:42.878 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:18:42.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:42.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:42.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:18:42.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.595900 -999.00  +15.30  20.20     41   +2.30 1 1 1 1 1   887    0 12.10 -30.42 ----- 16.9 20.2 169.6 26.8 21.1 -28.9 20.5 -27.3 22.4 -27.3 23.3 -29.8
2025-09-29T16:18:42.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:18:42.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:18:42.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.595900
2025-09-29T16:18:42.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:18:42.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:18:42.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:18:42.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:18:42.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:18:42.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:18:21', tmtdew=14.87, humidity=36.54, cloud=0.0, wind=21.1, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:18:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:18:42.881 [DEBUG] [Thread-161048] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:42.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:18:42.977 [DEBUG] [Thread-161051] [transport.py] [_log()] starting thread (client mode): 0x2e3dcc10
2025-09-29T16:18:42.978 [DEBUG] [Thread-161051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:42.992 [DEBUG] [Thread-161051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:18:42.992 [INFO] [Thread-161051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:43.000 [DEBUG] [Thread-161051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:43.001 [DEBUG] [Thread-161051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:43.001 [DEBUG] [Thread-161051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:43.001 [DEBUG] [Thread-161051] [transport.py] [_log()] Compression: none
2025-09-29T16:18:43.001 [DEBUG] [Thread-161051] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:43.060 [DEBUG] [Thread-161051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:43.060 [DEBUG] [Thread-161051] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:43.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:18:43.061 [DEBUG] [Thread-161051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:18:43.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:43.117 [DEBUG] [Thread-161051] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:43.117 [DEBUG] [Thread-161051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:43.117 [DEBUG] [Thread-161051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:43.117 [DEBUG] [Thread-161051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:18:43.117 [DEBUG] [Thread-161051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:43.136 [INFO] [Thread-161051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:43.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:18:43.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:44.096 [DEBUG] [Thread-161051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:44.096 [DEBUG] [Thread-161051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:44.144 [DEBUG] [Thread-161051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:44.144 [DEBUG] [Thread-161051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:44.153 [DEBUG] [Thread-161051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:44.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:44.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:18:44.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:18:44.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:44.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:44.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:44.188 [DEBUG] [Thread-161051] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:48.263 [DEBUG] [Thread-161053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:18:48.719 [DEBUG] [Thread-161054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:18:54.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:18:54.190 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:18:54.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:18:54.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 18, 21), 14.87, 36.54, 0.0, 21.1, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:18:54.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:18:21
2025-09-29T16:18:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:18:55.098 [DEBUG] [Thread-161055] [transport.py] [_log()] starting thread (client mode): 0x2e3c3f70
2025-09-29T16:18:55.098 [DEBUG] [Thread-161055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:55.119 [DEBUG] [Thread-161055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:18:55.120 [INFO] [Thread-161055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:55.121 [DEBUG] [Thread-161055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:55.122 [DEBUG] [Thread-161055] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:55.122 [DEBUG] [Thread-161055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:55.122 [DEBUG] [Thread-161055] [transport.py] [_log()] Compression: none
2025-09-29T16:18:55.122 [DEBUG] [Thread-161055] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:55.138 [DEBUG] [Thread-161055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:55.138 [DEBUG] [Thread-161055] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:55.139 [DEBUG] [Thread-161055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:18:55.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:18:55.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:55.139 [DEBUG] [Thread-161055] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:55.139 [DEBUG] [Thread-161055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:55.139 [DEBUG] [Thread-161055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:55.139 [DEBUG] [Thread-161055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:18:55.140 [DEBUG] [Thread-161055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:55.152 [INFO] [Thread-161055] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:55.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:55.945 [DEBUG] [Thread-161055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:55.945 [DEBUG] [Thread-161055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:55.945 [DEBUG] [Thread-161055] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:18:55.986 [DEBUG] [Thread-161055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:55.986 [DEBUG] [Thread-161055] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:55.988 [DEBUG] [Thread-161055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:56.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:56.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:18:56.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:18:56.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:18:56.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:56.005 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:18:56.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.595900 -999.00  +15.30  20.20     41   +2.30 1 1 1 1 1   887    0 12.10 -30.42 ----- 16.9 20.2 169.6 26.8 21.1 -28.9 20.5 -27.3 22.4 -27.3 23.3 -29.8
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.595900
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:18:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:18:21', tmtdew=14.87, humidity=36.54, cloud=0.0, wind=21.1, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:18:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:18:56.006 [DEBUG] [Thread-161055] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:18:56.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:18:56.089 [DEBUG] [Thread-161058] [transport.py] [_log()] starting thread (client mode): 0x2e38c280
2025-09-29T16:18:56.089 [DEBUG] [Thread-161058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:18:56.103 [DEBUG] [Thread-161058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:18:56.104 [INFO] [Thread-161058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] client lang: <none>
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] server lang: <none>
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] kex follows: False
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] Compression: none
2025-09-29T16:18:56.111 [DEBUG] [Thread-161058] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:18:56.167 [DEBUG] [Thread-161058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:18:56.167 [DEBUG] [Thread-161058] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:18:56.167 [DEBUG] [Thread-161058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:18:56.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:18:56.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:18:56.224 [DEBUG] [Thread-161058] [transport.py] [_log()] userauth is OK
2025-09-29T16:18:56.224 [DEBUG] [Thread-161058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:18:56.224 [DEBUG] [Thread-161058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:18:56.224 [DEBUG] [Thread-161058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:18:56.224 [DEBUG] [Thread-161058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:18:56.237 [INFO] [Thread-161058] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:18:56.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:18:56.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:18:57.224 [DEBUG] [Thread-161058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:18:57.224 [DEBUG] [Thread-161058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:18:57.272 [DEBUG] [Thread-161058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:18:57.272 [DEBUG] [Thread-161058] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:18:57.280 [DEBUG] [Thread-161058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:18:57.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:18:57.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:18:57.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:18:57.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:18:57.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:18:57.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:18:57.312 [DEBUG] [Thread-161058] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:03.762 [DEBUG] [Thread-161060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:19:07.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:19:07.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:19:07.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:19:07.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 18, 53), 14.93, 36.04, 0.0, 23.61, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:19:07.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:18:53
2025-09-29T16:19:08.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:19:08.167 [DEBUG] [Thread-161061] [transport.py] [_log()] starting thread (client mode): 0x2e377400
2025-09-29T16:19:08.167 [DEBUG] [Thread-161061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:19:08.183 [DEBUG] [Thread-161061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:19:08.183 [INFO] [Thread-161061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] client lang: <none>
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] server lang: <none>
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] kex follows: False
2025-09-29T16:19:08.186 [DEBUG] [Thread-161061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:19:08.187 [DEBUG] [Thread-161061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:19:08.187 [DEBUG] [Thread-161061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:19:08.187 [DEBUG] [Thread-161061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:19:08.187 [DEBUG] [Thread-161061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:19:08.187 [DEBUG] [Thread-161061] [transport.py] [_log()] Compression: none
2025-09-29T16:19:08.187 [DEBUG] [Thread-161061] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:19:08.199 [DEBUG] [Thread-161061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:19:08.199 [DEBUG] [Thread-161061] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:19:08.200 [DEBUG] [Thread-161061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:19:08.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:19:08.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:19:08.201 [DEBUG] [Thread-161061] [transport.py] [_log()] userauth is OK
2025-09-29T16:19:08.202 [DEBUG] [Thread-161061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:19:08.202 [DEBUG] [Thread-161061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:19:08.202 [DEBUG] [Thread-161061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:19:08.202 [DEBUG] [Thread-161061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:19:08.219 [INFO] [Thread-161061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:19:08.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:19:09.031 [DEBUG] [Thread-161061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:19:09.031 [DEBUG] [Thread-161061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:19:09.031 [DEBUG] [Thread-161061] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:19:09.072 [DEBUG] [Thread-161061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:19:09.072 [DEBUG] [Thread-161061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:19:09.075 [DEBUG] [Thread-161061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:19:09.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:19:09.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:19:09.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:19:09.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:19:09.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:19:09.093 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:19:09.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:19:09.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:19:09.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:19:09.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.595900 -999.00  +15.30  20.20     41   +2.30 1 1 1 1 1   887    0 12.10 -30.42 ----- 16.9 20.2 169.6 26.8 21.1 -28.9 20.5 -27.3 22.4 -27.3 23.3 -29.8
2025-09-29T16:19:09.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:19:09.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:19:09.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.595900
2025-09-29T16:19:09.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:19:09.095 [DEBUG] [Thread-161061] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:09.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:19:09.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:19:09.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:19:09.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:19:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:18:53', tmtdew=14.93, humidity=36.04, cloud=0.0, wind=23.61, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:18:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:19:09.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:19:09.194 [DEBUG] [Thread-161064] [transport.py] [_log()] starting thread (client mode): 0x2e3dd870
2025-09-29T16:19:09.194 [DEBUG] [Thread-161064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:19:09.209 [DEBUG] [Thread-161064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:19:09.209 [INFO] [Thread-161064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:19:09.216 [DEBUG] [Thread-161064] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:19:09.216 [DEBUG] [Thread-161064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] client lang: <none>
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] server lang: <none>
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] kex follows: False
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] Compression: none
2025-09-29T16:19:09.217 [DEBUG] [Thread-161064] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:19:09.281 [DEBUG] [Thread-161064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:19:09.282 [DEBUG] [Thread-161064] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:19:09.282 [DEBUG] [Thread-161064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:19:09.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:19:09.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:19:09.341 [DEBUG] [Thread-161064] [transport.py] [_log()] userauth is OK
2025-09-29T16:19:09.342 [DEBUG] [Thread-161064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:19:09.342 [DEBUG] [Thread-161064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:19:09.342 [DEBUG] [Thread-161064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:19:09.342 [DEBUG] [Thread-161064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:19:09.361 [INFO] [Thread-161064] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:19:09.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:19:09.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:19:10.301 [DEBUG] [Thread-161064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:19:10.301 [DEBUG] [Thread-161064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:19:10.348 [DEBUG] [Thread-161064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:19:10.348 [DEBUG] [Thread-161064] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:19:10.357 [DEBUG] [Thread-161064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:19:10.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:19:10.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:19:10.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:19:10.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:19:10.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:19:10.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:19:10.394 [DEBUG] [Thread-161064] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:18.788 [DEBUG] [Thread-161066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:19:20.124 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:19:20.125 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:19:20.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:19:20.397 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:19:20.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:19:20.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 18, 53), 14.93, 36.04, 0.0, 23.61, 15.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:19:20.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:18:53
2025-09-29T16:19:21.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:19:21.234 [DEBUG] [Thread-161067] [transport.py] [_log()] starting thread (client mode): 0x2e38d990
2025-09-29T16:19:21.234 [DEBUG] [Thread-161067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:19:21.255 [DEBUG] [Thread-161067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:19:21.255 [INFO] [Thread-161067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:19:21.258 [DEBUG] [Thread-161067] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:19:21.258 [DEBUG] [Thread-161067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:19:21.258 [DEBUG] [Thread-161067] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:19:21.258 [DEBUG] [Thread-161067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:21.258 [DEBUG] [Thread-161067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] client lang: <none>
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] server lang: <none>
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] kex follows: False
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] Compression: none
2025-09-29T16:19:21.259 [DEBUG] [Thread-161067] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:19:21.277 [DEBUG] [Thread-161067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:19:21.278 [DEBUG] [Thread-161067] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:19:21.279 [DEBUG] [Thread-161067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:19:21.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:19:21.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:19:21.281 [DEBUG] [Thread-161067] [transport.py] [_log()] userauth is OK
2025-09-29T16:19:21.282 [DEBUG] [Thread-161067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:19:21.282 [DEBUG] [Thread-161067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:19:21.282 [DEBUG] [Thread-161067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:19:21.282 [DEBUG] [Thread-161067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:19:21.301 [INFO] [Thread-161067] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:19:21.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:19:21.918 [DEBUG] [Thread-161067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:19:21.918 [DEBUG] [Thread-161067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:19:21.918 [DEBUG] [Thread-161067] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:19:21.959 [DEBUG] [Thread-161067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:19:21.960 [DEBUG] [Thread-161067] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:19:21.963 [DEBUG] [Thread-161067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:19:21.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:19:21.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:19:21.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:19:21.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:19:21.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:19:21.986 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:19:21.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:19:21.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:19:21.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:19:21.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.596594 -999.00  +15.10  17.35     42   +2.30 1 1 1 1 1   887    0 12.42 -25.07 ----- 13.8 17.4 147.2 27.1 20.9 -29.7 20.3 -27.5 22.3 -29.0 23.2 -29.8
2025-09-29T16:19:21.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:19:21.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:19:21.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.596594
2025-09-29T16:19:21.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:19:21.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:19:21.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:19:21.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:19:21.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:19:21.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:18:53', tmtdew=14.93, humidity=36.04, cloud=0.0, wind=23.61, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:19:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:19:21.988 [DEBUG] [Thread-161067] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:22.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:19:22.083 [DEBUG] [Thread-161070] [transport.py] [_log()] starting thread (client mode): 0x2e3c27d0
2025-09-29T16:19:22.083 [DEBUG] [Thread-161070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:19:22.101 [DEBUG] [Thread-161070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:19:22.101 [INFO] [Thread-161070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:19:22.108 [DEBUG] [Thread-161070] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:19:22.108 [DEBUG] [Thread-161070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:19:22.108 [DEBUG] [Thread-161070] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:19:22.108 [DEBUG] [Thread-161070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:22.108 [DEBUG] [Thread-161070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:22.108 [DEBUG] [Thread-161070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] client lang: <none>
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] server lang: <none>
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] kex follows: False
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] Compression: none
2025-09-29T16:19:22.109 [DEBUG] [Thread-161070] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:19:22.168 [DEBUG] [Thread-161070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:19:22.169 [DEBUG] [Thread-161070] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:19:22.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:19:22.170 [DEBUG] [Thread-161070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:19:22.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:19:22.224 [DEBUG] [Thread-161070] [transport.py] [_log()] userauth is OK
2025-09-29T16:19:22.224 [DEBUG] [Thread-161070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:19:22.225 [DEBUG] [Thread-161070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:19:22.225 [DEBUG] [Thread-161070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:19:22.225 [DEBUG] [Thread-161070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:19:22.243 [INFO] [Thread-161070] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:19:22.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:19:22.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:19:23.229 [DEBUG] [Thread-161070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:19:23.229 [DEBUG] [Thread-161070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:19:23.276 [DEBUG] [Thread-161070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:19:23.276 [DEBUG] [Thread-161070] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:19:23.285 [DEBUG] [Thread-161070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:19:23.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:19:23.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:19:23.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:19:23.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:19:23.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:19:23.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:19:23.321 [DEBUG] [Thread-161070] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:33.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:19:33.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:19:33.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:19:33.830 [DEBUG] [Thread-161072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:19:33.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 19, 25), 14.96, 35.95, 0.0, 20.31, 15.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:19:33.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:19:25
2025-09-29T16:19:34.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:19:34.186 [DEBUG] [Thread-161073] [transport.py] [_log()] starting thread (client mode): 0x2e363ee0
2025-09-29T16:19:34.186 [DEBUG] [Thread-161073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:19:34.207 [DEBUG] [Thread-161073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:19:34.207 [INFO] [Thread-161073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] client lang: <none>
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] server lang: <none>
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] kex follows: False
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:19:34.210 [DEBUG] [Thread-161073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:19:34.211 [DEBUG] [Thread-161073] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:19:34.211 [DEBUG] [Thread-161073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:19:34.211 [DEBUG] [Thread-161073] [transport.py] [_log()] Compression: none
2025-09-29T16:19:34.211 [DEBUG] [Thread-161073] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:19:34.225 [DEBUG] [Thread-161073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:19:34.226 [DEBUG] [Thread-161073] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:19:34.226 [DEBUG] [Thread-161073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:19:34.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:19:34.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:19:34.226 [DEBUG] [Thread-161073] [transport.py] [_log()] userauth is OK
2025-09-29T16:19:34.226 [DEBUG] [Thread-161073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:19:34.226 [DEBUG] [Thread-161073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:19:34.226 [DEBUG] [Thread-161073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:19:34.226 [DEBUG] [Thread-161073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:19:34.235 [INFO] [Thread-161073] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:19:34.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:19:35.035 [DEBUG] [Thread-161073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:19:35.035 [DEBUG] [Thread-161073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:19:35.035 [DEBUG] [Thread-161073] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:19:35.076 [DEBUG] [Thread-161073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:19:35.076 [DEBUG] [Thread-161073] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:19:35.078 [DEBUG] [Thread-161073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:19:35.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:19:35.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:19:35.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:19:35.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:19:35.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:19:35.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:19:35.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.596594 -999.00  +15.10  17.35     42   +2.30 1 1 1 1 1   887    0 12.42 -25.07 ----- 13.8 17.4 147.2 27.1 20.9 -29.7 20.3 -27.5 22.3 -29.0 23.2 -29.8
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.596594
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:19:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:19:25', tmtdew=14.96, humidity=35.95, cloud=0.0, wind=20.31, temperature=15.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:19:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:19:35.097 [DEBUG] [Thread-161073] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:35.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:19:35.181 [DEBUG] [Thread-161076] [transport.py] [_log()] starting thread (client mode): 0x2b9cd570
2025-09-29T16:19:35.181 [DEBUG] [Thread-161076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:19:35.196 [DEBUG] [Thread-161076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:19:35.196 [INFO] [Thread-161076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] client lang: <none>
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] server lang: <none>
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] kex follows: False
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] Compression: none
2025-09-29T16:19:35.203 [DEBUG] [Thread-161076] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:19:35.259 [DEBUG] [Thread-161076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:19:35.259 [DEBUG] [Thread-161076] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:19:35.259 [DEBUG] [Thread-161076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:19:35.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:19:35.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:19:35.316 [DEBUG] [Thread-161076] [transport.py] [_log()] userauth is OK
2025-09-29T16:19:35.316 [DEBUG] [Thread-161076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:19:35.316 [DEBUG] [Thread-161076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:19:35.316 [DEBUG] [Thread-161076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:19:35.316 [DEBUG] [Thread-161076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:19:35.330 [INFO] [Thread-161076] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:19:35.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:19:35.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:19:36.288 [DEBUG] [Thread-161076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:19:36.288 [DEBUG] [Thread-161076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:19:36.336 [DEBUG] [Thread-161076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:19:36.336 [DEBUG] [Thread-161076] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:19:36.344 [DEBUG] [Thread-161076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:19:36.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:19:36.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:19:36.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:19:36.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:19:36.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:19:36.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:19:36.375 [DEBUG] [Thread-161076] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:46.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:19:46.378 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:19:46.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:19:46.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 19, 25), 14.96, 35.95, 0.0, 20.31, 15.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:19:46.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:19:25
2025-09-29T16:19:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:19:47.211 [DEBUG] [Thread-161078] [transport.py] [_log()] starting thread (client mode): 0x2b9cc040
2025-09-29T16:19:47.211 [DEBUG] [Thread-161078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:19:47.231 [DEBUG] [Thread-161078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:19:47.231 [INFO] [Thread-161078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:19:47.234 [DEBUG] [Thread-161078] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:19:47.234 [DEBUG] [Thread-161078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] client lang: <none>
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] server lang: <none>
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] kex follows: False
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] Compression: none
2025-09-29T16:19:47.235 [DEBUG] [Thread-161078] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:19:47.254 [DEBUG] [Thread-161078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:19:47.254 [DEBUG] [Thread-161078] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:19:47.255 [DEBUG] [Thread-161078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:19:47.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:19:47.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:19:47.296 [DEBUG] [Thread-161078] [transport.py] [_log()] userauth is OK
2025-09-29T16:19:47.296 [DEBUG] [Thread-161078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:19:47.297 [DEBUG] [Thread-161078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:19:47.297 [DEBUG] [Thread-161078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:19:47.297 [DEBUG] [Thread-161078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:19:47.317 [INFO] [Thread-161078] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:19:47.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:19:47.971 [DEBUG] [Thread-161078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:19:47.971 [DEBUG] [Thread-161078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:19:47.971 [DEBUG] [Thread-161078] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:19:48.012 [DEBUG] [Thread-161078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:19:48.012 [DEBUG] [Thread-161078] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:19:48.015 [DEBUG] [Thread-161078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:19:48.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:19:48.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:19:48.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:19:48.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:19:48.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:19:48.038 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:19:48.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:19:48.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:19:48.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:19:48.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.596941 -999.00  +15.10  11.29     42   +2.40 1 1 1 1 1   887    0 12.61 -22.28 ----- 12.2 11.3 160.8 19.1 20.9 -28.5 20.3 -27.3 22.2 -28.4 23.2 -29.3
2025-09-29T16:19:48.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:19:48.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:19:48.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.596941
2025-09-29T16:19:48.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:19:48.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:19:48.040 [DEBUG] [Thread-161078] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:48.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:19:48.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:19:48.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:19:48.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:19:25', tmtdew=14.96, humidity=35.95, cloud=0.0, wind=20.31, temperature=15.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:19:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:19:48.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:19:48.135 [DEBUG] [Thread-161081] [transport.py] [_log()] starting thread (client mode): 0x2e38e470
2025-09-29T16:19:48.135 [DEBUG] [Thread-161081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:19:48.151 [DEBUG] [Thread-161081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:19:48.151 [INFO] [Thread-161081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:19:48.162 [DEBUG] [Thread-161081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] client lang: <none>
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] server lang: <none>
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] kex follows: False
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:19:48.163 [DEBUG] [Thread-161081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:19:48.164 [DEBUG] [Thread-161081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:19:48.164 [DEBUG] [Thread-161081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:19:48.164 [DEBUG] [Thread-161081] [transport.py] [_log()] Compression: none
2025-09-29T16:19:48.164 [DEBUG] [Thread-161081] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:19:48.224 [DEBUG] [Thread-161081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:19:48.225 [DEBUG] [Thread-161081] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:19:48.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:19:48.226 [DEBUG] [Thread-161081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:19:48.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:19:48.284 [DEBUG] [Thread-161081] [transport.py] [_log()] userauth is OK
2025-09-29T16:19:48.284 [DEBUG] [Thread-161081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:19:48.284 [DEBUG] [Thread-161081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:19:48.284 [DEBUG] [Thread-161081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:19:48.285 [DEBUG] [Thread-161081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:19:48.294 [DEBUG] [Thread-161083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:19:48.301 [INFO] [Thread-161081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:19:48.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:19:48.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:19:48.863 [DEBUG] [Thread-161084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:19:49.270 [DEBUG] [Thread-161081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:19:49.270 [DEBUG] [Thread-161081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:19:49.318 [DEBUG] [Thread-161081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:19:49.318 [DEBUG] [Thread-161081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:19:49.327 [DEBUG] [Thread-161081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:19:49.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:19:49.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:19:49.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:19:49.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:19:49.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:19:49.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:19:49.363 [DEBUG] [Thread-161081] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:19:59.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:19:59.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:19:59.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:19:59.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 19, 25), 14.96, 35.95, 0.0, 20.31, 15.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:19:59.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:19:25
2025-09-29T16:20:00.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:20:00.200 [DEBUG] [Thread-161085] [transport.py] [_log()] starting thread (client mode): 0x2e3619c0
2025-09-29T16:20:00.200 [DEBUG] [Thread-161085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:00.220 [DEBUG] [Thread-161085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:20:00.220 [INFO] [Thread-161085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:20:00.223 [DEBUG] [Thread-161085] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:00.224 [DEBUG] [Thread-161085] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:00.225 [DEBUG] [Thread-161085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:00.225 [DEBUG] [Thread-161085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:00.225 [DEBUG] [Thread-161085] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:00.225 [DEBUG] [Thread-161085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:00.225 [DEBUG] [Thread-161085] [transport.py] [_log()] Compression: none
2025-09-29T16:20:00.225 [DEBUG] [Thread-161085] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:00.242 [DEBUG] [Thread-161085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:00.242 [DEBUG] [Thread-161085] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:00.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:20:00.243 [DEBUG] [Thread-161085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:20:00.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:00.245 [DEBUG] [Thread-161085] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:00.245 [DEBUG] [Thread-161085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:00.245 [DEBUG] [Thread-161085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:00.245 [DEBUG] [Thread-161085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:20:00.245 [DEBUG] [Thread-161085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:00.269 [INFO] [Thread-161085] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:00.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:01.070 [DEBUG] [Thread-161085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:01.071 [DEBUG] [Thread-161085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:01.071 [DEBUG] [Thread-161085] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:20:01.111 [DEBUG] [Thread-161085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:01.111 [DEBUG] [Thread-161085] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:01.113 [DEBUG] [Thread-161085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:01.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:01.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:20:01.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:20:01.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:20:01.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:01.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:20:01.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:01.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:01.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:20:01.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.596941 -999.00  +15.10  11.29     42   +2.40 1 1 1 1 1   887    0 12.61 -22.28 ----- 12.2 11.3 160.8 19.1 20.9 -28.5 20.3 -27.3 22.2 -28.4 23.2 -29.3
2025-09-29T16:20:01.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:20:01.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:20:01.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.596941
2025-09-29T16:20:01.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:20:01.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:20:01.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:20:01.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:20:01.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:20:01.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:19:25', tmtdew=14.96, humidity=35.95, cloud=0.0, wind=20.31, temperature=15.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:19:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:20:01.133 [DEBUG] [Thread-161085] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:01.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:20:01.231 [DEBUG] [Thread-161088] [transport.py] [_log()] starting thread (client mode): 0x2b9cc040
2025-09-29T16:20:01.231 [DEBUG] [Thread-161088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:01.245 [DEBUG] [Thread-161088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:20:01.245 [INFO] [Thread-161088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:20:01.253 [DEBUG] [Thread-161088] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:01.253 [DEBUG] [Thread-161088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] Compression: none
2025-09-29T16:20:01.254 [DEBUG] [Thread-161088] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:01.312 [DEBUG] [Thread-161088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:01.313 [DEBUG] [Thread-161088] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:01.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:20:01.314 [DEBUG] [Thread-161088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:20:01.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:01.370 [DEBUG] [Thread-161088] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:01.370 [DEBUG] [Thread-161088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:01.370 [DEBUG] [Thread-161088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:01.370 [DEBUG] [Thread-161088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:20:01.371 [DEBUG] [Thread-161088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:01.389 [INFO] [Thread-161088] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:01.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:20:01.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:02.407 [DEBUG] [Thread-161088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:02.407 [DEBUG] [Thread-161088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:02.455 [DEBUG] [Thread-161088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:02.455 [DEBUG] [Thread-161088] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:02.464 [DEBUG] [Thread-161088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:02.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:02.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:20:02.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:20:02.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:02.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:02.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:02.499 [DEBUG] [Thread-161088] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:03.917 [DEBUG] [Thread-161090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:20:12.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:20:12.500 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:20:12.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:20:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 19, 57), 14.95, 36.09, 0.0, 16.99, 15.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:20:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:19:57
2025-09-29T16:20:13.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:20:13.377 [DEBUG] [Thread-161091] [transport.py] [_log()] starting thread (client mode): 0x2b968460
2025-09-29T16:20:13.377 [DEBUG] [Thread-161091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:13.398 [DEBUG] [Thread-161091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:20:13.398 [INFO] [Thread-161091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] Compression: none
2025-09-29T16:20:13.401 [DEBUG] [Thread-161091] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:13.418 [DEBUG] [Thread-161091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:13.418 [DEBUG] [Thread-161091] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:13.418 [DEBUG] [Thread-161091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:20:13.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:20:13.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:13.419 [DEBUG] [Thread-161091] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:13.419 [DEBUG] [Thread-161091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:13.419 [DEBUG] [Thread-161091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:13.419 [DEBUG] [Thread-161091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:20:13.419 [DEBUG] [Thread-161091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:13.428 [INFO] [Thread-161091] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:13.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:18.811 [DEBUG] [Thread-161091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:18.812 [DEBUG] [Thread-161091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:18.812 [DEBUG] [Thread-161091] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:20:18.852 [DEBUG] [Thread-161091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:18.852 [DEBUG] [Thread-161091] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:18.855 [DEBUG] [Thread-161091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:18.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:18.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:20:18.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:20:18.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:20:18.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:18.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:20:18.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:18.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:18.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:20:18.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.596941 -999.00  +15.10  11.29     42   +2.40 1 1 1 1 1   887    0 12.61 -22.28 ----- 12.2 11.3 160.8 19.1 20.9 -28.5 20.3 -27.3 22.2 -28.4 23.2 -29.3
2025-09-29T16:20:18.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:20:18.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:20:18.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.596941
2025-09-29T16:20:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:20:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:20:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:20:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:20:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:20:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:19:57', tmtdew=14.95, humidity=36.09, cloud=0.0, wind=16.99, temperature=15.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:19:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:20:18.886 [DEBUG] [Thread-161091] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:18.944 [DEBUG] [Thread-161094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:20:18.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:20:18.983 [DEBUG] [Thread-161095] [transport.py] [_log()] starting thread (client mode): 0x2e375d50
2025-09-29T16:20:18.983 [DEBUG] [Thread-161095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:18.998 [DEBUG] [Thread-161095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:20:18.999 [INFO] [Thread-161095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:20:19.007 [DEBUG] [Thread-161095] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:19.007 [DEBUG] [Thread-161095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:20:19.007 [DEBUG] [Thread-161095] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:19.007 [DEBUG] [Thread-161095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:19.007 [DEBUG] [Thread-161095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:19.007 [DEBUG] [Thread-161095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:19.008 [DEBUG] [Thread-161095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:19.009 [DEBUG] [Thread-161095] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:19.009 [DEBUG] [Thread-161095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:19.009 [DEBUG] [Thread-161095] [transport.py] [_log()] Compression: none
2025-09-29T16:20:19.009 [DEBUG] [Thread-161095] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:19.065 [DEBUG] [Thread-161095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:19.065 [DEBUG] [Thread-161095] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:19.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:20:19.067 [DEBUG] [Thread-161095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:20:19.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:19.120 [DEBUG] [Thread-161095] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:19.121 [DEBUG] [Thread-161095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:19.121 [DEBUG] [Thread-161095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:19.121 [DEBUG] [Thread-161095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:20:19.121 [DEBUG] [Thread-161095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:19.140 [INFO] [Thread-161095] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:19.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:20:19.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:20.097 [DEBUG] [Thread-161095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:20.098 [DEBUG] [Thread-161095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:20.146 [DEBUG] [Thread-161095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:20.146 [DEBUG] [Thread-161095] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:20.155 [DEBUG] [Thread-161095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:20.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:20.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:20:20.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:20:20.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:20.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:20.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:20.191 [DEBUG] [Thread-161095] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:20.265 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:20:20.266 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:20:30.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:20:30.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:20:30.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:20:30.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 19, 57), 14.95, 36.09, 0.0, 16.99, 15.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:20:30.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:19:57
2025-09-29T16:20:30.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:20:31.078 [DEBUG] [Thread-161097] [transport.py] [_log()] starting thread (client mode): 0x2b968d90
2025-09-29T16:20:31.079 [DEBUG] [Thread-161097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:31.100 [DEBUG] [Thread-161097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:20:31.100 [INFO] [Thread-161097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] Compression: none
2025-09-29T16:20:31.103 [DEBUG] [Thread-161097] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:31.119 [DEBUG] [Thread-161097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:31.119 [DEBUG] [Thread-161097] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:31.120 [DEBUG] [Thread-161097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:20:31.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:20:31.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:31.120 [DEBUG] [Thread-161097] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:31.120 [DEBUG] [Thread-161097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:31.120 [DEBUG] [Thread-161097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:31.120 [DEBUG] [Thread-161097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:20:31.120 [DEBUG] [Thread-161097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:31.135 [INFO] [Thread-161097] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:31.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:31.705 [DEBUG] [Thread-161097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:31.705 [DEBUG] [Thread-161097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:31.705 [DEBUG] [Thread-161097] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:20:31.745 [DEBUG] [Thread-161097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:31.745 [DEBUG] [Thread-161097] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:31.748 [DEBUG] [Thread-161097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:31.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:31.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:20:31.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:20:31.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:20:31.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:31.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:20:31.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.597288 -999.00  +15.20  13.44     42   +2.40 1 1 1 1 1   887    0 12.45 -20.61 ----- 12.6 13.4 168.0 25.6 20.9 -28.8 20.3 -29.0 22.3 -28.5 23.2 -29.8
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.597288
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:20:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:19:57', tmtdew=14.95, humidity=36.09, cloud=0.0, wind=16.99, temperature=15.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:20:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:20:31.768 [DEBUG] [Thread-161097] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:31.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:20:31.851 [DEBUG] [Thread-161100] [transport.py] [_log()] starting thread (client mode): 0x2e3df970
2025-09-29T16:20:31.851 [DEBUG] [Thread-161100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:31.864 [DEBUG] [Thread-161100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:20:31.865 [INFO] [Thread-161100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:31.872 [DEBUG] [Thread-161100] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:31.873 [DEBUG] [Thread-161100] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:31.873 [DEBUG] [Thread-161100] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:31.873 [DEBUG] [Thread-161100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:31.873 [DEBUG] [Thread-161100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:31.873 [DEBUG] [Thread-161100] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:31.873 [DEBUG] [Thread-161100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:31.873 [DEBUG] [Thread-161100] [transport.py] [_log()] Compression: none
2025-09-29T16:20:31.873 [DEBUG] [Thread-161100] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:31.927 [DEBUG] [Thread-161100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:31.928 [DEBUG] [Thread-161100] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:31.928 [DEBUG] [Thread-161100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:20:31.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:20:31.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:31.984 [DEBUG] [Thread-161100] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:31.985 [DEBUG] [Thread-161100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:31.985 [DEBUG] [Thread-161100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:31.985 [DEBUG] [Thread-161100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:20:31.985 [DEBUG] [Thread-161100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:32.003 [INFO] [Thread-161100] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:32.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:20:32.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:33.021 [DEBUG] [Thread-161100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:33.021 [DEBUG] [Thread-161100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:33.069 [DEBUG] [Thread-161100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:33.069 [DEBUG] [Thread-161100] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:33.078 [DEBUG] [Thread-161100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:33.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:33.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:20:33.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:20:33.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:33.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:33.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:33.113 [DEBUG] [Thread-161100] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:33.978 [DEBUG] [Thread-161102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:20:43.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:20:43.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:20:43.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:20:43.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 20, 29), 14.89, 36.24, 0.0, 19.23, 15.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:20:43.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:20:29
2025-09-29T16:20:43.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:20:43.950 [DEBUG] [Thread-161103] [transport.py] [_log()] starting thread (client mode): 0x2e3c3460
2025-09-29T16:20:43.950 [DEBUG] [Thread-161103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:43.974 [DEBUG] [Thread-161103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:20:43.975 [INFO] [Thread-161103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:20:43.978 [DEBUG] [Thread-161103] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:43.978 [DEBUG] [Thread-161103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:20:43.978 [DEBUG] [Thread-161103] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:43.978 [DEBUG] [Thread-161103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:43.978 [DEBUG] [Thread-161103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:43.978 [DEBUG] [Thread-161103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:43.978 [DEBUG] [Thread-161103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] Compression: none
2025-09-29T16:20:43.979 [DEBUG] [Thread-161103] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:43.999 [DEBUG] [Thread-161103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:44.000 [DEBUG] [Thread-161103] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:44.000 [DEBUG] [Thread-161103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:20:44.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:20:44.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:44.003 [DEBUG] [Thread-161103] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:44.003 [DEBUG] [Thread-161103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:44.003 [DEBUG] [Thread-161103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:44.003 [DEBUG] [Thread-161103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:20:44.003 [DEBUG] [Thread-161103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:44.039 [INFO] [Thread-161103] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:44.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:44.779 [DEBUG] [Thread-161103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:44.779 [DEBUG] [Thread-161103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:44.779 [DEBUG] [Thread-161103] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:20:44.826 [DEBUG] [Thread-161103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:44.827 [DEBUG] [Thread-161103] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:44.830 [DEBUG] [Thread-161103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:44.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:44.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:20:44.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:20:44.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:20:44.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:44.848 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:20:44.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:44.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:44.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:20:44.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.597288 -999.00  +15.20  13.44     42   +2.40 1 1 1 1 1   887    0 12.45 -20.61 ----- 12.6 13.4 168.0 25.6 20.9 -28.8 20.3 -29.0 22.3 -28.5 23.2 -29.8
2025-09-29T16:20:44.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:20:44.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:20:44.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.597288
2025-09-29T16:20:44.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:20:44.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:20:44.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:20:44.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:20:44.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:20:44.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:20:29', tmtdew=14.89, humidity=36.24, cloud=0.0, wind=19.23, temperature=15.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:20:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:20:44.851 [DEBUG] [Thread-161103] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:44.935 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:20:44.947 [DEBUG] [Thread-161106] [transport.py] [_log()] starting thread (client mode): 0x2e3c18d0
2025-09-29T16:20:44.947 [DEBUG] [Thread-161106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:44.961 [DEBUG] [Thread-161106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:20:44.962 [INFO] [Thread-161106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:20:44.969 [DEBUG] [Thread-161106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:44.969 [DEBUG] [Thread-161106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] Compression: none
2025-09-29T16:20:44.970 [DEBUG] [Thread-161106] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:45.028 [DEBUG] [Thread-161106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:45.028 [DEBUG] [Thread-161106] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:45.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:20:45.029 [DEBUG] [Thread-161106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:20:45.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:45.084 [DEBUG] [Thread-161106] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:45.085 [DEBUG] [Thread-161106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:45.085 [DEBUG] [Thread-161106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:45.085 [DEBUG] [Thread-161106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:20:45.085 [DEBUG] [Thread-161106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:45.104 [INFO] [Thread-161106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:45.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:20:45.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:46.101 [DEBUG] [Thread-161106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:46.101 [DEBUG] [Thread-161106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:46.149 [DEBUG] [Thread-161106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:46.149 [DEBUG] [Thread-161106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:46.158 [DEBUG] [Thread-161106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:46.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:46.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:20:46.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:20:46.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:46.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:46.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:46.192 [DEBUG] [Thread-161106] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:48.325 [DEBUG] [Thread-161108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:20:49.023 [DEBUG] [Thread-161109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:20:56.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:20:56.195 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:20:56.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:20:56.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 20, 29), 14.89, 36.24, 0.0, 19.23, 15.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:20:56.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:20:29
2025-09-29T16:20:56.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:20:57.015 [DEBUG] [Thread-161110] [transport.py] [_log()] starting thread (client mode): 0x30dde5f0
2025-09-29T16:20:57.015 [DEBUG] [Thread-161110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:57.035 [DEBUG] [Thread-161110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:20:57.035 [INFO] [Thread-161110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:57.038 [DEBUG] [Thread-161110] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:57.039 [DEBUG] [Thread-161110] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:57.039 [DEBUG] [Thread-161110] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:57.039 [DEBUG] [Thread-161110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:57.039 [DEBUG] [Thread-161110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:57.039 [DEBUG] [Thread-161110] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:57.039 [DEBUG] [Thread-161110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:57.039 [DEBUG] [Thread-161110] [transport.py] [_log()] Compression: none
2025-09-29T16:20:57.039 [DEBUG] [Thread-161110] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:57.056 [DEBUG] [Thread-161110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:57.056 [DEBUG] [Thread-161110] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:57.056 [DEBUG] [Thread-161110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:20:57.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:20:57.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:57.100 [DEBUG] [Thread-161110] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:57.100 [DEBUG] [Thread-161110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:57.100 [DEBUG] [Thread-161110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:57.100 [DEBUG] [Thread-161110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:20:57.100 [DEBUG] [Thread-161110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:57.118 [INFO] [Thread-161110] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:57.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:57.726 [DEBUG] [Thread-161110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:57.726 [DEBUG] [Thread-161110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:57.727 [DEBUG] [Thread-161110] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:20:57.767 [DEBUG] [Thread-161110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:57.768 [DEBUG] [Thread-161110] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:57.770 [DEBUG] [Thread-161110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:57.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:57.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:20:57.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:20:57.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:20:57.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:57.789 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:20:57.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:57.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:57.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:20:57.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.597636 -999.00  +15.30  13.77     41   +2.40 1 1 1 1 1   887    0 12.53 -17.42 ----- 15.7 13.8 160.0 21.7 20.9 -28.6 20.1 -30.6 22.2 -28.7 23.1 -30.0
2025-09-29T16:20:57.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:20:57.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:20:57.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.597636
2025-09-29T16:20:57.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:20:57.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:20:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:20:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:20:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:20:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:20:29', tmtdew=14.89, humidity=36.24, cloud=0.0, wind=19.23, temperature=15.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:20:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:20:57.792 [DEBUG] [Thread-161110] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:20:57.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:20:57.886 [DEBUG] [Thread-161113] [transport.py] [_log()] starting thread (client mode): 0x2e38ca90
2025-09-29T16:20:57.887 [DEBUG] [Thread-161113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:20:57.902 [DEBUG] [Thread-161113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:20:57.902 [INFO] [Thread-161113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:20:57.909 [DEBUG] [Thread-161113] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:20:57.909 [DEBUG] [Thread-161113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:20:57.909 [DEBUG] [Thread-161113] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] client lang: <none>
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] server lang: <none>
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] kex follows: False
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] Compression: none
2025-09-29T16:20:57.910 [DEBUG] [Thread-161113] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:20:57.968 [DEBUG] [Thread-161113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:20:57.969 [DEBUG] [Thread-161113] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:20:57.969 [DEBUG] [Thread-161113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:20:57.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:20:57.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:20:58.024 [DEBUG] [Thread-161113] [transport.py] [_log()] userauth is OK
2025-09-29T16:20:58.025 [DEBUG] [Thread-161113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:20:58.025 [DEBUG] [Thread-161113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:20:58.025 [DEBUG] [Thread-161113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:20:58.025 [DEBUG] [Thread-161113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:20:58.043 [INFO] [Thread-161113] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:20:58.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:20:58.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:20:58.998 [DEBUG] [Thread-161113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:20:58.999 [DEBUG] [Thread-161113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:20:59.046 [DEBUG] [Thread-161113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:20:59.047 [DEBUG] [Thread-161113] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:20:59.056 [DEBUG] [Thread-161113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:20:59.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:20:59.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:20:59.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:20:59.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:20:59.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:20:59.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:20:59.091 [DEBUG] [Thread-161113] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:21:04.058 [DEBUG] [Thread-161115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:21:09.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:21:09.086 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:21:09.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:21:09.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 21, 1), 14.9, 36.22, 0.0, 17.38, 15.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:21:09.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:21:01
2025-09-29T16:21:09.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:21:09.906 [DEBUG] [Thread-161116] [transport.py] [_log()] starting thread (client mode): 0x2e3c3af0
2025-09-29T16:21:09.906 [DEBUG] [Thread-161116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:21:09.927 [DEBUG] [Thread-161116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:21:09.927 [INFO] [Thread-161116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] client lang: <none>
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] server lang: <none>
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] kex follows: False
2025-09-29T16:21:09.930 [DEBUG] [Thread-161116] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:21:09.931 [DEBUG] [Thread-161116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:21:09.931 [DEBUG] [Thread-161116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:21:09.931 [DEBUG] [Thread-161116] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:21:09.931 [DEBUG] [Thread-161116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:21:09.931 [DEBUG] [Thread-161116] [transport.py] [_log()] Compression: none
2025-09-29T16:21:09.931 [DEBUG] [Thread-161116] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:21:09.949 [DEBUG] [Thread-161116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:21:09.950 [DEBUG] [Thread-161116] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:21:09.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:21:09.950 [DEBUG] [Thread-161116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:21:09.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:21:09.952 [DEBUG] [Thread-161116] [transport.py] [_log()] userauth is OK
2025-09-29T16:21:09.952 [DEBUG] [Thread-161116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:21:09.952 [DEBUG] [Thread-161116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:21:09.953 [DEBUG] [Thread-161116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:21:09.953 [DEBUG] [Thread-161116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:21:09.976 [INFO] [Thread-161116] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:21:09.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:21:10.719 [DEBUG] [Thread-161116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:21:10.723 [DEBUG] [Thread-161116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:21:10.724 [DEBUG] [Thread-161116] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:21:10.760 [DEBUG] [Thread-161116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:21:10.760 [DEBUG] [Thread-161116] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:21:10.763 [DEBUG] [Thread-161116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:21:10.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:21:10.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:21:10.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:21:10.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:21:10.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:21:10.780 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:21:10.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:21:10.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:21:10.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:21:10.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.597636 -999.00  +15.30  13.77     41   +2.40 1 1 1 1 1   887    0 12.53 -17.42 ----- 15.7 13.8 160.0 21.7 20.9 -28.6 20.1 -30.6 22.2 -28.7 23.1 -30.0
2025-09-29T16:21:10.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:21:10.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:21:10.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.597636
2025-09-29T16:21:10.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:21:10.781 [DEBUG] [Thread-161116] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:21:10.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:21:10.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:21:10.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:21:10.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:21:10.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:21:01', tmtdew=14.9, humidity=36.22, cloud=0.0, wind=17.38, temperature=15.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:20:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:21:10.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:21:10.881 [DEBUG] [Thread-161119] [transport.py] [_log()] starting thread (client mode): 0x2e3f8340
2025-09-29T16:21:10.881 [DEBUG] [Thread-161119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:21:10.896 [DEBUG] [Thread-161119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:21:10.897 [INFO] [Thread-161119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] client lang: <none>
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] server lang: <none>
2025-09-29T16:21:10.907 [DEBUG] [Thread-161119] [transport.py] [_log()] kex follows: False
2025-09-29T16:21:10.908 [DEBUG] [Thread-161119] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:21:10.908 [DEBUG] [Thread-161119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:21:10.908 [DEBUG] [Thread-161119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:21:10.908 [DEBUG] [Thread-161119] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:21:10.908 [DEBUG] [Thread-161119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:21:10.908 [DEBUG] [Thread-161119] [transport.py] [_log()] Compression: none
2025-09-29T16:21:10.908 [DEBUG] [Thread-161119] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:21:10.965 [DEBUG] [Thread-161119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:21:10.966 [DEBUG] [Thread-161119] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:21:10.966 [DEBUG] [Thread-161119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:21:10.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:21:10.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:21:11.024 [DEBUG] [Thread-161119] [transport.py] [_log()] userauth is OK
2025-09-29T16:21:11.025 [DEBUG] [Thread-161119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:21:11.025 [DEBUG] [Thread-161119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:21:11.025 [DEBUG] [Thread-161119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:21:11.025 [DEBUG] [Thread-161119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:21:11.047 [INFO] [Thread-161119] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:21:11.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:21:11.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:21:12.052 [DEBUG] [Thread-161119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:21:12.052 [DEBUG] [Thread-161119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:21:12.100 [DEBUG] [Thread-161119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:21:12.100 [DEBUG] [Thread-161119] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:21:12.109 [DEBUG] [Thread-161119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:21:12.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:21:12.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:21:12.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:21:12.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:21:12.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:21:12.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:21:12.142 [DEBUG] [Thread-161119] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:21:19.105 [DEBUG] [Thread-161121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:21:20.406 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:21:20.407 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:21:22.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:21:22.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:21:22.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:21:22.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 21, 1), 14.9, 36.22, 0.0, 17.38, 15.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:21:22.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:21:01
2025-09-29T16:21:22.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:21:22.959 [DEBUG] [Thread-161122] [transport.py] [_log()] starting thread (client mode): 0x30ddfeb0
2025-09-29T16:21:22.959 [DEBUG] [Thread-161122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:21:22.979 [DEBUG] [Thread-161122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:21:22.979 [INFO] [Thread-161122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:21:22.982 [DEBUG] [Thread-161122] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:21:22.982 [DEBUG] [Thread-161122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:21:22.982 [DEBUG] [Thread-161122] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:21:22.982 [DEBUG] [Thread-161122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] client lang: <none>
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] server lang: <none>
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] kex follows: False
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:21:22.983 [DEBUG] [Thread-161122] [transport.py] [_log()] Compression: none
2025-09-29T16:21:22.984 [DEBUG] [Thread-161122] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:21:23.002 [DEBUG] [Thread-161122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:21:23.003 [DEBUG] [Thread-161122] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:21:23.003 [DEBUG] [Thread-161122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:21:23.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:21:23.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:21:23.005 [DEBUG] [Thread-161122] [transport.py] [_log()] userauth is OK
2025-09-29T16:21:23.005 [DEBUG] [Thread-161122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:21:23.005 [DEBUG] [Thread-161122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:21:23.006 [DEBUG] [Thread-161122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:21:23.006 [DEBUG] [Thread-161122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:21:23.029 [INFO] [Thread-161122] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:21:23.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:21:23.737 [DEBUG] [Thread-161122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:21:23.737 [DEBUG] [Thread-161122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:21:23.738 [DEBUG] [Thread-161122] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:21:23.778 [DEBUG] [Thread-161122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:21:23.778 [DEBUG] [Thread-161122] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:21:23.780 [DEBUG] [Thread-161122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:21:23.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:21:23.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:21:23.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:21:23.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:21:23.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:21:23.793 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:21:23.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:21:23.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:21:23.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:21:23.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.597636 -999.00  +15.30  13.77     41   +2.40 1 1 1 1 1   887    0 12.53 -17.42 ----- 15.7 13.8 160.0 21.7 20.9 -28.6 20.1 -30.6 22.2 -28.7 23.1 -30.0
2025-09-29T16:21:23.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:21:23.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:21:23.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.597636
2025-09-29T16:21:23.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:21:23.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:21:23.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:21:23.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:21:23.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:21:23.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:21:01', tmtdew=14.9, humidity=36.22, cloud=0.0, wind=17.38, temperature=15.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:20:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:21:23.795 [DEBUG] [Thread-161122] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:21:23.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:21:23.887 [DEBUG] [Thread-161125] [transport.py] [_log()] starting thread (client mode): 0x2e38ceb0
2025-09-29T16:21:23.887 [DEBUG] [Thread-161125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:21:23.907 [DEBUG] [Thread-161125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:21:23.907 [INFO] [Thread-161125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:21:23.914 [DEBUG] [Thread-161125] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] client lang: <none>
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] server lang: <none>
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] kex follows: False
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:21:23.915 [DEBUG] [Thread-161125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:21:23.916 [DEBUG] [Thread-161125] [transport.py] [_log()] Compression: none
2025-09-29T16:21:23.916 [DEBUG] [Thread-161125] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:21:23.972 [DEBUG] [Thread-161125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:21:23.973 [DEBUG] [Thread-161125] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:21:23.973 [DEBUG] [Thread-161125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:21:23.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:21:23.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:21:24.028 [DEBUG] [Thread-161125] [transport.py] [_log()] userauth is OK
2025-09-29T16:21:24.029 [DEBUG] [Thread-161125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:21:24.029 [DEBUG] [Thread-161125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:21:24.029 [DEBUG] [Thread-161125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:21:24.029 [DEBUG] [Thread-161125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:21:24.048 [INFO] [Thread-161125] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:21:24.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:21:24.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:21:25.037 [DEBUG] [Thread-161125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:21:25.038 [DEBUG] [Thread-161125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:21:25.085 [DEBUG] [Thread-161125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:21:25.085 [DEBUG] [Thread-161125] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:21:25.094 [DEBUG] [Thread-161125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:21:25.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:21:25.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:21:25.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:21:25.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:21:25.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:21:25.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:21:25.128 [DEBUG] [Thread-161125] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:21:34.134 [DEBUG] [Thread-161127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:21:35.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:21:35.130 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:21:35.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:21:35.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 21, 1), 14.9, 36.22, 0.0, 17.38, 15.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:21:35.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:21:01
2025-09-29T16:21:35.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:21:35.993 [DEBUG] [Thread-161128] [transport.py] [_log()] starting thread (client mode): 0x2e38ff40
2025-09-29T16:21:35.993 [DEBUG] [Thread-161128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:21:36.013 [DEBUG] [Thread-161128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:21:36.013 [INFO] [Thread-161128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] client lang: <none>
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] server lang: <none>
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] kex follows: False
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:21:36.016 [DEBUG] [Thread-161128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:21:36.017 [DEBUG] [Thread-161128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:21:36.017 [DEBUG] [Thread-161128] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:21:36.017 [DEBUG] [Thread-161128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:21:36.017 [DEBUG] [Thread-161128] [transport.py] [_log()] Compression: none
2025-09-29T16:21:36.017 [DEBUG] [Thread-161128] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:21:36.031 [DEBUG] [Thread-161128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:21:36.032 [DEBUG] [Thread-161128] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:21:36.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:21:36.032 [DEBUG] [Thread-161128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:21:36.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:21:36.034 [DEBUG] [Thread-161128] [transport.py] [_log()] userauth is OK
2025-09-29T16:21:36.034 [DEBUG] [Thread-161128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:21:36.034 [DEBUG] [Thread-161128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:21:36.034 [DEBUG] [Thread-161128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:21:36.034 [DEBUG] [Thread-161128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:21:36.058 [INFO] [Thread-161128] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:21:36.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:21:36.654 [DEBUG] [Thread-161128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:21:36.654 [DEBUG] [Thread-161128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:21:36.654 [DEBUG] [Thread-161128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:21:36.695 [DEBUG] [Thread-161128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:21:36.695 [DEBUG] [Thread-161128] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:21:36.701 [DEBUG] [Thread-161128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:21:36.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:21:36.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:21:36.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:21:36.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:21:36.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:21:36.718 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:21:36.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:21:36.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:21:36.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:21:36.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.597984 -999.00  +15.10  10.54     42   +2.30 1 1 1 1 1   887    0 12.77 -14.64 ----- 8.6 10.5 168.6 21.0 20.9 -28.8 20.2 -28.0 22.2 -28.0 23.2 -29.8
2025-09-29T16:21:36.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:21:36.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:21:36.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.597984
2025-09-29T16:21:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:21:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:21:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:21:36.721 [DEBUG] [Thread-161128] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:21:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:21:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:21:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:21:01', tmtdew=14.9, humidity=36.22, cloud=0.0, wind=17.38, temperature=15.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:21:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:21:36.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:21:36.820 [DEBUG] [Thread-161131] [transport.py] [_log()] starting thread (client mode): 0x2b969840
2025-09-29T16:21:36.820 [DEBUG] [Thread-161131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:21:36.834 [DEBUG] [Thread-161131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:21:36.834 [INFO] [Thread-161131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:21:36.841 [DEBUG] [Thread-161131] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] client lang: <none>
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] server lang: <none>
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] kex follows: False
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] Compression: none
2025-09-29T16:21:36.842 [DEBUG] [Thread-161131] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:21:36.900 [DEBUG] [Thread-161131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:21:36.900 [DEBUG] [Thread-161131] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:21:36.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:21:36.902 [DEBUG] [Thread-161131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:21:36.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:21:36.956 [DEBUG] [Thread-161131] [transport.py] [_log()] userauth is OK
2025-09-29T16:21:36.956 [DEBUG] [Thread-161131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:21:36.956 [DEBUG] [Thread-161131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:21:36.956 [DEBUG] [Thread-161131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:21:36.956 [DEBUG] [Thread-161131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:21:36.970 [INFO] [Thread-161131] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:21:36.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:21:36.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:21:37.934 [DEBUG] [Thread-161131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:21:37.934 [DEBUG] [Thread-161131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:21:37.982 [DEBUG] [Thread-161131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:21:37.982 [DEBUG] [Thread-161131] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:21:37.990 [DEBUG] [Thread-161131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:21:37.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:21:37.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:21:38.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:21:38.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:21:38.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:21:38.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:21:38.024 [DEBUG] [Thread-161131] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:21:48.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:21:48.027 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:21:48.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:21:48.352 [DEBUG] [Thread-161133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:21:48.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 21, 33), 15.01, 35.97, 0.0, 17.87, 15.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:21:48.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:21:33
2025-09-29T16:21:48.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:21:48.862 [DEBUG] [Thread-161134] [transport.py] [_log()] starting thread (client mode): 0x2b91d3f0
2025-09-29T16:21:48.862 [DEBUG] [Thread-161134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:21:48.882 [DEBUG] [Thread-161134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:21:48.882 [INFO] [Thread-161134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:21:48.885 [DEBUG] [Thread-161134] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] client lang: <none>
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] server lang: <none>
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] kex follows: False
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:21:48.886 [DEBUG] [Thread-161134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:21:48.887 [DEBUG] [Thread-161134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:21:48.887 [DEBUG] [Thread-161134] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:21:48.887 [DEBUG] [Thread-161134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:21:48.887 [DEBUG] [Thread-161134] [transport.py] [_log()] Compression: none
2025-09-29T16:21:48.887 [DEBUG] [Thread-161134] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:21:48.905 [DEBUG] [Thread-161134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:21:48.906 [DEBUG] [Thread-161134] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:21:48.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:21:48.907 [DEBUG] [Thread-161134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:21:48.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:21:48.909 [DEBUG] [Thread-161134] [transport.py] [_log()] userauth is OK
2025-09-29T16:21:48.909 [DEBUG] [Thread-161134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:21:48.909 [DEBUG] [Thread-161134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:21:48.909 [DEBUG] [Thread-161134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:21:48.909 [DEBUG] [Thread-161134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:21:48.926 [INFO] [Thread-161134] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:21:48.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:21:49.162 [DEBUG] [Thread-161136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:21:49.650 [DEBUG] [Thread-161134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:21:49.651 [DEBUG] [Thread-161134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:21:49.651 [DEBUG] [Thread-161134] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:21:49.691 [DEBUG] [Thread-161134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:21:49.691 [DEBUG] [Thread-161134] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:21:49.693 [DEBUG] [Thread-161134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:21:49.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:21:49.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:21:49.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:21:49.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:21:49.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:21:49.708 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:21:49.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:21:49.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:21:49.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:21:49.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.597984 -999.00  +15.10  10.54     42   +2.30 1 1 1 1 1   887    0 12.77 -14.64 ----- 8.6 10.5 168.6 21.0 20.9 -28.8 20.2 -28.0 22.2 -28.0 23.2 -29.8
2025-09-29T16:21:49.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:21:49.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:21:49.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.597984
2025-09-29T16:21:49.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:21:49.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:21:49.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:21:49.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:21:49.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:21:49.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:21:33', tmtdew=15.01, humidity=35.97, cloud=0.0, wind=17.87, temperature=15.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:21:05.818', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:21:49.711 [DEBUG] [Thread-161134] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:21:49.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:21:49.805 [DEBUG] [Thread-161138] [transport.py] [_log()] starting thread (client mode): 0x2e38e470
2025-09-29T16:21:49.805 [DEBUG] [Thread-161138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:21:49.820 [DEBUG] [Thread-161138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:21:49.820 [INFO] [Thread-161138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:21:49.827 [DEBUG] [Thread-161138] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] client lang: <none>
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] server lang: <none>
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] kex follows: False
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:21:49.828 [DEBUG] [Thread-161138] [transport.py] [_log()] Compression: none
2025-09-29T16:21:49.829 [DEBUG] [Thread-161138] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:21:49.884 [DEBUG] [Thread-161138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:21:49.884 [DEBUG] [Thread-161138] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:21:49.885 [DEBUG] [Thread-161138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:21:49.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:21:49.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:21:49.940 [DEBUG] [Thread-161138] [transport.py] [_log()] userauth is OK
2025-09-29T16:21:49.941 [DEBUG] [Thread-161138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:21:49.941 [DEBUG] [Thread-161138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:21:49.941 [DEBUG] [Thread-161138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:21:49.941 [DEBUG] [Thread-161138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:21:49.963 [INFO] [Thread-161138] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:21:49.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:21:49.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:21:50.988 [DEBUG] [Thread-161138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:21:50.989 [DEBUG] [Thread-161138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:21:51.036 [DEBUG] [Thread-161138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:21:51.036 [DEBUG] [Thread-161138] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:21:51.045 [DEBUG] [Thread-161138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:21:51.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:21:51.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:21:51.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:21:51.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:21:51.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:21:51.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:21:51.081 [DEBUG] [Thread-161138] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:01.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:22:01.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:22:01.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:22:01.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 21, 33), 15.01, 35.97, 0.0, 17.87, 15.45, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:22:01.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:21:33
2025-09-29T16:22:01.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:22:01.932 [DEBUG] [Thread-161140] [transport.py] [_log()] starting thread (client mode): 0x2e361930
2025-09-29T16:22:01.932 [DEBUG] [Thread-161140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:01.952 [DEBUG] [Thread-161140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:22:01.953 [INFO] [Thread-161140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:22:01.956 [DEBUG] [Thread-161140] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:01.956 [DEBUG] [Thread-161140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:22:01.956 [DEBUG] [Thread-161140] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:01.956 [DEBUG] [Thread-161140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:01.956 [DEBUG] [Thread-161140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:01.956 [DEBUG] [Thread-161140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:01.956 [DEBUG] [Thread-161140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:01.956 [DEBUG] [Thread-161140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] Compression: none
2025-09-29T16:22:01.957 [DEBUG] [Thread-161140] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:01.974 [DEBUG] [Thread-161140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:01.975 [DEBUG] [Thread-161140] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:01.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:22:01.976 [DEBUG] [Thread-161140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:22:01.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:01.978 [DEBUG] [Thread-161140] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:01.978 [DEBUG] [Thread-161140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:01.978 [DEBUG] [Thread-161140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:01.978 [DEBUG] [Thread-161140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:22:01.978 [DEBUG] [Thread-161140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:01.996 [INFO] [Thread-161140] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:01.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:02.633 [DEBUG] [Thread-161140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:02.633 [DEBUG] [Thread-161140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:02.633 [DEBUG] [Thread-161140] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:22:02.674 [DEBUG] [Thread-161140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:02.674 [DEBUG] [Thread-161140] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:02.676 [DEBUG] [Thread-161140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:02.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:02.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:22:02.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:22:02.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:22:02.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:02.692 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:22:02.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.598331 -999.00  +15.20  21.37     41   +2.20 1 1 1 1 1   887    0 12.70 -13.99 ----- 17.2 21.4 174.2 24.5 21.0 -28.4 20.2 -30.5 22.2 -28.6 23.2 -29.7
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.598331
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:22:02.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:21:33', tmtdew=15.01, humidity=35.97, cloud=0.0, wind=17.87, temperature=15.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:21:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:22:02.693 [DEBUG] [Thread-161140] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:02.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:22:02.775 [DEBUG] [Thread-161143] [transport.py] [_log()] starting thread (client mode): 0x2b94f280
2025-09-29T16:22:02.775 [DEBUG] [Thread-161143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:02.790 [DEBUG] [Thread-161143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:22:02.791 [INFO] [Thread-161143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:22:02.798 [DEBUG] [Thread-161143] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:02.798 [DEBUG] [Thread-161143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:22:02.798 [DEBUG] [Thread-161143] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:02.799 [DEBUG] [Thread-161143] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:02.800 [DEBUG] [Thread-161143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:02.800 [DEBUG] [Thread-161143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:02.800 [DEBUG] [Thread-161143] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:02.800 [DEBUG] [Thread-161143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:02.800 [DEBUG] [Thread-161143] [transport.py] [_log()] Compression: none
2025-09-29T16:22:02.800 [DEBUG] [Thread-161143] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:02.857 [DEBUG] [Thread-161143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:02.857 [DEBUG] [Thread-161143] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:02.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:22:02.858 [DEBUG] [Thread-161143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:22:02.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:02.912 [DEBUG] [Thread-161143] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:02.912 [DEBUG] [Thread-161143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:02.912 [DEBUG] [Thread-161143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:02.912 [DEBUG] [Thread-161143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:22:02.912 [DEBUG] [Thread-161143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:02.926 [INFO] [Thread-161143] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:02.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:22:02.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:03.927 [DEBUG] [Thread-161143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:03.927 [DEBUG] [Thread-161143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:03.974 [DEBUG] [Thread-161143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:03.974 [DEBUG] [Thread-161143] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:03.983 [DEBUG] [Thread-161143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:03.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:03.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:22:03.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:22:04.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:04.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:04.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:04.015 [DEBUG] [Thread-161143] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:04.199 [DEBUG] [Thread-161145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:22:14.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:22:14.018 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:22:14.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:22:14.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 22, 5), 15.11, 35.74, 0.0, 19.88, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:22:14.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:22:05
2025-09-29T16:22:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:22:14.850 [DEBUG] [Thread-161146] [transport.py] [_log()] starting thread (client mode): 0x2b91eec0
2025-09-29T16:22:14.850 [DEBUG] [Thread-161146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:14.874 [DEBUG] [Thread-161146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:22:14.874 [INFO] [Thread-161146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:14.878 [DEBUG] [Thread-161146] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:14.879 [DEBUG] [Thread-161146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:14.879 [DEBUG] [Thread-161146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:14.879 [DEBUG] [Thread-161146] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:14.879 [DEBUG] [Thread-161146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:14.879 [DEBUG] [Thread-161146] [transport.py] [_log()] Compression: none
2025-09-29T16:22:14.879 [DEBUG] [Thread-161146] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:14.897 [DEBUG] [Thread-161146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:14.897 [DEBUG] [Thread-161146] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:14.898 [DEBUG] [Thread-161146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:22:14.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:22:14.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:14.900 [DEBUG] [Thread-161146] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:14.900 [DEBUG] [Thread-161146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:14.900 [DEBUG] [Thread-161146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:14.900 [DEBUG] [Thread-161146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:22:14.900 [DEBUG] [Thread-161146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:14.924 [INFO] [Thread-161146] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:14.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:15.659 [DEBUG] [Thread-161146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:15.659 [DEBUG] [Thread-161146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:15.660 [DEBUG] [Thread-161146] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:22:15.701 [DEBUG] [Thread-161146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:15.701 [DEBUG] [Thread-161146] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:15.702 [DEBUG] [Thread-161146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:15.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:15.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:22:15.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:22:15.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:22:15.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:15.714 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:22:15.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:15.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.598331 -999.00  +15.20  21.37     41   +2.20 1 1 1 1 1   887    0 12.70 -13.99 ----- 17.2 21.4 174.2 24.5 21.0 -28.4 20.2 -30.5 22.2 -28.6 23.2 -29.7
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.598331
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:22:15.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:22:05', tmtdew=15.11, humidity=35.74, cloud=0.0, wind=19.88, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:21:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:22:15.716 [DEBUG] [Thread-161146] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:15.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:22:15.797 [DEBUG] [Thread-161149] [transport.py] [_log()] starting thread (client mode): 0x2b91d9c0
2025-09-29T16:22:15.797 [DEBUG] [Thread-161149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:15.811 [DEBUG] [Thread-161149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:22:15.812 [INFO] [Thread-161149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:22:15.819 [DEBUG] [Thread-161149] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:15.819 [DEBUG] [Thread-161149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] Compression: none
2025-09-29T16:22:15.820 [DEBUG] [Thread-161149] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:15.876 [DEBUG] [Thread-161149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:15.877 [DEBUG] [Thread-161149] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:15.877 [DEBUG] [Thread-161149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:22:15.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:22:15.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:15.933 [DEBUG] [Thread-161149] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:15.933 [DEBUG] [Thread-161149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:15.933 [DEBUG] [Thread-161149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:15.933 [DEBUG] [Thread-161149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:22:15.933 [DEBUG] [Thread-161149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:15.952 [INFO] [Thread-161149] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:15.952 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:22:15.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:16.929 [DEBUG] [Thread-161149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:16.930 [DEBUG] [Thread-161149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:16.979 [DEBUG] [Thread-161149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:16.979 [DEBUG] [Thread-161149] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:16.991 [DEBUG] [Thread-161149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:17.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:17.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:22:17.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:22:17.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:17.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:17.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:17.037 [DEBUG] [Thread-161149] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:19.236 [DEBUG] [Thread-161151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:22:20.546 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:22:20.548 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:22:27.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:22:27.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:22:27.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:22:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 22, 5), 15.11, 35.74, 0.0, 19.88, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:22:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:22:05
2025-09-29T16:22:27.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:22:27.869 [DEBUG] [Thread-161152] [transport.py] [_log()] starting thread (client mode): 0x2b91d7b0
2025-09-29T16:22:27.869 [DEBUG] [Thread-161152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:27.890 [DEBUG] [Thread-161152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:22:27.890 [INFO] [Thread-161152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:22:27.893 [DEBUG] [Thread-161152] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:27.893 [DEBUG] [Thread-161152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:22:27.893 [DEBUG] [Thread-161152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:27.893 [DEBUG] [Thread-161152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:27.893 [DEBUG] [Thread-161152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:27.893 [DEBUG] [Thread-161152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:27.893 [DEBUG] [Thread-161152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:27.893 [DEBUG] [Thread-161152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] Compression: none
2025-09-29T16:22:27.894 [DEBUG] [Thread-161152] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:27.913 [DEBUG] [Thread-161152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:27.913 [DEBUG] [Thread-161152] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:27.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:22:27.914 [DEBUG] [Thread-161152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:22:27.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:27.916 [DEBUG] [Thread-161152] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:27.916 [DEBUG] [Thread-161152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:27.916 [DEBUG] [Thread-161152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:27.916 [DEBUG] [Thread-161152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:22:27.917 [DEBUG] [Thread-161152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:27.934 [INFO] [Thread-161152] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:27.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:28.670 [DEBUG] [Thread-161152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:28.670 [DEBUG] [Thread-161152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:28.670 [DEBUG] [Thread-161152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:22:28.711 [DEBUG] [Thread-161152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:28.711 [DEBUG] [Thread-161152] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:28.714 [DEBUG] [Thread-161152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:28.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:28.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:22:28.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:22:28.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:22:28.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:28.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:22:28.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:28.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:28.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:22:28.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.598331 -999.00  +15.20  21.37     41   +2.20 1 1 1 1 1   887    0 12.70 -13.99 ----- 17.2 21.4 174.2 24.5 21.0 -28.4 20.2 -30.5 22.2 -28.6 23.2 -29.7
2025-09-29T16:22:28.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:22:28.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:22:28.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.598331
2025-09-29T16:22:28.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:22:28.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:22:28.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:22:28.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:22:28.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:22:28.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:22:05', tmtdew=15.11, humidity=35.74, cloud=0.0, wind=19.88, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:21:35.798', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:22:28.734 [DEBUG] [Thread-161152] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:28.818 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:22:28.830 [DEBUG] [Thread-161155] [transport.py] [_log()] starting thread (client mode): 0x2e3632e0
2025-09-29T16:22:28.830 [DEBUG] [Thread-161155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:28.846 [DEBUG] [Thread-161155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:22:28.846 [INFO] [Thread-161155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:22:28.854 [DEBUG] [Thread-161155] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:28.854 [DEBUG] [Thread-161155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:22:28.854 [DEBUG] [Thread-161155] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:28.854 [DEBUG] [Thread-161155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:28.854 [DEBUG] [Thread-161155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:28.854 [DEBUG] [Thread-161155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:28.854 [DEBUG] [Thread-161155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:28.855 [DEBUG] [Thread-161155] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:28.856 [DEBUG] [Thread-161155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:28.856 [DEBUG] [Thread-161155] [transport.py] [_log()] Compression: none
2025-09-29T16:22:28.856 [DEBUG] [Thread-161155] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:28.913 [DEBUG] [Thread-161155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:28.913 [DEBUG] [Thread-161155] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:28.914 [DEBUG] [Thread-161155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:22:28.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:22:28.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:28.969 [DEBUG] [Thread-161155] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:28.969 [DEBUG] [Thread-161155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:28.969 [DEBUG] [Thread-161155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:28.969 [DEBUG] [Thread-161155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:22:28.969 [DEBUG] [Thread-161155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:28.988 [INFO] [Thread-161155] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:28.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:22:28.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:29.998 [DEBUG] [Thread-161155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:29.998 [DEBUG] [Thread-161155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:30.046 [DEBUG] [Thread-161155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:30.046 [DEBUG] [Thread-161155] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:30.055 [DEBUG] [Thread-161155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:30.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:30.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:22:30.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:22:30.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:30.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:30.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:30.089 [DEBUG] [Thread-161155] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:34.279 [DEBUG] [Thread-161157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:22:40.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:22:40.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:22:40.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:22:40.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 22, 37), 14.77, 36.82, 0.0, 19.81, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:22:40.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:22:37
2025-09-29T16:22:40.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:22:40.925 [DEBUG] [Thread-161158] [transport.py] [_log()] starting thread (client mode): 0x2b91ddb0
2025-09-29T16:22:40.925 [DEBUG] [Thread-161158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:40.945 [DEBUG] [Thread-161158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:22:40.945 [INFO] [Thread-161158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] Compression: none
2025-09-29T16:22:40.948 [DEBUG] [Thread-161158] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:40.965 [DEBUG] [Thread-161158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:40.966 [DEBUG] [Thread-161158] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:40.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:22:40.967 [DEBUG] [Thread-161158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:22:40.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:40.969 [DEBUG] [Thread-161158] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:40.969 [DEBUG] [Thread-161158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:40.969 [DEBUG] [Thread-161158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:40.969 [DEBUG] [Thread-161158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:22:40.969 [DEBUG] [Thread-161158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:40.994 [INFO] [Thread-161158] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:40.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:41.590 [DEBUG] [Thread-161158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:41.591 [DEBUG] [Thread-161158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:41.591 [DEBUG] [Thread-161158] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:22:41.631 [DEBUG] [Thread-161158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:41.632 [DEBUG] [Thread-161158] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:41.634 [DEBUG] [Thread-161158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:41.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:41.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:22:41.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:22:41.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:22:41.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:41.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:22:41.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:41.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:41.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:22:41.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.598678 -999.00  +15.20  12.88     42   +2.40 1 1 1 1 1   887    0 12.80 -13.39 ----- 13.1 12.9 177.8 20.0 20.9 -28.3 20.1 -30.7 22.2 -28.0 23.2 -28.9
2025-09-29T16:22:41.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:22:41.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:22:41.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.598678
2025-09-29T16:22:41.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:22:41.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:22:41.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:22:41.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:22:41.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:22:41.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:22:37', tmtdew=14.77, humidity=36.82, cloud=0.0, wind=19.81, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:22:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:22:41.658 [DEBUG] [Thread-161158] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:41.743 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:22:41.755 [DEBUG] [Thread-161161] [transport.py] [_log()] starting thread (client mode): 0x2e3dfc40
2025-09-29T16:22:41.755 [DEBUG] [Thread-161161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:41.770 [DEBUG] [Thread-161161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:22:41.770 [INFO] [Thread-161161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:22:41.777 [DEBUG] [Thread-161161] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] Compression: none
2025-09-29T16:22:41.778 [DEBUG] [Thread-161161] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:41.840 [DEBUG] [Thread-161161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:41.840 [DEBUG] [Thread-161161] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:41.841 [DEBUG] [Thread-161161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:22:41.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:22:41.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:41.897 [DEBUG] [Thread-161161] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:41.897 [DEBUG] [Thread-161161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:41.897 [DEBUG] [Thread-161161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:41.897 [DEBUG] [Thread-161161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:22:41.897 [DEBUG] [Thread-161161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:41.916 [INFO] [Thread-161161] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:41.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:22:41.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:42.877 [DEBUG] [Thread-161161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:42.877 [DEBUG] [Thread-161161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:42.925 [DEBUG] [Thread-161161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:42.925 [DEBUG] [Thread-161161] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:42.934 [DEBUG] [Thread-161161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:42.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:42.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:22:42.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:22:42.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:42.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:42.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:42.977 [DEBUG] [Thread-161161] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:48.379 [DEBUG] [Thread-161163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:22:49.313 [DEBUG] [Thread-161164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:22:52.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:22:52.977 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:22:52.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:22:53.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 22, 37), 14.77, 36.82, 0.0, 19.81, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:22:53.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:22:37
2025-09-29T16:22:53.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:22:53.829 [DEBUG] [Thread-161165] [transport.py] [_log()] starting thread (client mode): 0x2b94dc60
2025-09-29T16:22:53.829 [DEBUG] [Thread-161165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:53.849 [DEBUG] [Thread-161165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:22:53.849 [INFO] [Thread-161165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:22:53.850 [DEBUG] [Thread-161165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] Compression: none
2025-09-29T16:22:53.851 [DEBUG] [Thread-161165] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:53.868 [DEBUG] [Thread-161165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:53.869 [DEBUG] [Thread-161165] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:53.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:22:53.870 [DEBUG] [Thread-161165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:22:53.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:53.872 [DEBUG] [Thread-161165] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:53.872 [DEBUG] [Thread-161165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:53.872 [DEBUG] [Thread-161165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:53.872 [DEBUG] [Thread-161165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:22:53.872 [DEBUG] [Thread-161165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:53.890 [INFO] [Thread-161165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:53.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:54.638 [DEBUG] [Thread-161165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:54.639 [DEBUG] [Thread-161165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:54.639 [DEBUG] [Thread-161165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:22:54.679 [DEBUG] [Thread-161165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:54.680 [DEBUG] [Thread-161165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:54.683 [DEBUG] [Thread-161165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:54.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:54.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:22:54.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:22:54.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:22:54.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:54.704 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:22:54.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:54.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:54.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:22:54.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.598678 -999.00  +15.20  12.88     42   +2.40 1 1 1 1 1   887    0 12.80 -13.39 ----- 13.1 12.9 177.8 20.0 20.9 -28.3 20.1 -30.7 22.2 -28.0 23.2 -28.9
2025-09-29T16:22:54.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:22:54.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:22:54.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.598678
2025-09-29T16:22:54.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:22:54.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:22:54.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:22:54.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:22:54.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:22:54.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:22:37', tmtdew=14.77, humidity=36.82, cloud=0.0, wind=19.81, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:22:05.779', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:22:54.707 [DEBUG] [Thread-161165] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:22:54.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:22:54.801 [DEBUG] [Thread-161168] [transport.py] [_log()] starting thread (client mode): 0x2b94d240
2025-09-29T16:22:54.801 [DEBUG] [Thread-161168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:22:54.816 [DEBUG] [Thread-161168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:22:54.816 [INFO] [Thread-161168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:22:54.823 [DEBUG] [Thread-161168] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:22:54.823 [DEBUG] [Thread-161168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:22:54.823 [DEBUG] [Thread-161168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:22:54.823 [DEBUG] [Thread-161168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] client lang: <none>
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] server lang: <none>
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] kex follows: False
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] Compression: none
2025-09-29T16:22:54.824 [DEBUG] [Thread-161168] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:22:54.881 [DEBUG] [Thread-161168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:22:54.881 [DEBUG] [Thread-161168] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:22:54.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:22:54.882 [DEBUG] [Thread-161168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:22:54.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:22:54.936 [DEBUG] [Thread-161168] [transport.py] [_log()] userauth is OK
2025-09-29T16:22:54.937 [DEBUG] [Thread-161168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:22:54.937 [DEBUG] [Thread-161168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:22:54.937 [DEBUG] [Thread-161168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:22:54.937 [DEBUG] [Thread-161168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:22:54.955 [INFO] [Thread-161168] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:22:54.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:22:54.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:22:55.909 [DEBUG] [Thread-161168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:22:55.910 [DEBUG] [Thread-161168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:22:55.957 [DEBUG] [Thread-161168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:22:55.957 [DEBUG] [Thread-161168] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:22:55.966 [DEBUG] [Thread-161168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:22:55.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:22:55.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:22:55.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:22:55.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:22:55.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:22:55.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:22:56.001 [DEBUG] [Thread-161168] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:04.367 [DEBUG] [Thread-161170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:23:06.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:23:06.003 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:23:06.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:23:06.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 22, 37), 14.77, 36.82, 0.0, 19.81, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:23:06.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:22:37
2025-09-29T16:23:06.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:23:06.817 [DEBUG] [Thread-161171] [transport.py] [_log()] starting thread (client mode): 0x2b91f430
2025-09-29T16:23:06.817 [DEBUG] [Thread-161171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:06.837 [DEBUG] [Thread-161171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:23:06.838 [INFO] [Thread-161171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:06.840 [DEBUG] [Thread-161171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] Compression: none
2025-09-29T16:23:06.841 [DEBUG] [Thread-161171] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:06.857 [DEBUG] [Thread-161171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:06.858 [DEBUG] [Thread-161171] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:06.859 [DEBUG] [Thread-161171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:23:06.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:23:06.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:06.861 [DEBUG] [Thread-161171] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:06.861 [DEBUG] [Thread-161171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:06.862 [DEBUG] [Thread-161171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:06.862 [DEBUG] [Thread-161171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:23:06.862 [DEBUG] [Thread-161171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:06.878 [INFO] [Thread-161171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:06.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:07.447 [DEBUG] [Thread-161171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:07.447 [DEBUG] [Thread-161171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:07.447 [DEBUG] [Thread-161171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:23:07.488 [DEBUG] [Thread-161171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:07.488 [DEBUG] [Thread-161171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:07.491 [DEBUG] [Thread-161171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:07.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:07.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:23:07.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:23:07.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:23:07.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:07.515 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:23:07.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:07.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:07.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:23:07.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.599025 -999.00  +15.30  15.04     41   +2.40 1 1 1 1 1   887    0 12.73 -14.11 ----- 13.2 15.0 153.6 18.1 20.9 -28.1 20.1 -28.8 22.2 -27.3 23.2 -28.1
2025-09-29T16:23:07.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:23:07.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:23:07.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.599025
2025-09-29T16:23:07.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:23:07.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:23:07.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:23:07.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:23:07.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:23:07.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:22:37', tmtdew=14.77, humidity=36.82, cloud=0.0, wind=19.81, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:22:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:23:07.518 [DEBUG] [Thread-161171] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:07.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:23:07.619 [DEBUG] [Thread-161174] [transport.py] [_log()] starting thread (client mode): 0x2e3f9f90
2025-09-29T16:23:07.619 [DEBUG] [Thread-161174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:07.634 [DEBUG] [Thread-161174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:23:07.634 [INFO] [Thread-161174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:23:07.642 [DEBUG] [Thread-161174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:07.642 [DEBUG] [Thread-161174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:23:07.642 [DEBUG] [Thread-161174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:07.642 [DEBUG] [Thread-161174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:07.642 [DEBUG] [Thread-161174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:07.642 [DEBUG] [Thread-161174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:07.642 [DEBUG] [Thread-161174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:07.642 [DEBUG] [Thread-161174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:07.643 [DEBUG] [Thread-161174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:07.644 [DEBUG] [Thread-161174] [transport.py] [_log()] Compression: none
2025-09-29T16:23:07.644 [DEBUG] [Thread-161174] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:07.705 [DEBUG] [Thread-161174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:07.705 [DEBUG] [Thread-161174] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:07.706 [DEBUG] [Thread-161174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:23:07.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:23:07.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:07.760 [DEBUG] [Thread-161174] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:07.761 [DEBUG] [Thread-161174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:07.761 [DEBUG] [Thread-161174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:07.761 [DEBUG] [Thread-161174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:23:07.761 [DEBUG] [Thread-161174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:07.781 [INFO] [Thread-161174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:07.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:23:07.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:08.757 [DEBUG] [Thread-161174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:08.757 [DEBUG] [Thread-161174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:08.805 [DEBUG] [Thread-161174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:08.805 [DEBUG] [Thread-161174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:08.814 [DEBUG] [Thread-161174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:08.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:08.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:23:08.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:23:08.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:08.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:08.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:08.849 [DEBUG] [Thread-161174] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:18.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:23:18.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:23:18.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:23:19.397 [DEBUG] [Thread-161176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:23:19.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 23, 9), 14.86, 36.64, 0.0, 18.17, 15.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:23:19.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:23:09
2025-09-29T16:23:19.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:23:19.670 [DEBUG] [Thread-161177] [transport.py] [_log()] starting thread (client mode): 0x2e362c50
2025-09-29T16:23:19.671 [DEBUG] [Thread-161177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:19.690 [DEBUG] [Thread-161177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:23:19.691 [INFO] [Thread-161177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:19.694 [DEBUG] [Thread-161177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] Compression: none
2025-09-29T16:23:19.695 [DEBUG] [Thread-161177] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:19.712 [DEBUG] [Thread-161177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:19.713 [DEBUG] [Thread-161177] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:19.713 [DEBUG] [Thread-161177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:23:19.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:23:19.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:19.715 [DEBUG] [Thread-161177] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:19.716 [DEBUG] [Thread-161177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:19.716 [DEBUG] [Thread-161177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:19.716 [DEBUG] [Thread-161177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:23:19.716 [DEBUG] [Thread-161177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:19.734 [INFO] [Thread-161177] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:19.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:20.525 [DEBUG] [Thread-161177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:20.526 [DEBUG] [Thread-161177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:20.526 [DEBUG] [Thread-161177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:23:20.566 [DEBUG] [Thread-161177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:20.566 [DEBUG] [Thread-161177] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:20.569 [DEBUG] [Thread-161177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:20.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:20.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:23:20.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:23:20.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:23:20.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:20.586 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:23:20.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:20.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:20.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:23:20.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.599025 -999.00  +15.30  15.04     41   +2.40 1 1 1 1 1   887    0 12.73 -14.11 ----- 13.2 15.0 153.6 18.1 20.9 -28.1 20.1 -28.8 22.2 -27.3 23.2 -28.1
2025-09-29T16:23:20.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:23:20.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:23:20.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.599025
2025-09-29T16:23:20.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:23:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:23:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:23:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:23:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:23:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:23:09', tmtdew=14.86, humidity=36.64, cloud=0.0, wind=18.17, temperature=15.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:22:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:23:20.589 [DEBUG] [Thread-161177] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:20.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:23:20.682 [DEBUG] [Thread-161180] [transport.py] [_log()] starting thread (client mode): 0x2b9cc460
2025-09-29T16:23:20.682 [DEBUG] [Thread-161180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:20.687 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:23:20.688 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:23:20.697 [DEBUG] [Thread-161180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:23:20.697 [INFO] [Thread-161180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:23:20.704 [DEBUG] [Thread-161180] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:20.705 [DEBUG] [Thread-161180] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] Compression: none
2025-09-29T16:23:20.706 [DEBUG] [Thread-161180] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:20.764 [DEBUG] [Thread-161180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:20.765 [DEBUG] [Thread-161180] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:20.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:23:20.766 [DEBUG] [Thread-161180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:23:20.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:20.821 [DEBUG] [Thread-161180] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:20.821 [DEBUG] [Thread-161180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:20.821 [DEBUG] [Thread-161180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:20.821 [DEBUG] [Thread-161180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:23:20.821 [DEBUG] [Thread-161180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:20.842 [INFO] [Thread-161180] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:20.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:23:20.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:21.824 [DEBUG] [Thread-161180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:21.824 [DEBUG] [Thread-161180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:21.873 [DEBUG] [Thread-161180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:21.873 [DEBUG] [Thread-161180] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:21.882 [DEBUG] [Thread-161180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:21.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:21.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:23:21.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:23:21.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:21.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:21.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:21.916 [DEBUG] [Thread-161180] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:31.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:23:31.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:23:31.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:23:32.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 23, 9), 14.86, 36.64, 0.0, 18.17, 15.11, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:23:32.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:23:09
2025-09-29T16:23:32.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:23:32.752 [DEBUG] [Thread-161182] [transport.py] [_log()] starting thread (client mode): 0x2b968d30
2025-09-29T16:23:32.752 [DEBUG] [Thread-161182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:32.772 [DEBUG] [Thread-161182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:23:32.772 [INFO] [Thread-161182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:23:32.775 [DEBUG] [Thread-161182] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:32.776 [DEBUG] [Thread-161182] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:32.777 [DEBUG] [Thread-161182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:32.777 [DEBUG] [Thread-161182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:32.777 [DEBUG] [Thread-161182] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:32.777 [DEBUG] [Thread-161182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:32.777 [DEBUG] [Thread-161182] [transport.py] [_log()] Compression: none
2025-09-29T16:23:32.777 [DEBUG] [Thread-161182] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:32.797 [DEBUG] [Thread-161182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:32.797 [DEBUG] [Thread-161182] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:32.798 [DEBUG] [Thread-161182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:23:32.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:23:32.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:32.800 [DEBUG] [Thread-161182] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:32.800 [DEBUG] [Thread-161182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:32.800 [DEBUG] [Thread-161182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:32.801 [DEBUG] [Thread-161182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:23:32.801 [DEBUG] [Thread-161182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:32.823 [INFO] [Thread-161182] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:32.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:33.590 [DEBUG] [Thread-161182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:33.590 [DEBUG] [Thread-161182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:33.590 [DEBUG] [Thread-161182] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:23:33.631 [DEBUG] [Thread-161182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:33.631 [DEBUG] [Thread-161182] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:33.634 [DEBUG] [Thread-161182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:33.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:33.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:23:33.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:23:33.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:23:33.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:33.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:23:33.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:33.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:33.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:23:33.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.599025 -999.00  +15.30  15.04     41   +2.40 1 1 1 1 1   887    0 12.73 -14.11 ----- 13.2 15.0 153.6 18.1 20.9 -28.1 20.1 -28.8 22.2 -27.3 23.2 -28.1
2025-09-29T16:23:33.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:23:33.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:23:33.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.599025
2025-09-29T16:23:33.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:23:33.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:23:33.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:23:33.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:23:33.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:23:33.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:23:09', tmtdew=14.86, humidity=36.64, cloud=0.0, wind=18.17, temperature=15.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:22:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:23:33.662 [DEBUG] [Thread-161182] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:33.749 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:23:33.758 [DEBUG] [Thread-161185] [transport.py] [_log()] starting thread (client mode): 0x2b94eb90
2025-09-29T16:23:33.759 [DEBUG] [Thread-161185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:33.775 [DEBUG] [Thread-161185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:23:33.775 [INFO] [Thread-161185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:23:33.782 [DEBUG] [Thread-161185] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:33.783 [DEBUG] [Thread-161185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:23:33.783 [DEBUG] [Thread-161185] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:33.783 [DEBUG] [Thread-161185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:33.783 [DEBUG] [Thread-161185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:33.783 [DEBUG] [Thread-161185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:33.783 [DEBUG] [Thread-161185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:33.783 [DEBUG] [Thread-161185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:33.784 [DEBUG] [Thread-161185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:33.784 [DEBUG] [Thread-161185] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:33.784 [DEBUG] [Thread-161185] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:33.784 [DEBUG] [Thread-161185] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:33.784 [DEBUG] [Thread-161185] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:33.784 [DEBUG] [Thread-161185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:33.784 [DEBUG] [Thread-161185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:33.785 [DEBUG] [Thread-161185] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:33.785 [DEBUG] [Thread-161185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:33.785 [DEBUG] [Thread-161185] [transport.py] [_log()] Compression: none
2025-09-29T16:23:33.785 [DEBUG] [Thread-161185] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:33.841 [DEBUG] [Thread-161185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:33.842 [DEBUG] [Thread-161185] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:33.842 [DEBUG] [Thread-161185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:23:33.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:23:33.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:33.896 [DEBUG] [Thread-161185] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:33.897 [DEBUG] [Thread-161185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:33.897 [DEBUG] [Thread-161185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:33.897 [DEBUG] [Thread-161185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:23:33.897 [DEBUG] [Thread-161185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:33.919 [INFO] [Thread-161185] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:33.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:23:33.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:34.437 [DEBUG] [Thread-161187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:23:34.914 [DEBUG] [Thread-161185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:34.914 [DEBUG] [Thread-161185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:34.963 [DEBUG] [Thread-161185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:34.963 [DEBUG] [Thread-161185] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:34.972 [DEBUG] [Thread-161185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:34.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:34.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:23:34.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:23:34.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:34.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:34.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:35.006 [DEBUG] [Thread-161185] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:45.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:23:45.009 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:23:45.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:23:45.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 23, 41), 14.67, 37.02, 0.0, 9.83, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:23:45.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:23:41
2025-09-29T16:23:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:23:45.852 [DEBUG] [Thread-161188] [transport.py] [_log()] starting thread (client mode): 0x2b91c6d0
2025-09-29T16:23:45.852 [DEBUG] [Thread-161188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:45.872 [DEBUG] [Thread-161188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:23:45.872 [INFO] [Thread-161188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:45.875 [DEBUG] [Thread-161188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:45.876 [DEBUG] [Thread-161188] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:45.876 [DEBUG] [Thread-161188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:45.876 [DEBUG] [Thread-161188] [transport.py] [_log()] Compression: none
2025-09-29T16:23:45.876 [DEBUG] [Thread-161188] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:45.892 [DEBUG] [Thread-161188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:45.893 [DEBUG] [Thread-161188] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:45.893 [DEBUG] [Thread-161188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:23:45.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:23:45.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:45.895 [DEBUG] [Thread-161188] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:45.895 [DEBUG] [Thread-161188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:45.895 [DEBUG] [Thread-161188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:45.896 [DEBUG] [Thread-161188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:23:45.896 [DEBUG] [Thread-161188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:45.919 [INFO] [Thread-161188] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:45.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:46.490 [DEBUG] [Thread-161188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:46.490 [DEBUG] [Thread-161188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:46.490 [DEBUG] [Thread-161188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:23:46.531 [DEBUG] [Thread-161188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:46.531 [DEBUG] [Thread-161188] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:46.534 [DEBUG] [Thread-161188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:46.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:46.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:23:46.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:23:46.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:23:46.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:46.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:23:46.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:46.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:46.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:23:46.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.599372 -999.00  +15.20  12.01     41   +2.30 1 1 1 1 1   887    0 12.69 -13.57 ----- 13.0 12.0 168.8 19.4 21.0 -28.1 20.4 -27.2 22.3 -27.7 23.3 -28.6
2025-09-29T16:23:46.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:23:46.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:23:46.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.599372
2025-09-29T16:23:46.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:23:46.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:23:46.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:23:46.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:23:46.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:23:46.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:23:41', tmtdew=14.67, humidity=37.02, cloud=0.0, wind=9.83, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:23:05.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:23:46.558 [DEBUG] [Thread-161188] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:46.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:23:46.656 [DEBUG] [Thread-161191] [transport.py] [_log()] starting thread (client mode): 0x2b94c910
2025-09-29T16:23:46.656 [DEBUG] [Thread-161191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:46.670 [DEBUG] [Thread-161191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:23:46.671 [INFO] [Thread-161191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:23:46.678 [DEBUG] [Thread-161191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:46.678 [DEBUG] [Thread-161191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:23:46.678 [DEBUG] [Thread-161191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:46.679 [DEBUG] [Thread-161191] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:46.680 [DEBUG] [Thread-161191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:46.680 [DEBUG] [Thread-161191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:46.680 [DEBUG] [Thread-161191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:46.680 [DEBUG] [Thread-161191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:46.680 [DEBUG] [Thread-161191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:46.680 [DEBUG] [Thread-161191] [transport.py] [_log()] Compression: none
2025-09-29T16:23:46.680 [DEBUG] [Thread-161191] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:46.737 [DEBUG] [Thread-161191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:46.737 [DEBUG] [Thread-161191] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:46.738 [DEBUG] [Thread-161191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:23:46.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:23:46.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:46.796 [DEBUG] [Thread-161191] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:46.796 [DEBUG] [Thread-161191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:46.797 [DEBUG] [Thread-161191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:46.797 [DEBUG] [Thread-161191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:23:46.797 [DEBUG] [Thread-161191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:46.815 [INFO] [Thread-161191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:46.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:23:46.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:47.804 [DEBUG] [Thread-161191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:47.804 [DEBUG] [Thread-161191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:47.852 [DEBUG] [Thread-161191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:47.852 [DEBUG] [Thread-161191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:47.861 [DEBUG] [Thread-161191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:47.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:47.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:23:47.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:23:47.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:47.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:47.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:47.895 [DEBUG] [Thread-161191] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:48.411 [DEBUG] [Thread-161193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:23:49.482 [DEBUG] [Thread-161194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:23:57.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:23:57.897 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:23:57.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:23:58.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 23, 41), 14.67, 37.02, 0.0, 9.83, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:23:58.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:23:41
2025-09-29T16:23:58.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:23:58.730 [DEBUG] [Thread-161195] [transport.py] [_log()] starting thread (client mode): 0x2e3de170
2025-09-29T16:23:58.730 [DEBUG] [Thread-161195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:58.749 [DEBUG] [Thread-161195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:23:58.749 [INFO] [Thread-161195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:23:58.752 [DEBUG] [Thread-161195] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:58.752 [DEBUG] [Thread-161195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] Compression: none
2025-09-29T16:23:58.753 [DEBUG] [Thread-161195] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:58.769 [DEBUG] [Thread-161195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:58.769 [DEBUG] [Thread-161195] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:58.770 [DEBUG] [Thread-161195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:23:58.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:23:58.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:58.772 [DEBUG] [Thread-161195] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:58.772 [DEBUG] [Thread-161195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:58.772 [DEBUG] [Thread-161195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:58.772 [DEBUG] [Thread-161195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:23:58.772 [DEBUG] [Thread-161195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:58.796 [INFO] [Thread-161195] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:58.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:23:59.529 [DEBUG] [Thread-161195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:23:59.529 [DEBUG] [Thread-161195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:23:59.529 [DEBUG] [Thread-161195] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:23:59.570 [DEBUG] [Thread-161195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:23:59.570 [DEBUG] [Thread-161195] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:23:59.572 [DEBUG] [Thread-161195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:23:59.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:23:59.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:23:59.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:23:59.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:23:59.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:23:59.590 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:23:59.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.599372 -999.00  +15.20  12.01     41   +2.30 1 1 1 1 1   887    0 12.69 -13.57 ----- 13.0 12.0 168.8 19.4 21.0 -28.1 20.4 -27.2 22.3 -27.7 23.3 -28.6
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.599372
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:23:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:23:41', tmtdew=14.67, humidity=37.02, cloud=0.0, wind=9.83, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:23:05.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:23:59.591 [DEBUG] [Thread-161195] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:23:59.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:23:59.676 [DEBUG] [Thread-161198] [transport.py] [_log()] starting thread (client mode): 0x2b968640
2025-09-29T16:23:59.676 [DEBUG] [Thread-161198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:23:59.691 [DEBUG] [Thread-161198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:23:59.691 [INFO] [Thread-161198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:23:59.698 [DEBUG] [Thread-161198] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] client lang: <none>
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] server lang: <none>
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] kex follows: False
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] Compression: none
2025-09-29T16:23:59.699 [DEBUG] [Thread-161198] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:23:59.755 [DEBUG] [Thread-161198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:23:59.755 [DEBUG] [Thread-161198] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:23:59.755 [DEBUG] [Thread-161198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:23:59.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:23:59.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:23:59.812 [DEBUG] [Thread-161198] [transport.py] [_log()] userauth is OK
2025-09-29T16:23:59.812 [DEBUG] [Thread-161198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:23:59.812 [DEBUG] [Thread-161198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:23:59.812 [DEBUG] [Thread-161198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:23:59.812 [DEBUG] [Thread-161198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:23:59.826 [INFO] [Thread-161198] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:23:59.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:23:59.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:00.789 [DEBUG] [Thread-161198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:00.789 [DEBUG] [Thread-161198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:00.837 [DEBUG] [Thread-161198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:00.837 [DEBUG] [Thread-161198] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:00.845 [DEBUG] [Thread-161198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:00.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:00.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:24:00.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:24:00.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:00.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:00.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:00.878 [DEBUG] [Thread-161198] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:24:04.529 [DEBUG] [Thread-161200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:24:10.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:24:10.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:24:10.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:24:11.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 23, 41), 14.67, 37.02, 0.0, 9.83, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:24:11.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:23:41
2025-09-29T16:24:11.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:24:11.705 [DEBUG] [Thread-161201] [transport.py] [_log()] starting thread (client mode): 0x2e3de590
2025-09-29T16:24:11.705 [DEBUG] [Thread-161201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:24:11.717 [DEBUG] [Thread-161201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:24:11.717 [INFO] [Thread-161201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] client lang: <none>
2025-09-29T16:24:11.720 [DEBUG] [Thread-161201] [transport.py] [_log()] server lang: <none>
2025-09-29T16:24:11.721 [DEBUG] [Thread-161201] [transport.py] [_log()] kex follows: False
2025-09-29T16:24:11.721 [DEBUG] [Thread-161201] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:24:11.721 [DEBUG] [Thread-161201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:24:11.721 [DEBUG] [Thread-161201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:24:11.721 [DEBUG] [Thread-161201] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:24:11.721 [DEBUG] [Thread-161201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:24:11.721 [DEBUG] [Thread-161201] [transport.py] [_log()] Compression: none
2025-09-29T16:24:11.721 [DEBUG] [Thread-161201] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:24:11.737 [DEBUG] [Thread-161201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:24:11.737 [DEBUG] [Thread-161201] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:24:11.738 [DEBUG] [Thread-161201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:24:11.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:24:11.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:24:11.739 [DEBUG] [Thread-161201] [transport.py] [_log()] userauth is OK
2025-09-29T16:24:11.739 [DEBUG] [Thread-161201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:24:11.740 [DEBUG] [Thread-161201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:24:11.740 [DEBUG] [Thread-161201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:24:11.740 [DEBUG] [Thread-161201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:24:11.763 [INFO] [Thread-161201] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:24:11.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:12.344 [DEBUG] [Thread-161201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:12.344 [DEBUG] [Thread-161201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:12.345 [DEBUG] [Thread-161201] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:24:12.385 [DEBUG] [Thread-161201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:12.386 [DEBUG] [Thread-161201] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:12.389 [DEBUG] [Thread-161201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:12.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:12.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:24:12.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:24:12.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:24:12.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:12.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:24:12.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:12.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:24:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.600066 -999.00  +15.30   3.96     42   +2.50 1 1 1 1 1   887    0 12.80 -14.05 ----- 8.6 4.0 168.4 11.4 21.1 -27.8 20.5 -27.1 22.4 -28.1 23.4 -29.2
2025-09-29T16:24:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:24:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:24:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.600066
2025-09-29T16:24:12.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:24:12.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:24:12.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:24:12.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:24:12.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:24:12.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:23:41', tmtdew=14.67, humidity=37.02, cloud=0.0, wind=9.83, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:24:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:24:12.415 [DEBUG] [Thread-161201] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:24:12.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:24:12.512 [DEBUG] [Thread-161204] [transport.py] [_log()] starting thread (client mode): 0x2e3614e0
2025-09-29T16:24:12.512 [DEBUG] [Thread-161204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:24:12.527 [DEBUG] [Thread-161204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:24:12.527 [INFO] [Thread-161204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:24:12.534 [DEBUG] [Thread-161204] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:24:12.535 [DEBUG] [Thread-161204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:24:12.535 [DEBUG] [Thread-161204] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:24:12.535 [DEBUG] [Thread-161204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:12.535 [DEBUG] [Thread-161204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:12.535 [DEBUG] [Thread-161204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:12.535 [DEBUG] [Thread-161204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:12.535 [DEBUG] [Thread-161204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] client lang: <none>
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] server lang: <none>
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] kex follows: False
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:24:12.536 [DEBUG] [Thread-161204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:24:12.537 [DEBUG] [Thread-161204] [transport.py] [_log()] Compression: none
2025-09-29T16:24:12.537 [DEBUG] [Thread-161204] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:24:12.593 [DEBUG] [Thread-161204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:24:12.593 [DEBUG] [Thread-161204] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:24:12.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:24:12.595 [DEBUG] [Thread-161204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:24:12.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:24:12.648 [DEBUG] [Thread-161204] [transport.py] [_log()] userauth is OK
2025-09-29T16:24:12.649 [DEBUG] [Thread-161204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:24:12.649 [DEBUG] [Thread-161204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:24:12.649 [DEBUG] [Thread-161204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:24:12.649 [DEBUG] [Thread-161204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:24:12.672 [INFO] [Thread-161204] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:24:12.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:24:12.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:13.639 [DEBUG] [Thread-161204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:13.639 [DEBUG] [Thread-161204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:13.687 [DEBUG] [Thread-161204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:13.687 [DEBUG] [Thread-161204] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:13.695 [DEBUG] [Thread-161204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:13.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:13.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:24:13.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:24:13.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:13.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:13.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:13.726 [DEBUG] [Thread-161204] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:24:19.559 [DEBUG] [Thread-161206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:24:20.825 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:24:20.826 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:24:23.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:24:23.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:24:23.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:24:24.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 24, 13), 14.62, 37.17, 0.0, 8.54, 15.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:24:24.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:24:13
2025-09-29T16:24:24.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:24:24.553 [DEBUG] [Thread-161207] [transport.py] [_log()] starting thread (client mode): 0x2b91ec80
2025-09-29T16:24:24.553 [DEBUG] [Thread-161207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:24:24.574 [DEBUG] [Thread-161207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:24:24.574 [INFO] [Thread-161207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:24:24.578 [DEBUG] [Thread-161207] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:24:24.578 [DEBUG] [Thread-161207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] client lang: <none>
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] server lang: <none>
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] kex follows: False
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] Compression: none
2025-09-29T16:24:24.579 [DEBUG] [Thread-161207] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:24:24.595 [DEBUG] [Thread-161207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:24:24.595 [DEBUG] [Thread-161207] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:24:24.596 [DEBUG] [Thread-161207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:24:24.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:24:24.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:24:24.598 [DEBUG] [Thread-161207] [transport.py] [_log()] userauth is OK
2025-09-29T16:24:24.598 [DEBUG] [Thread-161207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:24:24.598 [DEBUG] [Thread-161207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:24:24.598 [DEBUG] [Thread-161207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:24:24.598 [DEBUG] [Thread-161207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:24:24.615 [INFO] [Thread-161207] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:24:24.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:25.408 [DEBUG] [Thread-161207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:25.408 [DEBUG] [Thread-161207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:25.408 [DEBUG] [Thread-161207] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:24:25.449 [DEBUG] [Thread-161207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:25.449 [DEBUG] [Thread-161207] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:25.452 [DEBUG] [Thread-161207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:25.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:25.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:24:25.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:24:25.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:24:25.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:25.474 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:24:25.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:25.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:25.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:24:25.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.600066 -999.00  +15.30   3.96     42   +2.50 1 1 1 1 1   887    0 12.80 -14.05 ----- 8.6 4.0 168.4 11.4 21.1 -27.8 20.5 -27.1 22.4 -28.1 23.4 -29.2
2025-09-29T16:24:25.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:24:25.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:24:25.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.600066
2025-09-29T16:24:25.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:24:25.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:24:25.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:24:25.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:24:25.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:24:25.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:24:13', tmtdew=14.62, humidity=37.17, cloud=0.0, wind=8.54, temperature=15.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:24:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:24:25.476 [DEBUG] [Thread-161207] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:24:25.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:24:25.571 [DEBUG] [Thread-161210] [transport.py] [_log()] starting thread (client mode): 0x2b96a5f0
2025-09-29T16:24:25.571 [DEBUG] [Thread-161210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:24:25.585 [DEBUG] [Thread-161210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:24:25.585 [INFO] [Thread-161210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:24:25.593 [DEBUG] [Thread-161210] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:24:25.593 [DEBUG] [Thread-161210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:24:25.593 [DEBUG] [Thread-161210] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:24:25.593 [DEBUG] [Thread-161210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:25.593 [DEBUG] [Thread-161210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:25.593 [DEBUG] [Thread-161210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:25.593 [DEBUG] [Thread-161210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] client lang: <none>
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] server lang: <none>
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] kex follows: False
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] Compression: none
2025-09-29T16:24:25.594 [DEBUG] [Thread-161210] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:24:25.652 [DEBUG] [Thread-161210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:24:25.653 [DEBUG] [Thread-161210] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:24:25.653 [DEBUG] [Thread-161210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:24:25.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:24:25.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:24:25.708 [DEBUG] [Thread-161210] [transport.py] [_log()] userauth is OK
2025-09-29T16:24:25.709 [DEBUG] [Thread-161210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:24:25.709 [DEBUG] [Thread-161210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:24:25.709 [DEBUG] [Thread-161210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:24:25.709 [DEBUG] [Thread-161210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:24:25.728 [INFO] [Thread-161210] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:24:25.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:24:25.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:26.799 [DEBUG] [Thread-161210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:26.799 [DEBUG] [Thread-161210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:26.847 [DEBUG] [Thread-161210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:26.847 [DEBUG] [Thread-161210] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:26.857 [DEBUG] [Thread-161210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:26.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:26.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:24:26.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:24:26.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:26.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:26.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:26.892 [DEBUG] [Thread-161210] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:24:34.602 [DEBUG] [Thread-161212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:24:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:24:36.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:24:36.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:24:37.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 24, 13), 14.62, 37.17, 0.0, 8.54, 15.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:24:37.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:24:13
2025-09-29T16:24:37.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:24:37.752 [DEBUG] [Thread-161213] [transport.py] [_log()] starting thread (client mode): 0x2b968790
2025-09-29T16:24:37.752 [DEBUG] [Thread-161213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:24:37.772 [DEBUG] [Thread-161213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:24:37.772 [INFO] [Thread-161213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:24:37.775 [DEBUG] [Thread-161213] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:24:37.775 [DEBUG] [Thread-161213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] client lang: <none>
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] server lang: <none>
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] kex follows: False
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] Compression: none
2025-09-29T16:24:37.776 [DEBUG] [Thread-161213] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:24:37.795 [DEBUG] [Thread-161213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:24:37.795 [DEBUG] [Thread-161213] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:24:37.795 [DEBUG] [Thread-161213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:24:37.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:24:37.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:24:37.796 [DEBUG] [Thread-161213] [transport.py] [_log()] userauth is OK
2025-09-29T16:24:37.796 [DEBUG] [Thread-161213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:24:37.796 [DEBUG] [Thread-161213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:24:37.796 [DEBUG] [Thread-161213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:24:37.796 [DEBUG] [Thread-161213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:24:37.812 [INFO] [Thread-161213] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:24:37.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:38.656 [DEBUG] [Thread-161213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:38.656 [DEBUG] [Thread-161213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:38.656 [DEBUG] [Thread-161213] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:24:38.697 [DEBUG] [Thread-161213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:38.697 [DEBUG] [Thread-161213] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:38.699 [DEBUG] [Thread-161213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:38.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:38.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:24:38.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:24:38.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:24:38.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:38.716 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:24:38.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:38.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.600066 -999.00  +15.30   3.96     42   +2.50 1 1 1 1 1   887    0 12.80 -14.05 ----- 8.6 4.0 168.4 11.4 21.1 -27.8 20.5 -27.1 22.4 -28.1 23.4 -29.2
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.600066
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:24:38.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:24:13', tmtdew=14.62, humidity=37.17, cloud=0.0, wind=8.54, temperature=15.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:24:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:24:38.718 [DEBUG] [Thread-161213] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:24:38.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:24:38.803 [DEBUG] [Thread-161216] [transport.py] [_log()] starting thread (client mode): 0x2e362020
2025-09-29T16:24:38.804 [DEBUG] [Thread-161216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:24:38.818 [DEBUG] [Thread-161216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:24:38.818 [INFO] [Thread-161216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] client lang: <none>
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] server lang: <none>
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] kex follows: False
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] Compression: none
2025-09-29T16:24:38.826 [DEBUG] [Thread-161216] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:24:38.883 [DEBUG] [Thread-161216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:24:38.883 [DEBUG] [Thread-161216] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:24:38.884 [DEBUG] [Thread-161216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:24:38.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:24:38.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:24:38.940 [DEBUG] [Thread-161216] [transport.py] [_log()] userauth is OK
2025-09-29T16:24:38.940 [DEBUG] [Thread-161216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:24:38.940 [DEBUG] [Thread-161216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:24:38.940 [DEBUG] [Thread-161216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:24:38.940 [DEBUG] [Thread-161216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:24:38.957 [INFO] [Thread-161216] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:24:38.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:24:38.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:39.944 [DEBUG] [Thread-161216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:39.944 [DEBUG] [Thread-161216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:39.992 [DEBUG] [Thread-161216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:39.992 [DEBUG] [Thread-161216] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:40.000 [DEBUG] [Thread-161216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:40.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:40.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:24:40.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:24:40.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:40.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:40.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:40.032 [DEBUG] [Thread-161216] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:24:48.445 [DEBUG] [Thread-161218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:24:49.651 [DEBUG] [Thread-161219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:24:50.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:24:50.035 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:24:50.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:24:50.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 24, 44), 14.88, 36.14, 0.0, 17.29, 15.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:24:50.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:24:44
2025-09-29T16:24:50.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:24:50.867 [DEBUG] [Thread-161220] [transport.py] [_log()] starting thread (client mode): 0x2e38ebc0
2025-09-29T16:24:50.867 [DEBUG] [Thread-161220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:24:50.887 [DEBUG] [Thread-161220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:24:50.887 [INFO] [Thread-161220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:24:50.890 [DEBUG] [Thread-161220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:24:50.890 [DEBUG] [Thread-161220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:24:50.890 [DEBUG] [Thread-161220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:24:50.890 [DEBUG] [Thread-161220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] client lang: <none>
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] server lang: <none>
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] kex follows: False
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] Compression: none
2025-09-29T16:24:50.891 [DEBUG] [Thread-161220] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:24:50.910 [DEBUG] [Thread-161220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:24:50.911 [DEBUG] [Thread-161220] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:24:50.912 [DEBUG] [Thread-161220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:24:50.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:24:50.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:24:50.913 [DEBUG] [Thread-161220] [transport.py] [_log()] userauth is OK
2025-09-29T16:24:50.914 [DEBUG] [Thread-161220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:24:50.914 [DEBUG] [Thread-161220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:24:50.914 [DEBUG] [Thread-161220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:24:50.914 [DEBUG] [Thread-161220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:24:50.931 [INFO] [Thread-161220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:24:50.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:51.599 [DEBUG] [Thread-161220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:51.599 [DEBUG] [Thread-161220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:51.599 [DEBUG] [Thread-161220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:24:51.640 [DEBUG] [Thread-161220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:51.640 [DEBUG] [Thread-161220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:51.643 [DEBUG] [Thread-161220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:51.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:51.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:24:51.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:24:51.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:24:51.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:51.664 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:24:51.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:51.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:51.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:24:51.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.600414 -999.00  +15.50   7.95     41   +2.50 1 1 1 1 1   887    0 12.61 -13.36 ----- 8.5 8.0 127.0 14.7 21.2 -28.0 20.6 -27.0 22.6 -27.6 23.5 -28.9
2025-09-29T16:24:51.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:24:51.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:24:51.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.600414
2025-09-29T16:24:51.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:24:51.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:24:51.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:24:51.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:24:51.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:24:51.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:24:44', tmtdew=14.88, humidity=36.14, cloud=0.0, wind=17.29, temperature=15.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:24:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:24:51.667 [DEBUG] [Thread-161220] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:24:51.744 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:24:51.754 [DEBUG] [Thread-161223] [transport.py] [_log()] starting thread (client mode): 0x2b91c370
2025-09-29T16:24:51.754 [DEBUG] [Thread-161223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:24:51.774 [DEBUG] [Thread-161223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:24:51.774 [INFO] [Thread-161223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:24:51.781 [DEBUG] [Thread-161223] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] client lang: <none>
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] server lang: <none>
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] kex follows: False
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:24:51.782 [DEBUG] [Thread-161223] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:24:51.783 [DEBUG] [Thread-161223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:24:51.783 [DEBUG] [Thread-161223] [transport.py] [_log()] Compression: none
2025-09-29T16:24:51.783 [DEBUG] [Thread-161223] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:24:51.840 [DEBUG] [Thread-161223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:24:51.841 [DEBUG] [Thread-161223] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:24:51.841 [DEBUG] [Thread-161223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:24:51.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:24:51.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:24:51.901 [DEBUG] [Thread-161223] [transport.py] [_log()] userauth is OK
2025-09-29T16:24:51.901 [DEBUG] [Thread-161223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:24:51.901 [DEBUG] [Thread-161223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:24:51.901 [DEBUG] [Thread-161223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:24:51.901 [DEBUG] [Thread-161223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:24:51.922 [INFO] [Thread-161223] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:24:51.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:24:51.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:24:52.913 [DEBUG] [Thread-161223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:24:52.913 [DEBUG] [Thread-161223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:24:52.961 [DEBUG] [Thread-161223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:24:52.961 [DEBUG] [Thread-161223] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:24:52.969 [DEBUG] [Thread-161223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:24:52.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:24:52.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:24:52.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:24:52.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:24:52.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:24:52.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:24:53.002 [DEBUG] [Thread-161223] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:25:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:25:02.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:25:02.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:25:03.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 24, 44), 14.88, 36.14, 0.0, 17.29, 15.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:25:03.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:24:44
2025-09-29T16:25:03.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:25:03.837 [DEBUG] [Thread-161225] [transport.py] [_log()] starting thread (client mode): 0x2e38f5b0
2025-09-29T16:25:03.837 [DEBUG] [Thread-161225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:25:03.856 [DEBUG] [Thread-161225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:25:03.856 [INFO] [Thread-161225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:25:03.859 [DEBUG] [Thread-161225] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] client lang: <none>
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] server lang: <none>
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] kex follows: False
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] Compression: none
2025-09-29T16:25:03.860 [DEBUG] [Thread-161225] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:25:03.873 [DEBUG] [Thread-161225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:25:03.873 [DEBUG] [Thread-161225] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:25:03.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:25:03.874 [DEBUG] [Thread-161225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:25:03.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:25:03.876 [DEBUG] [Thread-161225] [transport.py] [_log()] userauth is OK
2025-09-29T16:25:03.876 [DEBUG] [Thread-161225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:25:03.876 [DEBUG] [Thread-161225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:25:03.876 [DEBUG] [Thread-161225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:25:03.876 [DEBUG] [Thread-161225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:25:03.894 [INFO] [Thread-161225] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:25:03.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:25:04.682 [DEBUG] [Thread-161227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:25:09.490 [DEBUG] [Thread-161225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:25:09.490 [DEBUG] [Thread-161225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:25:09.490 [DEBUG] [Thread-161225] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:25:09.530 [DEBUG] [Thread-161225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:25:09.530 [DEBUG] [Thread-161225] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:25:09.534 [DEBUG] [Thread-161225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:25:09.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:25:09.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:25:09.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:25:09.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:25:09.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:25:09.583 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:25:09.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:25:09.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:25:09.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:25:09.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.600414 -999.00  +15.50   7.95     41   +2.50 1 1 1 1 1   887    0 12.61 -13.36 ----- 8.5 8.0 127.0 14.7 21.2 -28.0 20.6 -27.0 22.6 -27.6 23.5 -28.9
2025-09-29T16:25:09.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:25:09.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:25:09.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.600414
2025-09-29T16:25:09.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:25:09.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:25:09.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:25:09.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:25:09.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:25:09.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:24:44', tmtdew=14.88, humidity=36.14, cloud=0.0, wind=17.29, temperature=15.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:24:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:25:09.586 [DEBUG] [Thread-161225] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:25:09.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:25:09.685 [DEBUG] [Thread-161229] [transport.py] [_log()] starting thread (client mode): 0x2e38c640
2025-09-29T16:25:09.685 [DEBUG] [Thread-161229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:25:09.700 [DEBUG] [Thread-161229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:25:09.700 [INFO] [Thread-161229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:25:09.708 [DEBUG] [Thread-161229] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:25:09.708 [DEBUG] [Thread-161229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:25:09.708 [DEBUG] [Thread-161229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:25:09.708 [DEBUG] [Thread-161229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] client lang: <none>
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] server lang: <none>
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] kex follows: False
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] Compression: none
2025-09-29T16:25:09.709 [DEBUG] [Thread-161229] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:25:09.765 [DEBUG] [Thread-161229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:25:09.765 [DEBUG] [Thread-161229] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:25:09.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:25:09.766 [DEBUG] [Thread-161229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:25:09.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:25:09.820 [DEBUG] [Thread-161229] [transport.py] [_log()] userauth is OK
2025-09-29T16:25:09.821 [DEBUG] [Thread-161229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:25:09.821 [DEBUG] [Thread-161229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:25:09.821 [DEBUG] [Thread-161229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:25:09.821 [DEBUG] [Thread-161229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:25:09.840 [INFO] [Thread-161229] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:25:09.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:25:09.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:25:10.847 [DEBUG] [Thread-161229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:25:10.847 [DEBUG] [Thread-161229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:25:10.895 [DEBUG] [Thread-161229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:25:10.895 [DEBUG] [Thread-161229] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:25:10.905 [DEBUG] [Thread-161229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:25:10.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:25:10.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:25:10.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:25:10.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:25:10.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:25:10.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:25:10.940 [DEBUG] [Thread-161229] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:25:19.722 [DEBUG] [Thread-161231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:25:20.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:25:20.942 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:25:20.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:25:20.964 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:25:20.965 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:25:21.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 25, 16), 14.83, 36.29, 0.0, 19.14, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:25:21.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:25:16
2025-09-29T16:25:21.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:25:21.784 [DEBUG] [Thread-161232] [transport.py] [_log()] starting thread (client mode): 0x2b96b730
2025-09-29T16:25:21.784 [DEBUG] [Thread-161232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:25:21.803 [DEBUG] [Thread-161232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:25:21.803 [INFO] [Thread-161232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:25:21.805 [DEBUG] [Thread-161232] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:25:21.805 [DEBUG] [Thread-161232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:25:21.805 [DEBUG] [Thread-161232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:25:21.805 [DEBUG] [Thread-161232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:21.805 [DEBUG] [Thread-161232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] client lang: <none>
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] server lang: <none>
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] kex follows: False
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] Compression: none
2025-09-29T16:25:21.806 [DEBUG] [Thread-161232] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:25:21.814 [DEBUG] [Thread-161232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:25:21.814 [DEBUG] [Thread-161232] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:25:21.814 [DEBUG] [Thread-161232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:25:21.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:25:21.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:25:21.816 [DEBUG] [Thread-161232] [transport.py] [_log()] userauth is OK
2025-09-29T16:25:21.816 [DEBUG] [Thread-161232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:25:21.816 [DEBUG] [Thread-161232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:25:21.816 [DEBUG] [Thread-161232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:25:21.816 [DEBUG] [Thread-161232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:25:21.839 [INFO] [Thread-161232] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:25:21.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:25:22.443 [DEBUG] [Thread-161232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:25:22.443 [DEBUG] [Thread-161232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:25:22.443 [DEBUG] [Thread-161232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:25:22.483 [DEBUG] [Thread-161232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:25:22.484 [DEBUG] [Thread-161232] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:25:22.486 [DEBUG] [Thread-161232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:25:22.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:25:22.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:25:22.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:25:22.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:25:22.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:25:22.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:25:22.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:25:22.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:25:22.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:25:22.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.600760 -999.00  +15.30  18.64     42   +2.50 1 1 1 1 1   887    0 12.55 -14.84 ----- 19.9 18.6 143.6 25.7 21.1 -29.1 20.7 -28.2 22.5 -28.9 23.4 -29.6
2025-09-29T16:25:22.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:25:22.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:25:22.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.600760
2025-09-29T16:25:22.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:25:22.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:25:22.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:25:22.513 [DEBUG] [Thread-161232] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:25:22.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:25:22.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:25:22.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:25:16', tmtdew=14.83, humidity=36.29, cloud=0.0, wind=19.14, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:25:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:25:22.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:25:22.608 [DEBUG] [Thread-161235] [transport.py] [_log()] starting thread (client mode): 0x2e38d540
2025-09-29T16:25:22.608 [DEBUG] [Thread-161235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:25:22.622 [DEBUG] [Thread-161235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:25:22.623 [INFO] [Thread-161235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:25:22.630 [DEBUG] [Thread-161235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:25:22.630 [DEBUG] [Thread-161235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] client lang: <none>
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] server lang: <none>
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] kex follows: False
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] Compression: none
2025-09-29T16:25:22.631 [DEBUG] [Thread-161235] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:25:22.688 [DEBUG] [Thread-161235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:25:22.689 [DEBUG] [Thread-161235] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:25:22.689 [DEBUG] [Thread-161235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:25:22.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:25:22.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:25:22.744 [DEBUG] [Thread-161235] [transport.py] [_log()] userauth is OK
2025-09-29T16:25:22.745 [DEBUG] [Thread-161235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:25:22.745 [DEBUG] [Thread-161235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:25:22.745 [DEBUG] [Thread-161235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:25:22.745 [DEBUG] [Thread-161235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:25:22.764 [INFO] [Thread-161235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:25:22.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:25:22.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:25:23.797 [DEBUG] [Thread-161235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:25:23.797 [DEBUG] [Thread-161235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:25:23.845 [DEBUG] [Thread-161235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:25:23.846 [DEBUG] [Thread-161235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:25:23.854 [DEBUG] [Thread-161235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:25:23.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:25:23.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:25:23.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:25:23.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:25:23.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:25:23.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:25:23.889 [DEBUG] [Thread-161235] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:25:33.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:25:33.892 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:25:33.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:25:34.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 25, 16), 14.83, 36.29, 0.0, 19.14, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:25:34.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:25:16
2025-09-29T16:25:34.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:25:34.710 [DEBUG] [Thread-161237] [transport.py] [_log()] starting thread (client mode): 0x2e38ec80
2025-09-29T16:25:34.710 [DEBUG] [Thread-161237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:25:34.730 [DEBUG] [Thread-161237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:25:34.731 [INFO] [Thread-161237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:25:34.734 [DEBUG] [Thread-161237] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:25:34.734 [DEBUG] [Thread-161237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:25:34.734 [DEBUG] [Thread-161237] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:25:34.734 [DEBUG] [Thread-161237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:34.734 [DEBUG] [Thread-161237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:34.734 [DEBUG] [Thread-161237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] client lang: <none>
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] server lang: <none>
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] kex follows: False
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:25:34.735 [DEBUG] [Thread-161237] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:25:34.736 [DEBUG] [Thread-161237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:25:34.736 [DEBUG] [Thread-161237] [transport.py] [_log()] Compression: none
2025-09-29T16:25:34.736 [DEBUG] [Thread-161237] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:25:34.751 [DEBUG] [Thread-161239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:25:34.754 [DEBUG] [Thread-161237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:25:34.755 [DEBUG] [Thread-161237] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:25:34.756 [DEBUG] [Thread-161237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:25:34.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:25:34.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:25:34.758 [DEBUG] [Thread-161237] [transport.py] [_log()] userauth is OK
2025-09-29T16:25:34.758 [DEBUG] [Thread-161237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:25:34.759 [DEBUG] [Thread-161237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:25:34.759 [DEBUG] [Thread-161237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:25:34.759 [DEBUG] [Thread-161237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:25:34.779 [INFO] [Thread-161237] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:25:34.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:25:35.550 [DEBUG] [Thread-161237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:25:35.550 [DEBUG] [Thread-161237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:25:35.550 [DEBUG] [Thread-161237] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:25:35.591 [DEBUG] [Thread-161237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:25:35.591 [DEBUG] [Thread-161237] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:25:35.593 [DEBUG] [Thread-161237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:25:35.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:25:35.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:25:35.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:25:35.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:25:35.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:25:35.616 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:25:35.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:25:35.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:25:35.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:25:35.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.600760 -999.00  +15.30  18.64     42   +2.50 1 1 1 1 1   887    0 12.55 -14.84 ----- 19.9 18.6 143.6 25.7 21.1 -29.1 20.7 -28.2 22.5 -28.9 23.4 -29.6
2025-09-29T16:25:35.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:25:35.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:25:35.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.600760
2025-09-29T16:25:35.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:25:35.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:25:35.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:25:35.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:25:35.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:25:35.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:25:16', tmtdew=14.83, humidity=36.29, cloud=0.0, wind=19.14, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:25:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:25:35.619 [DEBUG] [Thread-161237] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:25:35.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:25:35.718 [DEBUG] [Thread-161241] [transport.py] [_log()] starting thread (client mode): 0x2b969fc0
2025-09-29T16:25:35.718 [DEBUG] [Thread-161241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:25:35.737 [DEBUG] [Thread-161241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:25:35.738 [INFO] [Thread-161241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:25:35.745 [DEBUG] [Thread-161241] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:25:35.745 [DEBUG] [Thread-161241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:25:35.745 [DEBUG] [Thread-161241] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:25:35.745 [DEBUG] [Thread-161241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:35.745 [DEBUG] [Thread-161241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:35.745 [DEBUG] [Thread-161241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:35.745 [DEBUG] [Thread-161241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:35.745 [DEBUG] [Thread-161241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] client lang: <none>
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] server lang: <none>
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] kex follows: False
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] Compression: none
2025-09-29T16:25:35.746 [DEBUG] [Thread-161241] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:25:35.804 [DEBUG] [Thread-161241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:25:35.805 [DEBUG] [Thread-161241] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:25:35.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:25:35.806 [DEBUG] [Thread-161241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:25:35.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:25:35.860 [DEBUG] [Thread-161241] [transport.py] [_log()] userauth is OK
2025-09-29T16:25:35.860 [DEBUG] [Thread-161241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:25:35.860 [DEBUG] [Thread-161241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:25:35.860 [DEBUG] [Thread-161241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:25:35.860 [DEBUG] [Thread-161241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:25:35.875 [INFO] [Thread-161241] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:25:35.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:25:35.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:25:36.836 [DEBUG] [Thread-161241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:25:36.836 [DEBUG] [Thread-161241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:25:36.884 [DEBUG] [Thread-161241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:25:36.884 [DEBUG] [Thread-161241] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:25:36.893 [DEBUG] [Thread-161241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:25:36.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:25:36.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:25:36.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:25:36.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:25:36.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:25:36.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:25:36.928 [DEBUG] [Thread-161241] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:25:46.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:25:46.930 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:25:46.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:25:47.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 25, 16), 14.83, 36.29, 0.0, 19.14, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:25:47.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:25:16
2025-09-29T16:25:47.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:25:47.770 [DEBUG] [Thread-161243] [transport.py] [_log()] starting thread (client mode): 0x2e3c2d10
2025-09-29T16:25:47.770 [DEBUG] [Thread-161243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:25:47.790 [DEBUG] [Thread-161243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:25:47.790 [INFO] [Thread-161243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] client lang: <none>
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] server lang: <none>
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] kex follows: False
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:25:47.793 [DEBUG] [Thread-161243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:25:47.794 [DEBUG] [Thread-161243] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:25:47.794 [DEBUG] [Thread-161243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:25:47.794 [DEBUG] [Thread-161243] [transport.py] [_log()] Compression: none
2025-09-29T16:25:47.794 [DEBUG] [Thread-161243] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:25:47.810 [DEBUG] [Thread-161243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:25:47.810 [DEBUG] [Thread-161243] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:25:47.811 [DEBUG] [Thread-161243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:25:47.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:25:47.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:25:47.813 [DEBUG] [Thread-161243] [transport.py] [_log()] userauth is OK
2025-09-29T16:25:47.813 [DEBUG] [Thread-161243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:25:47.813 [DEBUG] [Thread-161243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:25:47.813 [DEBUG] [Thread-161243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:25:47.813 [DEBUG] [Thread-161243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:25:47.848 [INFO] [Thread-161243] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:25:47.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:25:48.487 [DEBUG] [Thread-161245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:25:48.598 [DEBUG] [Thread-161243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:25:48.598 [DEBUG] [Thread-161243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:25:48.598 [DEBUG] [Thread-161243] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:25:48.639 [DEBUG] [Thread-161243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:25:48.639 [DEBUG] [Thread-161243] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:25:48.642 [DEBUG] [Thread-161243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:25:48.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:25:48.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:25:48.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:25:48.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:25:48.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:25:48.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:25:48.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:25:48.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:25:48.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:25:48.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.600760 -999.00  +15.30  18.64     42   +2.50 1 1 1 1 1   887    0 12.55 -14.84 ----- 19.9 18.6 143.6 25.7 21.1 -29.1 20.7 -28.2 22.5 -28.9 23.4 -29.6
2025-09-29T16:25:48.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:25:48.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:25:48.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.600760
2025-09-29T16:25:48.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:25:48.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:25:48.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:25:48.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:25:48.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:25:48.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:25:16', tmtdew=14.83, humidity=36.29, cloud=0.0, wind=19.14, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:25:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:25:48.665 [DEBUG] [Thread-161243] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:25:48.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:25:48.760 [DEBUG] [Thread-161247] [transport.py] [_log()] starting thread (client mode): 0x2b91c8e0
2025-09-29T16:25:48.760 [DEBUG] [Thread-161247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:25:48.775 [DEBUG] [Thread-161247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:25:48.775 [INFO] [Thread-161247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:25:48.782 [DEBUG] [Thread-161247] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:25:48.782 [DEBUG] [Thread-161247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:25:48.782 [DEBUG] [Thread-161247] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] client lang: <none>
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] server lang: <none>
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] kex follows: False
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] Compression: none
2025-09-29T16:25:48.783 [DEBUG] [Thread-161247] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:25:48.841 [DEBUG] [Thread-161247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:25:48.841 [DEBUG] [Thread-161247] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:25:48.842 [DEBUG] [Thread-161247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:25:48.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:25:48.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:25:48.896 [DEBUG] [Thread-161247] [transport.py] [_log()] userauth is OK
2025-09-29T16:25:48.896 [DEBUG] [Thread-161247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:25:48.897 [DEBUG] [Thread-161247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:25:48.897 [DEBUG] [Thread-161247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:25:48.897 [DEBUG] [Thread-161247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:25:48.919 [INFO] [Thread-161247] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:25:48.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:25:48.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:25:49.801 [DEBUG] [Thread-161249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:25:49.917 [DEBUG] [Thread-161247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:25:49.917 [DEBUG] [Thread-161247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:25:49.965 [DEBUG] [Thread-161247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:25:49.965 [DEBUG] [Thread-161247] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:25:49.972 [DEBUG] [Thread-161247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:25:49.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:25:49.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:25:49.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:25:49.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:25:49.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:25:49.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:25:50.004 [DEBUG] [Thread-161247] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:26:00.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:26:00.007 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:26:00.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:26:00.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 25, 48), 14.96, 36.39, 0.0, 26.85, 15.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:26:00.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:25:48
2025-09-29T16:26:00.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:26:00.856 [DEBUG] [Thread-161250] [transport.py] [_log()] starting thread (client mode): 0x2e38f010
2025-09-29T16:26:00.857 [DEBUG] [Thread-161250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:26:00.882 [DEBUG] [Thread-161250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:26:00.882 [INFO] [Thread-161250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:26:00.885 [DEBUG] [Thread-161250] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:26:00.885 [DEBUG] [Thread-161250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:26:00.885 [DEBUG] [Thread-161250] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:26:00.885 [DEBUG] [Thread-161250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] client lang: <none>
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] server lang: <none>
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] kex follows: False
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] Compression: none
2025-09-29T16:26:00.886 [DEBUG] [Thread-161250] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:26:00.895 [DEBUG] [Thread-161250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:26:00.896 [DEBUG] [Thread-161250] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:26:00.896 [DEBUG] [Thread-161250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:26:00.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:26:00.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:26:00.898 [DEBUG] [Thread-161250] [transport.py] [_log()] userauth is OK
2025-09-29T16:26:00.898 [DEBUG] [Thread-161250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:26:00.898 [DEBUG] [Thread-161250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:26:00.898 [DEBUG] [Thread-161250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:26:00.898 [DEBUG] [Thread-161250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:26:00.929 [INFO] [Thread-161250] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:26:00.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:26:01.505 [DEBUG] [Thread-161250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:26:01.505 [DEBUG] [Thread-161250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:26:01.506 [DEBUG] [Thread-161250] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:26:01.546 [DEBUG] [Thread-161250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:26:01.546 [DEBUG] [Thread-161250] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:26:01.549 [DEBUG] [Thread-161250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:26:01.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:26:01.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:26:01.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:26:01.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:26:01.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:26:01.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:26:01.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:26:01.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:26:01.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:26:01.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.601108 -999.00  +15.40  11.06     42   +2.70 1 1 1 1 1   887    0 12.52 -16.81 ----- 16.4 11.1 135.0 31.2 21.1 -28.3 20.6 -28.2 22.5 -28.9 23.4 -30.0
2025-09-29T16:26:01.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:26:01.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:26:01.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.601108
2025-09-29T16:26:01.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:26:01.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:26:01.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:26:01.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:26:01.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:26:01.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:25:48', tmtdew=14.96, humidity=36.39, cloud=0.0, wind=26.85, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:25:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:26:01.573 [DEBUG] [Thread-161250] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:26:01.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:26:01.669 [DEBUG] [Thread-161253] [transport.py] [_log()] starting thread (client mode): 0x2e38c070
2025-09-29T16:26:01.669 [DEBUG] [Thread-161253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:26:01.683 [DEBUG] [Thread-161253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:26:01.683 [INFO] [Thread-161253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:26:01.691 [DEBUG] [Thread-161253] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:26:01.691 [DEBUG] [Thread-161253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:26:01.691 [DEBUG] [Thread-161253] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] client lang: <none>
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] server lang: <none>
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] kex follows: False
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] Compression: none
2025-09-29T16:26:01.692 [DEBUG] [Thread-161253] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:26:01.749 [DEBUG] [Thread-161253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:26:01.749 [DEBUG] [Thread-161253] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:26:01.750 [DEBUG] [Thread-161253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:26:01.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:26:01.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:26:01.808 [DEBUG] [Thread-161253] [transport.py] [_log()] userauth is OK
2025-09-29T16:26:01.809 [DEBUG] [Thread-161253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:26:01.809 [DEBUG] [Thread-161253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:26:01.809 [DEBUG] [Thread-161253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:26:01.809 [DEBUG] [Thread-161253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:26:01.827 [INFO] [Thread-161253] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:26:01.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:26:01.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:26:02.880 [DEBUG] [Thread-161253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:26:02.880 [DEBUG] [Thread-161253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:26:02.928 [DEBUG] [Thread-161253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:26:02.928 [DEBUG] [Thread-161253] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:26:02.937 [DEBUG] [Thread-161253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:26:02.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:26:02.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:26:02.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:26:02.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:26:02.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:26:02.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:26:02.971 [DEBUG] [Thread-161253] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:26:04.829 [DEBUG] [Thread-161255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:26:12.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:26:12.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:26:12.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:26:13.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 25, 48), 14.96, 36.39, 0.0, 26.85, 15.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:26:13.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:25:48
2025-09-29T16:26:13.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:26:13.812 [DEBUG] [Thread-161256] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bc0
2025-09-29T16:26:13.812 [DEBUG] [Thread-161256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:26:13.834 [DEBUG] [Thread-161256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:26:13.834 [INFO] [Thread-161256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:26:13.835 [DEBUG] [Thread-161256] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:26:13.835 [DEBUG] [Thread-161256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] client lang: <none>
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] server lang: <none>
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] kex follows: False
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] Compression: none
2025-09-29T16:26:13.836 [DEBUG] [Thread-161256] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:26:13.844 [DEBUG] [Thread-161256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:26:13.845 [DEBUG] [Thread-161256] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:26:13.845 [DEBUG] [Thread-161256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:26:13.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:26:13.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:26:13.847 [DEBUG] [Thread-161256] [transport.py] [_log()] userauth is OK
2025-09-29T16:26:13.847 [DEBUG] [Thread-161256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:26:13.847 [DEBUG] [Thread-161256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:26:13.848 [DEBUG] [Thread-161256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:26:13.848 [DEBUG] [Thread-161256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:26:13.883 [INFO] [Thread-161256] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:26:13.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:26:14.607 [DEBUG] [Thread-161256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:26:14.608 [DEBUG] [Thread-161256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:26:14.608 [DEBUG] [Thread-161256] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:26:14.648 [DEBUG] [Thread-161256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:26:14.648 [DEBUG] [Thread-161256] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:26:14.651 [DEBUG] [Thread-161256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:26:14.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:26:14.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:26:14.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:26:14.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:26:14.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:26:14.675 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:26:14.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:26:14.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:26:14.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:26:14.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.601108 -999.00  +15.40  11.06     42   +2.70 1 1 1 1 1   887    0 12.52 -16.81 ----- 16.4 11.1 135.0 31.2 21.1 -28.3 20.6 -28.2 22.5 -28.9 23.4 -30.0
2025-09-29T16:26:14.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:26:14.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:26:14.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.601108
2025-09-29T16:26:14.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:26:14.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:26:14.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:26:14.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:26:14.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:26:14.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:25:48', tmtdew=14.96, humidity=36.39, cloud=0.0, wind=26.85, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:25:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:26:14.679 [DEBUG] [Thread-161256] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:26:14.762 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:26:14.771 [DEBUG] [Thread-161259] [transport.py] [_log()] starting thread (client mode): 0x2b96b730
2025-09-29T16:26:14.772 [DEBUG] [Thread-161259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:26:14.787 [DEBUG] [Thread-161259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:26:14.787 [INFO] [Thread-161259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] client lang: <none>
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] server lang: <none>
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] kex follows: False
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] Compression: none
2025-09-29T16:26:14.795 [DEBUG] [Thread-161259] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:26:14.855 [DEBUG] [Thread-161259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:26:14.855 [DEBUG] [Thread-161259] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:26:14.856 [DEBUG] [Thread-161259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:26:14.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:26:14.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:26:14.912 [DEBUG] [Thread-161259] [transport.py] [_log()] userauth is OK
2025-09-29T16:26:14.913 [DEBUG] [Thread-161259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:26:14.913 [DEBUG] [Thread-161259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:26:14.913 [DEBUG] [Thread-161259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:26:14.913 [DEBUG] [Thread-161259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:26:14.932 [INFO] [Thread-161259] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:26:14.933 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:26:14.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:26:15.895 [DEBUG] [Thread-161259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:26:15.895 [DEBUG] [Thread-161259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:26:15.942 [DEBUG] [Thread-161259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:26:15.942 [DEBUG] [Thread-161259] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:26:15.951 [DEBUG] [Thread-161259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:26:15.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:26:15.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:26:15.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:26:15.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:26:15.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:26:15.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:26:15.986 [DEBUG] [Thread-161259] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:26:19.875 [DEBUG] [Thread-161261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:26:21.103 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:26:21.103 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:26:25.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:26:25.987 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:26:25.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:26:26.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 26, 20), 14.86, 36.59, 0.0, 26.73, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:26:26.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:26:20
2025-09-29T16:26:26.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:26:26.822 [DEBUG] [Thread-161262] [transport.py] [_log()] starting thread (client mode): 0x2e3dcb20
2025-09-29T16:26:26.822 [DEBUG] [Thread-161262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:26:26.842 [DEBUG] [Thread-161262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:26:26.842 [INFO] [Thread-161262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] client lang: <none>
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] server lang: <none>
2025-09-29T16:26:26.845 [DEBUG] [Thread-161262] [transport.py] [_log()] kex follows: False
2025-09-29T16:26:26.846 [DEBUG] [Thread-161262] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:26:26.846 [DEBUG] [Thread-161262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:26:26.846 [DEBUG] [Thread-161262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:26:26.846 [DEBUG] [Thread-161262] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:26:26.846 [DEBUG] [Thread-161262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:26:26.846 [DEBUG] [Thread-161262] [transport.py] [_log()] Compression: none
2025-09-29T16:26:26.846 [DEBUG] [Thread-161262] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:26:26.863 [DEBUG] [Thread-161262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:26:26.864 [DEBUG] [Thread-161262] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:26:26.864 [DEBUG] [Thread-161262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:26:26.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:26:26.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:26:26.866 [DEBUG] [Thread-161262] [transport.py] [_log()] userauth is OK
2025-09-29T16:26:26.866 [DEBUG] [Thread-161262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:26:26.867 [DEBUG] [Thread-161262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:26:26.867 [DEBUG] [Thread-161262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:26:26.867 [DEBUG] [Thread-161262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:26:26.884 [INFO] [Thread-161262] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:26:26.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:26:27.484 [DEBUG] [Thread-161262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:26:27.484 [DEBUG] [Thread-161262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:26:27.484 [DEBUG] [Thread-161262] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:26:27.525 [DEBUG] [Thread-161262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:26:27.525 [DEBUG] [Thread-161262] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:26:27.533 [DEBUG] [Thread-161262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:26:27.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:26:27.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:26:27.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:26:27.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:26:27.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:26:27.548 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:26:27.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:26:27.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:26:27.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:26:27.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.601455 -999.00  +15.30  23.62     42   +2.60 1 1 1 1 1   887    0 12.51 -18.07 ----- 28.3 23.6 139.6 32.9 21.0 -28.9 20.6 -28.8 22.5 -29.4 23.2 -31.1
2025-09-29T16:26:27.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:26:27.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:26:27.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.601455
2025-09-29T16:26:27.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:26:27.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:26:27.550 [DEBUG] [Thread-161262] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:26:27.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:26:27.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:26:27.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:26:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:26:20', tmtdew=14.86, humidity=36.59, cloud=0.0, wind=26.73, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:26:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:26:27.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:26:34.902 [DEBUG] [Thread-161265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:26:48.518 [DEBUG] [Thread-161266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:26:49.945 [DEBUG] [Thread-161267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:27:04.974 [DEBUG] [Thread-161268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:27:20.004 [DEBUG] [Thread-161269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:27:21.240 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:27:21.242 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:27:35.035 [DEBUG] [Thread-161270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:27:48.545 [DEBUG] [Thread-161271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:27:50.067 [DEBUG] [Thread-161272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:28:05.095 [DEBUG] [Thread-161273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:28:20.127 [DEBUG] [Thread-161274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:28:21.379 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:28:21.380 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:28:35.159 [DEBUG] [Thread-161275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:28:40.763 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T16:28:48.581 [DEBUG] [Thread-161276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:28:50.188 [DEBUG] [Thread-161277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:28:50.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:28:50.766 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:28:50.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:28:51.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 28, 28), 14.58, 37.1, 0.0, 21.61, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:28:51.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:28:28
2025-09-29T16:28:51.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:28:51.629 [DEBUG] [Thread-161278] [transport.py] [_log()] starting thread (client mode): 0x2e3dd600
2025-09-29T16:28:51.629 [DEBUG] [Thread-161278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:28:51.644 [DEBUG] [Thread-161278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:28:51.644 [INFO] [Thread-161278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:28:51.645 [DEBUG] [Thread-161278] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:28:51.645 [DEBUG] [Thread-161278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:28:51.645 [DEBUG] [Thread-161278] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:28:51.645 [DEBUG] [Thread-161278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:28:51.645 [DEBUG] [Thread-161278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:28:51.645 [DEBUG] [Thread-161278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:28:51.645 [DEBUG] [Thread-161278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:28:51.645 [DEBUG] [Thread-161278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] client lang: <none>
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] server lang: <none>
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] kex follows: False
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] Compression: none
2025-09-29T16:28:51.646 [DEBUG] [Thread-161278] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:28:51.655 [DEBUG] [Thread-161278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:28:51.655 [DEBUG] [Thread-161278] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:28:51.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:28:51.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:28:51.657 [DEBUG] [Thread-161278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:28:51.657 [DEBUG] [Thread-161278] [transport.py] [_log()] userauth is OK
2025-09-29T16:28:51.657 [DEBUG] [Thread-161278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:28:51.657 [DEBUG] [Thread-161278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:28:51.657 [DEBUG] [Thread-161278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:28:51.657 [DEBUG] [Thread-161278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:28:51.676 [INFO] [Thread-161278] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:28:51.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:28:52.385 [DEBUG] [Thread-161278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:28:52.385 [DEBUG] [Thread-161278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:28:52.386 [DEBUG] [Thread-161278] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:28:52.426 [DEBUG] [Thread-161278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:28:52.426 [DEBUG] [Thread-161278] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:28:52.429 [DEBUG] [Thread-161278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:28:52.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:28:52.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:28:52.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:28:52.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:28:52.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:28:52.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:28:52.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:28:52.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:28:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:28:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.602844 -999.00  +15.10  17.26     42   +2.50 1 1 1 1 1   887    0 12.47 -20.31 ----- 20.5 17.3 154.1 27.2 20.8 -28.8 20.3 -27.0 22.1 -26.9 23.1 -29.0
2025-09-29T16:28:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:28:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:28:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.602844
2025-09-29T16:28:52.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:28:52.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:28:52.453 [DEBUG] [Thread-161278] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:28:52.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:28:52.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:28:52.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:28:52.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:28:28', tmtdew=14.58, humidity=37.1, cloud=0.0, wind=21.61, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:28:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:28:52.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:28:52.550 [DEBUG] [Thread-161281] [transport.py] [_log()] starting thread (client mode): 0x2e3df190
2025-09-29T16:28:52.550 [DEBUG] [Thread-161281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:28:52.565 [DEBUG] [Thread-161281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:28:52.565 [INFO] [Thread-161281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] client lang: <none>
2025-09-29T16:28:52.573 [DEBUG] [Thread-161281] [transport.py] [_log()] server lang: <none>
2025-09-29T16:28:52.574 [DEBUG] [Thread-161281] [transport.py] [_log()] kex follows: False
2025-09-29T16:28:52.574 [DEBUG] [Thread-161281] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:28:52.574 [DEBUG] [Thread-161281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:28:52.574 [DEBUG] [Thread-161281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:28:52.574 [DEBUG] [Thread-161281] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:28:52.574 [DEBUG] [Thread-161281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:28:52.574 [DEBUG] [Thread-161281] [transport.py] [_log()] Compression: none
2025-09-29T16:28:52.574 [DEBUG] [Thread-161281] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:28:52.632 [DEBUG] [Thread-161281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:28:52.632 [DEBUG] [Thread-161281] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:28:52.633 [DEBUG] [Thread-161281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:28:52.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:28:52.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:28:52.688 [DEBUG] [Thread-161281] [transport.py] [_log()] userauth is OK
2025-09-29T16:28:52.689 [DEBUG] [Thread-161281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:28:52.689 [DEBUG] [Thread-161281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:28:52.689 [DEBUG] [Thread-161281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:28:52.689 [DEBUG] [Thread-161281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:28:52.707 [INFO] [Thread-161281] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:28:52.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:28:52.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:28:53.682 [DEBUG] [Thread-161281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:28:53.682 [DEBUG] [Thread-161281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:28:53.730 [DEBUG] [Thread-161281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:28:53.730 [DEBUG] [Thread-161281] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:28:53.739 [DEBUG] [Thread-161281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:28:53.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:28:53.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:28:53.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:28:53.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:28:53.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:28:53.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:28:53.774 [DEBUG] [Thread-161281] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:03.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:29:03.776 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:29:03.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:29:04.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 28, 28), 14.78, 36.6, 0.0, 21.61, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:29:04.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:28:28
2025-09-29T16:29:04.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:29:04.663 [DEBUG] [Thread-161283] [transport.py] [_log()] starting thread (client mode): 0x2e3c0a00
2025-09-29T16:29:04.663 [DEBUG] [Thread-161283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:04.681 [DEBUG] [Thread-161283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:29:04.681 [INFO] [Thread-161283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:29:04.684 [DEBUG] [Thread-161283] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:04.684 [DEBUG] [Thread-161283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:29:04.684 [DEBUG] [Thread-161283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:04.684 [DEBUG] [Thread-161283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] Compression: none
2025-09-29T16:29:04.685 [DEBUG] [Thread-161283] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:04.696 [DEBUG] [Thread-161283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:04.697 [DEBUG] [Thread-161283] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:04.697 [DEBUG] [Thread-161283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:29:04.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:29:04.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:04.698 [DEBUG] [Thread-161283] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:04.698 [DEBUG] [Thread-161283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:04.698 [DEBUG] [Thread-161283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:04.698 [DEBUG] [Thread-161283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:29:04.698 [DEBUG] [Thread-161283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:04.713 [INFO] [Thread-161283] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:04.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:05.216 [DEBUG] [Thread-161285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:29:05.447 [DEBUG] [Thread-161283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:05.447 [DEBUG] [Thread-161283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:05.447 [DEBUG] [Thread-161283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:29:05.487 [DEBUG] [Thread-161283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:05.487 [DEBUG] [Thread-161283] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:05.490 [DEBUG] [Thread-161283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:05.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:05.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:29:05.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:29:05.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:29:05.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:05.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:29:05.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:05.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:05.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:29:05.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.602844 -999.00  +15.10  17.26     42   +2.50 1 1 1 1 1   887    0 12.47 -20.31 ----- 20.5 17.3 154.1 27.2 20.8 -28.8 20.3 -27.0 22.1 -26.9 23.1 -29.0
2025-09-29T16:29:05.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:29:05.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:29:05.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.602844
2025-09-29T16:29:05.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:29:05.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:29:05.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:29:05.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:29:05.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:29:05.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:28:28', tmtdew=14.78, humidity=36.6, cloud=0.0, wind=21.61, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:28:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:29:05.514 [DEBUG] [Thread-161283] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:05.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:29:05.608 [DEBUG] [Thread-161287] [transport.py] [_log()] starting thread (client mode): 0x2e3f8730
2025-09-29T16:29:05.608 [DEBUG] [Thread-161287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:05.622 [DEBUG] [Thread-161287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:29:05.623 [INFO] [Thread-161287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:29:05.630 [DEBUG] [Thread-161287] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:05.630 [DEBUG] [Thread-161287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:29:05.630 [DEBUG] [Thread-161287] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:05.630 [DEBUG] [Thread-161287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] Compression: none
2025-09-29T16:29:05.631 [DEBUG] [Thread-161287] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:05.688 [DEBUG] [Thread-161287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:05.688 [DEBUG] [Thread-161287] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:05.689 [DEBUG] [Thread-161287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:29:05.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:29:05.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:05.744 [DEBUG] [Thread-161287] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:05.745 [DEBUG] [Thread-161287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:05.745 [DEBUG] [Thread-161287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:05.745 [DEBUG] [Thread-161287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:29:05.745 [DEBUG] [Thread-161287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:05.764 [INFO] [Thread-161287] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:05.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:29:05.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:06.729 [DEBUG] [Thread-161287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:06.729 [DEBUG] [Thread-161287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:06.777 [DEBUG] [Thread-161287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:06.777 [DEBUG] [Thread-161287] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:06.786 [DEBUG] [Thread-161287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:06.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:06.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:29:06.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:29:06.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:06.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:06.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:06.820 [DEBUG] [Thread-161287] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:16.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:29:16.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:29:16.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:29:17.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 28, 28), 14.78, 36.6, 0.0, 21.61, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:29:17.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:28:28
2025-09-29T16:29:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:29:17.685 [DEBUG] [Thread-161289] [transport.py] [_log()] starting thread (client mode): 0x2e3c3b20
2025-09-29T16:29:17.685 [DEBUG] [Thread-161289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:17.705 [DEBUG] [Thread-161289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:29:17.705 [INFO] [Thread-161289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:29:17.708 [DEBUG] [Thread-161289] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:17.708 [DEBUG] [Thread-161289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:29:17.708 [DEBUG] [Thread-161289] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:17.708 [DEBUG] [Thread-161289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:17.708 [DEBUG] [Thread-161289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:17.708 [DEBUG] [Thread-161289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] Compression: none
2025-09-29T16:29:17.709 [DEBUG] [Thread-161289] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:17.728 [DEBUG] [Thread-161289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:17.728 [DEBUG] [Thread-161289] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:17.729 [DEBUG] [Thread-161289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:29:17.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:29:17.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:17.732 [DEBUG] [Thread-161289] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:17.732 [DEBUG] [Thread-161289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:17.732 [DEBUG] [Thread-161289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:17.732 [DEBUG] [Thread-161289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:29:17.732 [DEBUG] [Thread-161289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:17.749 [INFO] [Thread-161289] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:17.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:18.379 [DEBUG] [Thread-161289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:18.379 [DEBUG] [Thread-161289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:18.379 [DEBUG] [Thread-161289] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:29:18.420 [DEBUG] [Thread-161289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:18.420 [DEBUG] [Thread-161289] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:18.422 [DEBUG] [Thread-161289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:18.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:18.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:29:18.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:29:18.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:29:18.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:18.440 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:29:18.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:18.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:18.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:29:18.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.603539 -999.00  +14.80  24.60     43   +2.40 1 1 1 1 1   887    0 11.95 -24.45 ----- 20.2 24.6 166.4 28.9 20.5 -29.5 20.0 -27.6 21.8 -29.1 22.7 -30.0
2025-09-29T16:29:18.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:29:18.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:29:18.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.603539
2025-09-29T16:29:18.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:29:18.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:29:18.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:29:18.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:29:18.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:29:18.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:28:28', tmtdew=14.78, humidity=36.6, cloud=0.0, wind=21.61, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:29:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:29:18.442 [DEBUG] [Thread-161289] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:18.515 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:29:18.527 [DEBUG] [Thread-161292] [transport.py] [_log()] starting thread (client mode): 0x2e3c05e0
2025-09-29T16:29:18.527 [DEBUG] [Thread-161292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:18.541 [DEBUG] [Thread-161292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:29:18.541 [INFO] [Thread-161292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] Compression: none
2025-09-29T16:29:18.549 [DEBUG] [Thread-161292] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:18.607 [DEBUG] [Thread-161292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:18.607 [DEBUG] [Thread-161292] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:18.607 [DEBUG] [Thread-161292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:29:18.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:29:18.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:18.664 [DEBUG] [Thread-161292] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:18.664 [DEBUG] [Thread-161292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:18.664 [DEBUG] [Thread-161292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:18.664 [DEBUG] [Thread-161292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:29:18.664 [DEBUG] [Thread-161292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:18.678 [INFO] [Thread-161292] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:18.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:29:18.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:19.662 [DEBUG] [Thread-161292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:19.662 [DEBUG] [Thread-161292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:19.711 [DEBUG] [Thread-161292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:19.711 [DEBUG] [Thread-161292] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:19.719 [DEBUG] [Thread-161292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:19.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:19.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:29:19.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:29:19.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:19.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:19.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:19.751 [DEBUG] [Thread-161292] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:20.259 [DEBUG] [Thread-161294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:29:21.532 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:29:21.532 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:29:29.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:29:29.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:29:29.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:29:30.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 28, 28), 14.78, 36.6, 0.0, 21.61, 15.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:29:30.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:28:28
2025-09-29T16:29:30.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:29:30.613 [DEBUG] [Thread-161295] [transport.py] [_log()] starting thread (client mode): 0x2e3c0370
2025-09-29T16:29:30.613 [DEBUG] [Thread-161295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:30.634 [DEBUG] [Thread-161295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:29:30.634 [INFO] [Thread-161295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] Compression: none
2025-09-29T16:29:30.637 [DEBUG] [Thread-161295] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:30.656 [DEBUG] [Thread-161295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:30.657 [DEBUG] [Thread-161295] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:30.657 [DEBUG] [Thread-161295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:29:30.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:29:30.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:30.659 [DEBUG] [Thread-161295] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:30.660 [DEBUG] [Thread-161295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:30.660 [DEBUG] [Thread-161295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:30.660 [DEBUG] [Thread-161295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:29:30.660 [DEBUG] [Thread-161295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:30.683 [INFO] [Thread-161295] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:30.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:31.376 [DEBUG] [Thread-161295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:31.379 [DEBUG] [Thread-161295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:31.380 [DEBUG] [Thread-161295] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:29:31.417 [DEBUG] [Thread-161295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:31.418 [DEBUG] [Thread-161295] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:31.420 [DEBUG] [Thread-161295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:31.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:31.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:29:31.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:29:31.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:29:31.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:31.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:29:31.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:31.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:31.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:29:31.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.603539 -999.00  +14.80  24.60     43   +2.40 1 1 1 1 1   887    0 11.95 -24.45 ----- 20.2 24.6 166.4 28.9 20.5 -29.5 20.0 -27.6 21.8 -29.1 22.7 -30.0
2025-09-29T16:29:31.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:29:31.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:29:31.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.603539
2025-09-29T16:29:31.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:29:31.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:29:31.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:29:31.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:29:31.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:29:31.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:28:28', tmtdew=14.78, humidity=36.6, cloud=0.0, wind=21.61, temperature=15.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:29:05.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:29:31.444 [DEBUG] [Thread-161295] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:31.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:29:31.531 [DEBUG] [Thread-161298] [transport.py] [_log()] starting thread (client mode): 0x2e3c0580
2025-09-29T16:29:31.531 [DEBUG] [Thread-161298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:31.546 [DEBUG] [Thread-161298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:29:31.546 [INFO] [Thread-161298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:29:31.553 [DEBUG] [Thread-161298] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:31.554 [DEBUG] [Thread-161298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:29:31.554 [DEBUG] [Thread-161298] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:31.554 [DEBUG] [Thread-161298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:31.554 [DEBUG] [Thread-161298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:31.554 [DEBUG] [Thread-161298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:31.554 [DEBUG] [Thread-161298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] Compression: none
2025-09-29T16:29:31.555 [DEBUG] [Thread-161298] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:31.612 [DEBUG] [Thread-161298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:31.613 [DEBUG] [Thread-161298] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:31.613 [DEBUG] [Thread-161298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:29:31.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:29:31.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:31.668 [DEBUG] [Thread-161298] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:31.669 [DEBUG] [Thread-161298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:31.669 [DEBUG] [Thread-161298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:31.669 [DEBUG] [Thread-161298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:29:31.669 [DEBUG] [Thread-161298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:31.688 [INFO] [Thread-161298] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:31.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:29:31.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:32.654 [DEBUG] [Thread-161298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:32.654 [DEBUG] [Thread-161298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:32.702 [DEBUG] [Thread-161298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:32.702 [DEBUG] [Thread-161298] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:32.710 [DEBUG] [Thread-161298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:32.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:32.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:29:32.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:29:32.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:32.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:32.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:32.741 [DEBUG] [Thread-161298] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:35.296 [DEBUG] [Thread-161300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:29:42.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:29:42.744 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:29:42.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:29:43.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 29, 32), 14.88, 36.37, 0.0, 22.81, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:29:43.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:29:32
2025-09-29T16:29:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:29:43.607 [DEBUG] [Thread-161301] [transport.py] [_log()] starting thread (client mode): 0x2e3c2080
2025-09-29T16:29:43.607 [DEBUG] [Thread-161301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:43.626 [DEBUG] [Thread-161301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:29:43.627 [INFO] [Thread-161301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:29:43.630 [DEBUG] [Thread-161301] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:43.630 [DEBUG] [Thread-161301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:29:43.630 [DEBUG] [Thread-161301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:43.630 [DEBUG] [Thread-161301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:43.630 [DEBUG] [Thread-161301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] Compression: none
2025-09-29T16:29:43.631 [DEBUG] [Thread-161301] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:43.649 [DEBUG] [Thread-161301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:43.649 [DEBUG] [Thread-161301] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:43.650 [DEBUG] [Thread-161301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:29:43.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:29:43.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:43.692 [DEBUG] [Thread-161301] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:43.693 [DEBUG] [Thread-161301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:43.693 [DEBUG] [Thread-161301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:43.693 [DEBUG] [Thread-161301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:29:43.693 [DEBUG] [Thread-161301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:43.712 [INFO] [Thread-161301] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:43.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:44.299 [DEBUG] [Thread-161301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:44.299 [DEBUG] [Thread-161301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:44.299 [DEBUG] [Thread-161301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:29:44.340 [DEBUG] [Thread-161301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:44.340 [DEBUG] [Thread-161301] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:44.342 [DEBUG] [Thread-161301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:44.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:44.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:29:44.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:29:44.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:29:44.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:44.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:29:44.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:44.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:29:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.603886 -999.00  +14.70  21.12     43   +2.40 1 1 1 1 1   887    0 11.99 -28.79 ----- 18.9 21.1 169.8 31.0 20.5 -29.6 19.9 -27.9 21.7 -28.7 22.6 -29.9
2025-09-29T16:29:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:29:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:29:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.603886
2025-09-29T16:29:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:29:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:29:44.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:29:44.365 [DEBUG] [Thread-161301] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:29:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:29:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:29:32', tmtdew=14.88, humidity=36.37, cloud=0.0, wind=22.81, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:29:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:29:44.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:29:44.461 [DEBUG] [Thread-161304] [transport.py] [_log()] starting thread (client mode): 0x2b9cdfc0
2025-09-29T16:29:44.461 [DEBUG] [Thread-161304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:44.476 [DEBUG] [Thread-161304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:29:44.476 [INFO] [Thread-161304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:29:44.484 [DEBUG] [Thread-161304] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:44.484 [DEBUG] [Thread-161304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:29:44.484 [DEBUG] [Thread-161304] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:44.484 [DEBUG] [Thread-161304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:44.484 [DEBUG] [Thread-161304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:44.484 [DEBUG] [Thread-161304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:44.485 [DEBUG] [Thread-161304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:44.486 [DEBUG] [Thread-161304] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:44.486 [DEBUG] [Thread-161304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:44.486 [DEBUG] [Thread-161304] [transport.py] [_log()] Compression: none
2025-09-29T16:29:44.486 [DEBUG] [Thread-161304] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:44.540 [DEBUG] [Thread-161304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:44.541 [DEBUG] [Thread-161304] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:44.542 [DEBUG] [Thread-161304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:29:44.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:29:44.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:44.596 [DEBUG] [Thread-161304] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:44.597 [DEBUG] [Thread-161304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:44.597 [DEBUG] [Thread-161304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:44.597 [DEBUG] [Thread-161304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:29:44.597 [DEBUG] [Thread-161304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:44.615 [INFO] [Thread-161304] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:44.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:29:44.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:45.674 [DEBUG] [Thread-161304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:45.674 [DEBUG] [Thread-161304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:45.722 [DEBUG] [Thread-161304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:45.722 [DEBUG] [Thread-161304] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:45.730 [DEBUG] [Thread-161304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:45.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:45.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:29:45.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:29:45.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:45.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:45.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:45.763 [DEBUG] [Thread-161304] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:48.614 [DEBUG] [Thread-161306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:29:50.325 [DEBUG] [Thread-161307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:29:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:29:55.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:29:55.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:29:56.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 29, 32), 14.88, 36.37, 0.0, 22.81, 15.48, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:29:56.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:29:32
2025-09-29T16:29:56.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:29:56.668 [DEBUG] [Thread-161308] [transport.py] [_log()] starting thread (client mode): 0x2e38c3d0
2025-09-29T16:29:56.668 [DEBUG] [Thread-161308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:56.689 [DEBUG] [Thread-161308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:29:56.689 [INFO] [Thread-161308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:29:56.692 [DEBUG] [Thread-161308] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:56.692 [DEBUG] [Thread-161308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:29:56.692 [DEBUG] [Thread-161308] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:56.692 [DEBUG] [Thread-161308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:56.692 [DEBUG] [Thread-161308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:56.692 [DEBUG] [Thread-161308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:56.692 [DEBUG] [Thread-161308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] Compression: none
2025-09-29T16:29:56.693 [DEBUG] [Thread-161308] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:56.708 [DEBUG] [Thread-161308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:56.708 [DEBUG] [Thread-161308] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:56.709 [DEBUG] [Thread-161308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:29:56.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:29:56.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:56.710 [DEBUG] [Thread-161308] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:56.710 [DEBUG] [Thread-161308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:56.710 [DEBUG] [Thread-161308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:56.710 [DEBUG] [Thread-161308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:29:56.710 [DEBUG] [Thread-161308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:56.722 [INFO] [Thread-161308] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:56.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:57.488 [DEBUG] [Thread-161308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:57.489 [DEBUG] [Thread-161308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:57.489 [DEBUG] [Thread-161308] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:29:57.530 [DEBUG] [Thread-161308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:57.530 [DEBUG] [Thread-161308] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:57.531 [DEBUG] [Thread-161308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:57.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:57.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:29:57.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:29:57.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:29:57.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:57.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:29:57.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:57.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:57.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:29:57.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.603886 -999.00  +14.70  21.12     43   +2.40 1 1 1 1 1   887    0 11.99 -28.79 ----- 18.9 21.1 169.8 31.0 20.5 -29.6 19.9 -27.9 21.7 -28.7 22.6 -29.9
2025-09-29T16:29:57.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:29:57.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:29:57.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.603886
2025-09-29T16:29:57.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:29:57.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:29:57.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:29:57.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:29:57.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:29:57.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:29:32', tmtdew=14.88, humidity=36.37, cloud=0.0, wind=22.81, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:29:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:29:57.545 [DEBUG] [Thread-161308] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:29:57.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:29:57.629 [DEBUG] [Thread-161311] [transport.py] [_log()] starting thread (client mode): 0x2e38d090
2025-09-29T16:29:57.629 [DEBUG] [Thread-161311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:29:57.649 [DEBUG] [Thread-161311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:29:57.649 [INFO] [Thread-161311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] client lang: <none>
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] server lang: <none>
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] kex follows: False
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] Compression: none
2025-09-29T16:29:57.657 [DEBUG] [Thread-161311] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:29:57.715 [DEBUG] [Thread-161311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:29:57.715 [DEBUG] [Thread-161311] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:29:57.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:29:57.715 [DEBUG] [Thread-161311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:29:57.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:29:57.772 [DEBUG] [Thread-161311] [transport.py] [_log()] userauth is OK
2025-09-29T16:29:57.772 [DEBUG] [Thread-161311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:29:57.772 [DEBUG] [Thread-161311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:29:57.772 [DEBUG] [Thread-161311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:29:57.772 [DEBUG] [Thread-161311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:29:57.786 [INFO] [Thread-161311] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:29:57.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:29:57.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:29:58.740 [DEBUG] [Thread-161311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:29:58.740 [DEBUG] [Thread-161311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:29:58.788 [DEBUG] [Thread-161311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:29:58.788 [DEBUG] [Thread-161311] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:29:58.796 [DEBUG] [Thread-161311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:29:58.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:29:58.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:29:58.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:29:58.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:29:58.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:29:58.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:29:58.828 [DEBUG] [Thread-161311] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:30:05.370 [DEBUG] [Thread-161313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:30:08.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:30:08.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:30:08.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:30:09.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 30, 4), 14.79, 36.58, 0.0, 22.85, 15.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:30:09.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:30:04
2025-09-29T16:30:09.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:30:09.696 [DEBUG] [Thread-161314] [transport.py] [_log()] starting thread (client mode): 0x2b94ece0
2025-09-29T16:30:09.696 [DEBUG] [Thread-161314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:30:09.716 [DEBUG] [Thread-161314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:30:09.716 [INFO] [Thread-161314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:30:09.719 [DEBUG] [Thread-161314] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] client lang: <none>
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] server lang: <none>
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] kex follows: False
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:30:09.720 [DEBUG] [Thread-161314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:30:09.721 [DEBUG] [Thread-161314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:30:09.721 [DEBUG] [Thread-161314] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:30:09.721 [DEBUG] [Thread-161314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:30:09.721 [DEBUG] [Thread-161314] [transport.py] [_log()] Compression: none
2025-09-29T16:30:09.721 [DEBUG] [Thread-161314] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:30:09.737 [DEBUG] [Thread-161314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:30:09.738 [DEBUG] [Thread-161314] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:30:09.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:30:09.740 [DEBUG] [Thread-161314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:30:09.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:30:09.742 [DEBUG] [Thread-161314] [transport.py] [_log()] userauth is OK
2025-09-29T16:30:09.742 [DEBUG] [Thread-161314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:30:09.742 [DEBUG] [Thread-161314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:30:09.743 [DEBUG] [Thread-161314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:30:09.743 [DEBUG] [Thread-161314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:30:09.763 [INFO] [Thread-161314] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:30:09.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:30:16.343 [DEBUG] [Thread-161314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:30:16.343 [DEBUG] [Thread-161314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:30:16.344 [DEBUG] [Thread-161314] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:30:16.384 [DEBUG] [Thread-161314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:30:16.385 [DEBUG] [Thread-161314] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:30:16.388 [DEBUG] [Thread-161314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:30:16.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:30:16.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:30:16.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:30:16.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:30:16.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:30:16.489 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:30:16.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:30:16.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:30:16.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:30:16.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.603886 -999.00  +14.70  21.12     43   +2.40 1 1 1 1 1   887    0 11.99 -28.79 ----- 18.9 21.1 169.8 31.0 20.5 -29.6 19.9 -27.9 21.7 -28.7 22.6 -29.9
2025-09-29T16:30:16.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:30:16.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:30:16.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.603886
2025-09-29T16:30:16.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:30:16.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:30:16.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:30:16.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:30:16.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:30:16.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:30:04', tmtdew=14.79, humidity=36.58, cloud=0.0, wind=22.85, temperature=15.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:29:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:30:16.492 [DEBUG] [Thread-161314] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:30:16.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:30:16.587 [DEBUG] [Thread-161317] [transport.py] [_log()] starting thread (client mode): 0x2b94e3b0
2025-09-29T16:30:16.587 [DEBUG] [Thread-161317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:30:16.601 [DEBUG] [Thread-161317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:30:16.602 [INFO] [Thread-161317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:30:16.609 [DEBUG] [Thread-161317] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:30:16.609 [DEBUG] [Thread-161317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:30:16.609 [DEBUG] [Thread-161317] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:30:16.609 [DEBUG] [Thread-161317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:16.609 [DEBUG] [Thread-161317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:16.609 [DEBUG] [Thread-161317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:16.609 [DEBUG] [Thread-161317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:16.610 [DEBUG] [Thread-161317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:30:16.610 [DEBUG] [Thread-161317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:30:16.610 [DEBUG] [Thread-161317] [transport.py] [_log()] client lang: <none>
2025-09-29T16:30:16.610 [DEBUG] [Thread-161317] [transport.py] [_log()] server lang: <none>
2025-09-29T16:30:16.610 [DEBUG] [Thread-161317] [transport.py] [_log()] kex follows: False
2025-09-29T16:30:16.610 [DEBUG] [Thread-161317] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:30:16.610 [DEBUG] [Thread-161317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:30:16.610 [DEBUG] [Thread-161317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:30:16.611 [DEBUG] [Thread-161317] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:30:16.611 [DEBUG] [Thread-161317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:30:16.611 [DEBUG] [Thread-161317] [transport.py] [_log()] Compression: none
2025-09-29T16:30:16.611 [DEBUG] [Thread-161317] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:30:16.668 [DEBUG] [Thread-161317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:30:16.669 [DEBUG] [Thread-161317] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:30:16.670 [DEBUG] [Thread-161317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:30:16.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:30:16.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:30:16.724 [DEBUG] [Thread-161317] [transport.py] [_log()] userauth is OK
2025-09-29T16:30:16.725 [DEBUG] [Thread-161317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:30:16.725 [DEBUG] [Thread-161317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:30:16.725 [DEBUG] [Thread-161317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:30:16.725 [DEBUG] [Thread-161317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:30:16.747 [INFO] [Thread-161317] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:30:16.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:30:16.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:30:17.696 [DEBUG] [Thread-161317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:30:17.696 [DEBUG] [Thread-161317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:30:17.744 [DEBUG] [Thread-161317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:30:17.744 [DEBUG] [Thread-161317] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:30:17.753 [DEBUG] [Thread-161317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:30:17.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:30:17.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:30:17.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:30:17.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:30:17.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:30:17.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:30:17.788 [DEBUG] [Thread-161317] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:30:20.395 [DEBUG] [Thread-161319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:30:21.671 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:30:21.672 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:30:27.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:30:27.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:30:27.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:30:28.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 30, 4), 14.79, 36.58, 0.0, 22.85, 15.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:30:28.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:30:04
2025-09-29T16:30:28.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:30:28.650 [DEBUG] [Thread-161320] [transport.py] [_log()] starting thread (client mode): 0x2e3c35e0
2025-09-29T16:30:28.651 [DEBUG] [Thread-161320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:30:28.672 [DEBUG] [Thread-161320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:30:28.672 [INFO] [Thread-161320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:30:28.676 [DEBUG] [Thread-161320] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:30:28.676 [DEBUG] [Thread-161320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:30:28.676 [DEBUG] [Thread-161320] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:30:28.676 [DEBUG] [Thread-161320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:28.676 [DEBUG] [Thread-161320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:28.676 [DEBUG] [Thread-161320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:28.676 [DEBUG] [Thread-161320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:28.676 [DEBUG] [Thread-161320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] client lang: <none>
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] server lang: <none>
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] kex follows: False
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] Compression: none
2025-09-29T16:30:28.677 [DEBUG] [Thread-161320] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:30:28.695 [DEBUG] [Thread-161320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:30:28.696 [DEBUG] [Thread-161320] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:30:28.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:30:28.697 [DEBUG] [Thread-161320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:30:28.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:30:28.698 [DEBUG] [Thread-161320] [transport.py] [_log()] userauth is OK
2025-09-29T16:30:28.699 [DEBUG] [Thread-161320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:30:28.699 [DEBUG] [Thread-161320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:30:28.699 [DEBUG] [Thread-161320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:30:28.699 [DEBUG] [Thread-161320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:30:28.723 [INFO] [Thread-161320] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:30:28.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:30:29.324 [DEBUG] [Thread-161320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:30:29.324 [DEBUG] [Thread-161320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:30:29.325 [DEBUG] [Thread-161320] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:30:29.365 [DEBUG] [Thread-161320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:30:29.365 [DEBUG] [Thread-161320] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:30:29.368 [DEBUG] [Thread-161320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:30:29.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:30:29.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:30:29.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:30:29.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:30:29.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:30:29.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:30:29.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:30:29.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:30:29.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:30:29.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.604233 -999.00  +14.70  12.06     43   +2.50 1 1 1 1 1   887    0 11.99 -30.71 ----- 10.8 12.1 162.2 23.4 20.5 -28.5 19.8 -27.3 21.7 -28.0 22.7 -28.9
2025-09-29T16:30:29.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:30:29.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:30:29.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.604233
2025-09-29T16:30:29.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:30:29.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:30:29.388 [DEBUG] [Thread-161320] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:30:29.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:30:29.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:30:29.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:30:29.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:30:04', tmtdew=14.79, humidity=36.58, cloud=0.0, wind=22.85, temperature=15.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:30:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:30:29.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:30:29.483 [DEBUG] [Thread-161323] [transport.py] [_log()] starting thread (client mode): 0x2e3c3df0
2025-09-29T16:30:29.483 [DEBUG] [Thread-161323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:30:29.498 [DEBUG] [Thread-161323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:30:29.498 [INFO] [Thread-161323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:30:29.506 [DEBUG] [Thread-161323] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:30:29.506 [DEBUG] [Thread-161323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:30:29.506 [DEBUG] [Thread-161323] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:30:29.506 [DEBUG] [Thread-161323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] client lang: <none>
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] server lang: <none>
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] kex follows: False
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] Compression: none
2025-09-29T16:30:29.507 [DEBUG] [Thread-161323] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:30:29.564 [DEBUG] [Thread-161323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:30:29.565 [DEBUG] [Thread-161323] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:30:29.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:30:29.566 [DEBUG] [Thread-161323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:30:29.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:30:29.620 [DEBUG] [Thread-161323] [transport.py] [_log()] userauth is OK
2025-09-29T16:30:29.621 [DEBUG] [Thread-161323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:30:29.621 [DEBUG] [Thread-161323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:30:29.621 [DEBUG] [Thread-161323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:30:29.621 [DEBUG] [Thread-161323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:30:29.640 [INFO] [Thread-161323] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:30:29.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:30:29.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:30:30.598 [DEBUG] [Thread-161323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:30:30.599 [DEBUG] [Thread-161323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:30:30.646 [DEBUG] [Thread-161323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:30:30.647 [DEBUG] [Thread-161323] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:30:30.655 [DEBUG] [Thread-161323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:30:30.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:30:30.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:30:30.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:30:30.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:30:30.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:30:30.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:30:30.690 [DEBUG] [Thread-161323] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:30:35.441 [DEBUG] [Thread-161325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:30:40.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:30:40.693 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:30:40.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:30:41.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 30, 36), 14.44, 37.6, 0.0, 22.81, 14.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:30:41.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:30:36
2025-09-29T16:30:41.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:30:41.574 [DEBUG] [Thread-161326] [transport.py] [_log()] starting thread (client mode): 0x30ddf7c0
2025-09-29T16:30:41.574 [DEBUG] [Thread-161326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:30:41.589 [DEBUG] [Thread-161326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:30:41.589 [INFO] [Thread-161326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:30:41.592 [DEBUG] [Thread-161326] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] client lang: <none>
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] server lang: <none>
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] kex follows: False
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:30:41.593 [DEBUG] [Thread-161326] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:30:41.594 [DEBUG] [Thread-161326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:30:41.594 [DEBUG] [Thread-161326] [transport.py] [_log()] Compression: none
2025-09-29T16:30:41.594 [DEBUG] [Thread-161326] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:30:41.613 [DEBUG] [Thread-161326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:30:41.613 [DEBUG] [Thread-161326] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:30:41.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:30:41.614 [DEBUG] [Thread-161326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:30:41.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:30:41.617 [DEBUG] [Thread-161326] [transport.py] [_log()] userauth is OK
2025-09-29T16:30:41.617 [DEBUG] [Thread-161326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:30:41.617 [DEBUG] [Thread-161326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:30:41.617 [DEBUG] [Thread-161326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:30:41.617 [DEBUG] [Thread-161326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:30:41.635 [INFO] [Thread-161326] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:30:41.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:30:42.375 [DEBUG] [Thread-161326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:30:42.375 [DEBUG] [Thread-161326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:30:42.375 [DEBUG] [Thread-161326] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:30:42.416 [DEBUG] [Thread-161326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:30:42.416 [DEBUG] [Thread-161326] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:30:42.418 [DEBUG] [Thread-161326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:30:42.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:30:42.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:30:42.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:30:42.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:30:42.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:30:42.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:30:42.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:30:42.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:30:42.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:30:42.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.604233 -999.00  +14.70  12.06     43   +2.50 1 1 1 1 1   887    0 11.99 -30.71 ----- 10.8 12.1 162.2 23.4 20.5 -28.5 19.8 -27.3 21.7 -28.0 22.7 -28.9
2025-09-29T16:30:42.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:30:42.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:30:42.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.604233
2025-09-29T16:30:42.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:30:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:30:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:30:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:30:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:30:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:30:36', tmtdew=14.44, humidity=37.6, cloud=0.0, wind=22.81, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:30:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:30:42.436 [DEBUG] [Thread-161326] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:30:42.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:30:42.525 [DEBUG] [Thread-161329] [transport.py] [_log()] starting thread (client mode): 0x2e362110
2025-09-29T16:30:42.525 [DEBUG] [Thread-161329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:30:42.540 [DEBUG] [Thread-161329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:30:42.540 [INFO] [Thread-161329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] client lang: <none>
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] server lang: <none>
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] kex follows: False
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:30:42.548 [DEBUG] [Thread-161329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:30:42.549 [DEBUG] [Thread-161329] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:30:42.549 [DEBUG] [Thread-161329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:30:42.549 [DEBUG] [Thread-161329] [transport.py] [_log()] Compression: none
2025-09-29T16:30:42.549 [DEBUG] [Thread-161329] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:30:42.604 [DEBUG] [Thread-161329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:30:42.604 [DEBUG] [Thread-161329] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:30:42.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:30:42.605 [DEBUG] [Thread-161329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:30:42.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:30:42.660 [DEBUG] [Thread-161329] [transport.py] [_log()] userauth is OK
2025-09-29T16:30:42.661 [DEBUG] [Thread-161329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:30:42.661 [DEBUG] [Thread-161329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:30:42.661 [DEBUG] [Thread-161329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:30:42.661 [DEBUG] [Thread-161329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:30:42.680 [INFO] [Thread-161329] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:30:42.680 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:30:42.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:30:43.622 [DEBUG] [Thread-161329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:30:43.622 [DEBUG] [Thread-161329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:30:43.670 [DEBUG] [Thread-161329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:30:43.670 [DEBUG] [Thread-161329] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:30:43.679 [DEBUG] [Thread-161329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:30:43.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:30:43.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:30:43.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:30:43.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:30:43.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:30:43.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:30:43.713 [DEBUG] [Thread-161329] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:30:48.643 [DEBUG] [Thread-161331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:30:50.475 [DEBUG] [Thread-161332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:30:53.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:30:53.716 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:30:53.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:30:54.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 30, 36), 14.44, 37.6, 0.0, 22.81, 14.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:30:54.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:30:36
2025-09-29T16:30:54.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:30:54.563 [DEBUG] [Thread-161333] [transport.py] [_log()] starting thread (client mode): 0x2b94f850
2025-09-29T16:30:54.563 [DEBUG] [Thread-161333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:30:54.583 [DEBUG] [Thread-161333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:30:54.583 [INFO] [Thread-161333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] client lang: <none>
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] server lang: <none>
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] kex follows: False
2025-09-29T16:30:54.587 [DEBUG] [Thread-161333] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:30:54.588 [DEBUG] [Thread-161333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:30:54.588 [DEBUG] [Thread-161333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:30:54.588 [DEBUG] [Thread-161333] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:30:54.588 [DEBUG] [Thread-161333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:30:54.588 [DEBUG] [Thread-161333] [transport.py] [_log()] Compression: none
2025-09-29T16:30:54.588 [DEBUG] [Thread-161333] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:30:54.606 [DEBUG] [Thread-161333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:30:54.606 [DEBUG] [Thread-161333] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:30:54.607 [DEBUG] [Thread-161333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:30:54.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:30:54.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:30:54.648 [DEBUG] [Thread-161333] [transport.py] [_log()] userauth is OK
2025-09-29T16:30:54.648 [DEBUG] [Thread-161333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:30:54.649 [DEBUG] [Thread-161333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:30:54.649 [DEBUG] [Thread-161333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:30:54.649 [DEBUG] [Thread-161333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:30:54.681 [INFO] [Thread-161333] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:30:54.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:30:55.278 [DEBUG] [Thread-161333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:30:55.279 [DEBUG] [Thread-161333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:30:55.279 [DEBUG] [Thread-161333] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:30:55.320 [DEBUG] [Thread-161333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:30:55.320 [DEBUG] [Thread-161333] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:30:55.322 [DEBUG] [Thread-161333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:30:55.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:30:55.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:30:55.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:30:55.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:30:55.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:30:55.343 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:30:55.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:30:55.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:30:55.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:30:55.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.604580 -999.00  +14.90  15.88     43   +2.50 1 1 1 1 1   887    0 11.88 -35.35 ----- 11.7 15.9 186.8 18.5 20.5 -28.0 19.9 -27.4 21.8 -27.4 22.8 -29.0
2025-09-29T16:30:55.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:30:55.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:30:55.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.604580
2025-09-29T16:30:55.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:30:55.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:30:55.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:30:55.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:30:55.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:30:55.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:30:36', tmtdew=14.44, humidity=37.6, cloud=0.0, wind=22.81, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:30:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:30:55.346 [DEBUG] [Thread-161333] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:30:55.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:30:55.441 [DEBUG] [Thread-161336] [transport.py] [_log()] starting thread (client mode): 0x2b9cd570
2025-09-29T16:30:55.441 [DEBUG] [Thread-161336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:30:55.456 [DEBUG] [Thread-161336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:30:55.456 [INFO] [Thread-161336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:30:55.464 [DEBUG] [Thread-161336] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:30:55.464 [DEBUG] [Thread-161336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:30:55.464 [DEBUG] [Thread-161336] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:30:55.464 [DEBUG] [Thread-161336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:55.465 [DEBUG] [Thread-161336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:30:55.465 [DEBUG] [Thread-161336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:55.465 [DEBUG] [Thread-161336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:30:55.465 [DEBUG] [Thread-161336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:30:55.465 [DEBUG] [Thread-161336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:30:55.465 [DEBUG] [Thread-161336] [transport.py] [_log()] client lang: <none>
2025-09-29T16:30:55.465 [DEBUG] [Thread-161336] [transport.py] [_log()] server lang: <none>
2025-09-29T16:30:55.465 [DEBUG] [Thread-161336] [transport.py] [_log()] kex follows: False
2025-09-29T16:30:55.466 [DEBUG] [Thread-161336] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:30:55.466 [DEBUG] [Thread-161336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:30:55.466 [DEBUG] [Thread-161336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:30:55.466 [DEBUG] [Thread-161336] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:30:55.466 [DEBUG] [Thread-161336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:30:55.466 [DEBUG] [Thread-161336] [transport.py] [_log()] Compression: none
2025-09-29T16:30:55.466 [DEBUG] [Thread-161336] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:30:55.520 [DEBUG] [Thread-161336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:30:55.520 [DEBUG] [Thread-161336] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:30:55.521 [DEBUG] [Thread-161336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:30:55.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:30:55.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:30:55.577 [DEBUG] [Thread-161336] [transport.py] [_log()] userauth is OK
2025-09-29T16:30:55.577 [DEBUG] [Thread-161336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:30:55.577 [DEBUG] [Thread-161336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:30:55.577 [DEBUG] [Thread-161336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:30:55.577 [DEBUG] [Thread-161336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:30:55.596 [INFO] [Thread-161336] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:30:55.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:30:55.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:30:56.546 [DEBUG] [Thread-161336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:30:56.546 [DEBUG] [Thread-161336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:30:56.594 [DEBUG] [Thread-161336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:30:56.594 [DEBUG] [Thread-161336] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:30:56.603 [DEBUG] [Thread-161336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:30:56.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:30:56.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:30:56.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:30:56.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:30:56.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:30:56.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:30:56.638 [DEBUG] [Thread-161336] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:05.520 [DEBUG] [Thread-161338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:31:06.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:31:06.641 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:31:06.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:31:07.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 30, 36), 14.44, 37.6, 0.0, 22.81, 14.95, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:31:07.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:30:36
2025-09-29T16:31:07.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:31:07.497 [DEBUG] [Thread-161339] [transport.py] [_log()] starting thread (client mode): 0x2e3dcbb0
2025-09-29T16:31:07.497 [DEBUG] [Thread-161339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:07.516 [DEBUG] [Thread-161339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:31:07.516 [INFO] [Thread-161339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] Compression: none
2025-09-29T16:31:07.518 [DEBUG] [Thread-161339] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:07.530 [DEBUG] [Thread-161339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:07.531 [DEBUG] [Thread-161339] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:07.531 [DEBUG] [Thread-161339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:31:07.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:31:07.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:07.531 [DEBUG] [Thread-161339] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:07.531 [DEBUG] [Thread-161339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:07.531 [DEBUG] [Thread-161339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:07.531 [DEBUG] [Thread-161339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:31:07.531 [DEBUG] [Thread-161339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:07.540 [INFO] [Thread-161339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:07.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:31:08.316 [DEBUG] [Thread-161339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:31:08.316 [DEBUG] [Thread-161339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:31:08.316 [DEBUG] [Thread-161339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:31:08.357 [DEBUG] [Thread-161339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:31:08.357 [DEBUG] [Thread-161339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:31:08.360 [DEBUG] [Thread-161339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:31:08.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:31:08.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:31:08.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:31:08.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:31:08.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:31:08.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:31:08.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:31:08.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:31:08.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:31:08.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.604580 -999.00  +14.90  15.88     43   +2.50 1 1 1 1 1   887    0 11.88 -35.35 ----- 11.7 15.9 186.8 18.5 20.5 -28.0 19.9 -27.4 21.8 -27.4 22.8 -29.0
2025-09-29T16:31:08.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:31:08.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:31:08.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.604580
2025-09-29T16:31:08.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:31:08.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:31:08.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:31:08.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:31:08.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:31:08.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:30:36', tmtdew=14.44, humidity=37.6, cloud=0.0, wind=22.81, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:30:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:31:08.381 [DEBUG] [Thread-161339] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:08.459 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:31:08.470 [DEBUG] [Thread-161342] [transport.py] [_log()] starting thread (client mode): 0x2e3614e0
2025-09-29T16:31:08.470 [DEBUG] [Thread-161342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:08.485 [DEBUG] [Thread-161342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:31:08.485 [INFO] [Thread-161342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:08.493 [DEBUG] [Thread-161342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:08.494 [DEBUG] [Thread-161342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:08.494 [DEBUG] [Thread-161342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:08.494 [DEBUG] [Thread-161342] [transport.py] [_log()] Compression: none
2025-09-29T16:31:08.494 [DEBUG] [Thread-161342] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:08.551 [DEBUG] [Thread-161342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:08.551 [DEBUG] [Thread-161342] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:08.552 [DEBUG] [Thread-161342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:31:08.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:31:08.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:08.608 [DEBUG] [Thread-161342] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:08.608 [DEBUG] [Thread-161342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:08.608 [DEBUG] [Thread-161342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:08.608 [DEBUG] [Thread-161342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:31:08.608 [DEBUG] [Thread-161342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:08.625 [INFO] [Thread-161342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:08.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:31:08.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:31:09.640 [DEBUG] [Thread-161342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:31:09.641 [DEBUG] [Thread-161342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:31:09.689 [DEBUG] [Thread-161342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:31:09.689 [DEBUG] [Thread-161342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:31:09.697 [DEBUG] [Thread-161342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:31:09.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:31:09.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:31:09.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:31:09.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:31:09.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:31:09.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:31:09.729 [DEBUG] [Thread-161342] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:19.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:31:19.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:31:19.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:31:20.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 31, 8), 14.5, 37.45, 0.0, 23.64, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:31:20.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:31:08
2025-09-29T16:31:20.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:31:20.563 [DEBUG] [Thread-161344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:31:20.594 [DEBUG] [Thread-161345] [transport.py] [_log()] starting thread (client mode): 0x2e3dd0c0
2025-09-29T16:31:20.594 [DEBUG] [Thread-161345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:20.609 [DEBUG] [Thread-161345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:31:20.609 [INFO] [Thread-161345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:31:20.613 [DEBUG] [Thread-161345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:20.613 [DEBUG] [Thread-161345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:31:20.613 [DEBUG] [Thread-161345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:20.613 [DEBUG] [Thread-161345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:20.613 [DEBUG] [Thread-161345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:20.613 [DEBUG] [Thread-161345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:20.613 [DEBUG] [Thread-161345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] Compression: none
2025-09-29T16:31:20.614 [DEBUG] [Thread-161345] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:20.630 [DEBUG] [Thread-161345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:20.630 [DEBUG] [Thread-161345] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:20.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:31:20.631 [DEBUG] [Thread-161345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:31:20.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:20.634 [DEBUG] [Thread-161345] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:20.634 [DEBUG] [Thread-161345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:20.634 [DEBUG] [Thread-161345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:20.634 [DEBUG] [Thread-161345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:31:20.634 [DEBUG] [Thread-161345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:20.647 [INFO] [Thread-161345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:20.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:31:21.394 [DEBUG] [Thread-161345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:31:21.395 [DEBUG] [Thread-161345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:31:21.395 [DEBUG] [Thread-161345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:31:21.435 [DEBUG] [Thread-161345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:31:21.436 [DEBUG] [Thread-161345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:31:21.438 [DEBUG] [Thread-161345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:31:21.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:31:21.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:31:21.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:31:21.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:31:21.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:31:21.462 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:31:21.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:31:21.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:31:21.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:31:21.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.604580 -999.00  +14.90  15.88     43   +2.50 1 1 1 1 1   887    0 11.88 -35.35 ----- 11.7 15.9 186.8 18.5 20.5 -28.0 19.9 -27.4 21.8 -27.4 22.8 -29.0
2025-09-29T16:31:21.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:31:21.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:31:21.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.604580
2025-09-29T16:31:21.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:31:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:31:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:31:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:31:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:31:21.464 [DEBUG] [Thread-161345] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:21.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:31:08', tmtdew=14.5, humidity=37.45, cloud=0.0, wind=23.64, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:30:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:31:21.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:31:21.556 [DEBUG] [Thread-161348] [transport.py] [_log()] starting thread (client mode): 0x2b94cd60
2025-09-29T16:31:21.556 [DEBUG] [Thread-161348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:21.570 [DEBUG] [Thread-161348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:31:21.570 [INFO] [Thread-161348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:31:21.578 [DEBUG] [Thread-161348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:21.578 [DEBUG] [Thread-161348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:31:21.578 [DEBUG] [Thread-161348] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:21.578 [DEBUG] [Thread-161348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:21.578 [DEBUG] [Thread-161348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] Compression: none
2025-09-29T16:31:21.579 [DEBUG] [Thread-161348] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:21.636 [DEBUG] [Thread-161348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:21.636 [DEBUG] [Thread-161348] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:21.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:31:21.637 [DEBUG] [Thread-161348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:31:21.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:21.692 [DEBUG] [Thread-161348] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:21.693 [DEBUG] [Thread-161348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:21.693 [DEBUG] [Thread-161348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:21.693 [DEBUG] [Thread-161348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:31:21.693 [DEBUG] [Thread-161348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:21.711 [INFO] [Thread-161348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:21.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:31:21.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:31:21.811 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:31:21.812 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:31:22.646 [DEBUG] [Thread-161348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:31:22.646 [DEBUG] [Thread-161348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:31:22.694 [DEBUG] [Thread-161348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:31:22.694 [DEBUG] [Thread-161348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:31:22.703 [DEBUG] [Thread-161348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:31:22.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:31:22.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:31:22.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:31:22.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:31:22.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:31:22.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:31:22.737 [DEBUG] [Thread-161348] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:32.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:31:32.739 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:31:32.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:31:33.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 31, 8), 14.5, 37.45, 0.0, 23.64, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:31:33.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:31:08
2025-09-29T16:31:33.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:31:33.594 [DEBUG] [Thread-161350] [transport.py] [_log()] starting thread (client mode): 0x2e3c2d10
2025-09-29T16:31:33.594 [DEBUG] [Thread-161350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:33.613 [DEBUG] [Thread-161350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:31:33.613 [INFO] [Thread-161350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:33.616 [DEBUG] [Thread-161350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:33.617 [DEBUG] [Thread-161350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:33.617 [DEBUG] [Thread-161350] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:33.617 [DEBUG] [Thread-161350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:33.617 [DEBUG] [Thread-161350] [transport.py] [_log()] Compression: none
2025-09-29T16:31:33.617 [DEBUG] [Thread-161350] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:33.634 [DEBUG] [Thread-161350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:33.634 [DEBUG] [Thread-161350] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:33.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:31:33.635 [DEBUG] [Thread-161350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:31:33.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:33.637 [DEBUG] [Thread-161350] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:33.637 [DEBUG] [Thread-161350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:33.637 [DEBUG] [Thread-161350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:33.637 [DEBUG] [Thread-161350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:31:33.637 [DEBUG] [Thread-161350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:33.654 [INFO] [Thread-161350] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:33.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:31:34.267 [DEBUG] [Thread-161350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:31:34.268 [DEBUG] [Thread-161350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:31:34.268 [DEBUG] [Thread-161350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:31:34.308 [DEBUG] [Thread-161350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:31:34.308 [DEBUG] [Thread-161350] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:31:34.311 [DEBUG] [Thread-161350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:31:34.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:31:34.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:31:34.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:31:34.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:31:34.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:31:34.331 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:31:34.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:31:34.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:31:34.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:31:34.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.604927 -999.00  +15.10  19.41     43   +2.60 1 1 1 1 1   887    0 11.97 -34.03 ----- 20.5 19.4 175.2 22.8 20.5 -28.8 19.7 -29.6 21.8 -27.6 22.7 -29.6
2025-09-29T16:31:34.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:31:34.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:31:34.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.604927
2025-09-29T16:31:34.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:31:34.333 [DEBUG] [Thread-161350] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:34.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:31:34.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:31:34.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:31:34.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:31:34.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:31:08', tmtdew=14.5, humidity=37.45, cloud=0.0, wind=23.64, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:31:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:31:34.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:31:34.418 [DEBUG] [Thread-161353] [transport.py] [_log()] starting thread (client mode): 0x2e362ad0
2025-09-29T16:31:34.418 [DEBUG] [Thread-161353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:34.433 [DEBUG] [Thread-161353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:31:34.433 [INFO] [Thread-161353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] Compression: none
2025-09-29T16:31:34.441 [DEBUG] [Thread-161353] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:34.500 [DEBUG] [Thread-161353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:34.501 [DEBUG] [Thread-161353] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:34.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:31:34.502 [DEBUG] [Thread-161353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:31:34.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:34.557 [DEBUG] [Thread-161353] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:34.557 [DEBUG] [Thread-161353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:34.557 [DEBUG] [Thread-161353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:34.557 [DEBUG] [Thread-161353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:31:34.557 [DEBUG] [Thread-161353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:34.576 [INFO] [Thread-161353] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:34.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:31:34.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:31:35.565 [DEBUG] [Thread-161353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:31:35.566 [DEBUG] [Thread-161353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:31:35.594 [DEBUG] [Thread-161355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:31:35.613 [DEBUG] [Thread-161353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:31:35.613 [DEBUG] [Thread-161353] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:31:35.623 [DEBUG] [Thread-161353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:31:35.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:31:35.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:31:35.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:31:35.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:31:35.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:31:35.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:31:35.660 [DEBUG] [Thread-161353] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:45.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:31:45.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:31:45.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:31:46.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 31, 40), 14.49, 37.47, 0.0, 30.28, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:31:46.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:31:40
2025-09-29T16:31:46.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:31:46.525 [DEBUG] [Thread-161356] [transport.py] [_log()] starting thread (client mode): 0x2b968100
2025-09-29T16:31:46.525 [DEBUG] [Thread-161356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:46.545 [DEBUG] [Thread-161356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:31:46.545 [INFO] [Thread-161356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:31:46.548 [DEBUG] [Thread-161356] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:46.548 [DEBUG] [Thread-161356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] Compression: none
2025-09-29T16:31:46.549 [DEBUG] [Thread-161356] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:46.566 [DEBUG] [Thread-161356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:46.567 [DEBUG] [Thread-161356] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:46.567 [DEBUG] [Thread-161356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:31:46.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:31:46.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:46.569 [DEBUG] [Thread-161356] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:46.569 [DEBUG] [Thread-161356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:46.570 [DEBUG] [Thread-161356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:46.570 [DEBUG] [Thread-161356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:31:46.570 [DEBUG] [Thread-161356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:46.586 [INFO] [Thread-161356] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:46.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:31:47.324 [DEBUG] [Thread-161356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:31:47.325 [DEBUG] [Thread-161356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:31:47.325 [DEBUG] [Thread-161356] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:31:47.365 [DEBUG] [Thread-161356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:31:47.365 [DEBUG] [Thread-161356] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:31:47.368 [DEBUG] [Thread-161356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:31:47.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:31:47.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:31:47.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:31:47.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:31:47.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:31:47.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:31:47.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:31:47.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:31:47.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:31:47.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.604927 -999.00  +15.10  19.41     43   +2.60 1 1 1 1 1   887    0 11.97 -34.03 ----- 20.5 19.4 175.2 22.8 20.5 -28.8 19.7 -29.6 21.8 -27.6 22.7 -29.6
2025-09-29T16:31:47.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:31:47.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:31:47.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.604927
2025-09-29T16:31:47.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:31:47.388 [DEBUG] [Thread-161356] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:47.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:31:47.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:31:47.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:31:47.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:31:47.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:31:40', tmtdew=14.49, humidity=37.47, cloud=0.0, wind=30.28, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:31:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:31:47.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:31:47.485 [DEBUG] [Thread-161359] [transport.py] [_log()] starting thread (client mode): 0x2e3c0280
2025-09-29T16:31:47.485 [DEBUG] [Thread-161359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:47.500 [DEBUG] [Thread-161359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:31:47.500 [INFO] [Thread-161359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:31:47.507 [DEBUG] [Thread-161359] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:47.508 [DEBUG] [Thread-161359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:47.509 [DEBUG] [Thread-161359] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:47.509 [DEBUG] [Thread-161359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:47.509 [DEBUG] [Thread-161359] [transport.py] [_log()] Compression: none
2025-09-29T16:31:47.509 [DEBUG] [Thread-161359] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:47.568 [DEBUG] [Thread-161359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:47.568 [DEBUG] [Thread-161359] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:47.569 [DEBUG] [Thread-161359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:31:47.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:31:47.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:47.629 [DEBUG] [Thread-161359] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:47.629 [DEBUG] [Thread-161359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:47.629 [DEBUG] [Thread-161359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:47.629 [DEBUG] [Thread-161359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:31:47.630 [DEBUG] [Thread-161359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:47.648 [INFO] [Thread-161359] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:47.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:31:47.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:31:48.642 [DEBUG] [Thread-161359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:31:48.643 [DEBUG] [Thread-161359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:31:48.690 [DEBUG] [Thread-161359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:31:48.690 [DEBUG] [Thread-161359] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:31:48.695 [DEBUG] [Thread-161361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:31:48.698 [DEBUG] [Thread-161359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:31:48.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:31:48.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:31:48.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:31:48.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:31:48.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:31:48.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:31:48.731 [DEBUG] [Thread-161359] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:31:50.635 [DEBUG] [Thread-161362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:31:58.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:31:58.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:31:58.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:31:59.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 31, 40), 14.49, 37.47, 0.0, 30.28, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:31:59.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:31:40
2025-09-29T16:31:59.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:31:59.590 [DEBUG] [Thread-161363] [transport.py] [_log()] starting thread (client mode): 0x2e363ee0
2025-09-29T16:31:59.590 [DEBUG] [Thread-161363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:31:59.613 [DEBUG] [Thread-161363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:31:59.613 [INFO] [Thread-161363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:31:59.616 [DEBUG] [Thread-161363] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:31:59.616 [DEBUG] [Thread-161363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:31:59.616 [DEBUG] [Thread-161363] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:31:59.616 [DEBUG] [Thread-161363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] client lang: <none>
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] server lang: <none>
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] kex follows: False
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:31:59.617 [DEBUG] [Thread-161363] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:31:59.618 [DEBUG] [Thread-161363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:31:59.618 [DEBUG] [Thread-161363] [transport.py] [_log()] Compression: none
2025-09-29T16:31:59.618 [DEBUG] [Thread-161363] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:31:59.636 [DEBUG] [Thread-161363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:31:59.637 [DEBUG] [Thread-161363] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:31:59.638 [DEBUG] [Thread-161363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:31:59.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:31:59.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:31:59.641 [DEBUG] [Thread-161363] [transport.py] [_log()] userauth is OK
2025-09-29T16:31:59.641 [DEBUG] [Thread-161363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:31:59.641 [DEBUG] [Thread-161363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:31:59.641 [DEBUG] [Thread-161363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:31:59.641 [DEBUG] [Thread-161363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:31:59.659 [INFO] [Thread-161363] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:31:59.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:00.251 [DEBUG] [Thread-161363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:00.251 [DEBUG] [Thread-161363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:00.252 [DEBUG] [Thread-161363] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:32:00.292 [DEBUG] [Thread-161363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:00.292 [DEBUG] [Thread-161363] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:00.296 [DEBUG] [Thread-161363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:00.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:00.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:32:00.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:32:00.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:32:00.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:00.319 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:32:00.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:00.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:00.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:32:00.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.605275 -999.00  +15.10  16.01     43   +2.60 1 1 1 1 1   887    0 12.05 -34.85 ----- 15.0 16.0 157.7 25.4 20.4 -28.6 19.8 -28.2 21.6 -29.6 22.6 -30.1
2025-09-29T16:32:00.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:32:00.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:32:00.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.605275
2025-09-29T16:32:00.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:32:00.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:32:00.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:32:00.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:32:00.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:32:00.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:31:40', tmtdew=14.49, humidity=37.47, cloud=0.0, wind=30.28, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:31:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:32:00.322 [DEBUG] [Thread-161363] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:00.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:32:00.417 [DEBUG] [Thread-161366] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-29T16:32:00.417 [DEBUG] [Thread-161366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:00.432 [DEBUG] [Thread-161366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:32:00.432 [INFO] [Thread-161366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] Compression: none
2025-09-29T16:32:00.440 [DEBUG] [Thread-161366] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:00.496 [DEBUG] [Thread-161366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:00.496 [DEBUG] [Thread-161366] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:00.496 [DEBUG] [Thread-161366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:32:00.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:32:00.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:00.552 [DEBUG] [Thread-161366] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:00.553 [DEBUG] [Thread-161366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:00.553 [DEBUG] [Thread-161366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:00.553 [DEBUG] [Thread-161366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:32:00.553 [DEBUG] [Thread-161366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:00.572 [INFO] [Thread-161366] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:00.573 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:32:00.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:01.527 [DEBUG] [Thread-161366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:01.528 [DEBUG] [Thread-161366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:01.575 [DEBUG] [Thread-161366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:01.575 [DEBUG] [Thread-161366] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:01.584 [DEBUG] [Thread-161366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:01.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:01.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:32:01.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:32:01.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:01.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:01.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:01.619 [DEBUG] [Thread-161366] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:05.668 [DEBUG] [Thread-161368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:32:11.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:32:11.617 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:32:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:32:12.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 31, 40), 14.49, 37.47, 0.0, 30.28, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:32:12.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:31:40
2025-09-29T16:32:12.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:32:12.512 [DEBUG] [Thread-161369] [transport.py] [_log()] starting thread (client mode): 0x2e363160
2025-09-29T16:32:12.512 [DEBUG] [Thread-161369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:12.531 [DEBUG] [Thread-161369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:32:12.531 [INFO] [Thread-161369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:32:12.532 [DEBUG] [Thread-161369] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] Compression: none
2025-09-29T16:32:12.533 [DEBUG] [Thread-161369] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:12.544 [DEBUG] [Thread-161369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:12.545 [DEBUG] [Thread-161369] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:12.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:32:12.545 [DEBUG] [Thread-161369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:32:12.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:12.546 [DEBUG] [Thread-161369] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:12.546 [DEBUG] [Thread-161369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:12.546 [DEBUG] [Thread-161369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:12.546 [DEBUG] [Thread-161369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:32:12.546 [DEBUG] [Thread-161369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:12.563 [INFO] [Thread-161369] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:12.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:13.352 [DEBUG] [Thread-161369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:13.353 [DEBUG] [Thread-161369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:13.353 [DEBUG] [Thread-161369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:32:13.394 [DEBUG] [Thread-161369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:13.394 [DEBUG] [Thread-161369] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:13.395 [DEBUG] [Thread-161369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:13.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:13.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:32:13.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:32:13.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:32:13.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:13.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:32:13.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.605275 -999.00  +15.10  16.01     43   +2.60 1 1 1 1 1   887    0 12.05 -34.85 ----- 15.0 16.0 157.7 25.4 20.4 -28.6 19.8 -28.2 21.6 -29.6 22.6 -30.1
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.605275
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:32:13.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:31:40', tmtdew=14.49, humidity=37.47, cloud=0.0, wind=30.28, temperature=15.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:31:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:32:13.412 [DEBUG] [Thread-161369] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:13.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:32:13.498 [DEBUG] [Thread-161372] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bc0
2025-09-29T16:32:13.498 [DEBUG] [Thread-161372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:13.512 [DEBUG] [Thread-161372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:32:13.512 [INFO] [Thread-161372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] Compression: none
2025-09-29T16:32:13.520 [DEBUG] [Thread-161372] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:13.575 [DEBUG] [Thread-161372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:13.575 [DEBUG] [Thread-161372] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:13.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:32:13.575 [DEBUG] [Thread-161372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:32:13.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:13.632 [DEBUG] [Thread-161372] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:13.632 [DEBUG] [Thread-161372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:13.632 [DEBUG] [Thread-161372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:13.633 [DEBUG] [Thread-161372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:32:13.633 [DEBUG] [Thread-161372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:13.650 [INFO] [Thread-161372] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:13.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:32:13.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:14.603 [DEBUG] [Thread-161372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:14.603 [DEBUG] [Thread-161372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:14.651 [DEBUG] [Thread-161372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:14.651 [DEBUG] [Thread-161372] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:14.660 [DEBUG] [Thread-161372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:14.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:14.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:32:14.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:32:14.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:14.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:14.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:14.695 [DEBUG] [Thread-161372] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:20.715 [DEBUG] [Thread-161374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:32:21.952 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:32:21.953 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:32:24.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:32:24.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:32:24.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:32:25.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 32, 11), 14.48, 37.5, 0.0, 27.24, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:32:25.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:32:11
2025-09-29T16:32:25.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:32:25.553 [DEBUG] [Thread-161375] [transport.py] [_log()] starting thread (client mode): 0x2b9ce350
2025-09-29T16:32:25.553 [DEBUG] [Thread-161375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:25.574 [DEBUG] [Thread-161375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:32:25.574 [INFO] [Thread-161375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:25.577 [DEBUG] [Thread-161375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:25.578 [DEBUG] [Thread-161375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:25.578 [DEBUG] [Thread-161375] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:25.578 [DEBUG] [Thread-161375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:25.578 [DEBUG] [Thread-161375] [transport.py] [_log()] Compression: none
2025-09-29T16:32:25.578 [DEBUG] [Thread-161375] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:25.593 [DEBUG] [Thread-161375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:25.594 [DEBUG] [Thread-161375] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:25.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:32:25.594 [DEBUG] [Thread-161375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:32:25.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:25.595 [DEBUG] [Thread-161375] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:25.595 [DEBUG] [Thread-161375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:25.595 [DEBUG] [Thread-161375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:25.595 [DEBUG] [Thread-161375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:32:25.596 [DEBUG] [Thread-161375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:25.607 [INFO] [Thread-161375] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:25.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:26.348 [DEBUG] [Thread-161375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:26.349 [DEBUG] [Thread-161375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:26.349 [DEBUG] [Thread-161375] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:32:26.389 [DEBUG] [Thread-161375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:26.389 [DEBUG] [Thread-161375] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:26.392 [DEBUG] [Thread-161375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:26.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:26.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:32:26.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:32:26.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:32:26.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:26.413 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:32:26.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:26.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:26.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:32:26.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.605275 -999.00  +15.10  16.01     43   +2.60 1 1 1 1 1   887    0 12.05 -34.85 ----- 15.0 16.0 157.7 25.4 20.4 -28.6 19.8 -28.2 21.6 -29.6 22.6 -30.1
2025-09-29T16:32:26.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:32:26.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:32:26.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.605275
2025-09-29T16:32:26.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:32:26.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:32:26.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:32:26.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:32:26.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:32:26.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:32:11', tmtdew=14.48, humidity=37.5, cloud=0.0, wind=27.24, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:31:35.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:32:26.416 [DEBUG] [Thread-161375] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:26.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:32:26.509 [DEBUG] [Thread-161378] [transport.py] [_log()] starting thread (client mode): 0x2e3c1300
2025-09-29T16:32:26.509 [DEBUG] [Thread-161378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:26.524 [DEBUG] [Thread-161378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:32:26.524 [INFO] [Thread-161378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:32:26.532 [DEBUG] [Thread-161378] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:26.532 [DEBUG] [Thread-161378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] Compression: none
2025-09-29T16:32:26.533 [DEBUG] [Thread-161378] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:26.594 [DEBUG] [Thread-161378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:26.594 [DEBUG] [Thread-161378] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:26.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:32:26.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:26.596 [DEBUG] [Thread-161378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:32:26.652 [DEBUG] [Thread-161378] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:26.652 [DEBUG] [Thread-161378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:26.653 [DEBUG] [Thread-161378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:26.653 [DEBUG] [Thread-161378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:32:26.653 [DEBUG] [Thread-161378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:26.675 [INFO] [Thread-161378] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:26.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:32:26.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:27.617 [DEBUG] [Thread-161378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:27.617 [DEBUG] [Thread-161378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:27.665 [DEBUG] [Thread-161378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:27.665 [DEBUG] [Thread-161378] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:27.673 [DEBUG] [Thread-161378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:27.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:27.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:32:27.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:32:27.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:27.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:27.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:27.705 [DEBUG] [Thread-161378] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:35.746 [DEBUG] [Thread-161380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:32:37.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:32:37.702 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:32:37.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:32:38.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 32, 11), 14.48, 37.5, 0.0, 27.24, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:32:38.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:32:11
2025-09-29T16:32:38.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:32:38.557 [DEBUG] [Thread-161381] [transport.py] [_log()] starting thread (client mode): 0x2b94d0c0
2025-09-29T16:32:38.557 [DEBUG] [Thread-161381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:38.579 [DEBUG] [Thread-161381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:32:38.579 [INFO] [Thread-161381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] Compression: none
2025-09-29T16:32:38.583 [DEBUG] [Thread-161381] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:38.597 [DEBUG] [Thread-161381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:38.597 [DEBUG] [Thread-161381] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:38.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:32:38.598 [DEBUG] [Thread-161381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:32:38.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:38.600 [DEBUG] [Thread-161381] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:38.601 [DEBUG] [Thread-161381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:38.601 [DEBUG] [Thread-161381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:38.601 [DEBUG] [Thread-161381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:32:38.601 [DEBUG] [Thread-161381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:38.624 [INFO] [Thread-161381] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:38.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:39.271 [DEBUG] [Thread-161381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:39.271 [DEBUG] [Thread-161381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:39.271 [DEBUG] [Thread-161381] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:32:39.312 [DEBUG] [Thread-161381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:39.312 [DEBUG] [Thread-161381] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:39.315 [DEBUG] [Thread-161381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:39.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:39.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:32:39.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:32:39.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:32:39.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:39.338 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:32:39.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:39.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:39.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:32:39.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.605622 -999.00  +15.10  24.60     42   +2.50 1 1 1 1 1   887    0 11.70 -34.93 ----- 26.1 24.6 162.8 29.8 20.5 -29.1 19.8 -27.5 21.8 -27.7 22.6 -30.0
2025-09-29T16:32:39.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:32:39.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:32:39.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.605622
2025-09-29T16:32:39.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:32:39.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:32:39.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:32:39.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:32:39.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:32:39.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:32:11', tmtdew=14.48, humidity=37.5, cloud=0.0, wind=27.24, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:32:05.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:32:39.340 [DEBUG] [Thread-161381] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:39.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:32:39.441 [DEBUG] [Thread-161384] [transport.py] [_log()] starting thread (client mode): 0x2e361930
2025-09-29T16:32:39.441 [DEBUG] [Thread-161384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:39.456 [DEBUG] [Thread-161384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:32:39.456 [INFO] [Thread-161384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:32:39.464 [DEBUG] [Thread-161384] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:39.464 [DEBUG] [Thread-161384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:32:39.464 [DEBUG] [Thread-161384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:39.464 [DEBUG] [Thread-161384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:39.464 [DEBUG] [Thread-161384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:39.464 [DEBUG] [Thread-161384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:39.464 [DEBUG] [Thread-161384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:39.464 [DEBUG] [Thread-161384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] Compression: none
2025-09-29T16:32:39.465 [DEBUG] [Thread-161384] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:39.519 [DEBUG] [Thread-161384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:39.520 [DEBUG] [Thread-161384] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:39.520 [DEBUG] [Thread-161384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:32:39.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:32:39.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:39.577 [DEBUG] [Thread-161384] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:39.577 [DEBUG] [Thread-161384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:39.577 [DEBUG] [Thread-161384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:39.577 [DEBUG] [Thread-161384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:32:39.577 [DEBUG] [Thread-161384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:39.596 [INFO] [Thread-161384] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:39.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:32:39.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:40.556 [DEBUG] [Thread-161384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:40.556 [DEBUG] [Thread-161384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:40.604 [DEBUG] [Thread-161384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:40.604 [DEBUG] [Thread-161384] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:40.613 [DEBUG] [Thread-161384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:40.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:40.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:32:40.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:32:40.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:40.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:40.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:40.647 [DEBUG] [Thread-161384] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:48.734 [DEBUG] [Thread-161386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:32:50.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:32:50.650 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:32:50.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:32:50.788 [DEBUG] [Thread-161387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:32:51.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 32, 43), 14.42, 37.23, 0.0, 23.11, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:32:51.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:32:43
2025-09-29T16:32:51.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:32:51.496 [DEBUG] [Thread-161388] [transport.py] [_log()] starting thread (client mode): 0x2e3765f0
2025-09-29T16:32:51.496 [DEBUG] [Thread-161388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:51.515 [DEBUG] [Thread-161388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:32:51.515 [INFO] [Thread-161388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:51.519 [DEBUG] [Thread-161388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:51.520 [DEBUG] [Thread-161388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:51.520 [DEBUG] [Thread-161388] [transport.py] [_log()] Compression: none
2025-09-29T16:32:51.520 [DEBUG] [Thread-161388] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:51.537 [DEBUG] [Thread-161388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:51.538 [DEBUG] [Thread-161388] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:51.538 [DEBUG] [Thread-161388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:32:51.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:32:51.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:51.541 [DEBUG] [Thread-161388] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:51.541 [DEBUG] [Thread-161388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:51.541 [DEBUG] [Thread-161388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:51.541 [DEBUG] [Thread-161388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:32:51.541 [DEBUG] [Thread-161388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:51.559 [INFO] [Thread-161388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:51.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:52.314 [DEBUG] [Thread-161388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:52.314 [DEBUG] [Thread-161388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:52.314 [DEBUG] [Thread-161388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:32:52.355 [DEBUG] [Thread-161388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:52.355 [DEBUG] [Thread-161388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:52.358 [DEBUG] [Thread-161388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:52.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:52.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:32:52.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:32:52.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:32:52.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:52.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:32:52.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:52.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:32:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.605622 -999.00  +15.10  24.60     42   +2.50 1 1 1 1 1   887    0 11.70 -34.93 ----- 26.1 24.6 162.8 29.8 20.5 -29.1 19.8 -27.5 21.8 -27.7 22.6 -30.0
2025-09-29T16:32:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:32:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:32:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.605622
2025-09-29T16:32:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:32:52.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:32:52.383 [DEBUG] [Thread-161388] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:32:52.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:32:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:32:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:32:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:32:43', tmtdew=14.42, humidity=37.23, cloud=0.0, wind=23.11, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:32:05.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:32:52.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:32:52.478 [DEBUG] [Thread-161391] [transport.py] [_log()] starting thread (client mode): 0x2b91d1e0
2025-09-29T16:32:52.478 [DEBUG] [Thread-161391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:32:52.492 [DEBUG] [Thread-161391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:32:52.492 [INFO] [Thread-161391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:32:52.500 [DEBUG] [Thread-161391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] client lang: <none>
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] server lang: <none>
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] kex follows: False
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] Compression: none
2025-09-29T16:32:52.501 [DEBUG] [Thread-161391] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:32:52.555 [DEBUG] [Thread-161391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:32:52.556 [DEBUG] [Thread-161391] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:32:52.556 [DEBUG] [Thread-161391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:32:52.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:32:52.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:32:52.612 [DEBUG] [Thread-161391] [transport.py] [_log()] userauth is OK
2025-09-29T16:32:52.613 [DEBUG] [Thread-161391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:32:52.613 [DEBUG] [Thread-161391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:32:52.613 [DEBUG] [Thread-161391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:32:52.613 [DEBUG] [Thread-161391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:32:52.632 [INFO] [Thread-161391] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:32:52.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:32:52.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:32:53.569 [DEBUG] [Thread-161391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:32:53.570 [DEBUG] [Thread-161391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:32:53.618 [DEBUG] [Thread-161391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:32:53.618 [DEBUG] [Thread-161391] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:32:53.627 [DEBUG] [Thread-161391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:32:53.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:32:53.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:32:53.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:32:53.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:32:53.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:32:53.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:32:53.661 [DEBUG] [Thread-161391] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:03.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:33:03.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:33:03.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:33:04.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 32, 43), 14.42, 37.23, 0.0, 23.11, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:33:04.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:32:43
2025-09-29T16:33:04.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:33:04.521 [DEBUG] [Thread-161393] [transport.py] [_log()] starting thread (client mode): 0x2b91e050
2025-09-29T16:33:04.522 [DEBUG] [Thread-161393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:04.540 [DEBUG] [Thread-161393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:33:04.541 [INFO] [Thread-161393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:04.544 [DEBUG] [Thread-161393] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:04.545 [DEBUG] [Thread-161393] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:04.545 [DEBUG] [Thread-161393] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:04.545 [DEBUG] [Thread-161393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:04.545 [DEBUG] [Thread-161393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:04.545 [DEBUG] [Thread-161393] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:04.545 [DEBUG] [Thread-161393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:04.545 [DEBUG] [Thread-161393] [transport.py] [_log()] Compression: none
2025-09-29T16:33:04.545 [DEBUG] [Thread-161393] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:04.553 [DEBUG] [Thread-161393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:04.554 [DEBUG] [Thread-161393] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:04.554 [DEBUG] [Thread-161393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:33:04.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:33:04.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:04.556 [DEBUG] [Thread-161393] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:04.556 [DEBUG] [Thread-161393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:04.556 [DEBUG] [Thread-161393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:04.556 [DEBUG] [Thread-161393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:33:04.556 [DEBUG] [Thread-161393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:04.580 [INFO] [Thread-161393] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:04.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:05.215 [DEBUG] [Thread-161393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:05.216 [DEBUG] [Thread-161393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:05.216 [DEBUG] [Thread-161393] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:33:05.257 [DEBUG] [Thread-161393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:05.258 [DEBUG] [Thread-161393] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:05.260 [DEBUG] [Thread-161393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:05.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:05.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:33:05.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:33:05.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:33:05.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:05.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:33:05.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:05.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:05.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:33:05.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.605969 -999.00  +14.90  25.18     43   +2.50 1 1 1 1 1   887    0 11.85 -35.61 ----- 18.2 25.2 159.2 30.4 20.3 -29.3 19.8 -27.4 21.6 -29.6 22.4 -30.4
2025-09-29T16:33:05.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:33:05.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:33:05.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.605969
2025-09-29T16:33:05.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:33:05.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:33:05.282 [DEBUG] [Thread-161393] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:05.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:33:05.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:33:05.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:33:05.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:32:43', tmtdew=14.42, humidity=37.23, cloud=0.0, wind=23.11, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:32:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:33:05.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:33:05.376 [DEBUG] [Thread-161396] [transport.py] [_log()] starting thread (client mode): 0x2e3ddea0
2025-09-29T16:33:05.377 [DEBUG] [Thread-161396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:05.392 [DEBUG] [Thread-161396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:33:05.392 [INFO] [Thread-161396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:33:05.399 [DEBUG] [Thread-161396] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:05.400 [DEBUG] [Thread-161396] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:05.401 [DEBUG] [Thread-161396] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:05.401 [DEBUG] [Thread-161396] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:05.401 [DEBUG] [Thread-161396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:05.401 [DEBUG] [Thread-161396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:05.401 [DEBUG] [Thread-161396] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:05.401 [DEBUG] [Thread-161396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:05.401 [DEBUG] [Thread-161396] [transport.py] [_log()] Compression: none
2025-09-29T16:33:05.401 [DEBUG] [Thread-161396] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:05.456 [DEBUG] [Thread-161396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:05.457 [DEBUG] [Thread-161396] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:05.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:33:05.458 [DEBUG] [Thread-161396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:33:05.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:05.512 [DEBUG] [Thread-161396] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:05.512 [DEBUG] [Thread-161396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:05.513 [DEBUG] [Thread-161396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:05.513 [DEBUG] [Thread-161396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:33:05.513 [DEBUG] [Thread-161396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:05.532 [INFO] [Thread-161396] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:05.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:33:05.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:05.819 [DEBUG] [Thread-161398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:33:06.546 [DEBUG] [Thread-161396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:06.547 [DEBUG] [Thread-161396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:06.595 [DEBUG] [Thread-161396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:06.595 [DEBUG] [Thread-161396] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:06.603 [DEBUG] [Thread-161396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:06.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:06.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:33:06.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:33:06.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:06.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:06.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:06.635 [DEBUG] [Thread-161396] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:16.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:33:16.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:33:16.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:33:17.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 32, 43), 14.42, 37.23, 0.0, 23.11, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:33:17.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:32:43
2025-09-29T16:33:17.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:33:17.535 [DEBUG] [Thread-161399] [transport.py] [_log()] starting thread (client mode): 0x2e3df220
2025-09-29T16:33:17.535 [DEBUG] [Thread-161399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:17.554 [DEBUG] [Thread-161399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:33:17.555 [INFO] [Thread-161399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] Compression: none
2025-09-29T16:33:17.558 [DEBUG] [Thread-161399] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:17.573 [DEBUG] [Thread-161399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:17.573 [DEBUG] [Thread-161399] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:17.573 [DEBUG] [Thread-161399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:33:17.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:33:17.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:17.575 [DEBUG] [Thread-161399] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:17.575 [DEBUG] [Thread-161399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:17.575 [DEBUG] [Thread-161399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:17.575 [DEBUG] [Thread-161399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:33:17.575 [DEBUG] [Thread-161399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:17.588 [INFO] [Thread-161399] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:17.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:18.372 [DEBUG] [Thread-161399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:18.373 [DEBUG] [Thread-161399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:18.373 [DEBUG] [Thread-161399] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:33:18.413 [DEBUG] [Thread-161399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:18.413 [DEBUG] [Thread-161399] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:18.416 [DEBUG] [Thread-161399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:18.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:18.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:33:18.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:33:18.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:33:18.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:18.437 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:33:18.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:18.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:18.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:33:18.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.605969 -999.00  +14.90  25.18     43   +2.50 1 1 1 1 1   887    0 11.85 -35.61 ----- 18.2 25.2 159.2 30.4 20.3 -29.3 19.8 -27.4 21.6 -29.6 22.4 -30.4
2025-09-29T16:33:18.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:33:18.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:33:18.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.605969
2025-09-29T16:33:18.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:33:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:33:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:33:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:33:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:33:18.439 [DEBUG] [Thread-161399] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:18.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:32:43', tmtdew=14.42, humidity=37.23, cloud=0.0, wind=23.11, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:32:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:33:18.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:33:18.540 [DEBUG] [Thread-161402] [transport.py] [_log()] starting thread (client mode): 0x2b94f280
2025-09-29T16:33:18.540 [DEBUG] [Thread-161402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:18.558 [DEBUG] [Thread-161402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:33:18.558 [INFO] [Thread-161402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:18.569 [DEBUG] [Thread-161402] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:18.570 [DEBUG] [Thread-161402] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:18.570 [DEBUG] [Thread-161402] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:18.570 [DEBUG] [Thread-161402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:18.570 [DEBUG] [Thread-161402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:18.570 [DEBUG] [Thread-161402] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:18.570 [DEBUG] [Thread-161402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:18.570 [DEBUG] [Thread-161402] [transport.py] [_log()] Compression: none
2025-09-29T16:33:18.570 [DEBUG] [Thread-161402] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:18.623 [DEBUG] [Thread-161402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:18.624 [DEBUG] [Thread-161402] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:18.624 [DEBUG] [Thread-161402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:33:18.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:33:18.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:18.680 [DEBUG] [Thread-161402] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:18.681 [DEBUG] [Thread-161402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:18.681 [DEBUG] [Thread-161402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:18.681 [DEBUG] [Thread-161402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:33:18.681 [DEBUG] [Thread-161402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:18.700 [INFO] [Thread-161402] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:18.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:33:18.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:19.697 [DEBUG] [Thread-161402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:19.698 [DEBUG] [Thread-161402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:19.746 [DEBUG] [Thread-161402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:19.746 [DEBUG] [Thread-161402] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:19.755 [DEBUG] [Thread-161402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:19.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:19.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:33:19.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:33:19.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:19.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:19.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:19.790 [DEBUG] [Thread-161402] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:20.850 [DEBUG] [Thread-161404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:33:22.091 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:33:22.092 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:33:29.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:33:29.793 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:33:29.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:33:30.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 33, 15), 14.47, 37.13, 0.0, 23.56, 14.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:33:30.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:33:15
2025-09-29T16:33:30.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:33:30.638 [DEBUG] [Thread-161405] [transport.py] [_log()] starting thread (client mode): 0x2e349300
2025-09-29T16:33:30.638 [DEBUG] [Thread-161405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:30.659 [DEBUG] [Thread-161405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:33:30.659 [INFO] [Thread-161405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] Compression: none
2025-09-29T16:33:30.662 [DEBUG] [Thread-161405] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:30.679 [DEBUG] [Thread-161405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:30.679 [DEBUG] [Thread-161405] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:30.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:33:30.681 [DEBUG] [Thread-161405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:33:30.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:30.683 [DEBUG] [Thread-161405] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:30.683 [DEBUG] [Thread-161405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:30.683 [DEBUG] [Thread-161405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:30.683 [DEBUG] [Thread-161405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:33:30.683 [DEBUG] [Thread-161405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:30.708 [INFO] [Thread-161405] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:30.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:31.502 [DEBUG] [Thread-161405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:31.503 [DEBUG] [Thread-161405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:31.503 [DEBUG] [Thread-161405] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:33:31.543 [DEBUG] [Thread-161405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:31.543 [DEBUG] [Thread-161405] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:31.546 [DEBUG] [Thread-161405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:31.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:31.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:33:31.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:33:31.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:33:31.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:31.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:33:31.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:31.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:31.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:33:31.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.605969 -999.00  +14.90  25.18     43   +2.50 1 1 1 1 1   887    0 11.85 -35.61 ----- 18.2 25.2 159.2 30.4 20.3 -29.3 19.8 -27.4 21.6 -29.6 22.4 -30.4
2025-09-29T16:33:31.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:33:31.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:33:31.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.605969
2025-09-29T16:33:31.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:33:31.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:33:31.580 [DEBUG] [Thread-161405] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:33:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:33:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:33:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:33:15', tmtdew=14.47, humidity=37.13, cloud=0.0, wind=23.56, temperature=14.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:32:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:33:31.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:33:31.676 [DEBUG] [Thread-161408] [transport.py] [_log()] starting thread (client mode): 0x2e34aef0
2025-09-29T16:33:31.676 [DEBUG] [Thread-161408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:31.691 [DEBUG] [Thread-161408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:33:31.691 [INFO] [Thread-161408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:33:31.698 [DEBUG] [Thread-161408] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:31.699 [DEBUG] [Thread-161408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:33:31.699 [DEBUG] [Thread-161408] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:31.699 [DEBUG] [Thread-161408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:31.699 [DEBUG] [Thread-161408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:31.699 [DEBUG] [Thread-161408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:31.699 [DEBUG] [Thread-161408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:31.699 [DEBUG] [Thread-161408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:31.699 [DEBUG] [Thread-161408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:31.700 [DEBUG] [Thread-161408] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:31.700 [DEBUG] [Thread-161408] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:31.700 [DEBUG] [Thread-161408] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:31.700 [DEBUG] [Thread-161408] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:31.700 [DEBUG] [Thread-161408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:31.700 [DEBUG] [Thread-161408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:31.700 [DEBUG] [Thread-161408] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:31.700 [DEBUG] [Thread-161408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:31.701 [DEBUG] [Thread-161408] [transport.py] [_log()] Compression: none
2025-09-29T16:33:31.701 [DEBUG] [Thread-161408] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:31.756 [DEBUG] [Thread-161408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:31.757 [DEBUG] [Thread-161408] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:31.757 [DEBUG] [Thread-161408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:33:31.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:33:31.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:31.812 [DEBUG] [Thread-161408] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:31.813 [DEBUG] [Thread-161408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:31.813 [DEBUG] [Thread-161408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:31.813 [DEBUG] [Thread-161408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:33:31.813 [DEBUG] [Thread-161408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:31.835 [INFO] [Thread-161408] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:31.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:33:31.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:32.816 [DEBUG] [Thread-161408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:32.817 [DEBUG] [Thread-161408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:32.864 [DEBUG] [Thread-161408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:32.864 [DEBUG] [Thread-161408] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:32.873 [DEBUG] [Thread-161408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:32.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:32.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:33:32.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:33:32.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:32.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:32.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:32.908 [DEBUG] [Thread-161408] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:35.879 [DEBUG] [Thread-161410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:33:42.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:33:42.910 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:33:42.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:33:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 33, 15), 14.47, 37.13, 0.0, 23.56, 14.91, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:33:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:33:15
2025-09-29T16:33:43.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:33:43.752 [DEBUG] [Thread-161411] [transport.py] [_log()] starting thread (client mode): 0x2b94fd60
2025-09-29T16:33:43.752 [DEBUG] [Thread-161411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:43.772 [DEBUG] [Thread-161411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:33:43.772 [INFO] [Thread-161411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:33:43.775 [DEBUG] [Thread-161411] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:43.775 [DEBUG] [Thread-161411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:33:43.775 [DEBUG] [Thread-161411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:43.775 [DEBUG] [Thread-161411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] Compression: none
2025-09-29T16:33:43.776 [DEBUG] [Thread-161411] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:43.793 [DEBUG] [Thread-161411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:43.793 [DEBUG] [Thread-161411] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:43.793 [DEBUG] [Thread-161411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:33:43.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:33:43.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:43.794 [DEBUG] [Thread-161411] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:43.794 [DEBUG] [Thread-161411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:43.794 [DEBUG] [Thread-161411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:43.794 [DEBUG] [Thread-161411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:33:43.794 [DEBUG] [Thread-161411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:43.807 [INFO] [Thread-161411] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:43.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:44.443 [DEBUG] [Thread-161411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:44.443 [DEBUG] [Thread-161411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:44.443 [DEBUG] [Thread-161411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:33:44.484 [DEBUG] [Thread-161411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:44.484 [DEBUG] [Thread-161411] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:44.486 [DEBUG] [Thread-161411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:44.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:44.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:33:44.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:33:44.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:33:44.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:44.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:33:44.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.606316 -999.00  +14.70  22.62     43   +2.40 1 1 1 1 1   887    0 11.86 -32.98 ----- 23.7 22.6 134.0 26.3 20.2 -29.1 19.6 -27.5 21.4 -28.8 22.3 -28.8
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.606316
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:33:44.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:33:15', tmtdew=14.47, humidity=37.13, cloud=0.0, wind=23.56, temperature=14.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:33:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:33:44.505 [DEBUG] [Thread-161411] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:44.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:33:44.592 [DEBUG] [Thread-161414] [transport.py] [_log()] starting thread (client mode): 0x2e3dd870
2025-09-29T16:33:44.592 [DEBUG] [Thread-161414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:44.607 [DEBUG] [Thread-161414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:33:44.607 [INFO] [Thread-161414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:44.614 [DEBUG] [Thread-161414] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:44.615 [DEBUG] [Thread-161414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:44.615 [DEBUG] [Thread-161414] [transport.py] [_log()] Compression: none
2025-09-29T16:33:44.615 [DEBUG] [Thread-161414] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:44.671 [DEBUG] [Thread-161414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:44.671 [DEBUG] [Thread-161414] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:44.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:33:44.671 [DEBUG] [Thread-161414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:33:44.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:44.728 [DEBUG] [Thread-161414] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:44.728 [DEBUG] [Thread-161414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:44.728 [DEBUG] [Thread-161414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:44.728 [DEBUG] [Thread-161414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:33:44.728 [DEBUG] [Thread-161414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:44.746 [INFO] [Thread-161414] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:44.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:33:44.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:45.733 [DEBUG] [Thread-161414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:45.733 [DEBUG] [Thread-161414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:45.782 [DEBUG] [Thread-161414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:45.782 [DEBUG] [Thread-161414] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:45.791 [DEBUG] [Thread-161414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:45.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:45.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:33:45.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:33:45.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:45.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:45.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:45.822 [DEBUG] [Thread-161414] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:48.762 [DEBUG] [Thread-161416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:33:50.925 [DEBUG] [Thread-161417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:33:55.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:33:55.825 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:33:55.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:33:56.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 33, 47), 14.59, 37.1, 0.0, 21.28, 14.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:33:56.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:33:47
2025-09-29T16:33:56.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:33:56.661 [DEBUG] [Thread-161418] [transport.py] [_log()] starting thread (client mode): 0x30ddf7c0
2025-09-29T16:33:56.661 [DEBUG] [Thread-161418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:56.680 [DEBUG] [Thread-161418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:33:56.680 [INFO] [Thread-161418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:33:56.683 [DEBUG] [Thread-161418] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:56.684 [DEBUG] [Thread-161418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:56.685 [DEBUG] [Thread-161418] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:56.685 [DEBUG] [Thread-161418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:56.685 [DEBUG] [Thread-161418] [transport.py] [_log()] Compression: none
2025-09-29T16:33:56.685 [DEBUG] [Thread-161418] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:56.702 [DEBUG] [Thread-161418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:56.702 [DEBUG] [Thread-161418] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:56.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:33:56.703 [DEBUG] [Thread-161418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:33:56.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:56.705 [DEBUG] [Thread-161418] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:56.706 [DEBUG] [Thread-161418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:56.706 [DEBUG] [Thread-161418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:56.706 [DEBUG] [Thread-161418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:33:56.706 [DEBUG] [Thread-161418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:56.723 [INFO] [Thread-161418] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:56.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:57.504 [DEBUG] [Thread-161418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:57.505 [DEBUG] [Thread-161418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:57.505 [DEBUG] [Thread-161418] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:33:57.545 [DEBUG] [Thread-161418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:57.545 [DEBUG] [Thread-161418] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:57.548 [DEBUG] [Thread-161418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:57.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:57.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:33:57.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:33:57.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:33:57.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:57.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:33:57.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:57.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:57.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:33:57.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.606316 -999.00  +14.70  22.62     43   +2.40 1 1 1 1 1   887    0 11.86 -32.98 ----- 23.7 22.6 134.0 26.3 20.2 -29.1 19.6 -27.5 21.4 -28.8 22.3 -28.8
2025-09-29T16:33:57.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:33:57.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:33:57.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.606316
2025-09-29T16:33:57.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:33:57.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:33:57.573 [DEBUG] [Thread-161418] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:33:57.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:33:57.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:33:57.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:33:57.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:33:47', tmtdew=14.59, humidity=37.1, cloud=0.0, wind=21.28, temperature=14.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:33:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:33:57.655 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:33:57.665 [DEBUG] [Thread-161421] [transport.py] [_log()] starting thread (client mode): 0x2e34a890
2025-09-29T16:33:57.665 [DEBUG] [Thread-161421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:33:57.680 [DEBUG] [Thread-161421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:33:57.680 [INFO] [Thread-161421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:33:57.688 [DEBUG] [Thread-161421] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:33:57.688 [DEBUG] [Thread-161421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:33:57.688 [DEBUG] [Thread-161421] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:33:57.688 [DEBUG] [Thread-161421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:57.688 [DEBUG] [Thread-161421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:33:57.688 [DEBUG] [Thread-161421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:57.688 [DEBUG] [Thread-161421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] client lang: <none>
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] server lang: <none>
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] kex follows: False
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:33:57.689 [DEBUG] [Thread-161421] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:33:57.690 [DEBUG] [Thread-161421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:33:57.690 [DEBUG] [Thread-161421] [transport.py] [_log()] Compression: none
2025-09-29T16:33:57.690 [DEBUG] [Thread-161421] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:33:57.745 [DEBUG] [Thread-161421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:33:57.745 [DEBUG] [Thread-161421] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:33:57.745 [DEBUG] [Thread-161421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:33:57.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:33:57.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:33:57.800 [DEBUG] [Thread-161421] [transport.py] [_log()] userauth is OK
2025-09-29T16:33:57.800 [DEBUG] [Thread-161421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:33:57.801 [DEBUG] [Thread-161421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:33:57.801 [DEBUG] [Thread-161421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:33:57.801 [DEBUG] [Thread-161421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:33:57.819 [INFO] [Thread-161421] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:33:57.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:33:57.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:33:58.815 [DEBUG] [Thread-161421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:33:58.815 [DEBUG] [Thread-161421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:33:58.863 [DEBUG] [Thread-161421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:33:58.863 [DEBUG] [Thread-161421] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:33:58.872 [DEBUG] [Thread-161421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:33:58.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:33:58.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:33:58.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:33:58.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:33:58.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:33:58.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:33:58.906 [DEBUG] [Thread-161421] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:05.966 [DEBUG] [Thread-161423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:34:08.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:34:08.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:34:08.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:34:09.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 33, 47), 14.59, 37.1, 0.0, 21.28, 14.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:34:09.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:33:47
2025-09-29T16:34:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:34:09.742 [DEBUG] [Thread-161424] [transport.py] [_log()] starting thread (client mode): 0x2b94c550
2025-09-29T16:34:09.742 [DEBUG] [Thread-161424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:34:09.762 [DEBUG] [Thread-161424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:34:09.762 [INFO] [Thread-161424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] client lang: <none>
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] server lang: <none>
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] kex follows: False
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] Compression: none
2025-09-29T16:34:09.765 [DEBUG] [Thread-161424] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:34:09.774 [DEBUG] [Thread-161424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:34:09.774 [DEBUG] [Thread-161424] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:34:09.774 [DEBUG] [Thread-161424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:34:09.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:34:09.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:34:09.776 [DEBUG] [Thread-161424] [transport.py] [_log()] userauth is OK
2025-09-29T16:34:09.776 [DEBUG] [Thread-161424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:34:09.776 [DEBUG] [Thread-161424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:34:09.777 [DEBUG] [Thread-161424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:34:09.777 [DEBUG] [Thread-161424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:34:09.796 [INFO] [Thread-161424] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:34:09.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:34:10.410 [DEBUG] [Thread-161424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:34:10.411 [DEBUG] [Thread-161424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:34:10.411 [DEBUG] [Thread-161424] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:34:10.451 [DEBUG] [Thread-161424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:34:10.451 [DEBUG] [Thread-161424] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:34:10.454 [DEBUG] [Thread-161424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:34:10.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:34:10.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:34:10.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:34:10.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:34:10.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:34:10.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:34:10.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:34:10.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:34:10.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:34:10.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.606664 -999.00  +14.50  12.76     44   +2.40 1 1 1 1 1   887    0 11.78 -31.88 ----- 11.8 12.8 154.0 26.9 20.1 -28.9 19.6 -28.3 21.4 -28.3 22.2 -29.5
2025-09-29T16:34:10.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:34:10.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:34:10.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.606664
2025-09-29T16:34:10.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:34:10.478 [DEBUG] [Thread-161424] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:10.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:34:10.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:34:10.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:34:10.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:34:10.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:33:47', tmtdew=14.59, humidity=37.1, cloud=0.0, wind=21.28, temperature=14.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:33:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:34:10.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:34:10.573 [DEBUG] [Thread-161427] [transport.py] [_log()] starting thread (client mode): 0x2e3df220
2025-09-29T16:34:10.573 [DEBUG] [Thread-161427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:34:10.589 [DEBUG] [Thread-161427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:34:10.589 [INFO] [Thread-161427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:34:10.596 [DEBUG] [Thread-161427] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:34:10.596 [DEBUG] [Thread-161427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:34:10.596 [DEBUG] [Thread-161427] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] client lang: <none>
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] server lang: <none>
2025-09-29T16:34:10.597 [DEBUG] [Thread-161427] [transport.py] [_log()] kex follows: False
2025-09-29T16:34:10.598 [DEBUG] [Thread-161427] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:34:10.598 [DEBUG] [Thread-161427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:34:10.598 [DEBUG] [Thread-161427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:34:10.598 [DEBUG] [Thread-161427] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:34:10.598 [DEBUG] [Thread-161427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:34:10.598 [DEBUG] [Thread-161427] [transport.py] [_log()] Compression: none
2025-09-29T16:34:10.598 [DEBUG] [Thread-161427] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:34:10.656 [DEBUG] [Thread-161427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:34:10.657 [DEBUG] [Thread-161427] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:34:10.657 [DEBUG] [Thread-161427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:34:10.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:34:10.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:34:10.713 [DEBUG] [Thread-161427] [transport.py] [_log()] userauth is OK
2025-09-29T16:34:10.713 [DEBUG] [Thread-161427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:34:10.713 [DEBUG] [Thread-161427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:34:10.713 [DEBUG] [Thread-161427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:34:10.713 [DEBUG] [Thread-161427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:34:10.733 [INFO] [Thread-161427] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:34:10.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:34:10.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:34:11.749 [DEBUG] [Thread-161427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:34:11.749 [DEBUG] [Thread-161427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:34:11.797 [DEBUG] [Thread-161427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:34:11.797 [DEBUG] [Thread-161427] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:34:11.806 [DEBUG] [Thread-161427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:34:11.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:34:11.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:34:11.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:34:11.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:34:11.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:34:11.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:34:11.841 [DEBUG] [Thread-161427] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:21.008 [DEBUG] [Thread-161429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:34:21.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:34:21.842 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:34:21.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:34:22.232 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:34:22.233 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:34:22.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 34, 19), 14.43, 37.48, 0.0, 20.42, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:34:22.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:34:19
2025-09-29T16:34:22.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:34:22.715 [DEBUG] [Thread-161430] [transport.py] [_log()] starting thread (client mode): 0x2b91c5b0
2025-09-29T16:34:22.715 [DEBUG] [Thread-161430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:34:22.736 [DEBUG] [Thread-161430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:34:22.736 [INFO] [Thread-161430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] client lang: <none>
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] server lang: <none>
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] kex follows: False
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:34:22.739 [DEBUG] [Thread-161430] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:34:22.740 [DEBUG] [Thread-161430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:34:22.740 [DEBUG] [Thread-161430] [transport.py] [_log()] Compression: none
2025-09-29T16:34:22.740 [DEBUG] [Thread-161430] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:34:22.754 [DEBUG] [Thread-161430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:34:22.754 [DEBUG] [Thread-161430] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:34:22.755 [DEBUG] [Thread-161430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:34:22.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:34:22.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:34:22.755 [DEBUG] [Thread-161430] [transport.py] [_log()] userauth is OK
2025-09-29T16:34:22.755 [DEBUG] [Thread-161430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:34:22.755 [DEBUG] [Thread-161430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:34:22.755 [DEBUG] [Thread-161430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:34:22.755 [DEBUG] [Thread-161430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:34:22.768 [INFO] [Thread-161430] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:34:22.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:34:23.560 [DEBUG] [Thread-161430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:34:23.560 [DEBUG] [Thread-161430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:34:23.560 [DEBUG] [Thread-161430] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:34:23.601 [DEBUG] [Thread-161430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:34:23.601 [DEBUG] [Thread-161430] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:34:23.603 [DEBUG] [Thread-161430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:34:23.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:34:23.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:34:23.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:34:23.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:34:23.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:34:23.621 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:34:23.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.606664 -999.00  +14.50  12.76     44   +2.40 1 1 1 1 1   887    0 11.78 -31.88 ----- 11.8 12.8 154.0 26.9 20.1 -28.9 19.6 -28.3 21.4 -28.3 22.2 -29.5
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.606664
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:34:23.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:34:19', tmtdew=14.43, humidity=37.48, cloud=0.0, wind=20.42, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:33:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:34:23.622 [DEBUG] [Thread-161430] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:23.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:34:23.705 [DEBUG] [Thread-161433] [transport.py] [_log()] starting thread (client mode): 0x2b91f970
2025-09-29T16:34:23.705 [DEBUG] [Thread-161433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:34:23.720 [DEBUG] [Thread-161433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:34:23.720 [INFO] [Thread-161433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:34:23.727 [DEBUG] [Thread-161433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:34:23.727 [DEBUG] [Thread-161433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] client lang: <none>
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] server lang: <none>
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] kex follows: False
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] Compression: none
2025-09-29T16:34:23.728 [DEBUG] [Thread-161433] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:34:23.786 [DEBUG] [Thread-161433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:34:23.786 [DEBUG] [Thread-161433] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:34:23.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:34:23.787 [DEBUG] [Thread-161433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:34:23.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:34:23.844 [DEBUG] [Thread-161433] [transport.py] [_log()] userauth is OK
2025-09-29T16:34:23.844 [DEBUG] [Thread-161433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:34:23.844 [DEBUG] [Thread-161433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:34:23.844 [DEBUG] [Thread-161433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:34:23.844 [DEBUG] [Thread-161433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:34:23.862 [INFO] [Thread-161433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:34:23.862 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:34:23.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:34:24.855 [DEBUG] [Thread-161433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:34:24.855 [DEBUG] [Thread-161433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:34:24.903 [DEBUG] [Thread-161433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:34:24.903 [DEBUG] [Thread-161433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:34:24.912 [DEBUG] [Thread-161433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:34:24.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:34:24.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:34:24.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:34:24.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:34:24.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:34:24.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:34:24.946 [DEBUG] [Thread-161433] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:34.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:34:34.948 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:34:34.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:34:35.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 34, 19), 14.43, 37.48, 0.0, 20.42, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:34:35.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:34:19
2025-09-29T16:34:35.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:34:35.791 [DEBUG] [Thread-161435] [transport.py] [_log()] starting thread (client mode): 0x2b94fee0
2025-09-29T16:34:35.791 [DEBUG] [Thread-161435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:34:35.811 [DEBUG] [Thread-161435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:34:35.811 [INFO] [Thread-161435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] client lang: <none>
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] server lang: <none>
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] kex follows: False
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] Compression: none
2025-09-29T16:34:35.815 [DEBUG] [Thread-161435] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:34:35.832 [DEBUG] [Thread-161435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:34:35.832 [DEBUG] [Thread-161435] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:34:35.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:34:35.833 [DEBUG] [Thread-161435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:34:35.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:34:35.876 [DEBUG] [Thread-161435] [transport.py] [_log()] userauth is OK
2025-09-29T16:34:35.876 [DEBUG] [Thread-161435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:34:35.876 [DEBUG] [Thread-161435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:34:35.876 [DEBUG] [Thread-161435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:34:35.876 [DEBUG] [Thread-161435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:34:35.905 [INFO] [Thread-161435] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:34:35.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:34:36.044 [DEBUG] [Thread-161437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:34:36.690 [DEBUG] [Thread-161435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:34:36.690 [DEBUG] [Thread-161435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:34:36.691 [DEBUG] [Thread-161435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:34:36.731 [DEBUG] [Thread-161435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:34:36.731 [DEBUG] [Thread-161435] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:34:36.735 [DEBUG] [Thread-161435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:34:36.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:34:36.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:34:36.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:34:36.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:34:36.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:34:36.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:34:36.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:34:36.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:34:36.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:34:36.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.606664 -999.00  +14.50  12.76     44   +2.40 1 1 1 1 1   887    0 11.78 -31.88 ----- 11.8 12.8 154.0 26.9 20.1 -28.9 19.6 -28.3 21.4 -28.3 22.2 -29.5
2025-09-29T16:34:36.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:34:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:34:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.606664
2025-09-29T16:34:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:34:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:34:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:34:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:34:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:34:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:34:19', tmtdew=14.43, humidity=37.48, cloud=0.0, wind=20.42, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:33:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:34:36.759 [DEBUG] [Thread-161435] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:36.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:34:36.857 [DEBUG] [Thread-161439] [transport.py] [_log()] starting thread (client mode): 0x2e34a200
2025-09-29T16:34:36.857 [DEBUG] [Thread-161439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:34:36.873 [DEBUG] [Thread-161439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:34:36.873 [INFO] [Thread-161439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:34:36.881 [DEBUG] [Thread-161439] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:34:36.881 [DEBUG] [Thread-161439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:34:36.881 [DEBUG] [Thread-161439] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:34:36.881 [DEBUG] [Thread-161439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:36.881 [DEBUG] [Thread-161439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:36.881 [DEBUG] [Thread-161439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:36.881 [DEBUG] [Thread-161439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] client lang: <none>
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] server lang: <none>
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] kex follows: False
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:34:36.882 [DEBUG] [Thread-161439] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:34:36.883 [DEBUG] [Thread-161439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:34:36.883 [DEBUG] [Thread-161439] [transport.py] [_log()] Compression: none
2025-09-29T16:34:36.883 [DEBUG] [Thread-161439] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:34:36.939 [DEBUG] [Thread-161439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:34:36.940 [DEBUG] [Thread-161439] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:34:36.940 [DEBUG] [Thread-161439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:34:36.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:34:36.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:34:36.999 [DEBUG] [Thread-161439] [transport.py] [_log()] userauth is OK
2025-09-29T16:34:36.999 [DEBUG] [Thread-161439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:34:36.999 [DEBUG] [Thread-161439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:34:36.999 [DEBUG] [Thread-161439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:34:36.999 [DEBUG] [Thread-161439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:34:37.014 [INFO] [Thread-161439] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:34:37.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:34:37.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:34:37.989 [DEBUG] [Thread-161439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:34:37.990 [DEBUG] [Thread-161439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:34:38.037 [DEBUG] [Thread-161439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:34:38.038 [DEBUG] [Thread-161439] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:34:38.046 [DEBUG] [Thread-161439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:34:38.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:34:38.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:34:38.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:34:38.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:34:38.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:34:38.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:34:38.081 [DEBUG] [Thread-161439] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:48.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:34:48.084 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:34:48.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:34:48.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 34, 19), 14.43, 37.48, 0.0, 20.42, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:34:48.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:34:19
2025-09-29T16:34:48.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:34:48.788 [DEBUG] [Thread-161441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:34:48.907 [DEBUG] [Thread-161442] [transport.py] [_log()] starting thread (client mode): 0x2e3deb60
2025-09-29T16:34:48.907 [DEBUG] [Thread-161442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:34:48.927 [DEBUG] [Thread-161442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:34:48.927 [INFO] [Thread-161442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] client lang: <none>
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] server lang: <none>
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] kex follows: False
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] Compression: none
2025-09-29T16:34:48.930 [DEBUG] [Thread-161442] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:34:48.947 [DEBUG] [Thread-161442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:34:48.947 [DEBUG] [Thread-161442] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:34:48.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:34:48.948 [DEBUG] [Thread-161442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:34:48.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:34:48.988 [DEBUG] [Thread-161442] [transport.py] [_log()] userauth is OK
2025-09-29T16:34:48.989 [DEBUG] [Thread-161442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:34:48.989 [DEBUG] [Thread-161442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:34:48.989 [DEBUG] [Thread-161442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:34:48.989 [DEBUG] [Thread-161442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:34:49.022 [INFO] [Thread-161442] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:34:49.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:34:49.626 [DEBUG] [Thread-161442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:34:49.627 [DEBUG] [Thread-161442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:34:49.627 [DEBUG] [Thread-161442] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:34:49.667 [DEBUG] [Thread-161442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:34:49.667 [DEBUG] [Thread-161442] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:34:49.669 [DEBUG] [Thread-161442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:34:49.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:34:49.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:34:49.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:34:49.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:34:49.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:34:49.693 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:34:49.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:34:49.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:34:49.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:34:49.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.607358 -999.00  +14.50  19.97     44   +2.50 1 1 1 1 1   887    0 11.65 -37.95 ----- 23.6 20.0 156.2 29.2 20.0 -28.8 19.4 -28.1 21.2 -29.0 22.1 -29.7
2025-09-29T16:34:49.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:34:49.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:34:49.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.607358
2025-09-29T16:34:49.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:34:49.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:34:49.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:34:49.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:34:49.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:34:49.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:34:19', tmtdew=14.43, humidity=37.48, cloud=0.0, wind=20.42, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:34:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:34:49.696 [DEBUG] [Thread-161442] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:49.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:34:49.791 [DEBUG] [Thread-161445] [transport.py] [_log()] starting thread (client mode): 0x2b91dcf0
2025-09-29T16:34:49.791 [DEBUG] [Thread-161445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:34:49.805 [DEBUG] [Thread-161445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:34:49.805 [INFO] [Thread-161445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:34:49.813 [DEBUG] [Thread-161445] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:34:49.813 [DEBUG] [Thread-161445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:34:49.813 [DEBUG] [Thread-161445] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:34:49.813 [DEBUG] [Thread-161445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] client lang: <none>
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] server lang: <none>
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] kex follows: False
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:34:49.814 [DEBUG] [Thread-161445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:34:49.815 [DEBUG] [Thread-161445] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:34:49.815 [DEBUG] [Thread-161445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:34:49.815 [DEBUG] [Thread-161445] [transport.py] [_log()] Compression: none
2025-09-29T16:34:49.815 [DEBUG] [Thread-161445] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:34:49.872 [DEBUG] [Thread-161445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:34:49.873 [DEBUG] [Thread-161445] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:34:49.873 [DEBUG] [Thread-161445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:34:49.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:34:49.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:34:49.932 [DEBUG] [Thread-161445] [transport.py] [_log()] userauth is OK
2025-09-29T16:34:49.932 [DEBUG] [Thread-161445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:34:49.932 [DEBUG] [Thread-161445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:34:49.932 [DEBUG] [Thread-161445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:34:49.932 [DEBUG] [Thread-161445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:34:49.951 [INFO] [Thread-161445] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:34:49.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:34:49.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:34:50.956 [DEBUG] [Thread-161445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:34:50.956 [DEBUG] [Thread-161445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:34:51.004 [DEBUG] [Thread-161445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:34:51.004 [DEBUG] [Thread-161445] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:34:51.014 [DEBUG] [Thread-161445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:34:51.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:34:51.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:34:51.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:34:51.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:34:51.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:34:51.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:34:51.049 [DEBUG] [Thread-161445] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:34:51.088 [DEBUG] [Thread-161447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:35:01.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:35:01.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:35:01.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:35:01.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 34, 51), 14.22, 37.73, 0.0, 22.04, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:35:01.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:34:51
2025-09-29T16:35:01.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:35:01.916 [DEBUG] [Thread-161448] [transport.py] [_log()] starting thread (client mode): 0x2b94ce50
2025-09-29T16:35:01.917 [DEBUG] [Thread-161448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:01.937 [DEBUG] [Thread-161448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:35:01.937 [INFO] [Thread-161448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:01.940 [DEBUG] [Thread-161448] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:01.941 [DEBUG] [Thread-161448] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:01.941 [DEBUG] [Thread-161448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:01.941 [DEBUG] [Thread-161448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:01.941 [DEBUG] [Thread-161448] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:01.941 [DEBUG] [Thread-161448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:01.941 [DEBUG] [Thread-161448] [transport.py] [_log()] Compression: none
2025-09-29T16:35:01.941 [DEBUG] [Thread-161448] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:01.956 [DEBUG] [Thread-161448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:01.956 [DEBUG] [Thread-161448] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:01.956 [DEBUG] [Thread-161448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:35:01.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:35:01.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:01.957 [DEBUG] [Thread-161448] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:01.957 [DEBUG] [Thread-161448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:01.957 [DEBUG] [Thread-161448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:01.957 [DEBUG] [Thread-161448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:35:01.957 [DEBUG] [Thread-161448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:01.966 [INFO] [Thread-161448] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:01.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:04.338 [DEBUG] [Thread-161448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:04.338 [DEBUG] [Thread-161448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:04.338 [DEBUG] [Thread-161448] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:35:04.379 [DEBUG] [Thread-161448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:04.379 [DEBUG] [Thread-161448] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:04.381 [DEBUG] [Thread-161448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:04.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:04.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:35:04.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:35:04.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:35:04.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:04.399 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:35:04.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:04.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:35:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.607358 -999.00  +14.50  19.97     44   +2.50 1 1 1 1 1   887    0 11.65 -37.95 ----- 23.6 20.0 156.2 29.2 20.0 -28.8 19.4 -28.1 21.2 -29.0 22.1 -29.7
2025-09-29T16:35:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:35:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:35:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.607358
2025-09-29T16:35:04.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:35:04.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:35:04.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:35:04.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:35:04.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:35:04.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:34:51', tmtdew=14.22, humidity=37.73, cloud=0.0, wind=22.04, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:34:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:35:04.400 [DEBUG] [Thread-161448] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:04.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:35:04.486 [DEBUG] [Thread-161451] [transport.py] [_log()] starting thread (client mode): 0x2b96b160
2025-09-29T16:35:04.486 [DEBUG] [Thread-161451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:04.500 [DEBUG] [Thread-161451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:35:04.500 [INFO] [Thread-161451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] Compression: none
2025-09-29T16:35:04.508 [DEBUG] [Thread-161451] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:04.566 [DEBUG] [Thread-161451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:04.567 [DEBUG] [Thread-161451] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:04.567 [DEBUG] [Thread-161451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:35:04.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:35:04.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:04.624 [DEBUG] [Thread-161451] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:04.624 [DEBUG] [Thread-161451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:04.624 [DEBUG] [Thread-161451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:04.624 [DEBUG] [Thread-161451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:35:04.624 [DEBUG] [Thread-161451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:04.638 [INFO] [Thread-161451] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:04.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:35:04.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:05.630 [DEBUG] [Thread-161451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:05.630 [DEBUG] [Thread-161451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:05.678 [DEBUG] [Thread-161451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:05.678 [DEBUG] [Thread-161451] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:05.687 [DEBUG] [Thread-161451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:05.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:05.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:35:05.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:35:05.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:05.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:05.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:05.724 [DEBUG] [Thread-161451] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:06.132 [DEBUG] [Thread-161453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:35:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:35:15.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:35:15.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:35:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 34, 51), 14.22, 37.73, 0.0, 22.04, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:35:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:34:51
2025-09-29T16:35:16.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:35:16.574 [DEBUG] [Thread-161454] [transport.py] [_log()] starting thread (client mode): 0x2e348e50
2025-09-29T16:35:16.574 [DEBUG] [Thread-161454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:16.595 [DEBUG] [Thread-161454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:35:16.595 [INFO] [Thread-161454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:16.598 [DEBUG] [Thread-161454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] Compression: none
2025-09-29T16:35:16.599 [DEBUG] [Thread-161454] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:16.616 [DEBUG] [Thread-161454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:16.616 [DEBUG] [Thread-161454] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:16.617 [DEBUG] [Thread-161454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:35:16.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:35:16.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:16.619 [DEBUG] [Thread-161454] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:16.619 [DEBUG] [Thread-161454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:16.619 [DEBUG] [Thread-161454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:16.619 [DEBUG] [Thread-161454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:35:16.619 [DEBUG] [Thread-161454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:16.643 [INFO] [Thread-161454] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:16.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:17.255 [DEBUG] [Thread-161454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:17.255 [DEBUG] [Thread-161454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:17.255 [DEBUG] [Thread-161454] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:35:17.296 [DEBUG] [Thread-161454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:17.297 [DEBUG] [Thread-161454] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:17.300 [DEBUG] [Thread-161454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:17.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:17.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:35:17.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:35:17.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:35:17.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:17.326 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:35:17.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:17.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:17.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:35:17.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.607705 -999.00  +14.50  25.49     44   +2.50 1 1 1 1 1   887    0 11.62 -38.66 ----- 25.0 25.5 163.2 30.6 19.9 -28.9 19.3 -28.0 21.1 -28.1 22.0 -29.8
2025-09-29T16:35:17.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:35:17.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:35:17.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.607705
2025-09-29T16:35:17.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:35:17.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:35:17.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:35:17.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:35:17.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:35:17.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:34:51', tmtdew=14.22, humidity=37.73, cloud=0.0, wind=22.04, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:35:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:35:17.329 [DEBUG] [Thread-161454] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:17.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:35:17.436 [DEBUG] [Thread-161457] [transport.py] [_log()] starting thread (client mode): 0x2b9cdfc0
2025-09-29T16:35:17.436 [DEBUG] [Thread-161457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:17.453 [DEBUG] [Thread-161457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:35:17.453 [INFO] [Thread-161457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:35:17.461 [DEBUG] [Thread-161457] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:17.461 [DEBUG] [Thread-161457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:35:17.461 [DEBUG] [Thread-161457] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:17.461 [DEBUG] [Thread-161457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:17.461 [DEBUG] [Thread-161457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:17.461 [DEBUG] [Thread-161457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:17.461 [DEBUG] [Thread-161457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:17.461 [DEBUG] [Thread-161457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] Compression: none
2025-09-29T16:35:17.462 [DEBUG] [Thread-161457] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:17.520 [DEBUG] [Thread-161457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:17.520 [DEBUG] [Thread-161457] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:17.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:35:17.521 [DEBUG] [Thread-161457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:35:17.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:17.576 [DEBUG] [Thread-161457] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:17.576 [DEBUG] [Thread-161457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:17.577 [DEBUG] [Thread-161457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:17.577 [DEBUG] [Thread-161457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:35:17.577 [DEBUG] [Thread-161457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:17.596 [INFO] [Thread-161457] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:17.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:35:17.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:18.576 [DEBUG] [Thread-161457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:18.576 [DEBUG] [Thread-161457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:18.625 [DEBUG] [Thread-161457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:18.625 [DEBUG] [Thread-161457] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:18.633 [DEBUG] [Thread-161457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:18.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:18.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:35:18.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:35:18.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:18.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:18.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:18.669 [DEBUG] [Thread-161457] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:21.184 [DEBUG] [Thread-161459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:35:22.372 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:35:22.373 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:35:28.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:35:28.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:35:28.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:35:29.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 35, 23), 14.22, 37.73, 0.0, 23.63, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:35:29.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:35:23
2025-09-29T16:35:29.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:35:29.500 [DEBUG] [Thread-161460] [transport.py] [_log()] starting thread (client mode): 0x2e34bcd0
2025-09-29T16:35:29.500 [DEBUG] [Thread-161460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:29.519 [DEBUG] [Thread-161460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:35:29.519 [INFO] [Thread-161460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:35:29.522 [DEBUG] [Thread-161460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:29.522 [DEBUG] [Thread-161460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:35:29.522 [DEBUG] [Thread-161460] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] Compression: none
2025-09-29T16:35:29.523 [DEBUG] [Thread-161460] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:29.538 [DEBUG] [Thread-161460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:29.539 [DEBUG] [Thread-161460] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:29.539 [DEBUG] [Thread-161460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:35:29.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:35:29.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:29.541 [DEBUG] [Thread-161460] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:29.542 [DEBUG] [Thread-161460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:29.542 [DEBUG] [Thread-161460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:29.542 [DEBUG] [Thread-161460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:35:29.542 [DEBUG] [Thread-161460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:29.578 [INFO] [Thread-161460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:29.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:30.217 [DEBUG] [Thread-161460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:30.217 [DEBUG] [Thread-161460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:30.218 [DEBUG] [Thread-161460] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:35:30.258 [DEBUG] [Thread-161460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:30.258 [DEBUG] [Thread-161460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:30.261 [DEBUG] [Thread-161460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:30.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:30.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:35:30.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:35:30.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:35:30.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:30.284 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:35:30.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:30.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:30.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:35:30.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.607705 -999.00  +14.50  25.49     44   +2.50 1 1 1 1 1   887    0 11.62 -38.66 ----- 25.0 25.5 163.2 30.6 19.9 -28.9 19.3 -28.0 21.1 -28.1 22.0 -29.8
2025-09-29T16:35:30.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:35:30.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:35:30.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.607705
2025-09-29T16:35:30.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:35:30.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:35:30.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:35:30.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:35:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:35:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:35:23', tmtdew=14.22, humidity=37.73, cloud=0.0, wind=23.63, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:35:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:35:30.287 [DEBUG] [Thread-161460] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:30.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:35:30.382 [DEBUG] [Thread-161463] [transport.py] [_log()] starting thread (client mode): 0x2b96aa70
2025-09-29T16:35:30.382 [DEBUG] [Thread-161463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:30.396 [DEBUG] [Thread-161463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:35:30.396 [INFO] [Thread-161463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:35:30.404 [DEBUG] [Thread-161463] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:30.404 [DEBUG] [Thread-161463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:35:30.404 [DEBUG] [Thread-161463] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:30.404 [DEBUG] [Thread-161463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] Compression: none
2025-09-29T16:35:30.405 [DEBUG] [Thread-161463] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:30.460 [DEBUG] [Thread-161463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:30.460 [DEBUG] [Thread-161463] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:30.461 [DEBUG] [Thread-161463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:35:30.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:35:30.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:30.522 [DEBUG] [Thread-161463] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:30.522 [DEBUG] [Thread-161463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:30.522 [DEBUG] [Thread-161463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:30.522 [DEBUG] [Thread-161463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:35:30.523 [DEBUG] [Thread-161463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:30.541 [INFO] [Thread-161463] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:30.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:35:30.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:31.511 [DEBUG] [Thread-161463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:31.512 [DEBUG] [Thread-161463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:31.559 [DEBUG] [Thread-161463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:31.559 [DEBUG] [Thread-161463] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:31.568 [DEBUG] [Thread-161463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:31.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:31.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:35:31.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:35:31.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:31.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:31.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:31.604 [DEBUG] [Thread-161463] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:36.229 [DEBUG] [Thread-161465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:35:41.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:35:41.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:35:41.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:35:42.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 35, 23), 14.22, 37.73, 0.0, 23.63, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:35:42.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:35:23
2025-09-29T16:35:42.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:35:42.465 [DEBUG] [Thread-161466] [transport.py] [_log()] starting thread (client mode): 0x2b96a3b0
2025-09-29T16:35:42.466 [DEBUG] [Thread-161466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:42.484 [DEBUG] [Thread-161466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:35:42.484 [INFO] [Thread-161466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:35:42.487 [DEBUG] [Thread-161466] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:42.487 [DEBUG] [Thread-161466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] Compression: none
2025-09-29T16:35:42.488 [DEBUG] [Thread-161466] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:42.506 [DEBUG] [Thread-161466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:42.506 [DEBUG] [Thread-161466] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:42.506 [DEBUG] [Thread-161466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:35:42.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:35:42.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:42.507 [DEBUG] [Thread-161466] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:42.508 [DEBUG] [Thread-161466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:42.508 [DEBUG] [Thread-161466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:42.508 [DEBUG] [Thread-161466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:35:42.508 [DEBUG] [Thread-161466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:42.527 [INFO] [Thread-161466] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:42.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:43.159 [DEBUG] [Thread-161466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:43.159 [DEBUG] [Thread-161466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:43.160 [DEBUG] [Thread-161466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:35:43.200 [DEBUG] [Thread-161466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:43.200 [DEBUG] [Thread-161466] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:43.203 [DEBUG] [Thread-161466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:43.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:43.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:35:43.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:35:43.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:35:43.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:43.225 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:35:43.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:43.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:43.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:35:43.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.607705 -999.00  +14.50  25.49     44   +2.50 1 1 1 1 1   887    0 11.62 -38.66 ----- 25.0 25.5 163.2 30.6 19.9 -28.9 19.3 -28.0 21.1 -28.1 22.0 -29.8
2025-09-29T16:35:43.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:35:43.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:35:43.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.607705
2025-09-29T16:35:43.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:35:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:35:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:35:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:35:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:35:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:35:23', tmtdew=14.22, humidity=37.73, cloud=0.0, wind=23.63, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:35:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:35:43.227 [DEBUG] [Thread-161466] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:43.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:35:43.322 [DEBUG] [Thread-161469] [transport.py] [_log()] starting thread (client mode): 0x2e3c28f0
2025-09-29T16:35:43.322 [DEBUG] [Thread-161469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:43.337 [DEBUG] [Thread-161469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:35:43.337 [INFO] [Thread-161469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:43.345 [DEBUG] [Thread-161469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:43.346 [DEBUG] [Thread-161469] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:43.346 [DEBUG] [Thread-161469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:43.346 [DEBUG] [Thread-161469] [transport.py] [_log()] Compression: none
2025-09-29T16:35:43.346 [DEBUG] [Thread-161469] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:43.404 [DEBUG] [Thread-161469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:43.405 [DEBUG] [Thread-161469] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:43.406 [DEBUG] [Thread-161469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:35:43.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:35:43.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:43.460 [DEBUG] [Thread-161469] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:43.461 [DEBUG] [Thread-161469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:43.461 [DEBUG] [Thread-161469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:43.461 [DEBUG] [Thread-161469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:35:43.461 [DEBUG] [Thread-161469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:43.480 [INFO] [Thread-161469] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:43.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:35:43.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:44.474 [DEBUG] [Thread-161469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:44.474 [DEBUG] [Thread-161469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:44.522 [DEBUG] [Thread-161469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:44.523 [DEBUG] [Thread-161469] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:44.532 [DEBUG] [Thread-161469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:44.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:44.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:35:44.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:35:44.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:44.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:44.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:44.567 [DEBUG] [Thread-161469] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:48.820 [DEBUG] [Thread-161471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:35:51.272 [DEBUG] [Thread-161472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:35:54.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:35:54.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:35:54.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:35:55.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 35, 23), 14.22, 37.73, 0.0, 23.63, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:35:55.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:35:23
2025-09-29T16:35:55.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:35:55.393 [DEBUG] [Thread-161473] [transport.py] [_log()] starting thread (client mode): 0x2e3c1990
2025-09-29T16:35:55.393 [DEBUG] [Thread-161473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:55.414 [DEBUG] [Thread-161473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:35:55.414 [INFO] [Thread-161473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:35:55.417 [DEBUG] [Thread-161473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:55.417 [DEBUG] [Thread-161473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:35:55.417 [DEBUG] [Thread-161473] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:55.417 [DEBUG] [Thread-161473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] Compression: none
2025-09-29T16:35:55.418 [DEBUG] [Thread-161473] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:55.434 [DEBUG] [Thread-161473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:55.435 [DEBUG] [Thread-161473] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:55.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:35:55.436 [DEBUG] [Thread-161473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:35:55.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:55.437 [DEBUG] [Thread-161473] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:55.437 [DEBUG] [Thread-161473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:55.438 [DEBUG] [Thread-161473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:55.438 [DEBUG] [Thread-161473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:35:55.438 [DEBUG] [Thread-161473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:55.452 [INFO] [Thread-161473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:55.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:56.101 [DEBUG] [Thread-161473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:56.101 [DEBUG] [Thread-161473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:56.101 [DEBUG] [Thread-161473] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:35:56.142 [DEBUG] [Thread-161473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:56.142 [DEBUG] [Thread-161473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:56.144 [DEBUG] [Thread-161473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:56.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:56.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:35:56.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:35:56.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:35:56.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:56.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:35:56.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.608052 -999.00  +14.40  20.48     44   +2.40 1 1 1 1 1   887    0 11.39 -44.24 ----- 12.5 20.5 147.4 33.4 19.8 -29.2 19.3 -28.8 21.0 -28.3 21.9 -30.4
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.608052
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:35:56.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:35:23', tmtdew=14.22, humidity=37.73, cloud=0.0, wind=23.63, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:35:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:35:56.164 [DEBUG] [Thread-161473] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:35:56.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:35:56.248 [DEBUG] [Thread-161476] [transport.py] [_log()] starting thread (client mode): 0x2e3c2650
2025-09-29T16:35:56.248 [DEBUG] [Thread-161476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:35:56.263 [DEBUG] [Thread-161476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:35:56.264 [INFO] [Thread-161476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] client lang: <none>
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] server lang: <none>
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] kex follows: False
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:35:56.271 [DEBUG] [Thread-161476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:35:56.272 [DEBUG] [Thread-161476] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:35:56.272 [DEBUG] [Thread-161476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:35:56.272 [DEBUG] [Thread-161476] [transport.py] [_log()] Compression: none
2025-09-29T16:35:56.272 [DEBUG] [Thread-161476] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:35:56.327 [DEBUG] [Thread-161476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:35:56.328 [DEBUG] [Thread-161476] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:35:56.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:35:56.328 [DEBUG] [Thread-161476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:35:56.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:35:56.384 [DEBUG] [Thread-161476] [transport.py] [_log()] userauth is OK
2025-09-29T16:35:56.384 [DEBUG] [Thread-161476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:35:56.384 [DEBUG] [Thread-161476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:35:56.384 [DEBUG] [Thread-161476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:35:56.384 [DEBUG] [Thread-161476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:35:56.400 [INFO] [Thread-161476] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:35:56.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:35:56.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:35:57.383 [DEBUG] [Thread-161476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:35:57.384 [DEBUG] [Thread-161476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:35:57.432 [DEBUG] [Thread-161476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:35:57.432 [DEBUG] [Thread-161476] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:35:57.440 [DEBUG] [Thread-161476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:35:57.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:35:57.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:35:57.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:35:57.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:35:57.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:35:57.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:35:57.472 [DEBUG] [Thread-161476] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:06.301 [DEBUG] [Thread-161478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:36:07.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:36:07.475 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:36:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:36:08.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 35, 55), 14.27, 37.85, 0.0, 28.39, 14.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:36:08.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:35:55
2025-09-29T16:36:08.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:36:08.302 [DEBUG] [Thread-161479] [transport.py] [_log()] starting thread (client mode): 0x2b91d990
2025-09-29T16:36:08.302 [DEBUG] [Thread-161479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:36:08.323 [DEBUG] [Thread-161479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:36:08.323 [INFO] [Thread-161479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] client lang: <none>
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] server lang: <none>
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] kex follows: False
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] Compression: none
2025-09-29T16:36:08.326 [DEBUG] [Thread-161479] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:36:08.345 [DEBUG] [Thread-161479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:36:08.345 [DEBUG] [Thread-161479] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:36:08.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:36:08.346 [DEBUG] [Thread-161479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:36:08.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:36:08.348 [DEBUG] [Thread-161479] [transport.py] [_log()] userauth is OK
2025-09-29T16:36:08.348 [DEBUG] [Thread-161479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:36:08.348 [DEBUG] [Thread-161479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:36:08.348 [DEBUG] [Thread-161479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:36:08.348 [DEBUG] [Thread-161479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:36:08.373 [INFO] [Thread-161479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:36:08.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:36:09.010 [DEBUG] [Thread-161479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:36:09.010 [DEBUG] [Thread-161479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:36:09.011 [DEBUG] [Thread-161479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:36:09.051 [DEBUG] [Thread-161479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:36:09.051 [DEBUG] [Thread-161479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:36:09.054 [DEBUG] [Thread-161479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:36:09.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:36:09.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:36:09.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:36:09.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:36:09.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:36:09.077 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:36:09.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:36:09.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:36:09.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:36:09.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.608052 -999.00  +14.40  20.48     44   +2.40 1 1 1 1 1   887    0 11.39 -44.24 ----- 12.5 20.5 147.4 33.4 19.8 -29.2 19.3 -28.8 21.0 -28.3 21.9 -30.4
2025-09-29T16:36:09.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:36:09.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:36:09.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.608052
2025-09-29T16:36:09.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:36:09.078 [DEBUG] [Thread-161479] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:09.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:36:09.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:36:09.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:36:09.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:36:09.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:35:55', tmtdew=14.27, humidity=37.85, cloud=0.0, wind=28.39, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:35:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:36:09.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:36:09.176 [DEBUG] [Thread-161482] [transport.py] [_log()] starting thread (client mode): 0x2b9cebc0
2025-09-29T16:36:09.176 [DEBUG] [Thread-161482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:36:09.191 [DEBUG] [Thread-161482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:36:09.191 [INFO] [Thread-161482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:36:09.198 [DEBUG] [Thread-161482] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:36:09.199 [DEBUG] [Thread-161482] [transport.py] [_log()] client lang: <none>
2025-09-29T16:36:09.200 [DEBUG] [Thread-161482] [transport.py] [_log()] server lang: <none>
2025-09-29T16:36:09.200 [DEBUG] [Thread-161482] [transport.py] [_log()] kex follows: False
2025-09-29T16:36:09.200 [DEBUG] [Thread-161482] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:36:09.200 [DEBUG] [Thread-161482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:36:09.200 [DEBUG] [Thread-161482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:36:09.200 [DEBUG] [Thread-161482] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:36:09.200 [DEBUG] [Thread-161482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:36:09.200 [DEBUG] [Thread-161482] [transport.py] [_log()] Compression: none
2025-09-29T16:36:09.201 [DEBUG] [Thread-161482] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:36:09.256 [DEBUG] [Thread-161482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:36:09.257 [DEBUG] [Thread-161482] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:36:09.257 [DEBUG] [Thread-161482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:36:09.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:36:09.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:36:09.316 [DEBUG] [Thread-161482] [transport.py] [_log()] userauth is OK
2025-09-29T16:36:09.317 [DEBUG] [Thread-161482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:36:09.317 [DEBUG] [Thread-161482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:36:09.317 [DEBUG] [Thread-161482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:36:09.317 [DEBUG] [Thread-161482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:36:09.336 [INFO] [Thread-161482] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:36:09.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:36:09.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:36:10.309 [DEBUG] [Thread-161482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:36:10.309 [DEBUG] [Thread-161482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:36:10.357 [DEBUG] [Thread-161482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:36:10.357 [DEBUG] [Thread-161482] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:36:10.366 [DEBUG] [Thread-161482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:36:10.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:36:10.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:36:10.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:36:10.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:36:10.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:36:10.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:36:10.400 [DEBUG] [Thread-161482] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:20.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:36:20.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:36:20.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:36:20.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 35, 55), 14.27, 37.85, 0.0, 28.39, 14.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:36:20.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:35:55
2025-09-29T16:36:21.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:36:21.236 [DEBUG] [Thread-161484] [transport.py] [_log()] starting thread (client mode): 0x2e3c01f0
2025-09-29T16:36:21.236 [DEBUG] [Thread-161484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:36:21.256 [DEBUG] [Thread-161484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:36:21.256 [INFO] [Thread-161484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:36:21.259 [DEBUG] [Thread-161484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:36:21.259 [DEBUG] [Thread-161484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] client lang: <none>
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] server lang: <none>
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] kex follows: False
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] Compression: none
2025-09-29T16:36:21.260 [DEBUG] [Thread-161484] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:36:21.277 [DEBUG] [Thread-161484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:36:21.277 [DEBUG] [Thread-161484] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:36:21.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:36:21.279 [DEBUG] [Thread-161484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:36:21.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:36:21.280 [DEBUG] [Thread-161484] [transport.py] [_log()] userauth is OK
2025-09-29T16:36:21.281 [DEBUG] [Thread-161484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:36:21.281 [DEBUG] [Thread-161484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:36:21.281 [DEBUG] [Thread-161484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:36:21.281 [DEBUG] [Thread-161484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:36:21.299 [INFO] [Thread-161484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:36:21.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:36:21.338 [DEBUG] [Thread-161486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:36:21.948 [DEBUG] [Thread-161484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:36:21.948 [DEBUG] [Thread-161484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:36:21.948 [DEBUG] [Thread-161484] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:36:21.989 [DEBUG] [Thread-161484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:36:21.989 [DEBUG] [Thread-161484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:36:21.992 [DEBUG] [Thread-161484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:36:22.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:36:22.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:36:22.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:36:22.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:36:22.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:36:22.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:36:22.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:36:22.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:36:22.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:36:22.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.608052 -999.00  +14.40  20.48     44   +2.40 1 1 1 1 1   887    0 11.39 -44.24 ----- 12.5 20.5 147.4 33.4 19.8 -29.2 19.3 -28.8 21.0 -28.3 21.9 -30.4
2025-09-29T16:36:22.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:36:22.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:36:22.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.608052
2025-09-29T16:36:22.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:36:22.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:36:22.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:36:22.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:36:22.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:36:22.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:35:55', tmtdew=14.27, humidity=37.85, cloud=0.0, wind=28.39, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:35:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:36:22.016 [DEBUG] [Thread-161484] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:22.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:36:22.107 [DEBUG] [Thread-161488] [transport.py] [_log()] starting thread (client mode): 0x2e3f8730
2025-09-29T16:36:22.108 [DEBUG] [Thread-161488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:36:22.123 [DEBUG] [Thread-161488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:36:22.123 [INFO] [Thread-161488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] client lang: <none>
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] server lang: <none>
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] kex follows: False
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:36:22.130 [DEBUG] [Thread-161488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:36:22.131 [DEBUG] [Thread-161488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:36:22.131 [DEBUG] [Thread-161488] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:36:22.131 [DEBUG] [Thread-161488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:36:22.131 [DEBUG] [Thread-161488] [transport.py] [_log()] Compression: none
2025-09-29T16:36:22.131 [DEBUG] [Thread-161488] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:36:22.187 [DEBUG] [Thread-161488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:36:22.187 [DEBUG] [Thread-161488] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:36:22.188 [DEBUG] [Thread-161488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:36:22.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:36:22.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:36:22.244 [DEBUG] [Thread-161488] [transport.py] [_log()] userauth is OK
2025-09-29T16:36:22.244 [DEBUG] [Thread-161488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:36:22.244 [DEBUG] [Thread-161488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:36:22.244 [DEBUG] [Thread-161488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:36:22.245 [DEBUG] [Thread-161488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:36:22.264 [INFO] [Thread-161488] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:36:22.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:36:22.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:36:22.510 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:36:22.511 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:36:23.226 [DEBUG] [Thread-161488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:36:23.226 [DEBUG] [Thread-161488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:36:23.278 [DEBUG] [Thread-161488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:36:23.279 [DEBUG] [Thread-161488] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:36:23.287 [DEBUG] [Thread-161488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:36:23.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:36:23.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:36:23.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:36:23.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:36:23.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:36:23.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:36:23.321 [DEBUG] [Thread-161488] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:33.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:36:33.315 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:36:33.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:36:33.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 36, 27), 14.18, 38.06, 0.0, 25.3, 14.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:36:33.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:36:27
2025-09-29T16:36:34.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:36:34.150 [DEBUG] [Thread-161490] [transport.py] [_log()] starting thread (client mode): 0x2e3faa70
2025-09-29T16:36:34.151 [DEBUG] [Thread-161490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:36:34.175 [DEBUG] [Thread-161490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:36:34.175 [INFO] [Thread-161490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] client lang: <none>
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] server lang: <none>
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] kex follows: False
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:36:34.179 [DEBUG] [Thread-161490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:36:34.180 [DEBUG] [Thread-161490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:36:34.180 [DEBUG] [Thread-161490] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:36:34.180 [DEBUG] [Thread-161490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:36:34.180 [DEBUG] [Thread-161490] [transport.py] [_log()] Compression: none
2025-09-29T16:36:34.180 [DEBUG] [Thread-161490] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:36:34.198 [DEBUG] [Thread-161490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:36:34.199 [DEBUG] [Thread-161490] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:36:34.199 [DEBUG] [Thread-161490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:36:34.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:36:34.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:36:34.201 [DEBUG] [Thread-161490] [transport.py] [_log()] userauth is OK
2025-09-29T16:36:34.201 [DEBUG] [Thread-161490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:36:34.202 [DEBUG] [Thread-161490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:36:34.202 [DEBUG] [Thread-161490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:36:34.202 [DEBUG] [Thread-161490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:36:34.225 [INFO] [Thread-161490] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:36:34.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:36:34.880 [DEBUG] [Thread-161490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:36:34.881 [DEBUG] [Thread-161490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:36:34.881 [DEBUG] [Thread-161490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:36:34.921 [DEBUG] [Thread-161490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:36:34.922 [DEBUG] [Thread-161490] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:36:34.925 [DEBUG] [Thread-161490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:36:34.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:36:34.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:36:34.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:36:34.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:36:34.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:36:34.949 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:36:34.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:36:34.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:36:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:36:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.608400 -999.00  +14.40  21.52     44   +2.40 1 1 1 1 1   887    0 11.22 -48.07 ----- 19.7 21.5 163.0 23.5 19.8 -28.6 19.1 -26.8 20.9 -27.4 21.9 -29.0
2025-09-29T16:36:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:36:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:36:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.608400
2025-09-29T16:36:34.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:36:34.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:36:34.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:36:34.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:36:34.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:36:34.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:36:27', tmtdew=14.18, humidity=38.06, cloud=0.0, wind=25.3, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:36:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:36:34.952 [DEBUG] [Thread-161490] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:35.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:36:35.050 [DEBUG] [Thread-161493] [transport.py] [_log()] starting thread (client mode): 0x2b9ccc40
2025-09-29T16:36:35.050 [DEBUG] [Thread-161493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:36:35.065 [DEBUG] [Thread-161493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:36:35.065 [INFO] [Thread-161493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:36:35.072 [DEBUG] [Thread-161493] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:36:35.072 [DEBUG] [Thread-161493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] client lang: <none>
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] server lang: <none>
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] kex follows: False
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] Compression: none
2025-09-29T16:36:35.073 [DEBUG] [Thread-161493] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:36:35.133 [DEBUG] [Thread-161493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:36:35.133 [DEBUG] [Thread-161493] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:36:35.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:36:35.134 [DEBUG] [Thread-161493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:36:35.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:36:35.188 [DEBUG] [Thread-161493] [transport.py] [_log()] userauth is OK
2025-09-29T16:36:35.188 [DEBUG] [Thread-161493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:36:35.188 [DEBUG] [Thread-161493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:36:35.188 [DEBUG] [Thread-161493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:36:35.188 [DEBUG] [Thread-161493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:36:35.209 [INFO] [Thread-161493] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:36:35.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:36:35.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:36:36.180 [DEBUG] [Thread-161493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:36:36.180 [DEBUG] [Thread-161493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:36:36.228 [DEBUG] [Thread-161493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:36:36.228 [DEBUG] [Thread-161493] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:36:36.237 [DEBUG] [Thread-161493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:36:36.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:36:36.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:36:36.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:36:36.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:36:36.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:36:36.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:36:36.271 [DEBUG] [Thread-161493] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:36.384 [DEBUG] [Thread-161495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:36:46.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:36:46.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:36:46.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:36:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 36, 27), 14.18, 38.06, 0.0, 25.3, 14.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:36:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:36:27
2025-09-29T16:36:46.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:36:47.096 [DEBUG] [Thread-161496] [transport.py] [_log()] starting thread (client mode): 0x2b94dc90
2025-09-29T16:36:47.096 [DEBUG] [Thread-161496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:36:47.116 [DEBUG] [Thread-161496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:36:47.116 [INFO] [Thread-161496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] client lang: <none>
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] server lang: <none>
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] kex follows: False
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] Compression: none
2025-09-29T16:36:47.119 [DEBUG] [Thread-161496] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:36:47.136 [DEBUG] [Thread-161496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:36:47.137 [DEBUG] [Thread-161496] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:36:47.137 [DEBUG] [Thread-161496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:36:47.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:36:47.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:36:47.139 [DEBUG] [Thread-161496] [transport.py] [_log()] userauth is OK
2025-09-29T16:36:47.139 [DEBUG] [Thread-161496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:36:47.140 [DEBUG] [Thread-161496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:36:47.140 [DEBUG] [Thread-161496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:36:47.140 [DEBUG] [Thread-161496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:36:47.175 [INFO] [Thread-161496] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:36:47.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:36:47.822 [DEBUG] [Thread-161496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:36:47.822 [DEBUG] [Thread-161496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:36:47.822 [DEBUG] [Thread-161496] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:36:47.863 [DEBUG] [Thread-161496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:36:47.864 [DEBUG] [Thread-161496] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:36:47.866 [DEBUG] [Thread-161496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:36:47.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:36:47.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:36:47.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:36:47.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:36:47.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:36:47.891 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:36:47.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:36:47.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:36:47.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:36:47.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.608400 -999.00  +14.40  21.52     44   +2.40 1 1 1 1 1   887    0 11.22 -48.07 ----- 19.7 21.5 163.0 23.5 19.8 -28.6 19.1 -26.8 20.9 -27.4 21.9 -29.0
2025-09-29T16:36:47.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:36:47.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:36:47.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.608400
2025-09-29T16:36:47.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:36:47.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:36:47.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:36:47.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:36:47.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:36:47.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:36:27', tmtdew=14.18, humidity=38.06, cloud=0.0, wind=25.3, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:36:05.760', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:36:47.893 [DEBUG] [Thread-161496] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:47.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:36:47.990 [DEBUG] [Thread-161499] [transport.py] [_log()] starting thread (client mode): 0x2e38fa90
2025-09-29T16:36:47.990 [DEBUG] [Thread-161499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:36:48.004 [DEBUG] [Thread-161499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:36:48.004 [INFO] [Thread-161499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:36:48.012 [DEBUG] [Thread-161499] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:36:48.012 [DEBUG] [Thread-161499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:36:48.012 [DEBUG] [Thread-161499] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] client lang: <none>
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] server lang: <none>
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] kex follows: False
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] Compression: none
2025-09-29T16:36:48.013 [DEBUG] [Thread-161499] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:36:48.073 [DEBUG] [Thread-161499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:36:48.073 [DEBUG] [Thread-161499] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:36:48.074 [DEBUG] [Thread-161499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:36:48.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:36:48.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:36:48.133 [DEBUG] [Thread-161499] [transport.py] [_log()] userauth is OK
2025-09-29T16:36:48.133 [DEBUG] [Thread-161499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:36:48.133 [DEBUG] [Thread-161499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:36:48.133 [DEBUG] [Thread-161499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:36:48.133 [DEBUG] [Thread-161499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:36:48.155 [INFO] [Thread-161499] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:36:48.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:36:48.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:36:48.862 [DEBUG] [Thread-161501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:36:49.192 [DEBUG] [Thread-161499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:36:49.192 [DEBUG] [Thread-161499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:36:49.240 [DEBUG] [Thread-161499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:36:49.240 [DEBUG] [Thread-161499] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:36:49.249 [DEBUG] [Thread-161499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:36:49.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:36:49.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:36:49.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:36:49.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:36:49.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:36:49.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:36:49.284 [DEBUG] [Thread-161499] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:36:51.427 [DEBUG] [Thread-161502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:36:59.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:36:59.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:36:59.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:36:59.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 36, 27), 14.18, 38.06, 0.0, 25.3, 14.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:36:59.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:36:27
2025-09-29T16:36:59.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:37:00.118 [DEBUG] [Thread-161503] [transport.py] [_log()] starting thread (client mode): 0x2e3c3640
2025-09-29T16:37:00.118 [DEBUG] [Thread-161503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:00.137 [DEBUG] [Thread-161503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:37:00.137 [INFO] [Thread-161503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:37:00.140 [DEBUG] [Thread-161503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:00.140 [DEBUG] [Thread-161503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:37:00.140 [DEBUG] [Thread-161503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:00.140 [DEBUG] [Thread-161503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:00.140 [DEBUG] [Thread-161503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] Compression: none
2025-09-29T16:37:00.141 [DEBUG] [Thread-161503] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:00.156 [DEBUG] [Thread-161503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:00.157 [DEBUG] [Thread-161503] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:00.157 [DEBUG] [Thread-161503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:37:00.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:37:00.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:00.157 [DEBUG] [Thread-161503] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:00.157 [DEBUG] [Thread-161503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:00.157 [DEBUG] [Thread-161503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:00.157 [DEBUG] [Thread-161503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:37:00.158 [DEBUG] [Thread-161503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:00.184 [INFO] [Thread-161503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:00.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:00.825 [DEBUG] [Thread-161503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:00.825 [DEBUG] [Thread-161503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:00.825 [DEBUG] [Thread-161503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:37:00.866 [DEBUG] [Thread-161503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:00.866 [DEBUG] [Thread-161503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:00.868 [DEBUG] [Thread-161503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:00.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:00.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:37:00.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:37:00.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:37:00.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:00.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:37:00.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:00.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:00.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:37:00.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.608747 -999.00  +14.60  16.98     44   +2.50 1 1 1 1 1   887    0 11.11 -49.42 ----- 18.6 17.0 147.1 24.9 19.7 -28.8 19.2 -26.9 20.9 -27.8 21.8 -29.1
2025-09-29T16:37:00.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:37:00.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:37:00.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.608747
2025-09-29T16:37:00.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:37:00.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:37:00.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:37:00.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:37:00.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:37:00.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:36:27', tmtdew=14.18, humidity=38.06, cloud=0.0, wind=25.3, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:36:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:37:00.887 [DEBUG] [Thread-161503] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:00.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:37:00.971 [DEBUG] [Thread-161506] [transport.py] [_log()] starting thread (client mode): 0x2e3c1e10
2025-09-29T16:37:00.971 [DEBUG] [Thread-161506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:00.986 [DEBUG] [Thread-161506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:37:00.986 [INFO] [Thread-161506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:00.993 [DEBUG] [Thread-161506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:00.994 [DEBUG] [Thread-161506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:00.994 [DEBUG] [Thread-161506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:00.994 [DEBUG] [Thread-161506] [transport.py] [_log()] Compression: none
2025-09-29T16:37:00.994 [DEBUG] [Thread-161506] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:01.051 [DEBUG] [Thread-161506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:01.051 [DEBUG] [Thread-161506] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:01.051 [DEBUG] [Thread-161506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:37:01.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:37:01.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:01.108 [DEBUG] [Thread-161506] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:01.108 [DEBUG] [Thread-161506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:01.108 [DEBUG] [Thread-161506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:01.108 [DEBUG] [Thread-161506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:37:01.108 [DEBUG] [Thread-161506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:01.124 [INFO] [Thread-161506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:01.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:37:01.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:02.117 [DEBUG] [Thread-161506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:02.117 [DEBUG] [Thread-161506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:02.164 [DEBUG] [Thread-161506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:02.165 [DEBUG] [Thread-161506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:02.174 [DEBUG] [Thread-161506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:02.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:02.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:37:02.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:37:02.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:02.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:02.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:02.209 [DEBUG] [Thread-161506] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:06.458 [DEBUG] [Thread-161508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:37:12.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:37:12.211 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:37:12.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:37:12.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 36, 59), 14.2, 38.01, 0.0, 24.81, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:37:12.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:36:59
2025-09-29T16:37:12.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:37:13.040 [DEBUG] [Thread-161509] [transport.py] [_log()] starting thread (client mode): 0x2b94c490
2025-09-29T16:37:13.040 [DEBUG] [Thread-161509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:13.059 [DEBUG] [Thread-161509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:37:13.059 [INFO] [Thread-161509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:13.063 [DEBUG] [Thread-161509] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:13.064 [DEBUG] [Thread-161509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:13.064 [DEBUG] [Thread-161509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:13.064 [DEBUG] [Thread-161509] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:13.064 [DEBUG] [Thread-161509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:13.064 [DEBUG] [Thread-161509] [transport.py] [_log()] Compression: none
2025-09-29T16:37:13.064 [DEBUG] [Thread-161509] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:13.075 [DEBUG] [Thread-161509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:13.076 [DEBUG] [Thread-161509] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:13.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:37:13.077 [DEBUG] [Thread-161509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:37:13.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:13.080 [DEBUG] [Thread-161509] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:13.080 [DEBUG] [Thread-161509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:13.080 [DEBUG] [Thread-161509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:13.080 [DEBUG] [Thread-161509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:37:13.080 [DEBUG] [Thread-161509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:13.116 [INFO] [Thread-161509] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:13.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:13.752 [DEBUG] [Thread-161509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:13.752 [DEBUG] [Thread-161509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:13.753 [DEBUG] [Thread-161509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:37:13.793 [DEBUG] [Thread-161509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:13.794 [DEBUG] [Thread-161509] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:13.797 [DEBUG] [Thread-161509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:13.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:13.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:37:13.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:37:13.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:37:13.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:13.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:37:13.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:13.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:37:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.608747 -999.00  +14.60  16.98     44   +2.50 1 1 1 1 1   887    0 11.11 -49.42 ----- 18.6 17.0 147.1 24.9 19.7 -28.8 19.2 -26.9 20.9 -27.8 21.8 -29.1
2025-09-29T16:37:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:37:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:37:13.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.608747
2025-09-29T16:37:13.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:37:13.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:37:13.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:37:13.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:37:13.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:37:13.824 [DEBUG] [Thread-161509] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:13.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:36:59', tmtdew=14.2, humidity=38.01, cloud=0.0, wind=24.81, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:36:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:37:13.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:37:13.921 [DEBUG] [Thread-161512] [transport.py] [_log()] starting thread (client mode): 0x2e3f90f0
2025-09-29T16:37:13.921 [DEBUG] [Thread-161512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:13.936 [DEBUG] [Thread-161512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:37:13.936 [INFO] [Thread-161512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:37:13.943 [DEBUG] [Thread-161512] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] Compression: none
2025-09-29T16:37:13.944 [DEBUG] [Thread-161512] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:14.005 [DEBUG] [Thread-161512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:14.006 [DEBUG] [Thread-161512] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:14.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:37:14.007 [DEBUG] [Thread-161512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:37:14.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:14.064 [DEBUG] [Thread-161512] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:14.064 [DEBUG] [Thread-161512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:14.064 [DEBUG] [Thread-161512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:14.065 [DEBUG] [Thread-161512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:37:14.065 [DEBUG] [Thread-161512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:14.083 [INFO] [Thread-161512] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:14.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:37:14.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:15.056 [DEBUG] [Thread-161512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:15.057 [DEBUG] [Thread-161512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:15.105 [DEBUG] [Thread-161512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:15.105 [DEBUG] [Thread-161512] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:15.114 [DEBUG] [Thread-161512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:15.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:15.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:37:15.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:37:15.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:15.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:15.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:15.148 [DEBUG] [Thread-161512] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:21.497 [DEBUG] [Thread-161514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:37:22.650 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:37:22.650 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:37:25.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:37:25.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:37:25.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:37:25.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 36, 59), 14.2, 38.01, 0.0, 24.81, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:37:25.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:36:59
2025-09-29T16:37:25.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:37:25.983 [DEBUG] [Thread-161515] [transport.py] [_log()] starting thread (client mode): 0x2e38dd20
2025-09-29T16:37:25.983 [DEBUG] [Thread-161515] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:26.002 [DEBUG] [Thread-161515] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:37:26.002 [INFO] [Thread-161515] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:37:26.005 [DEBUG] [Thread-161515] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:26.005 [DEBUG] [Thread-161515] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:37:26.005 [DEBUG] [Thread-161515] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:26.005 [DEBUG] [Thread-161515] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:26.005 [DEBUG] [Thread-161515] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:26.005 [DEBUG] [Thread-161515] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:26.005 [DEBUG] [Thread-161515] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:26.005 [DEBUG] [Thread-161515] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] Compression: none
2025-09-29T16:37:26.006 [DEBUG] [Thread-161515] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:26.023 [DEBUG] [Thread-161515] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:26.024 [DEBUG] [Thread-161515] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:26.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:37:26.025 [DEBUG] [Thread-161515] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:37:26.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:26.026 [DEBUG] [Thread-161515] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:26.026 [DEBUG] [Thread-161515] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:26.027 [DEBUG] [Thread-161515] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:26.027 [DEBUG] [Thread-161515] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:37:26.027 [DEBUG] [Thread-161515] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:26.051 [INFO] [Thread-161515] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:26.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:26.667 [DEBUG] [Thread-161515] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:26.668 [DEBUG] [Thread-161515] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:26.668 [DEBUG] [Thread-161515] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:37:26.708 [DEBUG] [Thread-161515] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:26.709 [DEBUG] [Thread-161515] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:26.711 [DEBUG] [Thread-161515] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:26.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:26.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:37:26.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:37:26.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:37:26.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:26.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:37:26.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:26.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:26.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:37:26.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.608747 -999.00  +14.60  16.98     44   +2.50 1 1 1 1 1   887    0 11.11 -49.42 ----- 18.6 17.0 147.1 24.9 19.7 -28.8 19.2 -26.9 20.9 -27.8 21.8 -29.1
2025-09-29T16:37:26.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:37:26.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:37:26.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.608747
2025-09-29T16:37:26.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:37:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:37:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:37:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:37:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:37:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:36:59', tmtdew=14.2, humidity=38.01, cloud=0.0, wind=24.81, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:36:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:37:26.737 [DEBUG] [Thread-161515] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:26.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:37:26.832 [DEBUG] [Thread-161518] [transport.py] [_log()] starting thread (client mode): 0x30ddf940
2025-09-29T16:37:26.832 [DEBUG] [Thread-161518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:26.847 [DEBUG] [Thread-161518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:37:26.847 [INFO] [Thread-161518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:37:26.854 [DEBUG] [Thread-161518] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:26.854 [DEBUG] [Thread-161518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:26.855 [DEBUG] [Thread-161518] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:26.856 [DEBUG] [Thread-161518] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:26.856 [DEBUG] [Thread-161518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:26.856 [DEBUG] [Thread-161518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:26.856 [DEBUG] [Thread-161518] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:26.856 [DEBUG] [Thread-161518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:26.856 [DEBUG] [Thread-161518] [transport.py] [_log()] Compression: none
2025-09-29T16:37:26.856 [DEBUG] [Thread-161518] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:26.913 [DEBUG] [Thread-161518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:26.913 [DEBUG] [Thread-161518] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:26.914 [DEBUG] [Thread-161518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:37:26.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:37:26.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:26.968 [DEBUG] [Thread-161518] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:26.968 [DEBUG] [Thread-161518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:26.969 [DEBUG] [Thread-161518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:26.969 [DEBUG] [Thread-161518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:37:26.969 [DEBUG] [Thread-161518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:26.989 [INFO] [Thread-161518] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:26.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:37:26.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:28.017 [DEBUG] [Thread-161518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:28.017 [DEBUG] [Thread-161518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:28.065 [DEBUG] [Thread-161518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:28.065 [DEBUG] [Thread-161518] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:28.074 [DEBUG] [Thread-161518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:28.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:28.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:37:28.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:37:28.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:28.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:28.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:28.109 [DEBUG] [Thread-161518] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:36.537 [DEBUG] [Thread-161520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:37:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:37:38.112 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:37:38.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:37:38.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 37, 31), 14.34, 37.68, 0.0, 26.82, 14.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:37:38.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:37:31
2025-09-29T16:37:38.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:37:38.934 [DEBUG] [Thread-161521] [transport.py] [_log()] starting thread (client mode): 0x2e38d0f0
2025-09-29T16:37:38.935 [DEBUG] [Thread-161521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:38.956 [DEBUG] [Thread-161521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:37:38.956 [INFO] [Thread-161521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:37:38.959 [DEBUG] [Thread-161521] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:38.959 [DEBUG] [Thread-161521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:38.960 [DEBUG] [Thread-161521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:38.961 [DEBUG] [Thread-161521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:38.961 [DEBUG] [Thread-161521] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:38.961 [DEBUG] [Thread-161521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:38.961 [DEBUG] [Thread-161521] [transport.py] [_log()] Compression: none
2025-09-29T16:37:38.961 [DEBUG] [Thread-161521] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:38.980 [DEBUG] [Thread-161521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:38.980 [DEBUG] [Thread-161521] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:38.981 [DEBUG] [Thread-161521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:37:38.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:37:38.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:38.983 [DEBUG] [Thread-161521] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:38.983 [DEBUG] [Thread-161521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:38.983 [DEBUG] [Thread-161521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:38.983 [DEBUG] [Thread-161521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:37:38.983 [DEBUG] [Thread-161521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:39.007 [INFO] [Thread-161521] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:39.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:39.665 [DEBUG] [Thread-161521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:39.665 [DEBUG] [Thread-161521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:39.666 [DEBUG] [Thread-161521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:37:39.706 [DEBUG] [Thread-161521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:39.706 [DEBUG] [Thread-161521] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:39.710 [DEBUG] [Thread-161521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:39.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:39.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:37:39.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:37:39.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:37:39.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:39.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:37:39.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:39.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:39.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:37:39.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.609094 -999.00  +14.70  18.56     43   +2.50 1 1 1 1 1   887    0 11.14 -49.49 ----- 16.5 18.6 139.6 24.3 19.7 -28.3 19.1 -27.7 20.9 -27.8 21.9 -28.9
2025-09-29T16:37:39.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:37:39.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:37:39.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.609094
2025-09-29T16:37:39.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:37:39.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:37:39.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:37:39.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:37:39.736 [DEBUG] [Thread-161521] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:39.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:37:39.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:37:31', tmtdew=14.34, humidity=37.68, cloud=0.0, wind=26.82, temperature=14.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:37:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:37:39.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:37:39.834 [DEBUG] [Thread-161524] [transport.py] [_log()] starting thread (client mode): 0x2e38f190
2025-09-29T16:37:39.834 [DEBUG] [Thread-161524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:39.849 [DEBUG] [Thread-161524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:37:39.849 [INFO] [Thread-161524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:39.857 [DEBUG] [Thread-161524] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:39.858 [DEBUG] [Thread-161524] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:39.858 [DEBUG] [Thread-161524] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:39.858 [DEBUG] [Thread-161524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:39.858 [DEBUG] [Thread-161524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:39.858 [DEBUG] [Thread-161524] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:39.858 [DEBUG] [Thread-161524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:39.858 [DEBUG] [Thread-161524] [transport.py] [_log()] Compression: none
2025-09-29T16:37:39.858 [DEBUG] [Thread-161524] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:39.916 [DEBUG] [Thread-161524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:39.917 [DEBUG] [Thread-161524] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:39.917 [DEBUG] [Thread-161524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:37:39.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:37:39.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:39.973 [DEBUG] [Thread-161524] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:39.973 [DEBUG] [Thread-161524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:39.973 [DEBUG] [Thread-161524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:39.973 [DEBUG] [Thread-161524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:37:39.973 [DEBUG] [Thread-161524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:39.993 [INFO] [Thread-161524] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:39.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:37:39.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:41.001 [DEBUG] [Thread-161524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:41.002 [DEBUG] [Thread-161524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:41.049 [DEBUG] [Thread-161524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:41.049 [DEBUG] [Thread-161524] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:41.059 [DEBUG] [Thread-161524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:41.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:41.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:37:41.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:37:41.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:41.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:41.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:41.098 [DEBUG] [Thread-161524] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:48.908 [DEBUG] [Thread-161526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:37:51.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:37:51.098 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:37:51.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:37:51.562 [DEBUG] [Thread-161527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:37:51.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 37, 31), 14.34, 37.68, 0.0, 26.82, 14.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:37:51.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:37:31
2025-09-29T16:37:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:37:51.918 [DEBUG] [Thread-161528] [transport.py] [_log()] starting thread (client mode): 0x30ddfeb0
2025-09-29T16:37:51.918 [DEBUG] [Thread-161528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:51.938 [DEBUG] [Thread-161528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:37:51.938 [INFO] [Thread-161528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:37:51.941 [DEBUG] [Thread-161528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] Compression: none
2025-09-29T16:37:51.942 [DEBUG] [Thread-161528] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:51.959 [DEBUG] [Thread-161528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:51.959 [DEBUG] [Thread-161528] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:51.960 [DEBUG] [Thread-161528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:37:51.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:37:51.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:51.961 [DEBUG] [Thread-161528] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:51.962 [DEBUG] [Thread-161528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:51.962 [DEBUG] [Thread-161528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:51.962 [DEBUG] [Thread-161528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:37:51.962 [DEBUG] [Thread-161528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:51.986 [INFO] [Thread-161528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:51.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:52.636 [DEBUG] [Thread-161528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:52.636 [DEBUG] [Thread-161528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:52.636 [DEBUG] [Thread-161528] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:37:52.677 [DEBUG] [Thread-161528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:52.678 [DEBUG] [Thread-161528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:52.681 [DEBUG] [Thread-161528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:52.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:52.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:37:52.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:37:52.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:37:52.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:52.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:37:52.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:52.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:52.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:37:52.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.609094 -999.00  +14.70  18.56     43   +2.50 1 1 1 1 1   887    0 11.14 -49.49 ----- 16.5 18.6 139.6 24.3 19.7 -28.3 19.1 -27.7 20.9 -27.8 21.9 -28.9
2025-09-29T16:37:52.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:37:52.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:37:52.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.609094
2025-09-29T16:37:52.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:37:52.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:37:52.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:37:52.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:37:52.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:37:52.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:37:31', tmtdew=14.34, humidity=37.68, cloud=0.0, wind=26.82, temperature=14.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:37:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:37:52.708 [DEBUG] [Thread-161528] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:37:52.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:37:52.803 [DEBUG] [Thread-161531] [transport.py] [_log()] starting thread (client mode): 0x2e3fa320
2025-09-29T16:37:52.803 [DEBUG] [Thread-161531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:37:52.818 [DEBUG] [Thread-161531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:37:52.818 [INFO] [Thread-161531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:37:52.825 [DEBUG] [Thread-161531] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:37:52.825 [DEBUG] [Thread-161531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] client lang: <none>
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] server lang: <none>
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] kex follows: False
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] Compression: none
2025-09-29T16:37:52.826 [DEBUG] [Thread-161531] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:37:52.885 [DEBUG] [Thread-161531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:37:52.886 [DEBUG] [Thread-161531] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:37:52.886 [DEBUG] [Thread-161531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:37:52.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:37:52.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:37:52.942 [DEBUG] [Thread-161531] [transport.py] [_log()] userauth is OK
2025-09-29T16:37:52.942 [DEBUG] [Thread-161531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:37:52.942 [DEBUG] [Thread-161531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:37:52.942 [DEBUG] [Thread-161531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:37:52.942 [DEBUG] [Thread-161531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:37:52.962 [INFO] [Thread-161531] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:37:52.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:37:52.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:37:53.947 [DEBUG] [Thread-161531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:37:53.947 [DEBUG] [Thread-161531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:37:53.996 [DEBUG] [Thread-161531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:37:53.997 [DEBUG] [Thread-161531] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:37:54.008 [DEBUG] [Thread-161531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:37:54.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:37:54.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:37:54.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:37:54.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:37:54.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:37:54.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:37:54.051 [DEBUG] [Thread-161531] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:04.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:38:04.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:38:04.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:38:04.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 37, 31), 14.34, 37.68, 0.0, 26.82, 14.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:38:04.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:37:31
2025-09-29T16:38:04.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:38:04.934 [DEBUG] [Thread-161533] [transport.py] [_log()] starting thread (client mode): 0x2e38c9d0
2025-09-29T16:38:04.935 [DEBUG] [Thread-161533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:04.954 [DEBUG] [Thread-161533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:38:04.954 [INFO] [Thread-161533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:38:04.955 [DEBUG] [Thread-161533] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:04.955 [DEBUG] [Thread-161533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:38:04.955 [DEBUG] [Thread-161533] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:04.955 [DEBUG] [Thread-161533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:04.955 [DEBUG] [Thread-161533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:04.955 [DEBUG] [Thread-161533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:04.955 [DEBUG] [Thread-161533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] Compression: none
2025-09-29T16:38:04.956 [DEBUG] [Thread-161533] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:04.963 [DEBUG] [Thread-161533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:04.964 [DEBUG] [Thread-161533] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:04.964 [DEBUG] [Thread-161533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:38:04.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:38:04.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:04.965 [DEBUG] [Thread-161533] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:04.965 [DEBUG] [Thread-161533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:04.965 [DEBUG] [Thread-161533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:04.965 [DEBUG] [Thread-161533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:38:04.965 [DEBUG] [Thread-161533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:04.995 [INFO] [Thread-161533] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:04.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:05.656 [DEBUG] [Thread-161533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:05.656 [DEBUG] [Thread-161533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:05.656 [DEBUG] [Thread-161533] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:38:05.698 [DEBUG] [Thread-161533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:05.698 [DEBUG] [Thread-161533] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:05.701 [DEBUG] [Thread-161533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:05.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:05.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:38:05.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:38:05.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:38:05.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:05.719 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:38:05.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.609441 -999.00  +14.70  17.66     43   +2.50 1 1 1 1 1   887    0 11.06 -51.31 ----- 18.1 17.7 143.3 24.7 19.6 -28.4 19.2 -26.8 20.9 -28.5 21.8 -28.5
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.609441
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:38:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:37:31', tmtdew=14.34, humidity=37.68, cloud=0.0, wind=26.82, temperature=14.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:37:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:38:05.720 [DEBUG] [Thread-161533] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:05.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:38:05.809 [DEBUG] [Thread-161536] [transport.py] [_log()] starting thread (client mode): 0x2b9ceb30
2025-09-29T16:38:05.809 [DEBUG] [Thread-161536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:05.823 [DEBUG] [Thread-161536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:38:05.823 [INFO] [Thread-161536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] Compression: none
2025-09-29T16:38:05.831 [DEBUG] [Thread-161536] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:05.894 [DEBUG] [Thread-161536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:05.894 [DEBUG] [Thread-161536] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:05.894 [DEBUG] [Thread-161536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:38:05.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:38:05.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:05.950 [DEBUG] [Thread-161536] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:05.950 [DEBUG] [Thread-161536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:05.950 [DEBUG] [Thread-161536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:05.950 [DEBUG] [Thread-161536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:38:05.950 [DEBUG] [Thread-161536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:05.964 [INFO] [Thread-161536] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:05.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:38:05.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:06.604 [DEBUG] [Thread-161538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:38:06.927 [DEBUG] [Thread-161536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:06.928 [DEBUG] [Thread-161536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:06.975 [DEBUG] [Thread-161536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:06.975 [DEBUG] [Thread-161536] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:06.984 [DEBUG] [Thread-161536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:06.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:06.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:38:07.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:38:07.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:07.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:07.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:07.023 [DEBUG] [Thread-161536] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:17.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:38:17.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:38:17.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:38:17.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 38, 3), 14.31, 37.75, 0.0, 24.74, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:38:17.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:38:03
2025-09-29T16:38:17.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:38:17.845 [DEBUG] [Thread-161539] [transport.py] [_log()] starting thread (client mode): 0x2b9cf8e0
2025-09-29T16:38:17.845 [DEBUG] [Thread-161539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:17.863 [DEBUG] [Thread-161539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:38:17.863 [INFO] [Thread-161539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:38:17.864 [DEBUG] [Thread-161539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:17.865 [DEBUG] [Thread-161539] [transport.py] [_log()] Compression: none
2025-09-29T16:38:17.866 [DEBUG] [Thread-161539] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:17.874 [DEBUG] [Thread-161539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:17.875 [DEBUG] [Thread-161539] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:17.875 [DEBUG] [Thread-161539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:38:17.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:38:17.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:17.876 [DEBUG] [Thread-161539] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:17.877 [DEBUG] [Thread-161539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:17.877 [DEBUG] [Thread-161539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:17.877 [DEBUG] [Thread-161539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:38:17.877 [DEBUG] [Thread-161539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:17.909 [INFO] [Thread-161539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:17.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:18.551 [DEBUG] [Thread-161539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:18.551 [DEBUG] [Thread-161539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:18.552 [DEBUG] [Thread-161539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:38:18.593 [DEBUG] [Thread-161539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:18.593 [DEBUG] [Thread-161539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:18.595 [DEBUG] [Thread-161539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:18.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:18.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:38:18.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:38:18.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:38:18.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:18.615 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:38:18.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:18.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:38:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.609441 -999.00  +14.70  17.66     43   +2.50 1 1 1 1 1   887    0 11.06 -51.31 ----- 18.1 17.7 143.3 24.7 19.6 -28.4 19.2 -26.8 20.9 -28.5 21.8 -28.5
2025-09-29T16:38:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:38:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:38:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.609441
2025-09-29T16:38:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:38:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:38:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:38:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:38:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:38:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:38:03', tmtdew=14.31, humidity=37.75, cloud=0.0, wind=24.74, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:37:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:38:18.616 [DEBUG] [Thread-161539] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:18.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:38:18.698 [DEBUG] [Thread-161542] [transport.py] [_log()] starting thread (client mode): 0x2b9ccc40
2025-09-29T16:38:18.698 [DEBUG] [Thread-161542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:18.712 [DEBUG] [Thread-161542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:38:18.713 [INFO] [Thread-161542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:38:18.720 [DEBUG] [Thread-161542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:18.720 [DEBUG] [Thread-161542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] Compression: none
2025-09-29T16:38:18.721 [DEBUG] [Thread-161542] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:18.779 [DEBUG] [Thread-161542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:18.780 [DEBUG] [Thread-161542] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:18.780 [DEBUG] [Thread-161542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:38:18.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:38:18.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:18.835 [DEBUG] [Thread-161542] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:18.836 [DEBUG] [Thread-161542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:18.836 [DEBUG] [Thread-161542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:18.836 [DEBUG] [Thread-161542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:38:18.836 [DEBUG] [Thread-161542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:18.859 [INFO] [Thread-161542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:18.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:38:18.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:19.799 [DEBUG] [Thread-161542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:19.800 [DEBUG] [Thread-161542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:19.847 [DEBUG] [Thread-161542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:19.847 [DEBUG] [Thread-161542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:19.856 [DEBUG] [Thread-161542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:19.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:19.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:38:19.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:38:19.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:19.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:19.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:19.892 [DEBUG] [Thread-161542] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:21.647 [DEBUG] [Thread-161544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:38:22.790 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:38:22.791 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:38:29.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:38:29.887 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:38:29.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:38:30.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 38, 3), 14.31, 37.75, 0.0, 24.74, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:38:30.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:38:03
2025-09-29T16:38:30.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:38:30.723 [DEBUG] [Thread-161545] [transport.py] [_log()] starting thread (client mode): 0x2e38cbe0
2025-09-29T16:38:30.723 [DEBUG] [Thread-161545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:30.743 [DEBUG] [Thread-161545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:38:30.743 [INFO] [Thread-161545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:38:30.746 [DEBUG] [Thread-161545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:30.746 [DEBUG] [Thread-161545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:38:30.746 [DEBUG] [Thread-161545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] Compression: none
2025-09-29T16:38:30.747 [DEBUG] [Thread-161545] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:30.764 [DEBUG] [Thread-161545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:30.764 [DEBUG] [Thread-161545] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:30.765 [DEBUG] [Thread-161545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:38:30.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:38:30.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:30.766 [DEBUG] [Thread-161545] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:30.767 [DEBUG] [Thread-161545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:30.767 [DEBUG] [Thread-161545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:30.767 [DEBUG] [Thread-161545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:38:30.767 [DEBUG] [Thread-161545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:30.790 [INFO] [Thread-161545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:30.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:31.444 [DEBUG] [Thread-161545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:31.444 [DEBUG] [Thread-161545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:31.444 [DEBUG] [Thread-161545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:38:31.485 [DEBUG] [Thread-161545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:31.485 [DEBUG] [Thread-161545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:31.488 [DEBUG] [Thread-161545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:31.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:31.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:38:31.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:38:31.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:38:31.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:31.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:38:31.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:31.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:31.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:38:31.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.609441 -999.00  +14.70  17.66     43   +2.50 1 1 1 1 1   887    0 11.06 -51.31 ----- 18.1 17.7 143.3 24.7 19.6 -28.4 19.2 -26.8 20.9 -28.5 21.8 -28.5
2025-09-29T16:38:31.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:38:31.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:38:31.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.609441
2025-09-29T16:38:31.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:38:31.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:38:31.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:38:31.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:38:31.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:38:31.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:38:03', tmtdew=14.31, humidity=37.75, cloud=0.0, wind=24.74, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:37:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:38:31.511 [DEBUG] [Thread-161545] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:31.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:38:31.610 [DEBUG] [Thread-161548] [transport.py] [_log()] starting thread (client mode): 0x30ddfc10
2025-09-29T16:38:31.610 [DEBUG] [Thread-161548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:31.625 [DEBUG] [Thread-161548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:38:31.625 [INFO] [Thread-161548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:38:31.632 [DEBUG] [Thread-161548] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:31.632 [DEBUG] [Thread-161548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:31.633 [DEBUG] [Thread-161548] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:31.634 [DEBUG] [Thread-161548] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:31.634 [DEBUG] [Thread-161548] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:31.634 [DEBUG] [Thread-161548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:31.634 [DEBUG] [Thread-161548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:31.634 [DEBUG] [Thread-161548] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:31.634 [DEBUG] [Thread-161548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:31.634 [DEBUG] [Thread-161548] [transport.py] [_log()] Compression: none
2025-09-29T16:38:31.634 [DEBUG] [Thread-161548] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:31.696 [DEBUG] [Thread-161548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:31.696 [DEBUG] [Thread-161548] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:31.697 [DEBUG] [Thread-161548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:38:31.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:38:31.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:31.752 [DEBUG] [Thread-161548] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:31.752 [DEBUG] [Thread-161548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:31.752 [DEBUG] [Thread-161548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:31.752 [DEBUG] [Thread-161548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:38:31.752 [DEBUG] [Thread-161548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:31.774 [INFO] [Thread-161548] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:31.775 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:38:31.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:32.730 [DEBUG] [Thread-161548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:32.730 [DEBUG] [Thread-161548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:32.778 [DEBUG] [Thread-161548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:32.778 [DEBUG] [Thread-161548] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:32.787 [DEBUG] [Thread-161548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:32.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:32.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:38:32.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:38:32.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:32.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:32.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:32.820 [DEBUG] [Thread-161548] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:36.680 [DEBUG] [Thread-161550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:38:42.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:38:42.815 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:38:42.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:38:43.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 38, 35), 14.24, 37.93, 0.0, 20.06, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:38:43.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:38:35
2025-09-29T16:38:43.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:38:43.639 [DEBUG] [Thread-161551] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d90
2025-09-29T16:38:43.639 [DEBUG] [Thread-161551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:43.662 [DEBUG] [Thread-161551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:38:43.662 [INFO] [Thread-161551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] Compression: none
2025-09-29T16:38:43.666 [DEBUG] [Thread-161551] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:43.684 [DEBUG] [Thread-161551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:43.685 [DEBUG] [Thread-161551] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:43.685 [DEBUG] [Thread-161551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:38:43.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:38:43.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:43.686 [DEBUG] [Thread-161551] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:43.686 [DEBUG] [Thread-161551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:43.686 [DEBUG] [Thread-161551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:43.686 [DEBUG] [Thread-161551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:38:43.686 [DEBUG] [Thread-161551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:43.702 [INFO] [Thread-161551] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:43.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:44.341 [DEBUG] [Thread-161551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:44.341 [DEBUG] [Thread-161551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:44.341 [DEBUG] [Thread-161551] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:38:44.382 [DEBUG] [Thread-161551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:44.383 [DEBUG] [Thread-161551] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:44.386 [DEBUG] [Thread-161551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:44.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:44.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:38:44.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:38:44.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:38:44.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:44.410 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:38:44.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:44.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:44.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:38:44.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.609788 -999.00  +14.70  19.86     43   +2.50 1 1 1 1 1   887    0 11.14 -52.47 ----- 19.2 19.9 140.2 24.4 19.6 -28.6 19.2 -27.1 21.0 -27.2 21.8 -28.6
2025-09-29T16:38:44.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:38:44.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:38:44.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.609788
2025-09-29T16:38:44.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:38:44.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:38:44.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:38:44.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:38:44.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:38:44.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:38:35', tmtdew=14.24, humidity=37.93, cloud=0.0, wind=20.06, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:38:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:38:44.413 [DEBUG] [Thread-161551] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:44.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:38:44.512 [DEBUG] [Thread-161554] [transport.py] [_log()] starting thread (client mode): 0x2b9cee90
2025-09-29T16:38:44.512 [DEBUG] [Thread-161554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:44.527 [DEBUG] [Thread-161554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:38:44.527 [INFO] [Thread-161554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:38:44.534 [DEBUG] [Thread-161554] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:44.535 [DEBUG] [Thread-161554] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] Compression: none
2025-09-29T16:38:44.536 [DEBUG] [Thread-161554] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:44.597 [DEBUG] [Thread-161554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:44.597 [DEBUG] [Thread-161554] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:44.598 [DEBUG] [Thread-161554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:38:44.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:38:44.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:44.653 [DEBUG] [Thread-161554] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:44.653 [DEBUG] [Thread-161554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:44.653 [DEBUG] [Thread-161554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:44.653 [DEBUG] [Thread-161554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:38:44.653 [DEBUG] [Thread-161554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:44.672 [INFO] [Thread-161554] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:44.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:38:44.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:45.665 [DEBUG] [Thread-161554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:45.665 [DEBUG] [Thread-161554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:45.712 [DEBUG] [Thread-161554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:45.713 [DEBUG] [Thread-161554] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:45.721 [DEBUG] [Thread-161554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:45.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:45.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:38:45.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:38:45.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:45.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:45.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:45.752 [DEBUG] [Thread-161554] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:48.935 [DEBUG] [Thread-161556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:38:51.705 [DEBUG] [Thread-161557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:38:55.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:38:55.751 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:38:55.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:38:56.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 38, 35), 14.24, 37.93, 0.0, 20.06, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:38:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:38:35
2025-09-29T16:38:56.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:38:56.575 [DEBUG] [Thread-161558] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-29T16:38:56.575 [DEBUG] [Thread-161558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:56.594 [DEBUG] [Thread-161558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:38:56.594 [INFO] [Thread-161558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:38:56.597 [DEBUG] [Thread-161558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:56.597 [DEBUG] [Thread-161558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:38:56.597 [DEBUG] [Thread-161558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] Compression: none
2025-09-29T16:38:56.598 [DEBUG] [Thread-161558] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:56.615 [DEBUG] [Thread-161558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:56.615 [DEBUG] [Thread-161558] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:56.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:38:56.616 [DEBUG] [Thread-161558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:38:56.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:56.618 [DEBUG] [Thread-161558] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:56.619 [DEBUG] [Thread-161558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:56.619 [DEBUG] [Thread-161558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:56.619 [DEBUG] [Thread-161558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:38:56.619 [DEBUG] [Thread-161558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:56.644 [INFO] [Thread-161558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:56.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:57.295 [DEBUG] [Thread-161558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:57.295 [DEBUG] [Thread-161558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:57.295 [DEBUG] [Thread-161558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:38:57.335 [DEBUG] [Thread-161558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:57.335 [DEBUG] [Thread-161558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:57.338 [DEBUG] [Thread-161558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:57.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:57.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:38:57.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:38:57.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:38:57.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:57.361 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:38:57.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:57.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:57.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:38:57.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.609788 -999.00  +14.70  19.86     43   +2.50 1 1 1 1 1   887    0 11.14 -52.47 ----- 19.2 19.9 140.2 24.4 19.6 -28.6 19.2 -27.1 21.0 -27.2 21.8 -28.6
2025-09-29T16:38:57.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:38:57.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:38:57.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.609788
2025-09-29T16:38:57.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:38:57.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:38:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:38:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:38:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:38:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:38:35', tmtdew=14.24, humidity=37.93, cloud=0.0, wind=20.06, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:38:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:38:57.364 [DEBUG] [Thread-161558] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:38:57.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:38:57.458 [DEBUG] [Thread-161561] [transport.py] [_log()] starting thread (client mode): 0x2b9cf1f0
2025-09-29T16:38:57.458 [DEBUG] [Thread-161561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:38:57.473 [DEBUG] [Thread-161561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:38:57.473 [INFO] [Thread-161561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] client lang: <none>
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] server lang: <none>
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] kex follows: False
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] Compression: none
2025-09-29T16:38:57.481 [DEBUG] [Thread-161561] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:38:57.539 [DEBUG] [Thread-161561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:38:57.539 [DEBUG] [Thread-161561] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:38:57.540 [DEBUG] [Thread-161561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:38:57.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:38:57.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:38:57.601 [DEBUG] [Thread-161561] [transport.py] [_log()] userauth is OK
2025-09-29T16:38:57.602 [DEBUG] [Thread-161561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:38:57.602 [DEBUG] [Thread-161561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:38:57.602 [DEBUG] [Thread-161561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:38:57.602 [DEBUG] [Thread-161561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:38:57.620 [INFO] [Thread-161561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:38:57.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:38:57.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:38:58.587 [DEBUG] [Thread-161561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:38:58.587 [DEBUG] [Thread-161561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:38:58.635 [DEBUG] [Thread-161561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:38:58.635 [DEBUG] [Thread-161561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:38:58.644 [DEBUG] [Thread-161561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:38:58.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:38:58.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:38:58.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:38:58.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:38:58.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:38:58.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:38:58.682 [DEBUG] [Thread-161561] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:06.740 [DEBUG] [Thread-161563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:39:08.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:39:08.684 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:39:08.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:39:09.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 38, 35), 14.24, 37.93, 0.0, 20.06, 14.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:39:09.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:38:35
2025-09-29T16:39:09.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:39:09.561 [DEBUG] [Thread-161564] [transport.py] [_log()] starting thread (client mode): 0x30ddfbe0
2025-09-29T16:39:09.561 [DEBUG] [Thread-161564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:39:09.583 [DEBUG] [Thread-161564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:39:09.583 [INFO] [Thread-161564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] client lang: <none>
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] server lang: <none>
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] kex follows: False
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] Compression: none
2025-09-29T16:39:09.586 [DEBUG] [Thread-161564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:39:09.601 [DEBUG] [Thread-161564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:39:09.601 [DEBUG] [Thread-161564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:39:09.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:39:09.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:39:09.602 [DEBUG] [Thread-161564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:39:09.602 [DEBUG] [Thread-161564] [transport.py] [_log()] userauth is OK
2025-09-29T16:39:09.602 [DEBUG] [Thread-161564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:39:09.602 [DEBUG] [Thread-161564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:39:09.602 [DEBUG] [Thread-161564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:39:09.602 [DEBUG] [Thread-161564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:39:09.613 [INFO] [Thread-161564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:39:09.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:39:10.237 [DEBUG] [Thread-161564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:39:10.237 [DEBUG] [Thread-161564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:39:10.237 [DEBUG] [Thread-161564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:39:10.278 [DEBUG] [Thread-161564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:39:10.278 [DEBUG] [Thread-161564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:39:10.281 [DEBUG] [Thread-161564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:39:10.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:39:10.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:39:10.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:39:10.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:39:10.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:39:10.305 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:39:10.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:39:10.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:39:10.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:39:10.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.610136 -999.00  +14.80  20.55     43   +2.60 1 1 1 1 1   887    0 11.23 -53.30 ----- 26.3 20.6 146.6 24.7 19.7 -27.7 19.3 -26.9 21.0 -27.7 21.9 -28.5
2025-09-29T16:39:10.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:39:10.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:39:10.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.610136
2025-09-29T16:39:10.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:39:10.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:39:10.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:39:10.308 [DEBUG] [Thread-161564] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:10.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:39:10.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:39:10.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:38:35', tmtdew=14.24, humidity=37.93, cloud=0.0, wind=20.06, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:38:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:39:10.396 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:39:10.407 [DEBUG] [Thread-161567] [transport.py] [_log()] starting thread (client mode): 0x2e3c0cd0
2025-09-29T16:39:10.407 [DEBUG] [Thread-161567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:39:10.421 [DEBUG] [Thread-161567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:39:10.421 [INFO] [Thread-161567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:39:10.429 [DEBUG] [Thread-161567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:39:10.429 [DEBUG] [Thread-161567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] client lang: <none>
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] server lang: <none>
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] kex follows: False
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] Compression: none
2025-09-29T16:39:10.430 [DEBUG] [Thread-161567] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:39:10.487 [DEBUG] [Thread-161567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:39:10.487 [DEBUG] [Thread-161567] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:39:10.488 [DEBUG] [Thread-161567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:39:10.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:39:10.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:39:10.546 [DEBUG] [Thread-161567] [transport.py] [_log()] userauth is OK
2025-09-29T16:39:10.547 [DEBUG] [Thread-161567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:39:10.547 [DEBUG] [Thread-161567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:39:10.547 [DEBUG] [Thread-161567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:39:10.547 [DEBUG] [Thread-161567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:39:10.566 [INFO] [Thread-161567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:39:10.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:39:10.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:39:11.512 [DEBUG] [Thread-161567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:39:11.512 [DEBUG] [Thread-161567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:39:11.560 [DEBUG] [Thread-161567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:39:11.560 [DEBUG] [Thread-161567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:39:11.569 [DEBUG] [Thread-161567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:39:11.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:39:11.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:39:11.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:39:11.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:39:11.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:39:11.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:39:11.604 [DEBUG] [Thread-161567] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:21.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:39:21.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:39:21.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:39:21.773 [DEBUG] [Thread-161569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:39:22.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 39, 7), 14.27, 37.83, 0.0, 27.08, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:39:22.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:39:07
2025-09-29T16:39:22.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:39:22.438 [DEBUG] [Thread-161570] [transport.py] [_log()] starting thread (client mode): 0x2e3fb520
2025-09-29T16:39:22.438 [DEBUG] [Thread-161570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:39:22.453 [DEBUG] [Thread-161570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:39:22.453 [INFO] [Thread-161570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] client lang: <none>
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] server lang: <none>
2025-09-29T16:39:22.456 [DEBUG] [Thread-161570] [transport.py] [_log()] kex follows: False
2025-09-29T16:39:22.457 [DEBUG] [Thread-161570] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:39:22.457 [DEBUG] [Thread-161570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:39:22.457 [DEBUG] [Thread-161570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:39:22.457 [DEBUG] [Thread-161570] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:39:22.457 [DEBUG] [Thread-161570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:39:22.457 [DEBUG] [Thread-161570] [transport.py] [_log()] Compression: none
2025-09-29T16:39:22.457 [DEBUG] [Thread-161570] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:39:22.477 [DEBUG] [Thread-161570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:39:22.477 [DEBUG] [Thread-161570] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:39:22.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:39:22.478 [DEBUG] [Thread-161570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:39:22.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:39:22.480 [DEBUG] [Thread-161570] [transport.py] [_log()] userauth is OK
2025-09-29T16:39:22.481 [DEBUG] [Thread-161570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:39:22.481 [DEBUG] [Thread-161570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:39:22.481 [DEBUG] [Thread-161570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:39:22.481 [DEBUG] [Thread-161570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:39:22.504 [INFO] [Thread-161570] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:39:22.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:39:22.933 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:39:22.934 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:39:23.131 [DEBUG] [Thread-161570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:39:23.131 [DEBUG] [Thread-161570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:39:23.131 [DEBUG] [Thread-161570] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:39:23.172 [DEBUG] [Thread-161570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:39:23.172 [DEBUG] [Thread-161570] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:39:23.175 [DEBUG] [Thread-161570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:39:23.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:39:23.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:39:23.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:39:23.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:39:23.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:39:23.193 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:39:23.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.610136 -999.00  +14.80  20.55     43   +2.60 1 1 1 1 1   887    0 11.23 -53.30 ----- 26.3 20.6 146.6 24.7 19.7 -27.7 19.3 -26.9 21.0 -27.7 21.9 -28.5
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.610136
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:39:23.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:39:07', tmtdew=14.27, humidity=37.83, cloud=0.0, wind=27.08, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:38:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:39:23.194 [DEBUG] [Thread-161570] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:23.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:39:23.275 [DEBUG] [Thread-161573] [transport.py] [_log()] starting thread (client mode): 0x2e3c1570
2025-09-29T16:39:23.275 [DEBUG] [Thread-161573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:39:23.290 [DEBUG] [Thread-161573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:39:23.290 [INFO] [Thread-161573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] client lang: <none>
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] server lang: <none>
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] kex follows: False
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:39:23.298 [DEBUG] [Thread-161573] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:39:23.299 [DEBUG] [Thread-161573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:39:23.299 [DEBUG] [Thread-161573] [transport.py] [_log()] Compression: none
2025-09-29T16:39:23.299 [DEBUG] [Thread-161573] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:39:23.354 [DEBUG] [Thread-161573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:39:23.355 [DEBUG] [Thread-161573] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:39:23.355 [DEBUG] [Thread-161573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:39:23.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:39:23.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:39:23.411 [DEBUG] [Thread-161573] [transport.py] [_log()] userauth is OK
2025-09-29T16:39:23.411 [DEBUG] [Thread-161573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:39:23.411 [DEBUG] [Thread-161573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:39:23.412 [DEBUG] [Thread-161573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:39:23.412 [DEBUG] [Thread-161573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:39:23.431 [INFO] [Thread-161573] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:39:23.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:39:23.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:39:24.401 [DEBUG] [Thread-161573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:39:24.401 [DEBUG] [Thread-161573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:39:24.449 [DEBUG] [Thread-161573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:39:24.449 [DEBUG] [Thread-161573] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:39:24.458 [DEBUG] [Thread-161573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:39:24.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:39:24.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:39:24.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:39:24.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:39:24.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:39:24.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:39:24.491 [DEBUG] [Thread-161573] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:34.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:39:34.494 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:39:34.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:39:35.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 39, 7), 14.27, 37.83, 0.0, 27.08, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:39:35.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:39:07
2025-09-29T16:39:35.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:39:35.314 [DEBUG] [Thread-161575] [transport.py] [_log()] starting thread (client mode): 0x2b96b280
2025-09-29T16:39:35.314 [DEBUG] [Thread-161575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:39:35.334 [DEBUG] [Thread-161575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:39:35.334 [INFO] [Thread-161575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] client lang: <none>
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] server lang: <none>
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] kex follows: False
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:39:35.337 [DEBUG] [Thread-161575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:39:35.338 [DEBUG] [Thread-161575] [transport.py] [_log()] Compression: none
2025-09-29T16:39:35.338 [DEBUG] [Thread-161575] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:39:35.353 [DEBUG] [Thread-161575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:39:35.354 [DEBUG] [Thread-161575] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:39:35.354 [DEBUG] [Thread-161575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:39:35.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:39:35.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:39:35.356 [DEBUG] [Thread-161575] [transport.py] [_log()] userauth is OK
2025-09-29T16:39:35.356 [DEBUG] [Thread-161575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:39:35.356 [DEBUG] [Thread-161575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:39:35.356 [DEBUG] [Thread-161575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:39:35.356 [DEBUG] [Thread-161575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:39:35.380 [INFO] [Thread-161575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:39:35.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:39:35.997 [DEBUG] [Thread-161575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:39:35.997 [DEBUG] [Thread-161575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:39:35.997 [DEBUG] [Thread-161575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:39:36.038 [DEBUG] [Thread-161575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:39:36.038 [DEBUG] [Thread-161575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:39:36.041 [DEBUG] [Thread-161575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:39:36.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:39:36.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:39:36.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:39:36.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:39:36.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:39:36.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:39:36.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:39:36.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:39:36.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:39:36.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.610136 -999.00  +14.80  20.55     43   +2.60 1 1 1 1 1   887    0 11.23 -53.30 ----- 26.3 20.6 146.6 24.7 19.7 -27.7 19.3 -26.9 21.0 -27.7 21.9 -28.5
2025-09-29T16:39:36.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:39:36.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:39:36.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.610136
2025-09-29T16:39:36.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:39:36.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:39:36.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:39:36.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:39:36.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:39:36.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:39:07', tmtdew=14.27, humidity=37.83, cloud=0.0, wind=27.08, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:38:35.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:39:36.067 [DEBUG] [Thread-161575] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:36.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:39:36.163 [DEBUG] [Thread-161578] [transport.py] [_log()] starting thread (client mode): 0x2e3610f0
2025-09-29T16:39:36.163 [DEBUG] [Thread-161578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:39:36.179 [DEBUG] [Thread-161578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:39:36.179 [INFO] [Thread-161578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:39:36.189 [DEBUG] [Thread-161578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:39:36.189 [DEBUG] [Thread-161578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:39:36.189 [DEBUG] [Thread-161578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] client lang: <none>
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] server lang: <none>
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] kex follows: False
2025-09-29T16:39:36.190 [DEBUG] [Thread-161578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:39:36.191 [DEBUG] [Thread-161578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:39:36.191 [DEBUG] [Thread-161578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:39:36.191 [DEBUG] [Thread-161578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:39:36.191 [DEBUG] [Thread-161578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:39:36.191 [DEBUG] [Thread-161578] [transport.py] [_log()] Compression: none
2025-09-29T16:39:36.191 [DEBUG] [Thread-161578] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:39:36.253 [DEBUG] [Thread-161578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:39:36.254 [DEBUG] [Thread-161578] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:39:36.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:39:36.255 [DEBUG] [Thread-161578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:39:36.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:39:36.313 [DEBUG] [Thread-161578] [transport.py] [_log()] userauth is OK
2025-09-29T16:39:36.314 [DEBUG] [Thread-161578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:39:36.314 [DEBUG] [Thread-161578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:39:36.314 [DEBUG] [Thread-161578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:39:36.314 [DEBUG] [Thread-161578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:39:36.333 [INFO] [Thread-161578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:39:36.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:39:36.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:39:36.810 [DEBUG] [Thread-161580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:39:37.295 [DEBUG] [Thread-161578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:39:37.295 [DEBUG] [Thread-161578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:39:37.344 [DEBUG] [Thread-161578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:39:37.344 [DEBUG] [Thread-161578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:39:37.353 [DEBUG] [Thread-161578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:39:37.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:39:37.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:39:37.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:39:37.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:39:37.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:39:37.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:39:37.386 [DEBUG] [Thread-161578] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:47.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:39:47.390 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:39:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:39:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 39, 39), 14.47, 37.47, 0.0, 23.19, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:39:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:39:39
2025-09-29T16:39:48.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:39:48.211 [DEBUG] [Thread-161581] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d00
2025-09-29T16:39:48.211 [DEBUG] [Thread-161581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:39:48.231 [DEBUG] [Thread-161581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:39:48.231 [INFO] [Thread-161581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:39:48.234 [DEBUG] [Thread-161581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:39:48.234 [DEBUG] [Thread-161581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:39:48.234 [DEBUG] [Thread-161581] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:39:48.234 [DEBUG] [Thread-161581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] client lang: <none>
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] server lang: <none>
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] kex follows: False
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:39:48.235 [DEBUG] [Thread-161581] [transport.py] [_log()] Compression: none
2025-09-29T16:39:48.236 [DEBUG] [Thread-161581] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:39:48.255 [DEBUG] [Thread-161581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:39:48.255 [DEBUG] [Thread-161581] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:39:48.256 [DEBUG] [Thread-161581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:39:48.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:39:48.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:39:48.296 [DEBUG] [Thread-161581] [transport.py] [_log()] userauth is OK
2025-09-29T16:39:48.297 [DEBUG] [Thread-161581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:39:48.297 [DEBUG] [Thread-161581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:39:48.297 [DEBUG] [Thread-161581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:39:48.297 [DEBUG] [Thread-161581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:39:48.330 [INFO] [Thread-161581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:39:48.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:39:48.962 [DEBUG] [Thread-161581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:39:48.962 [DEBUG] [Thread-161581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:39:48.962 [DEBUG] [Thread-161581] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:39:48.967 [DEBUG] [Thread-161583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:39:49.003 [DEBUG] [Thread-161581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:39:49.003 [DEBUG] [Thread-161581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:39:49.006 [DEBUG] [Thread-161581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:39:49.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:39:49.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:39:49.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:39:49.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:39:49.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:39:49.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:39:49.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:39:49.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:39:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:39:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.610830 -999.00  +14.70  13.53     43   +2.50 1 1 1 1 1   887    0 10.81 -58.53 ----- 15.2 13.5 141.3 25.3 19.6 -28.7 19.2 -28.8 20.9 -28.0 21.8 -28.3
2025-09-29T16:39:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:39:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:39:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.610830
2025-09-29T16:39:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:39:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:39:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:39:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:39:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:39:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:39:39', tmtdew=14.47, humidity=37.47, cloud=0.0, wind=23.19, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:39:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:39:49.032 [DEBUG] [Thread-161581] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:49.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:39:49.125 [DEBUG] [Thread-161585] [transport.py] [_log()] starting thread (client mode): 0x2e361cc0
2025-09-29T16:39:49.125 [DEBUG] [Thread-161585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:39:49.141 [DEBUG] [Thread-161585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:39:49.141 [INFO] [Thread-161585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:39:49.148 [DEBUG] [Thread-161585] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:39:49.149 [DEBUG] [Thread-161585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:39:49.149 [DEBUG] [Thread-161585] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:39:49.149 [DEBUG] [Thread-161585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:49.149 [DEBUG] [Thread-161585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:39:49.149 [DEBUG] [Thread-161585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:49.149 [DEBUG] [Thread-161585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:39:49.149 [DEBUG] [Thread-161585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:39:49.149 [DEBUG] [Thread-161585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:39:49.150 [DEBUG] [Thread-161585] [transport.py] [_log()] client lang: <none>
2025-09-29T16:39:49.150 [DEBUG] [Thread-161585] [transport.py] [_log()] server lang: <none>
2025-09-29T16:39:49.150 [DEBUG] [Thread-161585] [transport.py] [_log()] kex follows: False
2025-09-29T16:39:49.150 [DEBUG] [Thread-161585] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:39:49.150 [DEBUG] [Thread-161585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:39:49.150 [DEBUG] [Thread-161585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:39:49.150 [DEBUG] [Thread-161585] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:39:49.150 [DEBUG] [Thread-161585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:39:49.151 [DEBUG] [Thread-161585] [transport.py] [_log()] Compression: none
2025-09-29T16:39:49.151 [DEBUG] [Thread-161585] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:39:49.209 [DEBUG] [Thread-161585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:39:49.209 [DEBUG] [Thread-161585] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:39:49.210 [DEBUG] [Thread-161585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:39:49.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:39:49.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:39:49.268 [DEBUG] [Thread-161585] [transport.py] [_log()] userauth is OK
2025-09-29T16:39:49.269 [DEBUG] [Thread-161585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:39:49.269 [DEBUG] [Thread-161585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:39:49.269 [DEBUG] [Thread-161585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:39:49.269 [DEBUG] [Thread-161585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:39:49.288 [INFO] [Thread-161585] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:39:49.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:39:49.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:39:50.236 [DEBUG] [Thread-161585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:39:50.236 [DEBUG] [Thread-161585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:39:50.284 [DEBUG] [Thread-161585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:39:50.284 [DEBUG] [Thread-161585] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:39:50.293 [DEBUG] [Thread-161585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:39:50.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:39:50.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:39:50.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:39:50.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:39:50.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:39:50.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:39:50.328 [DEBUG] [Thread-161585] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:39:51.856 [DEBUG] [Thread-161587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:40:00.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:40:00.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:40:00.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:40:00.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 39, 39), 14.47, 37.47, 0.0, 23.19, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:40:00.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:39:39
2025-09-29T16:40:01.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:40:01.166 [DEBUG] [Thread-161588] [transport.py] [_log()] starting thread (client mode): 0x2e348130
2025-09-29T16:40:01.166 [DEBUG] [Thread-161588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:40:01.185 [DEBUG] [Thread-161588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:40:01.185 [INFO] [Thread-161588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:40:01.188 [DEBUG] [Thread-161588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] client lang: <none>
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] server lang: <none>
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] kex follows: False
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] Compression: none
2025-09-29T16:40:01.189 [DEBUG] [Thread-161588] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:40:01.209 [DEBUG] [Thread-161588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:40:01.210 [DEBUG] [Thread-161588] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:40:01.210 [DEBUG] [Thread-161588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:40:01.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:40:01.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:40:01.212 [DEBUG] [Thread-161588] [transport.py] [_log()] userauth is OK
2025-09-29T16:40:01.212 [DEBUG] [Thread-161588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:40:01.212 [DEBUG] [Thread-161588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:40:01.213 [DEBUG] [Thread-161588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:40:01.213 [DEBUG] [Thread-161588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:40:01.237 [INFO] [Thread-161588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:40:01.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:40:01.874 [DEBUG] [Thread-161588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:40:01.875 [DEBUG] [Thread-161588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:40:01.875 [DEBUG] [Thread-161588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:40:01.915 [DEBUG] [Thread-161588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:40:01.915 [DEBUG] [Thread-161588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:40:01.918 [DEBUG] [Thread-161588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:40:01.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:40:01.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:40:01.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:40:01.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:40:01.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:40:01.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:40:01.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:40:01.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:40:01.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:40:01.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.610830 -999.00  +14.70  13.53     43   +2.50 1 1 1 1 1   887    0 10.81 -58.53 ----- 15.2 13.5 141.3 25.3 19.6 -28.7 19.2 -28.8 20.9 -28.0 21.8 -28.3
2025-09-29T16:40:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:40:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:40:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.610830
2025-09-29T16:40:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:40:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:40:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:40:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:40:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:40:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:39:39', tmtdew=14.47, humidity=37.47, cloud=0.0, wind=23.19, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:39:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:40:01.935 [DEBUG] [Thread-161588] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:40:02.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:40:02.030 [DEBUG] [Thread-161591] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d60
2025-09-29T16:40:02.031 [DEBUG] [Thread-161591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:40:02.046 [DEBUG] [Thread-161591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:40:02.046 [INFO] [Thread-161591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:40:02.053 [DEBUG] [Thread-161591] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:40:02.053 [DEBUG] [Thread-161591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:40:02.053 [DEBUG] [Thread-161591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] client lang: <none>
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] server lang: <none>
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] kex follows: False
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] Compression: none
2025-09-29T16:40:02.054 [DEBUG] [Thread-161591] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:40:02.113 [DEBUG] [Thread-161591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:40:02.113 [DEBUG] [Thread-161591] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:40:02.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:40:02.114 [DEBUG] [Thread-161591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:40:02.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:40:02.169 [DEBUG] [Thread-161591] [transport.py] [_log()] userauth is OK
2025-09-29T16:40:02.169 [DEBUG] [Thread-161591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:40:02.170 [DEBUG] [Thread-161591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:40:02.170 [DEBUG] [Thread-161591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:40:02.170 [DEBUG] [Thread-161591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:40:02.189 [INFO] [Thread-161591] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:40:02.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:40:02.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:40:03.203 [DEBUG] [Thread-161591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:40:03.203 [DEBUG] [Thread-161591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:40:03.250 [DEBUG] [Thread-161591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:40:03.250 [DEBUG] [Thread-161591] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:40:03.262 [DEBUG] [Thread-161591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:40:03.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:40:03.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:40:03.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:40:03.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:40:03.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:40:03.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:40:03.301 [DEBUG] [Thread-161591] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:40:06.908 [DEBUG] [Thread-161593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:40:13.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:40:13.302 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:40:13.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:40:13.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 39, 39), 14.47, 37.47, 0.0, 23.19, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:40:13.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:39:39
2025-09-29T16:40:14.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:40:14.155 [DEBUG] [Thread-161594] [transport.py] [_log()] starting thread (client mode): 0x2b969cf0
2025-09-29T16:40:14.155 [DEBUG] [Thread-161594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:40:14.175 [DEBUG] [Thread-161594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:40:14.175 [INFO] [Thread-161594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:40:14.176 [DEBUG] [Thread-161594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:40:14.176 [DEBUG] [Thread-161594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:40:14.176 [DEBUG] [Thread-161594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] client lang: <none>
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] server lang: <none>
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] kex follows: False
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] Compression: none
2025-09-29T16:40:14.177 [DEBUG] [Thread-161594] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:40:14.185 [DEBUG] [Thread-161594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:40:14.186 [DEBUG] [Thread-161594] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:40:14.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:40:14.187 [DEBUG] [Thread-161594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:40:14.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:40:14.189 [DEBUG] [Thread-161594] [transport.py] [_log()] userauth is OK
2025-09-29T16:40:14.189 [DEBUG] [Thread-161594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:40:14.189 [DEBUG] [Thread-161594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:40:14.189 [DEBUG] [Thread-161594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:40:14.189 [DEBUG] [Thread-161594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:40:14.211 [INFO] [Thread-161594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:40:14.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:40:14.751 [DEBUG] [Thread-161594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:40:14.751 [DEBUG] [Thread-161594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:40:14.752 [DEBUG] [Thread-161594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:40:14.792 [DEBUG] [Thread-161594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:40:14.792 [DEBUG] [Thread-161594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:40:14.794 [DEBUG] [Thread-161594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:40:14.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:40:14.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:40:14.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:40:14.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:40:14.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:40:14.811 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:40:14.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.611177 -999.00  +14.90  16.73     43   +2.60 1 1 1 1 1   887    0 10.66 -59.11 ----- 20.6 16.7 153.4 21.9 19.6 -28.5 19.2 -26.9 21.0 -26.8 21.8 -29.1
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.611177
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:40:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:40:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:40:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:40:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:39:39', tmtdew=14.47, humidity=37.47, cloud=0.0, wind=23.19, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:40:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:40:14.812 [DEBUG] [Thread-161594] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:40:14.885 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:40:14.894 [DEBUG] [Thread-161597] [transport.py] [_log()] starting thread (client mode): 0x2b9cf2b0
2025-09-29T16:40:14.894 [DEBUG] [Thread-161597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:40:14.908 [DEBUG] [Thread-161597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:40:14.909 [INFO] [Thread-161597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] client lang: <none>
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] server lang: <none>
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] kex follows: False
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:40:14.916 [DEBUG] [Thread-161597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:40:14.917 [DEBUG] [Thread-161597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:40:14.917 [DEBUG] [Thread-161597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:40:14.917 [DEBUG] [Thread-161597] [transport.py] [_log()] Compression: none
2025-09-29T16:40:14.917 [DEBUG] [Thread-161597] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:40:14.974 [DEBUG] [Thread-161597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:40:14.974 [DEBUG] [Thread-161597] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:40:14.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:40:14.975 [DEBUG] [Thread-161597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:40:14.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:40:15.030 [DEBUG] [Thread-161597] [transport.py] [_log()] userauth is OK
2025-09-29T16:40:15.030 [DEBUG] [Thread-161597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:40:15.030 [DEBUG] [Thread-161597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:40:15.030 [DEBUG] [Thread-161597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:40:15.031 [DEBUG] [Thread-161597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:40:15.050 [INFO] [Thread-161597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:40:15.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:40:15.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:40:16.025 [DEBUG] [Thread-161597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:40:16.026 [DEBUG] [Thread-161597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:40:16.073 [DEBUG] [Thread-161597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:40:16.073 [DEBUG] [Thread-161597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:40:16.082 [DEBUG] [Thread-161597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:40:16.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:40:16.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:40:16.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:40:16.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:40:16.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:40:16.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:40:16.117 [DEBUG] [Thread-161597] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:40:21.938 [DEBUG] [Thread-161599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:40:23.071 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:40:23.073 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:40:26.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:40:26.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:40:26.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:40:26.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 40, 11), 14.52, 37.35, 0.0, 27.01, 14.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:40:26.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:40:11
2025-09-29T16:40:26.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:40:26.945 [DEBUG] [Thread-161600] [transport.py] [_log()] starting thread (client mode): 0x2e363160
2025-09-29T16:40:26.945 [DEBUG] [Thread-161600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:40:26.966 [DEBUG] [Thread-161600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:40:26.966 [INFO] [Thread-161600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] client lang: <none>
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] server lang: <none>
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] kex follows: False
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:40:26.969 [DEBUG] [Thread-161600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:40:26.970 [DEBUG] [Thread-161600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:40:26.970 [DEBUG] [Thread-161600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:40:26.970 [DEBUG] [Thread-161600] [transport.py] [_log()] Compression: none
2025-09-29T16:40:26.970 [DEBUG] [Thread-161600] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:40:26.987 [DEBUG] [Thread-161600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:40:26.987 [DEBUG] [Thread-161600] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:40:26.988 [DEBUG] [Thread-161600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:40:26.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:40:26.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:40:26.990 [DEBUG] [Thread-161600] [transport.py] [_log()] userauth is OK
2025-09-29T16:40:26.990 [DEBUG] [Thread-161600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:40:26.990 [DEBUG] [Thread-161600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:40:26.991 [DEBUG] [Thread-161600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:40:26.991 [DEBUG] [Thread-161600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:40:27.015 [INFO] [Thread-161600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:40:27.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:40:27.639 [DEBUG] [Thread-161600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:40:27.639 [DEBUG] [Thread-161600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:40:27.640 [DEBUG] [Thread-161600] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:40:27.680 [DEBUG] [Thread-161600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:40:27.680 [DEBUG] [Thread-161600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:40:27.684 [DEBUG] [Thread-161600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:40:27.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:40:27.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:40:27.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:40:27.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:40:27.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:40:27.706 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:40:27.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:40:27.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:40:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:40:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.611177 -999.00  +14.90  16.73     43   +2.60 1 1 1 1 1   887    0 10.66 -59.11 ----- 20.6 16.7 153.4 21.9 19.6 -28.5 19.2 -26.9 21.0 -26.8 21.8 -29.1
2025-09-29T16:40:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:40:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:40:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.611177
2025-09-29T16:40:27.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:40:27.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:40:27.709 [DEBUG] [Thread-161600] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:40:27.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:40:27.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:40:27.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:40:27.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:40:11', tmtdew=14.52, humidity=37.35, cloud=0.0, wind=27.01, temperature=14.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:40:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:40:27.789 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:40:36.985 [DEBUG] [Thread-161603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:40:48.998 [DEBUG] [Thread-161604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:40:52.014 [DEBUG] [Thread-161605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:41:07.048 [DEBUG] [Thread-161606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:41:22.075 [DEBUG] [Thread-161607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:41:23.212 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:41:23.213 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:41:37.105 [DEBUG] [Thread-161608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:41:49.030 [DEBUG] [Thread-161609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:41:52.135 [DEBUG] [Thread-161610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:42:07.164 [DEBUG] [Thread-161611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:42:22.195 [DEBUG] [Thread-161612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:42:23.349 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:42:23.351 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:42:37.230 [DEBUG] [Thread-161613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:42:40.442 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T16:42:49.068 [DEBUG] [Thread-161614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:42:50.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:42:50.446 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:42:50.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:42:51.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 42, 19), 14.46, 37.55, 0.0, 25.25, 15.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:42:51.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:42:19
2025-09-29T16:42:51.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:42:51.321 [DEBUG] [Thread-161615] [transport.py] [_log()] starting thread (client mode): 0x2b968eb0
2025-09-29T16:42:51.321 [DEBUG] [Thread-161615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:42:51.342 [DEBUG] [Thread-161615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:42:51.342 [INFO] [Thread-161615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] client lang: <none>
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] server lang: <none>
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] kex follows: False
2025-09-29T16:42:51.345 [DEBUG] [Thread-161615] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:42:51.346 [DEBUG] [Thread-161615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:42:51.346 [DEBUG] [Thread-161615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:42:51.346 [DEBUG] [Thread-161615] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:42:51.346 [DEBUG] [Thread-161615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:42:51.346 [DEBUG] [Thread-161615] [transport.py] [_log()] Compression: none
2025-09-29T16:42:51.346 [DEBUG] [Thread-161615] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:42:51.362 [DEBUG] [Thread-161615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:42:51.362 [DEBUG] [Thread-161615] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:42:51.363 [DEBUG] [Thread-161615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:42:51.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:42:51.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:42:51.363 [DEBUG] [Thread-161615] [transport.py] [_log()] userauth is OK
2025-09-29T16:42:51.364 [DEBUG] [Thread-161615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:42:51.364 [DEBUG] [Thread-161615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:42:51.364 [DEBUG] [Thread-161615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:42:51.364 [DEBUG] [Thread-161615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:42:51.379 [INFO] [Thread-161615] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:42:51.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:42:52.110 [DEBUG] [Thread-161615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:42:52.110 [DEBUG] [Thread-161615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:42:52.110 [DEBUG] [Thread-161615] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:42:52.151 [DEBUG] [Thread-161615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:42:52.151 [DEBUG] [Thread-161615] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:42:52.153 [DEBUG] [Thread-161615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:42:52.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:42:52.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:42:52.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:42:52.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:42:52.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:42:52.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:42:52.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:42:52.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.612566 -999.00  +14.70  20.86     44   +2.50 1 1 1 1 1   887    0 10.98 -56.90 ----- 15.5 20.9 172.8 23.7 19.6 -27.7 19.0 -26.6 20.8 -27.3 21.7 -29.3
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.612566
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:42:52.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:42:19', tmtdew=14.46, humidity=37.55, cloud=0.0, wind=25.25, temperature=15.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:42:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:42:52.169 [DEBUG] [Thread-161615] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:42:52.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:42:52.255 [DEBUG] [Thread-161618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:42:52.256 [DEBUG] [Thread-161619] [transport.py] [_log()] starting thread (client mode): 0x2e3c0af0
2025-09-29T16:42:52.256 [DEBUG] [Thread-161619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:42:52.270 [DEBUG] [Thread-161619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:42:52.271 [INFO] [Thread-161619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] client lang: <none>
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] server lang: <none>
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] kex follows: False
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] Compression: none
2025-09-29T16:42:52.278 [DEBUG] [Thread-161619] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:42:52.336 [DEBUG] [Thread-161619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:42:52.336 [DEBUG] [Thread-161619] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:42:52.336 [DEBUG] [Thread-161619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:42:52.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:42:52.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:42:52.392 [DEBUG] [Thread-161619] [transport.py] [_log()] userauth is OK
2025-09-29T16:42:52.393 [DEBUG] [Thread-161619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:42:52.393 [DEBUG] [Thread-161619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:42:52.393 [DEBUG] [Thread-161619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:42:52.393 [DEBUG] [Thread-161619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:42:52.406 [INFO] [Thread-161619] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:42:52.406 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:42:52.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:42:53.385 [DEBUG] [Thread-161619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:42:53.385 [DEBUG] [Thread-161619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:42:53.433 [DEBUG] [Thread-161619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:42:53.433 [DEBUG] [Thread-161619] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:42:53.442 [DEBUG] [Thread-161619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:42:53.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:42:53.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:42:53.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:42:53.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:42:53.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:42:53.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:42:53.477 [DEBUG] [Thread-161619] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:03.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:43:03.479 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:43:03.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:43:04.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 42, 51), 14.62, 36.89, 0.0, 24.21, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:43:04.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:42:51
2025-09-29T16:43:04.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:43:04.358 [DEBUG] [Thread-161621] [transport.py] [_log()] starting thread (client mode): 0x2b969990
2025-09-29T16:43:04.358 [DEBUG] [Thread-161621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:04.377 [DEBUG] [Thread-161621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:43:04.377 [INFO] [Thread-161621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:04.381 [DEBUG] [Thread-161621] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:04.382 [DEBUG] [Thread-161621] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:04.382 [DEBUG] [Thread-161621] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:04.382 [DEBUG] [Thread-161621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:04.382 [DEBUG] [Thread-161621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:04.382 [DEBUG] [Thread-161621] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:04.382 [DEBUG] [Thread-161621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:04.382 [DEBUG] [Thread-161621] [transport.py] [_log()] Compression: none
2025-09-29T16:43:04.382 [DEBUG] [Thread-161621] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:04.400 [DEBUG] [Thread-161621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:04.401 [DEBUG] [Thread-161621] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:04.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:43:04.402 [DEBUG] [Thread-161621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:43:04.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:04.404 [DEBUG] [Thread-161621] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:04.405 [DEBUG] [Thread-161621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:04.405 [DEBUG] [Thread-161621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:04.405 [DEBUG] [Thread-161621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:43:04.405 [DEBUG] [Thread-161621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:04.439 [INFO] [Thread-161621] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:04.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:05.059 [DEBUG] [Thread-161621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:05.059 [DEBUG] [Thread-161621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:05.059 [DEBUG] [Thread-161621] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:43:05.099 [DEBUG] [Thread-161621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:05.100 [DEBUG] [Thread-161621] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:05.102 [DEBUG] [Thread-161621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:05.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:05.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:43:05.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:43:05.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:43:05.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:05.127 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:43:05.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:05.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:05.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:43:05.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.612914 -999.00  +14.80  19.29     43   +2.50 1 1 1 1 1   887    0 11.17 -57.63 ----- 20.2 19.3 153.7 31.8 19.5 -28.6 18.8 -29.2 20.8 -27.9 21.6 -29.6
2025-09-29T16:43:05.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:43:05.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:43:05.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.612914
2025-09-29T16:43:05.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:43:05.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:43:05.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:43:05.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:43:05.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:43:05.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:42:51', tmtdew=14.62, humidity=36.89, cloud=0.0, wind=24.21, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:42:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:43:05.130 [DEBUG] [Thread-161621] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:05.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:43:05.223 [DEBUG] [Thread-161624] [transport.py] [_log()] starting thread (client mode): 0x2b96a9e0
2025-09-29T16:43:05.224 [DEBUG] [Thread-161624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:05.238 [DEBUG] [Thread-161624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:43:05.238 [INFO] [Thread-161624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:43:05.245 [DEBUG] [Thread-161624] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] Compression: none
2025-09-29T16:43:05.246 [DEBUG] [Thread-161624] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:05.305 [DEBUG] [Thread-161624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:05.305 [DEBUG] [Thread-161624] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:05.306 [DEBUG] [Thread-161624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:43:05.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:43:05.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:05.361 [DEBUG] [Thread-161624] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:05.361 [DEBUG] [Thread-161624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:05.362 [DEBUG] [Thread-161624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:05.362 [DEBUG] [Thread-161624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:43:05.362 [DEBUG] [Thread-161624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:05.382 [INFO] [Thread-161624] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:05.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:43:05.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:06.356 [DEBUG] [Thread-161624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:06.356 [DEBUG] [Thread-161624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:06.405 [DEBUG] [Thread-161624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:06.405 [DEBUG] [Thread-161624] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:06.419 [DEBUG] [Thread-161624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:06.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:06.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:43:06.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:43:06.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:06.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:06.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:06.453 [DEBUG] [Thread-161624] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:07.288 [DEBUG] [Thread-161626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:43:16.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:43:16.456 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:43:16.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:43:17.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 42, 51), 14.62, 36.89, 0.0, 24.21, 15.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:43:17.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:42:51
2025-09-29T16:43:17.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:43:17.355 [DEBUG] [Thread-161627] [transport.py] [_log()] starting thread (client mode): 0x2e348070
2025-09-29T16:43:17.355 [DEBUG] [Thread-161627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:17.375 [DEBUG] [Thread-161627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:43:17.375 [INFO] [Thread-161627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:17.376 [DEBUG] [Thread-161627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:17.377 [DEBUG] [Thread-161627] [transport.py] [_log()] Compression: none
2025-09-29T16:43:17.377 [DEBUG] [Thread-161627] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:17.394 [DEBUG] [Thread-161627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:17.394 [DEBUG] [Thread-161627] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:17.394 [DEBUG] [Thread-161627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:43:17.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:43:17.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:17.395 [DEBUG] [Thread-161627] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:17.395 [DEBUG] [Thread-161627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:17.395 [DEBUG] [Thread-161627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:17.395 [DEBUG] [Thread-161627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:43:17.395 [DEBUG] [Thread-161627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:17.404 [INFO] [Thread-161627] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:17.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:18.136 [DEBUG] [Thread-161627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:18.136 [DEBUG] [Thread-161627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:18.136 [DEBUG] [Thread-161627] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:43:18.178 [DEBUG] [Thread-161627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:18.178 [DEBUG] [Thread-161627] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:18.180 [DEBUG] [Thread-161627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:18.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:18.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:43:18.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:43:18.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:43:18.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:18.196 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:43:18.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.612914 -999.00  +14.80  19.29     43   +2.50 1 1 1 1 1   887    0 11.17 -57.63 ----- 20.2 19.3 153.7 31.8 19.5 -28.6 18.8 -29.2 20.8 -27.9 21.6 -29.6
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.612914
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:43:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:42:51', tmtdew=14.62, humidity=36.89, cloud=0.0, wind=24.21, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:42:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:43:18.197 [DEBUG] [Thread-161627] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:18.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:43:18.283 [DEBUG] [Thread-161630] [transport.py] [_log()] starting thread (client mode): 0x2e38dde0
2025-09-29T16:43:18.283 [DEBUG] [Thread-161630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:18.299 [DEBUG] [Thread-161630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:43:18.299 [INFO] [Thread-161630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:43:18.306 [DEBUG] [Thread-161630] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] Compression: none
2025-09-29T16:43:18.307 [DEBUG] [Thread-161630] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:18.365 [DEBUG] [Thread-161630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:18.366 [DEBUG] [Thread-161630] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:18.366 [DEBUG] [Thread-161630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:43:18.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:43:18.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:18.422 [DEBUG] [Thread-161630] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:18.422 [DEBUG] [Thread-161630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:18.422 [DEBUG] [Thread-161630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:18.422 [DEBUG] [Thread-161630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:43:18.422 [DEBUG] [Thread-161630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:18.440 [INFO] [Thread-161630] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:18.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:43:18.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:19.400 [DEBUG] [Thread-161630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:19.400 [DEBUG] [Thread-161630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:19.447 [DEBUG] [Thread-161630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:19.447 [DEBUG] [Thread-161630] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:19.456 [DEBUG] [Thread-161630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:19.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:19.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:43:19.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:43:19.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:19.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:19.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:19.491 [DEBUG] [Thread-161630] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:22.333 [DEBUG] [Thread-161632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:43:23.487 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:43:23.488 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:43:29.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:43:29.494 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:43:29.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:43:30.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 43, 23), 14.48, 37.22, 0.0, 25.9, 15.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:43:30.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:43:23
2025-09-29T16:43:30.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:43:30.358 [DEBUG] [Thread-161633] [transport.py] [_log()] starting thread (client mode): 0x2e38cb20
2025-09-29T16:43:30.358 [DEBUG] [Thread-161633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:30.379 [DEBUG] [Thread-161633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:43:30.379 [INFO] [Thread-161633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] Compression: none
2025-09-29T16:43:30.382 [DEBUG] [Thread-161633] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:30.398 [DEBUG] [Thread-161633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:30.399 [DEBUG] [Thread-161633] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:30.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:43:30.400 [DEBUG] [Thread-161633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:43:30.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:30.402 [DEBUG] [Thread-161633] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:30.402 [DEBUG] [Thread-161633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:30.402 [DEBUG] [Thread-161633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:30.403 [DEBUG] [Thread-161633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:43:30.403 [DEBUG] [Thread-161633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:30.438 [INFO] [Thread-161633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:30.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:31.176 [DEBUG] [Thread-161633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:31.176 [DEBUG] [Thread-161633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:31.176 [DEBUG] [Thread-161633] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:43:31.217 [DEBUG] [Thread-161633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:31.217 [DEBUG] [Thread-161633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:31.220 [DEBUG] [Thread-161633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:31.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:31.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:43:31.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:43:31.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:43:31.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:31.244 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:43:31.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:31.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:43:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.612914 -999.00  +14.80  19.29     43   +2.50 1 1 1 1 1   887    0 11.17 -57.63 ----- 20.2 19.3 153.7 31.8 19.5 -28.6 18.8 -29.2 20.8 -27.9 21.6 -29.6
2025-09-29T16:43:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:43:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:43:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.612914
2025-09-29T16:43:31.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:43:31.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:43:31.247 [DEBUG] [Thread-161633] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:31.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:43:31.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:43:31.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:43:31.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:43:23', tmtdew=14.48, humidity=37.22, cloud=0.0, wind=25.9, temperature=15.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:42:35.770', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:43:31.321 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:43:31.330 [DEBUG] [Thread-161636] [transport.py] [_log()] starting thread (client mode): 0x2e34a800
2025-09-29T16:43:31.330 [DEBUG] [Thread-161636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:31.345 [DEBUG] [Thread-161636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:43:31.346 [INFO] [Thread-161636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:43:31.353 [DEBUG] [Thread-161636] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:31.353 [DEBUG] [Thread-161636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] Compression: none
2025-09-29T16:43:31.354 [DEBUG] [Thread-161636] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:31.410 [DEBUG] [Thread-161636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:31.410 [DEBUG] [Thread-161636] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:31.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:43:31.411 [DEBUG] [Thread-161636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:43:31.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:31.466 [DEBUG] [Thread-161636] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:31.467 [DEBUG] [Thread-161636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:31.467 [DEBUG] [Thread-161636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:31.467 [DEBUG] [Thread-161636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:43:31.467 [DEBUG] [Thread-161636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:31.486 [INFO] [Thread-161636] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:31.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:43:31.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:32.458 [DEBUG] [Thread-161636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:32.458 [DEBUG] [Thread-161636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:32.506 [DEBUG] [Thread-161636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:32.506 [DEBUG] [Thread-161636] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:32.515 [DEBUG] [Thread-161636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:32.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:32.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:43:32.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:43:32.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:32.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:32.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:32.548 [DEBUG] [Thread-161636] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:37.363 [DEBUG] [Thread-161638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:43:42.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:43:42.551 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:43:42.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:43:43.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 43, 23), 14.48, 37.22, 0.0, 25.9, 15.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:43:43.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:43:23
2025-09-29T16:43:43.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:43:43.403 [DEBUG] [Thread-161639] [transport.py] [_log()] starting thread (client mode): 0x2e38c7c0
2025-09-29T16:43:43.403 [DEBUG] [Thread-161639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:43.413 [DEBUG] [Thread-161639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:43:43.413 [INFO] [Thread-161639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] Compression: none
2025-09-29T16:43:43.417 [DEBUG] [Thread-161639] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:43.434 [DEBUG] [Thread-161639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:43.434 [DEBUG] [Thread-161639] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:43.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:43:43.436 [DEBUG] [Thread-161639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:43:43.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:43.437 [DEBUG] [Thread-161639] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:43.437 [DEBUG] [Thread-161639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:43.438 [DEBUG] [Thread-161639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:43.438 [DEBUG] [Thread-161639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:43:43.438 [DEBUG] [Thread-161639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:43.464 [INFO] [Thread-161639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:43.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:44.063 [DEBUG] [Thread-161639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:44.063 [DEBUG] [Thread-161639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:44.064 [DEBUG] [Thread-161639] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:43:44.104 [DEBUG] [Thread-161639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:44.105 [DEBUG] [Thread-161639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:44.108 [DEBUG] [Thread-161639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:44.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:44.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:43:44.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:43:44.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:43:44.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:44.127 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:43:44.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:44.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:44.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:43:44.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.613261 -999.00  +14.70  19.47     43   +2.50 1 1 1 1 1   887    0 10.84 -57.59 ----- 17.2 19.5 150.0 32.1 19.4 -28.5 18.9 -26.8 20.7 -27.9 21.5 -29.0
2025-09-29T16:43:44.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:43:44.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:43:44.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.613261
2025-09-29T16:43:44.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:43:44.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:43:44.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:43:44.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:43:44.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:43:44.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:43:23', tmtdew=14.48, humidity=37.22, cloud=0.0, wind=25.9, temperature=15.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:43:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:43:44.130 [DEBUG] [Thread-161639] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:44.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:43:44.233 [DEBUG] [Thread-161642] [transport.py] [_log()] starting thread (client mode): 0x2b96a9e0
2025-09-29T16:43:44.233 [DEBUG] [Thread-161642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:44.248 [DEBUG] [Thread-161642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:43:44.248 [INFO] [Thread-161642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:43:44.255 [DEBUG] [Thread-161642] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:44.256 [DEBUG] [Thread-161642] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] Compression: none
2025-09-29T16:43:44.257 [DEBUG] [Thread-161642] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:44.315 [DEBUG] [Thread-161642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:44.316 [DEBUG] [Thread-161642] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:44.316 [DEBUG] [Thread-161642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:43:44.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:43:44.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:44.371 [DEBUG] [Thread-161642] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:44.371 [DEBUG] [Thread-161642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:44.371 [DEBUG] [Thread-161642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:44.372 [DEBUG] [Thread-161642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:43:44.372 [DEBUG] [Thread-161642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:44.391 [INFO] [Thread-161642] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:44.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:43:44.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:45.358 [DEBUG] [Thread-161642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:45.358 [DEBUG] [Thread-161642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:45.406 [DEBUG] [Thread-161642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:45.406 [DEBUG] [Thread-161642] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:45.416 [DEBUG] [Thread-161642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:45.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:45.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:43:45.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:43:45.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:45.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:45.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:45.450 [DEBUG] [Thread-161642] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:49.100 [DEBUG] [Thread-161644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:43:52.410 [DEBUG] [Thread-161645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:43:55.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:43:55.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:43:55.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:43:56.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 43, 23), 14.48, 37.22, 0.0, 25.9, 15.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:43:56.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:43:23
2025-09-29T16:43:56.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:43:56.399 [DEBUG] [Thread-161646] [transport.py] [_log()] starting thread (client mode): 0x2b91c700
2025-09-29T16:43:56.400 [DEBUG] [Thread-161646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:56.423 [DEBUG] [Thread-161646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:43:56.423 [INFO] [Thread-161646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:56.427 [DEBUG] [Thread-161646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:56.428 [DEBUG] [Thread-161646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:56.428 [DEBUG] [Thread-161646] [transport.py] [_log()] Compression: none
2025-09-29T16:43:56.428 [DEBUG] [Thread-161646] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:56.444 [DEBUG] [Thread-161646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:56.444 [DEBUG] [Thread-161646] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:56.445 [DEBUG] [Thread-161646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:43:56.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:43:56.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:56.445 [DEBUG] [Thread-161646] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:56.445 [DEBUG] [Thread-161646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:56.446 [DEBUG] [Thread-161646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:56.446 [DEBUG] [Thread-161646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:43:56.446 [DEBUG] [Thread-161646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:56.455 [INFO] [Thread-161646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:56.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:57.178 [DEBUG] [Thread-161646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:57.178 [DEBUG] [Thread-161646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:57.179 [DEBUG] [Thread-161646] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:43:57.220 [DEBUG] [Thread-161646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:57.220 [DEBUG] [Thread-161646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:57.222 [DEBUG] [Thread-161646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:57.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:57.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:43:57.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:43:57.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:43:57.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:57.240 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:43:57.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:57.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:57.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:43:57.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.613261 -999.00  +14.70  19.47     43   +2.50 1 1 1 1 1   887    0 10.84 -57.59 ----- 17.2 19.5 150.0 32.1 19.4 -28.5 18.9 -26.8 20.7 -27.9 21.5 -29.0
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.613261
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:43:57.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:43:23', tmtdew=14.48, humidity=37.22, cloud=0.0, wind=25.9, temperature=15.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:43:05.750', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:43:57.241 [DEBUG] [Thread-161646] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:43:57.318 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:43:57.328 [DEBUG] [Thread-161649] [transport.py] [_log()] starting thread (client mode): 0x2b91eaa0
2025-09-29T16:43:57.328 [DEBUG] [Thread-161649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:43:57.342 [DEBUG] [Thread-161649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:43:57.342 [INFO] [Thread-161649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:43:57.350 [DEBUG] [Thread-161649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:43:57.350 [DEBUG] [Thread-161649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:43:57.350 [DEBUG] [Thread-161649] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:43:57.350 [DEBUG] [Thread-161649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] client lang: <none>
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] server lang: <none>
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] kex follows: False
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] Compression: none
2025-09-29T16:43:57.351 [DEBUG] [Thread-161649] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:43:57.407 [DEBUG] [Thread-161649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:43:57.407 [DEBUG] [Thread-161649] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:43:57.408 [DEBUG] [Thread-161649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:43:57.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:43:57.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:43:57.463 [DEBUG] [Thread-161649] [transport.py] [_log()] userauth is OK
2025-09-29T16:43:57.464 [DEBUG] [Thread-161649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:43:57.464 [DEBUG] [Thread-161649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:43:57.464 [DEBUG] [Thread-161649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:43:57.464 [DEBUG] [Thread-161649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:43:57.482 [INFO] [Thread-161649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:43:57.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:43:57.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:43:58.452 [DEBUG] [Thread-161649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:43:58.452 [DEBUG] [Thread-161649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:43:58.500 [DEBUG] [Thread-161649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:43:58.500 [DEBUG] [Thread-161649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:43:58.509 [DEBUG] [Thread-161649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:43:58.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:43:58.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:43:58.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:43:58.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:43:58.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:43:58.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:43:58.545 [DEBUG] [Thread-161649] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:07.452 [DEBUG] [Thread-161651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:44:08.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:44:08.547 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:44:08.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:44:09.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 43, 54), 14.39, 37.28, 0.0, 25.53, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:44:09.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:43:54
2025-09-29T16:44:09.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:44:09.405 [DEBUG] [Thread-161652] [transport.py] [_log()] starting thread (client mode): 0x30dde8f0
2025-09-29T16:44:09.405 [DEBUG] [Thread-161652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:44:09.425 [DEBUG] [Thread-161652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:44:09.425 [INFO] [Thread-161652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] client lang: <none>
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] server lang: <none>
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] kex follows: False
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:44:09.428 [DEBUG] [Thread-161652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:44:09.429 [DEBUG] [Thread-161652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:44:09.429 [DEBUG] [Thread-161652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:44:09.429 [DEBUG] [Thread-161652] [transport.py] [_log()] Compression: none
2025-09-29T16:44:09.429 [DEBUG] [Thread-161652] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:44:09.444 [DEBUG] [Thread-161652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:44:09.445 [DEBUG] [Thread-161652] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:44:09.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:44:09.446 [DEBUG] [Thread-161652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:44:09.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:44:09.448 [DEBUG] [Thread-161652] [transport.py] [_log()] userauth is OK
2025-09-29T16:44:09.448 [DEBUG] [Thread-161652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:44:09.448 [DEBUG] [Thread-161652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:44:09.448 [DEBUG] [Thread-161652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:44:09.448 [DEBUG] [Thread-161652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:44:09.472 [INFO] [Thread-161652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:44:09.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:44:10.144 [DEBUG] [Thread-161652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:44:10.144 [DEBUG] [Thread-161652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:44:10.144 [DEBUG] [Thread-161652] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:44:10.185 [DEBUG] [Thread-161652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:44:10.185 [DEBUG] [Thread-161652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:44:10.188 [DEBUG] [Thread-161652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:44:10.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:44:10.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:44:10.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:44:10.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:44:10.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:44:10.203 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:44:10.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:44:10.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:44:10.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:44:10.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.613608 -999.00  +14.70  20.92     43   +2.40 1 1 1 1 1   887    0 10.82 -55.19 ----- 23.1 20.9 153.4 29.2 19.4 -29.1 18.9 -27.8 20.6 -27.8 21.4 -29.3
2025-09-29T16:44:10.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:44:10.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:44:10.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.613608
2025-09-29T16:44:10.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:44:10.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:44:10.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:44:10.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:44:10.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:44:10.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:43:54', tmtdew=14.39, humidity=37.28, cloud=0.0, wind=25.53, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:43:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:44:10.205 [DEBUG] [Thread-161652] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:10.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:44:10.301 [DEBUG] [Thread-161655] [transport.py] [_log()] starting thread (client mode): 0x2b91d2d0
2025-09-29T16:44:10.301 [DEBUG] [Thread-161655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:44:10.316 [DEBUG] [Thread-161655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:44:10.316 [INFO] [Thread-161655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:44:10.323 [DEBUG] [Thread-161655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:44:10.323 [DEBUG] [Thread-161655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:44:10.323 [DEBUG] [Thread-161655] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:44:10.323 [DEBUG] [Thread-161655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] client lang: <none>
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] server lang: <none>
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] kex follows: False
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] Compression: none
2025-09-29T16:44:10.324 [DEBUG] [Thread-161655] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:44:10.379 [DEBUG] [Thread-161655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:44:10.379 [DEBUG] [Thread-161655] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:44:10.380 [DEBUG] [Thread-161655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:44:10.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:44:10.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:44:10.436 [DEBUG] [Thread-161655] [transport.py] [_log()] userauth is OK
2025-09-29T16:44:10.436 [DEBUG] [Thread-161655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:44:10.436 [DEBUG] [Thread-161655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:44:10.436 [DEBUG] [Thread-161655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:44:10.436 [DEBUG] [Thread-161655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:44:10.455 [INFO] [Thread-161655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:44:10.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:44:10.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:44:11.447 [DEBUG] [Thread-161655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:44:11.447 [DEBUG] [Thread-161655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:44:11.495 [DEBUG] [Thread-161655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:44:11.495 [DEBUG] [Thread-161655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:44:11.504 [DEBUG] [Thread-161655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:44:11.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:44:11.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:44:11.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:44:11.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:44:11.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:44:11.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:44:11.539 [DEBUG] [Thread-161655] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:21.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:44:21.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:44:21.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:44:22.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 43, 54), 14.39, 37.28, 0.0, 25.53, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:44:22.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:43:54
2025-09-29T16:44:22.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:44:22.378 [DEBUG] [Thread-161657] [transport.py] [_log()] starting thread (client mode): 0x2b91e620
2025-09-29T16:44:22.378 [DEBUG] [Thread-161657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:44:22.397 [DEBUG] [Thread-161657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:44:22.397 [INFO] [Thread-161657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:44:22.399 [DEBUG] [Thread-161657] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:44:22.399 [DEBUG] [Thread-161657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:44:22.399 [DEBUG] [Thread-161657] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] client lang: <none>
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] server lang: <none>
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] kex follows: False
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] Compression: none
2025-09-29T16:44:22.400 [DEBUG] [Thread-161657] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:44:22.411 [DEBUG] [Thread-161657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:44:22.411 [DEBUG] [Thread-161657] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:44:22.412 [DEBUG] [Thread-161657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:44:22.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:44:22.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:44:22.413 [DEBUG] [Thread-161657] [transport.py] [_log()] userauth is OK
2025-09-29T16:44:22.413 [DEBUG] [Thread-161657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:44:22.413 [DEBUG] [Thread-161657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:44:22.413 [DEBUG] [Thread-161657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:44:22.413 [DEBUG] [Thread-161657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:44:22.444 [INFO] [Thread-161657] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:44:22.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:44:22.481 [DEBUG] [Thread-161659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:44:23.238 [DEBUG] [Thread-161657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:44:23.239 [DEBUG] [Thread-161657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:44:23.239 [DEBUG] [Thread-161657] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:44:23.279 [DEBUG] [Thread-161657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:44:23.279 [DEBUG] [Thread-161657] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:44:23.282 [DEBUG] [Thread-161657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:44:23.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:44:23.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:44:23.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:44:23.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:44:23.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:44:23.305 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:44:23.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:44:23.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:44:23.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:44:23.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.613608 -999.00  +14.70  20.92     43   +2.40 1 1 1 1 1   887    0 10.82 -55.19 ----- 23.1 20.9 153.4 29.2 19.4 -29.1 18.9 -27.8 20.6 -27.8 21.4 -29.3
2025-09-29T16:44:23.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:44:23.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:44:23.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.613608
2025-09-29T16:44:23.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:44:23.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:44:23.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:44:23.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:44:23.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:44:23.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:43:54', tmtdew=14.39, humidity=37.28, cloud=0.0, wind=25.53, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:43:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:44:23.307 [DEBUG] [Thread-161657] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:23.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:44:23.400 [DEBUG] [Thread-161661] [transport.py] [_log()] starting thread (client mode): 0x2e3f9690
2025-09-29T16:44:23.400 [DEBUG] [Thread-161661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:44:23.415 [DEBUG] [Thread-161661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:44:23.415 [INFO] [Thread-161661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] client lang: <none>
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] server lang: <none>
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] kex follows: False
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] Compression: none
2025-09-29T16:44:23.423 [DEBUG] [Thread-161661] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:44:23.479 [DEBUG] [Thread-161661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:44:23.479 [DEBUG] [Thread-161661] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:44:23.479 [DEBUG] [Thread-161661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:44:23.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:44:23.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:44:23.536 [DEBUG] [Thread-161661] [transport.py] [_log()] userauth is OK
2025-09-29T16:44:23.536 [DEBUG] [Thread-161661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:44:23.537 [DEBUG] [Thread-161661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:44:23.537 [DEBUG] [Thread-161661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:44:23.537 [DEBUG] [Thread-161661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:44:23.556 [INFO] [Thread-161661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:44:23.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:44:23.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:44:23.625 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:44:23.626 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:44:24.517 [DEBUG] [Thread-161661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:44:24.517 [DEBUG] [Thread-161661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:44:24.565 [DEBUG] [Thread-161661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:44:24.565 [DEBUG] [Thread-161661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:44:24.574 [DEBUG] [Thread-161661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:44:24.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:44:24.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:44:24.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:44:24.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:44:24.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:44:24.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:44:24.608 [DEBUG] [Thread-161661] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:34.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:44:34.611 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:44:34.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:44:35.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 44, 26), 14.28, 37.56, 0.0, 21.79, 14.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:44:35.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:44:26
2025-09-29T16:44:35.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:44:35.469 [DEBUG] [Thread-161663] [transport.py] [_log()] starting thread (client mode): 0x30ddfbe0
2025-09-29T16:44:35.470 [DEBUG] [Thread-161663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:44:35.492 [DEBUG] [Thread-161663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:44:35.492 [INFO] [Thread-161663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] client lang: <none>
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] server lang: <none>
2025-09-29T16:44:35.495 [DEBUG] [Thread-161663] [transport.py] [_log()] kex follows: False
2025-09-29T16:44:35.496 [DEBUG] [Thread-161663] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:44:35.496 [DEBUG] [Thread-161663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:44:35.496 [DEBUG] [Thread-161663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:44:35.496 [DEBUG] [Thread-161663] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:44:35.496 [DEBUG] [Thread-161663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:44:35.496 [DEBUG] [Thread-161663] [transport.py] [_log()] Compression: none
2025-09-29T16:44:35.496 [DEBUG] [Thread-161663] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:44:35.513 [DEBUG] [Thread-161663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:44:35.514 [DEBUG] [Thread-161663] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:44:35.514 [DEBUG] [Thread-161663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:44:35.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:44:35.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:44:35.517 [DEBUG] [Thread-161663] [transport.py] [_log()] userauth is OK
2025-09-29T16:44:35.517 [DEBUG] [Thread-161663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:44:35.517 [DEBUG] [Thread-161663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:44:35.517 [DEBUG] [Thread-161663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:44:35.517 [DEBUG] [Thread-161663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:44:35.535 [INFO] [Thread-161663] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:44:35.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:44:36.325 [DEBUG] [Thread-161663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:44:36.325 [DEBUG] [Thread-161663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:44:36.326 [DEBUG] [Thread-161663] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:44:36.366 [DEBUG] [Thread-161663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:44:36.366 [DEBUG] [Thread-161663] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:44:36.369 [DEBUG] [Thread-161663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:44:36.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:44:36.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:44:36.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:44:36.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:44:36.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:44:36.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:44:36.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:44:36.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:44:36.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:44:36.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.613608 -999.00  +14.70  20.92     43   +2.40 1 1 1 1 1   887    0 10.82 -55.19 ----- 23.1 20.9 153.4 29.2 19.4 -29.1 18.9 -27.8 20.6 -27.8 21.4 -29.3
2025-09-29T16:44:36.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:44:36.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:44:36.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.613608
2025-09-29T16:44:36.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:44:36.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:44:36.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:44:36.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:44:36.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:44:36.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:44:26', tmtdew=14.28, humidity=37.56, cloud=0.0, wind=21.79, temperature=14.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:43:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:44:36.396 [DEBUG] [Thread-161663] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:36.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:44:36.493 [DEBUG] [Thread-161666] [transport.py] [_log()] starting thread (client mode): 0x2e3f8280
2025-09-29T16:44:36.493 [DEBUG] [Thread-161666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:44:36.508 [DEBUG] [Thread-161666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:44:36.508 [INFO] [Thread-161666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] client lang: <none>
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] server lang: <none>
2025-09-29T16:44:36.516 [DEBUG] [Thread-161666] [transport.py] [_log()] kex follows: False
2025-09-29T16:44:36.517 [DEBUG] [Thread-161666] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:44:36.517 [DEBUG] [Thread-161666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:44:36.517 [DEBUG] [Thread-161666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:44:36.517 [DEBUG] [Thread-161666] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:44:36.517 [DEBUG] [Thread-161666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:44:36.517 [DEBUG] [Thread-161666] [transport.py] [_log()] Compression: none
2025-09-29T16:44:36.517 [DEBUG] [Thread-161666] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:44:36.572 [DEBUG] [Thread-161666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:44:36.572 [DEBUG] [Thread-161666] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:44:36.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:44:36.573 [DEBUG] [Thread-161666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:44:36.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:44:36.629 [DEBUG] [Thread-161666] [transport.py] [_log()] userauth is OK
2025-09-29T16:44:36.629 [DEBUG] [Thread-161666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:44:36.629 [DEBUG] [Thread-161666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:44:36.629 [DEBUG] [Thread-161666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:44:36.629 [DEBUG] [Thread-161666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:44:36.648 [INFO] [Thread-161666] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:44:36.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:44:36.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:44:37.525 [DEBUG] [Thread-161668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:44:37.618 [DEBUG] [Thread-161666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:44:37.619 [DEBUG] [Thread-161666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:44:37.666 [DEBUG] [Thread-161666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:44:37.666 [DEBUG] [Thread-161666] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:44:37.675 [DEBUG] [Thread-161666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:44:37.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:44:37.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:44:37.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:44:37.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:44:37.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:44:37.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:44:37.713 [DEBUG] [Thread-161666] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:47.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:44:47.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:44:47.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:44:48.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 44, 26), 14.28, 37.56, 0.0, 21.79, 14.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:44:48.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:44:26
2025-09-29T16:44:48.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:44:48.572 [DEBUG] [Thread-161669] [transport.py] [_log()] starting thread (client mode): 0x2b91cf40
2025-09-29T16:44:48.572 [DEBUG] [Thread-161669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:44:48.592 [DEBUG] [Thread-161669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:44:48.592 [INFO] [Thread-161669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:44:48.595 [DEBUG] [Thread-161669] [transport.py] [_log()] client lang: <none>
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] server lang: <none>
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] kex follows: False
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] Compression: none
2025-09-29T16:44:48.596 [DEBUG] [Thread-161669] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:44:48.614 [DEBUG] [Thread-161669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:44:48.614 [DEBUG] [Thread-161669] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:44:48.614 [DEBUG] [Thread-161669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:44:48.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:44:48.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:44:48.615 [DEBUG] [Thread-161669] [transport.py] [_log()] userauth is OK
2025-09-29T16:44:48.615 [DEBUG] [Thread-161669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:44:48.615 [DEBUG] [Thread-161669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:44:48.615 [DEBUG] [Thread-161669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:44:48.615 [DEBUG] [Thread-161669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:44:48.631 [INFO] [Thread-161669] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:44:48.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:44:49.141 [DEBUG] [Thread-161671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:44:49.267 [DEBUG] [Thread-161669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:44:49.267 [DEBUG] [Thread-161669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:44:49.268 [DEBUG] [Thread-161669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:44:49.308 [DEBUG] [Thread-161669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:44:49.309 [DEBUG] [Thread-161669] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:44:49.311 [DEBUG] [Thread-161669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:44:49.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:44:49.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:44:49.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:44:49.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:44:49.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:44:49.335 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:44:49.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:44:49.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:44:49.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:44:49.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.614302 -999.00  +14.60  19.22     44   +2.50 1 1 1 1 1   887    0 10.94 -52.90 ----- 19.0 19.2 160.2 21.8 19.3 -27.8 18.8 -26.7 20.5 -26.9 21.4 -29.4
2025-09-29T16:44:49.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:44:49.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:44:49.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.614302
2025-09-29T16:44:49.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:44:49.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:44:49.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:44:49.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:44:49.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:44:49.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:44:26', tmtdew=14.28, humidity=37.56, cloud=0.0, wind=21.79, temperature=14.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:44:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:44:49.337 [DEBUG] [Thread-161669] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:49.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:44:49.433 [DEBUG] [Thread-161673] [transport.py] [_log()] starting thread (client mode): 0x2e3deb60
2025-09-29T16:44:49.433 [DEBUG] [Thread-161673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:44:49.447 [DEBUG] [Thread-161673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:44:49.447 [INFO] [Thread-161673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:44:49.455 [DEBUG] [Thread-161673] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:44:49.455 [DEBUG] [Thread-161673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:44:49.455 [DEBUG] [Thread-161673] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] client lang: <none>
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] server lang: <none>
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] kex follows: False
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] Compression: none
2025-09-29T16:44:49.456 [DEBUG] [Thread-161673] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:44:49.513 [DEBUG] [Thread-161673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:44:49.514 [DEBUG] [Thread-161673] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:44:49.515 [DEBUG] [Thread-161673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:44:49.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:44:49.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:44:49.569 [DEBUG] [Thread-161673] [transport.py] [_log()] userauth is OK
2025-09-29T16:44:49.569 [DEBUG] [Thread-161673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:44:49.569 [DEBUG] [Thread-161673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:44:49.569 [DEBUG] [Thread-161673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:44:49.570 [DEBUG] [Thread-161673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:44:49.588 [INFO] [Thread-161673] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:44:49.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:44:49.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:44:50.575 [DEBUG] [Thread-161673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:44:50.575 [DEBUG] [Thread-161673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:44:50.623 [DEBUG] [Thread-161673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:44:50.623 [DEBUG] [Thread-161673] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:44:50.632 [DEBUG] [Thread-161673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:44:50.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:44:50.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:44:50.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:44:50.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:44:50.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:44:50.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:44:50.667 [DEBUG] [Thread-161673] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:44:52.577 [DEBUG] [Thread-161675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:45:00.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:45:00.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:45:00.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:45:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 44, 26), 14.28, 37.56, 0.0, 21.79, 14.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:45:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:44:26
2025-09-29T16:45:01.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:45:01.528 [DEBUG] [Thread-161676] [transport.py] [_log()] starting thread (client mode): 0x2e363790
2025-09-29T16:45:01.528 [DEBUG] [Thread-161676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:01.548 [DEBUG] [Thread-161676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:45:01.548 [INFO] [Thread-161676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:45:01.551 [DEBUG] [Thread-161676] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:01.552 [DEBUG] [Thread-161676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:01.553 [DEBUG] [Thread-161676] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:01.553 [DEBUG] [Thread-161676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:01.553 [DEBUG] [Thread-161676] [transport.py] [_log()] Compression: none
2025-09-29T16:45:01.553 [DEBUG] [Thread-161676] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:01.570 [DEBUG] [Thread-161676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:01.571 [DEBUG] [Thread-161676] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:01.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:45:01.572 [DEBUG] [Thread-161676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:45:01.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:01.573 [DEBUG] [Thread-161676] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:01.573 [DEBUG] [Thread-161676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:01.573 [DEBUG] [Thread-161676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:01.573 [DEBUG] [Thread-161676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:45:01.574 [DEBUG] [Thread-161676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:01.597 [INFO] [Thread-161676] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:01.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:02.404 [DEBUG] [Thread-161676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:02.405 [DEBUG] [Thread-161676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:02.405 [DEBUG] [Thread-161676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:45:02.446 [DEBUG] [Thread-161676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:02.446 [DEBUG] [Thread-161676] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:02.448 [DEBUG] [Thread-161676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:02.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:02.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:45:02.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:45:02.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:45:02.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:02.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:45:02.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:02.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:02.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:45:02.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.614302 -999.00  +14.60  19.22     44   +2.50 1 1 1 1 1   887    0 10.94 -52.90 ----- 19.0 19.2 160.2 21.8 19.3 -27.8 18.8 -26.7 20.5 -26.9 21.4 -29.4
2025-09-29T16:45:02.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:45:02.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:45:02.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.614302
2025-09-29T16:45:02.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:45:02.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:45:02.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:45:02.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:45:02.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:45:02.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:44:26', tmtdew=14.28, humidity=37.56, cloud=0.0, wind=21.79, temperature=14.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:44:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:45:02.464 [DEBUG] [Thread-161676] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:02.548 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:45:02.559 [DEBUG] [Thread-161679] [transport.py] [_log()] starting thread (client mode): 0x2e3de0e0
2025-09-29T16:45:02.559 [DEBUG] [Thread-161679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:02.574 [DEBUG] [Thread-161679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:45:02.574 [INFO] [Thread-161679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:45:02.582 [DEBUG] [Thread-161679] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:02.582 [DEBUG] [Thread-161679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:45:02.582 [DEBUG] [Thread-161679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:02.582 [DEBUG] [Thread-161679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:02.582 [DEBUG] [Thread-161679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:02.582 [DEBUG] [Thread-161679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:02.582 [DEBUG] [Thread-161679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:02.583 [DEBUG] [Thread-161679] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:02.584 [DEBUG] [Thread-161679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:02.584 [DEBUG] [Thread-161679] [transport.py] [_log()] Compression: none
2025-09-29T16:45:02.584 [DEBUG] [Thread-161679] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:02.642 [DEBUG] [Thread-161679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:02.643 [DEBUG] [Thread-161679] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:02.644 [DEBUG] [Thread-161679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:45:02.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:45:02.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:02.698 [DEBUG] [Thread-161679] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:02.698 [DEBUG] [Thread-161679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:02.698 [DEBUG] [Thread-161679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:02.698 [DEBUG] [Thread-161679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:45:02.699 [DEBUG] [Thread-161679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:02.720 [INFO] [Thread-161679] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:02.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:45:02.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:03.714 [DEBUG] [Thread-161679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:03.714 [DEBUG] [Thread-161679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:03.762 [DEBUG] [Thread-161679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:03.762 [DEBUG] [Thread-161679] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:03.771 [DEBUG] [Thread-161679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:03.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:03.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:45:03.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:45:03.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:03.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:03.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:03.804 [DEBUG] [Thread-161679] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:07.613 [DEBUG] [Thread-161681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:45:13.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:45:13.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:45:13.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:45:14.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 44, 58), 14.5, 37.4, 0.0, 20.17, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:45:14.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:44:58
2025-09-29T16:45:14.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:45:14.643 [DEBUG] [Thread-161682] [transport.py] [_log()] starting thread (client mode): 0x2e3fb160
2025-09-29T16:45:14.643 [DEBUG] [Thread-161682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:14.658 [DEBUG] [Thread-161682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:45:14.658 [INFO] [Thread-161682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:14.661 [DEBUG] [Thread-161682] [transport.py] [_log()] Compression: none
2025-09-29T16:45:14.662 [DEBUG] [Thread-161682] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:14.682 [DEBUG] [Thread-161682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:14.682 [DEBUG] [Thread-161682] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:14.682 [DEBUG] [Thread-161682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:45:14.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:45:14.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:14.684 [DEBUG] [Thread-161682] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:14.685 [DEBUG] [Thread-161682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:14.685 [DEBUG] [Thread-161682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:14.685 [DEBUG] [Thread-161682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:45:14.685 [DEBUG] [Thread-161682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:14.698 [INFO] [Thread-161682] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:14.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:17.441 [DEBUG] [Thread-161682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:17.441 [DEBUG] [Thread-161682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:17.441 [DEBUG] [Thread-161682] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:45:17.482 [DEBUG] [Thread-161682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:17.483 [DEBUG] [Thread-161682] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:17.486 [DEBUG] [Thread-161682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:17.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:17.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:45:17.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:45:17.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:45:17.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:17.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:45:17.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:17.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:17.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:45:17.606 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-09-29T16:45:17.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:44:58', tmtdew=14.5, humidity=37.4, cloud=0.0, wind=20.17, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:45:17.608 [DEBUG] [Thread-161682] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:17.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:45:17.706 [DEBUG] [Thread-161685] [transport.py] [_log()] starting thread (client mode): 0x2b91fd90
2025-09-29T16:45:17.706 [DEBUG] [Thread-161685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:17.720 [DEBUG] [Thread-161685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:45:17.720 [INFO] [Thread-161685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:45:17.728 [DEBUG] [Thread-161685] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:17.728 [DEBUG] [Thread-161685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] Compression: none
2025-09-29T16:45:17.729 [DEBUG] [Thread-161685] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:17.791 [DEBUG] [Thread-161685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:17.792 [DEBUG] [Thread-161685] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:17.793 [DEBUG] [Thread-161685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:45:17.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:45:17.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:17.850 [DEBUG] [Thread-161685] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:17.850 [DEBUG] [Thread-161685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:17.850 [DEBUG] [Thread-161685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:17.850 [DEBUG] [Thread-161685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:45:17.851 [DEBUG] [Thread-161685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:17.869 [INFO] [Thread-161685] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:17.869 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:45:17.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:18.842 [DEBUG] [Thread-161685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:18.842 [DEBUG] [Thread-161685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:18.890 [DEBUG] [Thread-161685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:18.890 [DEBUG] [Thread-161685] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:18.899 [DEBUG] [Thread-161685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:18.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:18.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:45:18.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:45:18.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:18.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:18.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:18.934 [DEBUG] [Thread-161685] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:22.641 [DEBUG] [Thread-161687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:45:23.765 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:45:23.766 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:45:28.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:45:28.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:45:28.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:45:29.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 44, 58), 14.5, 37.4, 0.0, 20.17, 15.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:45:29.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:44:58
2025-09-29T16:45:29.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:45:29.776 [DEBUG] [Thread-161688] [transport.py] [_log()] starting thread (client mode): 0x2b91d510
2025-09-29T16:45:29.776 [DEBUG] [Thread-161688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:29.796 [DEBUG] [Thread-161688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:45:29.796 [INFO] [Thread-161688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:45:29.799 [DEBUG] [Thread-161688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:29.799 [DEBUG] [Thread-161688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] Compression: none
2025-09-29T16:45:29.800 [DEBUG] [Thread-161688] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:29.818 [DEBUG] [Thread-161688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:29.819 [DEBUG] [Thread-161688] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:29.819 [DEBUG] [Thread-161688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:45:29.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:45:29.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:29.821 [DEBUG] [Thread-161688] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:29.821 [DEBUG] [Thread-161688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:29.821 [DEBUG] [Thread-161688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:29.821 [DEBUG] [Thread-161688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:45:29.821 [DEBUG] [Thread-161688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:29.843 [INFO] [Thread-161688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:29.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:30.429 [DEBUG] [Thread-161688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:30.429 [DEBUG] [Thread-161688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:30.430 [DEBUG] [Thread-161688] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:45:30.470 [DEBUG] [Thread-161688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:30.470 [DEBUG] [Thread-161688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:30.472 [DEBUG] [Thread-161688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:30.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:30.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:45:30.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:45:30.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:45:30.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:30.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:45:30.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:30.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:30.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:45:30.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.614649 -999.00  +14.60  17.68     43   +2.40 1 1 1 1 1   887    0 10.88 -48.78 ----- 19.8 17.7 151.9 26.6 19.3 -28.6 18.8 -27.4 20.5 -27.4 21.3 -29.0
2025-09-29T16:45:30.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:45:30.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:45:30.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.614649
2025-09-29T16:45:30.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:45:30.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:45:30.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:45:30.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:45:30.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:45:30.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:44:58', tmtdew=14.5, humidity=37.4, cloud=0.0, wind=20.17, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:45:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:45:30.495 [DEBUG] [Thread-161688] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:30.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:45:30.592 [DEBUG] [Thread-161691] [transport.py] [_log()] starting thread (client mode): 0x2e3f9090
2025-09-29T16:45:30.592 [DEBUG] [Thread-161691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:30.607 [DEBUG] [Thread-161691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:45:30.607 [INFO] [Thread-161691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:30.615 [DEBUG] [Thread-161691] [transport.py] [_log()] Compression: none
2025-09-29T16:45:30.616 [DEBUG] [Thread-161691] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:30.674 [DEBUG] [Thread-161691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:30.674 [DEBUG] [Thread-161691] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:30.675 [DEBUG] [Thread-161691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:45:30.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:45:30.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:30.731 [DEBUG] [Thread-161691] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:30.731 [DEBUG] [Thread-161691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:30.731 [DEBUG] [Thread-161691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:30.731 [DEBUG] [Thread-161691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:45:30.731 [DEBUG] [Thread-161691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:30.750 [INFO] [Thread-161691] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:30.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:45:30.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:31.698 [DEBUG] [Thread-161691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:31.699 [DEBUG] [Thread-161691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:31.747 [DEBUG] [Thread-161691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:31.747 [DEBUG] [Thread-161691] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:31.755 [DEBUG] [Thread-161691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:31.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:31.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:45:31.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:45:31.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:31.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:31.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:31.786 [DEBUG] [Thread-161691] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:37.685 [DEBUG] [Thread-161693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:45:41.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:45:41.789 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:45:41.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:45:42.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 45, 30), 14.51, 37.35, 0.0, 21.88, 14.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:45:42.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:45:30
2025-09-29T16:45:42.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:45:42.625 [DEBUG] [Thread-161694] [transport.py] [_log()] starting thread (client mode): 0x2b94e680
2025-09-29T16:45:42.625 [DEBUG] [Thread-161694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:42.647 [DEBUG] [Thread-161694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:45:42.647 [INFO] [Thread-161694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:42.650 [DEBUG] [Thread-161694] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:42.651 [DEBUG] [Thread-161694] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:42.651 [DEBUG] [Thread-161694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:42.651 [DEBUG] [Thread-161694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:42.651 [DEBUG] [Thread-161694] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:42.651 [DEBUG] [Thread-161694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:42.651 [DEBUG] [Thread-161694] [transport.py] [_log()] Compression: none
2025-09-29T16:45:42.651 [DEBUG] [Thread-161694] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:42.667 [DEBUG] [Thread-161694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:42.668 [DEBUG] [Thread-161694] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:42.668 [DEBUG] [Thread-161694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:45:42.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:45:42.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:42.671 [DEBUG] [Thread-161694] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:42.671 [DEBUG] [Thread-161694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:42.671 [DEBUG] [Thread-161694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:42.671 [DEBUG] [Thread-161694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:45:42.671 [DEBUG] [Thread-161694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:42.694 [INFO] [Thread-161694] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:42.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:44.243 [DEBUG] [Thread-161694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:44.244 [DEBUG] [Thread-161694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:44.244 [DEBUG] [Thread-161694] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:45:44.284 [DEBUG] [Thread-161694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:44.284 [DEBUG] [Thread-161694] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:44.286 [DEBUG] [Thread-161694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:44.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:44.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:45:44.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:45:44.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:45:44.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:44.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:45:44.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.614649 -999.00  +14.60  17.68     43   +2.40 1 1 1 1 1   887    0 10.88 -48.78 ----- 19.8 17.7 151.9 26.6 19.3 -28.6 18.8 -27.4 20.5 -27.4 21.3 -29.0
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.614649
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:45:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:45:30', tmtdew=14.51, humidity=37.35, cloud=0.0, wind=21.88, temperature=14.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:45:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:45:44.302 [DEBUG] [Thread-161694] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:44.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:45:44.386 [DEBUG] [Thread-161697] [transport.py] [_log()] starting thread (client mode): 0x2b94c910
2025-09-29T16:45:44.386 [DEBUG] [Thread-161697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:44.401 [DEBUG] [Thread-161697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:45:44.401 [INFO] [Thread-161697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:45:44.409 [DEBUG] [Thread-161697] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:44.409 [DEBUG] [Thread-161697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:45:44.409 [DEBUG] [Thread-161697] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:44.409 [DEBUG] [Thread-161697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:44.409 [DEBUG] [Thread-161697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] Compression: none
2025-09-29T16:45:44.410 [DEBUG] [Thread-161697] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:44.466 [DEBUG] [Thread-161697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:44.466 [DEBUG] [Thread-161697] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:44.467 [DEBUG] [Thread-161697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:45:44.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:45:44.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:44.523 [DEBUG] [Thread-161697] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:44.524 [DEBUG] [Thread-161697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:44.524 [DEBUG] [Thread-161697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:44.524 [DEBUG] [Thread-161697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:45:44.524 [DEBUG] [Thread-161697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:44.543 [INFO] [Thread-161697] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:44.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:45:44.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:45.480 [DEBUG] [Thread-161697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:45.480 [DEBUG] [Thread-161697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:45.528 [DEBUG] [Thread-161697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:45.528 [DEBUG] [Thread-161697] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:45.537 [DEBUG] [Thread-161697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:45.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:45.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:45:45.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:45:45.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:45.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:45.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:45.572 [DEBUG] [Thread-161697] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:49.168 [DEBUG] [Thread-161699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:45:52.739 [DEBUG] [Thread-161700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:45:55.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:45:55.575 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:45:55.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:45:56.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 45, 30), 14.51, 37.35, 0.0, 21.88, 14.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:45:56.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:45:30
2025-09-29T16:45:56.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:45:56.420 [DEBUG] [Thread-161701] [transport.py] [_log()] starting thread (client mode): 0x2b91d480
2025-09-29T16:45:56.420 [DEBUG] [Thread-161701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:56.441 [DEBUG] [Thread-161701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:45:56.441 [INFO] [Thread-161701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:45:56.444 [DEBUG] [Thread-161701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:56.444 [DEBUG] [Thread-161701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:45:56.444 [DEBUG] [Thread-161701] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:56.444 [DEBUG] [Thread-161701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] Compression: none
2025-09-29T16:45:56.445 [DEBUG] [Thread-161701] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:56.461 [DEBUG] [Thread-161701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:56.461 [DEBUG] [Thread-161701] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:56.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:45:56.462 [DEBUG] [Thread-161701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:45:56.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:56.464 [DEBUG] [Thread-161701] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:56.464 [DEBUG] [Thread-161701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:56.464 [DEBUG] [Thread-161701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:56.464 [DEBUG] [Thread-161701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:45:56.464 [DEBUG] [Thread-161701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:56.489 [INFO] [Thread-161701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:56.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:57.057 [DEBUG] [Thread-161701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:57.058 [DEBUG] [Thread-161701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:57.058 [DEBUG] [Thread-161701] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:45:57.098 [DEBUG] [Thread-161701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:57.098 [DEBUG] [Thread-161701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:57.101 [DEBUG] [Thread-161701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:57.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:57.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:45:57.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:45:57.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:45:57.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:57.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:45:57.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:57.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:57.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:45:57.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.614997 -999.00  +14.50  20.40     43   +2.40 1 1 1 1 1   887    0 11.03 -48.34 ----- 22.8 20.4 141.6 31.4 19.2 -28.0 18.7 -26.8 20.4 -28.3 21.2 -29.6
2025-09-29T16:45:57.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:45:57.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:45:57.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.614997
2025-09-29T16:45:57.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:45:57.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:45:57.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:45:57.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:45:57.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:45:57.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:45:30', tmtdew=14.51, humidity=37.35, cloud=0.0, wind=21.88, temperature=14.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:45:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:45:57.124 [DEBUG] [Thread-161701] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:45:57.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:45:57.218 [DEBUG] [Thread-161704] [transport.py] [_log()] starting thread (client mode): 0x2b96ada0
2025-09-29T16:45:57.218 [DEBUG] [Thread-161704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:45:57.233 [DEBUG] [Thread-161704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:45:57.234 [INFO] [Thread-161704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:45:57.241 [DEBUG] [Thread-161704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:45:57.241 [DEBUG] [Thread-161704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:45:57.241 [DEBUG] [Thread-161704] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] client lang: <none>
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] server lang: <none>
2025-09-29T16:45:57.242 [DEBUG] [Thread-161704] [transport.py] [_log()] kex follows: False
2025-09-29T16:45:57.243 [DEBUG] [Thread-161704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:45:57.243 [DEBUG] [Thread-161704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:45:57.243 [DEBUG] [Thread-161704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:45:57.243 [DEBUG] [Thread-161704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:45:57.243 [DEBUG] [Thread-161704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:45:57.243 [DEBUG] [Thread-161704] [transport.py] [_log()] Compression: none
2025-09-29T16:45:57.243 [DEBUG] [Thread-161704] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:45:57.299 [DEBUG] [Thread-161704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:45:57.300 [DEBUG] [Thread-161704] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:45:57.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:45:57.301 [DEBUG] [Thread-161704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:45:57.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:45:57.355 [DEBUG] [Thread-161704] [transport.py] [_log()] userauth is OK
2025-09-29T16:45:57.355 [DEBUG] [Thread-161704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:45:57.356 [DEBUG] [Thread-161704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:45:57.356 [DEBUG] [Thread-161704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:45:57.356 [DEBUG] [Thread-161704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:45:57.375 [INFO] [Thread-161704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:45:57.375 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:45:57.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:45:58.365 [DEBUG] [Thread-161704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:45:58.366 [DEBUG] [Thread-161704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:45:58.413 [DEBUG] [Thread-161704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:45:58.413 [DEBUG] [Thread-161704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:45:58.422 [DEBUG] [Thread-161704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:45:58.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:45:58.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:45:58.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:45:58.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:45:58.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:45:58.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:45:58.457 [DEBUG] [Thread-161704] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:07.783 [DEBUG] [Thread-161706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:46:08.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:46:08.460 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:46:08.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:46:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 46, 2), 14.5, 37.4, 0.0, 21.26, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:46:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:46:02
2025-09-29T16:46:09.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:46:09.303 [DEBUG] [Thread-161707] [transport.py] [_log()] starting thread (client mode): 0x30ddf4f0
2025-09-29T16:46:09.304 [DEBUG] [Thread-161707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:46:09.323 [DEBUG] [Thread-161707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:46:09.324 [INFO] [Thread-161707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:46:09.327 [DEBUG] [Thread-161707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:46:09.327 [DEBUG] [Thread-161707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:46:09.327 [DEBUG] [Thread-161707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:46:09.327 [DEBUG] [Thread-161707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:09.327 [DEBUG] [Thread-161707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:09.327 [DEBUG] [Thread-161707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:09.327 [DEBUG] [Thread-161707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:09.327 [DEBUG] [Thread-161707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] client lang: <none>
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] server lang: <none>
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] kex follows: False
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] Compression: none
2025-09-29T16:46:09.328 [DEBUG] [Thread-161707] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:46:09.346 [DEBUG] [Thread-161707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:46:09.347 [DEBUG] [Thread-161707] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:46:09.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:46:09.348 [DEBUG] [Thread-161707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:46:09.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:46:09.349 [DEBUG] [Thread-161707] [transport.py] [_log()] userauth is OK
2025-09-29T16:46:09.350 [DEBUG] [Thread-161707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:46:09.350 [DEBUG] [Thread-161707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:46:09.350 [DEBUG] [Thread-161707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:46:09.350 [DEBUG] [Thread-161707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:46:09.364 [INFO] [Thread-161707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:46:09.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:46:10.140 [DEBUG] [Thread-161707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:46:10.141 [DEBUG] [Thread-161707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:46:10.141 [DEBUG] [Thread-161707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:46:10.181 [DEBUG] [Thread-161707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:46:10.181 [DEBUG] [Thread-161707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:46:10.184 [DEBUG] [Thread-161707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:46:10.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:46:10.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:46:10.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:46:10.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:46:10.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:46:10.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:46:10.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:46:10.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:46:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:46:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.614997 -999.00  +14.50  20.40     43   +2.40 1 1 1 1 1   887    0 11.03 -48.34 ----- 22.8 20.4 141.6 31.4 19.2 -28.0 18.7 -26.8 20.4 -28.3 21.2 -29.6
2025-09-29T16:46:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:46:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:46:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.614997
2025-09-29T16:46:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:46:10.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:46:10.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:46:10.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:46:10.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:46:10.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:46:02', tmtdew=14.5, humidity=37.4, cloud=0.0, wind=21.26, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:45:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:46:10.210 [DEBUG] [Thread-161707] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:10.295 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:46:10.307 [DEBUG] [Thread-161710] [transport.py] [_log()] starting thread (client mode): 0x2e348490
2025-09-29T16:46:10.307 [DEBUG] [Thread-161710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:46:10.322 [DEBUG] [Thread-161710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:46:10.322 [INFO] [Thread-161710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:46:10.329 [DEBUG] [Thread-161710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] client lang: <none>
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] server lang: <none>
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] kex follows: False
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] Compression: none
2025-09-29T16:46:10.330 [DEBUG] [Thread-161710] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:46:10.386 [DEBUG] [Thread-161710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:46:10.386 [DEBUG] [Thread-161710] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:46:10.386 [DEBUG] [Thread-161710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:46:10.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:46:10.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:46:10.443 [DEBUG] [Thread-161710] [transport.py] [_log()] userauth is OK
2025-09-29T16:46:10.443 [DEBUG] [Thread-161710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:46:10.443 [DEBUG] [Thread-161710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:46:10.443 [DEBUG] [Thread-161710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:46:10.443 [DEBUG] [Thread-161710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:46:10.457 [INFO] [Thread-161710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:46:10.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:46:10.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:46:11.432 [DEBUG] [Thread-161710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:46:11.432 [DEBUG] [Thread-161710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:46:11.480 [DEBUG] [Thread-161710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:46:11.480 [DEBUG] [Thread-161710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:46:11.489 [DEBUG] [Thread-161710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:46:11.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:46:11.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:46:11.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:46:11.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:46:11.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:46:11.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:46:11.524 [DEBUG] [Thread-161710] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:21.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:46:21.521 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:46:21.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:46:22.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 46, 2), 14.5, 37.4, 0.0, 21.26, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:46:22.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:46:02
2025-09-29T16:46:22.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:46:22.365 [DEBUG] [Thread-161712] [transport.py] [_log()] starting thread (client mode): 0x2e375420
2025-09-29T16:46:22.365 [DEBUG] [Thread-161712] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:46:22.385 [DEBUG] [Thread-161712] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:46:22.386 [INFO] [Thread-161712] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:46:22.389 [DEBUG] [Thread-161712] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:46:22.389 [DEBUG] [Thread-161712] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:46:22.389 [DEBUG] [Thread-161712] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:46:22.389 [DEBUG] [Thread-161712] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:22.389 [DEBUG] [Thread-161712] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:22.389 [DEBUG] [Thread-161712] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:22.389 [DEBUG] [Thread-161712] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:22.389 [DEBUG] [Thread-161712] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] client lang: <none>
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] server lang: <none>
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] kex follows: False
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] Compression: none
2025-09-29T16:46:22.390 [DEBUG] [Thread-161712] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:46:22.409 [DEBUG] [Thread-161712] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:46:22.409 [DEBUG] [Thread-161712] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:46:22.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:46:22.410 [DEBUG] [Thread-161712] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:46:22.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:46:22.412 [DEBUG] [Thread-161712] [transport.py] [_log()] userauth is OK
2025-09-29T16:46:22.412 [DEBUG] [Thread-161712] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:46:22.412 [DEBUG] [Thread-161712] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:46:22.412 [DEBUG] [Thread-161712] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:46:22.412 [DEBUG] [Thread-161712] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:46:22.436 [INFO] [Thread-161712] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:46:22.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:46:22.830 [DEBUG] [Thread-161714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:46:23.225 [DEBUG] [Thread-161712] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:46:23.225 [DEBUG] [Thread-161712] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:46:23.225 [DEBUG] [Thread-161712] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:46:23.267 [DEBUG] [Thread-161712] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:46:23.267 [DEBUG] [Thread-161712] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:46:23.272 [DEBUG] [Thread-161712] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:46:23.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:46:23.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:46:23.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:46:23.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:46:23.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:46:23.300 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:46:23.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:46:23.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:46:23.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:46:23.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.614997 -999.00  +14.50  20.40     43   +2.40 1 1 1 1 1   887    0 11.03 -48.34 ----- 22.8 20.4 141.6 31.4 19.2 -28.0 18.7 -26.8 20.4 -28.3 21.2 -29.6
2025-09-29T16:46:23.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:46:23.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:46:23.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.614997
2025-09-29T16:46:23.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:46:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:46:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:46:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:46:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:46:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:46:02', tmtdew=14.5, humidity=37.4, cloud=0.0, wind=21.26, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:45:35.741', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:46:23.303 [DEBUG] [Thread-161712] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:23.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:46:23.398 [DEBUG] [Thread-161716] [transport.py] [_log()] starting thread (client mode): 0x2e349150
2025-09-29T16:46:23.398 [DEBUG] [Thread-161716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:46:23.413 [DEBUG] [Thread-161716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:46:23.413 [INFO] [Thread-161716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:46:23.421 [DEBUG] [Thread-161716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:46:23.421 [DEBUG] [Thread-161716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:46:23.421 [DEBUG] [Thread-161716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:46:23.421 [DEBUG] [Thread-161716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:23.421 [DEBUG] [Thread-161716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:23.421 [DEBUG] [Thread-161716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:23.421 [DEBUG] [Thread-161716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] client lang: <none>
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] server lang: <none>
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] kex follows: False
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:46:23.422 [DEBUG] [Thread-161716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:46:23.423 [DEBUG] [Thread-161716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:46:23.423 [DEBUG] [Thread-161716] [transport.py] [_log()] Compression: none
2025-09-29T16:46:23.423 [DEBUG] [Thread-161716] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:46:23.480 [DEBUG] [Thread-161716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:46:23.480 [DEBUG] [Thread-161716] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:46:23.481 [DEBUG] [Thread-161716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:46:23.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:46:23.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:46:23.536 [DEBUG] [Thread-161716] [transport.py] [_log()] userauth is OK
2025-09-29T16:46:23.536 [DEBUG] [Thread-161716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:46:23.536 [DEBUG] [Thread-161716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:46:23.536 [DEBUG] [Thread-161716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:46:23.536 [DEBUG] [Thread-161716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:46:23.556 [INFO] [Thread-161716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:46:23.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:46:23.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:46:23.906 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:46:23.907 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:46:24.548 [DEBUG] [Thread-161716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:46:24.548 [DEBUG] [Thread-161716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:46:24.597 [DEBUG] [Thread-161716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:46:24.597 [DEBUG] [Thread-161716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:46:24.606 [DEBUG] [Thread-161716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:46:24.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:46:24.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:46:24.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:46:24.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:46:24.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:46:24.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:46:24.638 [DEBUG] [Thread-161716] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:34.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:46:34.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:46:34.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:46:35.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 46, 2), 14.5, 37.4, 0.0, 21.26, 15.05, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:46:35.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:46:02
2025-09-29T16:46:35.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:46:35.531 [DEBUG] [Thread-161718] [transport.py] [_log()] starting thread (client mode): 0x2b969db0
2025-09-29T16:46:35.531 [DEBUG] [Thread-161718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:46:35.551 [DEBUG] [Thread-161718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:46:35.551 [INFO] [Thread-161718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] client lang: <none>
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] server lang: <none>
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] kex follows: False
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] Compression: none
2025-09-29T16:46:35.555 [DEBUG] [Thread-161718] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:46:35.571 [DEBUG] [Thread-161718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:46:35.571 [DEBUG] [Thread-161718] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:46:35.571 [DEBUG] [Thread-161718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:46:35.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:46:35.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:46:35.612 [DEBUG] [Thread-161718] [transport.py] [_log()] userauth is OK
2025-09-29T16:46:35.612 [DEBUG] [Thread-161718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:46:35.612 [DEBUG] [Thread-161718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:46:35.612 [DEBUG] [Thread-161718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:46:35.612 [DEBUG] [Thread-161718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:46:35.627 [INFO] [Thread-161718] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:46:35.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:46:36.237 [DEBUG] [Thread-161718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:46:36.237 [DEBUG] [Thread-161718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:46:36.237 [DEBUG] [Thread-161718] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:46:36.278 [DEBUG] [Thread-161718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:46:36.278 [DEBUG] [Thread-161718] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:46:36.279 [DEBUG] [Thread-161718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:46:36.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:46:36.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:46:36.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:46:36.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:46:36.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:46:36.297 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:46:36.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:46:36.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:46:36.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:46:36.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.615344 -999.00  +14.60  17.82     44   +2.50 1 1 1 1 1   887    0 10.99 -47.95 ----- 14.8 17.8 130.6 25.7 19.2 -27.4 18.8 -26.6 20.4 -27.8 21.2 -28.3
2025-09-29T16:46:36.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:46:36.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:46:36.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.615344
2025-09-29T16:46:36.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:46:36.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:46:36.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:46:36.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:46:36.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:46:36.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:46:02', tmtdew=14.5, humidity=37.4, cloud=0.0, wind=21.26, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:46:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:46:36.298 [DEBUG] [Thread-161718] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:36.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:46:36.390 [DEBUG] [Thread-161721] [transport.py] [_log()] starting thread (client mode): 0x2b9ccac0
2025-09-29T16:46:36.391 [DEBUG] [Thread-161721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:46:36.405 [DEBUG] [Thread-161721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:46:36.405 [INFO] [Thread-161721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] client lang: <none>
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] server lang: <none>
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] kex follows: False
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] Compression: none
2025-09-29T16:46:36.413 [DEBUG] [Thread-161721] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:46:36.471 [DEBUG] [Thread-161721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:46:36.471 [DEBUG] [Thread-161721] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:46:36.471 [DEBUG] [Thread-161721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:46:36.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:46:36.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:46:36.528 [DEBUG] [Thread-161721] [transport.py] [_log()] userauth is OK
2025-09-29T16:46:36.528 [DEBUG] [Thread-161721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:46:36.528 [DEBUG] [Thread-161721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:46:36.528 [DEBUG] [Thread-161721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:46:36.528 [DEBUG] [Thread-161721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:46:36.542 [INFO] [Thread-161721] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:46:36.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:46:36.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:46:37.575 [DEBUG] [Thread-161721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:46:37.575 [DEBUG] [Thread-161721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:46:37.623 [DEBUG] [Thread-161721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:46:37.623 [DEBUG] [Thread-161721] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:46:37.632 [DEBUG] [Thread-161721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:46:37.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:46:37.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:46:37.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:46:37.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:46:37.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:46:37.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:46:37.667 [DEBUG] [Thread-161721] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:37.884 [DEBUG] [Thread-161723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:46:47.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:46:47.663 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:46:47.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:46:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 46, 34), 14.33, 37.85, 0.0, 23.91, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:46:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:46:34
2025-09-29T16:46:48.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:46:48.498 [DEBUG] [Thread-161724] [transport.py] [_log()] starting thread (client mode): 0x2e377670
2025-09-29T16:46:48.498 [DEBUG] [Thread-161724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:46:48.517 [DEBUG] [Thread-161724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:46:48.518 [INFO] [Thread-161724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:46:48.520 [DEBUG] [Thread-161724] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] client lang: <none>
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] server lang: <none>
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] kex follows: False
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] Compression: none
2025-09-29T16:46:48.521 [DEBUG] [Thread-161724] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:46:48.538 [DEBUG] [Thread-161724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:46:48.538 [DEBUG] [Thread-161724] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:46:48.539 [DEBUG] [Thread-161724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:46:48.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:46:48.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:46:48.541 [DEBUG] [Thread-161724] [transport.py] [_log()] userauth is OK
2025-09-29T16:46:48.541 [DEBUG] [Thread-161724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:46:48.541 [DEBUG] [Thread-161724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:46:48.541 [DEBUG] [Thread-161724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:46:48.541 [DEBUG] [Thread-161724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:46:48.556 [INFO] [Thread-161724] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:46:48.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:46:49.201 [DEBUG] [Thread-161726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:46:49.297 [DEBUG] [Thread-161724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:46:49.297 [DEBUG] [Thread-161724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:46:49.297 [DEBUG] [Thread-161724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:46:49.338 [DEBUG] [Thread-161724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:46:49.339 [DEBUG] [Thread-161724] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:46:49.342 [DEBUG] [Thread-161724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:46:49.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:46:49.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:46:49.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:46:49.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:46:49.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:46:49.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:46:49.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:46:49.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:46:49.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:46:49.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.615344 -999.00  +14.60  17.82     44   +2.50 1 1 1 1 1   887    0 10.99 -47.95 ----- 14.8 17.8 130.6 25.7 19.2 -27.4 18.8 -26.6 20.4 -27.8 21.2 -28.3
2025-09-29T16:46:49.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:46:49.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:46:49.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.615344
2025-09-29T16:46:49.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:46:49.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:46:49.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:46:49.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:46:49.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:46:49.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:46:34', tmtdew=14.33, humidity=37.85, cloud=0.0, wind=23.91, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:46:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:46:49.366 [DEBUG] [Thread-161724] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:49.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:46:49.462 [DEBUG] [Thread-161728] [transport.py] [_log()] starting thread (client mode): 0x2e349a80
2025-09-29T16:46:49.462 [DEBUG] [Thread-161728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:46:49.479 [DEBUG] [Thread-161728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:46:49.479 [INFO] [Thread-161728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] client lang: <none>
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] server lang: <none>
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] kex follows: False
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:46:49.487 [DEBUG] [Thread-161728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:46:49.488 [DEBUG] [Thread-161728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:46:49.488 [DEBUG] [Thread-161728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:46:49.488 [DEBUG] [Thread-161728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:46:49.488 [DEBUG] [Thread-161728] [transport.py] [_log()] Compression: none
2025-09-29T16:46:49.488 [DEBUG] [Thread-161728] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:46:49.549 [DEBUG] [Thread-161728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:46:49.549 [DEBUG] [Thread-161728] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:46:49.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:46:49.550 [DEBUG] [Thread-161728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:46:49.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:46:49.607 [DEBUG] [Thread-161728] [transport.py] [_log()] userauth is OK
2025-09-29T16:46:49.607 [DEBUG] [Thread-161728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:46:49.607 [DEBUG] [Thread-161728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:46:49.607 [DEBUG] [Thread-161728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:46:49.607 [DEBUG] [Thread-161728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:46:49.627 [INFO] [Thread-161728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:46:49.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:46:49.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:46:50.664 [DEBUG] [Thread-161728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:46:50.664 [DEBUG] [Thread-161728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:46:50.715 [DEBUG] [Thread-161728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:46:50.715 [DEBUG] [Thread-161728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:46:50.724 [DEBUG] [Thread-161728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:46:50.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:46:50.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:46:50.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:46:50.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:46:50.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:46:50.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:46:50.759 [DEBUG] [Thread-161728] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:46:52.928 [DEBUG] [Thread-161730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:47:00.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:47:00.761 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:47:00.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:47:01.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 46, 34), 14.33, 37.85, 0.0, 23.91, 14.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:47:01.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:46:34
2025-09-29T16:47:01.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:47:01.596 [DEBUG] [Thread-161731] [transport.py] [_log()] starting thread (client mode): 0x2e38df60
2025-09-29T16:47:01.596 [DEBUG] [Thread-161731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:01.615 [DEBUG] [Thread-161731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:47:01.615 [INFO] [Thread-161731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:47:01.618 [DEBUG] [Thread-161731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:01.618 [DEBUG] [Thread-161731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:47:01.618 [DEBUG] [Thread-161731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] Compression: none
2025-09-29T16:47:01.619 [DEBUG] [Thread-161731] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:01.636 [DEBUG] [Thread-161731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:01.636 [DEBUG] [Thread-161731] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:01.637 [DEBUG] [Thread-161731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:47:01.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:47:01.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:01.639 [DEBUG] [Thread-161731] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:01.639 [DEBUG] [Thread-161731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:01.639 [DEBUG] [Thread-161731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:01.639 [DEBUG] [Thread-161731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:47:01.639 [DEBUG] [Thread-161731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:01.654 [INFO] [Thread-161731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:01.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:02.264 [DEBUG] [Thread-161731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:02.264 [DEBUG] [Thread-161731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:02.264 [DEBUG] [Thread-161731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:47:02.305 [DEBUG] [Thread-161731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:02.305 [DEBUG] [Thread-161731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:02.307 [DEBUG] [Thread-161731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:02.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:02.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:47:02.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:47:02.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:47:02.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:02.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:47:02.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.615691 -999.00  +14.60  23.09     43   +2.40 1 1 1 1 1   887    0 11.06 -46.73 ----- 18.0 23.1 146.6 29.4 19.1 -28.9 18.9 -27.7 20.5 -27.8 21.2 -29.8
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.615691
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:47:02.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:47:02.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:46:34', tmtdew=14.33, humidity=37.85, cloud=0.0, wind=23.91, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:46:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:47:02.324 [DEBUG] [Thread-161731] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:02.399 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:47:02.409 [DEBUG] [Thread-161734] [transport.py] [_log()] starting thread (client mode): 0x2e34b850
2025-09-29T16:47:02.410 [DEBUG] [Thread-161734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:02.424 [DEBUG] [Thread-161734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:47:02.424 [INFO] [Thread-161734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] Compression: none
2025-09-29T16:47:02.432 [DEBUG] [Thread-161734] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:02.488 [DEBUG] [Thread-161734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:02.488 [DEBUG] [Thread-161734] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:02.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:47:02.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:02.488 [DEBUG] [Thread-161734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:47:02.545 [DEBUG] [Thread-161734] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:02.545 [DEBUG] [Thread-161734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:02.545 [DEBUG] [Thread-161734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:02.545 [DEBUG] [Thread-161734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:47:02.545 [DEBUG] [Thread-161734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:02.562 [INFO] [Thread-161734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:02.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:47:02.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:03.553 [DEBUG] [Thread-161734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:03.553 [DEBUG] [Thread-161734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:03.600 [DEBUG] [Thread-161734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:03.601 [DEBUG] [Thread-161734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:03.609 [DEBUG] [Thread-161734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:03.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:03.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:47:03.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:47:03.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:03.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:03.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:03.640 [DEBUG] [Thread-161734] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:07.976 [DEBUG] [Thread-161736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:47:13.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:47:13.641 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:47:13.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:47:14.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 47, 6), 14.37, 37.72, 0.0, 20.54, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:47:14.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:47:06
2025-09-29T16:47:14.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:47:14.476 [DEBUG] [Thread-161737] [transport.py] [_log()] starting thread (client mode): 0x2e38e500
2025-09-29T16:47:14.477 [DEBUG] [Thread-161737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:14.496 [DEBUG] [Thread-161737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:47:14.496 [INFO] [Thread-161737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:47:14.499 [DEBUG] [Thread-161737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:14.499 [DEBUG] [Thread-161737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:47:14.499 [DEBUG] [Thread-161737] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:14.499 [DEBUG] [Thread-161737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:14.499 [DEBUG] [Thread-161737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:14.499 [DEBUG] [Thread-161737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:14.499 [DEBUG] [Thread-161737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] Compression: none
2025-09-29T16:47:14.500 [DEBUG] [Thread-161737] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:14.507 [DEBUG] [Thread-161737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:14.508 [DEBUG] [Thread-161737] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:14.508 [DEBUG] [Thread-161737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:47:14.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:47:14.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:14.510 [DEBUG] [Thread-161737] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:14.510 [DEBUG] [Thread-161737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:14.510 [DEBUG] [Thread-161737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:14.510 [DEBUG] [Thread-161737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:47:14.510 [DEBUG] [Thread-161737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:14.527 [INFO] [Thread-161737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:14.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:15.303 [DEBUG] [Thread-161737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:15.303 [DEBUG] [Thread-161737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:15.303 [DEBUG] [Thread-161737] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:47:15.344 [DEBUG] [Thread-161737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:15.344 [DEBUG] [Thread-161737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:15.347 [DEBUG] [Thread-161737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:15.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:15.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:47:15.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:47:15.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:47:15.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:15.370 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:47:15.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:15.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:15.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:47:15.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.615691 -999.00  +14.60  23.09     43   +2.40 1 1 1 1 1   887    0 11.06 -46.73 ----- 18.0 23.1 146.6 29.4 19.1 -28.9 18.9 -27.7 20.5 -27.8 21.2 -29.8
2025-09-29T16:47:15.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:47:15.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:47:15.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.615691
2025-09-29T16:47:15.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:47:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:47:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:47:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:47:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:47:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:47:06', tmtdew=14.37, humidity=37.72, cloud=0.0, wind=20.54, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:46:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:47:15.372 [DEBUG] [Thread-161737] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:15.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:47:15.476 [DEBUG] [Thread-161740] [transport.py] [_log()] starting thread (client mode): 0x2b91d330
2025-09-29T16:47:15.476 [DEBUG] [Thread-161740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:15.490 [DEBUG] [Thread-161740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:47:15.490 [INFO] [Thread-161740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] Compression: none
2025-09-29T16:47:15.498 [DEBUG] [Thread-161740] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:15.557 [DEBUG] [Thread-161740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:15.557 [DEBUG] [Thread-161740] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:15.558 [DEBUG] [Thread-161740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:47:15.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:47:15.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:15.613 [DEBUG] [Thread-161740] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:15.614 [DEBUG] [Thread-161740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:15.614 [DEBUG] [Thread-161740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:15.614 [DEBUG] [Thread-161740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:47:15.614 [DEBUG] [Thread-161740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:15.636 [INFO] [Thread-161740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:15.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:47:15.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:16.606 [DEBUG] [Thread-161740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:16.606 [DEBUG] [Thread-161740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:16.654 [DEBUG] [Thread-161740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:16.655 [DEBUG] [Thread-161740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:16.663 [DEBUG] [Thread-161740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:16.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:16.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:47:16.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:47:16.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:16.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:16.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:16.698 [DEBUG] [Thread-161740] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:23.009 [DEBUG] [Thread-161742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:47:24.045 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:47:24.046 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:47:26.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:47:26.701 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:47:26.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:47:27.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 47, 6), 14.37, 37.72, 0.0, 20.54, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:47:27.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:47:06
2025-09-29T16:47:27.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:47:27.541 [DEBUG] [Thread-161743] [transport.py] [_log()] starting thread (client mode): 0x2e374bb0
2025-09-29T16:47:27.541 [DEBUG] [Thread-161743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:27.561 [DEBUG] [Thread-161743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:47:27.561 [INFO] [Thread-161743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:27.564 [DEBUG] [Thread-161743] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:27.565 [DEBUG] [Thread-161743] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:27.565 [DEBUG] [Thread-161743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:27.565 [DEBUG] [Thread-161743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:27.565 [DEBUG] [Thread-161743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:27.565 [DEBUG] [Thread-161743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:27.565 [DEBUG] [Thread-161743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:27.565 [DEBUG] [Thread-161743] [transport.py] [_log()] Compression: none
2025-09-29T16:47:27.565 [DEBUG] [Thread-161743] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:27.583 [DEBUG] [Thread-161743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:27.583 [DEBUG] [Thread-161743] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:27.584 [DEBUG] [Thread-161743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:47:27.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:47:27.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:27.586 [DEBUG] [Thread-161743] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:27.586 [DEBUG] [Thread-161743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:27.586 [DEBUG] [Thread-161743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:27.586 [DEBUG] [Thread-161743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:47:27.586 [DEBUG] [Thread-161743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:27.609 [INFO] [Thread-161743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:27.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:28.349 [DEBUG] [Thread-161743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:28.350 [DEBUG] [Thread-161743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:28.350 [DEBUG] [Thread-161743] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:47:28.390 [DEBUG] [Thread-161743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:28.390 [DEBUG] [Thread-161743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:28.393 [DEBUG] [Thread-161743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:28.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:28.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:47:28.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:47:28.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:47:28.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:28.417 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:47:28.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:28.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:28.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:47:28.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.615691 -999.00  +14.60  23.09     43   +2.40 1 1 1 1 1   887    0 11.06 -46.73 ----- 18.0 23.1 146.6 29.4 19.1 -28.9 18.9 -27.7 20.5 -27.8 21.2 -29.8
2025-09-29T16:47:28.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:47:28.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:47:28.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.615691
2025-09-29T16:47:28.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:47:28.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:47:28.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:47:28.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:47:28.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:47:28.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:47:06', tmtdew=14.37, humidity=37.72, cloud=0.0, wind=20.54, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:46:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:47:28.419 [DEBUG] [Thread-161743] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:28.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:47:28.524 [DEBUG] [Thread-161746] [transport.py] [_log()] starting thread (client mode): 0x2b96ab00
2025-09-29T16:47:28.524 [DEBUG] [Thread-161746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:28.539 [DEBUG] [Thread-161746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:47:28.539 [INFO] [Thread-161746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:47:28.547 [DEBUG] [Thread-161746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:28.547 [DEBUG] [Thread-161746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:47:28.547 [DEBUG] [Thread-161746] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:28.547 [DEBUG] [Thread-161746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:28.547 [DEBUG] [Thread-161746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:28.547 [DEBUG] [Thread-161746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:28.547 [DEBUG] [Thread-161746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:28.547 [DEBUG] [Thread-161746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:28.548 [DEBUG] [Thread-161746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:28.548 [DEBUG] [Thread-161746] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:28.548 [DEBUG] [Thread-161746] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:28.548 [DEBUG] [Thread-161746] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:28.548 [DEBUG] [Thread-161746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:28.548 [DEBUG] [Thread-161746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:28.548 [DEBUG] [Thread-161746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:28.548 [DEBUG] [Thread-161746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:28.549 [DEBUG] [Thread-161746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:28.549 [DEBUG] [Thread-161746] [transport.py] [_log()] Compression: none
2025-09-29T16:47:28.549 [DEBUG] [Thread-161746] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:28.606 [DEBUG] [Thread-161746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:28.607 [DEBUG] [Thread-161746] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:28.607 [DEBUG] [Thread-161746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:47:28.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:47:28.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:28.662 [DEBUG] [Thread-161746] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:28.662 [DEBUG] [Thread-161746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:28.662 [DEBUG] [Thread-161746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:28.662 [DEBUG] [Thread-161746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:47:28.663 [DEBUG] [Thread-161746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:28.684 [INFO] [Thread-161746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:28.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:47:28.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:29.658 [DEBUG] [Thread-161746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:29.659 [DEBUG] [Thread-161746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:29.706 [DEBUG] [Thread-161746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:29.706 [DEBUG] [Thread-161746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:29.715 [DEBUG] [Thread-161746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:29.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:29.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:47:29.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:47:29.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:29.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:29.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:29.749 [DEBUG] [Thread-161746] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:38.053 [DEBUG] [Thread-161748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:47:39.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:47:39.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:47:39.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:47:40.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 47, 6), 14.37, 37.72, 0.0, 20.54, 14.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:47:40.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:47:06
2025-09-29T16:47:40.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:47:40.644 [DEBUG] [Thread-161749] [transport.py] [_log()] starting thread (client mode): 0x2e3f90f0
2025-09-29T16:47:40.644 [DEBUG] [Thread-161749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:40.663 [DEBUG] [Thread-161749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:47:40.663 [INFO] [Thread-161749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:47:40.666 [DEBUG] [Thread-161749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] Compression: none
2025-09-29T16:47:40.667 [DEBUG] [Thread-161749] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:40.683 [DEBUG] [Thread-161749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:40.683 [DEBUG] [Thread-161749] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:40.683 [DEBUG] [Thread-161749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:47:40.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:47:40.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:40.684 [DEBUG] [Thread-161749] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:40.684 [DEBUG] [Thread-161749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:40.684 [DEBUG] [Thread-161749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:40.684 [DEBUG] [Thread-161749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:47:40.684 [DEBUG] [Thread-161749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:40.699 [INFO] [Thread-161749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:40.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:41.275 [DEBUG] [Thread-161749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:41.275 [DEBUG] [Thread-161749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:41.275 [DEBUG] [Thread-161749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:47:41.316 [DEBUG] [Thread-161749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:41.316 [DEBUG] [Thread-161749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:41.320 [DEBUG] [Thread-161749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:41.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:41.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:47:41.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:47:41.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:47:41.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:41.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:47:41.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:41.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.616038 -999.00  +14.40  12.77     44   +2.40 1 1 1 1 1   887    0 11.17 -46.92 ----- 11.7 12.8 127.4 23.0 19.1 -27.9 18.8 -26.9 20.5 -27.3 21.2 -28.6
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.616038
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:47:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:47:06', tmtdew=14.37, humidity=37.72, cloud=0.0, wind=20.54, temperature=14.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:47:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:47:41.337 [DEBUG] [Thread-161749] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:41.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:47:41.424 [DEBUG] [Thread-161752] [transport.py] [_log()] starting thread (client mode): 0x2e3fab30
2025-09-29T16:47:41.424 [DEBUG] [Thread-161752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:41.438 [DEBUG] [Thread-161752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:47:41.438 [INFO] [Thread-161752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] Compression: none
2025-09-29T16:47:41.446 [DEBUG] [Thread-161752] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:41.500 [DEBUG] [Thread-161752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:41.500 [DEBUG] [Thread-161752] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:41.500 [DEBUG] [Thread-161752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:47:41.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:47:41.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:41.558 [DEBUG] [Thread-161752] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:41.558 [DEBUG] [Thread-161752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:41.558 [DEBUG] [Thread-161752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:41.558 [DEBUG] [Thread-161752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:47:41.558 [DEBUG] [Thread-161752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:41.575 [INFO] [Thread-161752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:41.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:47:41.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:42.535 [DEBUG] [Thread-161752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:42.535 [DEBUG] [Thread-161752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:42.583 [DEBUG] [Thread-161752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:42.583 [DEBUG] [Thread-161752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:42.592 [DEBUG] [Thread-161752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:42.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:42.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:47:42.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:47:42.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:42.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:42.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:42.624 [DEBUG] [Thread-161752] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:49.232 [DEBUG] [Thread-161754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:47:52.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:47:52.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:47:52.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:47:53.079 [DEBUG] [Thread-161755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:47:53.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 47, 38), 14.27, 37.95, 0.0, 21.05, 14.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:47:53.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:47:38
2025-09-29T16:47:53.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:47:53.454 [DEBUG] [Thread-161756] [transport.py] [_log()] starting thread (client mode): 0x2b9cc220
2025-09-29T16:47:53.454 [DEBUG] [Thread-161756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:53.475 [DEBUG] [Thread-161756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:47:53.475 [INFO] [Thread-161756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:53.478 [DEBUG] [Thread-161756] [transport.py] [_log()] Compression: none
2025-09-29T16:47:53.479 [DEBUG] [Thread-161756] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:53.495 [DEBUG] [Thread-161756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:53.496 [DEBUG] [Thread-161756] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:53.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:47:53.497 [DEBUG] [Thread-161756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:47:53.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:53.499 [DEBUG] [Thread-161756] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:53.499 [DEBUG] [Thread-161756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:53.499 [DEBUG] [Thread-161756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:53.499 [DEBUG] [Thread-161756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:47:53.499 [DEBUG] [Thread-161756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:53.520 [INFO] [Thread-161756] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:53.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:54.306 [DEBUG] [Thread-161756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:54.306 [DEBUG] [Thread-161756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:54.306 [DEBUG] [Thread-161756] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:47:54.347 [DEBUG] [Thread-161756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:54.347 [DEBUG] [Thread-161756] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:54.348 [DEBUG] [Thread-161756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:54.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:54.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:47:54.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:47:54.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:47:54.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:54.358 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:47:54.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:54.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.616038 -999.00  +14.40  12.77     44   +2.40 1 1 1 1 1   887    0 11.17 -46.92 ----- 11.7 12.8 127.4 23.0 19.1 -27.9 18.8 -26.9 20.5 -27.3 21.2 -28.6
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.616038
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:47:54.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:47:38', tmtdew=14.27, humidity=37.95, cloud=0.0, wind=21.05, temperature=14.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:47:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:47:54.359 [DEBUG] [Thread-161756] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:47:54.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:47:54.445 [DEBUG] [Thread-161759] [transport.py] [_log()] starting thread (client mode): 0x2e3774f0
2025-09-29T16:47:54.446 [DEBUG] [Thread-161759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:47:54.461 [DEBUG] [Thread-161759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:47:54.461 [INFO] [Thread-161759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:47:54.468 [DEBUG] [Thread-161759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:47:54.468 [DEBUG] [Thread-161759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:47:54.468 [DEBUG] [Thread-161759] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:47:54.468 [DEBUG] [Thread-161759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:54.468 [DEBUG] [Thread-161759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:47:54.468 [DEBUG] [Thread-161759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] client lang: <none>
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] server lang: <none>
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] kex follows: False
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] Compression: none
2025-09-29T16:47:54.469 [DEBUG] [Thread-161759] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:47:54.526 [DEBUG] [Thread-161759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:47:54.526 [DEBUG] [Thread-161759] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:47:54.527 [DEBUG] [Thread-161759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:47:54.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:47:54.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:47:54.582 [DEBUG] [Thread-161759] [transport.py] [_log()] userauth is OK
2025-09-29T16:47:54.583 [DEBUG] [Thread-161759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:47:54.583 [DEBUG] [Thread-161759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:47:54.583 [DEBUG] [Thread-161759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:47:54.583 [DEBUG] [Thread-161759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:47:54.602 [INFO] [Thread-161759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:47:54.603 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:47:54.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:47:55.569 [DEBUG] [Thread-161759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:47:55.569 [DEBUG] [Thread-161759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:47:55.617 [DEBUG] [Thread-161759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:47:55.617 [DEBUG] [Thread-161759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:47:55.630 [DEBUG] [Thread-161759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:47:55.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:47:55.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:47:55.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:47:55.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:47:55.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:47:55.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:47:55.670 [DEBUG] [Thread-161759] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:05.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:48:05.673 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:48:05.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:48:06.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 47, 38), 14.27, 37.95, 0.0, 21.05, 14.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:48:06.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:47:38
2025-09-29T16:48:06.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:48:06.512 [DEBUG] [Thread-161761] [transport.py] [_log()] starting thread (client mode): 0x2b96bd30
2025-09-29T16:48:06.512 [DEBUG] [Thread-161761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:06.532 [DEBUG] [Thread-161761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:48:06.532 [INFO] [Thread-161761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:48:06.535 [DEBUG] [Thread-161761] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:06.535 [DEBUG] [Thread-161761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:48:06.535 [DEBUG] [Thread-161761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] Compression: none
2025-09-29T16:48:06.536 [DEBUG] [Thread-161761] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:06.553 [DEBUG] [Thread-161761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:06.553 [DEBUG] [Thread-161761] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:06.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:48:06.554 [DEBUG] [Thread-161761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:48:06.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:06.555 [DEBUG] [Thread-161761] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:06.556 [DEBUG] [Thread-161761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:06.556 [DEBUG] [Thread-161761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:06.556 [DEBUG] [Thread-161761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:48:06.556 [DEBUG] [Thread-161761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:06.573 [INFO] [Thread-161761] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:06.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:07.219 [DEBUG] [Thread-161761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:07.219 [DEBUG] [Thread-161761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:07.220 [DEBUG] [Thread-161761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:48:07.260 [DEBUG] [Thread-161761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:07.260 [DEBUG] [Thread-161761] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:07.264 [DEBUG] [Thread-161761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:07.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:07.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:48:07.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:48:07.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:48:07.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:07.287 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:48:07.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:07.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:07.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:48:07.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.616385 -999.00  +14.60  17.68     44   +2.50 1 1 1 1 1   887    0 11.00 -44.08 ----- 20.7 17.7 163.0 23.6 19.1 -27.8 18.9 -27.3 20.5 -27.3 21.3 -29.1
2025-09-29T16:48:07.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:48:07.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:48:07.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.616385
2025-09-29T16:48:07.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:48:07.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:48:07.290 [DEBUG] [Thread-161761] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:07.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:48:07.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:48:07.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:48:07.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:47:38', tmtdew=14.27, humidity=37.95, cloud=0.0, wind=21.05, temperature=14.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:47:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:48:07.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:48:07.385 [DEBUG] [Thread-161764] [transport.py] [_log()] starting thread (client mode): 0x2b91f880
2025-09-29T16:48:07.385 [DEBUG] [Thread-161764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:07.400 [DEBUG] [Thread-161764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:48:07.400 [INFO] [Thread-161764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:48:07.407 [DEBUG] [Thread-161764] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:07.407 [DEBUG] [Thread-161764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] Compression: none
2025-09-29T16:48:07.408 [DEBUG] [Thread-161764] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:07.466 [DEBUG] [Thread-161764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:07.466 [DEBUG] [Thread-161764] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:07.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:48:07.467 [DEBUG] [Thread-161764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:48:07.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:07.523 [DEBUG] [Thread-161764] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:07.523 [DEBUG] [Thread-161764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:07.523 [DEBUG] [Thread-161764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:07.523 [DEBUG] [Thread-161764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:48:07.523 [DEBUG] [Thread-161764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:07.543 [INFO] [Thread-161764] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:07.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:48:07.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:08.124 [DEBUG] [Thread-161766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:48:08.560 [DEBUG] [Thread-161764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:08.560 [DEBUG] [Thread-161764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:08.608 [DEBUG] [Thread-161764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:08.608 [DEBUG] [Thread-161764] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:08.617 [DEBUG] [Thread-161764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:08.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:08.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:48:08.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:48:08.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:08.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:08.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:08.651 [DEBUG] [Thread-161764] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:18.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:48:18.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:48:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:48:19.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 48, 10), 14.2, 38.11, 0.0, 22.73, 14.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:48:19.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:48:10
2025-09-29T16:48:19.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:48:19.516 [DEBUG] [Thread-161767] [transport.py] [_log()] starting thread (client mode): 0x2e3c3f70
2025-09-29T16:48:19.516 [DEBUG] [Thread-161767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:19.536 [DEBUG] [Thread-161767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:48:19.536 [INFO] [Thread-161767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:19.539 [DEBUG] [Thread-161767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:19.540 [DEBUG] [Thread-161767] [transport.py] [_log()] Compression: none
2025-09-29T16:48:19.540 [DEBUG] [Thread-161767] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:19.555 [DEBUG] [Thread-161767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:19.556 [DEBUG] [Thread-161767] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:19.556 [DEBUG] [Thread-161767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:48:19.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:48:19.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:19.556 [DEBUG] [Thread-161767] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:19.556 [DEBUG] [Thread-161767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:19.556 [DEBUG] [Thread-161767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:19.556 [DEBUG] [Thread-161767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:48:19.556 [DEBUG] [Thread-161767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:19.572 [INFO] [Thread-161767] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:19.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:20.371 [DEBUG] [Thread-161767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:20.371 [DEBUG] [Thread-161767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:20.371 [DEBUG] [Thread-161767] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:48:20.413 [DEBUG] [Thread-161767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:20.413 [DEBUG] [Thread-161767] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:20.415 [DEBUG] [Thread-161767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:20.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:20.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:48:20.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:48:20.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:48:20.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:20.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:48:20.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.616385 -999.00  +14.60  17.68     44   +2.50 1 1 1 1 1   887    0 11.00 -44.08 ----- 20.7 17.7 163.0 23.6 19.1 -27.8 18.9 -27.3 20.5 -27.3 21.3 -29.1
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.616385
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:48:20.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:48:10', tmtdew=14.2, humidity=38.11, cloud=0.0, wind=22.73, temperature=14.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:47:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:48:20.433 [DEBUG] [Thread-161767] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:20.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:48:20.517 [DEBUG] [Thread-161770] [transport.py] [_log()] starting thread (client mode): 0x2e3768c0
2025-09-29T16:48:20.518 [DEBUG] [Thread-161770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:20.532 [DEBUG] [Thread-161770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:48:20.532 [INFO] [Thread-161770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:48:20.539 [DEBUG] [Thread-161770] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:20.539 [DEBUG] [Thread-161770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:48:20.539 [DEBUG] [Thread-161770] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] Compression: none
2025-09-29T16:48:20.540 [DEBUG] [Thread-161770] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:20.598 [DEBUG] [Thread-161770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:20.598 [DEBUG] [Thread-161770] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:20.598 [DEBUG] [Thread-161770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:48:20.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:48:20.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:20.655 [DEBUG] [Thread-161770] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:20.655 [DEBUG] [Thread-161770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:20.655 [DEBUG] [Thread-161770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:20.655 [DEBUG] [Thread-161770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:48:20.655 [DEBUG] [Thread-161770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:20.669 [INFO] [Thread-161770] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:20.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:48:20.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:21.640 [DEBUG] [Thread-161770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:21.640 [DEBUG] [Thread-161770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:21.688 [DEBUG] [Thread-161770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:21.688 [DEBUG] [Thread-161770] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:21.696 [DEBUG] [Thread-161770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:21.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:21.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:48:21.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:48:21.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:21.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:21.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:21.728 [DEBUG] [Thread-161770] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:23.173 [DEBUG] [Thread-161772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:48:24.186 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:48:24.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:48:31.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:48:31.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:48:31.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:48:32.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 48, 10), 14.2, 38.11, 0.0, 22.73, 14.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:48:32.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:48:10
2025-09-29T16:48:32.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:48:32.560 [DEBUG] [Thread-161773] [transport.py] [_log()] starting thread (client mode): 0x2e363ee0
2025-09-29T16:48:32.560 [DEBUG] [Thread-161773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:32.580 [DEBUG] [Thread-161773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:48:32.580 [INFO] [Thread-161773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:32.582 [DEBUG] [Thread-161773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] Compression: none
2025-09-29T16:48:32.583 [DEBUG] [Thread-161773] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:32.602 [DEBUG] [Thread-161773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:32.603 [DEBUG] [Thread-161773] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:32.604 [DEBUG] [Thread-161773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:48:32.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:48:32.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:32.606 [DEBUG] [Thread-161773] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:32.606 [DEBUG] [Thread-161773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:32.606 [DEBUG] [Thread-161773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:32.606 [DEBUG] [Thread-161773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:48:32.606 [DEBUG] [Thread-161773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:32.628 [INFO] [Thread-161773] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:32.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:33.354 [DEBUG] [Thread-161773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:33.354 [DEBUG] [Thread-161773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:33.354 [DEBUG] [Thread-161773] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:48:33.395 [DEBUG] [Thread-161773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:33.395 [DEBUG] [Thread-161773] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:33.398 [DEBUG] [Thread-161773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:33.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:33.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:48:33.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:48:33.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:48:33.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:33.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:48:33.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:33.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:48:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.616385 -999.00  +14.60  17.68     44   +2.50 1 1 1 1 1   887    0 11.00 -44.08 ----- 20.7 17.7 163.0 23.6 19.1 -27.8 18.9 -27.3 20.5 -27.3 21.3 -29.1
2025-09-29T16:48:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:48:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:48:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.616385
2025-09-29T16:48:33.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:48:33.420 [DEBUG] [Thread-161773] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:33.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:48:33.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:48:33.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:48:33.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:48:33.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:48:10', tmtdew=14.2, humidity=38.11, cloud=0.0, wind=22.73, temperature=14.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:47:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:48:33.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:48:33.516 [DEBUG] [Thread-161776] [transport.py] [_log()] starting thread (client mode): 0x2e3767a0
2025-09-29T16:48:33.516 [DEBUG] [Thread-161776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:33.531 [DEBUG] [Thread-161776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:48:33.531 [INFO] [Thread-161776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:48:33.539 [DEBUG] [Thread-161776] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:33.539 [DEBUG] [Thread-161776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:48:33.539 [DEBUG] [Thread-161776] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] Compression: none
2025-09-29T16:48:33.540 [DEBUG] [Thread-161776] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:33.595 [DEBUG] [Thread-161776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:33.595 [DEBUG] [Thread-161776] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:33.596 [DEBUG] [Thread-161776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:48:33.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:48:33.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:33.651 [DEBUG] [Thread-161776] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:33.652 [DEBUG] [Thread-161776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:33.652 [DEBUG] [Thread-161776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:33.652 [DEBUG] [Thread-161776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:48:33.652 [DEBUG] [Thread-161776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:33.670 [INFO] [Thread-161776] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:33.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:48:33.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:34.617 [DEBUG] [Thread-161776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:34.618 [DEBUG] [Thread-161776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:34.667 [DEBUG] [Thread-161776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:34.667 [DEBUG] [Thread-161776] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:34.676 [DEBUG] [Thread-161776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:34.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:34.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:48:34.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:48:34.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:34.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:34.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:34.714 [DEBUG] [Thread-161776] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:38.211 [DEBUG] [Thread-161778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:48:44.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:48:44.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:48:44.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:48:45.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 48, 42), 14.13, 38.08, 0.0, 29.1, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:48:45.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:48:42
2025-09-29T16:48:45.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:48:45.555 [DEBUG] [Thread-161779] [transport.py] [_log()] starting thread (client mode): 0x2e3c3af0
2025-09-29T16:48:45.555 [DEBUG] [Thread-161779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:45.575 [DEBUG] [Thread-161779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:48:45.575 [INFO] [Thread-161779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:48:45.578 [DEBUG] [Thread-161779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:45.579 [DEBUG] [Thread-161779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:48:45.579 [DEBUG] [Thread-161779] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:45.579 [DEBUG] [Thread-161779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:45.579 [DEBUG] [Thread-161779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:45.579 [DEBUG] [Thread-161779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:45.579 [DEBUG] [Thread-161779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:45.579 [DEBUG] [Thread-161779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:45.579 [DEBUG] [Thread-161779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] Compression: none
2025-09-29T16:48:45.580 [DEBUG] [Thread-161779] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:45.593 [DEBUG] [Thread-161779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:45.593 [DEBUG] [Thread-161779] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:45.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:48:45.594 [DEBUG] [Thread-161779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:48:45.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:45.636 [DEBUG] [Thread-161779] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:45.637 [DEBUG] [Thread-161779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:45.637 [DEBUG] [Thread-161779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:45.637 [DEBUG] [Thread-161779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:48:45.637 [DEBUG] [Thread-161779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:45.661 [INFO] [Thread-161779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:45.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:46.350 [DEBUG] [Thread-161779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:46.351 [DEBUG] [Thread-161779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:46.351 [DEBUG] [Thread-161779] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:48:46.391 [DEBUG] [Thread-161779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:46.391 [DEBUG] [Thread-161779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:46.394 [DEBUG] [Thread-161779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:46.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:46.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:48:46.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:48:46.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:48:46.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:46.417 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:48:46.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:46.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:46.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:48:46.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.616733 -999.00  +14.60  13.57     43   +2.40 1 1 1 1 1   887    0 10.88 -43.76 ----- 18.9 13.6 151.0 24.4 19.1 -28.0 18.9 -27.1 20.4 -27.7 21.2 -28.4
2025-09-29T16:48:46.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:48:46.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:48:46.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.616733
2025-09-29T16:48:46.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:48:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:48:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:48:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:48:46.419 [DEBUG] [Thread-161779] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:48:46.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:48:42', tmtdew=14.13, humidity=38.08, cloud=0.0, wind=29.1, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:48:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:48:46.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:48:46.515 [DEBUG] [Thread-161782] [transport.py] [_log()] starting thread (client mode): 0x30ddf4f0
2025-09-29T16:48:46.515 [DEBUG] [Thread-161782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:46.530 [DEBUG] [Thread-161782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:48:46.530 [INFO] [Thread-161782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:48:46.540 [DEBUG] [Thread-161782] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:46.540 [DEBUG] [Thread-161782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:48:46.540 [DEBUG] [Thread-161782] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:46.540 [DEBUG] [Thread-161782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:46.541 [DEBUG] [Thread-161782] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:46.542 [DEBUG] [Thread-161782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:46.542 [DEBUG] [Thread-161782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:46.542 [DEBUG] [Thread-161782] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:46.542 [DEBUG] [Thread-161782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:46.542 [DEBUG] [Thread-161782] [transport.py] [_log()] Compression: none
2025-09-29T16:48:46.542 [DEBUG] [Thread-161782] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:46.596 [DEBUG] [Thread-161782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:46.597 [DEBUG] [Thread-161782] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:46.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:48:46.598 [DEBUG] [Thread-161782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:48:46.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:46.651 [DEBUG] [Thread-161782] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:46.651 [DEBUG] [Thread-161782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:46.652 [DEBUG] [Thread-161782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:46.652 [DEBUG] [Thread-161782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:48:46.652 [DEBUG] [Thread-161782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:46.670 [INFO] [Thread-161782] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:46.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:48:46.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:47.637 [DEBUG] [Thread-161782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:47.637 [DEBUG] [Thread-161782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:47.686 [DEBUG] [Thread-161782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:47.686 [DEBUG] [Thread-161782] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:47.698 [DEBUG] [Thread-161782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:47.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:47.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:48:47.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:48:47.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:47.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:47.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:47.738 [DEBUG] [Thread-161782] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:49.265 [DEBUG] [Thread-161784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:48:53.241 [DEBUG] [Thread-161785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:48:57.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:48:57.740 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:48:57.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:48:58.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 48, 42), 14.13, 38.08, 0.0, 29.1, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:48:58.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:48:42
2025-09-29T16:48:58.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:48:58.593 [DEBUG] [Thread-161786] [transport.py] [_log()] starting thread (client mode): 0x30dde320
2025-09-29T16:48:58.593 [DEBUG] [Thread-161786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:58.612 [DEBUG] [Thread-161786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:48:58.613 [INFO] [Thread-161786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:58.614 [DEBUG] [Thread-161786] [transport.py] [_log()] Compression: none
2025-09-29T16:48:58.615 [DEBUG] [Thread-161786] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:58.621 [DEBUG] [Thread-161786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:58.622 [DEBUG] [Thread-161786] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:58.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:48:58.622 [DEBUG] [Thread-161786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:48:58.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:58.622 [DEBUG] [Thread-161786] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:58.622 [DEBUG] [Thread-161786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:58.622 [DEBUG] [Thread-161786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:58.622 [DEBUG] [Thread-161786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:48:58.622 [DEBUG] [Thread-161786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:58.631 [INFO] [Thread-161786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:58.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:48:59.417 [DEBUG] [Thread-161786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:48:59.417 [DEBUG] [Thread-161786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:48:59.417 [DEBUG] [Thread-161786] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:48:59.458 [DEBUG] [Thread-161786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:48:59.458 [DEBUG] [Thread-161786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:48:59.460 [DEBUG] [Thread-161786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:48:59.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:48:59.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:48:59.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:48:59.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:48:59.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:48:59.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:48:59.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.616733 -999.00  +14.60  13.57     43   +2.40 1 1 1 1 1   887    0 10.88 -43.76 ----- 18.9 13.6 151.0 24.4 19.1 -28.0 18.9 -27.1 20.4 -27.7 21.2 -28.4
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.616733
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:48:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:48:42', tmtdew=14.13, humidity=38.08, cloud=0.0, wind=29.1, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:48:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:48:59.478 [DEBUG] [Thread-161786] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:48:59.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:48:59.562 [DEBUG] [Thread-161789] [transport.py] [_log()] starting thread (client mode): 0x2e3c02b0
2025-09-29T16:48:59.562 [DEBUG] [Thread-161789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:48:59.576 [DEBUG] [Thread-161789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:48:59.576 [INFO] [Thread-161789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] client lang: <none>
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] server lang: <none>
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] kex follows: False
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:48:59.583 [DEBUG] [Thread-161789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:48:59.584 [DEBUG] [Thread-161789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:48:59.584 [DEBUG] [Thread-161789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:48:59.584 [DEBUG] [Thread-161789] [transport.py] [_log()] Compression: none
2025-09-29T16:48:59.584 [DEBUG] [Thread-161789] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:48:59.639 [DEBUG] [Thread-161789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:48:59.639 [DEBUG] [Thread-161789] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:48:59.639 [DEBUG] [Thread-161789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:48:59.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:48:59.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:48:59.695 [DEBUG] [Thread-161789] [transport.py] [_log()] userauth is OK
2025-09-29T16:48:59.696 [DEBUG] [Thread-161789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:48:59.696 [DEBUG] [Thread-161789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:48:59.696 [DEBUG] [Thread-161789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:48:59.696 [DEBUG] [Thread-161789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:48:59.711 [INFO] [Thread-161789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:48:59.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:48:59.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:00.673 [DEBUG] [Thread-161789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:00.673 [DEBUG] [Thread-161789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:00.721 [DEBUG] [Thread-161789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:00.721 [DEBUG] [Thread-161789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:00.729 [DEBUG] [Thread-161789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:00.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:00.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:49:00.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:49:00.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:00.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:00.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:00.761 [DEBUG] [Thread-161789] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:08.279 [DEBUG] [Thread-161791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:49:10.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:49:10.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:49:10.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:49:11.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 48, 42), 14.13, 38.08, 0.0, 29.1, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:49:11.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:48:42
2025-09-29T16:49:11.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:49:11.611 [DEBUG] [Thread-161792] [transport.py] [_log()] starting thread (client mode): 0x2e362740
2025-09-29T16:49:11.612 [DEBUG] [Thread-161792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:49:11.627 [DEBUG] [Thread-161792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:49:11.627 [INFO] [Thread-161792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:49:11.630 [DEBUG] [Thread-161792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:49:11.630 [DEBUG] [Thread-161792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:49:11.630 [DEBUG] [Thread-161792] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:49:11.630 [DEBUG] [Thread-161792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:11.630 [DEBUG] [Thread-161792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:11.630 [DEBUG] [Thread-161792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:11.630 [DEBUG] [Thread-161792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:11.630 [DEBUG] [Thread-161792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] client lang: <none>
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] server lang: <none>
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] kex follows: False
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] Compression: none
2025-09-29T16:49:11.631 [DEBUG] [Thread-161792] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:49:11.638 [DEBUG] [Thread-161792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:49:11.639 [DEBUG] [Thread-161792] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:49:11.639 [DEBUG] [Thread-161792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:49:11.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:49:11.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:49:11.640 [DEBUG] [Thread-161792] [transport.py] [_log()] userauth is OK
2025-09-29T16:49:11.640 [DEBUG] [Thread-161792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:49:11.640 [DEBUG] [Thread-161792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:49:11.640 [DEBUG] [Thread-161792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:49:11.640 [DEBUG] [Thread-161792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:49:11.657 [INFO] [Thread-161792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:49:11.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:12.246 [DEBUG] [Thread-161792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:12.246 [DEBUG] [Thread-161792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:12.246 [DEBUG] [Thread-161792] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:49:12.287 [DEBUG] [Thread-161792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:12.287 [DEBUG] [Thread-161792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:12.289 [DEBUG] [Thread-161792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:12.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:12.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:49:12.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:49:12.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:49:12.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:12.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:49:12.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:12.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:12.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:49:12.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.617427 -999.00  +14.50  16.20     44   +2.40 1 1 1 1 1   887    0 10.84 -42.58 ----- 17.7 16.2 143.4 26.6 19.0 -28.2 18.8 -27.4 20.4 -28.7 21.1 -29.3
2025-09-29T16:49:12.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:49:12.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:49:12.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.617427
2025-09-29T16:49:12.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:49:12.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:49:12.311 [DEBUG] [Thread-161792] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:12.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:49:12.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:49:12.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:49:12.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:48:42', tmtdew=14.13, humidity=38.08, cloud=0.0, wind=29.1, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:49:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:49:12.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:49:12.404 [DEBUG] [Thread-161795] [transport.py] [_log()] starting thread (client mode): 0x2b94fee0
2025-09-29T16:49:12.404 [DEBUG] [Thread-161795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:49:12.418 [DEBUG] [Thread-161795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:49:12.418 [INFO] [Thread-161795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:49:12.426 [DEBUG] [Thread-161795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:49:12.426 [DEBUG] [Thread-161795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:49:12.426 [DEBUG] [Thread-161795] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:49:12.426 [DEBUG] [Thread-161795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:12.426 [DEBUG] [Thread-161795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:12.427 [DEBUG] [Thread-161795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:12.427 [DEBUG] [Thread-161795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:12.427 [DEBUG] [Thread-161795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:49:12.427 [DEBUG] [Thread-161795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:49:12.427 [DEBUG] [Thread-161795] [transport.py] [_log()] client lang: <none>
2025-09-29T16:49:12.427 [DEBUG] [Thread-161795] [transport.py] [_log()] server lang: <none>
2025-09-29T16:49:12.427 [DEBUG] [Thread-161795] [transport.py] [_log()] kex follows: False
2025-09-29T16:49:12.428 [DEBUG] [Thread-161795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:49:12.428 [DEBUG] [Thread-161795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:49:12.428 [DEBUG] [Thread-161795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:49:12.428 [DEBUG] [Thread-161795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:49:12.428 [DEBUG] [Thread-161795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:49:12.428 [DEBUG] [Thread-161795] [transport.py] [_log()] Compression: none
2025-09-29T16:49:12.428 [DEBUG] [Thread-161795] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:49:12.484 [DEBUG] [Thread-161795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:49:12.484 [DEBUG] [Thread-161795] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:49:12.485 [DEBUG] [Thread-161795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:49:12.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:49:12.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:49:12.540 [DEBUG] [Thread-161795] [transport.py] [_log()] userauth is OK
2025-09-29T16:49:12.540 [DEBUG] [Thread-161795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:49:12.540 [DEBUG] [Thread-161795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:49:12.541 [DEBUG] [Thread-161795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:49:12.541 [DEBUG] [Thread-161795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:49:12.559 [INFO] [Thread-161795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:49:12.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:49:12.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:13.558 [DEBUG] [Thread-161795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:13.558 [DEBUG] [Thread-161795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:13.606 [DEBUG] [Thread-161795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:13.606 [DEBUG] [Thread-161795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:13.615 [DEBUG] [Thread-161795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:13.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:13.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:49:13.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:49:13.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:13.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:13.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:13.648 [DEBUG] [Thread-161795] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:23.312 [DEBUG] [Thread-161797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:49:23.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:49:23.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:49:23.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:49:24.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 49, 14), 14.26, 37.77, 0.0, 28.11, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:49:24.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:49:14
2025-09-29T16:49:24.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:49:24.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:49:24.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:49:24.469 [DEBUG] [Thread-161798] [transport.py] [_log()] starting thread (client mode): 0x2e3c0ca0
2025-09-29T16:49:24.469 [DEBUG] [Thread-161798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:49:24.491 [DEBUG] [Thread-161798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:49:24.491 [INFO] [Thread-161798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:49:24.494 [DEBUG] [Thread-161798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] client lang: <none>
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] server lang: <none>
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] kex follows: False
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] Compression: none
2025-09-29T16:49:24.495 [DEBUG] [Thread-161798] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:49:24.512 [DEBUG] [Thread-161798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:49:24.513 [DEBUG] [Thread-161798] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:49:24.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:49:24.514 [DEBUG] [Thread-161798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:49:24.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:49:24.516 [DEBUG] [Thread-161798] [transport.py] [_log()] userauth is OK
2025-09-29T16:49:24.516 [DEBUG] [Thread-161798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:49:24.516 [DEBUG] [Thread-161798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:49:24.516 [DEBUG] [Thread-161798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:49:24.516 [DEBUG] [Thread-161798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:49:24.532 [INFO] [Thread-161798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:49:24.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:25.315 [DEBUG] [Thread-161798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:25.315 [DEBUG] [Thread-161798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:25.316 [DEBUG] [Thread-161798] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:49:25.356 [DEBUG] [Thread-161798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:25.356 [DEBUG] [Thread-161798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:25.359 [DEBUG] [Thread-161798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:25.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:25.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:49:25.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:49:25.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:49:25.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:25.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:49:25.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:25.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:49:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.617427 -999.00  +14.50  16.20     44   +2.40 1 1 1 1 1   887    0 10.84 -42.58 ----- 17.7 16.2 143.4 26.6 19.0 -28.2 18.8 -27.4 20.4 -28.7 21.1 -29.3
2025-09-29T16:49:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:49:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:49:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.617427
2025-09-29T16:49:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:49:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:49:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:49:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:49:25.383 [DEBUG] [Thread-161798] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:25.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:49:25.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:49:14', tmtdew=14.26, humidity=37.77, cloud=0.0, wind=28.11, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:49:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:49:25.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:49:25.481 [DEBUG] [Thread-161801] [transport.py] [_log()] starting thread (client mode): 0x2e3c0040
2025-09-29T16:49:25.481 [DEBUG] [Thread-161801] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:49:25.496 [DEBUG] [Thread-161801] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:49:25.496 [INFO] [Thread-161801] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] client lang: <none>
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] server lang: <none>
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] kex follows: False
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:49:25.504 [DEBUG] [Thread-161801] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:49:25.505 [DEBUG] [Thread-161801] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:49:25.505 [DEBUG] [Thread-161801] [transport.py] [_log()] Compression: none
2025-09-29T16:49:25.505 [DEBUG] [Thread-161801] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:49:25.559 [DEBUG] [Thread-161801] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:49:25.559 [DEBUG] [Thread-161801] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:49:25.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:49:25.560 [DEBUG] [Thread-161801] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:49:25.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:49:25.617 [DEBUG] [Thread-161801] [transport.py] [_log()] userauth is OK
2025-09-29T16:49:25.617 [DEBUG] [Thread-161801] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:49:25.617 [DEBUG] [Thread-161801] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:49:25.617 [DEBUG] [Thread-161801] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:49:25.617 [DEBUG] [Thread-161801] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:49:25.636 [INFO] [Thread-161801] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:49:25.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:49:25.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:26.681 [DEBUG] [Thread-161801] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:26.681 [DEBUG] [Thread-161801] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:26.729 [DEBUG] [Thread-161801] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:26.729 [DEBUG] [Thread-161801] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:26.738 [DEBUG] [Thread-161801] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:26.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:26.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:49:26.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:49:26.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:26.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:26.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:26.772 [DEBUG] [Thread-161801] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:36.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:49:36.774 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:49:36.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:49:37.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 49, 14), 14.26, 37.77, 0.0, 28.11, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:49:37.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:49:14
2025-09-29T16:49:37.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:49:37.632 [DEBUG] [Thread-161803] [transport.py] [_log()] starting thread (client mode): 0x30ddf940
2025-09-29T16:49:37.632 [DEBUG] [Thread-161803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:49:37.651 [DEBUG] [Thread-161803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:49:37.651 [INFO] [Thread-161803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:49:37.654 [DEBUG] [Thread-161803] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] client lang: <none>
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] server lang: <none>
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] kex follows: False
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] Compression: none
2025-09-29T16:49:37.655 [DEBUG] [Thread-161803] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:49:37.671 [DEBUG] [Thread-161803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:49:37.671 [DEBUG] [Thread-161803] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:49:37.671 [DEBUG] [Thread-161803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:49:37.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:49:37.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:49:37.672 [DEBUG] [Thread-161803] [transport.py] [_log()] userauth is OK
2025-09-29T16:49:37.672 [DEBUG] [Thread-161803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:49:37.672 [DEBUG] [Thread-161803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:49:37.672 [DEBUG] [Thread-161803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:49:37.672 [DEBUG] [Thread-161803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:49:37.687 [INFO] [Thread-161803] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:49:37.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:38.353 [DEBUG] [Thread-161805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:49:38.451 [DEBUG] [Thread-161803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:38.451 [DEBUG] [Thread-161803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:38.451 [DEBUG] [Thread-161803] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:49:38.492 [DEBUG] [Thread-161803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:38.492 [DEBUG] [Thread-161803] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:38.494 [DEBUG] [Thread-161803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:38.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:38.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:49:38.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:49:38.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:49:38.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:38.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:49:38.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.617427 -999.00  +14.50  16.20     44   +2.40 1 1 1 1 1   887    0 10.84 -42.58 ----- 17.7 16.2 143.4 26.6 19.0 -28.2 18.8 -27.4 20.4 -28.7 21.1 -29.3
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.617427
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:49:38.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:49:14', tmtdew=14.26, humidity=37.77, cloud=0.0, wind=28.11, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:49:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:49:38.513 [DEBUG] [Thread-161803] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:38.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:49:38.600 [DEBUG] [Thread-161807] [transport.py] [_log()] starting thread (client mode): 0x30dde8f0
2025-09-29T16:49:38.600 [DEBUG] [Thread-161807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:49:38.615 [DEBUG] [Thread-161807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:49:38.615 [INFO] [Thread-161807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] client lang: <none>
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] server lang: <none>
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] kex follows: False
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] Compression: none
2025-09-29T16:49:38.623 [DEBUG] [Thread-161807] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:49:38.680 [DEBUG] [Thread-161807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:49:38.680 [DEBUG] [Thread-161807] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:49:38.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:49:38.681 [DEBUG] [Thread-161807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:49:38.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:49:38.737 [DEBUG] [Thread-161807] [transport.py] [_log()] userauth is OK
2025-09-29T16:49:38.737 [DEBUG] [Thread-161807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:49:38.737 [DEBUG] [Thread-161807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:49:38.737 [DEBUG] [Thread-161807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:49:38.737 [DEBUG] [Thread-161807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:49:38.752 [INFO] [Thread-161807] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:49:38.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:49:38.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:39.730 [DEBUG] [Thread-161807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:39.730 [DEBUG] [Thread-161807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:39.777 [DEBUG] [Thread-161807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:39.777 [DEBUG] [Thread-161807] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:39.786 [DEBUG] [Thread-161807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:39.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:39.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:49:39.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:49:39.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:39.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:39.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:39.821 [DEBUG] [Thread-161807] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:49.297 [DEBUG] [Thread-161809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:49:49.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:49:49.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:49:49.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:49:50.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 49, 46), 14.02, 38.45, 0.0, 21.99, 14.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:49:50.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:49:46
2025-09-29T16:49:50.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:49:50.652 [DEBUG] [Thread-161810] [transport.py] [_log()] starting thread (client mode): 0x2b9ceec0
2025-09-29T16:49:50.653 [DEBUG] [Thread-161810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:49:50.672 [DEBUG] [Thread-161810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:49:50.672 [INFO] [Thread-161810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] client lang: <none>
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] server lang: <none>
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] kex follows: False
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:49:50.675 [DEBUG] [Thread-161810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:49:50.676 [DEBUG] [Thread-161810] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:49:50.676 [DEBUG] [Thread-161810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:49:50.676 [DEBUG] [Thread-161810] [transport.py] [_log()] Compression: none
2025-09-29T16:49:50.676 [DEBUG] [Thread-161810] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:49:50.690 [DEBUG] [Thread-161810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:49:50.690 [DEBUG] [Thread-161810] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:49:50.690 [DEBUG] [Thread-161810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:49:50.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:49:50.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:49:50.691 [DEBUG] [Thread-161810] [transport.py] [_log()] userauth is OK
2025-09-29T16:49:50.691 [DEBUG] [Thread-161810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:49:50.691 [DEBUG] [Thread-161810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:49:50.691 [DEBUG] [Thread-161810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:49:50.691 [DEBUG] [Thread-161810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:49:50.701 [INFO] [Thread-161810] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:49:50.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:51.328 [DEBUG] [Thread-161810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:51.329 [DEBUG] [Thread-161810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:51.329 [DEBUG] [Thread-161810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:49:51.369 [DEBUG] [Thread-161810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:51.370 [DEBUG] [Thread-161810] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:51.373 [DEBUG] [Thread-161810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:51.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:51.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:49:51.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:49:51.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:49:51.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:51.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:49:51.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:51.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:51.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:49:51.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.617774 -999.00  +14.70  14.88     43   +2.40 1 1 1 1 1   887    0 10.90 -41.21 ----- 15.7 14.9 130.0 21.4 19.1 -27.5 18.8 -26.6 20.4 -26.9 21.2 -28.8
2025-09-29T16:49:51.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:49:51.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:49:51.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.617774
2025-09-29T16:49:51.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:49:51.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:49:51.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:49:51.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:49:51.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:49:51.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:49:46', tmtdew=14.02, humidity=38.45, cloud=0.0, wind=21.99, temperature=14.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:49:35.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:49:51.399 [DEBUG] [Thread-161810] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:51.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:49:51.482 [DEBUG] [Thread-161813] [transport.py] [_log()] starting thread (client mode): 0x2e3df2e0
2025-09-29T16:49:51.482 [DEBUG] [Thread-161813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:49:51.498 [DEBUG] [Thread-161813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:49:51.498 [INFO] [Thread-161813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:49:51.506 [DEBUG] [Thread-161813] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:49:51.506 [DEBUG] [Thread-161813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:49:51.506 [DEBUG] [Thread-161813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] client lang: <none>
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] server lang: <none>
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] kex follows: False
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] Compression: none
2025-09-29T16:49:51.507 [DEBUG] [Thread-161813] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:49:51.564 [DEBUG] [Thread-161813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:49:51.565 [DEBUG] [Thread-161813] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:49:51.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:49:51.566 [DEBUG] [Thread-161813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:49:51.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:49:51.621 [DEBUG] [Thread-161813] [transport.py] [_log()] userauth is OK
2025-09-29T16:49:51.621 [DEBUG] [Thread-161813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:49:51.622 [DEBUG] [Thread-161813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:49:51.622 [DEBUG] [Thread-161813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:49:51.622 [DEBUG] [Thread-161813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:49:51.641 [INFO] [Thread-161813] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:49:51.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:49:51.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:49:52.627 [DEBUG] [Thread-161813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:49:52.627 [DEBUG] [Thread-161813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:49:52.675 [DEBUG] [Thread-161813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:49:52.675 [DEBUG] [Thread-161813] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:49:52.684 [DEBUG] [Thread-161813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:49:52.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:49:52.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:49:52.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:49:52.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:49:52.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:49:52.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:49:52.719 [DEBUG] [Thread-161813] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:49:53.387 [DEBUG] [Thread-161815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:50:02.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:50:02.719 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:50:02.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:50:03.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 49, 46), 14.02, 38.45, 0.0, 21.99, 14.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:50:03.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:49:46
2025-09-29T16:50:03.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:50:03.552 [DEBUG] [Thread-161816] [transport.py] [_log()] starting thread (client mode): 0x2e3771c0
2025-09-29T16:50:03.552 [DEBUG] [Thread-161816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:03.566 [DEBUG] [Thread-161816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:50:03.567 [INFO] [Thread-161816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:03.570 [DEBUG] [Thread-161816] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:03.571 [DEBUG] [Thread-161816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:03.571 [DEBUG] [Thread-161816] [transport.py] [_log()] Compression: none
2025-09-29T16:50:03.571 [DEBUG] [Thread-161816] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:03.584 [DEBUG] [Thread-161816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:03.585 [DEBUG] [Thread-161816] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:03.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:50:03.586 [DEBUG] [Thread-161816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:50:03.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:03.587 [DEBUG] [Thread-161816] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:03.587 [DEBUG] [Thread-161816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:03.587 [DEBUG] [Thread-161816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:03.587 [DEBUG] [Thread-161816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:50:03.587 [DEBUG] [Thread-161816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:03.600 [INFO] [Thread-161816] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:03.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:50:08.195 [DEBUG] [Thread-161816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:50:08.196 [DEBUG] [Thread-161816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:50:08.196 [DEBUG] [Thread-161816] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:50:08.236 [DEBUG] [Thread-161816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:50:08.236 [DEBUG] [Thread-161816] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:50:08.239 [DEBUG] [Thread-161816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:50:08.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:50:08.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:50:08.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:50:08.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:50:08.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:50:08.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:50:08.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:50:08.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:50:08.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:50:08.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.617774 -999.00  +14.70  14.88     43   +2.40 1 1 1 1 1   887    0 10.90 -41.21 ----- 15.7 14.9 130.0 21.4 19.1 -27.5 18.8 -26.6 20.4 -26.9 21.2 -28.8
2025-09-29T16:50:08.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:50:08.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:50:08.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.617774
2025-09-29T16:50:08.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:50:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:50:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:50:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:50:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:50:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:49:46', tmtdew=14.02, humidity=38.45, cloud=0.0, wind=21.99, temperature=14.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:49:35.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:50:08.347 [DEBUG] [Thread-161816] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:50:08.433 [DEBUG] [Thread-161819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:50:08.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:50:08.444 [DEBUG] [Thread-161820] [transport.py] [_log()] starting thread (client mode): 0x2e3def20
2025-09-29T16:50:08.444 [DEBUG] [Thread-161820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:08.459 [DEBUG] [Thread-161820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:50:08.459 [INFO] [Thread-161820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:08.467 [DEBUG] [Thread-161820] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:08.468 [DEBUG] [Thread-161820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:08.468 [DEBUG] [Thread-161820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:08.468 [DEBUG] [Thread-161820] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:08.468 [DEBUG] [Thread-161820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:08.468 [DEBUG] [Thread-161820] [transport.py] [_log()] Compression: none
2025-09-29T16:50:08.468 [DEBUG] [Thread-161820] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:08.528 [DEBUG] [Thread-161820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:08.529 [DEBUG] [Thread-161820] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:08.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:50:08.530 [DEBUG] [Thread-161820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:50:08.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:08.585 [DEBUG] [Thread-161820] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:08.586 [DEBUG] [Thread-161820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:08.586 [DEBUG] [Thread-161820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:08.586 [DEBUG] [Thread-161820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:50:08.586 [DEBUG] [Thread-161820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:08.605 [INFO] [Thread-161820] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:08.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:50:08.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:50:09.619 [DEBUG] [Thread-161820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:50:09.619 [DEBUG] [Thread-161820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:50:09.667 [DEBUG] [Thread-161820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:50:09.667 [DEBUG] [Thread-161820] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:50:09.675 [DEBUG] [Thread-161820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:50:09.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:50:09.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:50:09.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:50:09.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:50:09.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:50:09.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:50:09.706 [DEBUG] [Thread-161820] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:50:19.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:50:19.708 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:50:19.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:50:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 49, 46), 14.02, 38.45, 0.0, 21.99, 14.44, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:50:20.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:49:46
2025-09-29T16:50:20.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:50:20.575 [DEBUG] [Thread-161822] [transport.py] [_log()] starting thread (client mode): 0x2b96b310
2025-09-29T16:50:20.575 [DEBUG] [Thread-161822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:20.595 [DEBUG] [Thread-161822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:50:20.595 [INFO] [Thread-161822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:50:20.598 [DEBUG] [Thread-161822] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:20.598 [DEBUG] [Thread-161822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:50:20.598 [DEBUG] [Thread-161822] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:20.598 [DEBUG] [Thread-161822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:20.598 [DEBUG] [Thread-161822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] Compression: none
2025-09-29T16:50:20.599 [DEBUG] [Thread-161822] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:20.616 [DEBUG] [Thread-161822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:20.617 [DEBUG] [Thread-161822] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:20.617 [DEBUG] [Thread-161822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:50:20.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:50:20.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:20.661 [DEBUG] [Thread-161822] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:20.661 [DEBUG] [Thread-161822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:20.661 [DEBUG] [Thread-161822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:20.661 [DEBUG] [Thread-161822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:50:20.661 [DEBUG] [Thread-161822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:20.692 [INFO] [Thread-161822] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:20.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:50:21.271 [DEBUG] [Thread-161822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:50:21.272 [DEBUG] [Thread-161822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:50:21.272 [DEBUG] [Thread-161822] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:50:21.312 [DEBUG] [Thread-161822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:50:21.313 [DEBUG] [Thread-161822] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:50:21.315 [DEBUG] [Thread-161822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:50:21.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:50:21.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:50:21.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:50:21.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:50:21.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:50:21.338 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:50:21.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:50:21.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:50:21.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:50:21.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.618121 -999.00  +14.80  11.43     43   +2.50 1 1 1 1 1   887    0 11.12 -41.18 ----- 13.3 11.4 141.4 18.9 19.1 -27.6 18.9 -27.0 20.6 -27.1 21.3 -28.1
2025-09-29T16:50:21.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:50:21.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:50:21.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.618121
2025-09-29T16:50:21.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:50:21.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:50:21.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:50:21.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:50:21.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:50:21.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:49:46', tmtdew=14.02, humidity=38.45, cloud=0.0, wind=21.99, temperature=14.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:50:05.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:50:21.340 [DEBUG] [Thread-161822] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:50:21.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:50:21.438 [DEBUG] [Thread-161825] [transport.py] [_log()] starting thread (client mode): 0x2b969d20
2025-09-29T16:50:21.438 [DEBUG] [Thread-161825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:21.452 [DEBUG] [Thread-161825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:50:21.452 [INFO] [Thread-161825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:21.460 [DEBUG] [Thread-161825] [transport.py] [_log()] Compression: none
2025-09-29T16:50:21.461 [DEBUG] [Thread-161825] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:21.517 [DEBUG] [Thread-161825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:21.518 [DEBUG] [Thread-161825] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:21.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:50:21.519 [DEBUG] [Thread-161825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:50:21.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:21.574 [DEBUG] [Thread-161825] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:21.574 [DEBUG] [Thread-161825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:21.574 [DEBUG] [Thread-161825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:21.574 [DEBUG] [Thread-161825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:50:21.574 [DEBUG] [Thread-161825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:21.593 [INFO] [Thread-161825] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:21.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:50:21.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:50:22.561 [DEBUG] [Thread-161825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:50:22.561 [DEBUG] [Thread-161825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:50:22.609 [DEBUG] [Thread-161825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:50:22.609 [DEBUG] [Thread-161825] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:50:22.618 [DEBUG] [Thread-161825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:50:22.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:50:22.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:50:22.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:50:22.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:50:22.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:50:22.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:50:22.652 [DEBUG] [Thread-161825] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:50:23.458 [DEBUG] [Thread-161827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:50:24.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:50:24.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:50:32.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:50:32.655 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:50:32.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:50:33.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 50, 18), 14.03, 38.43, 0.0, 20.1, 14.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:50:33.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:50:18
2025-09-29T16:50:33.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:50:33.487 [DEBUG] [Thread-161828] [transport.py] [_log()] starting thread (client mode): 0x2b94de70
2025-09-29T16:50:33.488 [DEBUG] [Thread-161828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:33.508 [DEBUG] [Thread-161828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:50:33.508 [INFO] [Thread-161828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:50:33.512 [DEBUG] [Thread-161828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:33.512 [DEBUG] [Thread-161828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:50:33.512 [DEBUG] [Thread-161828] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:33.512 [DEBUG] [Thread-161828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] Compression: none
2025-09-29T16:50:33.513 [DEBUG] [Thread-161828] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:33.529 [DEBUG] [Thread-161828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:33.529 [DEBUG] [Thread-161828] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:33.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:50:33.530 [DEBUG] [Thread-161828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:50:33.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:33.532 [DEBUG] [Thread-161828] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:33.532 [DEBUG] [Thread-161828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:33.532 [DEBUG] [Thread-161828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:33.532 [DEBUG] [Thread-161828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:50:33.533 [DEBUG] [Thread-161828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:33.556 [INFO] [Thread-161828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:33.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:50:34.314 [DEBUG] [Thread-161828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:50:34.315 [DEBUG] [Thread-161828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:50:34.315 [DEBUG] [Thread-161828] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:50:34.355 [DEBUG] [Thread-161828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:50:34.356 [DEBUG] [Thread-161828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:50:34.359 [DEBUG] [Thread-161828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:50:34.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:50:34.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:50:34.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:50:34.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:50:34.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:50:34.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:50:34.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:50:34.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:50:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:50:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.618121 -999.00  +14.80  11.43     43   +2.50 1 1 1 1 1   887    0 11.12 -41.18 ----- 13.3 11.4 141.4 18.9 19.1 -27.6 18.9 -27.0 20.6 -27.1 21.3 -28.1
2025-09-29T16:50:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:50:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:50:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.618121
2025-09-29T16:50:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:50:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:50:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:50:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:50:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:50:34.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:50:18', tmtdew=14.03, humidity=38.43, cloud=0.0, wind=20.1, temperature=14.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:50:05.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:50:34.385 [DEBUG] [Thread-161828] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:50:34.471 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:50:34.481 [DEBUG] [Thread-161831] [transport.py] [_log()] starting thread (client mode): 0x2e3c37f0
2025-09-29T16:50:34.482 [DEBUG] [Thread-161831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:34.496 [DEBUG] [Thread-161831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:50:34.497 [INFO] [Thread-161831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:50:34.504 [DEBUG] [Thread-161831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:34.504 [DEBUG] [Thread-161831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:50:34.504 [DEBUG] [Thread-161831] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:34.505 [DEBUG] [Thread-161831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:34.506 [DEBUG] [Thread-161831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:34.506 [DEBUG] [Thread-161831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:34.506 [DEBUG] [Thread-161831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:34.506 [DEBUG] [Thread-161831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:34.506 [DEBUG] [Thread-161831] [transport.py] [_log()] Compression: none
2025-09-29T16:50:34.506 [DEBUG] [Thread-161831] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:34.566 [DEBUG] [Thread-161831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:34.566 [DEBUG] [Thread-161831] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:34.567 [DEBUG] [Thread-161831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:50:34.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:50:34.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:34.622 [DEBUG] [Thread-161831] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:34.622 [DEBUG] [Thread-161831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:34.622 [DEBUG] [Thread-161831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:34.622 [DEBUG] [Thread-161831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:50:34.623 [DEBUG] [Thread-161831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:34.642 [INFO] [Thread-161831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:34.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:50:34.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:50:35.582 [DEBUG] [Thread-161831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:50:35.582 [DEBUG] [Thread-161831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:50:35.630 [DEBUG] [Thread-161831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:50:35.630 [DEBUG] [Thread-161831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:50:35.639 [DEBUG] [Thread-161831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:50:35.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:50:35.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:50:35.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:50:35.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:50:35.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:50:35.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:50:35.674 [DEBUG] [Thread-161831] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:50:38.499 [DEBUG] [Thread-161833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:50:45.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:50:45.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:50:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:50:46.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 50, 18), 14.03, 38.43, 0.0, 20.1, 14.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:50:46.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:50:18
2025-09-29T16:50:46.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:50:46.516 [DEBUG] [Thread-161834] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-29T16:50:46.516 [DEBUG] [Thread-161834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:46.537 [DEBUG] [Thread-161834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:50:46.537 [INFO] [Thread-161834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:50:46.540 [DEBUG] [Thread-161834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:46.540 [DEBUG] [Thread-161834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:50:46.540 [DEBUG] [Thread-161834] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:46.540 [DEBUG] [Thread-161834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] Compression: none
2025-09-29T16:50:46.541 [DEBUG] [Thread-161834] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:46.560 [DEBUG] [Thread-161834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:46.560 [DEBUG] [Thread-161834] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:46.561 [DEBUG] [Thread-161834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:50:46.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:50:46.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:46.563 [DEBUG] [Thread-161834] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:46.563 [DEBUG] [Thread-161834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:46.563 [DEBUG] [Thread-161834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:46.563 [DEBUG] [Thread-161834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:50:46.563 [DEBUG] [Thread-161834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:46.587 [INFO] [Thread-161834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:46.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:50:47.332 [DEBUG] [Thread-161834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:50:47.332 [DEBUG] [Thread-161834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:50:47.332 [DEBUG] [Thread-161834] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:50:47.373 [DEBUG] [Thread-161834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:50:47.373 [DEBUG] [Thread-161834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:50:47.375 [DEBUG] [Thread-161834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:50:47.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:50:47.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:50:47.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:50:47.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:50:47.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:50:47.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:50:47.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:50:47.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.618121 -999.00  +14.80  11.43     43   +2.50 1 1 1 1 1   887    0 11.12 -41.18 ----- 13.3 11.4 141.4 18.9 19.1 -27.6 18.9 -27.0 20.6 -27.1 21.3 -28.1
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.618121
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:50:47.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:50:18', tmtdew=14.03, humidity=38.43, cloud=0.0, wind=20.1, temperature=14.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:50:05.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:50:47.393 [DEBUG] [Thread-161834] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:50:47.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:50:47.480 [DEBUG] [Thread-161837] [transport.py] [_log()] starting thread (client mode): 0x2e38f190
2025-09-29T16:50:47.480 [DEBUG] [Thread-161837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:47.495 [DEBUG] [Thread-161837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:50:47.495 [INFO] [Thread-161837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:47.503 [DEBUG] [Thread-161837] [transport.py] [_log()] Compression: none
2025-09-29T16:50:47.504 [DEBUG] [Thread-161837] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:47.562 [DEBUG] [Thread-161837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:47.562 [DEBUG] [Thread-161837] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:47.563 [DEBUG] [Thread-161837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:50:47.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:50:47.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:47.618 [DEBUG] [Thread-161837] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:47.618 [DEBUG] [Thread-161837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:47.618 [DEBUG] [Thread-161837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:47.618 [DEBUG] [Thread-161837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:50:47.618 [DEBUG] [Thread-161837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:47.636 [INFO] [Thread-161837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:47.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:50:47.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:50:48.596 [DEBUG] [Thread-161837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:50:48.596 [DEBUG] [Thread-161837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:50:48.644 [DEBUG] [Thread-161837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:50:48.644 [DEBUG] [Thread-161837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:50:48.653 [DEBUG] [Thread-161837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:50:48.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:50:48.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:50:48.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:50:48.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:50:48.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:50:48.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:50:48.687 [DEBUG] [Thread-161837] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:50:49.328 [DEBUG] [Thread-161839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:50:53.542 [DEBUG] [Thread-161840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:50:58.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:50:58.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:50:58.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:50:59.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 50, 50), 14.0, 38.6, 0.0, 19.76, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:50:59.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:50:50
2025-09-29T16:50:59.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:50:59.521 [DEBUG] [Thread-161841] [transport.py] [_log()] starting thread (client mode): 0x2e38ead0
2025-09-29T16:50:59.521 [DEBUG] [Thread-161841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:50:59.542 [DEBUG] [Thread-161841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:50:59.542 [INFO] [Thread-161841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] client lang: <none>
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] server lang: <none>
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] kex follows: False
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] Compression: none
2025-09-29T16:50:59.545 [DEBUG] [Thread-161841] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:50:59.562 [DEBUG] [Thread-161841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:50:59.562 [DEBUG] [Thread-161841] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:50:59.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:50:59.563 [DEBUG] [Thread-161841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:50:59.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:50:59.565 [DEBUG] [Thread-161841] [transport.py] [_log()] userauth is OK
2025-09-29T16:50:59.565 [DEBUG] [Thread-161841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:50:59.566 [DEBUG] [Thread-161841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:50:59.566 [DEBUG] [Thread-161841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:50:59.566 [DEBUG] [Thread-161841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:50:59.580 [INFO] [Thread-161841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:50:59.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:00.165 [DEBUG] [Thread-161841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:00.165 [DEBUG] [Thread-161841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:00.166 [DEBUG] [Thread-161841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:51:00.206 [DEBUG] [Thread-161841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:00.206 [DEBUG] [Thread-161841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:00.208 [DEBUG] [Thread-161841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:00.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:00.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:51:00.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:51:00.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:51:00.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:00.228 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:51:00.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:00.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:51:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.618469 -999.00  +14.60  13.13     43   +2.30 1 1 1 1 1   887    0 11.10 -38.27 ----- 12.7 13.1 142.6 19.2 19.2 -27.8 18.9 -26.9 20.6 -27.9 21.2 -29.2
2025-09-29T16:51:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:51:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:51:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.618469
2025-09-29T16:51:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:51:00.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:51:00.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:51:00.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:51:00.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:51:00.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:50:50', tmtdew=14.0, humidity=38.6, cloud=0.0, wind=19.76, temperature=14.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:50:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:51:00.231 [DEBUG] [Thread-161841] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:00.315 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:51:00.324 [DEBUG] [Thread-161844] [transport.py] [_log()] starting thread (client mode): 0x2e3c1480
2025-09-29T16:51:00.325 [DEBUG] [Thread-161844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:00.339 [DEBUG] [Thread-161844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:51:00.340 [INFO] [Thread-161844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:51:00.348 [DEBUG] [Thread-161844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:00.348 [DEBUG] [Thread-161844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:51:00.348 [DEBUG] [Thread-161844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] Compression: none
2025-09-29T16:51:00.349 [DEBUG] [Thread-161844] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:00.407 [DEBUG] [Thread-161844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:00.408 [DEBUG] [Thread-161844] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:00.409 [DEBUG] [Thread-161844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:51:00.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:51:00.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:00.467 [DEBUG] [Thread-161844] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:00.468 [DEBUG] [Thread-161844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:00.468 [DEBUG] [Thread-161844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:00.468 [DEBUG] [Thread-161844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:51:00.468 [DEBUG] [Thread-161844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:00.487 [INFO] [Thread-161844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:00.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:51:00.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:01.486 [DEBUG] [Thread-161844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:01.487 [DEBUG] [Thread-161844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:01.534 [DEBUG] [Thread-161844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:01.534 [DEBUG] [Thread-161844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:01.543 [DEBUG] [Thread-161844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:01.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:01.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:51:01.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:51:01.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:01.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:01.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:01.578 [DEBUG] [Thread-161844] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:08.568 [DEBUG] [Thread-161846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:51:11.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:51:11.577 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:51:11.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:51:12.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 50, 50), 14.0, 38.6, 0.0, 19.76, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:51:12.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:50:50
2025-09-29T16:51:12.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:51:12.399 [DEBUG] [Thread-161847] [transport.py] [_log()] starting thread (client mode): 0x2e34bf70
2025-09-29T16:51:12.399 [DEBUG] [Thread-161847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:12.413 [DEBUG] [Thread-161847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:51:12.413 [INFO] [Thread-161847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:51:12.416 [DEBUG] [Thread-161847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] Compression: none
2025-09-29T16:51:12.417 [DEBUG] [Thread-161847] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:12.433 [DEBUG] [Thread-161847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:12.433 [DEBUG] [Thread-161847] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:12.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:51:12.434 [DEBUG] [Thread-161847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:51:12.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:12.436 [DEBUG] [Thread-161847] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:12.436 [DEBUG] [Thread-161847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:12.436 [DEBUG] [Thread-161847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:12.436 [DEBUG] [Thread-161847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:51:12.436 [DEBUG] [Thread-161847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:12.454 [INFO] [Thread-161847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:12.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:13.203 [DEBUG] [Thread-161847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:13.204 [DEBUG] [Thread-161847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:13.204 [DEBUG] [Thread-161847] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:51:13.244 [DEBUG] [Thread-161847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:13.244 [DEBUG] [Thread-161847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:13.247 [DEBUG] [Thread-161847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:13.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:13.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:51:13.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:51:13.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:51:13.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:13.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:51:13.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:13.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:13.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:51:13.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.618469 -999.00  +14.60  13.13     43   +2.30 1 1 1 1 1   887    0 11.10 -38.27 ----- 12.7 13.1 142.6 19.2 19.2 -27.8 18.9 -26.9 20.6 -27.9 21.2 -29.2
2025-09-29T16:51:13.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:51:13.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:51:13.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.618469
2025-09-29T16:51:13.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:51:13.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:51:13.273 [DEBUG] [Thread-161847] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:13.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:51:13.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:51:13.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:51:13.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:50:50', tmtdew=14.0, humidity=38.6, cloud=0.0, wind=19.76, temperature=14.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:50:35.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:51:13.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:51:13.366 [DEBUG] [Thread-161850] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-29T16:51:13.366 [DEBUG] [Thread-161850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:13.383 [DEBUG] [Thread-161850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:51:13.383 [INFO] [Thread-161850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:51:13.391 [DEBUG] [Thread-161850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:13.391 [DEBUG] [Thread-161850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:51:13.391 [DEBUG] [Thread-161850] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:13.391 [DEBUG] [Thread-161850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:13.391 [DEBUG] [Thread-161850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:13.391 [DEBUG] [Thread-161850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] Compression: none
2025-09-29T16:51:13.392 [DEBUG] [Thread-161850] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:13.450 [DEBUG] [Thread-161850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:13.451 [DEBUG] [Thread-161850] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:13.451 [DEBUG] [Thread-161850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:51:13.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:51:13.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:13.507 [DEBUG] [Thread-161850] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:13.507 [DEBUG] [Thread-161850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:13.507 [DEBUG] [Thread-161850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:13.507 [DEBUG] [Thread-161850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:51:13.507 [DEBUG] [Thread-161850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:13.529 [INFO] [Thread-161850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:13.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:51:13.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:14.541 [DEBUG] [Thread-161850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:14.541 [DEBUG] [Thread-161850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:14.589 [DEBUG] [Thread-161850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:14.589 [DEBUG] [Thread-161850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:14.597 [DEBUG] [Thread-161850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:14.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:14.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:51:14.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:51:14.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:14.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:14.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:14.630 [DEBUG] [Thread-161850] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:23.613 [DEBUG] [Thread-161852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:51:24.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:51:24.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:51:24.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:51:24.633 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:51:24.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:51:25.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 50, 50), 14.0, 38.6, 0.0, 19.76, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:51:25.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:50:50
2025-09-29T16:51:25.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:51:25.471 [DEBUG] [Thread-161853] [transport.py] [_log()] starting thread (client mode): 0x2b94d5d0
2025-09-29T16:51:25.471 [DEBUG] [Thread-161853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:25.491 [DEBUG] [Thread-161853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:51:25.491 [INFO] [Thread-161853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:51:25.494 [DEBUG] [Thread-161853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] Compression: none
2025-09-29T16:51:25.495 [DEBUG] [Thread-161853] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:25.508 [DEBUG] [Thread-161853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:25.509 [DEBUG] [Thread-161853] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:25.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:51:25.510 [DEBUG] [Thread-161853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:51:25.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:25.512 [DEBUG] [Thread-161853] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:25.512 [DEBUG] [Thread-161853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:25.512 [DEBUG] [Thread-161853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:25.512 [DEBUG] [Thread-161853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:51:25.512 [DEBUG] [Thread-161853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:25.530 [INFO] [Thread-161853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:25.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:26.108 [DEBUG] [Thread-161853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:26.108 [DEBUG] [Thread-161853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:26.109 [DEBUG] [Thread-161853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:51:26.149 [DEBUG] [Thread-161853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:26.149 [DEBUG] [Thread-161853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:26.151 [DEBUG] [Thread-161853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:26.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:26.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:51:26.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:51:26.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:51:26.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:26.173 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:51:26.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:26.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:51:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.618816 -999.00  +14.70  19.38     43   +2.50 1 1 1 1 1   887    0 11.15 -38.36 ----- 16.9 19.4 158.0 23.4 19.2 -28.2 19.0 -26.7 20.7 -26.5 21.3 -29.6
2025-09-29T16:51:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:51:26.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:51:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.618816
2025-09-29T16:51:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:51:26.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:51:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:51:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:51:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:51:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:50:50', tmtdew=14.0, humidity=38.6, cloud=0.0, wind=19.76, temperature=14.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:51:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:51:26.175 [DEBUG] [Thread-161853] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:26.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:51:26.270 [DEBUG] [Thread-161856] [transport.py] [_log()] starting thread (client mode): 0x2e3de920
2025-09-29T16:51:26.270 [DEBUG] [Thread-161856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:26.285 [DEBUG] [Thread-161856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:51:26.286 [INFO] [Thread-161856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:51:26.293 [DEBUG] [Thread-161856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:26.293 [DEBUG] [Thread-161856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:51:26.293 [DEBUG] [Thread-161856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] Compression: none
2025-09-29T16:51:26.294 [DEBUG] [Thread-161856] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:26.350 [DEBUG] [Thread-161856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:26.351 [DEBUG] [Thread-161856] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:26.351 [DEBUG] [Thread-161856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:51:26.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:51:26.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:26.406 [DEBUG] [Thread-161856] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:26.406 [DEBUG] [Thread-161856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:26.406 [DEBUG] [Thread-161856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:26.406 [DEBUG] [Thread-161856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:51:26.406 [DEBUG] [Thread-161856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:26.420 [INFO] [Thread-161856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:26.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:51:26.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:27.389 [DEBUG] [Thread-161856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:27.389 [DEBUG] [Thread-161856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:27.437 [DEBUG] [Thread-161856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:27.437 [DEBUG] [Thread-161856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:27.445 [DEBUG] [Thread-161856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:27.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:27.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:51:27.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:51:27.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:27.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:27.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:27.476 [DEBUG] [Thread-161856] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:37.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:51:37.479 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:51:37.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:51:38.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 51, 22), 13.96, 38.73, 0.0, 18.63, 14.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:51:38.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:51:22
2025-09-29T16:51:38.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:51:38.307 [DEBUG] [Thread-161858] [transport.py] [_log()] starting thread (client mode): 0x2e348520
2025-09-29T16:51:38.308 [DEBUG] [Thread-161858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:38.327 [DEBUG] [Thread-161858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:51:38.328 [INFO] [Thread-161858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] Compression: none
2025-09-29T16:51:38.331 [DEBUG] [Thread-161858] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:38.351 [DEBUG] [Thread-161858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:38.351 [DEBUG] [Thread-161858] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:38.352 [DEBUG] [Thread-161858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:51:38.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:51:38.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:38.354 [DEBUG] [Thread-161858] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:38.354 [DEBUG] [Thread-161858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:38.354 [DEBUG] [Thread-161858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:38.354 [DEBUG] [Thread-161858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:51:38.354 [DEBUG] [Thread-161858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:38.391 [INFO] [Thread-161858] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:38.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:38.641 [DEBUG] [Thread-161860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:51:39.118 [DEBUG] [Thread-161858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:39.118 [DEBUG] [Thread-161858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:39.118 [DEBUG] [Thread-161858] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:51:39.159 [DEBUG] [Thread-161858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:39.160 [DEBUG] [Thread-161858] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:39.163 [DEBUG] [Thread-161858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:39.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:39.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:51:39.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:51:39.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:51:39.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:39.187 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:51:39.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:39.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:39.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:51:39.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.618816 -999.00  +14.70  19.38     43   +2.50 1 1 1 1 1   887    0 11.15 -38.36 ----- 16.9 19.4 158.0 23.4 19.2 -28.2 19.0 -26.7 20.7 -26.5 21.3 -29.6
2025-09-29T16:51:39.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:51:39.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:51:39.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.618816
2025-09-29T16:51:39.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:51:39.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:51:39.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:51:39.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:51:39.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:51:39.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:51:22', tmtdew=13.96, humidity=38.73, cloud=0.0, wind=18.63, temperature=14.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:51:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:51:39.190 [DEBUG] [Thread-161858] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:39.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:51:39.289 [DEBUG] [Thread-161862] [transport.py] [_log()] starting thread (client mode): 0x2b9cf7c0
2025-09-29T16:51:39.289 [DEBUG] [Thread-161862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:39.306 [DEBUG] [Thread-161862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:51:39.306 [INFO] [Thread-161862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:51:39.313 [DEBUG] [Thread-161862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:39.314 [DEBUG] [Thread-161862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:51:39.314 [DEBUG] [Thread-161862] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:39.314 [DEBUG] [Thread-161862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:39.314 [DEBUG] [Thread-161862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:39.314 [DEBUG] [Thread-161862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:39.314 [DEBUG] [Thread-161862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:39.315 [DEBUG] [Thread-161862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:39.316 [DEBUG] [Thread-161862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:39.316 [DEBUG] [Thread-161862] [transport.py] [_log()] Compression: none
2025-09-29T16:51:39.316 [DEBUG] [Thread-161862] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:39.370 [DEBUG] [Thread-161862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:39.371 [DEBUG] [Thread-161862] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:39.371 [DEBUG] [Thread-161862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:51:39.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:51:39.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:39.427 [DEBUG] [Thread-161862] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:39.428 [DEBUG] [Thread-161862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:39.428 [DEBUG] [Thread-161862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:39.428 [DEBUG] [Thread-161862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:51:39.428 [DEBUG] [Thread-161862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:39.447 [INFO] [Thread-161862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:39.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:51:39.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:40.399 [DEBUG] [Thread-161862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:40.399 [DEBUG] [Thread-161862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:40.447 [DEBUG] [Thread-161862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:40.447 [DEBUG] [Thread-161862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:40.456 [DEBUG] [Thread-161862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:40.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:40.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:51:40.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:51:40.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:40.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:40.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:40.491 [DEBUG] [Thread-161862] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:49.362 [DEBUG] [Thread-161864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:51:50.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:51:50.494 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:51:50.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:51:51.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 51, 22), 13.96, 38.73, 0.0, 18.63, 14.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:51:51.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:51:22
2025-09-29T16:51:51.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:51:51.322 [DEBUG] [Thread-161865] [transport.py] [_log()] starting thread (client mode): 0x2e34bbe0
2025-09-29T16:51:51.323 [DEBUG] [Thread-161865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:51.343 [DEBUG] [Thread-161865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:51:51.343 [INFO] [Thread-161865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:51:51.346 [DEBUG] [Thread-161865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:51.346 [DEBUG] [Thread-161865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:51:51.346 [DEBUG] [Thread-161865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:51.347 [DEBUG] [Thread-161865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:51.348 [DEBUG] [Thread-161865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:51.348 [DEBUG] [Thread-161865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:51.348 [DEBUG] [Thread-161865] [transport.py] [_log()] Compression: none
2025-09-29T16:51:51.348 [DEBUG] [Thread-161865] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:51.364 [DEBUG] [Thread-161865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:51.365 [DEBUG] [Thread-161865] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:51.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:51:51.366 [DEBUG] [Thread-161865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:51:51.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:51.368 [DEBUG] [Thread-161865] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:51.368 [DEBUG] [Thread-161865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:51.368 [DEBUG] [Thread-161865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:51.368 [DEBUG] [Thread-161865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:51:51.368 [DEBUG] [Thread-161865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:51.383 [INFO] [Thread-161865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:51.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:52.177 [DEBUG] [Thread-161865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:52.177 [DEBUG] [Thread-161865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:52.178 [DEBUG] [Thread-161865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:51:52.218 [DEBUG] [Thread-161865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:52.218 [DEBUG] [Thread-161865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:52.220 [DEBUG] [Thread-161865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:52.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:52.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:51:52.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:51:52.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:51:52.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:52.238 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:51:52.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:52.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:52.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:51:52.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.618816 -999.00  +14.70  19.38     43   +2.50 1 1 1 1 1   887    0 11.15 -38.36 ----- 16.9 19.4 158.0 23.4 19.2 -28.2 19.0 -26.7 20.7 -26.5 21.3 -29.6
2025-09-29T16:51:52.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:51:52.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:51:52.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.618816
2025-09-29T16:51:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:51:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:51:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:51:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:51:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:51:52.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:51:22', tmtdew=13.96, humidity=38.73, cloud=0.0, wind=18.63, temperature=14.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:51:05.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:51:52.241 [DEBUG] [Thread-161865] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:52.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:51:52.335 [DEBUG] [Thread-161868] [transport.py] [_log()] starting thread (client mode): 0x2e3495d0
2025-09-29T16:51:52.335 [DEBUG] [Thread-161868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:51:52.350 [DEBUG] [Thread-161868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:51:52.350 [INFO] [Thread-161868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:51:52.357 [DEBUG] [Thread-161868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] client lang: <none>
2025-09-29T16:51:52.358 [DEBUG] [Thread-161868] [transport.py] [_log()] server lang: <none>
2025-09-29T16:51:52.359 [DEBUG] [Thread-161868] [transport.py] [_log()] kex follows: False
2025-09-29T16:51:52.359 [DEBUG] [Thread-161868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:51:52.359 [DEBUG] [Thread-161868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:51:52.359 [DEBUG] [Thread-161868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:51:52.359 [DEBUG] [Thread-161868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:51:52.359 [DEBUG] [Thread-161868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:51:52.359 [DEBUG] [Thread-161868] [transport.py] [_log()] Compression: none
2025-09-29T16:51:52.359 [DEBUG] [Thread-161868] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:51:52.416 [DEBUG] [Thread-161868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:51:52.416 [DEBUG] [Thread-161868] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:51:52.417 [DEBUG] [Thread-161868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:51:52.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:51:52.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:51:52.471 [DEBUG] [Thread-161868] [transport.py] [_log()] userauth is OK
2025-09-29T16:51:52.472 [DEBUG] [Thread-161868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:51:52.472 [DEBUG] [Thread-161868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:51:52.472 [DEBUG] [Thread-161868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:51:52.472 [DEBUG] [Thread-161868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:51:52.493 [INFO] [Thread-161868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:51:52.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:51:52.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:51:53.478 [DEBUG] [Thread-161868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:51:53.478 [DEBUG] [Thread-161868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:51:53.526 [DEBUG] [Thread-161868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:51:53.526 [DEBUG] [Thread-161868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:51:53.534 [DEBUG] [Thread-161868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:51:53.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:51:53.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:51:53.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:51:53.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:51:53.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:51:53.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:51:53.566 [DEBUG] [Thread-161868] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:51:53.687 [DEBUG] [Thread-161870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:52:03.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:52:03.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:52:03.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:52:04.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 51, 54), 14.21, 38.02, 0.0, 22.46, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:52:04.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:51:54
2025-09-29T16:52:04.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:52:04.451 [DEBUG] [Thread-161871] [transport.py] [_log()] starting thread (client mode): 0x2e34baf0
2025-09-29T16:52:04.451 [DEBUG] [Thread-161871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:04.470 [DEBUG] [Thread-161871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:52:04.470 [INFO] [Thread-161871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:52:04.473 [DEBUG] [Thread-161871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] Compression: none
2025-09-29T16:52:04.474 [DEBUG] [Thread-161871] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:04.489 [DEBUG] [Thread-161871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:04.489 [DEBUG] [Thread-161871] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:04.489 [DEBUG] [Thread-161871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:52:04.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:52:04.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:04.490 [DEBUG] [Thread-161871] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:04.490 [DEBUG] [Thread-161871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:04.490 [DEBUG] [Thread-161871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:04.490 [DEBUG] [Thread-161871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:52:04.490 [DEBUG] [Thread-161871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:04.510 [INFO] [Thread-161871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:04.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:05.145 [DEBUG] [Thread-161871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:05.145 [DEBUG] [Thread-161871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:05.145 [DEBUG] [Thread-161871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:52:05.186 [DEBUG] [Thread-161871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:05.186 [DEBUG] [Thread-161871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:05.190 [DEBUG] [Thread-161871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:05.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:05.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:52:05.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:52:05.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:52:05.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:05.207 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:52:05.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.619163 -999.00  +14.60  14.08     43   +2.40 1 1 1 1 1   887    0 11.20 -35.74 ----- 17.2 14.1 158.1 22.8 19.1 -28.4 18.9 -28.5 20.6 -27.6 21.3 -28.9
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.619163
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:52:05.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:51:54', tmtdew=14.21, humidity=38.02, cloud=0.0, wind=22.46, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:51:35.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:52:05.208 [DEBUG] [Thread-161871] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:05.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:52:05.293 [DEBUG] [Thread-161874] [transport.py] [_log()] starting thread (client mode): 0x2e3f8a00
2025-09-29T16:52:05.293 [DEBUG] [Thread-161874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:05.308 [DEBUG] [Thread-161874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:52:05.308 [INFO] [Thread-161874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:05.315 [DEBUG] [Thread-161874] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:05.316 [DEBUG] [Thread-161874] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:05.316 [DEBUG] [Thread-161874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:05.316 [DEBUG] [Thread-161874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:05.316 [DEBUG] [Thread-161874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:05.316 [DEBUG] [Thread-161874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:05.316 [DEBUG] [Thread-161874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:05.316 [DEBUG] [Thread-161874] [transport.py] [_log()] Compression: none
2025-09-29T16:52:05.316 [DEBUG] [Thread-161874] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:05.370 [DEBUG] [Thread-161874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:05.370 [DEBUG] [Thread-161874] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:05.370 [DEBUG] [Thread-161874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:52:05.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:52:05.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:05.427 [DEBUG] [Thread-161874] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:05.427 [DEBUG] [Thread-161874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:05.427 [DEBUG] [Thread-161874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:05.427 [DEBUG] [Thread-161874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:52:05.427 [DEBUG] [Thread-161874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:05.441 [INFO] [Thread-161874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:05.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:52:05.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:06.418 [DEBUG] [Thread-161874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:06.418 [DEBUG] [Thread-161874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:06.466 [DEBUG] [Thread-161874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:06.466 [DEBUG] [Thread-161874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:06.474 [DEBUG] [Thread-161874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:06.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:06.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:52:06.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:52:06.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:06.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:06.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:06.505 [DEBUG] [Thread-161874] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:08.739 [DEBUG] [Thread-161876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:52:16.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:52:16.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:52:16.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:52:17.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 51, 54), 14.21, 38.02, 0.0, 22.46, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:52:17.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:51:54
2025-09-29T16:52:17.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:52:17.340 [DEBUG] [Thread-161877] [transport.py] [_log()] starting thread (client mode): 0x2e34b850
2025-09-29T16:52:17.340 [DEBUG] [Thread-161877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:17.360 [DEBUG] [Thread-161877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:52:17.360 [INFO] [Thread-161877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:17.363 [DEBUG] [Thread-161877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:17.364 [DEBUG] [Thread-161877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:17.364 [DEBUG] [Thread-161877] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:17.364 [DEBUG] [Thread-161877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:17.364 [DEBUG] [Thread-161877] [transport.py] [_log()] Compression: none
2025-09-29T16:52:17.364 [DEBUG] [Thread-161877] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:17.380 [DEBUG] [Thread-161877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:17.381 [DEBUG] [Thread-161877] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:17.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:52:17.382 [DEBUG] [Thread-161877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:52:17.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:17.384 [DEBUG] [Thread-161877] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:17.384 [DEBUG] [Thread-161877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:17.385 [DEBUG] [Thread-161877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:17.385 [DEBUG] [Thread-161877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:52:17.385 [DEBUG] [Thread-161877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:17.408 [INFO] [Thread-161877] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:17.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:18.209 [DEBUG] [Thread-161877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:18.209 [DEBUG] [Thread-161877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:18.210 [DEBUG] [Thread-161877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:52:18.250 [DEBUG] [Thread-161877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:18.251 [DEBUG] [Thread-161877] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:18.253 [DEBUG] [Thread-161877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:18.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:18.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:52:18.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:52:18.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:52:18.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:18.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:52:18.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:18.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:18.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:52:18.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.619163 -999.00  +14.60  14.08     43   +2.40 1 1 1 1 1   887    0 11.20 -35.74 ----- 17.2 14.1 158.1 22.8 19.1 -28.4 18.9 -28.5 20.6 -27.6 21.3 -28.9
2025-09-29T16:52:18.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:52:18.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:52:18.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.619163
2025-09-29T16:52:18.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:52:18.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:52:18.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:52:18.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:52:18.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:52:18.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:51:54', tmtdew=14.21, humidity=38.02, cloud=0.0, wind=22.46, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:51:35.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:52:18.279 [DEBUG] [Thread-161877] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:18.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:52:18.375 [DEBUG] [Thread-161880] [transport.py] [_log()] starting thread (client mode): 0x2e349e40
2025-09-29T16:52:18.375 [DEBUG] [Thread-161880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:18.390 [DEBUG] [Thread-161880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:52:18.390 [INFO] [Thread-161880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:52:18.398 [DEBUG] [Thread-161880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:18.398 [DEBUG] [Thread-161880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] Compression: none
2025-09-29T16:52:18.399 [DEBUG] [Thread-161880] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:18.456 [DEBUG] [Thread-161880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:18.456 [DEBUG] [Thread-161880] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:18.457 [DEBUG] [Thread-161880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:52:18.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:52:18.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:18.512 [DEBUG] [Thread-161880] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:18.512 [DEBUG] [Thread-161880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:18.512 [DEBUG] [Thread-161880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:18.513 [DEBUG] [Thread-161880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:52:18.513 [DEBUG] [Thread-161880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:18.532 [INFO] [Thread-161880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:18.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:52:18.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:20.232 [DEBUG] [Thread-161880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:20.232 [DEBUG] [Thread-161880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:20.282 [DEBUG] [Thread-161880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:20.282 [DEBUG] [Thread-161880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:20.293 [DEBUG] [Thread-161880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:20.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:20.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:52:20.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:52:20.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:20.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:20.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:20.361 [DEBUG] [Thread-161880] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:23.787 [DEBUG] [Thread-161882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:52:24.751 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:52:24.753 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:52:30.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:52:30.355 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:52:30.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:52:30.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 52, 26), 14.29, 37.78, 0.0, 21.46, 14.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:52:30.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:52:26
2025-09-29T16:52:31.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:52:31.185 [DEBUG] [Thread-161883] [transport.py] [_log()] starting thread (client mode): 0x2b91d8d0
2025-09-29T16:52:31.185 [DEBUG] [Thread-161883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:31.206 [DEBUG] [Thread-161883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:52:31.206 [INFO] [Thread-161883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:31.209 [DEBUG] [Thread-161883] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:31.210 [DEBUG] [Thread-161883] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:31.210 [DEBUG] [Thread-161883] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:31.210 [DEBUG] [Thread-161883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:31.210 [DEBUG] [Thread-161883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:31.210 [DEBUG] [Thread-161883] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:31.210 [DEBUG] [Thread-161883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:31.210 [DEBUG] [Thread-161883] [transport.py] [_log()] Compression: none
2025-09-29T16:52:31.210 [DEBUG] [Thread-161883] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:31.225 [DEBUG] [Thread-161883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:31.225 [DEBUG] [Thread-161883] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:31.225 [DEBUG] [Thread-161883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:52:31.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:52:31.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:31.226 [DEBUG] [Thread-161883] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:31.226 [DEBUG] [Thread-161883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:31.226 [DEBUG] [Thread-161883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:31.226 [DEBUG] [Thread-161883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:52:31.226 [DEBUG] [Thread-161883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:31.242 [INFO] [Thread-161883] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:31.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:31.826 [DEBUG] [Thread-161883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:31.826 [DEBUG] [Thread-161883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:31.827 [DEBUG] [Thread-161883] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:52:31.867 [DEBUG] [Thread-161883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:31.867 [DEBUG] [Thread-161883] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:31.869 [DEBUG] [Thread-161883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:31.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:31.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:52:31.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:52:31.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:52:31.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:31.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:52:31.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:31.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:52:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.619510 -999.00  +14.60  16.91     43   +2.40 1 1 1 1 1   887    0 11.26 -36.73 ----- 15.5 16.9 170.5 23.6 19.2 -28.5 18.9 -27.2 20.6 -27.3 21.3 -28.8
2025-09-29T16:52:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:52:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:52:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.619510
2025-09-29T16:52:31.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:52:31.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:52:31.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:52:31.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:52:31.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:52:31.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:52:26', tmtdew=14.29, humidity=37.78, cloud=0.0, wind=21.46, temperature=14.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:52:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:52:31.889 [DEBUG] [Thread-161883] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:31.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:52:31.983 [DEBUG] [Thread-161886] [transport.py] [_log()] starting thread (client mode): 0x2b96a9b0
2025-09-29T16:52:31.983 [DEBUG] [Thread-161886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:31.998 [DEBUG] [Thread-161886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:52:31.998 [INFO] [Thread-161886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:52:32.006 [DEBUG] [Thread-161886] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:32.006 [DEBUG] [Thread-161886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:52:32.006 [DEBUG] [Thread-161886] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:32.006 [DEBUG] [Thread-161886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:32.007 [DEBUG] [Thread-161886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:32.008 [DEBUG] [Thread-161886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:32.008 [DEBUG] [Thread-161886] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:32.008 [DEBUG] [Thread-161886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:32.008 [DEBUG] [Thread-161886] [transport.py] [_log()] Compression: none
2025-09-29T16:52:32.008 [DEBUG] [Thread-161886] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:32.064 [DEBUG] [Thread-161886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:32.064 [DEBUG] [Thread-161886] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:32.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:52:32.065 [DEBUG] [Thread-161886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:52:32.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:32.120 [DEBUG] [Thread-161886] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:32.120 [DEBUG] [Thread-161886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:32.120 [DEBUG] [Thread-161886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:32.120 [DEBUG] [Thread-161886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:52:32.121 [DEBUG] [Thread-161886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:32.139 [INFO] [Thread-161886] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:32.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:52:32.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:33.182 [DEBUG] [Thread-161886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:33.182 [DEBUG] [Thread-161886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:33.229 [DEBUG] [Thread-161886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:33.229 [DEBUG] [Thread-161886] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:33.238 [DEBUG] [Thread-161886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:33.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:33.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:52:33.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:52:33.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:33.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:33.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:33.277 [DEBUG] [Thread-161886] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:38.816 [DEBUG] [Thread-161888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:52:43.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:52:43.275 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:52:43.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:52:43.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 52, 26), 14.29, 37.78, 0.0, 21.46, 14.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:52:43.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:52:26
2025-09-29T16:52:43.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:52:44.131 [DEBUG] [Thread-161889] [transport.py] [_log()] starting thread (client mode): 0x2e349270
2025-09-29T16:52:44.131 [DEBUG] [Thread-161889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:44.155 [DEBUG] [Thread-161889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:52:44.155 [INFO] [Thread-161889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:44.159 [DEBUG] [Thread-161889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:44.160 [DEBUG] [Thread-161889] [transport.py] [_log()] Compression: none
2025-09-29T16:52:44.160 [DEBUG] [Thread-161889] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:44.177 [DEBUG] [Thread-161889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:44.177 [DEBUG] [Thread-161889] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:44.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:52:44.177 [DEBUG] [Thread-161889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:52:44.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:44.178 [DEBUG] [Thread-161889] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:44.178 [DEBUG] [Thread-161889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:44.178 [DEBUG] [Thread-161889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:44.178 [DEBUG] [Thread-161889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:52:44.178 [DEBUG] [Thread-161889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:44.188 [INFO] [Thread-161889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:44.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:44.923 [DEBUG] [Thread-161889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:44.923 [DEBUG] [Thread-161889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:44.923 [DEBUG] [Thread-161889] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:52:44.964 [DEBUG] [Thread-161889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:44.964 [DEBUG] [Thread-161889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:44.966 [DEBUG] [Thread-161889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:44.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:44.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:52:44.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:52:44.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:52:44.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:44.986 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:52:44.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:44.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:44.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:52:44.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.619510 -999.00  +14.60  16.91     43   +2.40 1 1 1 1 1   887    0 11.26 -36.73 ----- 15.5 16.9 170.5 23.6 19.2 -28.5 18.9 -27.2 20.6 -27.3 21.3 -28.8
2025-09-29T16:52:44.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:52:44.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:52:44.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.619510
2025-09-29T16:52:44.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:52:44.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:52:44.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:52:44.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:52:44.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:52:44.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:52:26', tmtdew=14.29, humidity=37.78, cloud=0.0, wind=21.46, temperature=14.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:52:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:52:44.988 [DEBUG] [Thread-161889] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:45.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:52:45.078 [DEBUG] [Thread-161892] [transport.py] [_log()] starting thread (client mode): 0x2e3f9540
2025-09-29T16:52:45.078 [DEBUG] [Thread-161892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:45.092 [DEBUG] [Thread-161892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:52:45.093 [INFO] [Thread-161892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:52:45.100 [DEBUG] [Thread-161892] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:45.100 [DEBUG] [Thread-161892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:52:45.100 [DEBUG] [Thread-161892] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] Compression: none
2025-09-29T16:52:45.101 [DEBUG] [Thread-161892] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:45.156 [DEBUG] [Thread-161892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:45.157 [DEBUG] [Thread-161892] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:45.157 [DEBUG] [Thread-161892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:52:45.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:52:45.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:45.212 [DEBUG] [Thread-161892] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:45.212 [DEBUG] [Thread-161892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:45.212 [DEBUG] [Thread-161892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:45.212 [DEBUG] [Thread-161892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:52:45.213 [DEBUG] [Thread-161892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:45.231 [INFO] [Thread-161892] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:45.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:52:45.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:46.217 [DEBUG] [Thread-161892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:46.218 [DEBUG] [Thread-161892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:46.265 [DEBUG] [Thread-161892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:46.265 [DEBUG] [Thread-161892] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:46.274 [DEBUG] [Thread-161892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:46.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:46.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:52:46.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:52:46.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:46.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:46.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:46.310 [DEBUG] [Thread-161892] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:49.397 [DEBUG] [Thread-161894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:52:53.859 [DEBUG] [Thread-161895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:52:56.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:52:56.311 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:52:56.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:52:56.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 52, 26), 14.29, 37.78, 0.0, 21.46, 14.72, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:52:56.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:52:26
2025-09-29T16:52:56.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:52:57.141 [DEBUG] [Thread-161896] [transport.py] [_log()] starting thread (client mode): 0x2e3743a0
2025-09-29T16:52:57.141 [DEBUG] [Thread-161896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:57.161 [DEBUG] [Thread-161896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:52:57.161 [INFO] [Thread-161896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:57.165 [DEBUG] [Thread-161896] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] Compression: none
2025-09-29T16:52:57.166 [DEBUG] [Thread-161896] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:57.182 [DEBUG] [Thread-161896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:57.182 [DEBUG] [Thread-161896] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:57.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:52:57.183 [DEBUG] [Thread-161896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:52:57.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:57.186 [DEBUG] [Thread-161896] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:57.186 [DEBUG] [Thread-161896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:57.186 [DEBUG] [Thread-161896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:57.186 [DEBUG] [Thread-161896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:52:57.186 [DEBUG] [Thread-161896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:57.204 [INFO] [Thread-161896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:57.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:57.939 [DEBUG] [Thread-161896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:57.939 [DEBUG] [Thread-161896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:57.939 [DEBUG] [Thread-161896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:52:57.981 [DEBUG] [Thread-161896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:57.981 [DEBUG] [Thread-161896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:57.984 [DEBUG] [Thread-161896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:57.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:57.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:52:57.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:52:58.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:52:58.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:58.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:52:58.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:58.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:58.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:52:58.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.619510 -999.00  +14.60  16.91     43   +2.40 1 1 1 1 1   887    0 11.26 -36.73 ----- 15.5 16.9 170.5 23.6 19.2 -28.5 18.9 -27.2 20.6 -27.3 21.3 -28.8
2025-09-29T16:52:58.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:52:58.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:52:58.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.619510
2025-09-29T16:52:58.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:52:58.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:52:58.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:52:58.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:52:58.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:52:58.009 [DEBUG] [Thread-161896] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:52:58.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:52:26', tmtdew=14.29, humidity=37.78, cloud=0.0, wind=21.46, temperature=14.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:52:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:52:58.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:52:58.103 [DEBUG] [Thread-161899] [transport.py] [_log()] starting thread (client mode): 0x2e362680
2025-09-29T16:52:58.104 [DEBUG] [Thread-161899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:52:58.118 [DEBUG] [Thread-161899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:52:58.118 [INFO] [Thread-161899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:52:58.125 [DEBUG] [Thread-161899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:52:58.125 [DEBUG] [Thread-161899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:52:58.125 [DEBUG] [Thread-161899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:52:58.125 [DEBUG] [Thread-161899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] client lang: <none>
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] server lang: <none>
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] kex follows: False
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] Compression: none
2025-09-29T16:52:58.126 [DEBUG] [Thread-161899] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:52:58.184 [DEBUG] [Thread-161899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:52:58.185 [DEBUG] [Thread-161899] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:52:58.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:52:58.186 [DEBUG] [Thread-161899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:52:58.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:52:58.241 [DEBUG] [Thread-161899] [transport.py] [_log()] userauth is OK
2025-09-29T16:52:58.241 [DEBUG] [Thread-161899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:52:58.241 [DEBUG] [Thread-161899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:52:58.241 [DEBUG] [Thread-161899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:52:58.242 [DEBUG] [Thread-161899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:52:58.260 [INFO] [Thread-161899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:52:58.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:52:58.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:52:59.281 [DEBUG] [Thread-161899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:52:59.281 [DEBUG] [Thread-161899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:52:59.329 [DEBUG] [Thread-161899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:52:59.329 [DEBUG] [Thread-161899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:52:59.337 [DEBUG] [Thread-161899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:52:59.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:52:59.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:52:59.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:52:59.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:52:59.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:52:59.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:52:59.370 [DEBUG] [Thread-161899] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:08.889 [DEBUG] [Thread-161901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:53:09.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:53:09.372 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:53:09.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:53:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 52, 58), 14.36, 37.47, 0.0, 20.61, 14.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:53:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:52:58
2025-09-29T16:53:10.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:53:10.200 [DEBUG] [Thread-161902] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-29T16:53:10.200 [DEBUG] [Thread-161902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:53:10.221 [DEBUG] [Thread-161902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:53:10.221 [INFO] [Thread-161902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:53:10.224 [DEBUG] [Thread-161902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:53:10.224 [DEBUG] [Thread-161902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] client lang: <none>
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] server lang: <none>
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] kex follows: False
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] Compression: none
2025-09-29T16:53:10.225 [DEBUG] [Thread-161902] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:53:10.242 [DEBUG] [Thread-161902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:53:10.242 [DEBUG] [Thread-161902] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:53:10.243 [DEBUG] [Thread-161902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:53:10.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:53:10.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:53:10.245 [DEBUG] [Thread-161902] [transport.py] [_log()] userauth is OK
2025-09-29T16:53:10.245 [DEBUG] [Thread-161902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:53:10.245 [DEBUG] [Thread-161902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:53:10.245 [DEBUG] [Thread-161902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:53:10.245 [DEBUG] [Thread-161902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:53:10.263 [INFO] [Thread-161902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:53:10.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:53:10.833 [DEBUG] [Thread-161902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:53:10.833 [DEBUG] [Thread-161902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:53:10.833 [DEBUG] [Thread-161902] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:53:10.874 [DEBUG] [Thread-161902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:53:10.874 [DEBUG] [Thread-161902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:53:10.876 [DEBUG] [Thread-161902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:53:10.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:53:10.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:53:10.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:53:10.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:53:10.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:53:10.891 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:53:10.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:53:10.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:53:10.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:53:10.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.619858 -999.00  +14.60  14.72     44   +2.50 1 1 1 1 1   887    0 10.94 -35.68 ----- 10.9 14.7 156.8 27.2 19.1 -28.1 18.8 -27.5 20.5 -28.3 21.2 -29.0
2025-09-29T16:53:10.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:53:10.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:53:10.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.619858
2025-09-29T16:53:10.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:53:10.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:53:10.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:53:10.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:53:10.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:53:10.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:52:58', tmtdew=14.36, humidity=37.47, cloud=0.0, wind=20.61, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:52:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:53:10.894 [DEBUG] [Thread-161902] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:10.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:53:10.990 [DEBUG] [Thread-161905] [transport.py] [_log()] starting thread (client mode): 0x30dddd20
2025-09-29T16:53:10.990 [DEBUG] [Thread-161905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:53:11.005 [DEBUG] [Thread-161905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:53:11.005 [INFO] [Thread-161905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:53:11.012 [DEBUG] [Thread-161905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:53:11.012 [DEBUG] [Thread-161905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:53:11.012 [DEBUG] [Thread-161905] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:53:11.012 [DEBUG] [Thread-161905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:11.012 [DEBUG] [Thread-161905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:11.012 [DEBUG] [Thread-161905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:11.012 [DEBUG] [Thread-161905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] client lang: <none>
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] server lang: <none>
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] kex follows: False
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] Compression: none
2025-09-29T16:53:11.013 [DEBUG] [Thread-161905] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:53:11.068 [DEBUG] [Thread-161905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:53:11.068 [DEBUG] [Thread-161905] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:53:11.068 [DEBUG] [Thread-161905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:53:11.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:53:11.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:53:11.125 [DEBUG] [Thread-161905] [transport.py] [_log()] userauth is OK
2025-09-29T16:53:11.125 [DEBUG] [Thread-161905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:53:11.125 [DEBUG] [Thread-161905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:53:11.125 [DEBUG] [Thread-161905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:53:11.125 [DEBUG] [Thread-161905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:53:11.144 [INFO] [Thread-161905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:53:11.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:53:11.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:53:12.144 [DEBUG] [Thread-161905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:53:12.144 [DEBUG] [Thread-161905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:53:12.192 [DEBUG] [Thread-161905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:53:12.192 [DEBUG] [Thread-161905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:53:12.200 [DEBUG] [Thread-161905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:53:12.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:53:12.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:53:12.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:53:12.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:53:12.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:53:12.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:53:12.232 [DEBUG] [Thread-161905] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:22.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:53:22.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:53:22.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:53:22.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 52, 58), 14.36, 37.47, 0.0, 20.61, 14.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:53:22.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:52:58
2025-09-29T16:53:22.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:53:23.077 [DEBUG] [Thread-161907] [transport.py] [_log()] starting thread (client mode): 0x2b94e8c0
2025-09-29T16:53:23.077 [DEBUG] [Thread-161907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:53:23.096 [DEBUG] [Thread-161907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:53:23.096 [INFO] [Thread-161907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:53:23.099 [DEBUG] [Thread-161907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] client lang: <none>
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] server lang: <none>
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] kex follows: False
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] Compression: none
2025-09-29T16:53:23.100 [DEBUG] [Thread-161907] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:53:23.115 [DEBUG] [Thread-161907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:53:23.115 [DEBUG] [Thread-161907] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:53:23.115 [DEBUG] [Thread-161907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:53:23.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:53:23.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:53:23.117 [DEBUG] [Thread-161907] [transport.py] [_log()] userauth is OK
2025-09-29T16:53:23.117 [DEBUG] [Thread-161907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:53:23.117 [DEBUG] [Thread-161907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:53:23.117 [DEBUG] [Thread-161907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:53:23.117 [DEBUG] [Thread-161907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:53:23.131 [INFO] [Thread-161907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:53:23.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:53:23.908 [DEBUG] [Thread-161907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:53:23.908 [DEBUG] [Thread-161907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:53:23.908 [DEBUG] [Thread-161907] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:53:23.918 [DEBUG] [Thread-161909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:53:23.949 [DEBUG] [Thread-161907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:53:23.949 [DEBUG] [Thread-161907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:53:23.951 [DEBUG] [Thread-161907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:53:23.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:53:23.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:53:23.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:53:23.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:53:23.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:53:23.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:53:23.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:53:23.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:53:23.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:53:23.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.619858 -999.00  +14.60  14.72     44   +2.50 1 1 1 1 1   887    0 10.94 -35.68 ----- 10.9 14.7 156.8 27.2 19.1 -28.1 18.8 -27.5 20.5 -28.3 21.2 -29.0
2025-09-29T16:53:23.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:53:23.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:53:23.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.619858
2025-09-29T16:53:23.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:53:23.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:53:23.971 [DEBUG] [Thread-161907] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:23.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:53:23.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:53:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:53:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:52:58', tmtdew=14.36, humidity=37.47, cloud=0.0, wind=20.61, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:52:35.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:53:24.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:53:24.060 [DEBUG] [Thread-161911] [transport.py] [_log()] starting thread (client mode): 0x2b91d720
2025-09-29T16:53:24.060 [DEBUG] [Thread-161911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:53:24.075 [DEBUG] [Thread-161911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:53:24.075 [INFO] [Thread-161911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:53:24.082 [DEBUG] [Thread-161911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:53:24.082 [DEBUG] [Thread-161911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] client lang: <none>
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] server lang: <none>
2025-09-29T16:53:24.083 [DEBUG] [Thread-161911] [transport.py] [_log()] kex follows: False
2025-09-29T16:53:24.084 [DEBUG] [Thread-161911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:53:24.084 [DEBUG] [Thread-161911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:53:24.084 [DEBUG] [Thread-161911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:53:24.084 [DEBUG] [Thread-161911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:53:24.084 [DEBUG] [Thread-161911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:53:24.084 [DEBUG] [Thread-161911] [transport.py] [_log()] Compression: none
2025-09-29T16:53:24.084 [DEBUG] [Thread-161911] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:53:24.141 [DEBUG] [Thread-161911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:53:24.141 [DEBUG] [Thread-161911] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:53:24.142 [DEBUG] [Thread-161911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:53:24.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:53:24.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:53:24.197 [DEBUG] [Thread-161911] [transport.py] [_log()] userauth is OK
2025-09-29T16:53:24.197 [DEBUG] [Thread-161911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:53:24.197 [DEBUG] [Thread-161911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:53:24.197 [DEBUG] [Thread-161911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:53:24.197 [DEBUG] [Thread-161911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:53:24.215 [INFO] [Thread-161911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:53:24.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:53:24.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:53:24.890 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:53:24.891 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:53:25.316 [DEBUG] [Thread-161911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:53:25.316 [DEBUG] [Thread-161911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:53:25.364 [DEBUG] [Thread-161911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:53:25.364 [DEBUG] [Thread-161911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:53:25.373 [DEBUG] [Thread-161911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:53:25.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:53:25.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:53:25.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:53:25.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:53:25.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:53:25.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:53:25.406 [DEBUG] [Thread-161911] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:35.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:53:35.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:53:35.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:53:35.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 53, 30), 14.26, 37.71, 0.0, 23.48, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:53:35.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:53:30
2025-09-29T16:53:36.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:53:36.252 [DEBUG] [Thread-161913] [transport.py] [_log()] starting thread (client mode): 0x2b91f790
2025-09-29T16:53:36.253 [DEBUG] [Thread-161913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:53:36.271 [DEBUG] [Thread-161913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:53:36.272 [INFO] [Thread-161913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:53:36.273 [DEBUG] [Thread-161913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:53:36.273 [DEBUG] [Thread-161913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:53:36.273 [DEBUG] [Thread-161913] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] client lang: <none>
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] server lang: <none>
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] kex follows: False
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] Compression: none
2025-09-29T16:53:36.274 [DEBUG] [Thread-161913] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:53:36.285 [DEBUG] [Thread-161913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:53:36.285 [DEBUG] [Thread-161913] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:53:36.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:53:36.286 [DEBUG] [Thread-161913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:53:36.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:53:36.288 [DEBUG] [Thread-161913] [transport.py] [_log()] userauth is OK
2025-09-29T16:53:36.288 [DEBUG] [Thread-161913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:53:36.288 [DEBUG] [Thread-161913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:53:36.288 [DEBUG] [Thread-161913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:53:36.288 [DEBUG] [Thread-161913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:53:36.306 [INFO] [Thread-161913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:53:36.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:53:36.889 [DEBUG] [Thread-161913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:53:36.889 [DEBUG] [Thread-161913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:53:36.890 [DEBUG] [Thread-161913] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:53:36.930 [DEBUG] [Thread-161913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:53:36.930 [DEBUG] [Thread-161913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:53:36.933 [DEBUG] [Thread-161913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:53:36.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:53:36.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:53:36.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:53:36.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:53:36.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:53:36.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:53:36.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:53:36.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.620205 -999.00  +14.70  16.70     43   +2.40 1 1 1 1 1   887    0 10.85 -36.21 ----- 15.0 16.7 177.4 23.6 19.1 -28.2 18.9 -29.1 20.5 -27.3 21.2 -30.2
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.620205
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:53:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:53:30', tmtdew=14.26, humidity=37.71, cloud=0.0, wind=23.48, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:53:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:53:36.957 [DEBUG] [Thread-161913] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:37.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:53:37.044 [DEBUG] [Thread-161916] [transport.py] [_log()] starting thread (client mode): 0x2e362f80
2025-09-29T16:53:37.044 [DEBUG] [Thread-161916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:53:37.058 [DEBUG] [Thread-161916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:53:37.058 [INFO] [Thread-161916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:53:37.068 [DEBUG] [Thread-161916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:53:37.068 [DEBUG] [Thread-161916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] client lang: <none>
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] server lang: <none>
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] kex follows: False
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] Compression: none
2025-09-29T16:53:37.069 [DEBUG] [Thread-161916] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:53:37.125 [DEBUG] [Thread-161916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:53:37.125 [DEBUG] [Thread-161916] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:53:37.126 [DEBUG] [Thread-161916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:53:37.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:53:37.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:53:37.249 [DEBUG] [Thread-161916] [transport.py] [_log()] userauth is OK
2025-09-29T16:53:37.249 [DEBUG] [Thread-161916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:53:37.249 [DEBUG] [Thread-161916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:53:37.249 [DEBUG] [Thread-161916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:53:37.249 [DEBUG] [Thread-161916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:53:37.272 [INFO] [Thread-161916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:53:37.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:53:37.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:53:38.243 [DEBUG] [Thread-161916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:53:38.243 [DEBUG] [Thread-161916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:53:38.291 [DEBUG] [Thread-161916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:53:38.291 [DEBUG] [Thread-161916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:53:38.300 [DEBUG] [Thread-161916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:53:38.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:53:38.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:53:38.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:53:38.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:53:38.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:53:38.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:53:38.335 [DEBUG] [Thread-161916] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:38.972 [DEBUG] [Thread-161918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:53:48.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:53:48.338 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:53:48.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:53:48.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 53, 30), 14.26, 37.71, 0.0, 23.48, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:53:48.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:53:30
2025-09-29T16:53:49.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:53:49.164 [DEBUG] [Thread-161919] [transport.py] [_log()] starting thread (client mode): 0x2b91f2b0
2025-09-29T16:53:49.164 [DEBUG] [Thread-161919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:53:49.184 [DEBUG] [Thread-161919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:53:49.184 [INFO] [Thread-161919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:53:49.187 [DEBUG] [Thread-161919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:53:49.187 [DEBUG] [Thread-161919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:53:49.187 [DEBUG] [Thread-161919] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:53:49.187 [DEBUG] [Thread-161919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:49.187 [DEBUG] [Thread-161919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] client lang: <none>
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] server lang: <none>
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] kex follows: False
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] Compression: none
2025-09-29T16:53:49.188 [DEBUG] [Thread-161919] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:53:49.204 [DEBUG] [Thread-161919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:53:49.205 [DEBUG] [Thread-161919] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:53:49.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:53:49.206 [DEBUG] [Thread-161919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:53:49.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:53:49.208 [DEBUG] [Thread-161919] [transport.py] [_log()] userauth is OK
2025-09-29T16:53:49.208 [DEBUG] [Thread-161919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:53:49.208 [DEBUG] [Thread-161919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:53:49.208 [DEBUG] [Thread-161919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:53:49.208 [DEBUG] [Thread-161919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:53:49.225 [INFO] [Thread-161919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:53:49.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:53:49.440 [DEBUG] [Thread-161921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:53:49.950 [DEBUG] [Thread-161919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:53:49.950 [DEBUG] [Thread-161919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:53:49.950 [DEBUG] [Thread-161919] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:53:49.991 [DEBUG] [Thread-161919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:53:49.991 [DEBUG] [Thread-161919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:53:49.993 [DEBUG] [Thread-161919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:53:50.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:53:50.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:53:50.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:53:50.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:53:50.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:53:50.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:53:50.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:53:50.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:53:50.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:53:50.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.620205 -999.00  +14.70  16.70     43   +2.40 1 1 1 1 1   887    0 10.85 -36.21 ----- 15.0 16.7 177.4 23.6 19.1 -28.2 18.9 -29.1 20.5 -27.3 21.2 -30.2
2025-09-29T16:53:50.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:53:50.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:53:50.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.620205
2025-09-29T16:53:50.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:53:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:53:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:53:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:53:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:53:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:53:30', tmtdew=14.26, humidity=37.71, cloud=0.0, wind=23.48, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:53:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:53:50.017 [DEBUG] [Thread-161919] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:50.108 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:53:50.117 [DEBUG] [Thread-161923] [transport.py] [_log()] starting thread (client mode): 0x2e3756c0
2025-09-29T16:53:50.118 [DEBUG] [Thread-161923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:53:50.136 [DEBUG] [Thread-161923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:53:50.136 [INFO] [Thread-161923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:53:50.144 [DEBUG] [Thread-161923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:53:50.144 [DEBUG] [Thread-161923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:53:50.144 [DEBUG] [Thread-161923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:53:50.144 [DEBUG] [Thread-161923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] client lang: <none>
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] server lang: <none>
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] kex follows: False
2025-09-29T16:53:50.145 [DEBUG] [Thread-161923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:53:50.146 [DEBUG] [Thread-161923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:53:50.146 [DEBUG] [Thread-161923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:53:50.146 [DEBUG] [Thread-161923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:53:50.146 [DEBUG] [Thread-161923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:53:50.146 [DEBUG] [Thread-161923] [transport.py] [_log()] Compression: none
2025-09-29T16:53:50.146 [DEBUG] [Thread-161923] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:53:50.208 [DEBUG] [Thread-161923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:53:50.209 [DEBUG] [Thread-161923] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:53:50.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:53:50.210 [DEBUG] [Thread-161923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:53:50.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:53:50.265 [DEBUG] [Thread-161923] [transport.py] [_log()] userauth is OK
2025-09-29T16:53:50.266 [DEBUG] [Thread-161923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:53:50.266 [DEBUG] [Thread-161923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:53:50.266 [DEBUG] [Thread-161923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:53:50.266 [DEBUG] [Thread-161923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:53:50.285 [INFO] [Thread-161923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:53:50.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:53:50.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:53:51.287 [DEBUG] [Thread-161923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:53:51.288 [DEBUG] [Thread-161923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:53:51.335 [DEBUG] [Thread-161923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:53:51.335 [DEBUG] [Thread-161923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:53:51.344 [DEBUG] [Thread-161923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:53:51.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:53:51.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:53:51.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:53:51.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:53:51.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:53:51.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:53:51.379 [DEBUG] [Thread-161923] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:53:54.023 [DEBUG] [Thread-161925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:54:01.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:54:01.382 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:54:01.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:54:01.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 53, 30), 14.26, 37.71, 0.0, 23.48, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:54:01.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:53:30
2025-09-29T16:54:02.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:54:02.217 [DEBUG] [Thread-161926] [transport.py] [_log()] starting thread (client mode): 0x2e3743a0
2025-09-29T16:54:02.217 [DEBUG] [Thread-161926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:02.238 [DEBUG] [Thread-161926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:54:02.238 [INFO] [Thread-161926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:54:02.241 [DEBUG] [Thread-161926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:02.241 [DEBUG] [Thread-161926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:54:02.241 [DEBUG] [Thread-161926] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] Compression: none
2025-09-29T16:54:02.242 [DEBUG] [Thread-161926] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:02.259 [DEBUG] [Thread-161926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:02.259 [DEBUG] [Thread-161926] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:02.260 [DEBUG] [Thread-161926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:54:02.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:54:02.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:02.262 [DEBUG] [Thread-161926] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:02.262 [DEBUG] [Thread-161926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:02.262 [DEBUG] [Thread-161926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:02.262 [DEBUG] [Thread-161926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:54:02.262 [DEBUG] [Thread-161926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:02.298 [INFO] [Thread-161926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:02.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:03.042 [DEBUG] [Thread-161926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:03.042 [DEBUG] [Thread-161926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:03.042 [DEBUG] [Thread-161926] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:54:03.083 [DEBUG] [Thread-161926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:03.083 [DEBUG] [Thread-161926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:03.085 [DEBUG] [Thread-161926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:03.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:03.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:54:03.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:54:03.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:54:03.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:03.104 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:54:03.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.620205 -999.00  +14.70  16.70     43   +2.40 1 1 1 1 1   887    0 10.85 -36.21 ----- 15.0 16.7 177.4 23.6 19.1 -28.2 18.9 -29.1 20.5 -27.3 21.2 -30.2
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.620205
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:54:03.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:53:30', tmtdew=14.26, humidity=37.71, cloud=0.0, wind=23.48, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:53:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:54:03.104 [DEBUG] [Thread-161926] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:03.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:54:03.190 [DEBUG] [Thread-161929] [transport.py] [_log()] starting thread (client mode): 0x30ddfc10
2025-09-29T16:54:03.190 [DEBUG] [Thread-161929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:03.205 [DEBUG] [Thread-161929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:54:03.205 [INFO] [Thread-161929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:03.212 [DEBUG] [Thread-161929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] Compression: none
2025-09-29T16:54:03.213 [DEBUG] [Thread-161929] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:03.272 [DEBUG] [Thread-161929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:03.272 [DEBUG] [Thread-161929] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:03.272 [DEBUG] [Thread-161929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:54:03.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:54:03.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:03.329 [DEBUG] [Thread-161929] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:03.329 [DEBUG] [Thread-161929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:03.329 [DEBUG] [Thread-161929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:03.330 [DEBUG] [Thread-161929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:54:03.330 [DEBUG] [Thread-161929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:03.347 [INFO] [Thread-161929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:03.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:54:03.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:04.347 [DEBUG] [Thread-161929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:04.348 [DEBUG] [Thread-161929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:04.396 [DEBUG] [Thread-161929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:04.396 [DEBUG] [Thread-161929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:04.404 [DEBUG] [Thread-161929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:04.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:04.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:54:04.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:54:04.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:04.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:04.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:04.435 [DEBUG] [Thread-161929] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:09.051 [DEBUG] [Thread-161931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:54:14.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:54:14.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:54:14.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:54:15.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 54, 2), 14.27, 37.68, 0.0, 20.89, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:54:15.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:54:02
2025-09-29T16:54:15.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:54:15.264 [DEBUG] [Thread-161932] [transport.py] [_log()] starting thread (client mode): 0x2e3609d0
2025-09-29T16:54:15.264 [DEBUG] [Thread-161932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:15.285 [DEBUG] [Thread-161932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:54:15.285 [INFO] [Thread-161932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:54:15.287 [DEBUG] [Thread-161932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:15.287 [DEBUG] [Thread-161932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:54:15.287 [DEBUG] [Thread-161932] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:15.287 [DEBUG] [Thread-161932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:15.287 [DEBUG] [Thread-161932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:15.287 [DEBUG] [Thread-161932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:15.287 [DEBUG] [Thread-161932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:15.287 [DEBUG] [Thread-161932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] Compression: none
2025-09-29T16:54:15.288 [DEBUG] [Thread-161932] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:15.302 [DEBUG] [Thread-161932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:15.303 [DEBUG] [Thread-161932] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:15.304 [DEBUG] [Thread-161932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:54:15.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:54:15.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:15.306 [DEBUG] [Thread-161932] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:15.306 [DEBUG] [Thread-161932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:15.307 [DEBUG] [Thread-161932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:15.307 [DEBUG] [Thread-161932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:54:15.307 [DEBUG] [Thread-161932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:15.326 [INFO] [Thread-161932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:15.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:15.937 [DEBUG] [Thread-161932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:15.937 [DEBUG] [Thread-161932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:15.937 [DEBUG] [Thread-161932] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:54:15.978 [DEBUG] [Thread-161932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:15.979 [DEBUG] [Thread-161932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:15.981 [DEBUG] [Thread-161932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:15.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:15.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:54:15.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:54:15.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:54:16.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:16.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:54:16.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:16.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:16.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:54:16.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.620899 -999.00  +14.70  14.93     43   +2.40 1 1 1 1 1   887    0 11.40 -30.79 ----- 15.3 14.9 151.8 21.9 19.1 -28.2 18.7 -27.9 20.5 -28.1 21.2 -29.1
2025-09-29T16:54:16.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:54:16.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:54:16.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.620899
2025-09-29T16:54:16.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:54:16.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:54:16.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:54:16.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:54:16.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:54:16.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:54:02', tmtdew=14.27, humidity=37.68, cloud=0.0, wind=20.89, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:54:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:54:16.006 [DEBUG] [Thread-161932] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:16.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:54:16.100 [DEBUG] [Thread-161935] [transport.py] [_log()] starting thread (client mode): 0x2e363490
2025-09-29T16:54:16.100 [DEBUG] [Thread-161935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:16.114 [DEBUG] [Thread-161935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:54:16.114 [INFO] [Thread-161935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:54:16.122 [DEBUG] [Thread-161935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:16.122 [DEBUG] [Thread-161935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:54:16.122 [DEBUG] [Thread-161935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:16.122 [DEBUG] [Thread-161935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:16.122 [DEBUG] [Thread-161935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:16.122 [DEBUG] [Thread-161935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:16.122 [DEBUG] [Thread-161935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:16.123 [DEBUG] [Thread-161935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:16.124 [DEBUG] [Thread-161935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:16.124 [DEBUG] [Thread-161935] [transport.py] [_log()] Compression: none
2025-09-29T16:54:16.124 [DEBUG] [Thread-161935] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:16.182 [DEBUG] [Thread-161935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:16.182 [DEBUG] [Thread-161935] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:16.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:54:16.183 [DEBUG] [Thread-161935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:54:16.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:16.238 [DEBUG] [Thread-161935] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:16.238 [DEBUG] [Thread-161935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:16.238 [DEBUG] [Thread-161935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:16.238 [DEBUG] [Thread-161935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:54:16.238 [DEBUG] [Thread-161935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:16.257 [INFO] [Thread-161935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:16.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:54:16.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:17.268 [DEBUG] [Thread-161935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:17.268 [DEBUG] [Thread-161935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:17.316 [DEBUG] [Thread-161935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:17.316 [DEBUG] [Thread-161935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:17.325 [DEBUG] [Thread-161935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:17.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:17.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:54:17.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:54:17.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:17.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:17.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:17.360 [DEBUG] [Thread-161935] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:24.084 [DEBUG] [Thread-161937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:54:25.029 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:54:25.030 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:54:27.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:54:27.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:54:27.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:54:27.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 54, 2), 14.27, 37.68, 0.0, 20.89, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:54:27.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:54:02
2025-09-29T16:54:28.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:54:28.195 [DEBUG] [Thread-161938] [transport.py] [_log()] starting thread (client mode): 0x30dddd20
2025-09-29T16:54:28.196 [DEBUG] [Thread-161938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:28.219 [DEBUG] [Thread-161938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:54:28.219 [INFO] [Thread-161938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:28.223 [DEBUG] [Thread-161938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:28.224 [DEBUG] [Thread-161938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:28.224 [DEBUG] [Thread-161938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:28.224 [DEBUG] [Thread-161938] [transport.py] [_log()] Compression: none
2025-09-29T16:54:28.224 [DEBUG] [Thread-161938] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:28.242 [DEBUG] [Thread-161938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:28.242 [DEBUG] [Thread-161938] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:28.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:54:28.243 [DEBUG] [Thread-161938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:54:28.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:28.245 [DEBUG] [Thread-161938] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:28.245 [DEBUG] [Thread-161938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:28.245 [DEBUG] [Thread-161938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:28.245 [DEBUG] [Thread-161938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:54:28.245 [DEBUG] [Thread-161938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:28.269 [INFO] [Thread-161938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:28.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:28.978 [DEBUG] [Thread-161938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:28.978 [DEBUG] [Thread-161938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:28.978 [DEBUG] [Thread-161938] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:54:29.019 [DEBUG] [Thread-161938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:29.019 [DEBUG] [Thread-161938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:29.023 [DEBUG] [Thread-161938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:29.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:29.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:54:29.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:54:29.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:54:29.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:29.037 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:54:29.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:29.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:29.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:54:29.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.620899 -999.00  +14.70  14.93     43   +2.40 1 1 1 1 1   887    0 11.40 -30.79 ----- 15.3 14.9 151.8 21.9 19.1 -28.2 18.7 -27.9 20.5 -28.1 21.2 -29.1
2025-09-29T16:54:29.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:54:29.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:54:29.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.620899
2025-09-29T16:54:29.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:54:29.039 [DEBUG] [Thread-161938] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:29.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:54:29.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:54:29.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:54:29.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:54:29.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:54:02', tmtdew=14.27, humidity=37.68, cloud=0.0, wind=20.89, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:54:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:54:29.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:54:29.133 [DEBUG] [Thread-161941] [transport.py] [_log()] starting thread (client mode): 0x2e34a9e0
2025-09-29T16:54:29.133 [DEBUG] [Thread-161941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:29.148 [DEBUG] [Thread-161941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:54:29.149 [INFO] [Thread-161941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:54:29.156 [DEBUG] [Thread-161941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:29.156 [DEBUG] [Thread-161941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:54:29.156 [DEBUG] [Thread-161941] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:29.157 [DEBUG] [Thread-161941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:29.158 [DEBUG] [Thread-161941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:29.158 [DEBUG] [Thread-161941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:29.158 [DEBUG] [Thread-161941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:29.158 [DEBUG] [Thread-161941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:29.158 [DEBUG] [Thread-161941] [transport.py] [_log()] Compression: none
2025-09-29T16:54:29.158 [DEBUG] [Thread-161941] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:29.214 [DEBUG] [Thread-161941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:29.215 [DEBUG] [Thread-161941] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:29.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:54:29.216 [DEBUG] [Thread-161941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:54:29.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:29.270 [DEBUG] [Thread-161941] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:29.270 [DEBUG] [Thread-161941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:29.271 [DEBUG] [Thread-161941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:29.271 [DEBUG] [Thread-161941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:54:29.271 [DEBUG] [Thread-161941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:29.289 [INFO] [Thread-161941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:29.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:54:29.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:30.299 [DEBUG] [Thread-161941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:30.299 [DEBUG] [Thread-161941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:30.348 [DEBUG] [Thread-161941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:30.348 [DEBUG] [Thread-161941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:30.356 [DEBUG] [Thread-161941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:30.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:30.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:54:30.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:54:30.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:30.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:30.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:30.388 [DEBUG] [Thread-161941] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:39.128 [DEBUG] [Thread-161943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:54:40.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:54:40.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:54:40.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:54:40.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 54, 34), 13.91, 38.83, 0.0, 20.93, 14.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:54:40.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:54:34
2025-09-29T16:54:41.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:54:41.229 [DEBUG] [Thread-161944] [transport.py] [_log()] starting thread (client mode): 0x2b96b460
2025-09-29T16:54:41.229 [DEBUG] [Thread-161944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:41.250 [DEBUG] [Thread-161944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:54:41.250 [INFO] [Thread-161944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:54:41.253 [DEBUG] [Thread-161944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:41.253 [DEBUG] [Thread-161944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:54:41.253 [DEBUG] [Thread-161944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] Compression: none
2025-09-29T16:54:41.254 [DEBUG] [Thread-161944] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:41.272 [DEBUG] [Thread-161944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:41.273 [DEBUG] [Thread-161944] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:41.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:54:41.274 [DEBUG] [Thread-161944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:54:41.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:41.276 [DEBUG] [Thread-161944] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:41.276 [DEBUG] [Thread-161944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:41.277 [DEBUG] [Thread-161944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:41.277 [DEBUG] [Thread-161944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:54:41.277 [DEBUG] [Thread-161944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:41.301 [INFO] [Thread-161944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:41.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:42.036 [DEBUG] [Thread-161944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:42.036 [DEBUG] [Thread-161944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:42.036 [DEBUG] [Thread-161944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:54:42.077 [DEBUG] [Thread-161944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:42.078 [DEBUG] [Thread-161944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:42.080 [DEBUG] [Thread-161944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:42.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:42.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:54:42.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:54:42.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:54:42.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:42.095 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:54:42.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:42.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:42.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:54:42.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.620899 -999.00  +14.70  14.93     43   +2.40 1 1 1 1 1   887    0 11.40 -30.79 ----- 15.3 14.9 151.8 21.9 19.1 -28.2 18.7 -27.9 20.5 -28.1 21.2 -29.1
2025-09-29T16:54:42.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:54:42.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:54:42.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.620899
2025-09-29T16:54:42.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:54:42.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:54:42.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:54:42.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:54:42.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:54:42.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:54:34', tmtdew=13.91, humidity=38.83, cloud=0.0, wind=20.93, temperature=14.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:54:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:54:42.097 [DEBUG] [Thread-161944] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:42.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:54:42.194 [DEBUG] [Thread-161947] [transport.py] [_log()] starting thread (client mode): 0x2e3de410
2025-09-29T16:54:42.194 [DEBUG] [Thread-161947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:42.208 [DEBUG] [Thread-161947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:54:42.208 [INFO] [Thread-161947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:42.216 [DEBUG] [Thread-161947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:42.217 [DEBUG] [Thread-161947] [transport.py] [_log()] Compression: none
2025-09-29T16:54:42.217 [DEBUG] [Thread-161947] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:42.274 [DEBUG] [Thread-161947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:42.274 [DEBUG] [Thread-161947] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:42.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:54:42.276 [DEBUG] [Thread-161947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:54:42.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:42.330 [DEBUG] [Thread-161947] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:42.330 [DEBUG] [Thread-161947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:42.331 [DEBUG] [Thread-161947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:42.331 [DEBUG] [Thread-161947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:54:42.331 [DEBUG] [Thread-161947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:42.352 [INFO] [Thread-161947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:42.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:54:42.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:43.338 [DEBUG] [Thread-161947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:43.338 [DEBUG] [Thread-161947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:43.387 [DEBUG] [Thread-161947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:43.387 [DEBUG] [Thread-161947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:43.395 [DEBUG] [Thread-161947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:43.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:43.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:54:43.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:54:43.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:43.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:43.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:43.427 [DEBUG] [Thread-161947] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:49.473 [DEBUG] [Thread-161949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:54:53.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:54:53.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:54:53.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:54:54.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 54, 34), 13.91, 38.83, 0.0, 20.93, 14.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:54:54.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:54:34
2025-09-29T16:54:54.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:54:54.157 [DEBUG] [Thread-161950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:54:54.280 [DEBUG] [Thread-161951] [transport.py] [_log()] starting thread (client mode): 0x2e349270
2025-09-29T16:54:54.280 [DEBUG] [Thread-161951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:54.300 [DEBUG] [Thread-161951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:54:54.300 [INFO] [Thread-161951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:54.303 [DEBUG] [Thread-161951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] Compression: none
2025-09-29T16:54:54.304 [DEBUG] [Thread-161951] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:54.320 [DEBUG] [Thread-161951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:54.321 [DEBUG] [Thread-161951] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:54.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:54:54.322 [DEBUG] [Thread-161951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:54:54.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:54.324 [DEBUG] [Thread-161951] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:54.324 [DEBUG] [Thread-161951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:54.324 [DEBUG] [Thread-161951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:54.324 [DEBUG] [Thread-161951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:54:54.324 [DEBUG] [Thread-161951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:54.342 [INFO] [Thread-161951] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:54.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:54.947 [DEBUG] [Thread-161951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:54.947 [DEBUG] [Thread-161951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:54.948 [DEBUG] [Thread-161951] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:54:54.988 [DEBUG] [Thread-161951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:54.989 [DEBUG] [Thread-161951] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:54.991 [DEBUG] [Thread-161951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:54.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:54.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:54:55.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:54:55.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:54:55.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:55.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:54:55.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:55.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:55.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:54:55.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.621246 -999.00  +14.70  15.75     43   +2.40 1 1 1 1 1   887    0 11.02 -25.49 ----- 22.4 15.8 144.6 19.3 19.1 -28.1 18.7 -26.6 20.4 -26.8 21.2 -28.4
2025-09-29T16:54:55.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:54:55.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:54:55.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.621246
2025-09-29T16:54:55.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:54:55.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:54:55.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:54:55.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:54:55.011 [DEBUG] [Thread-161951] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:54:55.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:54:55.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:54:34', tmtdew=13.91, humidity=38.83, cloud=0.0, wind=20.93, temperature=14.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:54:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:54:55.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:54:55.106 [DEBUG] [Thread-161954] [transport.py] [_log()] starting thread (client mode): 0x2e3fb4f0
2025-09-29T16:54:55.106 [DEBUG] [Thread-161954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:54:55.122 [DEBUG] [Thread-161954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:54:55.122 [INFO] [Thread-161954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:54:55.129 [DEBUG] [Thread-161954] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] client lang: <none>
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] server lang: <none>
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] kex follows: False
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] Compression: none
2025-09-29T16:54:55.130 [DEBUG] [Thread-161954] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:54:55.187 [DEBUG] [Thread-161954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:54:55.187 [DEBUG] [Thread-161954] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:54:55.188 [DEBUG] [Thread-161954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:54:55.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:54:55.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:54:55.242 [DEBUG] [Thread-161954] [transport.py] [_log()] userauth is OK
2025-09-29T16:54:55.242 [DEBUG] [Thread-161954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:54:55.243 [DEBUG] [Thread-161954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:54:55.243 [DEBUG] [Thread-161954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:54:55.243 [DEBUG] [Thread-161954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:54:55.262 [INFO] [Thread-161954] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:54:55.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:54:55.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:54:56.278 [DEBUG] [Thread-161954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:54:56.279 [DEBUG] [Thread-161954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:54:56.326 [DEBUG] [Thread-161954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:54:56.326 [DEBUG] [Thread-161954] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:54:56.335 [DEBUG] [Thread-161954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:54:56.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:54:56.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:54:56.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:54:56.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:54:56.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:54:56.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:54:56.369 [DEBUG] [Thread-161954] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:55:06.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:55:06.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:55:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:55:06.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 54, 34), 13.91, 38.83, 0.0, 20.93, 14.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:55:06.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:54:34
2025-09-29T16:55:07.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:55:07.268 [DEBUG] [Thread-161956] [transport.py] [_log()] starting thread (client mode): 0x2b96b1f0
2025-09-29T16:55:07.268 [DEBUG] [Thread-161956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:55:07.286 [DEBUG] [Thread-161956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:55:07.286 [INFO] [Thread-161956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] client lang: <none>
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] server lang: <none>
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] kex follows: False
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] Compression: none
2025-09-29T16:55:07.289 [DEBUG] [Thread-161956] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:55:07.304 [DEBUG] [Thread-161956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:55:07.304 [DEBUG] [Thread-161956] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:55:07.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:55:07.304 [DEBUG] [Thread-161956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:55:07.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:55:07.305 [DEBUG] [Thread-161956] [transport.py] [_log()] userauth is OK
2025-09-29T16:55:07.305 [DEBUG] [Thread-161956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:55:07.305 [DEBUG] [Thread-161956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:55:07.305 [DEBUG] [Thread-161956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:55:07.305 [DEBUG] [Thread-161956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:55:07.316 [INFO] [Thread-161956] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:55:07.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:55:09.194 [DEBUG] [Thread-161958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:55:13.959 [DEBUG] [Thread-161956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:55:13.960 [DEBUG] [Thread-161956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:55:13.960 [DEBUG] [Thread-161956] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:55:14.000 [DEBUG] [Thread-161956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:55:14.000 [DEBUG] [Thread-161956] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:55:14.003 [DEBUG] [Thread-161956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:55:14.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:55:14.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:55:14.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:55:14.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:55:14.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:55:14.141 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:55:14.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:55:14.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:55:14.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:55:14.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.621246 -999.00  +14.70  15.75     43   +2.40 1 1 1 1 1   887    0 11.02 -25.49 ----- 22.4 15.8 144.6 19.3 19.1 -28.1 18.7 -26.6 20.4 -26.8 21.2 -28.4
2025-09-29T16:55:14.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:55:14.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:55:14.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.621246
2025-09-29T16:55:14.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:55:14.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:55:14.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:55:14.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:55:14.144 [DEBUG] [Thread-161956] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:55:14.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:55:14.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:54:34', tmtdew=13.91, humidity=38.83, cloud=0.0, wind=20.93, temperature=14.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:54:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:55:14.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:55:14.243 [DEBUG] [Thread-161960] [transport.py] [_log()] starting thread (client mode): 0x2e3fadd0
2025-09-29T16:55:14.243 [DEBUG] [Thread-161960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:55:14.259 [DEBUG] [Thread-161960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:55:14.259 [INFO] [Thread-161960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:55:14.266 [DEBUG] [Thread-161960] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] client lang: <none>
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] server lang: <none>
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] kex follows: False
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:55:14.267 [DEBUG] [Thread-161960] [transport.py] [_log()] Compression: none
2025-09-29T16:55:14.268 [DEBUG] [Thread-161960] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:55:14.326 [DEBUG] [Thread-161960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:55:14.327 [DEBUG] [Thread-161960] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:55:14.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:55:14.327 [DEBUG] [Thread-161960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:55:14.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:55:14.383 [DEBUG] [Thread-161960] [transport.py] [_log()] userauth is OK
2025-09-29T16:55:14.383 [DEBUG] [Thread-161960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:55:14.383 [DEBUG] [Thread-161960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:55:14.383 [DEBUG] [Thread-161960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:55:14.383 [DEBUG] [Thread-161960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:55:14.403 [INFO] [Thread-161960] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:55:14.403 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:55:14.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:55:15.398 [DEBUG] [Thread-161960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:55:15.399 [DEBUG] [Thread-161960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:55:15.446 [DEBUG] [Thread-161960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:55:15.446 [DEBUG] [Thread-161960] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:55:15.455 [DEBUG] [Thread-161960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:55:15.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:55:15.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:55:15.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:55:15.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:55:15.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:55:15.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:55:15.490 [DEBUG] [Thread-161960] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:55:24.232 [DEBUG] [Thread-161962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:55:25.169 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:55:25.170 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:55:25.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:55:25.493 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:55:25.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:55:26.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 55, 6), 14.08, 38.45, 0.0, 22.97, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:55:26.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:55:06
2025-09-29T16:55:26.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:55:26.312 [DEBUG] [Thread-161963] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bf0
2025-09-29T16:55:26.312 [DEBUG] [Thread-161963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:55:26.332 [DEBUG] [Thread-161963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:55:26.332 [INFO] [Thread-161963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:55:26.335 [DEBUG] [Thread-161963] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] client lang: <none>
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] server lang: <none>
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] kex follows: False
2025-09-29T16:55:26.336 [DEBUG] [Thread-161963] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:55:26.337 [DEBUG] [Thread-161963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:55:26.337 [DEBUG] [Thread-161963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:55:26.337 [DEBUG] [Thread-161963] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:55:26.337 [DEBUG] [Thread-161963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:55:26.337 [DEBUG] [Thread-161963] [transport.py] [_log()] Compression: none
2025-09-29T16:55:26.337 [DEBUG] [Thread-161963] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:55:26.355 [DEBUG] [Thread-161963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:55:26.356 [DEBUG] [Thread-161963] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:55:26.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:55:26.357 [DEBUG] [Thread-161963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:55:26.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:55:26.359 [DEBUG] [Thread-161963] [transport.py] [_log()] userauth is OK
2025-09-29T16:55:26.359 [DEBUG] [Thread-161963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:55:26.359 [DEBUG] [Thread-161963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:55:26.359 [DEBUG] [Thread-161963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:55:26.360 [DEBUG] [Thread-161963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:55:26.376 [INFO] [Thread-161963] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:55:26.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:55:26.947 [DEBUG] [Thread-161963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:55:26.947 [DEBUG] [Thread-161963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:55:26.948 [DEBUG] [Thread-161963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:55:26.988 [DEBUG] [Thread-161963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:55:26.988 [DEBUG] [Thread-161963] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:55:26.990 [DEBUG] [Thread-161963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:55:26.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:55:26.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:55:26.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:55:26.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:55:27.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:55:27.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:55:27.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:55:27.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:55:27.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:55:27.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.621593 -999.00  +14.60  15.51     43   +2.40 1 1 1 1 1   887    0 11.87 -24.23 ----- 19.7 15.5 152.6 29.2 19.1 -28.7 18.8 -27.5 20.5 -27.7 21.1 -29.9
2025-09-29T16:55:27.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:55:27.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:55:27.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.621593
2025-09-29T16:55:27.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:55:27.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:55:27.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:55:27.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:55:27.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:55:27.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:55:06', tmtdew=14.08, humidity=38.45, cloud=0.0, wind=22.97, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:55:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:55:27.005 [DEBUG] [Thread-161963] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:55:27.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:55:27.096 [DEBUG] [Thread-161966] [transport.py] [_log()] starting thread (client mode): 0x2b9cf2b0
2025-09-29T16:55:27.097 [DEBUG] [Thread-161966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:55:27.111 [DEBUG] [Thread-161966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:55:27.111 [INFO] [Thread-161966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:55:27.119 [DEBUG] [Thread-161966] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:55:27.119 [DEBUG] [Thread-161966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:55:27.119 [DEBUG] [Thread-161966] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:55:27.119 [DEBUG] [Thread-161966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:27.119 [DEBUG] [Thread-161966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:27.119 [DEBUG] [Thread-161966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:27.119 [DEBUG] [Thread-161966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:27.119 [DEBUG] [Thread-161966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] client lang: <none>
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] server lang: <none>
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] kex follows: False
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:55:27.120 [DEBUG] [Thread-161966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:55:27.121 [DEBUG] [Thread-161966] [transport.py] [_log()] Compression: none
2025-09-29T16:55:27.121 [DEBUG] [Thread-161966] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:55:27.179 [DEBUG] [Thread-161966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:55:27.180 [DEBUG] [Thread-161966] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:55:27.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:55:27.181 [DEBUG] [Thread-161966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:55:27.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:55:27.235 [DEBUG] [Thread-161966] [transport.py] [_log()] userauth is OK
2025-09-29T16:55:27.235 [DEBUG] [Thread-161966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:55:27.235 [DEBUG] [Thread-161966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:55:27.236 [DEBUG] [Thread-161966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:55:27.236 [DEBUG] [Thread-161966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:55:27.255 [INFO] [Thread-161966] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:55:27.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:55:27.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:55:28.354 [DEBUG] [Thread-161966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:55:28.354 [DEBUG] [Thread-161966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:55:28.402 [DEBUG] [Thread-161966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:55:28.402 [DEBUG] [Thread-161966] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:55:28.411 [DEBUG] [Thread-161966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:55:28.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:55:28.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:55:28.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:55:28.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:55:28.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:55:28.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:55:28.444 [DEBUG] [Thread-161966] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:55:38.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:55:38.447 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:55:38.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:55:39.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 55, 6), 14.08, 38.45, 0.0, 22.97, 14.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:55:39.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:55:06
2025-09-29T16:55:39.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:55:39.259 [DEBUG] [Thread-161968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:55:39.331 [DEBUG] [Thread-161969] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-29T16:55:39.331 [DEBUG] [Thread-161969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:55:39.350 [DEBUG] [Thread-161969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:55:39.350 [INFO] [Thread-161969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:55:39.353 [DEBUG] [Thread-161969] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:55:39.353 [DEBUG] [Thread-161969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:55:39.353 [DEBUG] [Thread-161969] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:55:39.353 [DEBUG] [Thread-161969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:39.353 [DEBUG] [Thread-161969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:39.353 [DEBUG] [Thread-161969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] client lang: <none>
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] server lang: <none>
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] kex follows: False
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] Compression: none
2025-09-29T16:55:39.354 [DEBUG] [Thread-161969] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:55:39.370 [DEBUG] [Thread-161969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:55:39.370 [DEBUG] [Thread-161969] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:55:39.371 [DEBUG] [Thread-161969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:55:39.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:55:39.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:55:39.371 [DEBUG] [Thread-161969] [transport.py] [_log()] userauth is OK
2025-09-29T16:55:39.371 [DEBUG] [Thread-161969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:55:39.371 [DEBUG] [Thread-161969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:55:39.371 [DEBUG] [Thread-161969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:55:39.371 [DEBUG] [Thread-161969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:55:39.381 [INFO] [Thread-161969] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:55:39.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:55:40.077 [DEBUG] [Thread-161969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:55:40.077 [DEBUG] [Thread-161969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:55:40.077 [DEBUG] [Thread-161969] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:55:40.118 [DEBUG] [Thread-161969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:55:40.118 [DEBUG] [Thread-161969] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:55:40.121 [DEBUG] [Thread-161969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:55:40.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:55:40.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:55:40.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:55:40.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:55:40.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:55:40.139 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:55:40.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:55:40.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:55:40.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:55:40.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.621593 -999.00  +14.60  15.51     43   +2.40 1 1 1 1 1   887    0 11.87 -24.23 ----- 19.7 15.5 152.6 29.2 19.1 -28.7 18.8 -27.5 20.5 -27.7 21.1 -29.9
2025-09-29T16:55:40.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:55:40.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:55:40.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.621593
2025-09-29T16:55:40.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:55:40.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:55:40.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:55:40.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:55:40.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:55:40.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:55:06', tmtdew=14.08, humidity=38.45, cloud=0.0, wind=22.97, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:55:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:55:40.140 [DEBUG] [Thread-161969] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:55:40.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:55:40.226 [DEBUG] [Thread-161972] [transport.py] [_log()] starting thread (client mode): 0x2e3c3e80
2025-09-29T16:55:40.226 [DEBUG] [Thread-161972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:55:40.240 [DEBUG] [Thread-161972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:55:40.240 [INFO] [Thread-161972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] client lang: <none>
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] server lang: <none>
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] kex follows: False
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] Compression: none
2025-09-29T16:55:40.248 [DEBUG] [Thread-161972] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:55:40.306 [DEBUG] [Thread-161972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:55:40.306 [DEBUG] [Thread-161972] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:55:40.306 [DEBUG] [Thread-161972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:55:40.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:55:40.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:55:40.363 [DEBUG] [Thread-161972] [transport.py] [_log()] userauth is OK
2025-09-29T16:55:40.363 [DEBUG] [Thread-161972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:55:40.363 [DEBUG] [Thread-161972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:55:40.363 [DEBUG] [Thread-161972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:55:40.363 [DEBUG] [Thread-161972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:55:40.379 [INFO] [Thread-161972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:55:40.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:55:40.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:55:41.360 [DEBUG] [Thread-161972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:55:41.360 [DEBUG] [Thread-161972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:55:41.408 [DEBUG] [Thread-161972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:55:41.408 [DEBUG] [Thread-161972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:55:41.417 [DEBUG] [Thread-161972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:55:41.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:55:41.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:55:41.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:55:41.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:55:41.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:55:41.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:55:41.451 [DEBUG] [Thread-161972] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:55:49.500 [DEBUG] [Thread-161974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:55:51.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:55:51.454 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:55:51.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:55:52.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 55, 38), 14.37, 37.63, 0.0, 20.1, 14.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:55:52.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:55:38
2025-09-29T16:55:52.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:55:52.278 [DEBUG] [Thread-161975] [transport.py] [_log()] starting thread (client mode): 0x2e3c1600
2025-09-29T16:55:52.279 [DEBUG] [Thread-161975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:55:52.300 [DEBUG] [Thread-161975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:55:52.300 [INFO] [Thread-161975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] client lang: <none>
2025-09-29T16:55:52.303 [DEBUG] [Thread-161975] [transport.py] [_log()] server lang: <none>
2025-09-29T16:55:52.304 [DEBUG] [Thread-161975] [transport.py] [_log()] kex follows: False
2025-09-29T16:55:52.304 [DEBUG] [Thread-161975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:55:52.304 [DEBUG] [Thread-161975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:55:52.304 [DEBUG] [Thread-161975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:55:52.304 [DEBUG] [Thread-161975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:55:52.304 [DEBUG] [Thread-161975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:55:52.304 [DEBUG] [Thread-161975] [transport.py] [_log()] Compression: none
2025-09-29T16:55:52.304 [DEBUG] [Thread-161975] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:55:52.321 [DEBUG] [Thread-161975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:55:52.321 [DEBUG] [Thread-161975] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:55:52.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:55:52.322 [DEBUG] [Thread-161975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:55:52.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:55:52.324 [DEBUG] [Thread-161975] [transport.py] [_log()] userauth is OK
2025-09-29T16:55:52.324 [DEBUG] [Thread-161975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:55:52.324 [DEBUG] [Thread-161975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:55:52.325 [DEBUG] [Thread-161975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:55:52.325 [DEBUG] [Thread-161975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:55:52.339 [INFO] [Thread-161975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:55:52.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:55:52.923 [DEBUG] [Thread-161975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:55:52.923 [DEBUG] [Thread-161975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:55:52.923 [DEBUG] [Thread-161975] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:55:52.964 [DEBUG] [Thread-161975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:55:52.964 [DEBUG] [Thread-161975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:55:52.967 [DEBUG] [Thread-161975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:55:52.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:55:52.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:55:52.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:55:52.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:55:52.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:55:52.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:55:52.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:55:52.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:55:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:55:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.621941 -999.00  +14.40  21.57     44   +2.30 1 1 1 1 1   887    0 11.78 -21.18 ----- 15.0 21.6 139.0 27.5 19.0 -28.4 18.8 -27.6 20.4 -28.2 21.1 -29.0
2025-09-29T16:55:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:55:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:55:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.621941
2025-09-29T16:55:52.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:55:52.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:55:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:55:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:55:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:55:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:55:38', tmtdew=14.37, humidity=37.63, cloud=0.0, wind=20.1, temperature=14.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:55:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:55:52.993 [DEBUG] [Thread-161975] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:55:53.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:55:53.087 [DEBUG] [Thread-161978] [transport.py] [_log()] starting thread (client mode): 0x2e34a1d0
2025-09-29T16:55:53.087 [DEBUG] [Thread-161978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:55:53.102 [DEBUG] [Thread-161978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:55:53.102 [INFO] [Thread-161978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:55:53.109 [DEBUG] [Thread-161978] [transport.py] [_log()] client lang: <none>
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] server lang: <none>
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] kex follows: False
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] Compression: none
2025-09-29T16:55:53.110 [DEBUG] [Thread-161978] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:55:53.167 [DEBUG] [Thread-161978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:55:53.168 [DEBUG] [Thread-161978] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:55:53.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:55:53.169 [DEBUG] [Thread-161978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:55:53.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:55:53.223 [DEBUG] [Thread-161978] [transport.py] [_log()] userauth is OK
2025-09-29T16:55:53.223 [DEBUG] [Thread-161978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:55:53.223 [DEBUG] [Thread-161978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:55:53.224 [DEBUG] [Thread-161978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:55:53.224 [DEBUG] [Thread-161978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:55:53.246 [INFO] [Thread-161978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:55:53.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:55:53.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:55:54.233 [DEBUG] [Thread-161978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:55:54.233 [DEBUG] [Thread-161978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:55:54.280 [DEBUG] [Thread-161978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:55:54.280 [DEBUG] [Thread-161978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:55:54.289 [DEBUG] [Thread-161978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:55:54.298 [DEBUG] [Thread-161980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:55:54.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:55:54.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:55:54.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:55:54.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:55:54.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:55:54.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:55:54.326 [DEBUG] [Thread-161978] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:04.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:56:04.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:56:04.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:56:04.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 55, 38), 14.37, 37.63, 0.0, 20.1, 14.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:56:04.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:55:38
2025-09-29T16:56:05.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:56:05.156 [DEBUG] [Thread-161981] [transport.py] [_log()] starting thread (client mode): 0x2b91fa30
2025-09-29T16:56:05.156 [DEBUG] [Thread-161981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:05.177 [DEBUG] [Thread-161981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:56:05.177 [INFO] [Thread-161981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] Compression: none
2025-09-29T16:56:05.180 [DEBUG] [Thread-161981] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:05.198 [DEBUG] [Thread-161981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:05.198 [DEBUG] [Thread-161981] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:05.198 [DEBUG] [Thread-161981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:56:05.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:56:05.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:05.199 [DEBUG] [Thread-161981] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:05.199 [DEBUG] [Thread-161981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:05.199 [DEBUG] [Thread-161981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:05.199 [DEBUG] [Thread-161981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:56:05.199 [DEBUG] [Thread-161981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:05.211 [INFO] [Thread-161981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:05.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:06.179 [DEBUG] [Thread-161981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:06.179 [DEBUG] [Thread-161981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:06.180 [DEBUG] [Thread-161981] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:56:06.220 [DEBUG] [Thread-161981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:06.221 [DEBUG] [Thread-161981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:06.223 [DEBUG] [Thread-161981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:06.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:06.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:56:06.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:56:06.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:56:06.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:06.247 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:56:06.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:06.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:06.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:56:06.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.621941 -999.00  +14.40  21.57     44   +2.30 1 1 1 1 1   887    0 11.78 -21.18 ----- 15.0 21.6 139.0 27.5 19.0 -28.4 18.8 -27.6 20.4 -28.2 21.1 -29.0
2025-09-29T16:56:06.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:56:06.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:56:06.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.621941
2025-09-29T16:56:06.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:56:06.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:56:06.250 [DEBUG] [Thread-161981] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:06.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:56:06.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:56:06.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:56:06.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:55:38', tmtdew=14.37, humidity=37.63, cloud=0.0, wind=20.1, temperature=14.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:55:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:56:06.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:56:06.345 [DEBUG] [Thread-161984] [transport.py] [_log()] starting thread (client mode): 0x2b96bb80
2025-09-29T16:56:06.345 [DEBUG] [Thread-161984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:06.358 [DEBUG] [Thread-161984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:56:06.358 [INFO] [Thread-161984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:56:06.366 [DEBUG] [Thread-161984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:06.366 [DEBUG] [Thread-161984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] Compression: none
2025-09-29T16:56:06.367 [DEBUG] [Thread-161984] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:06.423 [DEBUG] [Thread-161984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:06.424 [DEBUG] [Thread-161984] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:06.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:56:06.425 [DEBUG] [Thread-161984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:56:06.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:06.479 [DEBUG] [Thread-161984] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:06.480 [DEBUG] [Thread-161984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:06.480 [DEBUG] [Thread-161984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:06.480 [DEBUG] [Thread-161984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:56:06.480 [DEBUG] [Thread-161984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:06.498 [INFO] [Thread-161984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:06.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:56:06.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:07.488 [DEBUG] [Thread-161984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:07.488 [DEBUG] [Thread-161984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:07.536 [DEBUG] [Thread-161984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:07.536 [DEBUG] [Thread-161984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:07.545 [DEBUG] [Thread-161984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:07.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:07.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:56:07.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:56:07.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:07.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:07.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:07.580 [DEBUG] [Thread-161984] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:09.355 [DEBUG] [Thread-161986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:56:17.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:56:17.583 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:56:17.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:56:18.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 56, 10), 14.4, 37.55, 0.0, 21.61, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:56:18.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:56:10
2025-09-29T16:56:18.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:56:18.419 [DEBUG] [Thread-161987] [transport.py] [_log()] starting thread (client mode): 0x2b9cc940
2025-09-29T16:56:18.419 [DEBUG] [Thread-161987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:18.438 [DEBUG] [Thread-161987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:56:18.438 [INFO] [Thread-161987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:56:18.441 [DEBUG] [Thread-161987] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:18.442 [DEBUG] [Thread-161987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:18.443 [DEBUG] [Thread-161987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:18.443 [DEBUG] [Thread-161987] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:18.443 [DEBUG] [Thread-161987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:18.443 [DEBUG] [Thread-161987] [transport.py] [_log()] Compression: none
2025-09-29T16:56:18.443 [DEBUG] [Thread-161987] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:18.459 [DEBUG] [Thread-161987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:18.460 [DEBUG] [Thread-161987] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:18.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:56:18.461 [DEBUG] [Thread-161987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:56:18.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:18.462 [DEBUG] [Thread-161987] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:18.462 [DEBUG] [Thread-161987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:18.463 [DEBUG] [Thread-161987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:18.463 [DEBUG] [Thread-161987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:56:18.463 [DEBUG] [Thread-161987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:18.479 [INFO] [Thread-161987] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:18.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:19.218 [DEBUG] [Thread-161987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:19.219 [DEBUG] [Thread-161987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:19.219 [DEBUG] [Thread-161987] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:56:19.259 [DEBUG] [Thread-161987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:19.259 [DEBUG] [Thread-161987] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:19.261 [DEBUG] [Thread-161987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:19.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:19.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:56:19.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:56:19.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:56:19.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:19.284 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:56:19.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:19.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:19.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:56:19.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.621941 -999.00  +14.40  21.57     44   +2.30 1 1 1 1 1   887    0 11.78 -21.18 ----- 15.0 21.6 139.0 27.5 19.0 -28.4 18.8 -27.6 20.4 -28.2 21.1 -29.0
2025-09-29T16:56:19.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:56:19.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:56:19.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.621941
2025-09-29T16:56:19.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:56:19.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:56:19.286 [DEBUG] [Thread-161987] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:19.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:56:19.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:56:19.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:56:19.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:56:10', tmtdew=14.4, humidity=37.55, cloud=0.0, wind=21.61, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:55:35.702', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:56:19.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:56:19.392 [DEBUG] [Thread-161990] [transport.py] [_log()] starting thread (client mode): 0x2e3c0490
2025-09-29T16:56:19.392 [DEBUG] [Thread-161990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:19.410 [DEBUG] [Thread-161990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:56:19.411 [INFO] [Thread-161990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:56:19.418 [DEBUG] [Thread-161990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:19.418 [DEBUG] [Thread-161990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:19.419 [DEBUG] [Thread-161990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:19.420 [DEBUG] [Thread-161990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:19.420 [DEBUG] [Thread-161990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:19.420 [DEBUG] [Thread-161990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:19.420 [DEBUG] [Thread-161990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:19.420 [DEBUG] [Thread-161990] [transport.py] [_log()] Compression: none
2025-09-29T16:56:19.420 [DEBUG] [Thread-161990] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:19.475 [DEBUG] [Thread-161990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:19.476 [DEBUG] [Thread-161990] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:19.477 [DEBUG] [Thread-161990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:56:19.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:56:19.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:19.532 [DEBUG] [Thread-161990] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:19.532 [DEBUG] [Thread-161990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:19.532 [DEBUG] [Thread-161990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:19.532 [DEBUG] [Thread-161990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:56:19.532 [DEBUG] [Thread-161990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:19.553 [INFO] [Thread-161990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:19.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:56:19.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:20.549 [DEBUG] [Thread-161990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:20.550 [DEBUG] [Thread-161990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:20.597 [DEBUG] [Thread-161990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:20.597 [DEBUG] [Thread-161990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:20.606 [DEBUG] [Thread-161990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:20.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:20.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:56:20.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:56:20.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:20.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:20.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:20.640 [DEBUG] [Thread-161990] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:24.387 [DEBUG] [Thread-161992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:56:25.314 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:56:25.315 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:56:30.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:56:30.643 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:56:30.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:56:31.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 56, 10), 14.4, 37.55, 0.0, 21.61, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:56:31.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:56:10
2025-09-29T16:56:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:56:31.466 [DEBUG] [Thread-161993] [transport.py] [_log()] starting thread (client mode): 0x2e38c850
2025-09-29T16:56:31.466 [DEBUG] [Thread-161993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:31.486 [DEBUG] [Thread-161993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:56:31.486 [INFO] [Thread-161993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:31.488 [DEBUG] [Thread-161993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] Compression: none
2025-09-29T16:56:31.489 [DEBUG] [Thread-161993] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:31.507 [DEBUG] [Thread-161993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:31.508 [DEBUG] [Thread-161993] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:31.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:56:31.508 [DEBUG] [Thread-161993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:56:31.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:31.510 [DEBUG] [Thread-161993] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:31.510 [DEBUG] [Thread-161993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:31.510 [DEBUG] [Thread-161993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:31.510 [DEBUG] [Thread-161993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:56:31.510 [DEBUG] [Thread-161993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:31.525 [INFO] [Thread-161993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:31.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:32.097 [DEBUG] [Thread-161993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:32.097 [DEBUG] [Thread-161993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:32.098 [DEBUG] [Thread-161993] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:56:32.138 [DEBUG] [Thread-161993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:32.139 [DEBUG] [Thread-161993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:32.141 [DEBUG] [Thread-161993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:32.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:32.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:56:32.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:56:32.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:56:32.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:32.162 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:56:32.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:32.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:32.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:56:32.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.622288 -999.00  +14.30  18.12     44   +2.30 1 1 1 1 1   887    0 11.28 -20.34 ----- 19.6 18.1 140.8 23.3 19.0 -27.9 18.8 -27.3 20.4 -27.5 21.1 -28.6
2025-09-29T16:56:32.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:56:32.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:56:32.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.622288
2025-09-29T16:56:32.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:56:32.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:56:32.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:56:32.164 [DEBUG] [Thread-161993] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:32.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:56:32.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:56:32.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:56:10', tmtdew=14.4, humidity=37.55, cloud=0.0, wind=21.61, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:56:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:56:32.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:56:32.258 [DEBUG] [Thread-161996] [transport.py] [_log()] starting thread (client mode): 0x2b91ef80
2025-09-29T16:56:32.258 [DEBUG] [Thread-161996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:32.275 [DEBUG] [Thread-161996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:56:32.275 [INFO] [Thread-161996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:32.285 [DEBUG] [Thread-161996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:32.286 [DEBUG] [Thread-161996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:32.286 [DEBUG] [Thread-161996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:32.286 [DEBUG] [Thread-161996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:32.286 [DEBUG] [Thread-161996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:32.286 [DEBUG] [Thread-161996] [transport.py] [_log()] Compression: none
2025-09-29T16:56:32.286 [DEBUG] [Thread-161996] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:32.344 [DEBUG] [Thread-161996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:32.344 [DEBUG] [Thread-161996] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:32.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:56:32.346 [DEBUG] [Thread-161996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:56:32.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:32.405 [DEBUG] [Thread-161996] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:32.405 [DEBUG] [Thread-161996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:32.405 [DEBUG] [Thread-161996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:32.405 [DEBUG] [Thread-161996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:56:32.405 [DEBUG] [Thread-161996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:32.424 [INFO] [Thread-161996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:32.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:56:32.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:33.494 [DEBUG] [Thread-161996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:33.494 [DEBUG] [Thread-161996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:33.542 [DEBUG] [Thread-161996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:33.542 [DEBUG] [Thread-161996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:33.550 [DEBUG] [Thread-161996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:33.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:33.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:56:33.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:56:33.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:33.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:33.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:33.582 [DEBUG] [Thread-161996] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:39.435 [DEBUG] [Thread-161998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:56:43.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:56:43.584 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:56:43.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:56:44.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 56, 10), 14.4, 37.55, 0.0, 21.61, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:56:44.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:56:10
2025-09-29T16:56:44.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:56:44.473 [DEBUG] [Thread-161999] [transport.py] [_log()] starting thread (client mode): 0x2e3c0bb0
2025-09-29T16:56:44.473 [DEBUG] [Thread-161999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:44.494 [DEBUG] [Thread-161999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:56:44.494 [INFO] [Thread-161999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:44.496 [DEBUG] [Thread-161999] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:44.497 [DEBUG] [Thread-161999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:44.497 [DEBUG] [Thread-161999] [transport.py] [_log()] Compression: none
2025-09-29T16:56:44.497 [DEBUG] [Thread-161999] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:44.509 [DEBUG] [Thread-161999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:44.509 [DEBUG] [Thread-161999] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:44.509 [DEBUG] [Thread-161999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:56:44.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:56:44.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:44.510 [DEBUG] [Thread-161999] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:44.510 [DEBUG] [Thread-161999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:44.510 [DEBUG] [Thread-161999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:44.510 [DEBUG] [Thread-161999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:56:44.510 [DEBUG] [Thread-161999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:44.519 [INFO] [Thread-161999] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:44.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:45.260 [DEBUG] [Thread-161999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:45.260 [DEBUG] [Thread-161999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:45.260 [DEBUG] [Thread-161999] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:56:45.301 [DEBUG] [Thread-161999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:45.301 [DEBUG] [Thread-161999] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:45.303 [DEBUG] [Thread-161999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:45.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:45.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:56:45.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:56:45.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:56:45.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:45.321 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:56:45.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:45.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:56:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.622288 -999.00  +14.30  18.12     44   +2.30 1 1 1 1 1   887    0 11.28 -20.34 ----- 19.6 18.1 140.8 23.3 19.0 -27.9 18.8 -27.3 20.4 -27.5 21.1 -28.6
2025-09-29T16:56:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:56:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:56:45.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.622288
2025-09-29T16:56:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:56:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:56:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:56:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:56:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:56:45.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:56:10', tmtdew=14.4, humidity=37.55, cloud=0.0, wind=21.61, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:56:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:56:45.323 [DEBUG] [Thread-161999] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:45.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:56:45.406 [DEBUG] [Thread-162002] [transport.py] [_log()] starting thread (client mode): 0x2e38eb60
2025-09-29T16:56:45.406 [DEBUG] [Thread-162002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:45.421 [DEBUG] [Thread-162002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:56:45.421 [INFO] [Thread-162002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] Compression: none
2025-09-29T16:56:45.429 [DEBUG] [Thread-162002] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:45.486 [DEBUG] [Thread-162002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:45.486 [DEBUG] [Thread-162002] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:45.487 [DEBUG] [Thread-162002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:56:45.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:56:45.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:45.544 [DEBUG] [Thread-162002] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:45.544 [DEBUG] [Thread-162002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:45.544 [DEBUG] [Thread-162002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:45.544 [DEBUG] [Thread-162002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:56:45.544 [DEBUG] [Thread-162002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:45.557 [INFO] [Thread-162002] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:45.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:56:45.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:46.544 [DEBUG] [Thread-162002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:46.544 [DEBUG] [Thread-162002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:46.592 [DEBUG] [Thread-162002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:46.592 [DEBUG] [Thread-162002] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:46.600 [DEBUG] [Thread-162002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:46.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:46.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:56:46.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:56:46.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:46.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:46.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:46.631 [DEBUG] [Thread-162002] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:49.535 [DEBUG] [Thread-162004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:56:54.484 [DEBUG] [Thread-162005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:56:56.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:56:56.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:56:56.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:56:57.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 56, 42), 14.46, 37.25, 0.0, 19.8, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:56:57.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:56:42
2025-09-29T16:56:57.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:56:57.458 [DEBUG] [Thread-162006] [transport.py] [_log()] starting thread (client mode): 0x2e38e710
2025-09-29T16:56:57.458 [DEBUG] [Thread-162006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:57.471 [DEBUG] [Thread-162006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:56:57.471 [INFO] [Thread-162006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:56:57.472 [DEBUG] [Thread-162006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:57.472 [DEBUG] [Thread-162006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:56:57.472 [DEBUG] [Thread-162006] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] Compression: none
2025-09-29T16:56:57.473 [DEBUG] [Thread-162006] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:57.481 [DEBUG] [Thread-162006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:57.481 [DEBUG] [Thread-162006] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:57.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:56:57.482 [DEBUG] [Thread-162006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:56:57.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:57.483 [DEBUG] [Thread-162006] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:57.483 [DEBUG] [Thread-162006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:57.484 [DEBUG] [Thread-162006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:57.484 [DEBUG] [Thread-162006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:56:57.484 [DEBUG] [Thread-162006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:57.507 [INFO] [Thread-162006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:57.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:58.113 [DEBUG] [Thread-162006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:58.113 [DEBUG] [Thread-162006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:58.114 [DEBUG] [Thread-162006] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:56:58.154 [DEBUG] [Thread-162006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:58.155 [DEBUG] [Thread-162006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:58.157 [DEBUG] [Thread-162006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:58.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:58.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:56:58.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:56:58.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:56:58.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:58.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:56:58.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:58.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:58.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:56:58.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.622635 -999.00  +14.40  22.85     44   +2.30 1 1 1 1 1   887    0 11.75 -16.95 ----- 17.9 22.9 174.8 27.0 19.1 -28.5 18.7 -27.3 20.4 -26.7 21.1 -29.5
2025-09-29T16:56:58.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:56:58.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:56:58.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.622635
2025-09-29T16:56:58.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:56:58.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:56:58.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:56:58.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:56:58.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:56:58.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:56:42', tmtdew=14.46, humidity=37.25, cloud=0.0, wind=19.8, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:56:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:56:58.183 [DEBUG] [Thread-162006] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:56:58.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:56:58.282 [DEBUG] [Thread-162009] [transport.py] [_log()] starting thread (client mode): 0x2e38ed10
2025-09-29T16:56:58.282 [DEBUG] [Thread-162009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:56:58.297 [DEBUG] [Thread-162009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:56:58.297 [INFO] [Thread-162009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:56:58.305 [DEBUG] [Thread-162009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:56:58.305 [DEBUG] [Thread-162009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:56:58.305 [DEBUG] [Thread-162009] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:56:58.305 [DEBUG] [Thread-162009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] client lang: <none>
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] server lang: <none>
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] kex follows: False
2025-09-29T16:56:58.306 [DEBUG] [Thread-162009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:56:58.307 [DEBUG] [Thread-162009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:56:58.307 [DEBUG] [Thread-162009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:56:58.307 [DEBUG] [Thread-162009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:56:58.307 [DEBUG] [Thread-162009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:56:58.307 [DEBUG] [Thread-162009] [transport.py] [_log()] Compression: none
2025-09-29T16:56:58.307 [DEBUG] [Thread-162009] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:56:58.364 [DEBUG] [Thread-162009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:56:58.365 [DEBUG] [Thread-162009] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:56:58.365 [DEBUG] [Thread-162009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:56:58.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:56:58.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:56:58.420 [DEBUG] [Thread-162009] [transport.py] [_log()] userauth is OK
2025-09-29T16:56:58.420 [DEBUG] [Thread-162009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:56:58.420 [DEBUG] [Thread-162009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:56:58.421 [DEBUG] [Thread-162009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:56:58.421 [DEBUG] [Thread-162009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:56:58.441 [INFO] [Thread-162009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:56:58.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:56:58.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:56:59.481 [DEBUG] [Thread-162009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:56:59.481 [DEBUG] [Thread-162009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:56:59.529 [DEBUG] [Thread-162009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:56:59.529 [DEBUG] [Thread-162009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:56:59.538 [DEBUG] [Thread-162009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:56:59.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:56:59.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:56:59.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:56:59.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:56:59.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:56:59.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:56:59.572 [DEBUG] [Thread-162009] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:09.518 [DEBUG] [Thread-162011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:57:09.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:57:09.572 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:57:09.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:57:10.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 56, 42), 14.46, 37.25, 0.0, 19.8, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:57:10.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:56:42
2025-09-29T16:57:10.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:57:10.403 [DEBUG] [Thread-162012] [transport.py] [_log()] starting thread (client mode): 0x2e34ba60
2025-09-29T16:57:10.403 [DEBUG] [Thread-162012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:57:10.424 [DEBUG] [Thread-162012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:57:10.424 [INFO] [Thread-162012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:57:10.425 [DEBUG] [Thread-162012] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:57:10.425 [DEBUG] [Thread-162012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] client lang: <none>
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] server lang: <none>
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] kex follows: False
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] Compression: none
2025-09-29T16:57:10.426 [DEBUG] [Thread-162012] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:57:10.443 [DEBUG] [Thread-162012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:57:10.443 [DEBUG] [Thread-162012] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:57:10.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:57:10.445 [DEBUG] [Thread-162012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:57:10.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:57:10.446 [DEBUG] [Thread-162012] [transport.py] [_log()] userauth is OK
2025-09-29T16:57:10.447 [DEBUG] [Thread-162012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:57:10.447 [DEBUG] [Thread-162012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:57:10.447 [DEBUG] [Thread-162012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:57:10.447 [DEBUG] [Thread-162012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:57:10.471 [INFO] [Thread-162012] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:57:10.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:57:11.259 [DEBUG] [Thread-162012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:57:11.259 [DEBUG] [Thread-162012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:57:11.259 [DEBUG] [Thread-162012] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:57:11.300 [DEBUG] [Thread-162012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:57:11.300 [DEBUG] [Thread-162012] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:57:11.303 [DEBUG] [Thread-162012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:57:11.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:57:11.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:57:11.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:57:11.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:57:11.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:57:11.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:57:11.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.622635 -999.00  +14.40  22.85     44   +2.30 1 1 1 1 1   887    0 11.75 -16.95 ----- 17.9 22.9 174.8 27.0 19.1 -28.5 18.7 -27.3 20.4 -26.7 21.1 -29.5
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.622635
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:57:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:56:42', tmtdew=14.46, humidity=37.25, cloud=0.0, wind=19.8, temperature=14.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:56:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:57:11.317 [DEBUG] [Thread-162012] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:11.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:57:11.401 [DEBUG] [Thread-162015] [transport.py] [_log()] starting thread (client mode): 0x2e3c0bb0
2025-09-29T16:57:11.401 [DEBUG] [Thread-162015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:57:11.421 [DEBUG] [Thread-162015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:57:11.421 [INFO] [Thread-162015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:57:11.428 [DEBUG] [Thread-162015] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] client lang: <none>
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] server lang: <none>
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] kex follows: False
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:57:11.429 [DEBUG] [Thread-162015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:57:11.430 [DEBUG] [Thread-162015] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:57:11.430 [DEBUG] [Thread-162015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:57:11.430 [DEBUG] [Thread-162015] [transport.py] [_log()] Compression: none
2025-09-29T16:57:11.430 [DEBUG] [Thread-162015] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:57:11.488 [DEBUG] [Thread-162015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:57:11.488 [DEBUG] [Thread-162015] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:57:11.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:57:11.489 [DEBUG] [Thread-162015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:57:11.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:57:11.544 [DEBUG] [Thread-162015] [transport.py] [_log()] userauth is OK
2025-09-29T16:57:11.544 [DEBUG] [Thread-162015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:57:11.545 [DEBUG] [Thread-162015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:57:11.545 [DEBUG] [Thread-162015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:57:11.545 [DEBUG] [Thread-162015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:57:11.564 [INFO] [Thread-162015] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:57:11.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:57:11.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:57:12.543 [DEBUG] [Thread-162015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:57:12.543 [DEBUG] [Thread-162015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:57:12.590 [DEBUG] [Thread-162015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:57:12.590 [DEBUG] [Thread-162015] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:57:12.598 [DEBUG] [Thread-162015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:57:12.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:57:12.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:57:12.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:57:12.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:57:12.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:57:12.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:57:12.631 [DEBUG] [Thread-162015] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:22.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:57:22.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:57:22.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:57:23.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 57, 14), 14.35, 37.48, 0.0, 20.77, 14.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:57:23.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:57:14
2025-09-29T16:57:23.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:57:23.482 [DEBUG] [Thread-162017] [transport.py] [_log()] starting thread (client mode): 0x2e363490
2025-09-29T16:57:23.482 [DEBUG] [Thread-162017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:57:23.502 [DEBUG] [Thread-162017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:57:23.503 [INFO] [Thread-162017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] client lang: <none>
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] server lang: <none>
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] kex follows: False
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] Compression: none
2025-09-29T16:57:23.506 [DEBUG] [Thread-162017] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:57:23.522 [DEBUG] [Thread-162017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:57:23.522 [DEBUG] [Thread-162017] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:57:23.522 [DEBUG] [Thread-162017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:57:23.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:57:23.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:57:23.523 [DEBUG] [Thread-162017] [transport.py] [_log()] userauth is OK
2025-09-29T16:57:23.531 [DEBUG] [Thread-162017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:57:23.531 [DEBUG] [Thread-162017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:57:23.531 [DEBUG] [Thread-162017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:57:23.531 [DEBUG] [Thread-162017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:57:23.540 [INFO] [Thread-162017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:57:23.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:57:24.314 [DEBUG] [Thread-162017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:57:24.314 [DEBUG] [Thread-162017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:57:24.314 [DEBUG] [Thread-162017] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:57:24.355 [DEBUG] [Thread-162017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:57:24.355 [DEBUG] [Thread-162017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:57:24.357 [DEBUG] [Thread-162017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:57:24.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:57:24.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:57:24.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:57:24.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:57:24.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:57:24.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:57:24.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.622635 -999.00  +14.40  22.85     44   +2.30 1 1 1 1 1   887    0 11.75 -16.95 ----- 17.9 22.9 174.8 27.0 19.1 -28.5 18.7 -27.3 20.4 -26.7 21.1 -29.5
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.622635
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:57:24.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:57:14', tmtdew=14.35, humidity=37.48, cloud=0.0, wind=20.77, temperature=14.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:56:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:57:24.374 [DEBUG] [Thread-162017] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:24.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:57:24.458 [DEBUG] [Thread-162020] [transport.py] [_log()] starting thread (client mode): 0x30ddf4f0
2025-09-29T16:57:24.458 [DEBUG] [Thread-162020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:57:24.473 [DEBUG] [Thread-162020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:57:24.473 [INFO] [Thread-162020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] client lang: <none>
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] server lang: <none>
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] kex follows: False
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:57:24.480 [DEBUG] [Thread-162020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:57:24.481 [DEBUG] [Thread-162020] [transport.py] [_log()] Compression: none
2025-09-29T16:57:24.481 [DEBUG] [Thread-162020] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:57:24.543 [DEBUG] [Thread-162020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:57:24.543 [DEBUG] [Thread-162020] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:57:24.543 [DEBUG] [Thread-162020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:57:24.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:57:24.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:57:24.560 [DEBUG] [Thread-162022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:57:24.600 [DEBUG] [Thread-162020] [transport.py] [_log()] userauth is OK
2025-09-29T16:57:24.600 [DEBUG] [Thread-162020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:57:24.600 [DEBUG] [Thread-162020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:57:24.600 [DEBUG] [Thread-162020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:57:24.600 [DEBUG] [Thread-162020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:57:24.614 [INFO] [Thread-162020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:57:24.614 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:57:24.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:57:25.454 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:57:25.455 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:57:25.646 [DEBUG] [Thread-162020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:57:25.646 [DEBUG] [Thread-162020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:57:25.694 [DEBUG] [Thread-162020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:57:25.694 [DEBUG] [Thread-162020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:57:25.702 [DEBUG] [Thread-162020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:57:25.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:57:25.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:57:25.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:57:25.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:57:25.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:57:25.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:57:25.734 [DEBUG] [Thread-162020] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:35.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:57:35.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:57:35.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:57:36.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 57, 14), 14.35, 37.48, 0.0, 20.77, 14.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:57:36.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:57:14
2025-09-29T16:57:36.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:57:36.582 [DEBUG] [Thread-162023] [transport.py] [_log()] starting thread (client mode): 0x2b921690
2025-09-29T16:57:36.583 [DEBUG] [Thread-162023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:57:36.601 [DEBUG] [Thread-162023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:57:36.601 [INFO] [Thread-162023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] client lang: <none>
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] server lang: <none>
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] kex follows: False
2025-09-29T16:57:36.605 [DEBUG] [Thread-162023] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:57:36.606 [DEBUG] [Thread-162023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:57:36.606 [DEBUG] [Thread-162023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:57:36.606 [DEBUG] [Thread-162023] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:57:36.606 [DEBUG] [Thread-162023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:57:36.606 [DEBUG] [Thread-162023] [transport.py] [_log()] Compression: none
2025-09-29T16:57:36.606 [DEBUG] [Thread-162023] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:57:36.624 [DEBUG] [Thread-162023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:57:36.625 [DEBUG] [Thread-162023] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:57:36.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:57:36.626 [DEBUG] [Thread-162023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:57:36.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:57:36.628 [DEBUG] [Thread-162023] [transport.py] [_log()] userauth is OK
2025-09-29T16:57:36.628 [DEBUG] [Thread-162023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:57:36.629 [DEBUG] [Thread-162023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:57:36.629 [DEBUG] [Thread-162023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:57:36.629 [DEBUG] [Thread-162023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:57:36.664 [INFO] [Thread-162023] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:57:36.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:57:37.219 [DEBUG] [Thread-162023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:57:37.219 [DEBUG] [Thread-162023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:57:37.219 [DEBUG] [Thread-162023] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:57:37.259 [DEBUG] [Thread-162023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:57:37.259 [DEBUG] [Thread-162023] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:57:37.262 [DEBUG] [Thread-162023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:57:37.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:57:37.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:57:37.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:57:37.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:57:37.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:57:37.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:57:37.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:57:37.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:57:37.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:57:37.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.622983 -999.00  +14.40  17.81     44   +2.40 1 1 1 1 1   887    0 11.87 -14.93 ----- 21.3 17.8 164.6 22.2 19.0 -28.0 18.5 -27.7 20.3 -27.5 21.1 -28.7
2025-09-29T16:57:37.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:57:37.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:57:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.622983
2025-09-29T16:57:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:57:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:57:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:57:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:57:37.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:57:37.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:57:14', tmtdew=14.35, humidity=37.48, cloud=0.0, wind=20.77, temperature=14.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:57:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:57:37.279 [DEBUG] [Thread-162023] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:37.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:57:37.374 [DEBUG] [Thread-162026] [transport.py] [_log()] starting thread (client mode): 0x2e38cbe0
2025-09-29T16:57:37.375 [DEBUG] [Thread-162026] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:57:37.389 [DEBUG] [Thread-162026] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:57:37.389 [INFO] [Thread-162026] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:57:37.396 [DEBUG] [Thread-162026] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:57:37.396 [DEBUG] [Thread-162026] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] client lang: <none>
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] server lang: <none>
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] kex follows: False
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] Compression: none
2025-09-29T16:57:37.397 [DEBUG] [Thread-162026] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:57:37.456 [DEBUG] [Thread-162026] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:57:37.457 [DEBUG] [Thread-162026] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:57:37.457 [DEBUG] [Thread-162026] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:57:37.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:57:37.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:57:37.513 [DEBUG] [Thread-162026] [transport.py] [_log()] userauth is OK
2025-09-29T16:57:37.513 [DEBUG] [Thread-162026] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:57:37.513 [DEBUG] [Thread-162026] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:57:37.513 [DEBUG] [Thread-162026] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:57:37.513 [DEBUG] [Thread-162026] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:57:37.531 [INFO] [Thread-162026] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:57:37.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:57:37.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:57:38.516 [DEBUG] [Thread-162026] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:57:38.517 [DEBUG] [Thread-162026] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:57:38.565 [DEBUG] [Thread-162026] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:57:38.565 [DEBUG] [Thread-162026] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:57:38.574 [DEBUG] [Thread-162026] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:57:38.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:57:38.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:57:38.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:57:38.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:57:38.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:57:38.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:57:38.607 [DEBUG] [Thread-162026] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:39.591 [DEBUG] [Thread-162028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:57:48.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:57:48.605 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:57:48.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:57:49.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 57, 46), 14.22, 37.82, 0.0, 22.81, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:57:49.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:57:46
2025-09-29T16:57:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:57:49.453 [DEBUG] [Thread-162029] [transport.py] [_log()] starting thread (client mode): 0x30ddf7c0
2025-09-29T16:57:49.453 [DEBUG] [Thread-162029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:57:49.473 [DEBUG] [Thread-162029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:57:49.473 [INFO] [Thread-162029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:57:49.476 [DEBUG] [Thread-162029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] client lang: <none>
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] server lang: <none>
2025-09-29T16:57:49.477 [DEBUG] [Thread-162029] [transport.py] [_log()] kex follows: False
2025-09-29T16:57:49.478 [DEBUG] [Thread-162029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:57:49.478 [DEBUG] [Thread-162029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:57:49.478 [DEBUG] [Thread-162029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:57:49.478 [DEBUG] [Thread-162029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:57:49.478 [DEBUG] [Thread-162029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:57:49.478 [DEBUG] [Thread-162029] [transport.py] [_log()] Compression: none
2025-09-29T16:57:49.478 [DEBUG] [Thread-162029] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:57:49.494 [DEBUG] [Thread-162029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:57:49.495 [DEBUG] [Thread-162029] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:57:49.496 [DEBUG] [Thread-162029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:57:49.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:57:49.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:57:49.497 [DEBUG] [Thread-162029] [transport.py] [_log()] userauth is OK
2025-09-29T16:57:49.498 [DEBUG] [Thread-162029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:57:49.498 [DEBUG] [Thread-162029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:57:49.498 [DEBUG] [Thread-162029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:57:49.498 [DEBUG] [Thread-162029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:57:49.513 [INFO] [Thread-162029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:57:49.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:57:49.576 [DEBUG] [Thread-162031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:57:50.231 [DEBUG] [Thread-162029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:57:50.231 [DEBUG] [Thread-162029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:57:50.231 [DEBUG] [Thread-162029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:57:50.272 [DEBUG] [Thread-162029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:57:50.272 [DEBUG] [Thread-162029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:57:50.275 [DEBUG] [Thread-162029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:57:50.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:57:50.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:57:50.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:57:50.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:57:50.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:57:50.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:57:50.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:57:50.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:57:50.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:57:50.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.622983 -999.00  +14.40  17.81     44   +2.40 1 1 1 1 1   887    0 11.87 -14.93 ----- 21.3 17.8 164.6 22.2 19.0 -28.0 18.5 -27.7 20.3 -27.5 21.1 -28.7
2025-09-29T16:57:50.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:57:50.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:57:50.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.622983
2025-09-29T16:57:50.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:57:50.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:57:50.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:57:50.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:57:50.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:57:50.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:57:46', tmtdew=14.22, humidity=37.82, cloud=0.0, wind=22.81, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:57:05.731', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:57:50.304 [DEBUG] [Thread-162029] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:50.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:57:50.398 [DEBUG] [Thread-162033] [transport.py] [_log()] starting thread (client mode): 0x2e361930
2025-09-29T16:57:50.398 [DEBUG] [Thread-162033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:57:50.412 [DEBUG] [Thread-162033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:57:50.412 [INFO] [Thread-162033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:57:50.420 [DEBUG] [Thread-162033] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:57:50.420 [DEBUG] [Thread-162033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:57:50.420 [DEBUG] [Thread-162033] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] client lang: <none>
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] server lang: <none>
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] kex follows: False
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] Compression: none
2025-09-29T16:57:50.421 [DEBUG] [Thread-162033] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:57:50.480 [DEBUG] [Thread-162033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:57:50.481 [DEBUG] [Thread-162033] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:57:50.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:57:50.482 [DEBUG] [Thread-162033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:57:50.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:57:50.536 [DEBUG] [Thread-162033] [transport.py] [_log()] userauth is OK
2025-09-29T16:57:50.537 [DEBUG] [Thread-162033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:57:50.537 [DEBUG] [Thread-162033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:57:50.537 [DEBUG] [Thread-162033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:57:50.537 [DEBUG] [Thread-162033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:57:50.557 [INFO] [Thread-162033] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:57:50.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:57:50.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:57:51.621 [DEBUG] [Thread-162033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:57:51.622 [DEBUG] [Thread-162033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:57:51.669 [DEBUG] [Thread-162033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:57:51.669 [DEBUG] [Thread-162033] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:57:51.678 [DEBUG] [Thread-162033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:57:51.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:57:51.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:57:51.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:57:51.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:57:51.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:57:51.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:57:51.713 [DEBUG] [Thread-162033] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:57:54.633 [DEBUG] [Thread-162035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:58:01.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:58:01.715 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:58:01.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:58:02.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 57, 46), 14.22, 37.82, 0.0, 22.81, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:58:02.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:57:46
2025-09-29T16:58:02.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:58:02.538 [DEBUG] [Thread-162036] [transport.py] [_log()] starting thread (client mode): 0x2b9cf430
2025-09-29T16:58:02.538 [DEBUG] [Thread-162036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:02.557 [DEBUG] [Thread-162036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:58:02.557 [INFO] [Thread-162036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:58:02.559 [DEBUG] [Thread-162036] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:02.559 [DEBUG] [Thread-162036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:58:02.559 [DEBUG] [Thread-162036] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] Compression: none
2025-09-29T16:58:02.560 [DEBUG] [Thread-162036] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:02.573 [DEBUG] [Thread-162036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:02.574 [DEBUG] [Thread-162036] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:02.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:58:02.575 [DEBUG] [Thread-162036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:58:02.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:02.577 [DEBUG] [Thread-162036] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:02.577 [DEBUG] [Thread-162036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:02.577 [DEBUG] [Thread-162036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:02.577 [DEBUG] [Thread-162036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:58:02.577 [DEBUG] [Thread-162036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:02.600 [INFO] [Thread-162036] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:02.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:03.237 [DEBUG] [Thread-162036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:03.238 [DEBUG] [Thread-162036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:03.238 [DEBUG] [Thread-162036] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:58:03.278 [DEBUG] [Thread-162036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:03.278 [DEBUG] [Thread-162036] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:03.281 [DEBUG] [Thread-162036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:03.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:03.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:58:03.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:58:03.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:58:03.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:03.302 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:58:03.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:03.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:58:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.623330 -999.00  +14.40  19.59     44   +2.40 1 1 1 1 1   887    0 11.49 -12.70 ----- 18.9 19.6 154.2 25.4 19.0 -27.7 18.6 -27.3 20.3 -27.4 21.1 -29.1
2025-09-29T16:58:03.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:58:03.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:58:03.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.623330
2025-09-29T16:58:03.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:58:03.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:58:03.304 [DEBUG] [Thread-162036] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:03.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:58:03.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:58:03.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:58:03.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:57:46', tmtdew=14.22, humidity=37.82, cloud=0.0, wind=22.81, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:57:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:58:03.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:58:03.398 [DEBUG] [Thread-162039] [transport.py] [_log()] starting thread (client mode): 0x2b9cc940
2025-09-29T16:58:03.398 [DEBUG] [Thread-162039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:03.413 [DEBUG] [Thread-162039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:58:03.413 [INFO] [Thread-162039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:03.420 [DEBUG] [Thread-162039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:03.421 [DEBUG] [Thread-162039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:03.421 [DEBUG] [Thread-162039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:03.421 [DEBUG] [Thread-162039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:03.421 [DEBUG] [Thread-162039] [transport.py] [_log()] Compression: none
2025-09-29T16:58:03.421 [DEBUG] [Thread-162039] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:03.475 [DEBUG] [Thread-162039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:03.476 [DEBUG] [Thread-162039] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:03.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:58:03.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:03.476 [DEBUG] [Thread-162039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:58:03.533 [DEBUG] [Thread-162039] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:03.533 [DEBUG] [Thread-162039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:03.533 [DEBUG] [Thread-162039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:03.534 [DEBUG] [Thread-162039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:58:03.534 [DEBUG] [Thread-162039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:03.556 [INFO] [Thread-162039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:03.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:58:03.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:04.578 [DEBUG] [Thread-162039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:04.578 [DEBUG] [Thread-162039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:04.626 [DEBUG] [Thread-162039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:04.626 [DEBUG] [Thread-162039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:04.635 [DEBUG] [Thread-162039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:04.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:04.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:58:04.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:58:04.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:04.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:04.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:04.668 [DEBUG] [Thread-162039] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:09.689 [DEBUG] [Thread-162041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:58:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:58:14.670 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:58:14.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:58:15.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 57, 46), 14.22, 37.82, 0.0, 22.81, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:58:15.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:57:46
2025-09-29T16:58:15.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:58:15.507 [DEBUG] [Thread-162042] [transport.py] [_log()] starting thread (client mode): 0x2b923f10
2025-09-29T16:58:15.507 [DEBUG] [Thread-162042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:15.527 [DEBUG] [Thread-162042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:58:15.527 [INFO] [Thread-162042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:58:15.530 [DEBUG] [Thread-162042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:15.530 [DEBUG] [Thread-162042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:58:15.530 [DEBUG] [Thread-162042] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:15.531 [DEBUG] [Thread-162042] [transport.py] [_log()] Compression: none
2025-09-29T16:58:15.532 [DEBUG] [Thread-162042] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:15.550 [DEBUG] [Thread-162042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:15.551 [DEBUG] [Thread-162042] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:15.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:58:15.553 [DEBUG] [Thread-162042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:58:15.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:15.593 [DEBUG] [Thread-162042] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:15.593 [DEBUG] [Thread-162042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:15.593 [DEBUG] [Thread-162042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:15.594 [DEBUG] [Thread-162042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:58:15.594 [DEBUG] [Thread-162042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:15.625 [INFO] [Thread-162042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:15.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:16.397 [DEBUG] [Thread-162042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:16.397 [DEBUG] [Thread-162042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:16.397 [DEBUG] [Thread-162042] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:58:16.438 [DEBUG] [Thread-162042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:16.439 [DEBUG] [Thread-162042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:16.441 [DEBUG] [Thread-162042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:16.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:16.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:58:16.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:58:16.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:58:16.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:16.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:58:16.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:16.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:16.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:58:16.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.623330 -999.00  +14.40  19.59     44   +2.40 1 1 1 1 1   887    0 11.49 -12.70 ----- 18.9 19.6 154.2 25.4 19.0 -27.7 18.6 -27.3 20.3 -27.4 21.1 -29.1
2025-09-29T16:58:16.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:58:16.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:58:16.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.623330
2025-09-29T16:58:16.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:58:16.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:58:16.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:58:16.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:58:16.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:58:16.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:57:46', tmtdew=14.22, humidity=37.82, cloud=0.0, wind=22.81, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:57:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:58:16.473 [DEBUG] [Thread-162042] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:16.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:58:16.567 [DEBUG] [Thread-162045] [transport.py] [_log()] starting thread (client mode): 0x2b923a00
2025-09-29T16:58:16.567 [DEBUG] [Thread-162045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:16.582 [DEBUG] [Thread-162045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:58:16.583 [INFO] [Thread-162045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:58:16.590 [DEBUG] [Thread-162045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:16.590 [DEBUG] [Thread-162045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] Compression: none
2025-09-29T16:58:16.591 [DEBUG] [Thread-162045] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:16.653 [DEBUG] [Thread-162045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:16.654 [DEBUG] [Thread-162045] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:16.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:58:16.655 [DEBUG] [Thread-162045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:58:16.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:16.711 [DEBUG] [Thread-162045] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:16.711 [DEBUG] [Thread-162045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:16.712 [DEBUG] [Thread-162045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:16.712 [DEBUG] [Thread-162045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:58:16.712 [DEBUG] [Thread-162045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:16.730 [INFO] [Thread-162045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:16.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:58:16.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:17.761 [DEBUG] [Thread-162045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:17.762 [DEBUG] [Thread-162045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:17.809 [DEBUG] [Thread-162045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:17.809 [DEBUG] [Thread-162045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:17.818 [DEBUG] [Thread-162045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:17.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:17.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:58:17.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:58:17.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:17.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:17.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:17.852 [DEBUG] [Thread-162045] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:24.730 [DEBUG] [Thread-162047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:58:25.595 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:58:25.596 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:58:27.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:58:27.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:58:27.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:58:28.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 58, 18), 14.18, 37.92, 0.0, 21.46, 14.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:58:28.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:58:18
2025-09-29T16:58:28.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:58:28.698 [DEBUG] [Thread-162048] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-29T16:58:28.698 [DEBUG] [Thread-162048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:28.718 [DEBUG] [Thread-162048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:58:28.719 [INFO] [Thread-162048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:58:28.722 [DEBUG] [Thread-162048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:28.723 [DEBUG] [Thread-162048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:28.724 [DEBUG] [Thread-162048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:28.724 [DEBUG] [Thread-162048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:28.724 [DEBUG] [Thread-162048] [transport.py] [_log()] Compression: none
2025-09-29T16:58:28.724 [DEBUG] [Thread-162048] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:28.741 [DEBUG] [Thread-162048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:28.741 [DEBUG] [Thread-162048] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:28.742 [DEBUG] [Thread-162048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:58:28.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:58:28.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:28.743 [DEBUG] [Thread-162048] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:28.743 [DEBUG] [Thread-162048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:28.744 [DEBUG] [Thread-162048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:28.744 [DEBUG] [Thread-162048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:58:28.744 [DEBUG] [Thread-162048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:28.761 [INFO] [Thread-162048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:28.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:29.544 [DEBUG] [Thread-162048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:29.545 [DEBUG] [Thread-162048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:29.545 [DEBUG] [Thread-162048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:58:29.585 [DEBUG] [Thread-162048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:29.585 [DEBUG] [Thread-162048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:29.588 [DEBUG] [Thread-162048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:29.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:29.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:58:29.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:58:29.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:58:29.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:29.610 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:58:29.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:29.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:29.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:58:29.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.623330 -999.00  +14.40  19.59     44   +2.40 1 1 1 1 1   887    0 11.49 -12.70 ----- 18.9 19.6 154.2 25.4 19.0 -27.7 18.6 -27.3 20.3 -27.4 21.1 -29.1
2025-09-29T16:58:29.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:58:29.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:58:29.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.623330
2025-09-29T16:58:29.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:58:29.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:58:29.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:58:29.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:58:29.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:58:29.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:58:18', tmtdew=14.18, humidity=37.92, cloud=0.0, wind=21.46, temperature=14.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:57:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:58:29.616 [DEBUG] [Thread-162048] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:29.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:58:29.708 [DEBUG] [Thread-162051] [transport.py] [_log()] starting thread (client mode): 0x2e38d8d0
2025-09-29T16:58:29.708 [DEBUG] [Thread-162051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:29.723 [DEBUG] [Thread-162051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:58:29.724 [INFO] [Thread-162051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:58:29.731 [DEBUG] [Thread-162051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:29.731 [DEBUG] [Thread-162051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:58:29.731 [DEBUG] [Thread-162051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:29.731 [DEBUG] [Thread-162051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:29.732 [DEBUG] [Thread-162051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:29.733 [DEBUG] [Thread-162051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:29.733 [DEBUG] [Thread-162051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:29.733 [DEBUG] [Thread-162051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:29.733 [DEBUG] [Thread-162051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:29.733 [DEBUG] [Thread-162051] [transport.py] [_log()] Compression: none
2025-09-29T16:58:29.733 [DEBUG] [Thread-162051] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:29.793 [DEBUG] [Thread-162051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:29.794 [DEBUG] [Thread-162051] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:29.794 [DEBUG] [Thread-162051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:58:29.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:58:29.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:29.849 [DEBUG] [Thread-162051] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:29.849 [DEBUG] [Thread-162051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:29.849 [DEBUG] [Thread-162051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:29.849 [DEBUG] [Thread-162051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:58:29.849 [DEBUG] [Thread-162051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:29.866 [INFO] [Thread-162051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:29.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:58:29.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:30.828 [DEBUG] [Thread-162051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:30.828 [DEBUG] [Thread-162051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:30.875 [DEBUG] [Thread-162051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:30.875 [DEBUG] [Thread-162051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:30.884 [DEBUG] [Thread-162051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:30.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:30.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:58:30.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:58:30.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:30.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:30.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:30.919 [DEBUG] [Thread-162051] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:39.762 [DEBUG] [Thread-162053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:58:40.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:58:40.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:58:40.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:58:41.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 58, 18), 14.18, 37.92, 0.0, 21.46, 14.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:58:41.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:58:18
2025-09-29T16:58:41.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:58:41.744 [DEBUG] [Thread-162054] [transport.py] [_log()] starting thread (client mode): 0x2e3f8df0
2025-09-29T16:58:41.744 [DEBUG] [Thread-162054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:41.760 [DEBUG] [Thread-162054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:58:41.760 [INFO] [Thread-162054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:41.763 [DEBUG] [Thread-162054] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:41.764 [DEBUG] [Thread-162054] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:41.764 [DEBUG] [Thread-162054] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:41.764 [DEBUG] [Thread-162054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:41.764 [DEBUG] [Thread-162054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:41.764 [DEBUG] [Thread-162054] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:41.764 [DEBUG] [Thread-162054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:41.764 [DEBUG] [Thread-162054] [transport.py] [_log()] Compression: none
2025-09-29T16:58:41.764 [DEBUG] [Thread-162054] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:41.782 [DEBUG] [Thread-162054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:41.782 [DEBUG] [Thread-162054] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:41.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:58:41.783 [DEBUG] [Thread-162054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:58:41.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:41.785 [DEBUG] [Thread-162054] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:41.786 [DEBUG] [Thread-162054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:41.786 [DEBUG] [Thread-162054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:41.786 [DEBUG] [Thread-162054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:58:41.786 [DEBUG] [Thread-162054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:41.812 [INFO] [Thread-162054] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:41.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:42.414 [DEBUG] [Thread-162054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:42.414 [DEBUG] [Thread-162054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:42.414 [DEBUG] [Thread-162054] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:58:42.455 [DEBUG] [Thread-162054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:42.455 [DEBUG] [Thread-162054] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:42.457 [DEBUG] [Thread-162054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:42.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:42.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:58:42.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:58:42.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:58:42.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:42.475 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:58:42.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.623677 -999.00  +14.50  19.63     44   +2.40 1 1 1 1 1   887    0 11.80 -11.28 ----- 23.6 19.6 162.2 25.3 19.0 -28.3 18.6 -26.9 20.3 -27.2 21.0 -29.1
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.623677
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:58:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:58:42.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:58:18', tmtdew=14.18, humidity=37.92, cloud=0.0, wind=21.46, temperature=14.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:58:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:58:42.476 [DEBUG] [Thread-162054] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:42.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:58:42.561 [DEBUG] [Thread-162057] [transport.py] [_log()] starting thread (client mode): 0x2e3c1540
2025-09-29T16:58:42.561 [DEBUG] [Thread-162057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:42.575 [DEBUG] [Thread-162057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:58:42.575 [INFO] [Thread-162057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:58:42.583 [DEBUG] [Thread-162057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:42.583 [DEBUG] [Thread-162057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] Compression: none
2025-09-29T16:58:42.584 [DEBUG] [Thread-162057] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:42.646 [DEBUG] [Thread-162057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:42.647 [DEBUG] [Thread-162057] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:42.647 [DEBUG] [Thread-162057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:58:42.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:58:42.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:42.701 [DEBUG] [Thread-162057] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:42.701 [DEBUG] [Thread-162057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:42.702 [DEBUG] [Thread-162057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:42.702 [DEBUG] [Thread-162057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:58:42.702 [DEBUG] [Thread-162057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:42.721 [INFO] [Thread-162057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:42.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:58:42.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:43.727 [DEBUG] [Thread-162057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:43.727 [DEBUG] [Thread-162057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:43.775 [DEBUG] [Thread-162057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:43.775 [DEBUG] [Thread-162057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:43.784 [DEBUG] [Thread-162057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:43.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:43.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:58:43.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:58:43.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:43.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:43.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:43.819 [DEBUG] [Thread-162057] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:49.611 [DEBUG] [Thread-162059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:58:53.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:58:53.819 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:58:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:58:54.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 58, 49), 14.34, 37.78, 0.0, 21.46, 14.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:58:54.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:58:49
2025-09-29T16:58:54.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:58:54.649 [DEBUG] [Thread-162060] [transport.py] [_log()] starting thread (client mode): 0x2b9ce710
2025-09-29T16:58:54.650 [DEBUG] [Thread-162060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:54.669 [DEBUG] [Thread-162060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:58:54.669 [INFO] [Thread-162060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:58:54.672 [DEBUG] [Thread-162060] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:54.672 [DEBUG] [Thread-162060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:58:54.672 [DEBUG] [Thread-162060] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:54.672 [DEBUG] [Thread-162060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] Compression: none
2025-09-29T16:58:54.673 [DEBUG] [Thread-162060] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:54.696 [DEBUG] [Thread-162060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:54.697 [DEBUG] [Thread-162060] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:54.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:58:54.697 [DEBUG] [Thread-162060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:58:54.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:54.699 [DEBUG] [Thread-162060] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:54.699 [DEBUG] [Thread-162060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:54.699 [DEBUG] [Thread-162060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:54.699 [DEBUG] [Thread-162060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:58:54.699 [DEBUG] [Thread-162060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:54.733 [INFO] [Thread-162060] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:54.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:54.801 [DEBUG] [Thread-162062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:58:55.512 [DEBUG] [Thread-162060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:55.513 [DEBUG] [Thread-162060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:55.513 [DEBUG] [Thread-162060] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:58:55.553 [DEBUG] [Thread-162060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:55.554 [DEBUG] [Thread-162060] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:55.557 [DEBUG] [Thread-162060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:55.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:55.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:58:55.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:58:55.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:58:55.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:55.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:58:55.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:55.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:55.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:58:55.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.623677 -999.00  +14.50  19.63     44   +2.40 1 1 1 1 1   887    0 11.80 -11.28 ----- 23.6 19.6 162.2 25.3 19.0 -28.3 18.6 -26.9 20.3 -27.2 21.0 -29.1
2025-09-29T16:58:55.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:58:55.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:58:55.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.623677
2025-09-29T16:58:55.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:58:55.581 [DEBUG] [Thread-162060] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:58:55.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:58:55.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:58:55.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:58:55.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:58:55.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:58:49', tmtdew=14.34, humidity=37.78, cloud=0.0, wind=21.46, temperature=14.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:58:05.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:58:55.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:58:55.673 [DEBUG] [Thread-162064] [transport.py] [_log()] starting thread (client mode): 0x2b9cde70
2025-09-29T16:58:55.673 [DEBUG] [Thread-162064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:58:55.689 [DEBUG] [Thread-162064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T16:58:55.689 [INFO] [Thread-162064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T16:58:55.696 [DEBUG] [Thread-162064] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] client lang: <none>
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] server lang: <none>
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] kex follows: False
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] Compression: none
2025-09-29T16:58:55.697 [DEBUG] [Thread-162064] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:58:55.753 [DEBUG] [Thread-162064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:58:55.754 [DEBUG] [Thread-162064] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:58:55.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T16:58:55.754 [DEBUG] [Thread-162064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T16:58:55.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:58:55.809 [DEBUG] [Thread-162064] [transport.py] [_log()] userauth is OK
2025-09-29T16:58:55.810 [DEBUG] [Thread-162064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:58:55.810 [DEBUG] [Thread-162064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:58:55.810 [DEBUG] [Thread-162064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T16:58:55.810 [DEBUG] [Thread-162064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:58:55.829 [INFO] [Thread-162064] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:58:55.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T16:58:55.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:58:56.855 [DEBUG] [Thread-162064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:58:56.856 [DEBUG] [Thread-162064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:58:56.903 [DEBUG] [Thread-162064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:58:56.903 [DEBUG] [Thread-162064] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:58:56.912 [DEBUG] [Thread-162064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:58:56.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:58:56.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T16:58:56.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T16:58:56.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:58:56.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:58:56.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:58:56.946 [DEBUG] [Thread-162064] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:59:06.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T16:59:06.949 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T16:59:06.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T16:59:07.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 16, 58, 49), 14.34, 37.78, 0.0, 21.46, 14.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T16:59:07.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 16:58:49
2025-09-29T16:59:07.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T16:59:07.774 [DEBUG] [Thread-162066] [transport.py] [_log()] starting thread (client mode): 0x30ddeef0
2025-09-29T16:59:07.774 [DEBUG] [Thread-162066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T16:59:07.787 [DEBUG] [Thread-162066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T16:59:07.787 [INFO] [Thread-162066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T16:59:07.788 [DEBUG] [Thread-162066] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T16:59:07.788 [DEBUG] [Thread-162066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T16:59:07.788 [DEBUG] [Thread-162066] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T16:59:07.788 [DEBUG] [Thread-162066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:59:07.788 [DEBUG] [Thread-162066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T16:59:07.788 [DEBUG] [Thread-162066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:59:07.788 [DEBUG] [Thread-162066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T16:59:07.788 [DEBUG] [Thread-162066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] client lang: <none>
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] server lang: <none>
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] kex follows: False
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] Compression: none
2025-09-29T16:59:07.789 [DEBUG] [Thread-162066] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T16:59:07.799 [DEBUG] [Thread-162066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T16:59:07.799 [DEBUG] [Thread-162066] [transport.py] [_log()] Switch to new keys ...
2025-09-29T16:59:07.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T16:59:07.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T16:59:07.800 [DEBUG] [Thread-162066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T16:59:07.801 [DEBUG] [Thread-162066] [transport.py] [_log()] userauth is OK
2025-09-29T16:59:07.801 [DEBUG] [Thread-162066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T16:59:07.801 [DEBUG] [Thread-162066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T16:59:07.801 [DEBUG] [Thread-162066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T16:59:07.801 [DEBUG] [Thread-162066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T16:59:07.827 [INFO] [Thread-162066] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T16:59:07.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T16:59:08.450 [DEBUG] [Thread-162066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T16:59:08.451 [DEBUG] [Thread-162066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T16:59:08.451 [DEBUG] [Thread-162066] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T16:59:08.491 [DEBUG] [Thread-162066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T16:59:08.491 [DEBUG] [Thread-162066] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T16:59:08.493 [DEBUG] [Thread-162066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T16:59:08.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T16:59:08.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T16:59:08.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T16:59:08.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T16:59:08.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T16:59:08.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T16:59:08.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T16:59:08.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T16:59:08.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T16:59:08.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.624024 -999.00  +14.50  24.70     43   +2.30 1 1 1 1 1   887    0 11.75 -8.69 ----- 17.9 24.7 162.6 30.8 18.9 -28.8 18.4 -27.2 20.2 -28.1 21.0 -29.2
2025-09-29T16:59:08.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T16:59:08.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T16:59:08.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.624024
2025-09-29T16:59:08.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T16:59:08.508 [DEBUG] [Thread-162066] [transport.py] [_log()] EOF in transport thread
2025-09-29T16:59:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T16:59:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T16:59:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T16:59:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T16:59:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T16:58:49', tmtdew=14.34, humidity=37.78, cloud=0.0, wind=21.46, temperature=14.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T14:58:35.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T16:59:08.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T16:59:09.838 [DEBUG] [Thread-162069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:59:24.881 [DEBUG] [Thread-162070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:59:25.734 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:59:25.735 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:59:39.914 [DEBUG] [Thread-162071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:59:49.642 [DEBUG] [Thread-162072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T16:59:54.940 [DEBUG] [Thread-162073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:00:09.970 [DEBUG] [Thread-162074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:00:25.001 [DEBUG] [Thread-162075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:00:25.876 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:00:25.877 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:00:40.032 [DEBUG] [Thread-162076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:00:49.675 [DEBUG] [Thread-162077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:00:55.059 [DEBUG] [Thread-162078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:01:10.086 [DEBUG] [Thread-162079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:01:22.747 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:01:25.116 [DEBUG] [Thread-162080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:01:26.016 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:01:26.017 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:01:32.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:01:32.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:01:32.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:01:33.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 1, 29), 14.32, 37.49, 0.0, 25.0, 14.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:01:33.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:01:29
2025-09-29T17:01:33.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:01:33.659 [DEBUG] [Thread-162081] [transport.py] [_log()] starting thread (client mode): 0x2b968d30
2025-09-29T17:01:33.659 [DEBUG] [Thread-162081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:01:33.679 [DEBUG] [Thread-162081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:01:33.679 [INFO] [Thread-162081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:01:33.682 [DEBUG] [Thread-162081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:01:33.682 [DEBUG] [Thread-162081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] client lang: <none>
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] server lang: <none>
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] kex follows: False
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] Compression: none
2025-09-29T17:01:33.683 [DEBUG] [Thread-162081] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:01:33.697 [DEBUG] [Thread-162081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:01:33.698 [DEBUG] [Thread-162081] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:01:33.698 [DEBUG] [Thread-162081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:01:33.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:01:33.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:01:33.698 [DEBUG] [Thread-162081] [transport.py] [_log()] userauth is OK
2025-09-29T17:01:33.698 [DEBUG] [Thread-162081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:01:33.698 [DEBUG] [Thread-162081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:01:33.698 [DEBUG] [Thread-162081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:01:33.698 [DEBUG] [Thread-162081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:01:33.713 [INFO] [Thread-162081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:01:33.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:01:34.378 [DEBUG] [Thread-162081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:01:34.379 [DEBUG] [Thread-162081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:01:34.379 [DEBUG] [Thread-162081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:01:34.419 [DEBUG] [Thread-162081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:01:34.419 [DEBUG] [Thread-162081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:01:34.422 [DEBUG] [Thread-162081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:01:34.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:01:34.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:01:34.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:01:34.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:01:34.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:01:34.445 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:01:34.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:01:34.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:01:34.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:01:34.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.625760 -999.00  +14.50  23.90     43   +2.30 1 1 1 1 1   887    0 12.03 -6.59 ----- 19.5 23.9 184.6 26.3 18.9 -29.0 18.3 -29.6 20.2 -28.1 20.8 -30.3
2025-09-29T17:01:34.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:01:34.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:01:34.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.625760
2025-09-29T17:01:34.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:01:34.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:01:34.447 [DEBUG] [Thread-162081] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:01:34.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:01:34.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:01:34.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:01:34.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:01:29', tmtdew=14.32, humidity=37.49, cloud=0.0, wind=25.0, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:01:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:01:34.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:01:34.539 [DEBUG] [Thread-162084] [transport.py] [_log()] starting thread (client mode): 0x2e3746a0
2025-09-29T17:01:34.540 [DEBUG] [Thread-162084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:01:34.554 [DEBUG] [Thread-162084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:01:34.554 [INFO] [Thread-162084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:01:34.561 [DEBUG] [Thread-162084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:01:34.562 [DEBUG] [Thread-162084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:01:34.562 [DEBUG] [Thread-162084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:01:34.562 [DEBUG] [Thread-162084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:34.562 [DEBUG] [Thread-162084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:34.562 [DEBUG] [Thread-162084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:34.562 [DEBUG] [Thread-162084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:34.562 [DEBUG] [Thread-162084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:01:34.562 [DEBUG] [Thread-162084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] client lang: <none>
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] server lang: <none>
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] kex follows: False
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] Compression: none
2025-09-29T17:01:34.563 [DEBUG] [Thread-162084] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:01:34.618 [DEBUG] [Thread-162084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:01:34.619 [DEBUG] [Thread-162084] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:01:34.619 [DEBUG] [Thread-162084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:01:34.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:01:34.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:01:34.675 [DEBUG] [Thread-162084] [transport.py] [_log()] userauth is OK
2025-09-29T17:01:34.675 [DEBUG] [Thread-162084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:01:34.676 [DEBUG] [Thread-162084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:01:34.676 [DEBUG] [Thread-162084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:01:34.676 [DEBUG] [Thread-162084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:01:34.695 [INFO] [Thread-162084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:01:34.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:01:34.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:01:35.648 [DEBUG] [Thread-162084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:01:35.648 [DEBUG] [Thread-162084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:01:35.696 [DEBUG] [Thread-162084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:01:35.696 [DEBUG] [Thread-162084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:01:35.705 [DEBUG] [Thread-162084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:01:35.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:01:35.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:01:35.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:01:35.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:01:35.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:01:35.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:01:35.739 [DEBUG] [Thread-162084] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:01:40.143 [DEBUG] [Thread-162086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:01:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:01:45.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:01:45.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:01:46.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 1, 29), 14.32, 37.49, 0.0, 25.0, 14.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:01:46.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:01:29
2025-09-29T17:01:46.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:01:46.588 [DEBUG] [Thread-162087] [transport.py] [_log()] starting thread (client mode): 0x2b9ccc40
2025-09-29T17:01:46.588 [DEBUG] [Thread-162087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:01:46.609 [DEBUG] [Thread-162087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:01:46.609 [INFO] [Thread-162087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:01:46.612 [DEBUG] [Thread-162087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:01:46.612 [DEBUG] [Thread-162087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:01:46.612 [DEBUG] [Thread-162087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:01:46.612 [DEBUG] [Thread-162087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:46.612 [DEBUG] [Thread-162087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:46.612 [DEBUG] [Thread-162087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] client lang: <none>
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] server lang: <none>
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] kex follows: False
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] Compression: none
2025-09-29T17:01:46.613 [DEBUG] [Thread-162087] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:01:46.631 [DEBUG] [Thread-162087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:01:46.632 [DEBUG] [Thread-162087] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:01:46.632 [DEBUG] [Thread-162087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:01:46.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:01:46.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:01:46.634 [DEBUG] [Thread-162087] [transport.py] [_log()] userauth is OK
2025-09-29T17:01:46.634 [DEBUG] [Thread-162087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:01:46.634 [DEBUG] [Thread-162087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:01:46.634 [DEBUG] [Thread-162087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:01:46.634 [DEBUG] [Thread-162087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:01:46.650 [INFO] [Thread-162087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:01:46.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:01:47.286 [DEBUG] [Thread-162087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:01:47.286 [DEBUG] [Thread-162087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:01:47.287 [DEBUG] [Thread-162087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:01:47.327 [DEBUG] [Thread-162087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:01:47.328 [DEBUG] [Thread-162087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:01:47.331 [DEBUG] [Thread-162087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:01:47.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:01:47.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:01:47.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:01:47.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:01:47.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:01:47.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:01:47.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:01:47.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:01:47.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:01:47.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.625760 -999.00  +14.50  23.90     43   +2.30 1 1 1 1 1   887    0 12.03 -6.59 ----- 19.5 23.9 184.6 26.3 18.9 -29.0 18.3 -29.6 20.2 -28.1 20.8 -30.3
2025-09-29T17:01:47.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:01:47.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:01:47.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.625760
2025-09-29T17:01:47.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:01:47.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:01:47.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:01:47.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:01:47.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:01:47.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:01:29', tmtdew=14.32, humidity=37.49, cloud=0.0, wind=25.0, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:01:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:01:47.359 [DEBUG] [Thread-162087] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:01:47.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:01:47.455 [DEBUG] [Thread-162090] [transport.py] [_log()] starting thread (client mode): 0x2e3c1720
2025-09-29T17:01:47.456 [DEBUG] [Thread-162090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:01:47.470 [DEBUG] [Thread-162090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:01:47.470 [INFO] [Thread-162090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:01:47.478 [DEBUG] [Thread-162090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:01:47.478 [DEBUG] [Thread-162090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:01:47.478 [DEBUG] [Thread-162090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:01:47.478 [DEBUG] [Thread-162090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:47.478 [DEBUG] [Thread-162090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:47.478 [DEBUG] [Thread-162090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:47.478 [DEBUG] [Thread-162090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:47.478 [DEBUG] [Thread-162090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:01:47.479 [DEBUG] [Thread-162090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:01:47.479 [DEBUG] [Thread-162090] [transport.py] [_log()] client lang: <none>
2025-09-29T17:01:47.479 [DEBUG] [Thread-162090] [transport.py] [_log()] server lang: <none>
2025-09-29T17:01:47.479 [DEBUG] [Thread-162090] [transport.py] [_log()] kex follows: False
2025-09-29T17:01:47.479 [DEBUG] [Thread-162090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:01:47.479 [DEBUG] [Thread-162090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:01:47.479 [DEBUG] [Thread-162090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:01:47.479 [DEBUG] [Thread-162090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:01:47.480 [DEBUG] [Thread-162090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:01:47.480 [DEBUG] [Thread-162090] [transport.py] [_log()] Compression: none
2025-09-29T17:01:47.480 [DEBUG] [Thread-162090] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:01:47.536 [DEBUG] [Thread-162090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:01:47.536 [DEBUG] [Thread-162090] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:01:47.537 [DEBUG] [Thread-162090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:01:47.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:01:47.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:01:47.591 [DEBUG] [Thread-162090] [transport.py] [_log()] userauth is OK
2025-09-29T17:01:47.591 [DEBUG] [Thread-162090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:01:47.592 [DEBUG] [Thread-162090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:01:47.592 [DEBUG] [Thread-162090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:01:47.592 [DEBUG] [Thread-162090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:01:47.611 [INFO] [Thread-162090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:01:47.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:01:47.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:01:48.624 [DEBUG] [Thread-162090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:01:48.625 [DEBUG] [Thread-162090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:01:48.672 [DEBUG] [Thread-162090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:01:48.672 [DEBUG] [Thread-162090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:01:48.682 [DEBUG] [Thread-162090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:01:48.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:01:48.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:01:48.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:01:48.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:01:48.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:01:48.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:01:48.717 [DEBUG] [Thread-162090] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:01:49.715 [DEBUG] [Thread-162092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:01:55.188 [DEBUG] [Thread-162093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:01:58.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:01:58.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:01:58.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:01:59.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 1, 29), 14.32, 37.49, 0.0, 25.0, 14.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:01:59.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:01:29
2025-09-29T17:01:59.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:01:59.574 [DEBUG] [Thread-162094] [transport.py] [_log()] starting thread (client mode): 0x2b9680a0
2025-09-29T17:01:59.575 [DEBUG] [Thread-162094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:01:59.594 [DEBUG] [Thread-162094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:01:59.594 [INFO] [Thread-162094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:01:59.596 [DEBUG] [Thread-162094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] client lang: <none>
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] server lang: <none>
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] kex follows: False
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] Compression: none
2025-09-29T17:01:59.597 [DEBUG] [Thread-162094] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:01:59.610 [DEBUG] [Thread-162094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:01:59.610 [DEBUG] [Thread-162094] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:01:59.610 [DEBUG] [Thread-162094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:01:59.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:01:59.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:01:59.613 [DEBUG] [Thread-162094] [transport.py] [_log()] userauth is OK
2025-09-29T17:01:59.613 [DEBUG] [Thread-162094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:01:59.613 [DEBUG] [Thread-162094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:01:59.613 [DEBUG] [Thread-162094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:01:59.613 [DEBUG] [Thread-162094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:01:59.631 [INFO] [Thread-162094] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:01:59.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:00.195 [DEBUG] [Thread-162094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:00.195 [DEBUG] [Thread-162094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:00.195 [DEBUG] [Thread-162094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:02:00.236 [DEBUG] [Thread-162094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:00.236 [DEBUG] [Thread-162094] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:00.238 [DEBUG] [Thread-162094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:00.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:00.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:02:00.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:02:00.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:02:00.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:00.264 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:02:00.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:00.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:00.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:02:00.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.626107 -999.00  +14.40  11.64     44   +2.30 1 1 1 1 1   887    0 12.29 -4.95 ----- 11.7 11.6 173.4 22.6 18.8 -28.5 18.1 -30.0 20.0 -27.3 20.8 -28.7
2025-09-29T17:02:00.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:02:00.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:02:00.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.626107
2025-09-29T17:02:00.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:02:00.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:02:00.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:02:00.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:02:00.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:02:00.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:01:29', tmtdew=14.32, humidity=37.49, cloud=0.0, wind=25.0, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:01:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:02:00.267 [DEBUG] [Thread-162094] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:00.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:02:00.362 [DEBUG] [Thread-162097] [transport.py] [_log()] starting thread (client mode): 0x2e3746a0
2025-09-29T17:02:00.362 [DEBUG] [Thread-162097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:00.378 [DEBUG] [Thread-162097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:02:00.378 [INFO] [Thread-162097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:00.386 [DEBUG] [Thread-162097] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:00.387 [DEBUG] [Thread-162097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:00.387 [DEBUG] [Thread-162097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:00.387 [DEBUG] [Thread-162097] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:00.387 [DEBUG] [Thread-162097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:00.387 [DEBUG] [Thread-162097] [transport.py] [_log()] Compression: none
2025-09-29T17:02:00.387 [DEBUG] [Thread-162097] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:00.443 [DEBUG] [Thread-162097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:00.443 [DEBUG] [Thread-162097] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:00.444 [DEBUG] [Thread-162097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:02:00.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:02:00.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:00.500 [DEBUG] [Thread-162097] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:00.500 [DEBUG] [Thread-162097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:00.500 [DEBUG] [Thread-162097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:00.500 [DEBUG] [Thread-162097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:02:00.500 [DEBUG] [Thread-162097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:00.519 [INFO] [Thread-162097] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:00.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:02:00.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:01.571 [DEBUG] [Thread-162097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:01.571 [DEBUG] [Thread-162097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:01.620 [DEBUG] [Thread-162097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:01.621 [DEBUG] [Thread-162097] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:01.631 [DEBUG] [Thread-162097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:01.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:01.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:02:01.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:02:01.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:01.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:01.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:01.673 [DEBUG] [Thread-162097] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:10.216 [DEBUG] [Thread-162099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:02:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:02:11.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:02:11.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:02:12.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 2, 1), 14.11, 37.95, 0.0, 24.14, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:02:12.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:02:01
2025-09-29T17:02:12.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:02:12.540 [DEBUG] [Thread-162100] [transport.py] [_log()] starting thread (client mode): 0x2b9213f0
2025-09-29T17:02:12.540 [DEBUG] [Thread-162100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:12.556 [DEBUG] [Thread-162100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:02:12.556 [INFO] [Thread-162100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:02:12.558 [DEBUG] [Thread-162100] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:12.558 [DEBUG] [Thread-162100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:02:12.558 [DEBUG] [Thread-162100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:12.558 [DEBUG] [Thread-162100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:12.558 [DEBUG] [Thread-162100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:12.558 [DEBUG] [Thread-162100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:12.558 [DEBUG] [Thread-162100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:12.558 [DEBUG] [Thread-162100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] Compression: none
2025-09-29T17:02:12.559 [DEBUG] [Thread-162100] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:12.577 [DEBUG] [Thread-162100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:12.577 [DEBUG] [Thread-162100] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:12.577 [DEBUG] [Thread-162100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:02:12.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:02:12.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:12.578 [DEBUG] [Thread-162100] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:12.578 [DEBUG] [Thread-162100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:12.578 [DEBUG] [Thread-162100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:12.578 [DEBUG] [Thread-162100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:02:12.578 [DEBUG] [Thread-162100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:12.586 [INFO] [Thread-162100] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:12.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:13.192 [DEBUG] [Thread-162100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:13.192 [DEBUG] [Thread-162100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:13.192 [DEBUG] [Thread-162100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:02:13.233 [DEBUG] [Thread-162100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:13.233 [DEBUG] [Thread-162100] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:13.236 [DEBUG] [Thread-162100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:13.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:13.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:02:13.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:02:13.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:02:13.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:13.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:02:13.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.626107 -999.00  +14.40  11.64     44   +2.30 1 1 1 1 1   887    0 12.29 -4.95 ----- 11.7 11.6 173.4 22.6 18.8 -28.5 18.1 -30.0 20.0 -27.3 20.8 -28.7
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.626107
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:02:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:02:01', tmtdew=14.11, humidity=37.95, cloud=0.0, wind=24.14, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:01:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:02:13.254 [DEBUG] [Thread-162100] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:13.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:02:13.339 [DEBUG] [Thread-162103] [transport.py] [_log()] starting thread (client mode): 0x2e349960
2025-09-29T17:02:13.339 [DEBUG] [Thread-162103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:13.353 [DEBUG] [Thread-162103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:02:13.353 [INFO] [Thread-162103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:13.361 [DEBUG] [Thread-162103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:13.362 [DEBUG] [Thread-162103] [transport.py] [_log()] Compression: none
2025-09-29T17:02:13.362 [DEBUG] [Thread-162103] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:13.420 [DEBUG] [Thread-162103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:13.420 [DEBUG] [Thread-162103] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:13.421 [DEBUG] [Thread-162103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:02:13.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:02:13.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:13.475 [DEBUG] [Thread-162103] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:13.475 [DEBUG] [Thread-162103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:13.476 [DEBUG] [Thread-162103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:13.476 [DEBUG] [Thread-162103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:02:13.476 [DEBUG] [Thread-162103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:13.498 [INFO] [Thread-162103] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:13.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:02:13.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:14.463 [DEBUG] [Thread-162103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:14.464 [DEBUG] [Thread-162103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:14.511 [DEBUG] [Thread-162103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:14.511 [DEBUG] [Thread-162103] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:14.520 [DEBUG] [Thread-162103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:14.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:14.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:02:14.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:02:14.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:14.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:14.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:14.554 [DEBUG] [Thread-162103] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:24.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:02:24.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:02:24.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:02:25.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 2, 1), 14.11, 37.95, 0.0, 24.14, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:02:25.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:02:01
2025-09-29T17:02:25.245 [DEBUG] [Thread-162105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:02:25.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:02:25.413 [DEBUG] [Thread-162106] [transport.py] [_log()] starting thread (client mode): 0x2e34a410
2025-09-29T17:02:25.414 [DEBUG] [Thread-162106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:25.435 [DEBUG] [Thread-162106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:02:25.435 [INFO] [Thread-162106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:25.439 [DEBUG] [Thread-162106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:25.440 [DEBUG] [Thread-162106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:25.440 [DEBUG] [Thread-162106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:25.440 [DEBUG] [Thread-162106] [transport.py] [_log()] Compression: none
2025-09-29T17:02:25.440 [DEBUG] [Thread-162106] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:25.458 [DEBUG] [Thread-162106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:25.458 [DEBUG] [Thread-162106] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:25.459 [DEBUG] [Thread-162106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:02:25.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:02:25.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:25.461 [DEBUG] [Thread-162106] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:25.461 [DEBUG] [Thread-162106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:25.461 [DEBUG] [Thread-162106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:25.461 [DEBUG] [Thread-162106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:02:25.461 [DEBUG] [Thread-162106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:25.485 [INFO] [Thread-162106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:25.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:26.139 [DEBUG] [Thread-162106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:26.140 [DEBUG] [Thread-162106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:26.140 [DEBUG] [Thread-162106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:02:26.156 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:02:26.157 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:02:26.180 [DEBUG] [Thread-162106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:26.180 [DEBUG] [Thread-162106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:26.183 [DEBUG] [Thread-162106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:26.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:26.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:02:26.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:02:26.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:02:26.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:26.205 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:02:26.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:26.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:26.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:02:26.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.626107 -999.00  +14.40  11.64     44   +2.30 1 1 1 1 1   887    0 12.29 -4.95 ----- 11.7 11.6 173.4 22.6 18.8 -28.5 18.1 -30.0 20.0 -27.3 20.8 -28.7
2025-09-29T17:02:26.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:02:26.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:02:26.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.626107
2025-09-29T17:02:26.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:02:26.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:02:26.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:02:26.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:02:26.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:02:26.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:02:01', tmtdew=14.11, humidity=37.95, cloud=0.0, wind=24.14, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:01:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:02:26.208 [DEBUG] [Thread-162106] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:26.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:02:26.303 [DEBUG] [Thread-162109] [transport.py] [_log()] starting thread (client mode): 0x2b921630
2025-09-29T17:02:26.303 [DEBUG] [Thread-162109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:26.320 [DEBUG] [Thread-162109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:02:26.320 [INFO] [Thread-162109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:26.330 [DEBUG] [Thread-162109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] Compression: none
2025-09-29T17:02:26.331 [DEBUG] [Thread-162109] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:26.388 [DEBUG] [Thread-162109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:26.388 [DEBUG] [Thread-162109] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:26.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:02:26.389 [DEBUG] [Thread-162109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:02:26.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:26.445 [DEBUG] [Thread-162109] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:26.445 [DEBUG] [Thread-162109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:26.446 [DEBUG] [Thread-162109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:26.446 [DEBUG] [Thread-162109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:02:26.446 [DEBUG] [Thread-162109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:26.464 [INFO] [Thread-162109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:26.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:02:26.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:27.498 [DEBUG] [Thread-162109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:27.498 [DEBUG] [Thread-162109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:27.546 [DEBUG] [Thread-162109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:27.546 [DEBUG] [Thread-162109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:27.555 [DEBUG] [Thread-162109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:27.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:27.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:02:27.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:02:27.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:27.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:27.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:27.590 [DEBUG] [Thread-162109] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:37.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:02:37.593 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:02:37.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:02:38.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 2, 33), 13.97, 38.68, 0.0, 22.41, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:02:38.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:02:33
2025-09-29T17:02:38.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:02:38.473 [DEBUG] [Thread-162111] [transport.py] [_log()] starting thread (client mode): 0x2e375d50
2025-09-29T17:02:38.473 [DEBUG] [Thread-162111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:38.493 [DEBUG] [Thread-162111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:02:38.493 [INFO] [Thread-162111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:02:38.496 [DEBUG] [Thread-162111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] Compression: none
2025-09-29T17:02:38.497 [DEBUG] [Thread-162111] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:38.513 [DEBUG] [Thread-162111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:38.513 [DEBUG] [Thread-162111] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:38.513 [DEBUG] [Thread-162111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:02:38.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:02:38.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:38.514 [DEBUG] [Thread-162111] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:38.514 [DEBUG] [Thread-162111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:38.514 [DEBUG] [Thread-162111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:38.514 [DEBUG] [Thread-162111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:02:38.514 [DEBUG] [Thread-162111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:38.523 [INFO] [Thread-162111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:38.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:39.181 [DEBUG] [Thread-162111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:39.181 [DEBUG] [Thread-162111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:39.182 [DEBUG] [Thread-162111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:02:39.222 [DEBUG] [Thread-162111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:39.222 [DEBUG] [Thread-162111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:39.225 [DEBUG] [Thread-162111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:39.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:39.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:02:39.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:02:39.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:02:39.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:39.248 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:02:39.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:39.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:39.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:02:39.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.626455 -999.00  +14.40  14.18     44   +2.30 1 1 1 1 1   887    0 12.33 -3.29 ----- 21.1 14.2 152.1 24.3 18.8 -28.2 18.3 -26.8 20.1 -27.1 20.9 -29.4
2025-09-29T17:02:39.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:02:39.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:02:39.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.626455
2025-09-29T17:02:39.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:02:39.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:02:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:02:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:02:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:02:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:02:33', tmtdew=13.97, humidity=38.68, cloud=0.0, wind=22.41, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:02:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:02:39.251 [DEBUG] [Thread-162111] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:39.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:02:39.350 [DEBUG] [Thread-162114] [transport.py] [_log()] starting thread (client mode): 0x2e3c0a90
2025-09-29T17:02:39.351 [DEBUG] [Thread-162114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:39.365 [DEBUG] [Thread-162114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:02:39.366 [INFO] [Thread-162114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:02:39.373 [DEBUG] [Thread-162114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:39.373 [DEBUG] [Thread-162114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] Compression: none
2025-09-29T17:02:39.374 [DEBUG] [Thread-162114] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:39.432 [DEBUG] [Thread-162114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:39.432 [DEBUG] [Thread-162114] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:39.432 [DEBUG] [Thread-162114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:02:39.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:02:39.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:39.488 [DEBUG] [Thread-162114] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:39.488 [DEBUG] [Thread-162114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:39.488 [DEBUG] [Thread-162114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:39.488 [DEBUG] [Thread-162114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:02:39.488 [DEBUG] [Thread-162114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:39.508 [INFO] [Thread-162114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:39.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:02:39.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:40.283 [DEBUG] [Thread-162116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:02:40.573 [DEBUG] [Thread-162114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:40.573 [DEBUG] [Thread-162114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:40.623 [DEBUG] [Thread-162114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:40.623 [DEBUG] [Thread-162114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:40.632 [DEBUG] [Thread-162114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:40.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:40.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:02:40.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:02:40.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:40.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:40.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:40.672 [DEBUG] [Thread-162114] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:49.742 [DEBUG] [Thread-162117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:02:50.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:02:50.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:02:50.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:02:51.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 2, 33), 13.97, 38.68, 0.0, 22.41, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:02:51.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:02:33
2025-09-29T17:02:51.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:02:51.529 [DEBUG] [Thread-162118] [transport.py] [_log()] starting thread (client mode): 0x2b94e8c0
2025-09-29T17:02:51.529 [DEBUG] [Thread-162118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:51.549 [DEBUG] [Thread-162118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:02:51.549 [INFO] [Thread-162118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:02:51.552 [DEBUG] [Thread-162118] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:51.552 [DEBUG] [Thread-162118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] Compression: none
2025-09-29T17:02:51.553 [DEBUG] [Thread-162118] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:51.561 [DEBUG] [Thread-162118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:51.561 [DEBUG] [Thread-162118] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:51.561 [DEBUG] [Thread-162118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:02:51.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:02:51.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:51.562 [DEBUG] [Thread-162118] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:51.563 [DEBUG] [Thread-162118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:51.563 [DEBUG] [Thread-162118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:51.563 [DEBUG] [Thread-162118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:02:51.563 [DEBUG] [Thread-162118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:51.575 [INFO] [Thread-162118] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:51.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:52.225 [DEBUG] [Thread-162118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:52.225 [DEBUG] [Thread-162118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:52.226 [DEBUG] [Thread-162118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:02:52.266 [DEBUG] [Thread-162118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:52.266 [DEBUG] [Thread-162118] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:52.269 [DEBUG] [Thread-162118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:52.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:52.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:02:52.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:02:52.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:02:52.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:52.291 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:02:52.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:52.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:52.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:02:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.626455 -999.00  +14.40  14.18     44   +2.30 1 1 1 1 1   887    0 12.33 -3.29 ----- 21.1 14.2 152.1 24.3 18.8 -28.2 18.3 -26.8 20.1 -27.1 20.9 -29.4
2025-09-29T17:02:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:02:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:02:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.626455
2025-09-29T17:02:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:02:52.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:02:52.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:02:52.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:02:52.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:02:52.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:02:33', tmtdew=13.97, humidity=38.68, cloud=0.0, wind=22.41, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:02:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:02:52.294 [DEBUG] [Thread-162118] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:52.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:02:52.390 [DEBUG] [Thread-162121] [transport.py] [_log()] starting thread (client mode): 0x2b94c640
2025-09-29T17:02:52.391 [DEBUG] [Thread-162121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:02:52.405 [DEBUG] [Thread-162121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:02:52.405 [INFO] [Thread-162121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:02:52.413 [DEBUG] [Thread-162121] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:02:52.413 [DEBUG] [Thread-162121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:02:52.413 [DEBUG] [Thread-162121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] client lang: <none>
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] server lang: <none>
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] kex follows: False
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] Compression: none
2025-09-29T17:02:52.414 [DEBUG] [Thread-162121] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:02:52.473 [DEBUG] [Thread-162121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:02:52.473 [DEBUG] [Thread-162121] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:02:52.474 [DEBUG] [Thread-162121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:02:52.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:02:52.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:02:52.530 [DEBUG] [Thread-162121] [transport.py] [_log()] userauth is OK
2025-09-29T17:02:52.530 [DEBUG] [Thread-162121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:02:52.530 [DEBUG] [Thread-162121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:02:52.530 [DEBUG] [Thread-162121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:02:52.530 [DEBUG] [Thread-162121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:02:52.548 [INFO] [Thread-162121] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:02:52.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:02:52.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:02:53.567 [DEBUG] [Thread-162121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:02:53.567 [DEBUG] [Thread-162121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:02:53.615 [DEBUG] [Thread-162121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:02:53.615 [DEBUG] [Thread-162121] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:02:53.624 [DEBUG] [Thread-162121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:02:53.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:02:53.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:02:53.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:02:53.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:02:53.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:02:53.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:02:53.658 [DEBUG] [Thread-162121] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:02:55.327 [DEBUG] [Thread-162123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:03:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:03:03.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:03:03.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:03:04.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 2, 33), 13.97, 38.68, 0.0, 22.41, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:03:04.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:02:33
2025-09-29T17:03:04.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:03:04.542 [DEBUG] [Thread-162124] [transport.py] [_log()] starting thread (client mode): 0x2e3c3730
2025-09-29T17:03:04.542 [DEBUG] [Thread-162124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:04.562 [DEBUG] [Thread-162124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:03:04.562 [INFO] [Thread-162124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:03:04.565 [DEBUG] [Thread-162124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:04.565 [DEBUG] [Thread-162124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:03:04.565 [DEBUG] [Thread-162124] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:04.565 [DEBUG] [Thread-162124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:04.565 [DEBUG] [Thread-162124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:04.565 [DEBUG] [Thread-162124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:04.565 [DEBUG] [Thread-162124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] Compression: none
2025-09-29T17:03:04.566 [DEBUG] [Thread-162124] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:04.586 [DEBUG] [Thread-162124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:04.587 [DEBUG] [Thread-162124] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:04.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:03:04.588 [DEBUG] [Thread-162124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:03:04.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:04.590 [DEBUG] [Thread-162124] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:04.590 [DEBUG] [Thread-162124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:04.590 [DEBUG] [Thread-162124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:04.590 [DEBUG] [Thread-162124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:03:04.591 [DEBUG] [Thread-162124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:04.627 [INFO] [Thread-162124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:04.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:05.268 [DEBUG] [Thread-162124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:05.269 [DEBUG] [Thread-162124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:05.269 [DEBUG] [Thread-162124] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:03:05.309 [DEBUG] [Thread-162124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:05.309 [DEBUG] [Thread-162124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:05.312 [DEBUG] [Thread-162124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:05.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:05.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:03:05.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:03:05.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:03:05.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:05.334 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:03:05.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:05.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:03:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.626455 -999.00  +14.40  14.18     44   +2.30 1 1 1 1 1   887    0 12.33 -3.29 ----- 21.1 14.2 152.1 24.3 18.8 -28.2 18.3 -26.8 20.1 -27.1 20.9 -29.4
2025-09-29T17:03:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:03:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:03:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.626455
2025-09-29T17:03:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:03:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:03:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:03:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:03:05.336 [DEBUG] [Thread-162124] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:03:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:02:33', tmtdew=13.97, humidity=38.68, cloud=0.0, wind=22.41, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:02:05.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:03:05.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:03:05.433 [DEBUG] [Thread-162127] [transport.py] [_log()] starting thread (client mode): 0x2b969c60
2025-09-29T17:03:05.433 [DEBUG] [Thread-162127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:05.448 [DEBUG] [Thread-162127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:03:05.448 [INFO] [Thread-162127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:05.456 [DEBUG] [Thread-162127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:05.457 [DEBUG] [Thread-162127] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:05.457 [DEBUG] [Thread-162127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:05.457 [DEBUG] [Thread-162127] [transport.py] [_log()] Compression: none
2025-09-29T17:03:05.457 [DEBUG] [Thread-162127] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:05.512 [DEBUG] [Thread-162127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:05.512 [DEBUG] [Thread-162127] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:05.513 [DEBUG] [Thread-162127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:03:05.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:03:05.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:05.574 [DEBUG] [Thread-162127] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:05.574 [DEBUG] [Thread-162127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:05.574 [DEBUG] [Thread-162127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:05.574 [DEBUG] [Thread-162127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:03:05.574 [DEBUG] [Thread-162127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:05.588 [INFO] [Thread-162127] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:05.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:03:05.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:06.583 [DEBUG] [Thread-162127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:06.583 [DEBUG] [Thread-162127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:06.631 [DEBUG] [Thread-162127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:06.631 [DEBUG] [Thread-162127] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:06.639 [DEBUG] [Thread-162127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:06.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:06.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:03:06.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:03:06.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:06.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:06.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:06.670 [DEBUG] [Thread-162127] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:10.361 [DEBUG] [Thread-162129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:03:16.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:03:16.673 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:03:16.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:03:17.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 3, 5), 13.97, 38.71, 0.0, 18.92, 14.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:03:17.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:03:05
2025-09-29T17:03:17.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:03:17.541 [DEBUG] [Thread-162130] [transport.py] [_log()] starting thread (client mode): 0x2b91fc40
2025-09-29T17:03:17.541 [DEBUG] [Thread-162130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:17.561 [DEBUG] [Thread-162130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:03:17.562 [INFO] [Thread-162130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:17.565 [DEBUG] [Thread-162130] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:17.566 [DEBUG] [Thread-162130] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:17.566 [DEBUG] [Thread-162130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:17.566 [DEBUG] [Thread-162130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:17.566 [DEBUG] [Thread-162130] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:17.566 [DEBUG] [Thread-162130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:17.566 [DEBUG] [Thread-162130] [transport.py] [_log()] Compression: none
2025-09-29T17:03:17.566 [DEBUG] [Thread-162130] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:17.586 [DEBUG] [Thread-162130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:17.587 [DEBUG] [Thread-162130] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:17.588 [DEBUG] [Thread-162130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:03:17.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:03:17.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:17.590 [DEBUG] [Thread-162130] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:17.591 [DEBUG] [Thread-162130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:17.591 [DEBUG] [Thread-162130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:17.591 [DEBUG] [Thread-162130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:03:17.591 [DEBUG] [Thread-162130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:17.614 [INFO] [Thread-162130] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:17.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:18.276 [DEBUG] [Thread-162130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:18.276 [DEBUG] [Thread-162130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:18.277 [DEBUG] [Thread-162130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:03:18.317 [DEBUG] [Thread-162130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:18.317 [DEBUG] [Thread-162130] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:18.321 [DEBUG] [Thread-162130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:18.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:18.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:03:18.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:03:18.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:03:18.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:18.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:03:18.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:18.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:18.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:03:18.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.626802 -999.00  +14.20  14.41     44   +2.30 1 1 1 1 1   887    0 11.89 -2.30 ----- 13.6 14.4 160.4 24.4 18.7 -28.5 18.4 -27.2 20.0 -27.4 20.8 -29.7
2025-09-29T17:03:18.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:03:18.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:03:18.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.626802
2025-09-29T17:03:18.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:03:18.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:03:18.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:03:18.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:03:18.348 [DEBUG] [Thread-162130] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:18.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:03:18.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:03:05', tmtdew=13.97, humidity=38.71, cloud=0.0, wind=18.92, temperature=14.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:02:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:03:18.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:03:18.442 [DEBUG] [Thread-162133] [transport.py] [_log()] starting thread (client mode): 0x2e34bbe0
2025-09-29T17:03:18.443 [DEBUG] [Thread-162133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:18.457 [DEBUG] [Thread-162133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:03:18.457 [INFO] [Thread-162133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:03:18.465 [DEBUG] [Thread-162133] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:18.465 [DEBUG] [Thread-162133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:03:18.465 [DEBUG] [Thread-162133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:18.465 [DEBUG] [Thread-162133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] Compression: none
2025-09-29T17:03:18.466 [DEBUG] [Thread-162133] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:18.524 [DEBUG] [Thread-162133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:18.524 [DEBUG] [Thread-162133] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:18.524 [DEBUG] [Thread-162133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:03:18.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:03:18.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:18.580 [DEBUG] [Thread-162133] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:18.580 [DEBUG] [Thread-162133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:18.580 [DEBUG] [Thread-162133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:18.580 [DEBUG] [Thread-162133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:03:18.580 [DEBUG] [Thread-162133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:18.599 [INFO] [Thread-162133] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:18.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:03:18.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:19.567 [DEBUG] [Thread-162133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:19.567 [DEBUG] [Thread-162133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:19.614 [DEBUG] [Thread-162133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:19.614 [DEBUG] [Thread-162133] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:19.623 [DEBUG] [Thread-162133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:19.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:19.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:03:19.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:03:19.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:19.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:19.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:19.657 [DEBUG] [Thread-162133] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:25.393 [DEBUG] [Thread-162135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:03:26.293 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:03:26.294 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:03:29.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:03:29.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:03:29.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:03:30.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 3, 5), 13.97, 38.71, 0.0, 18.92, 14.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:03:30.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:03:05
2025-09-29T17:03:30.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:03:30.512 [DEBUG] [Thread-162136] [transport.py] [_log()] starting thread (client mode): 0x2b91f0a0
2025-09-29T17:03:30.512 [DEBUG] [Thread-162136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:30.532 [DEBUG] [Thread-162136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:03:30.532 [INFO] [Thread-162136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:03:30.535 [DEBUG] [Thread-162136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] Compression: none
2025-09-29T17:03:30.536 [DEBUG] [Thread-162136] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:30.553 [DEBUG] [Thread-162136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:30.553 [DEBUG] [Thread-162136] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:30.554 [DEBUG] [Thread-162136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:03:30.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:03:30.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:30.556 [DEBUG] [Thread-162136] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:30.556 [DEBUG] [Thread-162136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:30.556 [DEBUG] [Thread-162136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:30.556 [DEBUG] [Thread-162136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:03:30.556 [DEBUG] [Thread-162136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:30.577 [INFO] [Thread-162136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:30.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:31.223 [DEBUG] [Thread-162136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:31.223 [DEBUG] [Thread-162136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:31.223 [DEBUG] [Thread-162136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:03:31.263 [DEBUG] [Thread-162136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:31.264 [DEBUG] [Thread-162136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:31.266 [DEBUG] [Thread-162136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:31.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:31.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:03:31.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:03:31.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:03:31.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:31.291 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:03:31.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:31.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:31.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:03:31.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.626802 -999.00  +14.20  14.41     44   +2.30 1 1 1 1 1   887    0 11.89 -2.30 ----- 13.6 14.4 160.4 24.4 18.7 -28.5 18.4 -27.2 20.0 -27.4 20.8 -29.7
2025-09-29T17:03:31.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:03:31.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:03:31.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.626802
2025-09-29T17:03:31.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:03:31.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:03:31.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:03:31.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:03:31.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:03:31.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:03:05', tmtdew=13.97, humidity=38.71, cloud=0.0, wind=18.92, temperature=14.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:02:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:03:31.294 [DEBUG] [Thread-162136] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:31.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:03:31.387 [DEBUG] [Thread-162139] [transport.py] [_log()] starting thread (client mode): 0x2b96ab90
2025-09-29T17:03:31.387 [DEBUG] [Thread-162139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:31.403 [DEBUG] [Thread-162139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:03:31.403 [INFO] [Thread-162139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:03:31.410 [DEBUG] [Thread-162139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:31.410 [DEBUG] [Thread-162139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:03:31.410 [DEBUG] [Thread-162139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:31.410 [DEBUG] [Thread-162139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] Compression: none
2025-09-29T17:03:31.411 [DEBUG] [Thread-162139] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:31.468 [DEBUG] [Thread-162139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:31.468 [DEBUG] [Thread-162139] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:31.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:03:31.469 [DEBUG] [Thread-162139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:03:31.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:31.524 [DEBUG] [Thread-162139] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:31.525 [DEBUG] [Thread-162139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:31.525 [DEBUG] [Thread-162139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:31.525 [DEBUG] [Thread-162139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:03:31.525 [DEBUG] [Thread-162139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:31.544 [INFO] [Thread-162139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:31.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:03:31.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:32.550 [DEBUG] [Thread-162139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:32.550 [DEBUG] [Thread-162139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:32.598 [DEBUG] [Thread-162139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:32.598 [DEBUG] [Thread-162139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:32.608 [DEBUG] [Thread-162139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:32.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:32.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:03:32.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:03:32.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:32.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:32.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:32.642 [DEBUG] [Thread-162139] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:40.429 [DEBUG] [Thread-162141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:03:42.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:03:42.645 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:03:42.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:03:43.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 3, 37), 14.01, 38.5, 0.0, 17.12, 14.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:03:43.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:03:37
2025-09-29T17:03:43.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:03:43.518 [DEBUG] [Thread-162142] [transport.py] [_log()] starting thread (client mode): 0x2e376200
2025-09-29T17:03:43.518 [DEBUG] [Thread-162142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:43.539 [DEBUG] [Thread-162142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:03:43.539 [INFO] [Thread-162142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:43.542 [DEBUG] [Thread-162142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] Compression: none
2025-09-29T17:03:43.543 [DEBUG] [Thread-162142] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:43.560 [DEBUG] [Thread-162142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:43.561 [DEBUG] [Thread-162142] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:43.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:03:43.562 [DEBUG] [Thread-162142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:03:43.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:43.564 [DEBUG] [Thread-162142] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:43.564 [DEBUG] [Thread-162142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:43.564 [DEBUG] [Thread-162142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:43.564 [DEBUG] [Thread-162142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:03:43.564 [DEBUG] [Thread-162142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:43.587 [INFO] [Thread-162142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:43.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:44.247 [DEBUG] [Thread-162142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:44.247 [DEBUG] [Thread-162142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:44.247 [DEBUG] [Thread-162142] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:03:44.288 [DEBUG] [Thread-162142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:44.288 [DEBUG] [Thread-162142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:44.291 [DEBUG] [Thread-162142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:44.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:44.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:03:44.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:03:44.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:03:44.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:44.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:03:44.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:44.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:44.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:03:44.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.627496 -999.00  +14.10   9.91     45   +2.30 1 1 1 1 1   887    0 12.11 -3.42 ----- 13.7 9.9 149.4 15.9 18.7 -28.2 18.4 -27.2 20.1 -27.3 20.8 -28.7
2025-09-29T17:03:44.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:03:44.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:03:44.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.627496
2025-09-29T17:03:44.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:03:44.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:03:44.317 [DEBUG] [Thread-162142] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:44.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:03:44.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:03:44.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:03:44.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:03:37', tmtdew=14.01, humidity=38.5, cloud=0.0, wind=17.12, temperature=14.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:03:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:03:44.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:03:44.412 [DEBUG] [Thread-162145] [transport.py] [_log()] starting thread (client mode): 0x2e3c1de0
2025-09-29T17:03:44.412 [DEBUG] [Thread-162145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:44.427 [DEBUG] [Thread-162145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:03:44.427 [INFO] [Thread-162145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:03:44.435 [DEBUG] [Thread-162145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:44.435 [DEBUG] [Thread-162145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:03:44.435 [DEBUG] [Thread-162145] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:44.435 [DEBUG] [Thread-162145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:44.435 [DEBUG] [Thread-162145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] Compression: none
2025-09-29T17:03:44.436 [DEBUG] [Thread-162145] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:44.490 [DEBUG] [Thread-162145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:44.491 [DEBUG] [Thread-162145] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:44.491 [DEBUG] [Thread-162145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:03:44.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:03:44.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:44.548 [DEBUG] [Thread-162145] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:44.548 [DEBUG] [Thread-162145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:44.548 [DEBUG] [Thread-162145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:44.548 [DEBUG] [Thread-162145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:03:44.548 [DEBUG] [Thread-162145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:44.565 [INFO] [Thread-162145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:44.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:03:44.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:45.577 [DEBUG] [Thread-162145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:45.578 [DEBUG] [Thread-162145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:45.625 [DEBUG] [Thread-162145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:45.625 [DEBUG] [Thread-162145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:45.634 [DEBUG] [Thread-162145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:45.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:45.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:03:45.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:03:45.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:45.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:45.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:45.671 [DEBUG] [Thread-162145] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:49.774 [DEBUG] [Thread-162147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:03:55.459 [DEBUG] [Thread-162148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:03:55.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:03:55.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:03:55.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:03:56.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 3, 37), 14.01, 38.5, 0.0, 17.12, 14.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:03:56.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:03:37
2025-09-29T17:03:56.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:03:56.530 [DEBUG] [Thread-162149] [transport.py] [_log()] starting thread (client mode): 0x2b91e530
2025-09-29T17:03:56.531 [DEBUG] [Thread-162149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:56.554 [DEBUG] [Thread-162149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:03:56.554 [INFO] [Thread-162149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:56.558 [DEBUG] [Thread-162149] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:56.559 [DEBUG] [Thread-162149] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:56.559 [DEBUG] [Thread-162149] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:56.559 [DEBUG] [Thread-162149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:56.559 [DEBUG] [Thread-162149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:56.559 [DEBUG] [Thread-162149] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:56.559 [DEBUG] [Thread-162149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:56.559 [DEBUG] [Thread-162149] [transport.py] [_log()] Compression: none
2025-09-29T17:03:56.559 [DEBUG] [Thread-162149] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:56.578 [DEBUG] [Thread-162149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:56.578 [DEBUG] [Thread-162149] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:56.579 [DEBUG] [Thread-162149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:03:56.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:03:56.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:56.580 [DEBUG] [Thread-162149] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:56.581 [DEBUG] [Thread-162149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:56.581 [DEBUG] [Thread-162149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:56.581 [DEBUG] [Thread-162149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:03:56.581 [DEBUG] [Thread-162149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:56.617 [INFO] [Thread-162149] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:56.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:57.259 [DEBUG] [Thread-162149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:57.260 [DEBUG] [Thread-162149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:57.260 [DEBUG] [Thread-162149] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:03:57.300 [DEBUG] [Thread-162149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:57.300 [DEBUG] [Thread-162149] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:57.303 [DEBUG] [Thread-162149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:57.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:57.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:03:57.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:03:57.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:03:57.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:57.325 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:03:57.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:57.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:57.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:03:57.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.627496 -999.00  +14.10   9.91     45   +2.30 1 1 1 1 1   887    0 12.11 -3.42 ----- 13.7 9.9 149.4 15.9 18.7 -28.2 18.4 -27.2 20.1 -27.3 20.8 -28.7
2025-09-29T17:03:57.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:03:57.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:03:57.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.627496
2025-09-29T17:03:57.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:03:57.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:03:57.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:03:57.327 [DEBUG] [Thread-162149] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:03:57.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:03:57.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:03:57.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:03:37', tmtdew=14.01, humidity=38.5, cloud=0.0, wind=17.12, temperature=14.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:03:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:03:57.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:03:57.420 [DEBUG] [Thread-162152] [transport.py] [_log()] starting thread (client mode): 0x2e376200
2025-09-29T17:03:57.420 [DEBUG] [Thread-162152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:03:57.435 [DEBUG] [Thread-162152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:03:57.435 [INFO] [Thread-162152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:03:57.442 [DEBUG] [Thread-162152] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:03:57.442 [DEBUG] [Thread-162152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:03:57.442 [DEBUG] [Thread-162152] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] client lang: <none>
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] server lang: <none>
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] kex follows: False
2025-09-29T17:03:57.443 [DEBUG] [Thread-162152] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:03:57.444 [DEBUG] [Thread-162152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:03:57.444 [DEBUG] [Thread-162152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:03:57.444 [DEBUG] [Thread-162152] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:03:57.444 [DEBUG] [Thread-162152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:03:57.444 [DEBUG] [Thread-162152] [transport.py] [_log()] Compression: none
2025-09-29T17:03:57.444 [DEBUG] [Thread-162152] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:03:57.500 [DEBUG] [Thread-162152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:03:57.501 [DEBUG] [Thread-162152] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:03:57.501 [DEBUG] [Thread-162152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:03:57.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:03:57.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:03:57.557 [DEBUG] [Thread-162152] [transport.py] [_log()] userauth is OK
2025-09-29T17:03:57.557 [DEBUG] [Thread-162152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:03:57.557 [DEBUG] [Thread-162152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:03:57.557 [DEBUG] [Thread-162152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:03:57.557 [DEBUG] [Thread-162152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:03:57.576 [INFO] [Thread-162152] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:03:57.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:03:57.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:03:58.559 [DEBUG] [Thread-162152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:03:58.559 [DEBUG] [Thread-162152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:03:58.607 [DEBUG] [Thread-162152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:03:58.607 [DEBUG] [Thread-162152] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:03:58.616 [DEBUG] [Thread-162152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:03:58.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:03:58.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:03:58.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:03:58.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:03:58.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:03:58.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:03:58.650 [DEBUG] [Thread-162152] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:04:08.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:04:08.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:04:08.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:04:09.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 3, 37), 14.01, 38.5, 0.0, 17.12, 14.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:04:09.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:03:37
2025-09-29T17:04:09.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:04:09.530 [DEBUG] [Thread-162154] [transport.py] [_log()] starting thread (client mode): 0x2e377400
2025-09-29T17:04:09.530 [DEBUG] [Thread-162154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:04:09.551 [DEBUG] [Thread-162154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:04:09.551 [INFO] [Thread-162154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:04:09.554 [DEBUG] [Thread-162154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] client lang: <none>
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] server lang: <none>
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] kex follows: False
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] Compression: none
2025-09-29T17:04:09.555 [DEBUG] [Thread-162154] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:04:09.571 [DEBUG] [Thread-162154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:04:09.571 [DEBUG] [Thread-162154] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:04:09.571 [DEBUG] [Thread-162154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:04:09.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:04:09.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:04:09.572 [DEBUG] [Thread-162154] [transport.py] [_log()] userauth is OK
2025-09-29T17:04:09.572 [DEBUG] [Thread-162154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:04:09.572 [DEBUG] [Thread-162154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:04:09.572 [DEBUG] [Thread-162154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:04:09.572 [DEBUG] [Thread-162154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:04:09.582 [INFO] [Thread-162154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:04:09.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:04:10.221 [DEBUG] [Thread-162154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:04:10.221 [DEBUG] [Thread-162154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:04:10.221 [DEBUG] [Thread-162154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:04:10.262 [DEBUG] [Thread-162154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:04:10.262 [DEBUG] [Thread-162154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:04:10.264 [DEBUG] [Thread-162154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:04:10.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:04:10.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:04:10.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:04:10.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:04:10.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:04:10.281 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:04:10.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:04:10.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.627496 -999.00  +14.10   9.91     45   +2.30 1 1 1 1 1   887    0 12.11 -3.42 ----- 13.7 9.9 149.4 15.9 18.7 -28.2 18.4 -27.2 20.1 -27.3 20.8 -28.7
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.627496
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:04:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:03:37', tmtdew=14.01, humidity=38.5, cloud=0.0, wind=17.12, temperature=14.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:03:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:04:10.282 [DEBUG] [Thread-162154] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:04:10.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:04:10.368 [DEBUG] [Thread-162157] [transport.py] [_log()] starting thread (client mode): 0x2e377fd0
2025-09-29T17:04:10.368 [DEBUG] [Thread-162157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:04:10.383 [DEBUG] [Thread-162157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:04:10.383 [INFO] [Thread-162157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] client lang: <none>
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] server lang: <none>
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] kex follows: False
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] Compression: none
2025-09-29T17:04:10.391 [DEBUG] [Thread-162157] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:04:10.447 [DEBUG] [Thread-162157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:04:10.447 [DEBUG] [Thread-162157] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:04:10.447 [DEBUG] [Thread-162157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:04:10.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:04:10.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:04:10.501 [DEBUG] [Thread-162159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:04:10.504 [DEBUG] [Thread-162157] [transport.py] [_log()] userauth is OK
2025-09-29T17:04:10.504 [DEBUG] [Thread-162157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:04:10.504 [DEBUG] [Thread-162157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:04:10.504 [DEBUG] [Thread-162157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:04:10.504 [DEBUG] [Thread-162157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:04:10.519 [INFO] [Thread-162157] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:04:10.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:04:10.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:04:11.509 [DEBUG] [Thread-162157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:04:11.509 [DEBUG] [Thread-162157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:04:11.557 [DEBUG] [Thread-162157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:04:11.557 [DEBUG] [Thread-162157] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:04:11.566 [DEBUG] [Thread-162157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:04:11.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:04:11.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:04:11.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:04:11.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:04:11.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:04:11.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:04:11.602 [DEBUG] [Thread-162157] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:04:21.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:04:21.600 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:04:21.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:04:22.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 4, 9), 14.07, 38.33, 0.0, 15.99, 14.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:04:22.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:04:09
2025-09-29T17:04:22.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:04:22.456 [DEBUG] [Thread-162160] [transport.py] [_log()] starting thread (client mode): 0x2e349ba0
2025-09-29T17:04:22.456 [DEBUG] [Thread-162160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:04:22.476 [DEBUG] [Thread-162160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:04:22.476 [INFO] [Thread-162160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:04:22.479 [DEBUG] [Thread-162160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:04:22.479 [DEBUG] [Thread-162160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:04:22.479 [DEBUG] [Thread-162160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:04:22.479 [DEBUG] [Thread-162160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:22.479 [DEBUG] [Thread-162160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:22.479 [DEBUG] [Thread-162160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:22.479 [DEBUG] [Thread-162160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:22.479 [DEBUG] [Thread-162160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] client lang: <none>
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] server lang: <none>
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] kex follows: False
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] Compression: none
2025-09-29T17:04:22.480 [DEBUG] [Thread-162160] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:04:22.497 [DEBUG] [Thread-162160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:04:22.498 [DEBUG] [Thread-162160] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:04:22.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:04:22.499 [DEBUG] [Thread-162160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:04:22.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:04:22.501 [DEBUG] [Thread-162160] [transport.py] [_log()] userauth is OK
2025-09-29T17:04:22.501 [DEBUG] [Thread-162160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:04:22.501 [DEBUG] [Thread-162160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:04:22.501 [DEBUG] [Thread-162160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:04:22.502 [DEBUG] [Thread-162160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:04:22.526 [INFO] [Thread-162160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:04:22.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:04:23.143 [DEBUG] [Thread-162160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:04:23.144 [DEBUG] [Thread-162160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:04:23.144 [DEBUG] [Thread-162160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:04:23.184 [DEBUG] [Thread-162160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:04:23.184 [DEBUG] [Thread-162160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:04:23.186 [DEBUG] [Thread-162160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:04:23.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:04:23.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:04:23.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:04:23.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:04:23.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:04:23.207 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:04:23.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:04:23.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:04:23.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:04:23.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.627844 -999.00  +14.10  11.02     44   +2.30 1 1 1 1 1   887    0 11.93 -5.52 ----- 13.0 11.0 173.0 14.9 18.8 -28.1 18.4 -26.9 -999.0 -999.0 20.9 -28.8
2025-09-29T17:04:23.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:04:23.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:04:23.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.627844
2025-09-29T17:04:23.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:04:23.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:04:23.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:04:23.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:04:23.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:04:23.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:04:09', tmtdew=14.07, humidity=38.33, cloud=0.0, wind=15.99, temperature=14.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:04:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:04:23.210 [DEBUG] [Thread-162160] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:04:23.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:04:23.304 [DEBUG] [Thread-162163] [transport.py] [_log()] starting thread (client mode): 0x2e3494e0
2025-09-29T17:04:23.304 [DEBUG] [Thread-162163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:04:23.318 [DEBUG] [Thread-162163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:04:23.318 [INFO] [Thread-162163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:04:23.326 [DEBUG] [Thread-162163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:04:23.326 [DEBUG] [Thread-162163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:04:23.326 [DEBUG] [Thread-162163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:04:23.326 [DEBUG] [Thread-162163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] client lang: <none>
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] server lang: <none>
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] kex follows: False
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:04:23.327 [DEBUG] [Thread-162163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:04:23.328 [DEBUG] [Thread-162163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:04:23.328 [DEBUG] [Thread-162163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:04:23.328 [DEBUG] [Thread-162163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:04:23.328 [DEBUG] [Thread-162163] [transport.py] [_log()] Compression: none
2025-09-29T17:04:23.328 [DEBUG] [Thread-162163] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:04:23.384 [DEBUG] [Thread-162163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:04:23.384 [DEBUG] [Thread-162163] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:04:23.385 [DEBUG] [Thread-162163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:04:23.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:04:23.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:04:23.441 [DEBUG] [Thread-162163] [transport.py] [_log()] userauth is OK
2025-09-29T17:04:23.441 [DEBUG] [Thread-162163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:04:23.441 [DEBUG] [Thread-162163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:04:23.441 [DEBUG] [Thread-162163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:04:23.441 [DEBUG] [Thread-162163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:04:23.461 [INFO] [Thread-162163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:04:23.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:04:23.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:04:24.475 [DEBUG] [Thread-162163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:04:24.475 [DEBUG] [Thread-162163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:04:24.523 [DEBUG] [Thread-162163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:04:24.524 [DEBUG] [Thread-162163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:04:24.533 [DEBUG] [Thread-162163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:04:24.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:04:24.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:04:24.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:04:24.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:04:24.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:04:24.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:04:24.567 [DEBUG] [Thread-162163] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:04:25.526 [DEBUG] [Thread-162165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:04:26.434 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:04:26.435 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:04:34.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:04:34.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:04:34.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:04:35.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 4, 9), 14.07, 38.33, 0.0, 15.99, 14.49, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:04:35.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:04:09
2025-09-29T17:04:35.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:04:35.417 [DEBUG] [Thread-162166] [transport.py] [_log()] starting thread (client mode): 0x2e349db0
2025-09-29T17:04:35.418 [DEBUG] [Thread-162166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:04:35.437 [DEBUG] [Thread-162166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:04:35.438 [INFO] [Thread-162166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] client lang: <none>
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] server lang: <none>
2025-09-29T17:04:35.441 [DEBUG] [Thread-162166] [transport.py] [_log()] kex follows: False
2025-09-29T17:04:35.442 [DEBUG] [Thread-162166] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:04:35.442 [DEBUG] [Thread-162166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:04:35.442 [DEBUG] [Thread-162166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:04:35.442 [DEBUG] [Thread-162166] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:04:35.442 [DEBUG] [Thread-162166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:04:35.442 [DEBUG] [Thread-162166] [transport.py] [_log()] Compression: none
2025-09-29T17:04:35.442 [DEBUG] [Thread-162166] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:04:35.460 [DEBUG] [Thread-162166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:04:35.460 [DEBUG] [Thread-162166] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:04:35.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:04:35.461 [DEBUG] [Thread-162166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:04:35.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:04:35.463 [DEBUG] [Thread-162166] [transport.py] [_log()] userauth is OK
2025-09-29T17:04:35.463 [DEBUG] [Thread-162166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:04:35.463 [DEBUG] [Thread-162166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:04:35.463 [DEBUG] [Thread-162166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:04:35.464 [DEBUG] [Thread-162166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:04:35.488 [INFO] [Thread-162166] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:04:35.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:04:36.075 [DEBUG] [Thread-162166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:04:36.076 [DEBUG] [Thread-162166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:04:36.076 [DEBUG] [Thread-162166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:04:36.116 [DEBUG] [Thread-162166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:04:36.116 [DEBUG] [Thread-162166] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:04:36.119 [DEBUG] [Thread-162166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:04:36.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:04:36.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:04:36.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:04:36.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:04:36.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:04:36.143 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:04:36.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:04:36.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:04:36.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:04:36.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.627844 -999.00  +14.10  11.02     44   +2.30 1 1 1 1 1   887    0 11.93 -5.52 ----- 13.0 11.0 173.0 14.9 18.8 -28.1 18.4 -26.9 -999.0 -999.0 20.9 -28.8
2025-09-29T17:04:36.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:04:36.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:04:36.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.627844
2025-09-29T17:04:36.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:04:36.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:04:36.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:04:36.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:04:36.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:04:36.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:04:09', tmtdew=14.07, humidity=38.33, cloud=0.0, wind=15.99, temperature=14.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:04:05.722', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:04:36.146 [DEBUG] [Thread-162166] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:04:36.230 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:04:40.561 [DEBUG] [Thread-162169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:04:49.811 [DEBUG] [Thread-162170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:04:55.589 [DEBUG] [Thread-162171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:05:10.620 [DEBUG] [Thread-162172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:05:11.107 [DEBUG] [Thread-162173] [transport.py] [_log()] starting thread (client mode): 0x2e3765f0
2025-09-29T17:05:11.107 [DEBUG] [Thread-162173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:05:11.121 [DEBUG] [Thread-162173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:05:11.122 [INFO] [Thread-162173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:05:11.129 [DEBUG] [Thread-162173] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:05:11.129 [DEBUG] [Thread-162173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:05:11.129 [DEBUG] [Thread-162173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:05:11.129 [DEBUG] [Thread-162173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:11.129 [DEBUG] [Thread-162173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:11.129 [DEBUG] [Thread-162173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] client lang: <none>
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] server lang: <none>
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] kex follows: False
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] Compression: none
2025-09-29T17:05:11.130 [DEBUG] [Thread-162173] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:05:11.189 [DEBUG] [Thread-162173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:05:11.189 [DEBUG] [Thread-162173] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:05:11.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:05:11.190 [DEBUG] [Thread-162173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:05:11.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:05:11.245 [DEBUG] [Thread-162173] [transport.py] [_log()] userauth is OK
2025-09-29T17:05:11.245 [DEBUG] [Thread-162173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:05:11.245 [DEBUG] [Thread-162173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:05:11.246 [DEBUG] [Thread-162173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:05:11.246 [DEBUG] [Thread-162173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:05:11.268 [INFO] [Thread-162173] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:05:11.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:05:11.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:05:12.261 [DEBUG] [Thread-162173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:05:12.261 [DEBUG] [Thread-162173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:05:12.312 [DEBUG] [Thread-162173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:05:12.312 [DEBUG] [Thread-162173] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:05:12.323 [DEBUG] [Thread-162173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:05:12.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:05:12.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:05:12.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:05:12.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:05:12.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:05:12.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:05:12.366 [DEBUG] [Thread-162173] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:05:22.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:05:22.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:05:22.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:05:22.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 5, 12), 14.0, 38.6, 0.0, 21.95, 14.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:05:22.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:05:12
2025-09-29T17:05:23.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:05:23.214 [DEBUG] [Thread-162175] [transport.py] [_log()] starting thread (client mode): 0x2e376aa0
2025-09-29T17:05:23.214 [DEBUG] [Thread-162175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:05:23.235 [DEBUG] [Thread-162175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:05:23.235 [INFO] [Thread-162175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] client lang: <none>
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] server lang: <none>
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] kex follows: False
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:05:23.238 [DEBUG] [Thread-162175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:05:23.239 [DEBUG] [Thread-162175] [transport.py] [_log()] Compression: none
2025-09-29T17:05:23.239 [DEBUG] [Thread-162175] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:05:23.255 [DEBUG] [Thread-162175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:05:23.255 [DEBUG] [Thread-162175] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:05:23.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:05:23.256 [DEBUG] [Thread-162175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:05:23.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:05:23.261 [DEBUG] [Thread-162175] [transport.py] [_log()] userauth is OK
2025-09-29T17:05:23.261 [DEBUG] [Thread-162175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:05:23.262 [DEBUG] [Thread-162175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:05:23.262 [DEBUG] [Thread-162175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:05:23.262 [DEBUG] [Thread-162175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:05:23.279 [INFO] [Thread-162175] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:05:23.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:05:23.850 [DEBUG] [Thread-162175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:05:23.850 [DEBUG] [Thread-162175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:05:23.851 [DEBUG] [Thread-162175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:05:23.891 [DEBUG] [Thread-162175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:05:23.892 [DEBUG] [Thread-162175] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:05:23.894 [DEBUG] [Thread-162175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:05:23.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:05:23.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:05:23.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:05:23.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:05:23.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:05:23.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:05:23.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:05:23.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:05:23.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:05:23.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.628538 -999.00  +14.40  20.33     44   +2.40 1 1 1 1 1   887    0 12.01 -8.62 ----- 20.9 20.3 168.0 25.9 18.7 -28.1 18.5 -27.0 20.2 -28.0 20.8 -29.9
2025-09-29T17:05:23.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:05:23.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:05:23.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.628538
2025-09-29T17:05:23.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:05:23.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:05:23.917 [DEBUG] [Thread-162175] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:05:23.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:05:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:05:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:05:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:05:12', tmtdew=14.0, humidity=38.6, cloud=0.0, wind=21.95, temperature=14.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:05:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:05:24.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:05:24.015 [DEBUG] [Thread-162178] [transport.py] [_log()] starting thread (client mode): 0x2e377130
2025-09-29T17:05:24.015 [DEBUG] [Thread-162178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:05:24.029 [DEBUG] [Thread-162178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:05:24.029 [INFO] [Thread-162178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:05:24.036 [DEBUG] [Thread-162178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:05:24.037 [DEBUG] [Thread-162178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:05:24.037 [DEBUG] [Thread-162178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:05:24.037 [DEBUG] [Thread-162178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:24.037 [DEBUG] [Thread-162178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:24.037 [DEBUG] [Thread-162178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:24.037 [DEBUG] [Thread-162178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:24.037 [DEBUG] [Thread-162178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] client lang: <none>
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] server lang: <none>
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] kex follows: False
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:05:24.038 [DEBUG] [Thread-162178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:05:24.039 [DEBUG] [Thread-162178] [transport.py] [_log()] Compression: none
2025-09-29T17:05:24.039 [DEBUG] [Thread-162178] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:05:24.093 [DEBUG] [Thread-162178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:05:24.094 [DEBUG] [Thread-162178] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:05:24.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:05:24.095 [DEBUG] [Thread-162178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:05:24.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:05:24.149 [DEBUG] [Thread-162178] [transport.py] [_log()] userauth is OK
2025-09-29T17:05:24.150 [DEBUG] [Thread-162178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:05:24.150 [DEBUG] [Thread-162178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:05:24.150 [DEBUG] [Thread-162178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:05:24.150 [DEBUG] [Thread-162178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:05:24.169 [INFO] [Thread-162178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:05:24.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:05:24.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:05:25.227 [DEBUG] [Thread-162178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:05:25.228 [DEBUG] [Thread-162178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:05:25.276 [DEBUG] [Thread-162178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:05:25.276 [DEBUG] [Thread-162178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:05:25.284 [DEBUG] [Thread-162178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:05:25.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:05:25.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:05:25.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:05:25.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:05:25.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:05:25.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:05:25.316 [DEBUG] [Thread-162178] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:05:25.648 [DEBUG] [Thread-162180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:05:26.574 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:05:26.576 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:05:35.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:05:35.317 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:05:35.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:05:35.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 5, 12), 14.0, 38.6, 0.0, 21.95, 14.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:05:35.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:05:12
2025-09-29T17:05:36.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:05:36.176 [DEBUG] [Thread-162181] [transport.py] [_log()] starting thread (client mode): 0x2b94d0c0
2025-09-29T17:05:36.176 [DEBUG] [Thread-162181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:05:36.197 [DEBUG] [Thread-162181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:05:36.198 [INFO] [Thread-162181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:05:36.201 [DEBUG] [Thread-162181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:05:36.201 [DEBUG] [Thread-162181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:05:36.201 [DEBUG] [Thread-162181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:05:36.201 [DEBUG] [Thread-162181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:36.201 [DEBUG] [Thread-162181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] client lang: <none>
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] server lang: <none>
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] kex follows: False
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] Compression: none
2025-09-29T17:05:36.202 [DEBUG] [Thread-162181] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:05:36.219 [DEBUG] [Thread-162181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:05:36.220 [DEBUG] [Thread-162181] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:05:36.220 [DEBUG] [Thread-162181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:05:36.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:05:36.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:05:36.222 [DEBUG] [Thread-162181] [transport.py] [_log()] userauth is OK
2025-09-29T17:05:36.222 [DEBUG] [Thread-162181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:05:36.223 [DEBUG] [Thread-162181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:05:36.223 [DEBUG] [Thread-162181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:05:36.223 [DEBUG] [Thread-162181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:05:36.246 [INFO] [Thread-162181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:05:36.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:05:36.876 [DEBUG] [Thread-162181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:05:36.876 [DEBUG] [Thread-162181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:05:36.877 [DEBUG] [Thread-162181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:05:36.917 [DEBUG] [Thread-162181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:05:36.917 [DEBUG] [Thread-162181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:05:36.920 [DEBUG] [Thread-162181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:05:36.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:05:36.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:05:36.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:05:36.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:05:36.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:05:36.943 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:05:36.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:05:36.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:05:36.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:05:36.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.628538 -999.00  +14.40  20.33     44   +2.40 1 1 1 1 1   887    0 12.01 -8.62 ----- 20.9 20.3 168.0 25.9 18.7 -28.1 18.5 -27.0 20.2 -28.0 20.8 -29.9
2025-09-29T17:05:36.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:05:36.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:05:36.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.628538
2025-09-29T17:05:36.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:05:36.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:05:36.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:05:36.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:05:36.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:05:36.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:05:12', tmtdew=14.0, humidity=38.6, cloud=0.0, wind=21.95, temperature=14.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:05:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:05:36.946 [DEBUG] [Thread-162181] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:05:37.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:05:37.039 [DEBUG] [Thread-162184] [transport.py] [_log()] starting thread (client mode): 0x2b9cd000
2025-09-29T17:05:37.039 [DEBUG] [Thread-162184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:05:37.055 [DEBUG] [Thread-162184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:05:37.055 [INFO] [Thread-162184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:05:37.062 [DEBUG] [Thread-162184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:05:37.062 [DEBUG] [Thread-162184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:05:37.062 [DEBUG] [Thread-162184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:05:37.062 [DEBUG] [Thread-162184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:37.062 [DEBUG] [Thread-162184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] client lang: <none>
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] server lang: <none>
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] kex follows: False
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] Compression: none
2025-09-29T17:05:37.063 [DEBUG] [Thread-162184] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:05:37.121 [DEBUG] [Thread-162184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:05:37.121 [DEBUG] [Thread-162184] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:05:37.122 [DEBUG] [Thread-162184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:05:37.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:05:37.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:05:37.179 [DEBUG] [Thread-162184] [transport.py] [_log()] userauth is OK
2025-09-29T17:05:37.179 [DEBUG] [Thread-162184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:05:37.179 [DEBUG] [Thread-162184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:05:37.179 [DEBUG] [Thread-162184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:05:37.179 [DEBUG] [Thread-162184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:05:37.199 [INFO] [Thread-162184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:05:37.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:05:37.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:05:38.216 [DEBUG] [Thread-162184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:05:38.216 [DEBUG] [Thread-162184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:05:38.266 [DEBUG] [Thread-162184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:05:38.267 [DEBUG] [Thread-162184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:05:38.276 [DEBUG] [Thread-162184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:05:38.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:05:38.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:05:38.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:05:38.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:05:38.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:05:38.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:05:38.311 [DEBUG] [Thread-162184] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:05:40.694 [DEBUG] [Thread-162186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:05:48.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:05:48.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:05:48.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:05:48.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 5, 44), 14.24, 37.92, 0.0, 18.67, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:05:48.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:05:44
2025-09-29T17:05:49.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:05:49.169 [DEBUG] [Thread-162187] [transport.py] [_log()] starting thread (client mode): 0x2e34b7c0
2025-09-29T17:05:49.169 [DEBUG] [Thread-162187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:05:49.189 [DEBUG] [Thread-162187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:05:49.189 [INFO] [Thread-162187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:05:49.192 [DEBUG] [Thread-162187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:05:49.192 [DEBUG] [Thread-162187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:05:49.192 [DEBUG] [Thread-162187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:05:49.192 [DEBUG] [Thread-162187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:49.192 [DEBUG] [Thread-162187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:49.192 [DEBUG] [Thread-162187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] client lang: <none>
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] server lang: <none>
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] kex follows: False
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] Compression: none
2025-09-29T17:05:49.193 [DEBUG] [Thread-162187] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:05:49.212 [DEBUG] [Thread-162187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:05:49.213 [DEBUG] [Thread-162187] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:05:49.214 [DEBUG] [Thread-162187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:05:49.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:05:49.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:05:49.216 [DEBUG] [Thread-162187] [transport.py] [_log()] userauth is OK
2025-09-29T17:05:49.216 [DEBUG] [Thread-162187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:05:49.216 [DEBUG] [Thread-162187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:05:49.216 [DEBUG] [Thread-162187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:05:49.216 [DEBUG] [Thread-162187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:05:49.239 [INFO] [Thread-162187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:05:49.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:05:49.842 [DEBUG] [Thread-162189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:05:49.900 [DEBUG] [Thread-162187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:05:49.901 [DEBUG] [Thread-162187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:05:49.901 [DEBUG] [Thread-162187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:05:49.941 [DEBUG] [Thread-162187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:05:49.941 [DEBUG] [Thread-162187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:05:49.945 [DEBUG] [Thread-162187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:05:49.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:05:49.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:05:49.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:05:49.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:05:49.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:05:49.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:05:49.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:05:49.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:05:49.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:05:49.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.628538 -999.00  +14.40  20.33     44   +2.40 1 1 1 1 1   887    0 12.01 -8.62 ----- 20.9 20.3 168.0 25.9 18.7 -28.1 18.5 -27.0 20.2 -28.0 20.8 -29.9
2025-09-29T17:05:49.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:05:49.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:05:49.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.628538
2025-09-29T17:05:49.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:05:49.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:05:49.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:05:49.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:05:49.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:05:49.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:05:44', tmtdew=14.24, humidity=37.92, cloud=0.0, wind=18.67, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:05:05.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:05:49.970 [DEBUG] [Thread-162187] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:05:50.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:05:50.063 [DEBUG] [Thread-162191] [transport.py] [_log()] starting thread (client mode): 0x2e34ab90
2025-09-29T17:05:50.063 [DEBUG] [Thread-162191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:05:50.079 [DEBUG] [Thread-162191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:05:50.079 [INFO] [Thread-162191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:05:50.086 [DEBUG] [Thread-162191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] client lang: <none>
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] server lang: <none>
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] kex follows: False
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] Compression: none
2025-09-29T17:05:50.087 [DEBUG] [Thread-162191] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:05:50.145 [DEBUG] [Thread-162191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:05:50.146 [DEBUG] [Thread-162191] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:05:50.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:05:50.147 [DEBUG] [Thread-162191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:05:50.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:05:50.202 [DEBUG] [Thread-162191] [transport.py] [_log()] userauth is OK
2025-09-29T17:05:50.202 [DEBUG] [Thread-162191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:05:50.202 [DEBUG] [Thread-162191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:05:50.202 [DEBUG] [Thread-162191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:05:50.202 [DEBUG] [Thread-162191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:05:50.221 [INFO] [Thread-162191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:05:50.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:05:50.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:05:51.210 [DEBUG] [Thread-162191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:05:51.210 [DEBUG] [Thread-162191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:05:51.258 [DEBUG] [Thread-162191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:05:51.258 [DEBUG] [Thread-162191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:05:51.267 [DEBUG] [Thread-162191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:05:51.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:05:51.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:05:51.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:05:51.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:05:51.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:05:51.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:05:51.302 [DEBUG] [Thread-162191] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:05:55.722 [DEBUG] [Thread-162193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:06:01.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:06:01.305 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:06:01.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:06:01.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 5, 44), 14.24, 37.92, 0.0, 18.67, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:06:01.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:05:44
2025-09-29T17:06:02.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:06:02.157 [DEBUG] [Thread-162194] [transport.py] [_log()] starting thread (client mode): 0x2b96b460
2025-09-29T17:06:02.157 [DEBUG] [Thread-162194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:02.177 [DEBUG] [Thread-162194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:06:02.177 [INFO] [Thread-162194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:02.180 [DEBUG] [Thread-162194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:02.181 [DEBUG] [Thread-162194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:02.181 [DEBUG] [Thread-162194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:02.181 [DEBUG] [Thread-162194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:02.181 [DEBUG] [Thread-162194] [transport.py] [_log()] Compression: none
2025-09-29T17:06:02.181 [DEBUG] [Thread-162194] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:02.198 [DEBUG] [Thread-162194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:02.199 [DEBUG] [Thread-162194] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:02.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:06:02.200 [DEBUG] [Thread-162194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:06:02.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:02.201 [DEBUG] [Thread-162194] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:02.202 [DEBUG] [Thread-162194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:02.202 [DEBUG] [Thread-162194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:02.202 [DEBUG] [Thread-162194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:06:02.202 [DEBUG] [Thread-162194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:02.226 [INFO] [Thread-162194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:02.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:02.884 [DEBUG] [Thread-162194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:02.884 [DEBUG] [Thread-162194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:02.885 [DEBUG] [Thread-162194] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:06:02.925 [DEBUG] [Thread-162194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:02.925 [DEBUG] [Thread-162194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:02.928 [DEBUG] [Thread-162194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:02.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:02.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:06:02.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:06:02.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:06:02.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:02.944 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:06:02.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:02.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.628885 -999.00  +14.20  17.70     44   +2.30 1 1 1 1 1   887    0 11.91 -8.92 ----- 15.8 17.7 160.0 26.4 18.7 -28.3 18.4 -27.4 20.0 -28.7 20.7 -29.1
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.628885
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:06:02.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:05:44', tmtdew=14.24, humidity=37.92, cloud=0.0, wind=18.67, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:05:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:06:02.945 [DEBUG] [Thread-162194] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:03.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:06:03.032 [DEBUG] [Thread-162197] [transport.py] [_log()] starting thread (client mode): 0x2b969210
2025-09-29T17:06:03.032 [DEBUG] [Thread-162197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:03.047 [DEBUG] [Thread-162197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:06:03.047 [INFO] [Thread-162197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:03.054 [DEBUG] [Thread-162197] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:03.055 [DEBUG] [Thread-162197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:03.055 [DEBUG] [Thread-162197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:03.055 [DEBUG] [Thread-162197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:03.055 [DEBUG] [Thread-162197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:03.055 [DEBUG] [Thread-162197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:03.055 [DEBUG] [Thread-162197] [transport.py] [_log()] Compression: none
2025-09-29T17:06:03.055 [DEBUG] [Thread-162197] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:03.114 [DEBUG] [Thread-162197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:03.115 [DEBUG] [Thread-162197] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:03.115 [DEBUG] [Thread-162197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:06:03.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:06:03.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:03.170 [DEBUG] [Thread-162197] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:03.170 [DEBUG] [Thread-162197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:03.170 [DEBUG] [Thread-162197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:03.170 [DEBUG] [Thread-162197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:06:03.170 [DEBUG] [Thread-162197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:03.190 [INFO] [Thread-162197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:03.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:06:03.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:04.214 [DEBUG] [Thread-162197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:04.214 [DEBUG] [Thread-162197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:04.262 [DEBUG] [Thread-162197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:04.262 [DEBUG] [Thread-162197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:04.271 [DEBUG] [Thread-162197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:04.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:04.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:06:04.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:06:04.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:04.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:04.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:04.305 [DEBUG] [Thread-162197] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:10.756 [DEBUG] [Thread-162199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:06:14.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:06:14.308 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:06:14.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:06:14.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 5, 44), 14.24, 37.92, 0.0, 18.67, 14.77, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:06:14.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:05:44
2025-09-29T17:06:15.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:06:15.150 [DEBUG] [Thread-162200] [transport.py] [_log()] starting thread (client mode): 0x2e3483a0
2025-09-29T17:06:15.150 [DEBUG] [Thread-162200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:15.170 [DEBUG] [Thread-162200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:06:15.170 [INFO] [Thread-162200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:06:15.173 [DEBUG] [Thread-162200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:15.173 [DEBUG] [Thread-162200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:15.174 [DEBUG] [Thread-162200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:15.175 [DEBUG] [Thread-162200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:15.175 [DEBUG] [Thread-162200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:15.175 [DEBUG] [Thread-162200] [transport.py] [_log()] Compression: none
2025-09-29T17:06:15.175 [DEBUG] [Thread-162200] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:15.191 [DEBUG] [Thread-162200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:15.191 [DEBUG] [Thread-162200] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:15.191 [DEBUG] [Thread-162200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:06:15.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:06:15.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:15.192 [DEBUG] [Thread-162200] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:15.192 [DEBUG] [Thread-162200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:15.192 [DEBUG] [Thread-162200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:15.192 [DEBUG] [Thread-162200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:06:15.192 [DEBUG] [Thread-162200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:15.211 [INFO] [Thread-162200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:15.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:15.848 [DEBUG] [Thread-162200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:15.849 [DEBUG] [Thread-162200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:15.849 [DEBUG] [Thread-162200] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:06:15.889 [DEBUG] [Thread-162200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:15.890 [DEBUG] [Thread-162200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:15.892 [DEBUG] [Thread-162200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:15.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:15.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:06:15.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:06:15.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:06:15.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:15.914 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:06:15.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:15.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:15.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:06:15.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.628885 -999.00  +14.20  17.70     44   +2.30 1 1 1 1 1   887    0 11.91 -8.92 ----- 15.8 17.7 160.0 26.4 18.7 -28.3 18.4 -27.4 20.0 -28.7 20.7 -29.1
2025-09-29T17:06:15.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:06:15.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:06:15.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.628885
2025-09-29T17:06:15.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:06:15.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:06:15.916 [DEBUG] [Thread-162200] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:06:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:06:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:06:15.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:05:44', tmtdew=14.24, humidity=37.92, cloud=0.0, wind=18.67, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:05:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:06:15.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:06:16.009 [DEBUG] [Thread-162203] [transport.py] [_log()] starting thread (client mode): 0x2b91c0a0
2025-09-29T17:06:16.009 [DEBUG] [Thread-162203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:16.024 [DEBUG] [Thread-162203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:06:16.024 [INFO] [Thread-162203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:06:16.031 [DEBUG] [Thread-162203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:16.032 [DEBUG] [Thread-162203] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:16.033 [DEBUG] [Thread-162203] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:16.033 [DEBUG] [Thread-162203] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:16.033 [DEBUG] [Thread-162203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:16.033 [DEBUG] [Thread-162203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:16.033 [DEBUG] [Thread-162203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:16.033 [DEBUG] [Thread-162203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:16.033 [DEBUG] [Thread-162203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:16.033 [DEBUG] [Thread-162203] [transport.py] [_log()] Compression: none
2025-09-29T17:06:16.034 [DEBUG] [Thread-162203] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:16.089 [DEBUG] [Thread-162203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:16.090 [DEBUG] [Thread-162203] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:16.090 [DEBUG] [Thread-162203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:06:16.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:06:16.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:16.146 [DEBUG] [Thread-162203] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:16.146 [DEBUG] [Thread-162203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:16.146 [DEBUG] [Thread-162203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:16.146 [DEBUG] [Thread-162203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:06:16.146 [DEBUG] [Thread-162203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:16.164 [INFO] [Thread-162203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:16.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:06:16.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:17.209 [DEBUG] [Thread-162203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:17.209 [DEBUG] [Thread-162203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:17.257 [DEBUG] [Thread-162203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:17.257 [DEBUG] [Thread-162203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:17.265 [DEBUG] [Thread-162203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:17.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:17.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:06:17.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:06:17.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:17.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:17.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:17.296 [DEBUG] [Thread-162203] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:25.796 [DEBUG] [Thread-162205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:06:26.716 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:06:26.717 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:06:27.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:06:27.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:06:27.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:06:27.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 6, 16), 14.32, 37.7, 0.0, 19.27, 14.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:06:27.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:06:16
2025-09-29T17:06:27.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:06:28.144 [DEBUG] [Thread-162206] [transport.py] [_log()] starting thread (client mode): 0x2e375390
2025-09-29T17:06:28.144 [DEBUG] [Thread-162206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:28.165 [DEBUG] [Thread-162206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:06:28.165 [INFO] [Thread-162206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:28.168 [DEBUG] [Thread-162206] [transport.py] [_log()] Compression: none
2025-09-29T17:06:28.169 [DEBUG] [Thread-162206] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:28.187 [DEBUG] [Thread-162206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:28.187 [DEBUG] [Thread-162206] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:28.187 [DEBUG] [Thread-162206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:06:28.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:06:28.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:28.188 [DEBUG] [Thread-162206] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:28.188 [DEBUG] [Thread-162206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:28.188 [DEBUG] [Thread-162206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:28.188 [DEBUG] [Thread-162206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:06:28.188 [DEBUG] [Thread-162206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:28.197 [INFO] [Thread-162206] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:28.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:28.797 [DEBUG] [Thread-162206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:28.797 [DEBUG] [Thread-162206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:28.797 [DEBUG] [Thread-162206] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:06:28.838 [DEBUG] [Thread-162206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:28.839 [DEBUG] [Thread-162206] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:28.841 [DEBUG] [Thread-162206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:28.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:28.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:06:28.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:06:28.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:06:28.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:28.876 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:06:28.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:28.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:28.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:06:28.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.628885 -999.00  +14.20  17.70     44   +2.30 1 1 1 1 1   887    0 11.91 -8.92 ----- 15.8 17.7 160.0 26.4 18.7 -28.3 18.4 -27.4 20.0 -28.7 20.7 -29.1
2025-09-29T17:06:28.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:06:28.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:06:28.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.628885
2025-09-29T17:06:28.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:06:28.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:06:28.878 [DEBUG] [Thread-162206] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:28.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:06:28.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:06:28.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:06:28.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:06:16', tmtdew=14.32, humidity=37.7, cloud=0.0, wind=19.27, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:05:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:06:28.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:06:28.974 [DEBUG] [Thread-162209] [transport.py] [_log()] starting thread (client mode): 0x2b91dab0
2025-09-29T17:06:28.974 [DEBUG] [Thread-162209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:28.988 [DEBUG] [Thread-162209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:06:28.989 [INFO] [Thread-162209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:06:28.996 [DEBUG] [Thread-162209] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:28.996 [DEBUG] [Thread-162209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:06:28.996 [DEBUG] [Thread-162209] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:28.996 [DEBUG] [Thread-162209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:28.997 [DEBUG] [Thread-162209] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:28.998 [DEBUG] [Thread-162209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:28.998 [DEBUG] [Thread-162209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:28.998 [DEBUG] [Thread-162209] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:28.998 [DEBUG] [Thread-162209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:28.998 [DEBUG] [Thread-162209] [transport.py] [_log()] Compression: none
2025-09-29T17:06:28.998 [DEBUG] [Thread-162209] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:29.055 [DEBUG] [Thread-162209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:29.055 [DEBUG] [Thread-162209] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:29.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:06:29.056 [DEBUG] [Thread-162209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:06:29.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:29.110 [DEBUG] [Thread-162209] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:29.110 [DEBUG] [Thread-162209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:29.110 [DEBUG] [Thread-162209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:29.110 [DEBUG] [Thread-162209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:06:29.110 [DEBUG] [Thread-162209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:29.129 [INFO] [Thread-162209] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:29.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:06:29.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:30.106 [DEBUG] [Thread-162209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:30.106 [DEBUG] [Thread-162209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:30.154 [DEBUG] [Thread-162209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:30.154 [DEBUG] [Thread-162209] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:30.163 [DEBUG] [Thread-162209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:30.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:30.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:06:30.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:06:30.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:30.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:30.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:30.197 [DEBUG] [Thread-162209] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:40.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:06:40.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:06:40.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:06:40.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 6, 16), 14.32, 37.7, 0.0, 19.27, 14.75, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:06:40.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:06:16
2025-09-29T17:06:40.828 [DEBUG] [Thread-162211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:06:40.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:06:41.041 [DEBUG] [Thread-162212] [transport.py] [_log()] starting thread (client mode): 0x30ddf4f0
2025-09-29T17:06:41.041 [DEBUG] [Thread-162212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:41.063 [DEBUG] [Thread-162212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:06:41.063 [INFO] [Thread-162212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:06:41.066 [DEBUG] [Thread-162212] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:41.066 [DEBUG] [Thread-162212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:06:41.066 [DEBUG] [Thread-162212] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:41.066 [DEBUG] [Thread-162212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] Compression: none
2025-09-29T17:06:41.067 [DEBUG] [Thread-162212] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:41.083 [DEBUG] [Thread-162212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:41.084 [DEBUG] [Thread-162212] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:41.084 [DEBUG] [Thread-162212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:06:41.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:06:41.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:41.086 [DEBUG] [Thread-162212] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:41.086 [DEBUG] [Thread-162212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:41.086 [DEBUG] [Thread-162212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:41.086 [DEBUG] [Thread-162212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:06:41.086 [DEBUG] [Thread-162212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:41.110 [INFO] [Thread-162212] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:41.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:41.757 [DEBUG] [Thread-162212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:41.757 [DEBUG] [Thread-162212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:41.757 [DEBUG] [Thread-162212] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:06:41.798 [DEBUG] [Thread-162212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:41.798 [DEBUG] [Thread-162212] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:41.801 [DEBUG] [Thread-162212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:41.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:41.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:06:41.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:06:41.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:06:41.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:41.824 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:06:41.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:41.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:41.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:06:41.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.629232 -999.00  +14.20  16.48     44   +2.30 1 1 1 1 1   887    0 11.80 -9.99 ----- 16.1 16.5 138.8 24.4 18.7 -28.1 18.4 -27.4 19.9 -27.4 20.6 -29.2
2025-09-29T17:06:41.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:06:41.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:06:41.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.629232
2025-09-29T17:06:41.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:06:41.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:06:41.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:06:41.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:06:41.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:06:41.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:06:16', tmtdew=14.32, humidity=37.7, cloud=0.0, wind=19.27, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:06:05.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:06:41.826 [DEBUG] [Thread-162212] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:41.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:06:41.920 [DEBUG] [Thread-162215] [transport.py] [_log()] starting thread (client mode): 0x2e376aa0
2025-09-29T17:06:41.920 [DEBUG] [Thread-162215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:41.934 [DEBUG] [Thread-162215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:06:41.934 [INFO] [Thread-162215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:41.942 [DEBUG] [Thread-162215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:41.943 [DEBUG] [Thread-162215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:41.943 [DEBUG] [Thread-162215] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:41.943 [DEBUG] [Thread-162215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:41.943 [DEBUG] [Thread-162215] [transport.py] [_log()] Compression: none
2025-09-29T17:06:41.943 [DEBUG] [Thread-162215] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:42.002 [DEBUG] [Thread-162215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:42.002 [DEBUG] [Thread-162215] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:42.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:06:42.003 [DEBUG] [Thread-162215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:06:42.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:42.058 [DEBUG] [Thread-162215] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:42.058 [DEBUG] [Thread-162215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:42.058 [DEBUG] [Thread-162215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:42.058 [DEBUG] [Thread-162215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:06:42.058 [DEBUG] [Thread-162215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:42.077 [INFO] [Thread-162215] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:42.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:06:42.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:43.175 [DEBUG] [Thread-162215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:43.176 [DEBUG] [Thread-162215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:43.223 [DEBUG] [Thread-162215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:43.223 [DEBUG] [Thread-162215] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:43.232 [DEBUG] [Thread-162215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:43.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:43.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:06:43.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:06:43.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:43.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:43.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:43.266 [DEBUG] [Thread-162215] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:49.870 [DEBUG] [Thread-162217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:06:53.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:06:53.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:06:53.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:06:53.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 6, 48), 14.32, 37.57, 0.0, 24.21, 14.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:06:53.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:06:48
2025-09-29T17:06:53.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:06:54.125 [DEBUG] [Thread-162218] [transport.py] [_log()] starting thread (client mode): 0x2e3496c0
2025-09-29T17:06:54.125 [DEBUG] [Thread-162218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:54.146 [DEBUG] [Thread-162218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:06:54.146 [INFO] [Thread-162218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:06:54.148 [DEBUG] [Thread-162218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:54.148 [DEBUG] [Thread-162218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:06:54.148 [DEBUG] [Thread-162218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:54.148 [DEBUG] [Thread-162218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:54.148 [DEBUG] [Thread-162218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:54.148 [DEBUG] [Thread-162218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:54.148 [DEBUG] [Thread-162218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:54.148 [DEBUG] [Thread-162218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] Compression: none
2025-09-29T17:06:54.149 [DEBUG] [Thread-162218] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:54.161 [DEBUG] [Thread-162218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:54.161 [DEBUG] [Thread-162218] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:54.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:06:54.163 [DEBUG] [Thread-162218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:06:54.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:54.165 [DEBUG] [Thread-162218] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:54.165 [DEBUG] [Thread-162218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:54.165 [DEBUG] [Thread-162218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:54.165 [DEBUG] [Thread-162218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:06:54.165 [DEBUG] [Thread-162218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:54.202 [INFO] [Thread-162218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:54.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:54.859 [DEBUG] [Thread-162218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:54.859 [DEBUG] [Thread-162218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:54.859 [DEBUG] [Thread-162218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:06:54.900 [DEBUG] [Thread-162218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:54.901 [DEBUG] [Thread-162218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:54.904 [DEBUG] [Thread-162218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:54.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:54.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:06:54.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:06:54.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:06:54.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:54.928 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:06:54.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:54.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:54.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:06:54.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.629232 -999.00  +14.20  16.48     44   +2.30 1 1 1 1 1   887    0 11.80 -9.99 ----- 16.1 16.5 138.8 24.4 18.7 -28.1 18.4 -27.4 19.9 -27.4 20.6 -29.2
2025-09-29T17:06:54.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:06:54.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:06:54.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.629232
2025-09-29T17:06:54.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:06:54.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:06:54.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:06:54.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:06:54.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:06:54.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:06:48', tmtdew=14.32, humidity=37.57, cloud=0.0, wind=24.21, temperature=14.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:06:05.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:06:54.930 [DEBUG] [Thread-162218] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:06:55.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:06:55.023 [DEBUG] [Thread-162221] [transport.py] [_log()] starting thread (client mode): 0x2b9ce710
2025-09-29T17:06:55.023 [DEBUG] [Thread-162221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:06:55.039 [DEBUG] [Thread-162221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:06:55.039 [INFO] [Thread-162221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:06:55.048 [DEBUG] [Thread-162221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:06:55.048 [DEBUG] [Thread-162221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:06:55.048 [DEBUG] [Thread-162221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:06:55.048 [DEBUG] [Thread-162221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] client lang: <none>
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] server lang: <none>
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] kex follows: False
2025-09-29T17:06:55.049 [DEBUG] [Thread-162221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:06:55.050 [DEBUG] [Thread-162221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:06:55.050 [DEBUG] [Thread-162221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:06:55.050 [DEBUG] [Thread-162221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:06:55.050 [DEBUG] [Thread-162221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:06:55.050 [DEBUG] [Thread-162221] [transport.py] [_log()] Compression: none
2025-09-29T17:06:55.050 [DEBUG] [Thread-162221] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:06:55.106 [DEBUG] [Thread-162221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:06:55.107 [DEBUG] [Thread-162221] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:06:55.107 [DEBUG] [Thread-162221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:06:55.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:06:55.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:06:55.162 [DEBUG] [Thread-162221] [transport.py] [_log()] userauth is OK
2025-09-29T17:06:55.163 [DEBUG] [Thread-162221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:06:55.163 [DEBUG] [Thread-162221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:06:55.163 [DEBUG] [Thread-162221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:06:55.163 [DEBUG] [Thread-162221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:06:55.185 [INFO] [Thread-162221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:06:55.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:06:55.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:06:55.860 [DEBUG] [Thread-162223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:06:56.203 [DEBUG] [Thread-162221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:06:56.203 [DEBUG] [Thread-162221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:06:56.251 [DEBUG] [Thread-162221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:06:56.251 [DEBUG] [Thread-162221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:06:56.260 [DEBUG] [Thread-162221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:06:56.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:06:56.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:06:56.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:06:56.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:06:56.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:06:56.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:06:56.294 [DEBUG] [Thread-162221] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:07:06.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:07:06.297 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:07:06.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:07:06.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 6, 48), 14.32, 37.57, 0.0, 24.21, 14.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:07:06.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:06:48
2025-09-29T17:07:06.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:07:07.137 [DEBUG] [Thread-162224] [transport.py] [_log()] starting thread (client mode): 0x2b91c8e0
2025-09-29T17:07:07.137 [DEBUG] [Thread-162224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:07:07.156 [DEBUG] [Thread-162224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:07:07.156 [INFO] [Thread-162224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:07:07.158 [DEBUG] [Thread-162224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] client lang: <none>
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] server lang: <none>
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] kex follows: False
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] Compression: none
2025-09-29T17:07:07.159 [DEBUG] [Thread-162224] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:07:07.171 [DEBUG] [Thread-162224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:07:07.171 [DEBUG] [Thread-162224] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:07:07.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:07:07.172 [DEBUG] [Thread-162224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:07:07.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:07:07.174 [DEBUG] [Thread-162224] [transport.py] [_log()] userauth is OK
2025-09-29T17:07:07.174 [DEBUG] [Thread-162224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:07:07.174 [DEBUG] [Thread-162224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:07:07.174 [DEBUG] [Thread-162224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:07:07.174 [DEBUG] [Thread-162224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:07:07.192 [INFO] [Thread-162224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:07:07.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:07:07.858 [DEBUG] [Thread-162224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:07:07.858 [DEBUG] [Thread-162224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:07:07.858 [DEBUG] [Thread-162224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:07:07.899 [DEBUG] [Thread-162224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:07:07.900 [DEBUG] [Thread-162224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:07:07.902 [DEBUG] [Thread-162224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:07:07.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:07:07.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:07:07.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:07:07.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:07:07.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:07:07.922 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:07:07.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:07:07.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:07:07.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:07:07.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.629580 -999.00  +14.20  19.14     44   +2.30 1 1 1 1 1   887    0 11.75 -11.61 ----- 17.8 19.1 160.8 22.4 18.6 -28.7 18.3 -27.9 19.9 -28.4 20.6 -29.5
2025-09-29T17:07:07.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:07:07.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:07:07.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.629580
2025-09-29T17:07:07.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:07:07.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:07:07.925 [DEBUG] [Thread-162224] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:07:07.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:07:07.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:07:07.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:07:07.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:06:48', tmtdew=14.32, humidity=37.57, cloud=0.0, wind=24.21, temperature=14.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:06:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:07:08.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:07:08.019 [DEBUG] [Thread-162227] [transport.py] [_log()] starting thread (client mode): 0x2e3c1690
2025-09-29T17:07:08.019 [DEBUG] [Thread-162227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:07:08.033 [DEBUG] [Thread-162227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:07:08.033 [INFO] [Thread-162227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] client lang: <none>
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] server lang: <none>
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] kex follows: False
2025-09-29T17:07:08.041 [DEBUG] [Thread-162227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:07:08.042 [DEBUG] [Thread-162227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:07:08.042 [DEBUG] [Thread-162227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:07:08.042 [DEBUG] [Thread-162227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:07:08.042 [DEBUG] [Thread-162227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:07:08.042 [DEBUG] [Thread-162227] [transport.py] [_log()] Compression: none
2025-09-29T17:07:08.042 [DEBUG] [Thread-162227] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:07:08.098 [DEBUG] [Thread-162227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:07:08.099 [DEBUG] [Thread-162227] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:07:08.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:07:08.099 [DEBUG] [Thread-162227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:07:08.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:07:08.154 [DEBUG] [Thread-162227] [transport.py] [_log()] userauth is OK
2025-09-29T17:07:08.154 [DEBUG] [Thread-162227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:07:08.154 [DEBUG] [Thread-162227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:07:08.155 [DEBUG] [Thread-162227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:07:08.155 [DEBUG] [Thread-162227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:07:08.173 [INFO] [Thread-162227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:07:08.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:07:08.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:07:09.190 [DEBUG] [Thread-162227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:07:09.190 [DEBUG] [Thread-162227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:07:09.238 [DEBUG] [Thread-162227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:07:09.238 [DEBUG] [Thread-162227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:07:09.247 [DEBUG] [Thread-162227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:07:09.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:07:09.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:07:09.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:07:09.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:07:09.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:07:09.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:07:09.291 [DEBUG] [Thread-162227] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:07:10.906 [DEBUG] [Thread-162229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:07:19.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:07:19.291 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:07:19.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:07:19.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 6, 48), 14.32, 37.57, 0.0, 24.21, 14.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:07:19.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:06:48
2025-09-29T17:07:19.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:07:20.134 [DEBUG] [Thread-162230] [transport.py] [_log()] starting thread (client mode): 0x2b91f9a0
2025-09-29T17:07:20.134 [DEBUG] [Thread-162230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:07:20.154 [DEBUG] [Thread-162230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:07:20.154 [INFO] [Thread-162230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] client lang: <none>
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] server lang: <none>
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] kex follows: False
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] Compression: none
2025-09-29T17:07:20.155 [DEBUG] [Thread-162230] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:07:20.163 [DEBUG] [Thread-162230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:07:20.163 [DEBUG] [Thread-162230] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:07:20.163 [DEBUG] [Thread-162230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:07:20.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:07:20.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:07:20.164 [DEBUG] [Thread-162230] [transport.py] [_log()] userauth is OK
2025-09-29T17:07:20.165 [DEBUG] [Thread-162230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:07:20.165 [DEBUG] [Thread-162230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:07:20.165 [DEBUG] [Thread-162230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:07:20.165 [DEBUG] [Thread-162230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:07:20.181 [INFO] [Thread-162230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:07:20.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:07:20.788 [DEBUG] [Thread-162230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:07:20.789 [DEBUG] [Thread-162230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:07:20.789 [DEBUG] [Thread-162230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:07:20.830 [DEBUG] [Thread-162230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:07:20.830 [DEBUG] [Thread-162230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:07:20.832 [DEBUG] [Thread-162230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:07:20.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:07:20.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:07:20.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:07:20.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:07:20.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:07:20.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:07:20.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:07:20.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:07:20.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:07:20.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.629580 -999.00  +14.20  19.14     44   +2.30 1 1 1 1 1   887    0 11.75 -11.61 ----- 17.8 19.1 160.8 22.4 18.6 -28.7 18.3 -27.9 19.9 -28.4 20.6 -29.5
2025-09-29T17:07:20.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:07:20.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:07:20.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.629580
2025-09-29T17:07:20.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:07:20.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:07:20.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:07:20.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:07:20.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:07:20.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:06:48', tmtdew=14.32, humidity=37.57, cloud=0.0, wind=24.21, temperature=14.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:06:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:07:20.851 [DEBUG] [Thread-162230] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:07:20.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:07:20.936 [DEBUG] [Thread-162233] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-29T17:07:20.936 [DEBUG] [Thread-162233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:07:20.951 [DEBUG] [Thread-162233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:07:20.951 [INFO] [Thread-162233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] client lang: <none>
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] server lang: <none>
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] kex follows: False
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] Compression: none
2025-09-29T17:07:20.958 [DEBUG] [Thread-162233] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:07:21.016 [DEBUG] [Thread-162233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:07:21.016 [DEBUG] [Thread-162233] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:07:21.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:07:21.017 [DEBUG] [Thread-162233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:07:21.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:07:21.074 [DEBUG] [Thread-162233] [transport.py] [_log()] userauth is OK
2025-09-29T17:07:21.074 [DEBUG] [Thread-162233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:07:21.074 [DEBUG] [Thread-162233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:07:21.074 [DEBUG] [Thread-162233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:07:21.074 [DEBUG] [Thread-162233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:07:21.088 [INFO] [Thread-162233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:07:21.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:07:21.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:07:22.150 [DEBUG] [Thread-162233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:07:22.150 [DEBUG] [Thread-162233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:07:22.198 [DEBUG] [Thread-162233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:07:22.198 [DEBUG] [Thread-162233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:07:22.206 [DEBUG] [Thread-162233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:07:22.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:07:22.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:07:22.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:07:22.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:07:22.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:07:22.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:07:22.238 [DEBUG] [Thread-162233] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:07:25.949 [DEBUG] [Thread-162235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:07:26.859 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:07:26.860 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:07:32.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:07:32.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:07:32.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:07:32.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 7, 20), 14.3, 37.61, 0.0, 20.64, 14.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:07:32.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:07:20
2025-09-29T17:07:32.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:07:33.079 [DEBUG] [Thread-162236] [transport.py] [_log()] starting thread (client mode): 0x2e349a80
2025-09-29T17:07:33.079 [DEBUG] [Thread-162236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:07:33.099 [DEBUG] [Thread-162236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:07:33.100 [INFO] [Thread-162236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:07:33.101 [DEBUG] [Thread-162236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:07:33.101 [DEBUG] [Thread-162236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] client lang: <none>
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] server lang: <none>
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] kex follows: False
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] Compression: none
2025-09-29T17:07:33.102 [DEBUG] [Thread-162236] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:07:33.110 [DEBUG] [Thread-162236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:07:33.111 [DEBUG] [Thread-162236] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:07:33.111 [DEBUG] [Thread-162236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:07:33.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:07:33.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:07:33.113 [DEBUG] [Thread-162236] [transport.py] [_log()] userauth is OK
2025-09-29T17:07:33.113 [DEBUG] [Thread-162236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:07:33.113 [DEBUG] [Thread-162236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:07:33.113 [DEBUG] [Thread-162236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:07:33.113 [DEBUG] [Thread-162236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:07:33.130 [INFO] [Thread-162236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:07:33.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:07:33.698 [DEBUG] [Thread-162236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:07:33.698 [DEBUG] [Thread-162236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:07:33.698 [DEBUG] [Thread-162236] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:07:33.739 [DEBUG] [Thread-162236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:07:33.740 [DEBUG] [Thread-162236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:07:33.743 [DEBUG] [Thread-162236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:07:33.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:07:33.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:07:33.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:07:33.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:07:33.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:07:33.766 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:07:33.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:07:33.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:07:33.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:07:33.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.629580 -999.00  +14.20  19.14     44   +2.30 1 1 1 1 1   887    0 11.75 -11.61 ----- 17.8 19.1 160.8 22.4 18.6 -28.7 18.3 -27.9 19.9 -28.4 20.6 -29.5
2025-09-29T17:07:33.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:07:33.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:07:33.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.629580
2025-09-29T17:07:33.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:07:33.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:07:33.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:07:33.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:07:33.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:07:33.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:07:20', tmtdew=14.3, humidity=37.61, cloud=0.0, wind=20.64, temperature=14.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:06:35.712', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:07:33.769 [DEBUG] [Thread-162236] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:07:33.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:07:40.978 [DEBUG] [Thread-162239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:07:49.903 [DEBUG] [Thread-162240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:07:56.022 [DEBUG] [Thread-162241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:08:11.055 [DEBUG] [Thread-162242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:08:26.080 [DEBUG] [Thread-162243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:08:26.997 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:08:26.998 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:08:41.104 [DEBUG] [Thread-162244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:08:49.936 [DEBUG] [Thread-162245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:08:56.135 [DEBUG] [Thread-162246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:09:11.165 [DEBUG] [Thread-162247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:09:26.197 [DEBUG] [Thread-162248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:09:27.137 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:09:27.138 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:09:41.227 [DEBUG] [Thread-162249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:09:46.555 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:09:49.973 [DEBUG] [Thread-162250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:09:56.257 [DEBUG] [Thread-162251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:09:56.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:09:56.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:09:56.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:09:57.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 9, 28), 14.1, 38.21, 0.0, 20.27, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:09:57.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:09:28
2025-09-29T17:09:57.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:09:57.436 [DEBUG] [Thread-162252] [transport.py] [_log()] starting thread (client mode): 0x2b923190
2025-09-29T17:09:57.436 [DEBUG] [Thread-162252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:09:57.456 [DEBUG] [Thread-162252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:09:57.456 [INFO] [Thread-162252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:09:57.460 [DEBUG] [Thread-162252] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:09:57.460 [DEBUG] [Thread-162252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:09:57.460 [DEBUG] [Thread-162252] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:09:57.460 [DEBUG] [Thread-162252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:09:57.460 [DEBUG] [Thread-162252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:09:57.460 [DEBUG] [Thread-162252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:09:57.460 [DEBUG] [Thread-162252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:09:57.460 [DEBUG] [Thread-162252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] client lang: <none>
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] server lang: <none>
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] kex follows: False
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] Compression: none
2025-09-29T17:09:57.461 [DEBUG] [Thread-162252] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:09:57.481 [DEBUG] [Thread-162252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:09:57.481 [DEBUG] [Thread-162252] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:09:57.482 [DEBUG] [Thread-162252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:09:57.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:09:57.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:09:57.484 [DEBUG] [Thread-162252] [transport.py] [_log()] userauth is OK
2025-09-29T17:09:57.484 [DEBUG] [Thread-162252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:09:57.484 [DEBUG] [Thread-162252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:09:57.484 [DEBUG] [Thread-162252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:09:57.484 [DEBUG] [Thread-162252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:09:57.508 [INFO] [Thread-162252] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:09:57.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:09:58.102 [DEBUG] [Thread-162252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:09:58.102 [DEBUG] [Thread-162252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:09:58.102 [DEBUG] [Thread-162252] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:09:58.143 [DEBUG] [Thread-162252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:09:58.143 [DEBUG] [Thread-162252] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:09:58.149 [DEBUG] [Thread-162252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:09:58.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:09:58.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:09:58.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:09:58.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:09:58.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:09:58.165 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:09:58.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:09:58.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:09:58.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:09:58.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.631663 -999.00  +14.10  17.54     44   +2.30 1 1 1 1 1   887    0 11.70 -15.67 ----- 15.6 17.5 160.2 22.4 18.4 -28.4 18.1 -27.6 19.6 -28.2 20.4 -29.1
2025-09-29T17:09:58.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:09:58.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:09:58.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.631663
2025-09-29T17:09:58.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:09:58.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:09:58.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:09:58.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:09:58.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:09:58.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:09:28', tmtdew=14.1, humidity=38.21, cloud=0.0, wind=20.27, temperature=14.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:09:35.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:09:58.167 [DEBUG] [Thread-162252] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:09:58.252 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:09:58.265 [DEBUG] [Thread-162255] [transport.py] [_log()] starting thread (client mode): 0x2b9214e0
2025-09-29T17:09:58.265 [DEBUG] [Thread-162255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:09:58.280 [DEBUG] [Thread-162255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:09:58.281 [INFO] [Thread-162255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:09:58.288 [DEBUG] [Thread-162255] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:09:58.288 [DEBUG] [Thread-162255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:09:58.288 [DEBUG] [Thread-162255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:09:58.288 [DEBUG] [Thread-162255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] client lang: <none>
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] server lang: <none>
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] kex follows: False
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] Compression: none
2025-09-29T17:09:58.289 [DEBUG] [Thread-162255] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:09:58.347 [DEBUG] [Thread-162255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:09:58.348 [DEBUG] [Thread-162255] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:09:58.348 [DEBUG] [Thread-162255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:09:58.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:09:58.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:09:58.404 [DEBUG] [Thread-162255] [transport.py] [_log()] userauth is OK
2025-09-29T17:09:58.404 [DEBUG] [Thread-162255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:09:58.404 [DEBUG] [Thread-162255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:09:58.405 [DEBUG] [Thread-162255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:09:58.405 [DEBUG] [Thread-162255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:09:58.424 [INFO] [Thread-162255] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:09:58.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:09:58.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:09:59.387 [DEBUG] [Thread-162255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:09:59.388 [DEBUG] [Thread-162255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:09:59.435 [DEBUG] [Thread-162255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:09:59.435 [DEBUG] [Thread-162255] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:09:59.444 [DEBUG] [Thread-162255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:09:59.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:09:59.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:09:59.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:09:59.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:09:59.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:09:59.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:09:59.479 [DEBUG] [Thread-162255] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:10:09.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:10:09.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:10:09.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:10:10.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 9, 28), 14.0, 38.21, 0.0, 22.07, 14.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:10:10.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:09:28
2025-09-29T17:10:10.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:10:10.387 [DEBUG] [Thread-162257] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-29T17:10:10.387 [DEBUG] [Thread-162257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:10:10.406 [DEBUG] [Thread-162257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:10:10.406 [INFO] [Thread-162257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:10:10.409 [DEBUG] [Thread-162257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] client lang: <none>
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] server lang: <none>
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] kex follows: False
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] Compression: none
2025-09-29T17:10:10.410 [DEBUG] [Thread-162257] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:10:10.431 [DEBUG] [Thread-162257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:10:10.431 [DEBUG] [Thread-162257] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:10:10.431 [DEBUG] [Thread-162257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:10:10.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:10:10.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:10:10.432 [DEBUG] [Thread-162257] [transport.py] [_log()] userauth is OK
2025-09-29T17:10:10.432 [DEBUG] [Thread-162257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:10:10.432 [DEBUG] [Thread-162257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:10:10.432 [DEBUG] [Thread-162257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:10:10.432 [DEBUG] [Thread-162257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:10:10.441 [INFO] [Thread-162257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:10:10.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:10:11.286 [DEBUG] [Thread-162259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:10:16.936 [DEBUG] [Thread-162257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:10:16.936 [DEBUG] [Thread-162257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:10:16.936 [DEBUG] [Thread-162257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:10:16.977 [DEBUG] [Thread-162257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:10:16.977 [DEBUG] [Thread-162257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:10:16.980 [DEBUG] [Thread-162257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:10:16.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:10:16.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:10:16.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:10:16.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:10:17.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:10:17.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:10:17.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:10:17.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:10:17.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:10:17.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.631663 -999.00  +14.10  17.54     44   +2.30 1 1 1 1 1   887    0 11.70 -15.67 ----- 15.6 17.5 160.2 22.4 18.4 -28.4 18.1 -27.6 19.6 -28.2 20.4 -29.1
2025-09-29T17:10:17.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:10:17.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:10:17.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.631663
2025-09-29T17:10:17.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:10:17.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:10:17.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:10:17.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:10:17.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:10:17.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:09:28', tmtdew=14.0, humidity=38.21, cloud=0.0, wind=22.07, temperature=14.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:09:35.683', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:10:17.006 [DEBUG] [Thread-162257] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:10:17.092 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:10:17.101 [DEBUG] [Thread-162261] [transport.py] [_log()] starting thread (client mode): 0x2b91c280
2025-09-29T17:10:17.101 [DEBUG] [Thread-162261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:10:17.116 [DEBUG] [Thread-162261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:10:17.116 [INFO] [Thread-162261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:10:17.124 [DEBUG] [Thread-162261] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:10:17.124 [DEBUG] [Thread-162261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:10:17.124 [DEBUG] [Thread-162261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:10:17.124 [DEBUG] [Thread-162261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:17.124 [DEBUG] [Thread-162261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:17.124 [DEBUG] [Thread-162261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:17.124 [DEBUG] [Thread-162261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] client lang: <none>
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] server lang: <none>
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] kex follows: False
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:10:17.125 [DEBUG] [Thread-162261] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:10:17.126 [DEBUG] [Thread-162261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:10:17.126 [DEBUG] [Thread-162261] [transport.py] [_log()] Compression: none
2025-09-29T17:10:17.126 [DEBUG] [Thread-162261] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:10:17.188 [DEBUG] [Thread-162261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:10:17.188 [DEBUG] [Thread-162261] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:10:17.189 [DEBUG] [Thread-162261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:10:17.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:10:17.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:10:17.244 [DEBUG] [Thread-162261] [transport.py] [_log()] userauth is OK
2025-09-29T17:10:17.244 [DEBUG] [Thread-162261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:10:17.244 [DEBUG] [Thread-162261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:10:17.244 [DEBUG] [Thread-162261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:10:17.245 [DEBUG] [Thread-162261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:10:17.264 [INFO] [Thread-162261] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:10:17.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:10:17.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:10:18.232 [DEBUG] [Thread-162261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:10:18.233 [DEBUG] [Thread-162261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:10:18.280 [DEBUG] [Thread-162261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:10:18.280 [DEBUG] [Thread-162261] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:10:18.289 [DEBUG] [Thread-162261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:10:18.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:10:18.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:10:18.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:10:18.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:10:18.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:10:18.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:10:18.324 [DEBUG] [Thread-162261] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:10:26.321 [DEBUG] [Thread-162263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:10:27.277 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:10:27.278 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:10:28.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:10:28.324 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:10:28.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:10:28.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 9, 28), 14.0, 38.21, 0.0, 22.07, 14.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:10:28.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:09:28
2025-09-29T17:10:29.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:10:29.187 [DEBUG] [Thread-162264] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bf0
2025-09-29T17:10:29.187 [DEBUG] [Thread-162264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:10:29.208 [DEBUG] [Thread-162264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:10:29.208 [INFO] [Thread-162264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:10:29.211 [DEBUG] [Thread-162264] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] client lang: <none>
2025-09-29T17:10:29.212 [DEBUG] [Thread-162264] [transport.py] [_log()] server lang: <none>
2025-09-29T17:10:29.213 [DEBUG] [Thread-162264] [transport.py] [_log()] kex follows: False
2025-09-29T17:10:29.213 [DEBUG] [Thread-162264] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:10:29.213 [DEBUG] [Thread-162264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:10:29.213 [DEBUG] [Thread-162264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:10:29.213 [DEBUG] [Thread-162264] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:10:29.213 [DEBUG] [Thread-162264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:10:29.213 [DEBUG] [Thread-162264] [transport.py] [_log()] Compression: none
2025-09-29T17:10:29.213 [DEBUG] [Thread-162264] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:10:29.226 [DEBUG] [Thread-162264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:10:29.226 [DEBUG] [Thread-162264] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:10:29.227 [DEBUG] [Thread-162264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:10:29.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:10:29.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:10:29.229 [DEBUG] [Thread-162264] [transport.py] [_log()] userauth is OK
2025-09-29T17:10:29.229 [DEBUG] [Thread-162264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:10:29.229 [DEBUG] [Thread-162264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:10:29.229 [DEBUG] [Thread-162264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:10:29.229 [DEBUG] [Thread-162264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:10:29.247 [INFO] [Thread-162264] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:10:29.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:10:29.853 [DEBUG] [Thread-162264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:10:29.853 [DEBUG] [Thread-162264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:10:29.854 [DEBUG] [Thread-162264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:10:29.894 [DEBUG] [Thread-162264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:10:29.895 [DEBUG] [Thread-162264] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:10:29.897 [DEBUG] [Thread-162264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:10:29.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:10:29.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:10:29.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:10:29.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:10:29.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:10:29.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:10:29.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:10:29.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:10:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:10:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.632010 -999.00  +14.20  13.51     44   +2.30 1 1 1 1 1   887    0 11.66 -16.72 ----- 16.4 13.5 151.6 18.5 18.5 -28.0 18.1 -26.8 19.6 -27.2 20.4 -28.8
2025-09-29T17:10:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:10:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:10:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.632010
2025-09-29T17:10:29.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:10:29.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:10:29.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:10:29.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:10:29.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:10:29.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:09:28', tmtdew=14.0, humidity=38.21, cloud=0.0, wind=22.07, temperature=14.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:10:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:10:29.920 [DEBUG] [Thread-162264] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:10:30.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:10:30.018 [DEBUG] [Thread-162267] [transport.py] [_log()] starting thread (client mode): 0x2b968af0
2025-09-29T17:10:30.018 [DEBUG] [Thread-162267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:10:30.033 [DEBUG] [Thread-162267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:10:30.033 [INFO] [Thread-162267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:10:30.040 [DEBUG] [Thread-162267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:10:30.041 [DEBUG] [Thread-162267] [transport.py] [_log()] client lang: <none>
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] server lang: <none>
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] kex follows: False
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] Compression: none
2025-09-29T17:10:30.042 [DEBUG] [Thread-162267] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:10:30.100 [DEBUG] [Thread-162267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:10:30.101 [DEBUG] [Thread-162267] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:10:30.102 [DEBUG] [Thread-162267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:10:30.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:10:30.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:10:30.156 [DEBUG] [Thread-162267] [transport.py] [_log()] userauth is OK
2025-09-29T17:10:30.156 [DEBUG] [Thread-162267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:10:30.156 [DEBUG] [Thread-162267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:10:30.156 [DEBUG] [Thread-162267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:10:30.156 [DEBUG] [Thread-162267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:10:30.178 [INFO] [Thread-162267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:10:30.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:10:30.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:10:31.178 [DEBUG] [Thread-162267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:10:31.179 [DEBUG] [Thread-162267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:10:31.226 [DEBUG] [Thread-162267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:10:31.226 [DEBUG] [Thread-162267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:10:31.235 [DEBUG] [Thread-162267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:10:31.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:10:31.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:10:31.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:10:31.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:10:31.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:10:31.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:10:31.270 [DEBUG] [Thread-162267] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:10:41.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:10:41.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:10:41.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:10:41.365 [DEBUG] [Thread-162269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:10:41.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 10, 32), 14.04, 38.13, 0.0, 22.02, 14.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:10:41.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:10:32
2025-09-29T17:10:41.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:10:42.125 [DEBUG] [Thread-162270] [transport.py] [_log()] starting thread (client mode): 0x2e348f10
2025-09-29T17:10:42.125 [DEBUG] [Thread-162270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:10:42.145 [DEBUG] [Thread-162270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:10:42.145 [INFO] [Thread-162270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] client lang: <none>
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] server lang: <none>
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] kex follows: False
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] Compression: none
2025-09-29T17:10:42.149 [DEBUG] [Thread-162270] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:10:42.168 [DEBUG] [Thread-162270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:10:42.169 [DEBUG] [Thread-162270] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:10:42.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:10:42.170 [DEBUG] [Thread-162270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:10:42.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:10:42.171 [DEBUG] [Thread-162270] [transport.py] [_log()] userauth is OK
2025-09-29T17:10:42.171 [DEBUG] [Thread-162270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:10:42.171 [DEBUG] [Thread-162270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:10:42.171 [DEBUG] [Thread-162270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:10:42.172 [DEBUG] [Thread-162270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:10:42.195 [INFO] [Thread-162270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:10:42.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:10:42.964 [DEBUG] [Thread-162270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:10:42.964 [DEBUG] [Thread-162270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:10:42.964 [DEBUG] [Thread-162270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:10:43.005 [DEBUG] [Thread-162270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:10:43.005 [DEBUG] [Thread-162270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:10:43.007 [DEBUG] [Thread-162270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:10:43.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:10:43.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:10:43.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:10:43.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:10:43.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:10:43.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:10:43.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:10:43.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:10:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:10:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.632010 -999.00  +14.20  13.51     44   +2.30 1 1 1 1 1   887    0 11.66 -16.72 ----- 16.4 13.5 151.6 18.5 18.5 -28.0 18.1 -26.8 19.6 -27.2 20.4 -28.8
2025-09-29T17:10:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:10:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:10:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.632010
2025-09-29T17:10:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:10:43.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:10:43.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:10:43.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:10:43.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:10:43.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:10:32', tmtdew=14.04, humidity=38.13, cloud=0.0, wind=22.02, temperature=14.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:10:05.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:10:43.026 [DEBUG] [Thread-162270] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:10:43.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:10:43.109 [DEBUG] [Thread-162273] [transport.py] [_log()] starting thread (client mode): 0x2e3c2410
2025-09-29T17:10:43.109 [DEBUG] [Thread-162273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:10:43.123 [DEBUG] [Thread-162273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:10:43.123 [INFO] [Thread-162273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:10:43.131 [DEBUG] [Thread-162273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:10:43.131 [DEBUG] [Thread-162273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] client lang: <none>
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] server lang: <none>
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] kex follows: False
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] Compression: none
2025-09-29T17:10:43.132 [DEBUG] [Thread-162273] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:10:43.187 [DEBUG] [Thread-162273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:10:43.188 [DEBUG] [Thread-162273] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:10:43.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:10:43.189 [DEBUG] [Thread-162273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:10:43.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:10:43.244 [DEBUG] [Thread-162273] [transport.py] [_log()] userauth is OK
2025-09-29T17:10:43.244 [DEBUG] [Thread-162273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:10:43.244 [DEBUG] [Thread-162273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:10:43.244 [DEBUG] [Thread-162273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:10:43.244 [DEBUG] [Thread-162273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:10:43.262 [INFO] [Thread-162273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:10:43.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:10:43.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:10:44.243 [DEBUG] [Thread-162273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:10:44.244 [DEBUG] [Thread-162273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:10:44.291 [DEBUG] [Thread-162273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:10:44.291 [DEBUG] [Thread-162273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:10:44.300 [DEBUG] [Thread-162273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:10:44.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:10:44.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:10:44.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:10:44.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:10:44.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:10:44.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:10:44.335 [DEBUG] [Thread-162273] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:10:50.000 [DEBUG] [Thread-162275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:10:54.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:10:54.338 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:10:54.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:10:54.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 10, 32), 14.04, 38.13, 0.0, 22.02, 14.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:10:54.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:10:32
2025-09-29T17:10:55.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:10:55.186 [DEBUG] [Thread-162276] [transport.py] [_log()] starting thread (client mode): 0x2e38e200
2025-09-29T17:10:55.186 [DEBUG] [Thread-162276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:10:55.199 [DEBUG] [Thread-162276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:10:55.199 [INFO] [Thread-162276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] client lang: <none>
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] server lang: <none>
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] kex follows: False
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] Compression: none
2025-09-29T17:10:55.201 [DEBUG] [Thread-162276] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:10:55.211 [DEBUG] [Thread-162276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:10:55.211 [DEBUG] [Thread-162276] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:10:55.211 [DEBUG] [Thread-162276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:10:55.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:10:55.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:10:55.213 [DEBUG] [Thread-162276] [transport.py] [_log()] userauth is OK
2025-09-29T17:10:55.213 [DEBUG] [Thread-162276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:10:55.213 [DEBUG] [Thread-162276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:10:55.213 [DEBUG] [Thread-162276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:10:55.213 [DEBUG] [Thread-162276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:10:55.226 [INFO] [Thread-162276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:10:55.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:10:55.925 [DEBUG] [Thread-162276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:10:55.925 [DEBUG] [Thread-162276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:10:55.926 [DEBUG] [Thread-162276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:10:55.966 [DEBUG] [Thread-162276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:10:55.967 [DEBUG] [Thread-162276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:10:55.969 [DEBUG] [Thread-162276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:10:55.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:10:55.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:10:55.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:10:55.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:10:55.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:10:55.987 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:10:55.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:10:55.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:10:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:10:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.632357 -999.00  +14.30  10.48     44   +2.30 1 1 1 1 1   887    0 11.66 -17.96 ----- 11.7 10.5 159.2 21.2 18.4 -28.1 18.1 -26.8 19.7 -27.7 20.4 -28.7
2025-09-29T17:10:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:10:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:10:55.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.632357
2025-09-29T17:10:55.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:10:55.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:10:55.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:10:55.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:10:55.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:10:55.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:10:32', tmtdew=14.04, humidity=38.13, cloud=0.0, wind=22.02, temperature=14.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:10:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:10:55.990 [DEBUG] [Thread-162276] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:10:56.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:10:56.084 [DEBUG] [Thread-162279] [transport.py] [_log()] starting thread (client mode): 0x2e362080
2025-09-29T17:10:56.084 [DEBUG] [Thread-162279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:10:56.099 [DEBUG] [Thread-162279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:10:56.099 [INFO] [Thread-162279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:10:56.106 [DEBUG] [Thread-162279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:10:56.107 [DEBUG] [Thread-162279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:10:56.107 [DEBUG] [Thread-162279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:10:56.107 [DEBUG] [Thread-162279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:56.107 [DEBUG] [Thread-162279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:10:56.107 [DEBUG] [Thread-162279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:56.107 [DEBUG] [Thread-162279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] client lang: <none>
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] server lang: <none>
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] kex follows: False
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] Compression: none
2025-09-29T17:10:56.108 [DEBUG] [Thread-162279] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:10:56.163 [DEBUG] [Thread-162279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:10:56.164 [DEBUG] [Thread-162279] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:10:56.164 [DEBUG] [Thread-162279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:10:56.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:10:56.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:10:56.221 [DEBUG] [Thread-162279] [transport.py] [_log()] userauth is OK
2025-09-29T17:10:56.221 [DEBUG] [Thread-162279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:10:56.221 [DEBUG] [Thread-162279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:10:56.222 [DEBUG] [Thread-162279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:10:56.222 [DEBUG] [Thread-162279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:10:56.243 [INFO] [Thread-162279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:10:56.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:10:56.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:10:56.406 [DEBUG] [Thread-162281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:10:57.233 [DEBUG] [Thread-162279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:10:57.233 [DEBUG] [Thread-162279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:10:57.281 [DEBUG] [Thread-162279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:10:57.281 [DEBUG] [Thread-162279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:10:57.291 [DEBUG] [Thread-162279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:10:57.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:10:57.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:10:57.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:10:57.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:10:57.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:10:57.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:10:57.326 [DEBUG] [Thread-162279] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:07.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:11:07.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:11:07.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:11:07.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 11, 3), 14.13, 37.9, 0.0, 19.78, 14.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:11:07.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:11:03
2025-09-29T17:11:08.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:11:08.181 [DEBUG] [Thread-162282] [transport.py] [_log()] starting thread (client mode): 0x2e3c0df0
2025-09-29T17:11:08.181 [DEBUG] [Thread-162282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:11:08.202 [DEBUG] [Thread-162282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:11:08.202 [INFO] [Thread-162282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:11:08.205 [DEBUG] [Thread-162282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:11:08.205 [DEBUG] [Thread-162282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:11:08.205 [DEBUG] [Thread-162282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:11:08.205 [DEBUG] [Thread-162282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:08.205 [DEBUG] [Thread-162282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] client lang: <none>
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] server lang: <none>
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] kex follows: False
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] Compression: none
2025-09-29T17:11:08.206 [DEBUG] [Thread-162282] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:11:08.214 [DEBUG] [Thread-162282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:11:08.214 [DEBUG] [Thread-162282] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:11:08.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:11:08.214 [DEBUG] [Thread-162282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:11:08.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:11:08.215 [DEBUG] [Thread-162282] [transport.py] [_log()] userauth is OK
2025-09-29T17:11:08.215 [DEBUG] [Thread-162282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:11:08.215 [DEBUG] [Thread-162282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:11:08.215 [DEBUG] [Thread-162282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:11:08.215 [DEBUG] [Thread-162282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:11:08.231 [INFO] [Thread-162282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:11:08.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:11:08.850 [DEBUG] [Thread-162282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:11:08.850 [DEBUG] [Thread-162282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:11:08.850 [DEBUG] [Thread-162282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:11:08.891 [DEBUG] [Thread-162282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:11:08.892 [DEBUG] [Thread-162282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:11:08.894 [DEBUG] [Thread-162282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:11:08.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:11:08.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:11:08.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:11:08.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:11:08.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:11:08.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:11:08.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:11:08.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:11:08.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:11:08.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.632357 -999.00  +14.30  10.48     44   +2.30 1 1 1 1 1   887    0 11.66 -17.96 ----- 11.7 10.5 159.2 21.2 18.4 -28.1 18.1 -26.8 19.7 -27.7 20.4 -28.7
2025-09-29T17:11:08.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:11:08.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:11:08.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.632357
2025-09-29T17:11:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:11:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:11:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:11:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:11:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:11:08.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:11:03', tmtdew=14.13, humidity=37.9, cloud=0.0, wind=19.78, temperature=14.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:10:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:11:08.920 [DEBUG] [Thread-162282] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:09.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:11:09.017 [DEBUG] [Thread-162285] [transport.py] [_log()] starting thread (client mode): 0x2e38ef50
2025-09-29T17:11:09.017 [DEBUG] [Thread-162285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:11:09.033 [DEBUG] [Thread-162285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:11:09.033 [INFO] [Thread-162285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:11:09.040 [DEBUG] [Thread-162285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] client lang: <none>
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] server lang: <none>
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] kex follows: False
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] Compression: none
2025-09-29T17:11:09.041 [DEBUG] [Thread-162285] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:11:09.100 [DEBUG] [Thread-162285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:11:09.100 [DEBUG] [Thread-162285] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:11:09.101 [DEBUG] [Thread-162285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:11:09.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:11:09.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:11:09.156 [DEBUG] [Thread-162285] [transport.py] [_log()] userauth is OK
2025-09-29T17:11:09.156 [DEBUG] [Thread-162285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:11:09.156 [DEBUG] [Thread-162285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:11:09.157 [DEBUG] [Thread-162285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:11:09.157 [DEBUG] [Thread-162285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:11:09.175 [INFO] [Thread-162285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:11:09.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:11:09.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:11:10.156 [DEBUG] [Thread-162285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:11:10.156 [DEBUG] [Thread-162285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:11:10.204 [DEBUG] [Thread-162285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:11:10.204 [DEBUG] [Thread-162285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:11:10.214 [DEBUG] [Thread-162285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:11:10.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:11:10.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:11:10.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:11:10.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:11:10.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:11:10.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:11:10.249 [DEBUG] [Thread-162285] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:11.448 [DEBUG] [Thread-162287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:11:20.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:11:20.251 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:11:20.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:11:20.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 11, 3), 14.13, 37.9, 0.0, 19.78, 14.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:11:20.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:11:03
2025-09-29T17:11:20.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:11:21.102 [DEBUG] [Thread-162288] [transport.py] [_log()] starting thread (client mode): 0x30ddf7c0
2025-09-29T17:11:21.102 [DEBUG] [Thread-162288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:11:21.126 [DEBUG] [Thread-162288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:11:21.127 [INFO] [Thread-162288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:11:21.130 [DEBUG] [Thread-162288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] client lang: <none>
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] server lang: <none>
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] kex follows: False
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] Compression: none
2025-09-29T17:11:21.131 [DEBUG] [Thread-162288] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:11:21.147 [DEBUG] [Thread-162288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:11:21.148 [DEBUG] [Thread-162288] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:11:21.148 [DEBUG] [Thread-162288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:11:21.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:11:21.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:11:21.150 [DEBUG] [Thread-162288] [transport.py] [_log()] userauth is OK
2025-09-29T17:11:21.150 [DEBUG] [Thread-162288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:11:21.150 [DEBUG] [Thread-162288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:11:21.151 [DEBUG] [Thread-162288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:11:21.151 [DEBUG] [Thread-162288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:11:21.174 [INFO] [Thread-162288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:11:21.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:11:21.994 [DEBUG] [Thread-162288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:11:21.994 [DEBUG] [Thread-162288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:11:21.994 [DEBUG] [Thread-162288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:11:22.034 [DEBUG] [Thread-162288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:11:22.035 [DEBUG] [Thread-162288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:11:22.038 [DEBUG] [Thread-162288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:11:22.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:11:22.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:11:22.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:11:22.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:11:22.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:11:22.059 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:11:22.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:11:22.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:11:22.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:11:22.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.632357 -999.00  +14.30  10.48     44   +2.30 1 1 1 1 1   887    0 11.66 -17.96 ----- 11.7 10.5 159.2 21.2 18.4 -28.1 18.1 -26.8 19.7 -27.7 20.4 -28.7
2025-09-29T17:11:22.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:11:22.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:11:22.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.632357
2025-09-29T17:11:22.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:11:22.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:11:22.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:11:22.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:11:22.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:11:22.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:11:03', tmtdew=14.13, humidity=37.9, cloud=0.0, wind=19.78, temperature=14.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:10:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:11:22.063 [DEBUG] [Thread-162288] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:22.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:11:22.158 [DEBUG] [Thread-162291] [transport.py] [_log()] starting thread (client mode): 0x2e3c0df0
2025-09-29T17:11:22.158 [DEBUG] [Thread-162291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:11:22.173 [DEBUG] [Thread-162291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:11:22.174 [INFO] [Thread-162291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:11:22.181 [DEBUG] [Thread-162291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:11:22.181 [DEBUG] [Thread-162291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:11:22.181 [DEBUG] [Thread-162291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:11:22.181 [DEBUG] [Thread-162291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:22.181 [DEBUG] [Thread-162291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:22.181 [DEBUG] [Thread-162291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:22.181 [DEBUG] [Thread-162291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] client lang: <none>
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] server lang: <none>
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] kex follows: False
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] Compression: none
2025-09-29T17:11:22.182 [DEBUG] [Thread-162291] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:11:22.240 [DEBUG] [Thread-162291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:11:22.240 [DEBUG] [Thread-162291] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:11:22.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:11:22.241 [DEBUG] [Thread-162291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:11:22.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:11:22.296 [DEBUG] [Thread-162291] [transport.py] [_log()] userauth is OK
2025-09-29T17:11:22.296 [DEBUG] [Thread-162291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:11:22.296 [DEBUG] [Thread-162291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:11:22.297 [DEBUG] [Thread-162291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:11:22.297 [DEBUG] [Thread-162291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:11:22.315 [INFO] [Thread-162291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:11:22.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:11:22.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:11:23.401 [DEBUG] [Thread-162291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:11:23.402 [DEBUG] [Thread-162291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:11:23.449 [DEBUG] [Thread-162291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:11:23.449 [DEBUG] [Thread-162291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:11:23.458 [DEBUG] [Thread-162291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:11:23.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:11:23.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:11:23.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:11:23.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:11:23.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:11:23.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:11:23.493 [DEBUG] [Thread-162291] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:26.488 [DEBUG] [Thread-162293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:11:27.417 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:11:27.418 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:11:33.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:11:33.496 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:11:33.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:11:34.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 11, 3), 14.13, 37.9, 0.0, 19.78, 14.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:11:34.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:11:03
2025-09-29T17:11:34.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:11:34.343 [DEBUG] [Thread-162294] [transport.py] [_log()] starting thread (client mode): 0x2b9f0ee0
2025-09-29T17:11:34.343 [DEBUG] [Thread-162294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:11:34.362 [DEBUG] [Thread-162294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:11:34.362 [INFO] [Thread-162294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] client lang: <none>
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] server lang: <none>
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] kex follows: False
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] Compression: none
2025-09-29T17:11:34.366 [DEBUG] [Thread-162294] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:11:34.382 [DEBUG] [Thread-162294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:11:34.383 [DEBUG] [Thread-162294] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:11:34.383 [DEBUG] [Thread-162294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:11:34.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:11:34.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:11:34.385 [DEBUG] [Thread-162294] [transport.py] [_log()] userauth is OK
2025-09-29T17:11:34.386 [DEBUG] [Thread-162294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:11:34.386 [DEBUG] [Thread-162294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:11:34.386 [DEBUG] [Thread-162294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:11:34.386 [DEBUG] [Thread-162294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:11:34.411 [INFO] [Thread-162294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:11:34.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:11:35.054 [DEBUG] [Thread-162294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:11:35.054 [DEBUG] [Thread-162294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:11:35.055 [DEBUG] [Thread-162294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:11:35.095 [DEBUG] [Thread-162294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:11:35.096 [DEBUG] [Thread-162294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:11:35.099 [DEBUG] [Thread-162294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:11:35.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:11:35.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:11:35.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:11:35.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:11:35.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:11:35.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:11:35.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:11:35.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:11:35.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:11:35.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.632704 -999.00  +14.30  15.48     44   +2.30 1 1 1 1 1   887    0 11.73 -17.23 ----- 15.4 15.5 141.2 22.2 18.4 -27.9 18.1 -27.3 19.7 -27.3 20.4 -28.6
2025-09-29T17:11:35.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:11:35.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:11:35.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.632704
2025-09-29T17:11:35.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:11:35.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:11:35.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:11:35.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:11:35.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:11:35.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:11:03', tmtdew=14.13, humidity=37.9, cloud=0.0, wind=19.78, temperature=14.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:11:05.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:11:35.127 [DEBUG] [Thread-162294] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:35.212 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:11:35.223 [DEBUG] [Thread-162297] [transport.py] [_log()] starting thread (client mode): 0x2b9f1b10
2025-09-29T17:11:35.223 [DEBUG] [Thread-162297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:11:35.237 [DEBUG] [Thread-162297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:11:35.238 [INFO] [Thread-162297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:11:35.245 [DEBUG] [Thread-162297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:11:35.245 [DEBUG] [Thread-162297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:11:35.245 [DEBUG] [Thread-162297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] client lang: <none>
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] server lang: <none>
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] kex follows: False
2025-09-29T17:11:35.246 [DEBUG] [Thread-162297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:11:35.247 [DEBUG] [Thread-162297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:11:35.247 [DEBUG] [Thread-162297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:11:35.247 [DEBUG] [Thread-162297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:11:35.247 [DEBUG] [Thread-162297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:11:35.247 [DEBUG] [Thread-162297] [transport.py] [_log()] Compression: none
2025-09-29T17:11:35.247 [DEBUG] [Thread-162297] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:11:35.304 [DEBUG] [Thread-162297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:11:35.305 [DEBUG] [Thread-162297] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:11:35.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:11:35.306 [DEBUG] [Thread-162297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:11:35.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:11:35.360 [DEBUG] [Thread-162297] [transport.py] [_log()] userauth is OK
2025-09-29T17:11:35.360 [DEBUG] [Thread-162297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:11:35.361 [DEBUG] [Thread-162297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:11:35.361 [DEBUG] [Thread-162297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:11:35.361 [DEBUG] [Thread-162297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:11:35.381 [INFO] [Thread-162297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:11:35.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:11:35.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:11:36.371 [DEBUG] [Thread-162297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:11:36.371 [DEBUG] [Thread-162297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:11:36.419 [DEBUG] [Thread-162297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:11:36.419 [DEBUG] [Thread-162297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:11:36.428 [DEBUG] [Thread-162297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:11:36.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:11:36.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:11:36.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:11:36.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:11:36.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:11:36.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:11:36.459 [DEBUG] [Thread-162297] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:41.515 [DEBUG] [Thread-162299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:11:46.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:11:46.457 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:11:46.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:11:47.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 11, 35), 14.02, 38.17, 0.0, 15.81, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:11:47.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:11:35
2025-09-29T17:11:47.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:11:47.303 [DEBUG] [Thread-162300] [transport.py] [_log()] starting thread (client mode): 0x30dddd20
2025-09-29T17:11:47.303 [DEBUG] [Thread-162300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:11:47.319 [DEBUG] [Thread-162300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:11:47.319 [INFO] [Thread-162300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:11:47.322 [DEBUG] [Thread-162300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:11:47.322 [DEBUG] [Thread-162300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:11:47.322 [DEBUG] [Thread-162300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] client lang: <none>
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] server lang: <none>
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] kex follows: False
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] Compression: none
2025-09-29T17:11:47.323 [DEBUG] [Thread-162300] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:11:47.340 [DEBUG] [Thread-162300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:11:47.341 [DEBUG] [Thread-162300] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:11:47.341 [DEBUG] [Thread-162300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:11:47.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:11:47.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:11:47.343 [DEBUG] [Thread-162300] [transport.py] [_log()] userauth is OK
2025-09-29T17:11:47.343 [DEBUG] [Thread-162300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:11:47.343 [DEBUG] [Thread-162300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:11:47.344 [DEBUG] [Thread-162300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:11:47.344 [DEBUG] [Thread-162300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:11:47.361 [INFO] [Thread-162300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:11:47.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:11:48.121 [DEBUG] [Thread-162300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:11:48.121 [DEBUG] [Thread-162300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:11:48.121 [DEBUG] [Thread-162300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:11:48.162 [DEBUG] [Thread-162300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:11:48.162 [DEBUG] [Thread-162300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:11:48.165 [DEBUG] [Thread-162300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:11:48.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:11:48.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:11:48.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:11:48.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:11:48.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:11:48.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:11:48.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:11:48.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:11:48.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:11:48.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.632704 -999.00  +14.30  15.48     44   +2.30 1 1 1 1 1   887    0 11.73 -17.23 ----- 15.4 15.5 141.2 22.2 18.4 -27.9 18.1 -27.3 19.7 -27.3 20.4 -28.6
2025-09-29T17:11:48.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:11:48.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:11:48.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.632704
2025-09-29T17:11:48.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:11:48.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:11:48.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:11:48.188 [DEBUG] [Thread-162300] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:48.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:11:48.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:11:48.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:11:35', tmtdew=14.02, humidity=38.17, cloud=0.0, wind=15.81, temperature=14.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:11:05.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:11:48.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:11:48.286 [DEBUG] [Thread-162303] [transport.py] [_log()] starting thread (client mode): 0x30dde320
2025-09-29T17:11:48.286 [DEBUG] [Thread-162303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:11:48.301 [DEBUG] [Thread-162303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:11:48.301 [INFO] [Thread-162303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:11:48.309 [DEBUG] [Thread-162303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:11:48.309 [DEBUG] [Thread-162303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:11:48.309 [DEBUG] [Thread-162303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:11:48.309 [DEBUG] [Thread-162303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:48.309 [DEBUG] [Thread-162303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] client lang: <none>
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] server lang: <none>
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] kex follows: False
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:11:48.310 [DEBUG] [Thread-162303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:11:48.311 [DEBUG] [Thread-162303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:11:48.311 [DEBUG] [Thread-162303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:11:48.311 [DEBUG] [Thread-162303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:11:48.311 [DEBUG] [Thread-162303] [transport.py] [_log()] Compression: none
2025-09-29T17:11:48.311 [DEBUG] [Thread-162303] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:11:48.369 [DEBUG] [Thread-162303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:11:48.369 [DEBUG] [Thread-162303] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:11:48.370 [DEBUG] [Thread-162303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:11:48.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:11:48.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:11:48.425 [DEBUG] [Thread-162303] [transport.py] [_log()] userauth is OK
2025-09-29T17:11:48.425 [DEBUG] [Thread-162303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:11:48.425 [DEBUG] [Thread-162303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:11:48.425 [DEBUG] [Thread-162303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:11:48.425 [DEBUG] [Thread-162303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:11:48.444 [INFO] [Thread-162303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:11:48.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:11:48.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:11:49.488 [DEBUG] [Thread-162303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:11:49.488 [DEBUG] [Thread-162303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:11:49.536 [DEBUG] [Thread-162303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:11:49.536 [DEBUG] [Thread-162303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:11:49.545 [DEBUG] [Thread-162303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:11:49.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:11:49.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:11:49.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:11:49.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:11:49.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:11:49.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:11:49.577 [DEBUG] [Thread-162303] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:11:50.051 [DEBUG] [Thread-162305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:11:56.558 [DEBUG] [Thread-162306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:11:59.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:11:59.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:11:59.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:12:00.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 11, 35), 14.02, 38.17, 0.0, 15.81, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:12:00.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:11:35
2025-09-29T17:12:00.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:12:00.444 [DEBUG] [Thread-162307] [transport.py] [_log()] starting thread (client mode): 0x2b9f0a60
2025-09-29T17:12:00.444 [DEBUG] [Thread-162307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:00.463 [DEBUG] [Thread-162307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:12:00.463 [INFO] [Thread-162307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:12:00.466 [DEBUG] [Thread-162307] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:00.466 [DEBUG] [Thread-162307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:00.467 [DEBUG] [Thread-162307] [transport.py] [_log()] Compression: none
2025-09-29T17:12:00.468 [DEBUG] [Thread-162307] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:00.477 [DEBUG] [Thread-162307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:00.477 [DEBUG] [Thread-162307] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:00.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:12:00.479 [DEBUG] [Thread-162307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:12:00.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:00.480 [DEBUG] [Thread-162307] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:00.481 [DEBUG] [Thread-162307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:00.481 [DEBUG] [Thread-162307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:00.481 [DEBUG] [Thread-162307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:12:00.481 [DEBUG] [Thread-162307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:00.506 [INFO] [Thread-162307] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:00.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:01.267 [DEBUG] [Thread-162307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:01.267 [DEBUG] [Thread-162307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:01.267 [DEBUG] [Thread-162307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:12:01.307 [DEBUG] [Thread-162307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:01.307 [DEBUG] [Thread-162307] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:01.309 [DEBUG] [Thread-162307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:01.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:01.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:12:01.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:12:01.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:12:01.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:01.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:12:01.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:01.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:01.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:12:01.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.632704 -999.00  +14.30  15.48     44   +2.30 1 1 1 1 1   887    0 11.73 -17.23 ----- 15.4 15.5 141.2 22.2 18.4 -27.9 18.1 -27.3 19.7 -27.3 20.4 -28.6
2025-09-29T17:12:01.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:12:01.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:12:01.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.632704
2025-09-29T17:12:01.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:12:01.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:12:01.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:12:01.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:12:01.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:12:01.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:11:35', tmtdew=14.02, humidity=38.17, cloud=0.0, wind=15.81, temperature=14.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:11:05.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:12:01.332 [DEBUG] [Thread-162307] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:01.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:12:01.434 [DEBUG] [Thread-162310] [transport.py] [_log()] starting thread (client mode): 0x2e3c23b0
2025-09-29T17:12:01.434 [DEBUG] [Thread-162310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:01.449 [DEBUG] [Thread-162310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:12:01.449 [INFO] [Thread-162310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:12:01.457 [DEBUG] [Thread-162310] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:01.457 [DEBUG] [Thread-162310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:12:01.457 [DEBUG] [Thread-162310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:01.457 [DEBUG] [Thread-162310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:01.457 [DEBUG] [Thread-162310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:01.457 [DEBUG] [Thread-162310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] Compression: none
2025-09-29T17:12:01.458 [DEBUG] [Thread-162310] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:01.516 [DEBUG] [Thread-162310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:01.517 [DEBUG] [Thread-162310] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:01.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:12:01.518 [DEBUG] [Thread-162310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:12:01.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:01.572 [DEBUG] [Thread-162310] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:01.572 [DEBUG] [Thread-162310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:01.572 [DEBUG] [Thread-162310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:01.572 [DEBUG] [Thread-162310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:12:01.572 [DEBUG] [Thread-162310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:01.587 [INFO] [Thread-162310] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:01.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:12:01.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:02.600 [DEBUG] [Thread-162310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:02.601 [DEBUG] [Thread-162310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:02.648 [DEBUG] [Thread-162310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:02.648 [DEBUG] [Thread-162310] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:02.657 [DEBUG] [Thread-162310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:02.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:02.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:12:02.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:12:02.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:02.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:02.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:02.692 [DEBUG] [Thread-162310] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:11.600 [DEBUG] [Thread-162312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:12:12.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:12:12.694 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:12:12.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:12:13.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 12, 7), 14.01, 38.2, 0.0, 18.16, 14.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:12:13.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:12:07
2025-09-29T17:12:13.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:12:13.543 [DEBUG] [Thread-162313] [transport.py] [_log()] starting thread (client mode): 0x2e3c0070
2025-09-29T17:12:13.543 [DEBUG] [Thread-162313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:13.563 [DEBUG] [Thread-162313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:12:13.563 [INFO] [Thread-162313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:12:13.565 [DEBUG] [Thread-162313] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:13.565 [DEBUG] [Thread-162313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:12:13.565 [DEBUG] [Thread-162313] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:13.565 [DEBUG] [Thread-162313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:13.565 [DEBUG] [Thread-162313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:13.565 [DEBUG] [Thread-162313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:13.565 [DEBUG] [Thread-162313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] Compression: none
2025-09-29T17:12:13.566 [DEBUG] [Thread-162313] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:13.583 [DEBUG] [Thread-162313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:13.583 [DEBUG] [Thread-162313] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:13.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:12:13.584 [DEBUG] [Thread-162313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:12:13.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:13.585 [DEBUG] [Thread-162313] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:13.586 [DEBUG] [Thread-162313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:13.586 [DEBUG] [Thread-162313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:13.586 [DEBUG] [Thread-162313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:12:13.586 [DEBUG] [Thread-162313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:13.600 [INFO] [Thread-162313] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:13.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:14.196 [DEBUG] [Thread-162313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:14.196 [DEBUG] [Thread-162313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:14.196 [DEBUG] [Thread-162313] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:12:14.237 [DEBUG] [Thread-162313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:14.237 [DEBUG] [Thread-162313] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:14.239 [DEBUG] [Thread-162313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:14.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:14.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:12:14.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:12:14.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:12:14.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:14.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:12:14.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:14.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:12:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.633052 -999.00  +14.30  12.90     44   +2.30 1 1 1 1 1   887    0 11.45 -16.22 ----- 12.2 12.9 138.6 17.4 18.4 -27.8 18.2 -26.9 19.8 -27.5 20.4 -28.1
2025-09-29T17:12:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:12:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:12:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.633052
2025-09-29T17:12:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:12:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:12:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:12:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:12:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:12:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:12:07', tmtdew=14.01, humidity=38.2, cloud=0.0, wind=18.16, temperature=14.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:11:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:12:14.254 [DEBUG] [Thread-162313] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:14.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:12:14.337 [DEBUG] [Thread-162316] [transport.py] [_log()] starting thread (client mode): 0x2e361930
2025-09-29T17:12:14.337 [DEBUG] [Thread-162316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:14.354 [DEBUG] [Thread-162316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:12:14.354 [INFO] [Thread-162316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:12:14.361 [DEBUG] [Thread-162316] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] Compression: none
2025-09-29T17:12:14.362 [DEBUG] [Thread-162316] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:14.421 [DEBUG] [Thread-162316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:14.421 [DEBUG] [Thread-162316] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:14.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:12:14.422 [DEBUG] [Thread-162316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:12:14.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:14.478 [DEBUG] [Thread-162316] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:14.479 [DEBUG] [Thread-162316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:14.479 [DEBUG] [Thread-162316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:14.479 [DEBUG] [Thread-162316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:12:14.479 [DEBUG] [Thread-162316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:14.498 [INFO] [Thread-162316] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:14.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:12:14.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:15.485 [DEBUG] [Thread-162316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:15.485 [DEBUG] [Thread-162316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:15.533 [DEBUG] [Thread-162316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:15.533 [DEBUG] [Thread-162316] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:15.542 [DEBUG] [Thread-162316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:15.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:15.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:12:15.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:12:15.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:15.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:15.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:15.577 [DEBUG] [Thread-162316] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:25.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:12:25.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:12:25.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:12:26.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 12, 7), 14.01, 38.2, 0.0, 18.16, 14.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:12:26.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:12:07
2025-09-29T17:12:26.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:12:26.424 [DEBUG] [Thread-162318] [transport.py] [_log()] starting thread (client mode): 0x2b9f1ba0
2025-09-29T17:12:26.424 [DEBUG] [Thread-162318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:26.455 [DEBUG] [Thread-162318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:12:26.455 [INFO] [Thread-162318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:12:26.458 [DEBUG] [Thread-162318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:26.459 [DEBUG] [Thread-162318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:26.460 [DEBUG] [Thread-162318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:26.460 [DEBUG] [Thread-162318] [transport.py] [_log()] Compression: none
2025-09-29T17:12:26.460 [DEBUG] [Thread-162318] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:26.478 [DEBUG] [Thread-162318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:26.479 [DEBUG] [Thread-162318] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:26.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:12:26.480 [DEBUG] [Thread-162318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:12:26.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:26.481 [DEBUG] [Thread-162318] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:26.481 [DEBUG] [Thread-162318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:26.481 [DEBUG] [Thread-162318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:26.482 [DEBUG] [Thread-162318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:12:26.482 [DEBUG] [Thread-162318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:26.505 [INFO] [Thread-162318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:26.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:26.631 [DEBUG] [Thread-162320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:12:27.297 [DEBUG] [Thread-162318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:27.297 [DEBUG] [Thread-162318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:27.297 [DEBUG] [Thread-162318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:12:27.338 [DEBUG] [Thread-162318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:27.338 [DEBUG] [Thread-162318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:27.341 [DEBUG] [Thread-162318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:27.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:27.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:12:27.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:12:27.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:12:27.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:27.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:12:27.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:27.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:12:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.633052 -999.00  +14.30  12.90     44   +2.30 1 1 1 1 1   887    0 11.45 -16.22 ----- 12.2 12.9 138.6 17.4 18.4 -27.8 18.2 -26.9 19.8 -27.5 20.4 -28.1
2025-09-29T17:12:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:12:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:12:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.633052
2025-09-29T17:12:27.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:12:27.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:12:27.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:12:27.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:12:27.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:12:27.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:12:07', tmtdew=14.01, humidity=38.2, cloud=0.0, wind=18.16, temperature=14.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:11:35.693', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:12:27.369 [DEBUG] [Thread-162318] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:27.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:12:27.463 [DEBUG] [Thread-162322] [transport.py] [_log()] starting thread (client mode): 0x2e38e1d0
2025-09-29T17:12:27.464 [DEBUG] [Thread-162322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:27.478 [DEBUG] [Thread-162322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:12:27.478 [INFO] [Thread-162322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] Compression: none
2025-09-29T17:12:27.486 [DEBUG] [Thread-162322] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:27.548 [DEBUG] [Thread-162322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:27.548 [DEBUG] [Thread-162322] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:27.549 [DEBUG] [Thread-162322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:12:27.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:12:27.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:27.556 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:12:27.557 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:12:27.604 [DEBUG] [Thread-162322] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:27.605 [DEBUG] [Thread-162322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:27.605 [DEBUG] [Thread-162322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:27.605 [DEBUG] [Thread-162322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:12:27.605 [DEBUG] [Thread-162322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:27.623 [INFO] [Thread-162322] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:27.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:12:27.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:28.584 [DEBUG] [Thread-162322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:28.584 [DEBUG] [Thread-162322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:28.632 [DEBUG] [Thread-162322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:28.632 [DEBUG] [Thread-162322] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:28.641 [DEBUG] [Thread-162322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:28.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:28.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:12:28.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:12:28.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:28.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:28.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:28.674 [DEBUG] [Thread-162322] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:38.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:12:38.677 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:12:38.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:12:39.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 12, 7), 14.01, 38.2, 0.0, 18.16, 14.3, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:12:39.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:12:07
2025-09-29T17:12:39.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:12:39.541 [DEBUG] [Thread-162324] [transport.py] [_log()] starting thread (client mode): 0x2e38cac0
2025-09-29T17:12:39.541 [DEBUG] [Thread-162324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:39.562 [DEBUG] [Thread-162324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:12:39.563 [INFO] [Thread-162324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:39.566 [DEBUG] [Thread-162324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:39.567 [DEBUG] [Thread-162324] [transport.py] [_log()] Compression: none
2025-09-29T17:12:39.567 [DEBUG] [Thread-162324] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:39.575 [DEBUG] [Thread-162324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:39.575 [DEBUG] [Thread-162324] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:39.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:12:39.576 [DEBUG] [Thread-162324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:12:39.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:39.578 [DEBUG] [Thread-162324] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:39.578 [DEBUG] [Thread-162324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:39.579 [DEBUG] [Thread-162324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:39.579 [DEBUG] [Thread-162324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:12:39.579 [DEBUG] [Thread-162324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:39.613 [INFO] [Thread-162324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:39.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:40.232 [DEBUG] [Thread-162324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:40.232 [DEBUG] [Thread-162324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:40.232 [DEBUG] [Thread-162324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:12:40.273 [DEBUG] [Thread-162324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:40.273 [DEBUG] [Thread-162324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:40.274 [DEBUG] [Thread-162324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:40.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:40.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:12:40.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:12:40.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:12:40.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:40.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:12:40.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.633399 -999.00  +14.40   9.76     44   +2.30 1 1 1 1 1   887    0 11.63 -14.93 ----- 8.9 9.8 125.6 15.1 18.4 -27.8 18.3 -26.9 19.8 -27.3 20.5 -28.5
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.633399
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:12:40.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:12:07', tmtdew=14.01, humidity=38.2, cloud=0.0, wind=18.16, temperature=14.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:12:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:12:40.295 [DEBUG] [Thread-162324] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:40.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:12:40.381 [DEBUG] [Thread-162327] [transport.py] [_log()] starting thread (client mode): 0x2b9f3430
2025-09-29T17:12:40.381 [DEBUG] [Thread-162327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:40.396 [DEBUG] [Thread-162327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:12:40.396 [INFO] [Thread-162327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:40.403 [DEBUG] [Thread-162327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:40.404 [DEBUG] [Thread-162327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:40.404 [DEBUG] [Thread-162327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:40.404 [DEBUG] [Thread-162327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:40.404 [DEBUG] [Thread-162327] [transport.py] [_log()] Compression: none
2025-09-29T17:12:40.404 [DEBUG] [Thread-162327] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:40.459 [DEBUG] [Thread-162327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:40.460 [DEBUG] [Thread-162327] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:40.460 [DEBUG] [Thread-162327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:12:40.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:12:40.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:40.516 [DEBUG] [Thread-162327] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:40.516 [DEBUG] [Thread-162327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:40.516 [DEBUG] [Thread-162327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:40.517 [DEBUG] [Thread-162327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:12:40.517 [DEBUG] [Thread-162327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:40.531 [INFO] [Thread-162327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:40.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:12:40.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:41.543 [DEBUG] [Thread-162327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:41.543 [DEBUG] [Thread-162327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:41.592 [DEBUG] [Thread-162327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:41.592 [DEBUG] [Thread-162327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:41.600 [DEBUG] [Thread-162327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:41.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:41.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:12:41.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:12:41.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:41.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:41.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:41.632 [DEBUG] [Thread-162327] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:41.677 [DEBUG] [Thread-162329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:12:50.083 [DEBUG] [Thread-162330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:12:51.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:12:51.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:12:51.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:12:52.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 12, 39), 14.05, 38.21, 0.0, 18.46, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:12:52.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:12:39
2025-09-29T17:12:52.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:12:52.480 [DEBUG] [Thread-162331] [transport.py] [_log()] starting thread (client mode): 0x2e3c3430
2025-09-29T17:12:52.480 [DEBUG] [Thread-162331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:52.502 [DEBUG] [Thread-162331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:12:52.503 [INFO] [Thread-162331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:12:52.507 [DEBUG] [Thread-162331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:52.507 [DEBUG] [Thread-162331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:12:52.507 [DEBUG] [Thread-162331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] Compression: none
2025-09-29T17:12:52.508 [DEBUG] [Thread-162331] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:52.527 [DEBUG] [Thread-162331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:52.527 [DEBUG] [Thread-162331] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:52.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:12:52.528 [DEBUG] [Thread-162331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:12:52.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:52.530 [DEBUG] [Thread-162331] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:52.530 [DEBUG] [Thread-162331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:52.530 [DEBUG] [Thread-162331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:52.530 [DEBUG] [Thread-162331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:12:52.531 [DEBUG] [Thread-162331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:52.554 [INFO] [Thread-162331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:52.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:53.370 [DEBUG] [Thread-162331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:53.370 [DEBUG] [Thread-162331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:53.370 [DEBUG] [Thread-162331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:12:53.412 [DEBUG] [Thread-162331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:53.412 [DEBUG] [Thread-162331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:53.416 [DEBUG] [Thread-162331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:53.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:53.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:12:53.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:12:53.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:12:53.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:53.430 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:12:53.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:53.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:53.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:12:53.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.633399 -999.00  +14.40   9.76     44   +2.30 1 1 1 1 1   887    0 11.63 -14.93 ----- 8.9 9.8 125.6 15.1 18.4 -27.8 18.3 -26.9 19.8 -27.3 20.5 -28.5
2025-09-29T17:12:53.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:12:53.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:12:53.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.633399
2025-09-29T17:12:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:12:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:12:53.432 [DEBUG] [Thread-162331] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:12:53.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:12:53.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:12:53.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:12:39', tmtdew=14.05, humidity=38.21, cloud=0.0, wind=18.46, temperature=14.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:12:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:12:53.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:12:53.525 [DEBUG] [Thread-162334] [transport.py] [_log()] starting thread (client mode): 0x2b9f3160
2025-09-29T17:12:53.525 [DEBUG] [Thread-162334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:12:53.540 [DEBUG] [Thread-162334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:12:53.540 [INFO] [Thread-162334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:12:53.547 [DEBUG] [Thread-162334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:12:53.547 [DEBUG] [Thread-162334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:12:53.547 [DEBUG] [Thread-162334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:12:53.547 [DEBUG] [Thread-162334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] client lang: <none>
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] server lang: <none>
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] kex follows: False
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] Compression: none
2025-09-29T17:12:53.548 [DEBUG] [Thread-162334] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:12:53.604 [DEBUG] [Thread-162334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:12:53.604 [DEBUG] [Thread-162334] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:12:53.605 [DEBUG] [Thread-162334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:12:53.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:12:53.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:12:53.661 [DEBUG] [Thread-162334] [transport.py] [_log()] userauth is OK
2025-09-29T17:12:53.661 [DEBUG] [Thread-162334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:12:53.661 [DEBUG] [Thread-162334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:12:53.661 [DEBUG] [Thread-162334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:12:53.662 [DEBUG] [Thread-162334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:12:53.676 [INFO] [Thread-162334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:12:53.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:12:53.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:12:54.638 [DEBUG] [Thread-162334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:12:54.638 [DEBUG] [Thread-162334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:12:54.685 [DEBUG] [Thread-162334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:12:54.685 [DEBUG] [Thread-162334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:12:54.694 [DEBUG] [Thread-162334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:12:54.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:12:54.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:12:54.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:12:54.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:12:54.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:12:54.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:12:54.729 [DEBUG] [Thread-162334] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:12:56.713 [DEBUG] [Thread-162336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:13:04.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:13:04.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:13:04.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:13:05.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 12, 39), 14.05, 38.21, 0.0, 18.46, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:13:05.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:12:39
2025-09-29T17:13:05.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:13:05.578 [DEBUG] [Thread-162337] [transport.py] [_log()] starting thread (client mode): 0x2e38ffa0
2025-09-29T17:13:05.578 [DEBUG] [Thread-162337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:13:05.599 [DEBUG] [Thread-162337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:13:05.599 [INFO] [Thread-162337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] client lang: <none>
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] server lang: <none>
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] kex follows: False
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:13:05.603 [DEBUG] [Thread-162337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:13:05.604 [DEBUG] [Thread-162337] [transport.py] [_log()] Compression: none
2025-09-29T17:13:05.604 [DEBUG] [Thread-162337] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:13:05.622 [DEBUG] [Thread-162337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:13:05.623 [DEBUG] [Thread-162337] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:13:05.623 [DEBUG] [Thread-162337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:13:05.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:13:05.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:13:05.625 [DEBUG] [Thread-162337] [transport.py] [_log()] userauth is OK
2025-09-29T17:13:05.625 [DEBUG] [Thread-162337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:13:05.625 [DEBUG] [Thread-162337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:13:05.626 [DEBUG] [Thread-162337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:13:05.626 [DEBUG] [Thread-162337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:13:05.661 [INFO] [Thread-162337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:13:05.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:13:06.410 [DEBUG] [Thread-162337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:13:06.411 [DEBUG] [Thread-162337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:13:06.411 [DEBUG] [Thread-162337] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:13:06.451 [DEBUG] [Thread-162337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:13:06.451 [DEBUG] [Thread-162337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:13:06.454 [DEBUG] [Thread-162337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:13:06.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:13:06.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:13:06.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:13:06.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:13:06.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:13:06.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:13:06.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:13:06.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:13:06.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:13:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.633399 -999.00  +14.40   9.76     44   +2.30 1 1 1 1 1   887    0 11.63 -14.93 ----- 8.9 9.8 125.6 15.1 18.4 -27.8 18.3 -26.9 19.8 -27.3 20.5 -28.5
2025-09-29T17:13:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:13:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:13:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.633399
2025-09-29T17:13:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:13:06.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:13:06.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:13:06.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:13:06.479 [DEBUG] [Thread-162337] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:13:06.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:13:06.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:12:39', tmtdew=14.05, humidity=38.21, cloud=0.0, wind=18.46, temperature=14.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:12:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:13:06.566 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:13:06.578 [DEBUG] [Thread-162340] [transport.py] [_log()] starting thread (client mode): 0x2b923e20
2025-09-29T17:13:06.578 [DEBUG] [Thread-162340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:13:06.598 [DEBUG] [Thread-162340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:13:06.598 [INFO] [Thread-162340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:13:06.605 [DEBUG] [Thread-162340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] client lang: <none>
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] server lang: <none>
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] kex follows: False
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:13:06.606 [DEBUG] [Thread-162340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:13:06.607 [DEBUG] [Thread-162340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:13:06.607 [DEBUG] [Thread-162340] [transport.py] [_log()] Compression: none
2025-09-29T17:13:06.607 [DEBUG] [Thread-162340] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:13:06.665 [DEBUG] [Thread-162340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:13:06.665 [DEBUG] [Thread-162340] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:13:06.666 [DEBUG] [Thread-162340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:13:06.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:13:06.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:13:06.725 [DEBUG] [Thread-162340] [transport.py] [_log()] userauth is OK
2025-09-29T17:13:06.726 [DEBUG] [Thread-162340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:13:06.726 [DEBUG] [Thread-162340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:13:06.726 [DEBUG] [Thread-162340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:13:06.726 [DEBUG] [Thread-162340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:13:06.745 [INFO] [Thread-162340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:13:06.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:13:06.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:13:07.766 [DEBUG] [Thread-162340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:13:07.766 [DEBUG] [Thread-162340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:13:07.819 [DEBUG] [Thread-162340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:13:07.819 [DEBUG] [Thread-162340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:13:07.832 [DEBUG] [Thread-162340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:13:07.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:13:07.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:13:07.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:13:07.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:13:07.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:13:07.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:13:07.868 [DEBUG] [Thread-162340] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:13:11.762 [DEBUG] [Thread-162342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:13:17.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:13:17.871 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:13:17.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:13:18.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 13, 11), 14.17, 37.95, 0.0, 16.71, 14.64, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:13:18.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:13:11
2025-09-29T17:13:18.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:13:18.713 [DEBUG] [Thread-162343] [transport.py] [_log()] starting thread (client mode): 0x2e3c2080
2025-09-29T17:13:18.713 [DEBUG] [Thread-162343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:13:18.735 [DEBUG] [Thread-162343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:13:18.735 [INFO] [Thread-162343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:13:18.738 [DEBUG] [Thread-162343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:13:18.738 [DEBUG] [Thread-162343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:13:18.738 [DEBUG] [Thread-162343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:13:18.738 [DEBUG] [Thread-162343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:13:18.738 [DEBUG] [Thread-162343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:13:18.738 [DEBUG] [Thread-162343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:13:18.738 [DEBUG] [Thread-162343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:13:18.738 [DEBUG] [Thread-162343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] client lang: <none>
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] server lang: <none>
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] kex follows: False
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] Compression: none
2025-09-29T17:13:18.739 [DEBUG] [Thread-162343] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:13:18.755 [DEBUG] [Thread-162343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:13:18.755 [DEBUG] [Thread-162343] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:13:18.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:13:18.756 [DEBUG] [Thread-162343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:13:18.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:13:18.758 [DEBUG] [Thread-162343] [transport.py] [_log()] userauth is OK
2025-09-29T17:13:18.758 [DEBUG] [Thread-162343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:13:18.758 [DEBUG] [Thread-162343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:13:18.758 [DEBUG] [Thread-162343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:13:18.758 [DEBUG] [Thread-162343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:13:18.776 [INFO] [Thread-162343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:13:18.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:13:19.411 [DEBUG] [Thread-162343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:13:19.411 [DEBUG] [Thread-162343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:13:19.412 [DEBUG] [Thread-162343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:13:19.452 [DEBUG] [Thread-162343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:13:19.452 [DEBUG] [Thread-162343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:13:19.455 [DEBUG] [Thread-162343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:13:19.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:13:19.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:13:19.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:13:19.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:13:19.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:13:19.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:13:19.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:13:19.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:13:19.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:13:19.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.633746 -999.00  +14.50  12.61     43   +2.40 1 1 1 1 1   887    0 11.90 -15.09 ----- 11.7 12.6 134.0 17.0 18.5 -27.7 18.4 -27.1 19.9 -27.1 20.6 -28.5
2025-09-29T17:13:19.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:13:19.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:13:19.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.633746
2025-09-29T17:13:19.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:13:19.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:13:19.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:13:19.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:13:19.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:13:19.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:13:11', tmtdew=14.17, humidity=37.95, cloud=0.0, wind=16.71, temperature=14.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:12:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:13:19.480 [DEBUG] [Thread-162343] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:13:19.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:13:26.790 [DEBUG] [Thread-162346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:13:27.693 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:13:27.695 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:13:41.832 [DEBUG] [Thread-162347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:13:50.116 [DEBUG] [Thread-162348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:13:56.863 [DEBUG] [Thread-162349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:14:11.892 [DEBUG] [Thread-162350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:14:26.923 [DEBUG] [Thread-162351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:14:27.833 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:14:27.834 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:14:41.951 [DEBUG] [Thread-162352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:14:50.148 [DEBUG] [Thread-162353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:14:56.982 [DEBUG] [Thread-162354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:15:12.013 [DEBUG] [Thread-162355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:15:27.043 [DEBUG] [Thread-162356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:15:27.974 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:15:27.975 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:15:34.715 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:15:42.077 [DEBUG] [Thread-162357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:15:44.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:15:44.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:15:44.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:15:45.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 15, 19), 14.25, 37.85, 0.0, 17.98, 14.55, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:15:45.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:15:19
2025-09-29T17:15:45.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:15:45.596 [DEBUG] [Thread-162358] [transport.py] [_log()] starting thread (client mode): 0x2e3c0550
2025-09-29T17:15:45.596 [DEBUG] [Thread-162358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:15:45.616 [DEBUG] [Thread-162358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:15:45.616 [INFO] [Thread-162358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:15:45.619 [DEBUG] [Thread-162358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:15:45.619 [DEBUG] [Thread-162358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:15:45.619 [DEBUG] [Thread-162358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:15:45.619 [DEBUG] [Thread-162358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] client lang: <none>
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] server lang: <none>
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] kex follows: False
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:15:45.620 [DEBUG] [Thread-162358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:15:45.621 [DEBUG] [Thread-162358] [transport.py] [_log()] Compression: none
2025-09-29T17:15:45.621 [DEBUG] [Thread-162358] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:15:45.636 [DEBUG] [Thread-162358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:15:45.637 [DEBUG] [Thread-162358] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:15:45.637 [DEBUG] [Thread-162358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:15:45.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:15:45.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:15:45.639 [DEBUG] [Thread-162358] [transport.py] [_log()] userauth is OK
2025-09-29T17:15:45.639 [DEBUG] [Thread-162358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:15:45.639 [DEBUG] [Thread-162358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:15:45.639 [DEBUG] [Thread-162358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:15:45.639 [DEBUG] [Thread-162358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:15:45.657 [INFO] [Thread-162358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:15:45.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:15:46.312 [DEBUG] [Thread-162358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:15:46.312 [DEBUG] [Thread-162358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:15:46.313 [DEBUG] [Thread-162358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:15:46.353 [DEBUG] [Thread-162358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:15:46.353 [DEBUG] [Thread-162358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:15:46.356 [DEBUG] [Thread-162358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:15:46.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:15:46.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:15:46.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:15:46.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:15:46.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:15:46.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:15:46.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:15:46.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:15:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:15:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.635482 -999.00  +14.40  11.61     44   +2.30 1 1 1 1 1   887    0 11.75 -10.17 ----- 15.9 11.6 139.2 18.4 18.4 -27.9 18.4 -27.3 19.8 -27.4 20.4 -29.3
2025-09-29T17:15:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:15:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:15:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.635482
2025-09-29T17:15:46.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:15:46.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:15:46.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:15:46.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:15:46.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:15:46.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:15:19', tmtdew=14.25, humidity=37.85, cloud=0.0, wind=17.98, temperature=14.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:15:05.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:15:46.384 [DEBUG] [Thread-162358] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:15:46.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:15:46.481 [DEBUG] [Thread-162361] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c90
2025-09-29T17:15:46.481 [DEBUG] [Thread-162361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:15:46.499 [DEBUG] [Thread-162361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:15:46.499 [INFO] [Thread-162361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:15:46.507 [DEBUG] [Thread-162361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:15:46.507 [DEBUG] [Thread-162361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:15:46.507 [DEBUG] [Thread-162361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:15:46.507 [DEBUG] [Thread-162361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] client lang: <none>
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] server lang: <none>
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] kex follows: False
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] Compression: none
2025-09-29T17:15:46.508 [DEBUG] [Thread-162361] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:15:46.571 [DEBUG] [Thread-162361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:15:46.571 [DEBUG] [Thread-162361] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:15:46.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:15:46.572 [DEBUG] [Thread-162361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:15:46.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:15:46.626 [DEBUG] [Thread-162361] [transport.py] [_log()] userauth is OK
2025-09-29T17:15:46.626 [DEBUG] [Thread-162361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:15:46.626 [DEBUG] [Thread-162361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:15:46.627 [DEBUG] [Thread-162361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:15:46.627 [DEBUG] [Thread-162361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:15:46.653 [INFO] [Thread-162361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:15:46.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:15:46.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:15:47.666 [DEBUG] [Thread-162361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:15:47.666 [DEBUG] [Thread-162361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:15:47.714 [DEBUG] [Thread-162361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:15:47.714 [DEBUG] [Thread-162361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:15:47.723 [DEBUG] [Thread-162361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:15:47.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:15:47.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:15:47.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:15:47.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:15:47.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:15:47.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:15:47.758 [DEBUG] [Thread-162361] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:15:50.181 [DEBUG] [Thread-162363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:15:57.103 [DEBUG] [Thread-162364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:15:57.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:15:57.755 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:15:57.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:15:58.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 15, 51), 14.07, 38.15, 0.0, 18.44, 14.36, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:15:58.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:15:51
2025-09-29T17:15:58.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:15:58.627 [DEBUG] [Thread-162365] [transport.py] [_log()] starting thread (client mode): 0x2b9f36a0
2025-09-29T17:15:58.627 [DEBUG] [Thread-162365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:15:58.648 [DEBUG] [Thread-162365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:15:58.648 [INFO] [Thread-162365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:15:58.651 [DEBUG] [Thread-162365] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:15:58.651 [DEBUG] [Thread-162365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:15:58.651 [DEBUG] [Thread-162365] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] client lang: <none>
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] server lang: <none>
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] kex follows: False
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] Compression: none
2025-09-29T17:15:58.652 [DEBUG] [Thread-162365] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:15:58.670 [DEBUG] [Thread-162365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:15:58.670 [DEBUG] [Thread-162365] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:15:58.671 [DEBUG] [Thread-162365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:15:58.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:15:58.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:15:58.673 [DEBUG] [Thread-162365] [transport.py] [_log()] userauth is OK
2025-09-29T17:15:58.673 [DEBUG] [Thread-162365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:15:58.673 [DEBUG] [Thread-162365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:15:58.673 [DEBUG] [Thread-162365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:15:58.673 [DEBUG] [Thread-162365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:15:58.695 [INFO] [Thread-162365] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:15:58.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:15:59.347 [DEBUG] [Thread-162365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:15:59.347 [DEBUG] [Thread-162365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:15:59.348 [DEBUG] [Thread-162365] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:15:59.388 [DEBUG] [Thread-162365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:15:59.388 [DEBUG] [Thread-162365] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:15:59.390 [DEBUG] [Thread-162365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:15:59.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:15:59.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:15:59.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:15:59.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:15:59.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:15:59.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:15:59.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:15:59.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:15:59.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:15:59.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.635829 -999.00  +14.30  16.48     43   +2.20 1 1 1 1 1   887    0 11.61 -9.58 ----- 12.5 16.5 123.8 21.1 18.4 -28.2 18.4 -27.4 19.9 -28.0 20.4 -29.0
2025-09-29T17:15:59.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:15:59.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:15:59.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.635829
2025-09-29T17:15:59.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:15:59.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:15:59.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:15:59.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:15:59.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:15:59.415 [DEBUG] [Thread-162365] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:15:59.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:15:51', tmtdew=14.07, humidity=38.15, cloud=0.0, wind=18.44, temperature=14.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:15:35.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:15:59.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:16:12.139 [DEBUG] [Thread-162368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:16:27.196 [DEBUG] [Thread-162369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:16:28.113 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:16:28.114 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:16:42.224 [DEBUG] [Thread-162370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:16:50.212 [DEBUG] [Thread-162371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:16:57.254 [DEBUG] [Thread-162372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:17:12.285 [DEBUG] [Thread-162373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:17:27.313 [DEBUG] [Thread-162374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:17:28.252 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:17:28.253 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:17:42.339 [DEBUG] [Thread-162375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:17:50.243 [DEBUG] [Thread-162376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:17:57.375 [DEBUG] [Thread-162377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:18:12.403 [DEBUG] [Thread-162378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:18:14.458 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:18:24.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:18:24.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:18:24.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:18:25.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 17, 58), 13.96, 38.31, 0.0, 23.01, 14.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:18:25.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:17:58
2025-09-29T17:18:25.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:18:25.351 [DEBUG] [Thread-162379] [transport.py] [_log()] starting thread (client mode): 0x2e38ceb0
2025-09-29T17:18:25.352 [DEBUG] [Thread-162379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:18:25.372 [DEBUG] [Thread-162379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:18:25.372 [INFO] [Thread-162379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:18:25.375 [DEBUG] [Thread-162379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:18:25.375 [DEBUG] [Thread-162379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] client lang: <none>
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] server lang: <none>
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] kex follows: False
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] Compression: none
2025-09-29T17:18:25.376 [DEBUG] [Thread-162379] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:18:25.384 [DEBUG] [Thread-162379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:18:25.385 [DEBUG] [Thread-162379] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:18:25.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:18:25.386 [DEBUG] [Thread-162379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:18:25.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:18:25.387 [DEBUG] [Thread-162379] [transport.py] [_log()] userauth is OK
2025-09-29T17:18:25.388 [DEBUG] [Thread-162379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:18:25.388 [DEBUG] [Thread-162379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:18:25.388 [DEBUG] [Thread-162379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:18:25.388 [DEBUG] [Thread-162379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:18:25.411 [INFO] [Thread-162379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:18:25.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:18:26.079 [DEBUG] [Thread-162379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:18:26.079 [DEBUG] [Thread-162379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:18:26.080 [DEBUG] [Thread-162379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:18:26.120 [DEBUG] [Thread-162379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:18:26.120 [DEBUG] [Thread-162379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:18:26.123 [DEBUG] [Thread-162379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:18:26.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:18:26.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:18:26.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:18:26.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:18:26.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:18:26.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:18:26.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:18:26.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:18:26.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:18:26.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.637218 -999.00  +14.30  17.03     44   +2.20 1 1 1 1 1   887    0 11.83 -7.15 ----- 14.7 17.0 156.6 24.4 18.3 -28.2 18.2 -27.1 19.8 -28.0 20.3 -29.5
2025-09-29T17:18:26.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:18:26.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:18:26.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.637218
2025-09-29T17:18:26.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:18:26.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:18:26.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:18:26.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:18:26.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:18:26.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:17:58', tmtdew=13.96, humidity=38.31, cloud=0.0, wind=23.01, temperature=14.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:17:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:18:26.149 [DEBUG] [Thread-162379] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:18:26.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:18:26.246 [DEBUG] [Thread-162382] [transport.py] [_log()] starting thread (client mode): 0x2b969c60
2025-09-29T17:18:26.246 [DEBUG] [Thread-162382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:18:26.261 [DEBUG] [Thread-162382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:18:26.261 [INFO] [Thread-162382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] client lang: <none>
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] server lang: <none>
2025-09-29T17:18:26.269 [DEBUG] [Thread-162382] [transport.py] [_log()] kex follows: False
2025-09-29T17:18:26.270 [DEBUG] [Thread-162382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:18:26.270 [DEBUG] [Thread-162382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:18:26.270 [DEBUG] [Thread-162382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:18:26.270 [DEBUG] [Thread-162382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:18:26.270 [DEBUG] [Thread-162382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:18:26.270 [DEBUG] [Thread-162382] [transport.py] [_log()] Compression: none
2025-09-29T17:18:26.270 [DEBUG] [Thread-162382] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:18:26.327 [DEBUG] [Thread-162382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:18:26.327 [DEBUG] [Thread-162382] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:18:26.328 [DEBUG] [Thread-162382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:18:26.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:18:26.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:18:26.383 [DEBUG] [Thread-162382] [transport.py] [_log()] userauth is OK
2025-09-29T17:18:26.383 [DEBUG] [Thread-162382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:18:26.383 [DEBUG] [Thread-162382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:18:26.384 [DEBUG] [Thread-162382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:18:26.384 [DEBUG] [Thread-162382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:18:26.403 [INFO] [Thread-162382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:18:26.403 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:18:26.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:18:27.385 [DEBUG] [Thread-162382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:18:27.385 [DEBUG] [Thread-162382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:18:27.430 [DEBUG] [Thread-162384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:18:27.432 [DEBUG] [Thread-162382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:18:27.432 [DEBUG] [Thread-162382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:18:27.441 [DEBUG] [Thread-162382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:18:27.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:18:27.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:18:27.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:18:27.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:18:27.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:18:27.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:18:27.475 [DEBUG] [Thread-162382] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:18:28.389 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:18:28.390 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:18:37.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:18:37.476 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:18:37.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:18:38.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 18, 30), 13.94, 38.35, 0.0, 17.5, 14.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:18:38.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:18:30
2025-09-29T17:18:38.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:18:38.356 [DEBUG] [Thread-162385] [transport.py] [_log()] starting thread (client mode): 0x2b923d90
2025-09-29T17:18:38.356 [DEBUG] [Thread-162385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:18:38.375 [DEBUG] [Thread-162385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:18:38.376 [INFO] [Thread-162385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:18:38.379 [DEBUG] [Thread-162385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:18:38.379 [DEBUG] [Thread-162385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:18:38.379 [DEBUG] [Thread-162385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:18:38.379 [DEBUG] [Thread-162385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:18:38.379 [DEBUG] [Thread-162385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:18:38.379 [DEBUG] [Thread-162385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:18:38.379 [DEBUG] [Thread-162385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:18:38.379 [DEBUG] [Thread-162385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] client lang: <none>
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] server lang: <none>
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] kex follows: False
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] Compression: none
2025-09-29T17:18:38.380 [DEBUG] [Thread-162385] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:18:38.397 [DEBUG] [Thread-162385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:18:38.398 [DEBUG] [Thread-162385] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:18:38.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:18:38.399 [DEBUG] [Thread-162385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:18:38.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:18:38.401 [DEBUG] [Thread-162385] [transport.py] [_log()] userauth is OK
2025-09-29T17:18:38.401 [DEBUG] [Thread-162385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:18:38.401 [DEBUG] [Thread-162385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:18:38.401 [DEBUG] [Thread-162385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:18:38.401 [DEBUG] [Thread-162385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:18:38.435 [INFO] [Thread-162385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:18:38.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:18:39.096 [DEBUG] [Thread-162385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:18:39.097 [DEBUG] [Thread-162385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:18:39.097 [DEBUG] [Thread-162385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:18:39.137 [DEBUG] [Thread-162385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:18:39.137 [DEBUG] [Thread-162385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:18:39.140 [DEBUG] [Thread-162385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:18:39.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:18:39.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:18:39.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:18:39.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:18:39.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:18:39.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:18:39.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:18:39.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:18:39.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:18:39.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.637218 -999.00  +14.30  17.03     44   +2.20 1 1 1 1 1   887    0 11.83 -7.15 ----- 14.7 17.0 156.6 24.4 18.3 -28.2 18.2 -27.1 19.8 -28.0 20.3 -29.5
2025-09-29T17:18:39.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:18:39.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:18:39.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.637218
2025-09-29T17:18:39.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:18:39.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:18:39.165 [DEBUG] [Thread-162385] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:18:39.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:18:39.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:18:39.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:18:39.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:18:30', tmtdew=13.94, humidity=38.35, cloud=0.0, wind=17.5, temperature=14.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:17:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:18:39.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:18:42.471 [DEBUG] [Thread-162388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:18:50.270 [DEBUG] [Thread-162389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:18:57.512 [DEBUG] [Thread-162390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:19:12.541 [DEBUG] [Thread-162391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:19:27.575 [DEBUG] [Thread-162392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:19:28.528 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:19:28.529 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:19:42.605 [DEBUG] [Thread-162393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:19:50.307 [DEBUG] [Thread-162394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:19:57.631 [DEBUG] [Thread-162395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:20:12.662 [DEBUG] [Thread-162396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:20:27.693 [DEBUG] [Thread-162397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:20:28.667 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:20:28.668 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:20:42.723 [DEBUG] [Thread-162398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:20:50.333 [DEBUG] [Thread-162399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:20:54.203 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:20:57.750 [DEBUG] [Thread-162400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:21:04.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:21:04.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:21:04.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:21:04.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 20, 38), 13.9, 38.85, 0.0, 26.34, 14.31, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:21:04.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:20:38
2025-09-29T17:21:04.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:21:05.101 [DEBUG] [Thread-162401] [transport.py] [_log()] starting thread (client mode): 0x30ddeef0
2025-09-29T17:21:05.101 [DEBUG] [Thread-162401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:05.123 [DEBUG] [Thread-162401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:21:05.123 [INFO] [Thread-162401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:05.126 [DEBUG] [Thread-162401] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:05.127 [DEBUG] [Thread-162401] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:05.127 [DEBUG] [Thread-162401] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:05.127 [DEBUG] [Thread-162401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:05.127 [DEBUG] [Thread-162401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:05.127 [DEBUG] [Thread-162401] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:05.127 [DEBUG] [Thread-162401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:05.127 [DEBUG] [Thread-162401] [transport.py] [_log()] Compression: none
2025-09-29T17:21:05.127 [DEBUG] [Thread-162401] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:05.145 [DEBUG] [Thread-162401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:05.145 [DEBUG] [Thread-162401] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:05.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:21:05.146 [DEBUG] [Thread-162401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:21:05.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:05.148 [DEBUG] [Thread-162401] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:05.149 [DEBUG] [Thread-162401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:05.149 [DEBUG] [Thread-162401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:05.149 [DEBUG] [Thread-162401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:21:05.149 [DEBUG] [Thread-162401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:05.172 [INFO] [Thread-162401] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:05.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:05.863 [DEBUG] [Thread-162401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:05.863 [DEBUG] [Thread-162401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:05.864 [DEBUG] [Thread-162401] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:21:05.904 [DEBUG] [Thread-162401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:05.905 [DEBUG] [Thread-162401] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:05.907 [DEBUG] [Thread-162401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:05.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:05.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:21:05.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:21:05.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:21:05.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:05.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:21:05.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:05.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:05.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:21:05.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.639301 -999.00  +14.30  22.82     44   +2.30 1 1 1 1 1   887    0 11.86 -8.16 ----- 22.1 22.8 138.0 26.1 18.1 -28.2 18.1 -27.3 19.6 -27.8 20.1 -30.0
2025-09-29T17:21:05.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:21:05.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:21:05.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.639301
2025-09-29T17:21:05.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:21:05.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:21:05.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:21:05.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:21:05.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:21:05.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:20:38', tmtdew=13.9, humidity=38.85, cloud=0.0, wind=26.34, temperature=14.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:20:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:21:05.937 [DEBUG] [Thread-162401] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:06.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:21:06.033 [DEBUG] [Thread-162404] [transport.py] [_log()] starting thread (client mode): 0x2e3f9e10
2025-09-29T17:21:06.033 [DEBUG] [Thread-162404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:06.050 [DEBUG] [Thread-162404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:21:06.050 [INFO] [Thread-162404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:21:06.061 [DEBUG] [Thread-162404] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] Compression: none
2025-09-29T17:21:06.062 [DEBUG] [Thread-162404] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:06.115 [DEBUG] [Thread-162404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:06.115 [DEBUG] [Thread-162404] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:06.116 [DEBUG] [Thread-162404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:21:06.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:21:06.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:06.172 [DEBUG] [Thread-162404] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:06.172 [DEBUG] [Thread-162404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:06.172 [DEBUG] [Thread-162404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:06.172 [DEBUG] [Thread-162404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:21:06.172 [DEBUG] [Thread-162404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:06.186 [INFO] [Thread-162404] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:06.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:21:06.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:07.217 [DEBUG] [Thread-162404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:07.217 [DEBUG] [Thread-162404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:07.265 [DEBUG] [Thread-162404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:07.265 [DEBUG] [Thread-162404] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:07.274 [DEBUG] [Thread-162404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:07.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:07.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:21:07.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:21:07.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:07.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:07.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:07.309 [DEBUG] [Thread-162404] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:12.779 [DEBUG] [Thread-162406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:21:17.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:21:17.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:21:17.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:21:17.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 21, 10), 13.85, 38.93, 0.0, 24.37, 14.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:21:17.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:21:10
2025-09-29T17:21:18.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:21:18.184 [DEBUG] [Thread-162407] [transport.py] [_log()] starting thread (client mode): 0x2b9f11b0
2025-09-29T17:21:18.184 [DEBUG] [Thread-162407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:18.204 [DEBUG] [Thread-162407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:21:18.204 [INFO] [Thread-162407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:21:18.207 [DEBUG] [Thread-162407] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:18.208 [DEBUG] [Thread-162407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:18.209 [DEBUG] [Thread-162407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:18.209 [DEBUG] [Thread-162407] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:18.209 [DEBUG] [Thread-162407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:18.209 [DEBUG] [Thread-162407] [transport.py] [_log()] Compression: none
2025-09-29T17:21:18.209 [DEBUG] [Thread-162407] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:18.226 [DEBUG] [Thread-162407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:18.227 [DEBUG] [Thread-162407] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:18.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:21:18.228 [DEBUG] [Thread-162407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:21:18.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:18.229 [DEBUG] [Thread-162407] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:18.230 [DEBUG] [Thread-162407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:18.230 [DEBUG] [Thread-162407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:18.230 [DEBUG] [Thread-162407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:21:18.230 [DEBUG] [Thread-162407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:18.248 [INFO] [Thread-162407] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:18.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:18.896 [DEBUG] [Thread-162407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:18.896 [DEBUG] [Thread-162407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:18.897 [DEBUG] [Thread-162407] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:21:18.937 [DEBUG] [Thread-162407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:18.937 [DEBUG] [Thread-162407] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:18.940 [DEBUG] [Thread-162407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:18.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:18.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:21:18.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:21:18.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:21:18.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:18.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:21:18.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:18.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:18.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:21:18.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.639301 -999.00  +14.30  22.82     44   +2.30 1 1 1 1 1   887    0 11.86 -8.16 ----- 22.1 22.8 138.0 26.1 18.1 -28.2 18.1 -27.3 19.6 -27.8 20.1 -30.0
2025-09-29T17:21:18.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:21:18.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:21:18.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.639301
2025-09-29T17:21:18.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:21:18.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:21:18.964 [DEBUG] [Thread-162407] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:18.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:21:18.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:21:18.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:21:18.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:21:10', tmtdew=13.85, humidity=38.93, cloud=0.0, wind=24.37, temperature=14.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:20:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:21:19.049 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:21:19.058 [DEBUG] [Thread-162410] [transport.py] [_log()] starting thread (client mode): 0x2e361a20
2025-09-29T17:21:19.058 [DEBUG] [Thread-162410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:19.077 [DEBUG] [Thread-162410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:21:19.077 [INFO] [Thread-162410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:21:19.085 [DEBUG] [Thread-162410] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:19.085 [DEBUG] [Thread-162410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:21:19.085 [DEBUG] [Thread-162410] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:19.085 [DEBUG] [Thread-162410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:19.085 [DEBUG] [Thread-162410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:19.085 [DEBUG] [Thread-162410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] Compression: none
2025-09-29T17:21:19.086 [DEBUG] [Thread-162410] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:19.144 [DEBUG] [Thread-162410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:19.145 [DEBUG] [Thread-162410] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:19.145 [DEBUG] [Thread-162410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:21:19.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:21:19.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:19.200 [DEBUG] [Thread-162410] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:19.200 [DEBUG] [Thread-162410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:19.201 [DEBUG] [Thread-162410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:19.201 [DEBUG] [Thread-162410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:21:19.201 [DEBUG] [Thread-162410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:19.220 [INFO] [Thread-162410] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:19.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:21:19.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:20.210 [DEBUG] [Thread-162410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:20.210 [DEBUG] [Thread-162410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:20.258 [DEBUG] [Thread-162410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:20.258 [DEBUG] [Thread-162410] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:20.267 [DEBUG] [Thread-162410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:20.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:20.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:21:20.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:21:20.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:20.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:20.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:20.302 [DEBUG] [Thread-162410] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:27.825 [DEBUG] [Thread-162412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:21:28.821 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:21:28.822 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:21:30.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:21:30.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:21:30.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:21:30.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 21, 10), 13.85, 38.93, 0.0, 24.37, 14.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:21:30.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:21:10
2025-09-29T17:21:31.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:21:31.163 [DEBUG] [Thread-162413] [transport.py] [_log()] starting thread (client mode): 0x2e3c02b0
2025-09-29T17:21:31.163 [DEBUG] [Thread-162413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:31.178 [DEBUG] [Thread-162413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:21:31.178 [INFO] [Thread-162413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:31.182 [DEBUG] [Thread-162413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:31.183 [DEBUG] [Thread-162413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:31.183 [DEBUG] [Thread-162413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:31.183 [DEBUG] [Thread-162413] [transport.py] [_log()] Compression: none
2025-09-29T17:21:31.183 [DEBUG] [Thread-162413] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:31.200 [DEBUG] [Thread-162413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:31.201 [DEBUG] [Thread-162413] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:31.201 [DEBUG] [Thread-162413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:21:31.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:21:31.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:31.202 [DEBUG] [Thread-162413] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:31.202 [DEBUG] [Thread-162413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:31.202 [DEBUG] [Thread-162413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:31.203 [DEBUG] [Thread-162413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:21:31.203 [DEBUG] [Thread-162413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:31.213 [INFO] [Thread-162413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:31.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:31.863 [DEBUG] [Thread-162413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:31.863 [DEBUG] [Thread-162413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:31.863 [DEBUG] [Thread-162413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:21:31.904 [DEBUG] [Thread-162413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:31.904 [DEBUG] [Thread-162413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:31.906 [DEBUG] [Thread-162413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:31.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:31.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:21:31.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:21:31.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:21:31.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:31.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:21:31.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.639649 -999.00  +14.30  15.15     44   +2.30 1 1 1 1 1   887    0 11.71 -8.34 ----- 15.6 15.2 136.7 23.0 18.1 -27.9 18.1 -27.3 19.5 -27.4 20.1 -28.4
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.639649
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:21:31.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:21:10', tmtdew=13.85, humidity=38.93, cloud=0.0, wind=24.37, temperature=14.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:21:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:21:31.927 [DEBUG] [Thread-162413] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:32.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:21:32.012 [DEBUG] [Thread-162416] [transport.py] [_log()] starting thread (client mode): 0x2b9f3850
2025-09-29T17:21:32.012 [DEBUG] [Thread-162416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:32.027 [DEBUG] [Thread-162416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:21:32.027 [INFO] [Thread-162416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] Compression: none
2025-09-29T17:21:32.035 [DEBUG] [Thread-162416] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:32.091 [DEBUG] [Thread-162416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:32.091 [DEBUG] [Thread-162416] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:32.092 [DEBUG] [Thread-162416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:21:32.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:21:32.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:32.148 [DEBUG] [Thread-162416] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:32.148 [DEBUG] [Thread-162416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:32.148 [DEBUG] [Thread-162416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:32.148 [DEBUG] [Thread-162416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:21:32.148 [DEBUG] [Thread-162416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:32.162 [INFO] [Thread-162416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:32.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:21:32.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:33.194 [DEBUG] [Thread-162416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:33.194 [DEBUG] [Thread-162416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:33.242 [DEBUG] [Thread-162416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:33.242 [DEBUG] [Thread-162416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:33.250 [DEBUG] [Thread-162416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:33.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:33.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:21:33.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:21:33.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:33.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:33.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:33.282 [DEBUG] [Thread-162416] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:42.869 [DEBUG] [Thread-162418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:21:43.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:21:43.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:21:43.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:21:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 21, 10), 13.85, 38.93, 0.0, 24.37, 14.19, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:21:43.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:21:10
2025-09-29T17:21:44.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:21:44.192 [DEBUG] [Thread-162419] [transport.py] [_log()] starting thread (client mode): 0x2b923d90
2025-09-29T17:21:44.192 [DEBUG] [Thread-162419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:44.213 [DEBUG] [Thread-162419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:21:44.213 [INFO] [Thread-162419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] Compression: none
2025-09-29T17:21:44.216 [DEBUG] [Thread-162419] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:44.239 [DEBUG] [Thread-162419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:44.240 [DEBUG] [Thread-162419] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:44.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:21:44.241 [DEBUG] [Thread-162419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:21:44.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:44.242 [DEBUG] [Thread-162419] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:44.243 [DEBUG] [Thread-162419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:44.243 [DEBUG] [Thread-162419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:44.243 [DEBUG] [Thread-162419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:21:44.243 [DEBUG] [Thread-162419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:44.267 [INFO] [Thread-162419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:44.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:44.919 [DEBUG] [Thread-162419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:44.919 [DEBUG] [Thread-162419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:44.919 [DEBUG] [Thread-162419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:21:44.960 [DEBUG] [Thread-162419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:44.960 [DEBUG] [Thread-162419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:44.963 [DEBUG] [Thread-162419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:44.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:44.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:21:44.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:21:44.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:21:44.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:44.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:21:44.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:44.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:44.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:21:44.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.639649 -999.00  +14.30  15.15     44   +2.30 1 1 1 1 1   887    0 11.71 -8.34 ----- 15.6 15.2 136.7 23.0 18.1 -27.9 18.1 -27.3 19.5 -27.4 20.1 -28.4
2025-09-29T17:21:44.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:21:44.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:21:44.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.639649
2025-09-29T17:21:44.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:21:44.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:21:44.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:21:44.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:21:44.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:21:44.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:21:10', tmtdew=13.85, humidity=38.93, cloud=0.0, wind=24.37, temperature=14.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:21:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:21:44.991 [DEBUG] [Thread-162419] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:45.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:21:45.100 [DEBUG] [Thread-162422] [transport.py] [_log()] starting thread (client mode): 0x2b96a9e0
2025-09-29T17:21:45.100 [DEBUG] [Thread-162422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:45.115 [DEBUG] [Thread-162422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:21:45.115 [INFO] [Thread-162422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:21:45.122 [DEBUG] [Thread-162422] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:45.123 [DEBUG] [Thread-162422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:21:45.123 [DEBUG] [Thread-162422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:45.123 [DEBUG] [Thread-162422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:45.123 [DEBUG] [Thread-162422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:45.123 [DEBUG] [Thread-162422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:45.123 [DEBUG] [Thread-162422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:45.123 [DEBUG] [Thread-162422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:45.123 [DEBUG] [Thread-162422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:45.124 [DEBUG] [Thread-162422] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:45.124 [DEBUG] [Thread-162422] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:45.124 [DEBUG] [Thread-162422] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:45.124 [DEBUG] [Thread-162422] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:45.124 [DEBUG] [Thread-162422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:45.124 [DEBUG] [Thread-162422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:45.124 [DEBUG] [Thread-162422] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:45.124 [DEBUG] [Thread-162422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:45.125 [DEBUG] [Thread-162422] [transport.py] [_log()] Compression: none
2025-09-29T17:21:45.125 [DEBUG] [Thread-162422] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:45.180 [DEBUG] [Thread-162422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:45.180 [DEBUG] [Thread-162422] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:45.181 [DEBUG] [Thread-162422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:21:45.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:21:45.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:45.237 [DEBUG] [Thread-162422] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:45.237 [DEBUG] [Thread-162422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:45.237 [DEBUG] [Thread-162422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:45.237 [DEBUG] [Thread-162422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:21:45.237 [DEBUG] [Thread-162422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:45.259 [INFO] [Thread-162422] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:45.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:21:45.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:46.239 [DEBUG] [Thread-162422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:46.240 [DEBUG] [Thread-162422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:46.287 [DEBUG] [Thread-162422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:46.287 [DEBUG] [Thread-162422] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:46.296 [DEBUG] [Thread-162422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:46.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:46.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:21:46.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:21:46.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:46.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:46.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:46.330 [DEBUG] [Thread-162422] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:50.366 [DEBUG] [Thread-162424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:21:56.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:21:56.333 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:21:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:21:56.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 21, 41), 13.96, 38.43, 0.0, 18.6, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:21:56.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:21:41
2025-09-29T17:21:57.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:21:57.189 [DEBUG] [Thread-162425] [transport.py] [_log()] starting thread (client mode): 0x2e3fb2b0
2025-09-29T17:21:57.189 [DEBUG] [Thread-162425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:57.210 [DEBUG] [Thread-162425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:21:57.210 [INFO] [Thread-162425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:57.214 [DEBUG] [Thread-162425] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:57.215 [DEBUG] [Thread-162425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:57.215 [DEBUG] [Thread-162425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:57.215 [DEBUG] [Thread-162425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:57.215 [DEBUG] [Thread-162425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:57.215 [DEBUG] [Thread-162425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:57.215 [DEBUG] [Thread-162425] [transport.py] [_log()] Compression: none
2025-09-29T17:21:57.215 [DEBUG] [Thread-162425] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:57.233 [DEBUG] [Thread-162425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:57.233 [DEBUG] [Thread-162425] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:57.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:21:57.235 [DEBUG] [Thread-162425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:21:57.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:57.237 [DEBUG] [Thread-162425] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:57.237 [DEBUG] [Thread-162425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:57.237 [DEBUG] [Thread-162425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:57.237 [DEBUG] [Thread-162425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:21:57.237 [DEBUG] [Thread-162425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:57.258 [INFO] [Thread-162425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:57.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:57.895 [DEBUG] [Thread-162425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:57.895 [DEBUG] [Thread-162425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:57.895 [DEBUG] [Thread-162425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:21:57.914 [DEBUG] [Thread-162427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:21:57.936 [DEBUG] [Thread-162425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:57.936 [DEBUG] [Thread-162425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:57.939 [DEBUG] [Thread-162425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:57.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:57.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:21:57.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:21:57.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:21:57.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:57.964 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:21:57.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:57.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:57.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:21:57.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.639649 -999.00  +14.30  15.15     44   +2.30 1 1 1 1 1   887    0 11.71 -8.34 ----- 15.6 15.2 136.7 23.0 18.1 -27.9 18.1 -27.3 19.5 -27.4 20.1 -28.4
2025-09-29T17:21:57.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:21:57.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:21:57.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.639649
2025-09-29T17:21:57.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:21:57.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:21:57.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:21:57.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:21:57.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:21:57.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:21:41', tmtdew=13.96, humidity=38.43, cloud=0.0, wind=18.6, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:21:05.674', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:21:57.967 [DEBUG] [Thread-162425] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:21:58.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:21:58.060 [DEBUG] [Thread-162429] [transport.py] [_log()] starting thread (client mode): 0x2b920e80
2025-09-29T17:21:58.060 [DEBUG] [Thread-162429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:21:58.075 [DEBUG] [Thread-162429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:21:58.075 [INFO] [Thread-162429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:21:58.082 [DEBUG] [Thread-162429] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:21:58.082 [DEBUG] [Thread-162429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:21:58.082 [DEBUG] [Thread-162429] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] client lang: <none>
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] server lang: <none>
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] kex follows: False
2025-09-29T17:21:58.083 [DEBUG] [Thread-162429] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:21:58.084 [DEBUG] [Thread-162429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:21:58.084 [DEBUG] [Thread-162429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:21:58.084 [DEBUG] [Thread-162429] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:21:58.084 [DEBUG] [Thread-162429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:21:58.084 [DEBUG] [Thread-162429] [transport.py] [_log()] Compression: none
2025-09-29T17:21:58.084 [DEBUG] [Thread-162429] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:21:58.142 [DEBUG] [Thread-162429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:21:58.142 [DEBUG] [Thread-162429] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:21:58.143 [DEBUG] [Thread-162429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:21:58.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:21:58.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:21:58.200 [DEBUG] [Thread-162429] [transport.py] [_log()] userauth is OK
2025-09-29T17:21:58.201 [DEBUG] [Thread-162429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:21:58.201 [DEBUG] [Thread-162429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:21:58.201 [DEBUG] [Thread-162429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:21:58.201 [DEBUG] [Thread-162429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:21:58.220 [INFO] [Thread-162429] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:21:58.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:21:58.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:21:59.190 [DEBUG] [Thread-162429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:21:59.191 [DEBUG] [Thread-162429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:21:59.238 [DEBUG] [Thread-162429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:21:59.238 [DEBUG] [Thread-162429] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:21:59.247 [DEBUG] [Thread-162429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:21:59.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:21:59.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:21:59.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:21:59.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:21:59.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:21:59.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:21:59.281 [DEBUG] [Thread-162429] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:09.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:22:09.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:22:09.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:22:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 21, 41), 13.96, 38.43, 0.0, 18.6, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:22:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:21:41
2025-09-29T17:22:09.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:22:10.131 [DEBUG] [Thread-162431] [transport.py] [_log()] starting thread (client mode): 0x2e38d510
2025-09-29T17:22:10.132 [DEBUG] [Thread-162431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:22:10.151 [DEBUG] [Thread-162431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:22:10.152 [INFO] [Thread-162431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:22:10.155 [DEBUG] [Thread-162431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:22:10.155 [DEBUG] [Thread-162431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:22:10.155 [DEBUG] [Thread-162431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:22:10.155 [DEBUG] [Thread-162431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:10.155 [DEBUG] [Thread-162431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:10.155 [DEBUG] [Thread-162431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] client lang: <none>
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] server lang: <none>
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] kex follows: False
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] Compression: none
2025-09-29T17:22:10.156 [DEBUG] [Thread-162431] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:22:10.174 [DEBUG] [Thread-162431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:22:10.174 [DEBUG] [Thread-162431] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:22:10.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:22:10.176 [DEBUG] [Thread-162431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:22:10.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:22:10.178 [DEBUG] [Thread-162431] [transport.py] [_log()] userauth is OK
2025-09-29T17:22:10.178 [DEBUG] [Thread-162431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:22:10.178 [DEBUG] [Thread-162431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:22:10.178 [DEBUG] [Thread-162431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:22:10.179 [DEBUG] [Thread-162431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:22:10.202 [INFO] [Thread-162431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:22:10.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:22:10.835 [DEBUG] [Thread-162431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:22:10.835 [DEBUG] [Thread-162431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:22:10.836 [DEBUG] [Thread-162431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:22:10.876 [DEBUG] [Thread-162431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:22:10.876 [DEBUG] [Thread-162431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:22:10.879 [DEBUG] [Thread-162431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:22:10.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:22:10.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:22:10.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:22:10.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:22:10.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:22:10.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:22:10.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:22:10.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:22:10.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:22:10.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.639996 -999.00  +14.50  11.83     44   +2.40 1 1 1 1 1   887    0 11.80 -7.90 ----- 12.0 11.8 146.2 19.7 18.1 -28.5 18.1 -27.2 19.5 -27.3 20.1 -29.0
2025-09-29T17:22:10.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:22:10.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:22:10.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.639996
2025-09-29T17:22:10.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:22:10.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:22:10.902 [DEBUG] [Thread-162431] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:22:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:22:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:22:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:21:41', tmtdew=13.96, humidity=38.43, cloud=0.0, wind=18.6, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:21:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:22:10.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:22:10.994 [DEBUG] [Thread-162434] [transport.py] [_log()] starting thread (client mode): 0x2b96a9b0
2025-09-29T17:22:10.994 [DEBUG] [Thread-162434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:22:11.010 [DEBUG] [Thread-162434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:22:11.010 [INFO] [Thread-162434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:22:11.017 [DEBUG] [Thread-162434] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:22:11.017 [DEBUG] [Thread-162434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:22:11.017 [DEBUG] [Thread-162434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] client lang: <none>
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] server lang: <none>
2025-09-29T17:22:11.018 [DEBUG] [Thread-162434] [transport.py] [_log()] kex follows: False
2025-09-29T17:22:11.019 [DEBUG] [Thread-162434] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:22:11.019 [DEBUG] [Thread-162434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:22:11.019 [DEBUG] [Thread-162434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:22:11.019 [DEBUG] [Thread-162434] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:22:11.019 [DEBUG] [Thread-162434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:22:11.019 [DEBUG] [Thread-162434] [transport.py] [_log()] Compression: none
2025-09-29T17:22:11.019 [DEBUG] [Thread-162434] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:22:11.076 [DEBUG] [Thread-162434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:22:11.077 [DEBUG] [Thread-162434] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:22:11.077 [DEBUG] [Thread-162434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:22:11.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:22:11.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:22:11.133 [DEBUG] [Thread-162434] [transport.py] [_log()] userauth is OK
2025-09-29T17:22:11.133 [DEBUG] [Thread-162434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:22:11.133 [DEBUG] [Thread-162434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:22:11.133 [DEBUG] [Thread-162434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:22:11.133 [DEBUG] [Thread-162434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:22:11.152 [INFO] [Thread-162434] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:22:11.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:22:11.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:22:12.158 [DEBUG] [Thread-162434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:22:12.158 [DEBUG] [Thread-162434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:22:12.206 [DEBUG] [Thread-162434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:22:12.206 [DEBUG] [Thread-162434] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:22:12.214 [DEBUG] [Thread-162434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:22:12.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:22:12.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:22:12.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:22:12.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:22:12.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:22:12.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:22:12.246 [DEBUG] [Thread-162434] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:12.945 [DEBUG] [Thread-162436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:22:22.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:22:22.249 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:22:22.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:22:22.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 22, 13), 13.99, 38.36, 0.0, 17.42, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:22:22.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:22:13
2025-09-29T17:22:22.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:22:23.095 [DEBUG] [Thread-162437] [transport.py] [_log()] starting thread (client mode): 0x2b91cf40
2025-09-29T17:22:23.095 [DEBUG] [Thread-162437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:22:23.116 [DEBUG] [Thread-162437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:22:23.116 [INFO] [Thread-162437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:22:23.119 [DEBUG] [Thread-162437] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] client lang: <none>
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] server lang: <none>
2025-09-29T17:22:23.120 [DEBUG] [Thread-162437] [transport.py] [_log()] kex follows: False
2025-09-29T17:22:23.121 [DEBUG] [Thread-162437] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:22:23.121 [DEBUG] [Thread-162437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:22:23.121 [DEBUG] [Thread-162437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:22:23.121 [DEBUG] [Thread-162437] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:22:23.121 [DEBUG] [Thread-162437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:22:23.121 [DEBUG] [Thread-162437] [transport.py] [_log()] Compression: none
2025-09-29T17:22:23.121 [DEBUG] [Thread-162437] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:22:23.138 [DEBUG] [Thread-162437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:22:23.139 [DEBUG] [Thread-162437] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:22:23.139 [DEBUG] [Thread-162437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:22:23.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:22:23.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:22:23.141 [DEBUG] [Thread-162437] [transport.py] [_log()] userauth is OK
2025-09-29T17:22:23.141 [DEBUG] [Thread-162437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:22:23.141 [DEBUG] [Thread-162437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:22:23.142 [DEBUG] [Thread-162437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:22:23.142 [DEBUG] [Thread-162437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:22:23.166 [INFO] [Thread-162437] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:22:23.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:22:23.812 [DEBUG] [Thread-162437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:22:23.812 [DEBUG] [Thread-162437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:22:23.812 [DEBUG] [Thread-162437] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:22:23.853 [DEBUG] [Thread-162437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:22:23.854 [DEBUG] [Thread-162437] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:22:23.856 [DEBUG] [Thread-162437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:22:23.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:22:23.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:22:23.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:22:23.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:22:23.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:22:23.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:22:23.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:22:23.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:22:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:22:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.639996 -999.00  +14.50  11.83     44   +2.40 1 1 1 1 1   887    0 11.80 -7.90 ----- 12.0 11.8 146.2 19.7 18.1 -28.5 18.1 -27.2 19.5 -27.3 20.1 -29.0
2025-09-29T17:22:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:22:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:22:23.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.639996
2025-09-29T17:22:23.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:22:23.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:22:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:22:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:22:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:22:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:22:13', tmtdew=13.99, humidity=38.36, cloud=0.0, wind=17.42, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:21:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:22:23.880 [DEBUG] [Thread-162437] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:23.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:22:23.974 [DEBUG] [Thread-162440] [transport.py] [_log()] starting thread (client mode): 0x2b91cb20
2025-09-29T17:22:23.974 [DEBUG] [Thread-162440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:22:23.988 [DEBUG] [Thread-162440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:22:23.988 [INFO] [Thread-162440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:22:23.996 [DEBUG] [Thread-162440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:22:23.996 [DEBUG] [Thread-162440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] client lang: <none>
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] server lang: <none>
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] kex follows: False
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] Compression: none
2025-09-29T17:22:23.997 [DEBUG] [Thread-162440] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:22:24.059 [DEBUG] [Thread-162440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:22:24.059 [DEBUG] [Thread-162440] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:22:24.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:22:24.060 [DEBUG] [Thread-162440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:22:24.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:22:24.117 [DEBUG] [Thread-162440] [transport.py] [_log()] userauth is OK
2025-09-29T17:22:24.117 [DEBUG] [Thread-162440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:22:24.117 [DEBUG] [Thread-162440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:22:24.117 [DEBUG] [Thread-162440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:22:24.117 [DEBUG] [Thread-162440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:22:24.136 [INFO] [Thread-162440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:22:24.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:22:24.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:22:25.089 [DEBUG] [Thread-162440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:22:25.089 [DEBUG] [Thread-162440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:22:25.138 [DEBUG] [Thread-162440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:22:25.139 [DEBUG] [Thread-162440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:22:25.147 [DEBUG] [Thread-162440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:22:25.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:22:25.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:22:25.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:22:25.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:22:25.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:22:25.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:22:25.181 [DEBUG] [Thread-162440] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:27.993 [DEBUG] [Thread-162442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:22:28.961 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:22:28.962 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:22:35.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:22:35.184 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:22:35.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:22:35.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 22, 13), 13.99, 38.36, 0.0, 17.42, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:22:35.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:22:13
2025-09-29T17:22:35.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:22:36.036 [DEBUG] [Thread-162443] [transport.py] [_log()] starting thread (client mode): 0x2e3f9a50
2025-09-29T17:22:36.036 [DEBUG] [Thread-162443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:22:36.053 [DEBUG] [Thread-162443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:22:36.053 [INFO] [Thread-162443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] client lang: <none>
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] server lang: <none>
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] kex follows: False
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:22:36.054 [DEBUG] [Thread-162443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:22:36.055 [DEBUG] [Thread-162443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:22:36.055 [DEBUG] [Thread-162443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:22:36.055 [DEBUG] [Thread-162443] [transport.py] [_log()] Compression: none
2025-09-29T17:22:36.055 [DEBUG] [Thread-162443] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:22:36.062 [DEBUG] [Thread-162443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:22:36.062 [DEBUG] [Thread-162443] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:22:36.063 [DEBUG] [Thread-162443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:22:36.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:22:36.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:22:36.064 [DEBUG] [Thread-162443] [transport.py] [_log()] userauth is OK
2025-09-29T17:22:36.064 [DEBUG] [Thread-162443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:22:36.064 [DEBUG] [Thread-162443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:22:36.064 [DEBUG] [Thread-162443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:22:36.064 [DEBUG] [Thread-162443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:22:36.078 [INFO] [Thread-162443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:22:36.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:22:36.660 [DEBUG] [Thread-162443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:22:36.660 [DEBUG] [Thread-162443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:22:36.660 [DEBUG] [Thread-162443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:22:36.701 [DEBUG] [Thread-162443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:22:36.702 [DEBUG] [Thread-162443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:22:36.704 [DEBUG] [Thread-162443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:22:36.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:22:36.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:22:36.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:22:36.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:22:36.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:22:36.719 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:22:36.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:22:36.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:22:36.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:22:36.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.640343 -999.00  +14.40  15.46     44   +2.30 1 1 1 1 1   887    0 11.82 -7.11 ----- 15.3 15.5 149.0 25.9 18.1 -28.4 18.0 -28.0 19.5 -27.7 20.1 -29.4
2025-09-29T17:22:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:22:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:22:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.640343
2025-09-29T17:22:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:22:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:22:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:22:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:22:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:22:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:22:13', tmtdew=13.99, humidity=38.36, cloud=0.0, wind=17.42, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:22:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:22:36.721 [DEBUG] [Thread-162443] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:36.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:22:36.817 [DEBUG] [Thread-162446] [transport.py] [_log()] starting thread (client mode): 0x2b94ce50
2025-09-29T17:22:36.818 [DEBUG] [Thread-162446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:22:36.832 [DEBUG] [Thread-162446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:22:36.832 [INFO] [Thread-162446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] client lang: <none>
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] server lang: <none>
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] kex follows: False
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:22:36.840 [DEBUG] [Thread-162446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:22:36.841 [DEBUG] [Thread-162446] [transport.py] [_log()] Compression: none
2025-09-29T17:22:36.841 [DEBUG] [Thread-162446] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:22:36.896 [DEBUG] [Thread-162446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:22:36.897 [DEBUG] [Thread-162446] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:22:36.897 [DEBUG] [Thread-162446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:22:36.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:22:36.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:22:36.953 [DEBUG] [Thread-162446] [transport.py] [_log()] userauth is OK
2025-09-29T17:22:36.953 [DEBUG] [Thread-162446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:22:36.953 [DEBUG] [Thread-162446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:22:36.953 [DEBUG] [Thread-162446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:22:36.954 [DEBUG] [Thread-162446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:22:36.973 [INFO] [Thread-162446] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:22:36.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:22:36.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:22:37.942 [DEBUG] [Thread-162446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:22:37.942 [DEBUG] [Thread-162446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:22:37.990 [DEBUG] [Thread-162446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:22:37.990 [DEBUG] [Thread-162446] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:22:37.999 [DEBUG] [Thread-162446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:22:38.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:22:38.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:22:38.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:22:38.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:22:38.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:22:38.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:22:38.033 [DEBUG] [Thread-162446] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:43.037 [DEBUG] [Thread-162448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:22:48.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:22:48.035 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:22:48.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:22:48.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 22, 45), 14.07, 38.03, 0.0, 24.28, 14.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:22:48.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:22:45
2025-09-29T17:22:48.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:22:48.876 [DEBUG] [Thread-162449] [transport.py] [_log()] starting thread (client mode): 0x2e375420
2025-09-29T17:22:48.876 [DEBUG] [Thread-162449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:22:48.891 [DEBUG] [Thread-162449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:22:48.891 [INFO] [Thread-162449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] client lang: <none>
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] server lang: <none>
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] kex follows: False
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] Compression: none
2025-09-29T17:22:48.894 [DEBUG] [Thread-162449] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:22:48.913 [DEBUG] [Thread-162449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:22:48.913 [DEBUG] [Thread-162449] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:22:48.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:22:48.914 [DEBUG] [Thread-162449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:22:48.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:22:48.916 [DEBUG] [Thread-162449] [transport.py] [_log()] userauth is OK
2025-09-29T17:22:48.917 [DEBUG] [Thread-162449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:22:48.917 [DEBUG] [Thread-162449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:22:48.917 [DEBUG] [Thread-162449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:22:48.917 [DEBUG] [Thread-162449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:22:48.942 [INFO] [Thread-162449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:22:48.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:22:49.544 [DEBUG] [Thread-162449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:22:49.544 [DEBUG] [Thread-162449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:22:49.545 [DEBUG] [Thread-162449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:22:49.585 [DEBUG] [Thread-162449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:22:49.585 [DEBUG] [Thread-162449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:22:49.589 [DEBUG] [Thread-162449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:22:49.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:22:49.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:22:49.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:22:49.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:22:49.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:22:49.611 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:22:49.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:22:49.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:22:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:22:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.640343 -999.00  +14.40  15.46     44   +2.30 1 1 1 1 1   887    0 11.82 -7.11 ----- 15.3 15.5 149.0 25.9 18.1 -28.4 18.0 -28.0 19.5 -27.7 20.1 -29.4
2025-09-29T17:22:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:22:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:22:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.640343
2025-09-29T17:22:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:22:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:22:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:22:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:22:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:22:49.613 [DEBUG] [Thread-162449] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:22:45', tmtdew=14.07, humidity=38.03, cloud=0.0, wind=24.28, temperature=14.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:22:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:22:49.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:22:49.705 [DEBUG] [Thread-162452] [transport.py] [_log()] starting thread (client mode): 0x2b91e2c0
2025-09-29T17:22:49.705 [DEBUG] [Thread-162452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:22:49.720 [DEBUG] [Thread-162452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:22:49.720 [INFO] [Thread-162452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:22:49.727 [DEBUG] [Thread-162452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:22:49.728 [DEBUG] [Thread-162452] [transport.py] [_log()] client lang: <none>
2025-09-29T17:22:49.729 [DEBUG] [Thread-162452] [transport.py] [_log()] server lang: <none>
2025-09-29T17:22:49.729 [DEBUG] [Thread-162452] [transport.py] [_log()] kex follows: False
2025-09-29T17:22:49.729 [DEBUG] [Thread-162452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:22:49.729 [DEBUG] [Thread-162452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:22:49.729 [DEBUG] [Thread-162452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:22:49.729 [DEBUG] [Thread-162452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:22:49.729 [DEBUG] [Thread-162452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:22:49.729 [DEBUG] [Thread-162452] [transport.py] [_log()] Compression: none
2025-09-29T17:22:49.730 [DEBUG] [Thread-162452] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:22:49.785 [DEBUG] [Thread-162452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:22:49.785 [DEBUG] [Thread-162452] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:22:49.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:22:49.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:22:49.787 [DEBUG] [Thread-162452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:22:49.841 [DEBUG] [Thread-162452] [transport.py] [_log()] userauth is OK
2025-09-29T17:22:49.841 [DEBUG] [Thread-162452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:22:49.841 [DEBUG] [Thread-162452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:22:49.841 [DEBUG] [Thread-162452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:22:49.841 [DEBUG] [Thread-162452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:22:49.860 [INFO] [Thread-162452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:22:49.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:22:49.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:22:50.397 [DEBUG] [Thread-162454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:22:50.802 [DEBUG] [Thread-162452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:22:50.802 [DEBUG] [Thread-162452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:22:50.850 [DEBUG] [Thread-162452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:22:50.851 [DEBUG] [Thread-162452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:22:50.860 [DEBUG] [Thread-162452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:22:50.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:22:50.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:22:50.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:22:50.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:22:50.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:22:50.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:22:50.894 [DEBUG] [Thread-162452] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:22:58.078 [DEBUG] [Thread-162455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:23:00.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:23:00.897 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:23:00.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:23:01.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 22, 45), 14.07, 38.03, 0.0, 24.28, 14.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:23:01.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:22:45
2025-09-29T17:23:01.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:23:01.748 [DEBUG] [Thread-162456] [transport.py] [_log()] starting thread (client mode): 0x2e375390
2025-09-29T17:23:01.748 [DEBUG] [Thread-162456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:01.767 [DEBUG] [Thread-162456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:23:01.767 [INFO] [Thread-162456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:23:01.770 [DEBUG] [Thread-162456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:01.770 [DEBUG] [Thread-162456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:23:01.770 [DEBUG] [Thread-162456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:01.770 [DEBUG] [Thread-162456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:01.770 [DEBUG] [Thread-162456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] Compression: none
2025-09-29T17:23:01.771 [DEBUG] [Thread-162456] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:01.787 [DEBUG] [Thread-162456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:01.787 [DEBUG] [Thread-162456] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:01.787 [DEBUG] [Thread-162456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:23:01.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:23:01.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:01.788 [DEBUG] [Thread-162456] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:01.788 [DEBUG] [Thread-162456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:01.788 [DEBUG] [Thread-162456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:01.788 [DEBUG] [Thread-162456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:23:01.788 [DEBUG] [Thread-162456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:01.796 [INFO] [Thread-162456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:01.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:02.438 [DEBUG] [Thread-162456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:02.438 [DEBUG] [Thread-162456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:02.438 [DEBUG] [Thread-162456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:23:02.478 [DEBUG] [Thread-162456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:02.478 [DEBUG] [Thread-162456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:02.481 [DEBUG] [Thread-162456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:02.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:02.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:23:02.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:23:02.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:23:02.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:02.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:23:02.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:02.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.640343 -999.00  +14.40  15.46     44   +2.30 1 1 1 1 1   887    0 11.82 -7.11 ----- 15.3 15.5 149.0 25.9 18.1 -28.4 18.0 -28.0 19.5 -27.7 20.1 -29.4
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.640343
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:23:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:22:45', tmtdew=14.07, humidity=38.03, cloud=0.0, wind=24.28, temperature=14.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:22:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:23:02.502 [DEBUG] [Thread-162456] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:02.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:23:02.585 [DEBUG] [Thread-162459] [transport.py] [_log()] starting thread (client mode): 0x2b91e7a0
2025-09-29T17:23:02.585 [DEBUG] [Thread-162459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:02.599 [DEBUG] [Thread-162459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:23:02.599 [INFO] [Thread-162459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:23:02.607 [DEBUG] [Thread-162459] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:02.607 [DEBUG] [Thread-162459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:23:02.607 [DEBUG] [Thread-162459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:02.607 [DEBUG] [Thread-162459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] Compression: none
2025-09-29T17:23:02.608 [DEBUG] [Thread-162459] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:02.669 [DEBUG] [Thread-162459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:02.670 [DEBUG] [Thread-162459] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:02.670 [DEBUG] [Thread-162459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:23:02.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:23:02.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:02.725 [DEBUG] [Thread-162459] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:02.726 [DEBUG] [Thread-162459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:02.726 [DEBUG] [Thread-162459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:02.726 [DEBUG] [Thread-162459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:23:02.726 [DEBUG] [Thread-162459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:02.749 [INFO] [Thread-162459] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:02.749 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:23:02.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:03.700 [DEBUG] [Thread-162459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:03.700 [DEBUG] [Thread-162459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:03.748 [DEBUG] [Thread-162459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:03.748 [DEBUG] [Thread-162459] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:03.757 [DEBUG] [Thread-162459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:03.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:03.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:23:03.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:23:03.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:03.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:03.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:03.791 [DEBUG] [Thread-162459] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:13.126 [DEBUG] [Thread-162461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:23:13.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:23:13.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:23:13.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:23:14.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 22, 45), 14.07, 38.03, 0.0, 24.28, 14.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:23:14.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:22:45
2025-09-29T17:23:14.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:23:14.634 [DEBUG] [Thread-162462] [transport.py] [_log()] starting thread (client mode): 0x2e3746a0
2025-09-29T17:23:14.634 [DEBUG] [Thread-162462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:14.654 [DEBUG] [Thread-162462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:23:14.654 [INFO] [Thread-162462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:23:14.657 [DEBUG] [Thread-162462] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:14.657 [DEBUG] [Thread-162462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:23:14.657 [DEBUG] [Thread-162462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:14.657 [DEBUG] [Thread-162462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:14.657 [DEBUG] [Thread-162462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] Compression: none
2025-09-29T17:23:14.658 [DEBUG] [Thread-162462] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:14.677 [DEBUG] [Thread-162462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:14.678 [DEBUG] [Thread-162462] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:14.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:23:14.679 [DEBUG] [Thread-162462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:23:14.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:14.680 [DEBUG] [Thread-162462] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:14.681 [DEBUG] [Thread-162462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:14.681 [DEBUG] [Thread-162462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:14.681 [DEBUG] [Thread-162462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:23:14.681 [DEBUG] [Thread-162462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:14.718 [INFO] [Thread-162462] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:14.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:15.361 [DEBUG] [Thread-162462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:15.361 [DEBUG] [Thread-162462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:15.361 [DEBUG] [Thread-162462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:23:15.402 [DEBUG] [Thread-162462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:15.402 [DEBUG] [Thread-162462] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:15.405 [DEBUG] [Thread-162462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:15.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:15.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:23:15.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:23:15.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:23:15.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:15.428 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:23:15.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:15.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:15.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:23:15.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.640690 -999.00  +14.30  10.57     44   +2.30 1 1 1 1 1   887    0 11.93 -5.51 ----- 14.0 10.6 145.0 19.0 18.1 -28.6 18.0 -27.5 19.4 -27.7 20.1 -29.6
2025-09-29T17:23:15.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:23:15.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:23:15.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.640690
2025-09-29T17:23:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:23:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:23:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:23:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:23:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:23:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:22:45', tmtdew=14.07, humidity=38.03, cloud=0.0, wind=24.28, temperature=14.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:22:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:23:15.431 [DEBUG] [Thread-162462] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:15.515 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:23:15.524 [DEBUG] [Thread-162465] [transport.py] [_log()] starting thread (client mode): 0x2b9ce350
2025-09-29T17:23:15.524 [DEBUG] [Thread-162465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:15.541 [DEBUG] [Thread-162465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:23:15.541 [INFO] [Thread-162465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:23:15.548 [DEBUG] [Thread-162465] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:15.548 [DEBUG] [Thread-162465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] Compression: none
2025-09-29T17:23:15.549 [DEBUG] [Thread-162465] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:15.605 [DEBUG] [Thread-162465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:15.606 [DEBUG] [Thread-162465] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:15.606 [DEBUG] [Thread-162465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:23:15.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:23:15.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:15.661 [DEBUG] [Thread-162465] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:15.661 [DEBUG] [Thread-162465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:15.661 [DEBUG] [Thread-162465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:15.661 [DEBUG] [Thread-162465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:23:15.662 [DEBUG] [Thread-162465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:15.680 [INFO] [Thread-162465] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:15.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:23:15.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:16.696 [DEBUG] [Thread-162465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:16.696 [DEBUG] [Thread-162465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:16.744 [DEBUG] [Thread-162465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:16.744 [DEBUG] [Thread-162465] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:16.753 [DEBUG] [Thread-162465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:16.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:16.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:23:16.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:23:16.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:16.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:16.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:16.789 [DEBUG] [Thread-162465] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:26.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:23:26.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:23:26.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:23:27.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 23, 17), 14.05, 38.12, 0.0, 23.24, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:23:27.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:23:17
2025-09-29T17:23:27.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:23:27.644 [DEBUG] [Thread-162467] [transport.py] [_log()] starting thread (client mode): 0x2b94e8c0
2025-09-29T17:23:27.644 [DEBUG] [Thread-162467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:27.663 [DEBUG] [Thread-162467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:23:27.663 [INFO] [Thread-162467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:27.666 [DEBUG] [Thread-162467] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:27.667 [DEBUG] [Thread-162467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:27.667 [DEBUG] [Thread-162467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:27.667 [DEBUG] [Thread-162467] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:27.667 [DEBUG] [Thread-162467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:27.667 [DEBUG] [Thread-162467] [transport.py] [_log()] Compression: none
2025-09-29T17:23:27.667 [DEBUG] [Thread-162467] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:27.681 [DEBUG] [Thread-162467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:27.681 [DEBUG] [Thread-162467] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:27.681 [DEBUG] [Thread-162467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:23:27.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:23:27.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:27.682 [DEBUG] [Thread-162467] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:27.682 [DEBUG] [Thread-162467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:27.682 [DEBUG] [Thread-162467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:27.682 [DEBUG] [Thread-162467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:23:27.682 [DEBUG] [Thread-162467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:27.697 [INFO] [Thread-162467] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:27.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:28.156 [DEBUG] [Thread-162469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:23:28.381 [DEBUG] [Thread-162467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:28.382 [DEBUG] [Thread-162467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:28.382 [DEBUG] [Thread-162467] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:23:28.423 [DEBUG] [Thread-162467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:28.423 [DEBUG] [Thread-162467] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:28.425 [DEBUG] [Thread-162467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:28.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:28.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:23:28.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:23:28.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:23:28.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:28.445 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:23:28.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:28.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:28.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:23:28.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.640690 -999.00  +14.30  10.57     44   +2.30 1 1 1 1 1   887    0 11.93 -5.51 ----- 14.0 10.6 145.0 19.0 18.1 -28.6 18.0 -27.5 19.4 -27.7 20.1 -29.6
2025-09-29T17:23:28.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:23:28.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:23:28.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.640690
2025-09-29T17:23:28.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:23:28.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:23:28.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:23:28.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:23:28.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:23:28.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:23:17', tmtdew=14.05, humidity=38.12, cloud=0.0, wind=23.24, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:22:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:23:28.448 [DEBUG] [Thread-162467] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:28.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:23:28.549 [DEBUG] [Thread-162471] [transport.py] [_log()] starting thread (client mode): 0x2b9cd480
2025-09-29T17:23:28.549 [DEBUG] [Thread-162471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:28.566 [DEBUG] [Thread-162471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:23:28.566 [INFO] [Thread-162471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:23:28.573 [DEBUG] [Thread-162471] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:28.573 [DEBUG] [Thread-162471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:23:28.573 [DEBUG] [Thread-162471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:28.573 [DEBUG] [Thread-162471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:28.573 [DEBUG] [Thread-162471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:28.573 [DEBUG] [Thread-162471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] Compression: none
2025-09-29T17:23:28.574 [DEBUG] [Thread-162471] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:28.633 [DEBUG] [Thread-162471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:28.633 [DEBUG] [Thread-162471] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:28.634 [DEBUG] [Thread-162471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:23:28.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:23:28.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:28.690 [DEBUG] [Thread-162471] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:28.691 [DEBUG] [Thread-162471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:28.691 [DEBUG] [Thread-162471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:28.691 [DEBUG] [Thread-162471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:23:28.691 [DEBUG] [Thread-162471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:28.710 [INFO] [Thread-162471] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:28.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:23:28.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:29.099 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:23:29.100 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:23:29.690 [DEBUG] [Thread-162471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:29.691 [DEBUG] [Thread-162471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:29.738 [DEBUG] [Thread-162471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:29.738 [DEBUG] [Thread-162471] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:29.748 [DEBUG] [Thread-162471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:29.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:29.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:23:29.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:23:29.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:29.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:29.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:29.782 [DEBUG] [Thread-162471] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:39.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:23:39.785 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:23:39.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:23:40.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 23, 17), 14.05, 38.12, 0.0, 23.24, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:23:40.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:23:17
2025-09-29T17:23:40.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:23:40.621 [DEBUG] [Thread-162473] [transport.py] [_log()] starting thread (client mode): 0x2e3dded0
2025-09-29T17:23:40.621 [DEBUG] [Thread-162473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:40.631 [DEBUG] [Thread-162473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:23:40.631 [INFO] [Thread-162473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] Compression: none
2025-09-29T17:23:40.632 [DEBUG] [Thread-162473] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:40.640 [DEBUG] [Thread-162473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:40.640 [DEBUG] [Thread-162473] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:40.640 [DEBUG] [Thread-162473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:23:40.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:23:40.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:40.641 [DEBUG] [Thread-162473] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:40.641 [DEBUG] [Thread-162473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:40.641 [DEBUG] [Thread-162473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:40.641 [DEBUG] [Thread-162473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:23:40.641 [DEBUG] [Thread-162473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:40.652 [INFO] [Thread-162473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:40.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:41.224 [DEBUG] [Thread-162473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:41.224 [DEBUG] [Thread-162473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:41.224 [DEBUG] [Thread-162473] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:23:41.265 [DEBUG] [Thread-162473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:41.265 [DEBUG] [Thread-162473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:41.267 [DEBUG] [Thread-162473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:41.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:41.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:23:41.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:23:41.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:23:41.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:41.289 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:23:41.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:41.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:41.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:23:41.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.641385 -999.00  +14.10  16.47     44   +2.30 1 1 1 1 1   887    0 11.83 -5.19 ----- 19.9 16.5 135.8 22.2 18.0 -28.3 18.0 -27.2 19.3 -28.3 19.9 -29.2
2025-09-29T17:23:41.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:23:41.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:23:41.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.641385
2025-09-29T17:23:41.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:23:41.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:23:41.292 [DEBUG] [Thread-162473] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:41.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:23:41.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:23:41.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:23:41.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:23:17', tmtdew=14.05, humidity=38.12, cloud=0.0, wind=23.24, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:23:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:23:41.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:23:41.390 [DEBUG] [Thread-162476] [transport.py] [_log()] starting thread (client mode): 0x2e34ba60
2025-09-29T17:23:41.390 [DEBUG] [Thread-162476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:41.405 [DEBUG] [Thread-162476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:23:41.405 [INFO] [Thread-162476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:23:41.413 [DEBUG] [Thread-162476] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:41.413 [DEBUG] [Thread-162476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:41.414 [DEBUG] [Thread-162476] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:41.415 [DEBUG] [Thread-162476] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:41.415 [DEBUG] [Thread-162476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:41.415 [DEBUG] [Thread-162476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:41.415 [DEBUG] [Thread-162476] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:41.415 [DEBUG] [Thread-162476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:41.415 [DEBUG] [Thread-162476] [transport.py] [_log()] Compression: none
2025-09-29T17:23:41.415 [DEBUG] [Thread-162476] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:41.469 [DEBUG] [Thread-162476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:41.469 [DEBUG] [Thread-162476] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:41.470 [DEBUG] [Thread-162476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:23:41.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:23:41.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:41.525 [DEBUG] [Thread-162476] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:41.525 [DEBUG] [Thread-162476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:41.525 [DEBUG] [Thread-162476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:41.526 [DEBUG] [Thread-162476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:23:41.526 [DEBUG] [Thread-162476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:41.545 [INFO] [Thread-162476] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:41.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:23:41.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:42.572 [DEBUG] [Thread-162476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:42.572 [DEBUG] [Thread-162476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:42.621 [DEBUG] [Thread-162476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:42.621 [DEBUG] [Thread-162476] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:42.630 [DEBUG] [Thread-162476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:42.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:42.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:23:42.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:23:42.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:42.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:42.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:42.664 [DEBUG] [Thread-162476] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:43.190 [DEBUG] [Thread-162478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:23:50.424 [DEBUG] [Thread-162479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:23:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:23:52.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:23:52.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:23:53.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 23, 49), 14.01, 38.57, 0.0, 21.7, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:23:53.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:23:49
2025-09-29T17:23:53.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:23:53.512 [DEBUG] [Thread-162480] [transport.py] [_log()] starting thread (client mode): 0x2e376aa0
2025-09-29T17:23:53.512 [DEBUG] [Thread-162480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:53.532 [DEBUG] [Thread-162480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:23:53.532 [INFO] [Thread-162480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:23:53.534 [DEBUG] [Thread-162480] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:53.534 [DEBUG] [Thread-162480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:23:53.534 [DEBUG] [Thread-162480] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:53.534 [DEBUG] [Thread-162480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:53.534 [DEBUG] [Thread-162480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:53.534 [DEBUG] [Thread-162480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:53.534 [DEBUG] [Thread-162480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:53.534 [DEBUG] [Thread-162480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] Compression: none
2025-09-29T17:23:53.535 [DEBUG] [Thread-162480] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:53.557 [DEBUG] [Thread-162480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:53.558 [DEBUG] [Thread-162480] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:53.558 [DEBUG] [Thread-162480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:23:53.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:23:53.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:53.559 [DEBUG] [Thread-162480] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:53.559 [DEBUG] [Thread-162480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:53.559 [DEBUG] [Thread-162480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:53.559 [DEBUG] [Thread-162480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:23:53.559 [DEBUG] [Thread-162480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:53.577 [INFO] [Thread-162480] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:53.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:54.241 [DEBUG] [Thread-162480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:54.241 [DEBUG] [Thread-162480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:54.241 [DEBUG] [Thread-162480] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:23:54.282 [DEBUG] [Thread-162480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:54.283 [DEBUG] [Thread-162480] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:54.285 [DEBUG] [Thread-162480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:54.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:54.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:23:54.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:23:54.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:23:54.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:54.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:23:54.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:54.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:23:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.641385 -999.00  +14.10  16.47     44   +2.30 1 1 1 1 1   887    0 11.83 -5.19 ----- 19.9 16.5 135.8 22.2 18.0 -28.3 18.0 -27.2 19.3 -28.3 19.9 -29.2
2025-09-29T17:23:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:23:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:23:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.641385
2025-09-29T17:23:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:23:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:23:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:23:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:23:54.312 [DEBUG] [Thread-162480] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:54.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:23:54.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:23:49', tmtdew=14.01, humidity=38.57, cloud=0.0, wind=21.7, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:23:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:23:54.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:23:54.407 [DEBUG] [Thread-162483] [transport.py] [_log()] starting thread (client mode): 0x2b94ece0
2025-09-29T17:23:54.407 [DEBUG] [Thread-162483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:23:54.422 [DEBUG] [Thread-162483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:23:54.423 [INFO] [Thread-162483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:23:54.431 [DEBUG] [Thread-162483] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:23:54.431 [DEBUG] [Thread-162483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:23:54.431 [DEBUG] [Thread-162483] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:23:54.431 [DEBUG] [Thread-162483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:54.431 [DEBUG] [Thread-162483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:23:54.431 [DEBUG] [Thread-162483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:54.431 [DEBUG] [Thread-162483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] client lang: <none>
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] server lang: <none>
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] kex follows: False
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] Compression: none
2025-09-29T17:23:54.432 [DEBUG] [Thread-162483] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:23:54.489 [DEBUG] [Thread-162483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:23:54.490 [DEBUG] [Thread-162483] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:23:54.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:23:54.491 [DEBUG] [Thread-162483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:23:54.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:23:54.545 [DEBUG] [Thread-162483] [transport.py] [_log()] userauth is OK
2025-09-29T17:23:54.545 [DEBUG] [Thread-162483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:23:54.545 [DEBUG] [Thread-162483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:23:54.546 [DEBUG] [Thread-162483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:23:54.546 [DEBUG] [Thread-162483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:23:54.564 [INFO] [Thread-162483] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:23:54.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:23:54.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:23:55.537 [DEBUG] [Thread-162483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:23:55.537 [DEBUG] [Thread-162483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:23:55.585 [DEBUG] [Thread-162483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:23:55.585 [DEBUG] [Thread-162483] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:23:55.594 [DEBUG] [Thread-162483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:23:55.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:23:55.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:23:55.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:23:55.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:23:55.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:23:55.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:23:55.629 [DEBUG] [Thread-162483] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:23:58.238 [DEBUG] [Thread-162485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:24:05.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:24:05.631 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:24:05.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:24:06.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 23, 49), 14.01, 38.57, 0.0, 21.7, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:24:06.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:23:49
2025-09-29T17:24:06.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:24:06.465 [DEBUG] [Thread-162486] [transport.py] [_log()] starting thread (client mode): 0x2e3dcbb0
2025-09-29T17:24:06.466 [DEBUG] [Thread-162486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:24:06.488 [DEBUG] [Thread-162486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:24:06.488 [INFO] [Thread-162486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] client lang: <none>
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] server lang: <none>
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] kex follows: False
2025-09-29T17:24:06.491 [DEBUG] [Thread-162486] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:24:06.492 [DEBUG] [Thread-162486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:24:06.492 [DEBUG] [Thread-162486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:24:06.492 [DEBUG] [Thread-162486] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:24:06.492 [DEBUG] [Thread-162486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:24:06.492 [DEBUG] [Thread-162486] [transport.py] [_log()] Compression: none
2025-09-29T17:24:06.492 [DEBUG] [Thread-162486] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:24:06.509 [DEBUG] [Thread-162486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:24:06.510 [DEBUG] [Thread-162486] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:24:06.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:24:06.511 [DEBUG] [Thread-162486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:24:06.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:24:06.513 [DEBUG] [Thread-162486] [transport.py] [_log()] userauth is OK
2025-09-29T17:24:06.513 [DEBUG] [Thread-162486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:24:06.513 [DEBUG] [Thread-162486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:24:06.513 [DEBUG] [Thread-162486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:24:06.513 [DEBUG] [Thread-162486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:24:06.548 [INFO] [Thread-162486] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:24:06.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:24:07.216 [DEBUG] [Thread-162486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:24:07.216 [DEBUG] [Thread-162486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:24:07.216 [DEBUG] [Thread-162486] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:24:07.257 [DEBUG] [Thread-162486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:24:07.257 [DEBUG] [Thread-162486] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:24:07.261 [DEBUG] [Thread-162486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:24:07.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:24:07.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:24:07.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:24:07.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:24:07.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:24:07.283 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:24:07.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:24:07.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:24:07.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:24:07.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.641385 -999.00  +14.10  16.47     44   +2.30 1 1 1 1 1   887    0 11.83 -5.19 ----- 19.9 16.5 135.8 22.2 18.0 -28.3 18.0 -27.2 19.3 -28.3 19.9 -29.2
2025-09-29T17:24:07.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:24:07.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:24:07.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.641385
2025-09-29T17:24:07.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:24:07.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:24:07.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:24:07.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:24:07.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:24:07.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:23:49', tmtdew=14.01, humidity=38.57, cloud=0.0, wind=21.7, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:23:35.664', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:24:07.285 [DEBUG] [Thread-162486] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:24:07.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:24:07.381 [DEBUG] [Thread-162489] [transport.py] [_log()] starting thread (client mode): 0x2b9ce8c0
2025-09-29T17:24:07.381 [DEBUG] [Thread-162489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:24:07.396 [DEBUG] [Thread-162489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:24:07.396 [INFO] [Thread-162489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:24:07.403 [DEBUG] [Thread-162489] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:24:07.403 [DEBUG] [Thread-162489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] client lang: <none>
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] server lang: <none>
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] kex follows: False
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] Compression: none
2025-09-29T17:24:07.404 [DEBUG] [Thread-162489] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:24:07.462 [DEBUG] [Thread-162489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:24:07.462 [DEBUG] [Thread-162489] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:24:07.463 [DEBUG] [Thread-162489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:24:07.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:24:07.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:24:07.517 [DEBUG] [Thread-162489] [transport.py] [_log()] userauth is OK
2025-09-29T17:24:07.518 [DEBUG] [Thread-162489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:24:07.518 [DEBUG] [Thread-162489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:24:07.518 [DEBUG] [Thread-162489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:24:07.518 [DEBUG] [Thread-162489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:24:07.537 [INFO] [Thread-162489] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:24:07.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:24:07.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:24:08.535 [DEBUG] [Thread-162489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:24:08.535 [DEBUG] [Thread-162489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:24:08.583 [DEBUG] [Thread-162489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:24:08.584 [DEBUG] [Thread-162489] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:24:08.592 [DEBUG] [Thread-162489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:24:08.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:24:08.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:24:08.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:24:08.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:24:08.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:24:08.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:24:08.622 [DEBUG] [Thread-162489] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:24:13.290 [DEBUG] [Thread-162491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:24:18.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:24:18.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:24:18.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:24:19.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 23, 49), 14.01, 38.57, 0.0, 21.7, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:24:19.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:23:49
2025-09-29T17:24:19.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:24:19.478 [DEBUG] [Thread-162492] [transport.py] [_log()] starting thread (client mode): 0x2e3df460
2025-09-29T17:24:19.478 [DEBUG] [Thread-162492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:24:19.497 [DEBUG] [Thread-162492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:24:19.497 [INFO] [Thread-162492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] client lang: <none>
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] server lang: <none>
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] kex follows: False
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] Compression: none
2025-09-29T17:24:19.501 [DEBUG] [Thread-162492] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:24:19.510 [DEBUG] [Thread-162492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:24:19.510 [DEBUG] [Thread-162492] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:24:19.511 [DEBUG] [Thread-162492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:24:19.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:24:19.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:24:19.512 [DEBUG] [Thread-162492] [transport.py] [_log()] userauth is OK
2025-09-29T17:24:19.512 [DEBUG] [Thread-162492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:24:19.513 [DEBUG] [Thread-162492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:24:19.513 [DEBUG] [Thread-162492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:24:19.513 [DEBUG] [Thread-162492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:24:19.530 [INFO] [Thread-162492] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:24:19.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:24:20.191 [DEBUG] [Thread-162492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:24:20.192 [DEBUG] [Thread-162492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:24:20.192 [DEBUG] [Thread-162492] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:24:20.232 [DEBUG] [Thread-162492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:24:20.232 [DEBUG] [Thread-162492] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:24:20.235 [DEBUG] [Thread-162492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:24:20.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:24:20.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:24:20.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:24:20.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:24:20.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:24:20.259 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:24:20.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:24:20.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:24:20.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:24:20.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.641732 -999.00  +14.10  17.52     44   +2.30 1 1 1 1 1   887    0 11.73 -4.87 ----- 22.8 17.5 136.2 26.4 17.9 -28.2 17.9 -27.4 19.3 -27.8 19.8 -29.7
2025-09-29T17:24:20.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:24:20.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:24:20.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.641732
2025-09-29T17:24:20.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:24:20.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:24:20.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:24:20.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:24:20.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:24:20.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:23:49', tmtdew=14.01, humidity=38.57, cloud=0.0, wind=21.7, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:24:05.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:24:20.261 [DEBUG] [Thread-162492] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:24:20.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:24:28.317 [DEBUG] [Thread-162495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:24:29.238 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:24:29.239 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:24:43.370 [DEBUG] [Thread-162496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:24:50.451 [DEBUG] [Thread-162497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:24:58.399 [DEBUG] [Thread-162498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:25:13.435 [DEBUG] [Thread-162499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:25:28.470 [DEBUG] [Thread-162500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:25:29.377 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:25:29.379 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:25:43.502 [DEBUG] [Thread-162501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:25:50.479 [DEBUG] [Thread-162502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:25:58.528 [DEBUG] [Thread-162503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:26:13.558 [DEBUG] [Thread-162504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:26:28.584 [DEBUG] [Thread-162505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:26:29.517 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:26:29.518 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:26:34.171 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:26:43.616 [DEBUG] [Thread-162506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:26:44.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:26:44.181 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:26:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:26:44.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 26, 29), 13.84, 38.85, 0.0, 16.99, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:26:44.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:26:29
2025-09-29T17:26:44.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:26:45.049 [DEBUG] [Thread-162507] [transport.py] [_log()] starting thread (client mode): 0x2e3dcbb0
2025-09-29T17:26:45.049 [DEBUG] [Thread-162507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:26:45.068 [DEBUG] [Thread-162507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:26:45.069 [INFO] [Thread-162507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:26:45.072 [DEBUG] [Thread-162507] [transport.py] [_log()] client lang: <none>
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] server lang: <none>
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] kex follows: False
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] Compression: none
2025-09-29T17:26:45.073 [DEBUG] [Thread-162507] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:26:45.089 [DEBUG] [Thread-162507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:26:45.089 [DEBUG] [Thread-162507] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:26:45.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:26:45.090 [DEBUG] [Thread-162507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:26:45.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:26:45.092 [DEBUG] [Thread-162507] [transport.py] [_log()] userauth is OK
2025-09-29T17:26:45.092 [DEBUG] [Thread-162507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:26:45.093 [DEBUG] [Thread-162507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:26:45.093 [DEBUG] [Thread-162507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:26:45.093 [DEBUG] [Thread-162507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:26:45.116 [INFO] [Thread-162507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:26:45.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:26:45.770 [DEBUG] [Thread-162507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:26:45.771 [DEBUG] [Thread-162507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:26:45.771 [DEBUG] [Thread-162507] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:26:45.811 [DEBUG] [Thread-162507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:26:45.811 [DEBUG] [Thread-162507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:26:45.815 [DEBUG] [Thread-162507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:26:45.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:26:45.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:26:45.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:26:45.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:26:45.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:26:45.837 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:26:45.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:26:45.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:26:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:26:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.643121 -999.00  +14.00  15.80     44   +2.20 1 1 1 1 1   887    0 11.87 -4.84 ----- 17.1 15.8 155.0 22.9 17.8 -28.1 17.9 -27.5 19.3 -27.8 19.7 -29.5
2025-09-29T17:26:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:26:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:26:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.643121
2025-09-29T17:26:45.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:26:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:26:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:26:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:26:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:26:45.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:26:29', tmtdew=13.84, humidity=38.85, cloud=0.0, wind=16.99, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:26:05.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:26:45.839 [DEBUG] [Thread-162507] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:26:45.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:26:45.937 [DEBUG] [Thread-162510] [transport.py] [_log()] starting thread (client mode): 0x2b94cd60
2025-09-29T17:26:45.937 [DEBUG] [Thread-162510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:26:45.953 [DEBUG] [Thread-162510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:26:45.953 [INFO] [Thread-162510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:26:45.960 [DEBUG] [Thread-162510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:26:45.960 [DEBUG] [Thread-162510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:26:45.960 [DEBUG] [Thread-162510] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:26:45.960 [DEBUG] [Thread-162510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:26:45.960 [DEBUG] [Thread-162510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] client lang: <none>
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] server lang: <none>
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] kex follows: False
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] Compression: none
2025-09-29T17:26:45.961 [DEBUG] [Thread-162510] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:26:46.017 [DEBUG] [Thread-162510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:26:46.018 [DEBUG] [Thread-162510] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:26:46.018 [DEBUG] [Thread-162510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:26:46.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:26:46.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:26:46.077 [DEBUG] [Thread-162510] [transport.py] [_log()] userauth is OK
2025-09-29T17:26:46.077 [DEBUG] [Thread-162510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:26:46.077 [DEBUG] [Thread-162510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:26:46.077 [DEBUG] [Thread-162510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:26:46.077 [DEBUG] [Thread-162510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:26:46.096 [INFO] [Thread-162510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:26:46.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:26:46.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:26:47.078 [DEBUG] [Thread-162510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:26:47.078 [DEBUG] [Thread-162510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:26:47.126 [DEBUG] [Thread-162510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:26:47.126 [DEBUG] [Thread-162510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:26:47.135 [DEBUG] [Thread-162510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:26:47.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:26:47.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:26:47.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:26:47.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:26:47.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:26:47.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:26:47.169 [DEBUG] [Thread-162510] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:26:50.512 [DEBUG] [Thread-162512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:26:57.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:26:57.171 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:26:57.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:26:57.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 26, 29), 13.84, 38.85, 0.0, 16.99, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:26:57.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:26:29
2025-09-29T17:26:57.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:26:58.028 [DEBUG] [Thread-162513] [transport.py] [_log()] starting thread (client mode): 0x2e361660
2025-09-29T17:26:58.028 [DEBUG] [Thread-162513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:26:58.048 [DEBUG] [Thread-162513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:26:58.048 [INFO] [Thread-162513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:26:58.049 [DEBUG] [Thread-162513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:26:58.049 [DEBUG] [Thread-162513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:26:58.049 [DEBUG] [Thread-162513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:26:58.049 [DEBUG] [Thread-162513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:26:58.049 [DEBUG] [Thread-162513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:26:58.049 [DEBUG] [Thread-162513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] client lang: <none>
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] server lang: <none>
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] kex follows: False
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] Compression: none
2025-09-29T17:26:58.050 [DEBUG] [Thread-162513] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:26:58.068 [DEBUG] [Thread-162513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:26:58.068 [DEBUG] [Thread-162513] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:26:58.069 [DEBUG] [Thread-162513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:26:58.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:26:58.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:26:58.071 [DEBUG] [Thread-162513] [transport.py] [_log()] userauth is OK
2025-09-29T17:26:58.071 [DEBUG] [Thread-162513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:26:58.071 [DEBUG] [Thread-162513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:26:58.071 [DEBUG] [Thread-162513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:26:58.071 [DEBUG] [Thread-162513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:26:58.095 [INFO] [Thread-162513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:26:58.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:26:58.645 [DEBUG] [Thread-162515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:26:58.716 [DEBUG] [Thread-162513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:26:58.717 [DEBUG] [Thread-162513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:26:58.717 [DEBUG] [Thread-162513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:26:58.757 [DEBUG] [Thread-162513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:26:58.757 [DEBUG] [Thread-162513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:26:58.760 [DEBUG] [Thread-162513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:26:58.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:26:58.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:26:58.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:26:58.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:26:58.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:26:58.782 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:26:58.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:26:58.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:26:58.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:26:58.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.643121 -999.00  +14.00  15.80     44   +2.20 1 1 1 1 1   887    0 11.87 -4.84 ----- 17.1 15.8 155.0 22.9 17.8 -28.1 17.9 -27.5 19.3 -27.8 19.7 -29.5
2025-09-29T17:26:58.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:26:58.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:26:58.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.643121
2025-09-29T17:26:58.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:26:58.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:26:58.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:26:58.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:26:58.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:26:58.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:26:29', tmtdew=13.84, humidity=38.85, cloud=0.0, wind=16.99, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:26:05.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:26:58.785 [DEBUG] [Thread-162513] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:26:58.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:26:58.879 [DEBUG] [Thread-162517] [transport.py] [_log()] starting thread (client mode): 0x2b91e9b0
2025-09-29T17:26:58.879 [DEBUG] [Thread-162517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:26:58.894 [DEBUG] [Thread-162517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:26:58.894 [INFO] [Thread-162517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] client lang: <none>
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] server lang: <none>
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] kex follows: False
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] Compression: none
2025-09-29T17:26:58.902 [DEBUG] [Thread-162517] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:26:58.958 [DEBUG] [Thread-162517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:26:58.958 [DEBUG] [Thread-162517] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:26:58.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:26:58.959 [DEBUG] [Thread-162517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:26:58.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:26:59.020 [DEBUG] [Thread-162517] [transport.py] [_log()] userauth is OK
2025-09-29T17:26:59.021 [DEBUG] [Thread-162517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:26:59.021 [DEBUG] [Thread-162517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:26:59.021 [DEBUG] [Thread-162517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:26:59.021 [DEBUG] [Thread-162517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:26:59.039 [INFO] [Thread-162517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:26:59.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:26:59.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:00.008 [DEBUG] [Thread-162517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:00.008 [DEBUG] [Thread-162517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:00.055 [DEBUG] [Thread-162517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:00.055 [DEBUG] [Thread-162517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:00.064 [DEBUG] [Thread-162517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:00.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:00.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:27:00.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:27:00.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:00.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:00.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:00.098 [DEBUG] [Thread-162517] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:10.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:27:10.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:27:10.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:27:10.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 27, 1), 13.95, 38.46, 0.0, 19.67, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:27:10.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:27:01
2025-09-29T17:27:10.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:27:10.963 [DEBUG] [Thread-162519] [transport.py] [_log()] starting thread (client mode): 0x2e3dd300
2025-09-29T17:27:10.964 [DEBUG] [Thread-162519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:27:10.983 [DEBUG] [Thread-162519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:27:10.983 [INFO] [Thread-162519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:27:10.987 [DEBUG] [Thread-162519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:27:10.987 [DEBUG] [Thread-162519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:27:10.987 [DEBUG] [Thread-162519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:27:10.987 [DEBUG] [Thread-162519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:10.987 [DEBUG] [Thread-162519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:10.987 [DEBUG] [Thread-162519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] client lang: <none>
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] server lang: <none>
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] kex follows: False
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] Compression: none
2025-09-29T17:27:10.988 [DEBUG] [Thread-162519] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:27:11.004 [DEBUG] [Thread-162519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:27:11.004 [DEBUG] [Thread-162519] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:27:11.005 [DEBUG] [Thread-162519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:27:11.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:27:11.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:27:11.007 [DEBUG] [Thread-162519] [transport.py] [_log()] userauth is OK
2025-09-29T17:27:11.007 [DEBUG] [Thread-162519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:27:11.008 [DEBUG] [Thread-162519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:27:11.008 [DEBUG] [Thread-162519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:27:11.008 [DEBUG] [Thread-162519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:27:11.022 [INFO] [Thread-162519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:27:11.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:11.710 [DEBUG] [Thread-162519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:11.710 [DEBUG] [Thread-162519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:11.710 [DEBUG] [Thread-162519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:27:11.750 [DEBUG] [Thread-162519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:11.750 [DEBUG] [Thread-162519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:11.753 [DEBUG] [Thread-162519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:11.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:11.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:27:11.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:27:11.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:27:11.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:11.776 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:27:11.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:11.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:27:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.643468 -999.00  +14.00  18.95     45   +2.20 1 1 1 1 1   887    0 11.84 -5.69 ----- 17.4 18.9 139.6 22.9 17.8 -27.6 17.9 -27.3 19.2 -28.2 19.7 -29.5
2025-09-29T17:27:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:27:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:27:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.643468
2025-09-29T17:27:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:27:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:27:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:27:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:27:11.778 [DEBUG] [Thread-162519] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:27:11.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:27:01', tmtdew=13.95, humidity=38.46, cloud=0.0, wind=19.67, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:26:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:27:11.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:27:11.874 [DEBUG] [Thread-162522] [transport.py] [_log()] starting thread (client mode): 0x2e374490
2025-09-29T17:27:11.874 [DEBUG] [Thread-162522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:27:11.889 [DEBUG] [Thread-162522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:27:11.889 [INFO] [Thread-162522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] client lang: <none>
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] server lang: <none>
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] kex follows: False
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:27:11.897 [DEBUG] [Thread-162522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:27:11.898 [DEBUG] [Thread-162522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:27:11.898 [DEBUG] [Thread-162522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:27:11.898 [DEBUG] [Thread-162522] [transport.py] [_log()] Compression: none
2025-09-29T17:27:11.898 [DEBUG] [Thread-162522] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:27:11.954 [DEBUG] [Thread-162522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:27:11.955 [DEBUG] [Thread-162522] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:27:11.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:27:11.955 [DEBUG] [Thread-162522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:27:11.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:27:12.011 [DEBUG] [Thread-162522] [transport.py] [_log()] userauth is OK
2025-09-29T17:27:12.011 [DEBUG] [Thread-162522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:27:12.011 [DEBUG] [Thread-162522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:27:12.011 [DEBUG] [Thread-162522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:27:12.011 [DEBUG] [Thread-162522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:27:12.031 [INFO] [Thread-162522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:27:12.031 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:27:12.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:13.033 [DEBUG] [Thread-162522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:13.033 [DEBUG] [Thread-162522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:13.080 [DEBUG] [Thread-162522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:13.080 [DEBUG] [Thread-162522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:13.089 [DEBUG] [Thread-162522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:13.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:13.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:27:13.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:27:13.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:13.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:13.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:13.124 [DEBUG] [Thread-162522] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:13.680 [DEBUG] [Thread-162524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:27:23.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:27:23.126 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:27:23.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:27:23.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 27, 1), 13.95, 38.46, 0.0, 19.67, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:27:23.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:27:01
2025-09-29T17:27:23.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:27:23.984 [DEBUG] [Thread-162525] [transport.py] [_log()] starting thread (client mode): 0x2b91f070
2025-09-29T17:27:23.984 [DEBUG] [Thread-162525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:27:24.005 [DEBUG] [Thread-162525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:27:24.005 [INFO] [Thread-162525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:27:24.008 [DEBUG] [Thread-162525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:27:24.008 [DEBUG] [Thread-162525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:27:24.008 [DEBUG] [Thread-162525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:27:24.008 [DEBUG] [Thread-162525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:24.008 [DEBUG] [Thread-162525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:24.008 [DEBUG] [Thread-162525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] client lang: <none>
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] server lang: <none>
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] kex follows: False
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] Compression: none
2025-09-29T17:27:24.009 [DEBUG] [Thread-162525] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:27:24.026 [DEBUG] [Thread-162525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:27:24.026 [DEBUG] [Thread-162525] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:27:24.027 [DEBUG] [Thread-162525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:27:24.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:27:24.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:27:24.028 [DEBUG] [Thread-162525] [transport.py] [_log()] userauth is OK
2025-09-29T17:27:24.029 [DEBUG] [Thread-162525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:27:24.029 [DEBUG] [Thread-162525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:27:24.029 [DEBUG] [Thread-162525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:27:24.029 [DEBUG] [Thread-162525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:27:24.052 [INFO] [Thread-162525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:27:24.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:24.690 [DEBUG] [Thread-162525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:24.690 [DEBUG] [Thread-162525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:24.690 [DEBUG] [Thread-162525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:27:24.732 [DEBUG] [Thread-162525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:24.732 [DEBUG] [Thread-162525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:24.735 [DEBUG] [Thread-162525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:24.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:24.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:27:24.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:27:24.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:27:24.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:24.755 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:27:24.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:24.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:24.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:27:24.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.643468 -999.00  +14.00  18.95     45   +2.20 1 1 1 1 1   887    0 11.84 -5.69 ----- 17.4 18.9 139.6 22.9 17.8 -27.6 17.9 -27.3 19.2 -28.2 19.7 -29.5
2025-09-29T17:27:24.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:27:24.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:27:24.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.643468
2025-09-29T17:27:24.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:27:24.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:27:24.757 [DEBUG] [Thread-162525] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:24.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:27:24.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:27:24.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:27:24.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:27:01', tmtdew=13.95, humidity=38.46, cloud=0.0, wind=19.67, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:26:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:27:24.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:27:24.853 [DEBUG] [Thread-162528] [transport.py] [_log()] starting thread (client mode): 0x2e3fb9a0
2025-09-29T17:27:24.853 [DEBUG] [Thread-162528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:27:24.867 [DEBUG] [Thread-162528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:27:24.868 [INFO] [Thread-162528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:27:24.875 [DEBUG] [Thread-162528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:27:24.875 [DEBUG] [Thread-162528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:27:24.875 [DEBUG] [Thread-162528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:27:24.875 [DEBUG] [Thread-162528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:24.875 [DEBUG] [Thread-162528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] client lang: <none>
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] server lang: <none>
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] kex follows: False
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:27:24.876 [DEBUG] [Thread-162528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:27:24.877 [DEBUG] [Thread-162528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:27:24.877 [DEBUG] [Thread-162528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:27:24.877 [DEBUG] [Thread-162528] [transport.py] [_log()] Compression: none
2025-09-29T17:27:24.877 [DEBUG] [Thread-162528] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:27:24.934 [DEBUG] [Thread-162528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:27:24.934 [DEBUG] [Thread-162528] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:27:24.935 [DEBUG] [Thread-162528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:27:24.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:27:24.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:27:24.990 [DEBUG] [Thread-162528] [transport.py] [_log()] userauth is OK
2025-09-29T17:27:24.991 [DEBUG] [Thread-162528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:27:24.991 [DEBUG] [Thread-162528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:27:24.991 [DEBUG] [Thread-162528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:27:24.991 [DEBUG] [Thread-162528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:27:25.011 [INFO] [Thread-162528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:27:25.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:27:25.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:25.990 [DEBUG] [Thread-162528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:25.990 [DEBUG] [Thread-162528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:26.038 [DEBUG] [Thread-162528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:26.038 [DEBUG] [Thread-162528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:26.047 [DEBUG] [Thread-162528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:26.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:26.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:27:26.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:27:26.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:26.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:26.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:26.080 [DEBUG] [Thread-162528] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:28.722 [DEBUG] [Thread-162530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:27:29.655 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:27:29.657 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:27:36.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:27:36.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:27:36.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:27:36.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 27, 33), 14.06, 38.2, 0.0, 20.73, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:27:36.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:27:33
2025-09-29T17:27:36.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:27:36.936 [DEBUG] [Thread-162531] [transport.py] [_log()] starting thread (client mode): 0x2b94e3b0
2025-09-29T17:27:36.936 [DEBUG] [Thread-162531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:27:36.956 [DEBUG] [Thread-162531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:27:36.956 [INFO] [Thread-162531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:27:36.957 [DEBUG] [Thread-162531] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:27:36.957 [DEBUG] [Thread-162531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:27:36.957 [DEBUG] [Thread-162531] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:27:36.957 [DEBUG] [Thread-162531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:36.957 [DEBUG] [Thread-162531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] client lang: <none>
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] server lang: <none>
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] kex follows: False
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] Compression: none
2025-09-29T17:27:36.958 [DEBUG] [Thread-162531] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:27:36.967 [DEBUG] [Thread-162531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:27:36.968 [DEBUG] [Thread-162531] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:27:36.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:27:36.968 [DEBUG] [Thread-162531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:27:36.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:27:36.970 [DEBUG] [Thread-162531] [transport.py] [_log()] userauth is OK
2025-09-29T17:27:36.970 [DEBUG] [Thread-162531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:27:36.970 [DEBUG] [Thread-162531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:27:36.970 [DEBUG] [Thread-162531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:27:36.970 [DEBUG] [Thread-162531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:27:36.984 [INFO] [Thread-162531] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:27:36.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:37.648 [DEBUG] [Thread-162531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:37.649 [DEBUG] [Thread-162531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:37.649 [DEBUG] [Thread-162531] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:27:37.689 [DEBUG] [Thread-162531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:37.689 [DEBUG] [Thread-162531] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:37.692 [DEBUG] [Thread-162531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:37.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:37.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:27:37.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:27:37.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:27:37.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:37.716 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:27:37.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:37.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:37.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:27:37.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.643815 -999.00  +13.90  15.18     45   +2.20 1 1 1 1 1   887    0 11.87 -6.64 ----- 17.8 15.2 147.4 19.7 17.8 -28.6 17.8 -27.6 19.2 -27.0 19.7 -29.0
2025-09-29T17:27:37.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:27:37.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:27:37.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.643815
2025-09-29T17:27:37.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:27:37.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:27:37.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:27:37.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:27:37.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:27:37.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:27:33', tmtdew=14.06, humidity=38.2, cloud=0.0, wind=20.73, temperature=14.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:27:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:27:37.719 [DEBUG] [Thread-162531] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:37.804 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:27:37.815 [DEBUG] [Thread-162534] [transport.py] [_log()] starting thread (client mode): 0x2e349f60
2025-09-29T17:27:37.815 [DEBUG] [Thread-162534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:27:37.829 [DEBUG] [Thread-162534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:27:37.829 [INFO] [Thread-162534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:27:37.837 [DEBUG] [Thread-162534] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:27:37.837 [DEBUG] [Thread-162534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:27:37.837 [DEBUG] [Thread-162534] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] client lang: <none>
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] server lang: <none>
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] kex follows: False
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] Compression: none
2025-09-29T17:27:37.838 [DEBUG] [Thread-162534] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:27:37.899 [DEBUG] [Thread-162534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:27:37.899 [DEBUG] [Thread-162534] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:27:37.900 [DEBUG] [Thread-162534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:27:37.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:27:37.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:27:37.955 [DEBUG] [Thread-162534] [transport.py] [_log()] userauth is OK
2025-09-29T17:27:37.955 [DEBUG] [Thread-162534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:27:37.955 [DEBUG] [Thread-162534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:27:37.955 [DEBUG] [Thread-162534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:27:37.955 [DEBUG] [Thread-162534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:27:37.974 [INFO] [Thread-162534] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:27:37.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:27:37.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:38.961 [DEBUG] [Thread-162534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:38.962 [DEBUG] [Thread-162534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:39.011 [DEBUG] [Thread-162534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:39.011 [DEBUG] [Thread-162534] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:39.020 [DEBUG] [Thread-162534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:39.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:39.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:27:39.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:27:39.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:39.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:39.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:39.056 [DEBUG] [Thread-162534] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:43.751 [DEBUG] [Thread-162536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:27:49.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:27:49.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:27:49.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:27:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 27, 33), 14.06, 38.2, 0.0, 20.73, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:27:49.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:27:33
2025-09-29T17:27:49.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:27:49.893 [DEBUG] [Thread-162537] [transport.py] [_log()] starting thread (client mode): 0x2b9cef50
2025-09-29T17:27:49.893 [DEBUG] [Thread-162537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:27:49.913 [DEBUG] [Thread-162537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:27:49.913 [INFO] [Thread-162537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:27:49.916 [DEBUG] [Thread-162537] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:27:49.916 [DEBUG] [Thread-162537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:27:49.916 [DEBUG] [Thread-162537] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:27:49.916 [DEBUG] [Thread-162537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] client lang: <none>
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] server lang: <none>
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] kex follows: False
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] Compression: none
2025-09-29T17:27:49.917 [DEBUG] [Thread-162537] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:27:49.937 [DEBUG] [Thread-162537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:27:49.937 [DEBUG] [Thread-162537] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:27:49.938 [DEBUG] [Thread-162537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:27:49.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:27:49.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:27:49.940 [DEBUG] [Thread-162537] [transport.py] [_log()] userauth is OK
2025-09-29T17:27:49.940 [DEBUG] [Thread-162537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:27:49.940 [DEBUG] [Thread-162537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:27:49.940 [DEBUG] [Thread-162537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:27:49.941 [DEBUG] [Thread-162537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:27:49.965 [INFO] [Thread-162537] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:27:49.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:50.544 [DEBUG] [Thread-162539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:27:50.572 [DEBUG] [Thread-162537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:50.573 [DEBUG] [Thread-162537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:50.573 [DEBUG] [Thread-162537] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:27:50.613 [DEBUG] [Thread-162537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:50.613 [DEBUG] [Thread-162537] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:50.616 [DEBUG] [Thread-162537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:50.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:50.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:27:50.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:27:50.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:27:50.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:50.640 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:27:50.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:50.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:27:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.643815 -999.00  +13.90  15.18     45   +2.20 1 1 1 1 1   887    0 11.87 -6.64 ----- 17.8 15.2 147.4 19.7 17.8 -28.6 17.8 -27.6 19.2 -27.0 19.7 -29.0
2025-09-29T17:27:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:27:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:27:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.643815
2025-09-29T17:27:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:27:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:27:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:27:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:27:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:27:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:27:33', tmtdew=14.06, humidity=38.2, cloud=0.0, wind=20.73, temperature=14.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:27:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:27:50.643 [DEBUG] [Thread-162537] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:50.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:27:50.736 [DEBUG] [Thread-162541] [transport.py] [_log()] starting thread (client mode): 0x2b9cc370
2025-09-29T17:27:50.736 [DEBUG] [Thread-162541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:27:50.750 [DEBUG] [Thread-162541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:27:50.750 [INFO] [Thread-162541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:27:50.758 [DEBUG] [Thread-162541] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:27:50.758 [DEBUG] [Thread-162541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:27:50.758 [DEBUG] [Thread-162541] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:27:50.758 [DEBUG] [Thread-162541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:50.758 [DEBUG] [Thread-162541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] client lang: <none>
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] server lang: <none>
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] kex follows: False
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:27:50.759 [DEBUG] [Thread-162541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:27:50.760 [DEBUG] [Thread-162541] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:27:50.760 [DEBUG] [Thread-162541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:27:50.760 [DEBUG] [Thread-162541] [transport.py] [_log()] Compression: none
2025-09-29T17:27:50.760 [DEBUG] [Thread-162541] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:27:50.815 [DEBUG] [Thread-162541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:27:50.816 [DEBUG] [Thread-162541] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:27:50.816 [DEBUG] [Thread-162541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:27:50.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:27:50.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:27:50.871 [DEBUG] [Thread-162541] [transport.py] [_log()] userauth is OK
2025-09-29T17:27:50.871 [DEBUG] [Thread-162541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:27:50.871 [DEBUG] [Thread-162541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:27:50.871 [DEBUG] [Thread-162541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:27:50.871 [DEBUG] [Thread-162541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:27:50.890 [INFO] [Thread-162541] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:27:50.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:27:50.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:27:51.881 [DEBUG] [Thread-162541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:27:51.882 [DEBUG] [Thread-162541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:27:51.929 [DEBUG] [Thread-162541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:27:51.929 [DEBUG] [Thread-162541] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:27:51.939 [DEBUG] [Thread-162541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:27:51.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:27:51.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:27:51.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:27:51.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:27:51.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:27:51.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:27:51.974 [DEBUG] [Thread-162541] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:27:58.788 [DEBUG] [Thread-162543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:28:01.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:28:01.977 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:28:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:28:02.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 27, 33), 14.06, 38.2, 0.0, 20.73, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:28:02.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:27:33
2025-09-29T17:28:02.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:28:02.820 [DEBUG] [Thread-162544] [transport.py] [_log()] starting thread (client mode): 0x2e38e200
2025-09-29T17:28:02.821 [DEBUG] [Thread-162544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:02.841 [DEBUG] [Thread-162544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:28:02.841 [INFO] [Thread-162544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:02.844 [DEBUG] [Thread-162544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:02.845 [DEBUG] [Thread-162544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:02.845 [DEBUG] [Thread-162544] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:02.845 [DEBUG] [Thread-162544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:02.845 [DEBUG] [Thread-162544] [transport.py] [_log()] Compression: none
2025-09-29T17:28:02.845 [DEBUG] [Thread-162544] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:02.864 [DEBUG] [Thread-162544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:02.864 [DEBUG] [Thread-162544] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:02.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:28:02.865 [DEBUG] [Thread-162544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:28:02.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:02.867 [DEBUG] [Thread-162544] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:02.867 [DEBUG] [Thread-162544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:02.867 [DEBUG] [Thread-162544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:02.867 [DEBUG] [Thread-162544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:28:02.867 [DEBUG] [Thread-162544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:02.892 [INFO] [Thread-162544] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:02.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:03.574 [DEBUG] [Thread-162544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:03.575 [DEBUG] [Thread-162544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:03.575 [DEBUG] [Thread-162544] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:28:03.615 [DEBUG] [Thread-162544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:03.616 [DEBUG] [Thread-162544] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:03.619 [DEBUG] [Thread-162544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:03.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:03.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:28:03.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:28:03.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:28:03.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:03.642 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:28:03.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:03.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:03.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:28:03.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.643815 -999.00  +13.90  15.18     45   +2.20 1 1 1 1 1   887    0 11.87 -6.64 ----- 17.8 15.2 147.4 19.7 17.8 -28.6 17.8 -27.6 19.2 -27.0 19.7 -29.0
2025-09-29T17:28:03.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:28:03.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:28:03.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.643815
2025-09-29T17:28:03.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:28:03.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:28:03.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:28:03.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:28:03.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:28:03.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:27:33', tmtdew=14.06, humidity=38.2, cloud=0.0, wind=20.73, temperature=14.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:27:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:28:03.645 [DEBUG] [Thread-162544] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:03.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:28:03.743 [DEBUG] [Thread-162547] [transport.py] [_log()] starting thread (client mode): 0x2e361240
2025-09-29T17:28:03.743 [DEBUG] [Thread-162547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:03.761 [DEBUG] [Thread-162547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:28:03.761 [INFO] [Thread-162547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:28:03.768 [DEBUG] [Thread-162547] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:03.769 [DEBUG] [Thread-162547] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:03.770 [DEBUG] [Thread-162547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:03.770 [DEBUG] [Thread-162547] [transport.py] [_log()] Compression: none
2025-09-29T17:28:03.770 [DEBUG] [Thread-162547] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:03.825 [DEBUG] [Thread-162547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:03.825 [DEBUG] [Thread-162547] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:03.825 [DEBUG] [Thread-162547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:28:03.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:28:03.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:03.883 [DEBUG] [Thread-162547] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:03.883 [DEBUG] [Thread-162547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:03.883 [DEBUG] [Thread-162547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:03.883 [DEBUG] [Thread-162547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:28:03.883 [DEBUG] [Thread-162547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:03.901 [INFO] [Thread-162547] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:03.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:28:03.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:04.942 [DEBUG] [Thread-162547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:04.942 [DEBUG] [Thread-162547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:04.989 [DEBUG] [Thread-162547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:04.989 [DEBUG] [Thread-162547] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:04.998 [DEBUG] [Thread-162547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:05.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:05.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:28:05.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:28:05.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:05.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:05.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:05.034 [DEBUG] [Thread-162547] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:13.818 [DEBUG] [Thread-162549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:28:15.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:28:15.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:28:15.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:28:15.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 28, 4), 14.07, 38.18, 0.0, 19.69, 14.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:28:15.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:28:04
2025-09-29T17:28:15.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:28:15.883 [DEBUG] [Thread-162550] [transport.py] [_log()] starting thread (client mode): 0x2e38fa00
2025-09-29T17:28:15.883 [DEBUG] [Thread-162550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:15.903 [DEBUG] [Thread-162550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:28:15.904 [INFO] [Thread-162550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:15.907 [DEBUG] [Thread-162550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:15.908 [DEBUG] [Thread-162550] [transport.py] [_log()] Compression: none
2025-09-29T17:28:15.908 [DEBUG] [Thread-162550] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:15.916 [DEBUG] [Thread-162550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:15.916 [DEBUG] [Thread-162550] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:15.917 [DEBUG] [Thread-162550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:28:15.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:28:15.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:15.918 [DEBUG] [Thread-162550] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:15.918 [DEBUG] [Thread-162550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:15.918 [DEBUG] [Thread-162550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:15.919 [DEBUG] [Thread-162550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:28:15.919 [DEBUG] [Thread-162550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:15.934 [INFO] [Thread-162550] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:15.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:16.595 [DEBUG] [Thread-162550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:16.596 [DEBUG] [Thread-162550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:16.596 [DEBUG] [Thread-162550] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:28:16.636 [DEBUG] [Thread-162550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:16.636 [DEBUG] [Thread-162550] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:16.639 [DEBUG] [Thread-162550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:16.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:16.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:28:16.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:28:16.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:28:16.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:16.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:28:16.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:16.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:16.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:28:16.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.644162 -999.00  +14.00  10.92     45   +2.30 1 1 1 1 1   887    0 11.81 -7.69 ----- 11.4 10.9 147.0 20.9 17.8 -27.6 17.8 -27.1 19.1 -26.8 19.7 -29.2
2025-09-29T17:28:16.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:28:16.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:28:16.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.644162
2025-09-29T17:28:16.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:28:16.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:28:16.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:28:16.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:28:16.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:28:16.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:28:04', tmtdew=14.07, humidity=38.18, cloud=0.0, wind=19.69, temperature=14.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:27:35.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:28:16.665 [DEBUG] [Thread-162550] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:16.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:28:16.759 [DEBUG] [Thread-162553] [transport.py] [_log()] starting thread (client mode): 0x2b91ed10
2025-09-29T17:28:16.759 [DEBUG] [Thread-162553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:16.774 [DEBUG] [Thread-162553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:28:16.774 [INFO] [Thread-162553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:28:16.781 [DEBUG] [Thread-162553] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:16.781 [DEBUG] [Thread-162553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:28:16.781 [DEBUG] [Thread-162553] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] Compression: none
2025-09-29T17:28:16.782 [DEBUG] [Thread-162553] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:16.838 [DEBUG] [Thread-162553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:16.839 [DEBUG] [Thread-162553] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:16.839 [DEBUG] [Thread-162553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:28:16.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:28:16.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:16.895 [DEBUG] [Thread-162553] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:16.895 [DEBUG] [Thread-162553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:16.895 [DEBUG] [Thread-162553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:16.895 [DEBUG] [Thread-162553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:28:16.895 [DEBUG] [Thread-162553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:16.914 [INFO] [Thread-162553] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:16.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:28:16.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:17.909 [DEBUG] [Thread-162553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:17.909 [DEBUG] [Thread-162553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:17.957 [DEBUG] [Thread-162553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:17.957 [DEBUG] [Thread-162553] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:17.965 [DEBUG] [Thread-162553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:17.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:17.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:28:17.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:28:17.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:17.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:17.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:17.996 [DEBUG] [Thread-162553] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:27.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:28:27.999 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:28:28.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:28:28.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 28, 4), 14.07, 38.18, 0.0, 19.69, 14.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:28:28.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:28:04
2025-09-29T17:28:28.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:28:28.824 [DEBUG] [Thread-162555] [transport.py] [_log()] starting thread (client mode): 0x2b91e860
2025-09-29T17:28:28.824 [DEBUG] [Thread-162555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:28.845 [DEBUG] [Thread-162555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:28:28.846 [INFO] [Thread-162555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:28:28.849 [DEBUG] [Thread-162555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:28.849 [DEBUG] [Thread-162557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:28:28.850 [DEBUG] [Thread-162555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:28:28.850 [DEBUG] [Thread-162555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:28.850 [DEBUG] [Thread-162555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:28.850 [DEBUG] [Thread-162555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:28.850 [DEBUG] [Thread-162555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:28.850 [DEBUG] [Thread-162555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:28.850 [DEBUG] [Thread-162555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:28.851 [DEBUG] [Thread-162555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:28.852 [DEBUG] [Thread-162555] [transport.py] [_log()] Compression: none
2025-09-29T17:28:28.852 [DEBUG] [Thread-162555] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:28.870 [DEBUG] [Thread-162555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:28.870 [DEBUG] [Thread-162555] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:28.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:28:28.871 [DEBUG] [Thread-162555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:28:28.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:28.873 [DEBUG] [Thread-162555] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:28.873 [DEBUG] [Thread-162555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:28.873 [DEBUG] [Thread-162555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:28.873 [DEBUG] [Thread-162555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:28:28.873 [DEBUG] [Thread-162555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:28.897 [INFO] [Thread-162555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:28.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:29.555 [DEBUG] [Thread-162555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:29.556 [DEBUG] [Thread-162555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:29.556 [DEBUG] [Thread-162555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:28:29.596 [DEBUG] [Thread-162555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:29.596 [DEBUG] [Thread-162555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:29.600 [DEBUG] [Thread-162555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:29.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:29.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:28:29.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:28:29.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:28:29.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:29.624 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:28:29.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:29.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:29.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:28:29.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.644162 -999.00  +14.00  10.92     45   +2.30 1 1 1 1 1   887    0 11.81 -7.69 ----- 11.4 10.9 147.0 20.9 17.8 -27.6 17.8 -27.1 19.1 -26.8 19.7 -29.2
2025-09-29T17:28:29.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:28:29.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:28:29.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.644162
2025-09-29T17:28:29.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:28:29.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:28:29.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:28:29.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:28:29.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:28:29.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:28:04', tmtdew=14.07, humidity=38.18, cloud=0.0, wind=19.69, temperature=14.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:27:35.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:28:29.627 [DEBUG] [Thread-162555] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:29.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:28:29.724 [DEBUG] [Thread-162559] [transport.py] [_log()] starting thread (client mode): 0x2b91e9b0
2025-09-29T17:28:29.724 [DEBUG] [Thread-162559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:29.739 [DEBUG] [Thread-162559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:28:29.739 [INFO] [Thread-162559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:28:29.747 [DEBUG] [Thread-162559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] Compression: none
2025-09-29T17:28:29.748 [DEBUG] [Thread-162559] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:29.795 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:28:29.796 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:28:29.806 [DEBUG] [Thread-162559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:29.806 [DEBUG] [Thread-162559] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:29.806 [DEBUG] [Thread-162559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:28:29.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:28:29.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:29.863 [DEBUG] [Thread-162559] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:29.863 [DEBUG] [Thread-162559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:29.863 [DEBUG] [Thread-162559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:29.863 [DEBUG] [Thread-162559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:28:29.863 [DEBUG] [Thread-162559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:29.877 [INFO] [Thread-162559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:29.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:28:29.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:30.863 [DEBUG] [Thread-162559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:30.863 [DEBUG] [Thread-162559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:30.911 [DEBUG] [Thread-162559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:30.911 [DEBUG] [Thread-162559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:30.920 [DEBUG] [Thread-162559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:30.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:30.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:28:30.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:28:30.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:30.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:30.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:30.954 [DEBUG] [Thread-162559] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:40.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:28:40.949 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:28:40.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:28:41.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 28, 36), 14.05, 38.12, 0.0, 23.15, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:28:41.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:28:36
2025-09-29T17:28:41.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:28:41.779 [DEBUG] [Thread-162561] [transport.py] [_log()] starting thread (client mode): 0x2e3f9990
2025-09-29T17:28:41.779 [DEBUG] [Thread-162561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:41.796 [DEBUG] [Thread-162561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:28:41.796 [INFO] [Thread-162561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:28:41.799 [DEBUG] [Thread-162561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:41.799 [DEBUG] [Thread-162561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:28:41.799 [DEBUG] [Thread-162561] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] Compression: none
2025-09-29T17:28:41.800 [DEBUG] [Thread-162561] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:41.808 [DEBUG] [Thread-162561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:41.808 [DEBUG] [Thread-162561] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:41.809 [DEBUG] [Thread-162561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:28:41.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:28:41.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:41.810 [DEBUG] [Thread-162561] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:41.810 [DEBUG] [Thread-162561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:41.810 [DEBUG] [Thread-162561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:41.810 [DEBUG] [Thread-162561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:28:41.811 [DEBUG] [Thread-162561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:41.833 [INFO] [Thread-162561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:41.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:42.475 [DEBUG] [Thread-162561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:42.475 [DEBUG] [Thread-162561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:42.476 [DEBUG] [Thread-162561] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:28:42.517 [DEBUG] [Thread-162561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:42.517 [DEBUG] [Thread-162561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:42.520 [DEBUG] [Thread-162561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:42.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:42.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:28:42.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:28:42.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:28:42.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:42.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:28:42.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:42.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:42.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:28:42.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.644857 -999.00  +14.00  15.02     44   +2.20 1 1 1 1 1   887    0 11.70 -8.26 ----- 11.9 15.0 158.4 22.3 17.8 -27.7 17.7 -27.3 19.1 -28.1 19.6 -29.1
2025-09-29T17:28:42.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:28:42.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:28:42.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.644857
2025-09-29T17:28:42.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:28:42.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:28:42.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:28:42.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:28:42.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:28:42.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:28:36', tmtdew=14.05, humidity=38.12, cloud=0.0, wind=23.15, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:28:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:28:42.539 [DEBUG] [Thread-162561] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:42.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:28:42.625 [DEBUG] [Thread-162564] [transport.py] [_log()] starting thread (client mode): 0x2e38da20
2025-09-29T17:28:42.625 [DEBUG] [Thread-162564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:42.639 [DEBUG] [Thread-162564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:28:42.639 [INFO] [Thread-162564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:42.648 [DEBUG] [Thread-162564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:42.649 [DEBUG] [Thread-162564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:42.649 [DEBUG] [Thread-162564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:42.649 [DEBUG] [Thread-162564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:42.649 [DEBUG] [Thread-162564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:42.649 [DEBUG] [Thread-162564] [transport.py] [_log()] Compression: none
2025-09-29T17:28:42.649 [DEBUG] [Thread-162564] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:42.702 [DEBUG] [Thread-162564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:42.703 [DEBUG] [Thread-162564] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:42.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:28:42.704 [DEBUG] [Thread-162564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:28:42.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:42.759 [DEBUG] [Thread-162564] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:42.760 [DEBUG] [Thread-162564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:42.760 [DEBUG] [Thread-162564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:42.760 [DEBUG] [Thread-162564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:28:42.760 [DEBUG] [Thread-162564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:42.781 [INFO] [Thread-162564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:42.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:28:42.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:43.729 [DEBUG] [Thread-162564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:43.729 [DEBUG] [Thread-162564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:43.777 [DEBUG] [Thread-162564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:43.777 [DEBUG] [Thread-162564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:43.786 [DEBUG] [Thread-162564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:43.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:43.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:28:43.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:28:43.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:43.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:43.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:43.821 [DEBUG] [Thread-162564] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:43.892 [DEBUG] [Thread-162566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:28:50.575 [DEBUG] [Thread-162567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:28:53.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:28:53.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:28:53.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:28:54.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 28, 36), 14.05, 38.12, 0.0, 23.15, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:28:54.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:28:36
2025-09-29T17:28:54.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:28:54.667 [DEBUG] [Thread-162568] [transport.py] [_log()] starting thread (client mode): 0x2e3fb9a0
2025-09-29T17:28:54.667 [DEBUG] [Thread-162568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:54.687 [DEBUG] [Thread-162568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:28:54.687 [INFO] [Thread-162568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] Compression: none
2025-09-29T17:28:54.689 [DEBUG] [Thread-162568] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:54.708 [DEBUG] [Thread-162568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:54.709 [DEBUG] [Thread-162568] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:54.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:28:54.710 [DEBUG] [Thread-162568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:28:54.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:54.712 [DEBUG] [Thread-162568] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:54.712 [DEBUG] [Thread-162568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:54.712 [DEBUG] [Thread-162568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:54.712 [DEBUG] [Thread-162568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:28:54.712 [DEBUG] [Thread-162568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:54.736 [INFO] [Thread-162568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:54.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:55.380 [DEBUG] [Thread-162568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:55.380 [DEBUG] [Thread-162568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:55.380 [DEBUG] [Thread-162568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:28:55.421 [DEBUG] [Thread-162568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:55.421 [DEBUG] [Thread-162568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:55.423 [DEBUG] [Thread-162568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:55.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:55.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:28:55.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:28:55.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:28:55.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:55.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:28:55.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.644857 -999.00  +14.00  15.02     44   +2.20 1 1 1 1 1   887    0 11.70 -8.26 ----- 11.9 15.0 158.4 22.3 17.8 -27.7 17.7 -27.3 19.1 -28.1 19.6 -29.1
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.644857
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:28:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:28:36', tmtdew=14.05, humidity=38.12, cloud=0.0, wind=23.15, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:28:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:28:55.442 [DEBUG] [Thread-162568] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:55.515 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:28:55.525 [DEBUG] [Thread-162571] [transport.py] [_log()] starting thread (client mode): 0x2e38e740
2025-09-29T17:28:55.525 [DEBUG] [Thread-162571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:28:55.540 [DEBUG] [Thread-162571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:28:55.540 [INFO] [Thread-162571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] client lang: <none>
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] server lang: <none>
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] kex follows: False
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] Compression: none
2025-09-29T17:28:55.548 [DEBUG] [Thread-162571] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:28:55.606 [DEBUG] [Thread-162571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:28:55.606 [DEBUG] [Thread-162571] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:28:55.606 [DEBUG] [Thread-162571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:28:55.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:28:55.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:28:55.663 [DEBUG] [Thread-162571] [transport.py] [_log()] userauth is OK
2025-09-29T17:28:55.663 [DEBUG] [Thread-162571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:28:55.663 [DEBUG] [Thread-162571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:28:55.663 [DEBUG] [Thread-162571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:28:55.663 [DEBUG] [Thread-162571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:28:55.677 [INFO] [Thread-162571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:28:55.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:28:55.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:28:56.646 [DEBUG] [Thread-162571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:28:56.646 [DEBUG] [Thread-162571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:28:56.694 [DEBUG] [Thread-162571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:28:56.694 [DEBUG] [Thread-162571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:28:56.702 [DEBUG] [Thread-162571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:28:56.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:28:56.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:28:56.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:28:56.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:28:56.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:28:56.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:28:56.734 [DEBUG] [Thread-162571] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:28:58.941 [DEBUG] [Thread-162573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:29:06.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:29:06.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:29:06.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:29:07.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 28, 36), 14.05, 38.12, 0.0, 23.15, 14.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:29:07.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:28:36
2025-09-29T17:29:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:29:07.565 [DEBUG] [Thread-162574] [transport.py] [_log()] starting thread (client mode): 0x2b94e7d0
2025-09-29T17:29:07.565 [DEBUG] [Thread-162574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:07.587 [DEBUG] [Thread-162574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:29:07.587 [INFO] [Thread-162574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:29:07.590 [DEBUG] [Thread-162574] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:07.590 [DEBUG] [Thread-162574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:29:07.590 [DEBUG] [Thread-162574] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:07.590 [DEBUG] [Thread-162574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] Compression: none
2025-09-29T17:29:07.591 [DEBUG] [Thread-162574] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:07.606 [DEBUG] [Thread-162574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:07.607 [DEBUG] [Thread-162574] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:07.607 [DEBUG] [Thread-162574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:29:07.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:29:07.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:07.608 [DEBUG] [Thread-162574] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:07.608 [DEBUG] [Thread-162574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:07.608 [DEBUG] [Thread-162574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:07.608 [DEBUG] [Thread-162574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:29:07.608 [DEBUG] [Thread-162574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:07.620 [INFO] [Thread-162574] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:07.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:29:08.277 [DEBUG] [Thread-162574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:29:08.277 [DEBUG] [Thread-162574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:29:08.278 [DEBUG] [Thread-162574] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:29:08.318 [DEBUG] [Thread-162574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:29:08.319 [DEBUG] [Thread-162574] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:29:08.322 [DEBUG] [Thread-162574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:29:08.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:29:08.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:29:08.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:29:08.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:29:08.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:29:08.344 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:29:08.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:29:08.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:29:08.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:29:08.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.644857 -999.00  +14.00  15.02     44   +2.20 1 1 1 1 1   887    0 11.70 -8.26 ----- 11.9 15.0 158.4 22.3 17.8 -27.7 17.7 -27.3 19.1 -28.1 19.6 -29.1
2025-09-29T17:29:08.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:29:08.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:29:08.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.644857
2025-09-29T17:29:08.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:29:08.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:29:08.346 [DEBUG] [Thread-162574] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:29:08.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:29:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:29:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:29:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:28:36', tmtdew=14.05, humidity=38.12, cloud=0.0, wind=23.15, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:28:35.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:29:08.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:29:08.444 [DEBUG] [Thread-162577] [transport.py] [_log()] starting thread (client mode): 0x2e3faf50
2025-09-29T17:29:08.444 [DEBUG] [Thread-162577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:08.458 [DEBUG] [Thread-162577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:29:08.459 [INFO] [Thread-162577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:08.466 [DEBUG] [Thread-162577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] Compression: none
2025-09-29T17:29:08.467 [DEBUG] [Thread-162577] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:08.522 [DEBUG] [Thread-162577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:08.523 [DEBUG] [Thread-162577] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:08.523 [DEBUG] [Thread-162577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:29:08.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:29:08.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:08.579 [DEBUG] [Thread-162577] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:08.580 [DEBUG] [Thread-162577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:08.580 [DEBUG] [Thread-162577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:08.580 [DEBUG] [Thread-162577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:29:08.580 [DEBUG] [Thread-162577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:08.599 [INFO] [Thread-162577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:08.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:29:08.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:29:09.550 [DEBUG] [Thread-162577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:29:09.550 [DEBUG] [Thread-162577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:29:09.598 [DEBUG] [Thread-162577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:29:09.598 [DEBUG] [Thread-162577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:29:09.606 [DEBUG] [Thread-162577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:29:09.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:29:09.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:29:09.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:29:09.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:29:09.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:29:09.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:29:09.638 [DEBUG] [Thread-162577] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:29:13.964 [DEBUG] [Thread-162579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:29:19.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:29:19.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:29:19.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:29:20.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 29, 8), 14.0, 38.2, 0.0, 21.46, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:29:20.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:29:08
2025-09-29T17:29:20.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:29:20.476 [DEBUG] [Thread-162580] [transport.py] [_log()] starting thread (client mode): 0x2b9f1870
2025-09-29T17:29:20.476 [DEBUG] [Thread-162580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:20.497 [DEBUG] [Thread-162580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:29:20.497 [INFO] [Thread-162580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:29:20.499 [DEBUG] [Thread-162580] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:20.499 [DEBUG] [Thread-162580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:29:20.499 [DEBUG] [Thread-162580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:20.499 [DEBUG] [Thread-162580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:20.499 [DEBUG] [Thread-162580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:20.499 [DEBUG] [Thread-162580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] Compression: none
2025-09-29T17:29:20.500 [DEBUG] [Thread-162580] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:20.513 [DEBUG] [Thread-162580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:20.513 [DEBUG] [Thread-162580] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:20.514 [DEBUG] [Thread-162580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:29:20.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:29:20.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:20.516 [DEBUG] [Thread-162580] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:20.516 [DEBUG] [Thread-162580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:20.516 [DEBUG] [Thread-162580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:20.516 [DEBUG] [Thread-162580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:29:20.516 [DEBUG] [Thread-162580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:20.550 [INFO] [Thread-162580] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:20.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:29:21.211 [DEBUG] [Thread-162580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:29:21.212 [DEBUG] [Thread-162580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:29:21.212 [DEBUG] [Thread-162580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:29:21.252 [DEBUG] [Thread-162580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:29:21.253 [DEBUG] [Thread-162580] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:29:21.257 [DEBUG] [Thread-162580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:29:21.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:29:21.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:29:21.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:29:21.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:29:21.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:29:21.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:29:21.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:29:21.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:29:21.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:29:21.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.645204 -999.00  +14.00  15.52     44   +2.20 1 1 1 1 1   887    0 11.90 -7.69 ----- 19.0 15.5 167.4 27.8 17.7 -28.3 17.6 -27.0 19.1 -27.3 19.7 -29.3
2025-09-29T17:29:21.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:29:21.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:29:21.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.645204
2025-09-29T17:29:21.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:29:21.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:29:21.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:29:21.279 [DEBUG] [Thread-162580] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:29:21.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:29:21.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:29:21.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:29:08', tmtdew=14.0, humidity=38.2, cloud=0.0, wind=21.46, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:29:05.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:29:21.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:29:21.372 [DEBUG] [Thread-162583] [transport.py] [_log()] starting thread (client mode): 0x2b9f3c70
2025-09-29T17:29:21.372 [DEBUG] [Thread-162583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:21.386 [DEBUG] [Thread-162583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:29:21.386 [INFO] [Thread-162583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:21.394 [DEBUG] [Thread-162583] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:21.395 [DEBUG] [Thread-162583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:21.395 [DEBUG] [Thread-162583] [transport.py] [_log()] Compression: none
2025-09-29T17:29:21.395 [DEBUG] [Thread-162583] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:21.451 [DEBUG] [Thread-162583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:21.452 [DEBUG] [Thread-162583] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:21.452 [DEBUG] [Thread-162583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:29:21.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:29:21.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:21.507 [DEBUG] [Thread-162583] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:21.508 [DEBUG] [Thread-162583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:21.508 [DEBUG] [Thread-162583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:21.508 [DEBUG] [Thread-162583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:29:21.508 [DEBUG] [Thread-162583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:21.530 [INFO] [Thread-162583] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:21.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:29:21.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:29:22.508 [DEBUG] [Thread-162583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:29:22.508 [DEBUG] [Thread-162583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:29:22.556 [DEBUG] [Thread-162583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:29:22.556 [DEBUG] [Thread-162583] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:29:22.565 [DEBUG] [Thread-162583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:29:22.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:29:22.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:29:22.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:29:22.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:29:22.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:29:22.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:29:22.600 [DEBUG] [Thread-162583] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:29:28.989 [DEBUG] [Thread-162585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:29:29.932 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:29:29.933 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:29:32.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:29:32.599 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:29:32.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:29:33.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 29, 8), 14.0, 38.2, 0.0, 21.46, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:29:33.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:29:08
2025-09-29T17:29:33.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:29:33.480 [DEBUG] [Thread-162586] [transport.py] [_log()] starting thread (client mode): 0x2b9f05b0
2025-09-29T17:29:33.480 [DEBUG] [Thread-162586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:33.500 [DEBUG] [Thread-162586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:29:33.500 [INFO] [Thread-162586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:33.503 [DEBUG] [Thread-162586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:33.504 [DEBUG] [Thread-162586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:33.504 [DEBUG] [Thread-162586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:33.504 [DEBUG] [Thread-162586] [transport.py] [_log()] Compression: none
2025-09-29T17:29:33.504 [DEBUG] [Thread-162586] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:33.520 [DEBUG] [Thread-162586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:33.520 [DEBUG] [Thread-162586] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:33.520 [DEBUG] [Thread-162586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:29:33.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:29:33.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:33.521 [DEBUG] [Thread-162586] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:33.521 [DEBUG] [Thread-162586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:33.521 [DEBUG] [Thread-162586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:33.521 [DEBUG] [Thread-162586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:29:33.521 [DEBUG] [Thread-162586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:33.548 [INFO] [Thread-162586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:33.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:29:34.205 [DEBUG] [Thread-162586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:29:34.205 [DEBUG] [Thread-162586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:29:34.205 [DEBUG] [Thread-162586] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:29:34.246 [DEBUG] [Thread-162586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:29:34.246 [DEBUG] [Thread-162586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:29:34.248 [DEBUG] [Thread-162586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:29:34.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:29:34.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:29:34.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:29:34.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:29:34.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:29:34.263 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:29:34.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:29:34.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:29:34.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.645204 -999.00  +14.00  15.52     44   +2.20 1 1 1 1 1   887    0 11.90 -7.69 ----- 19.0 15.5 167.4 27.8 17.7 -28.3 17.6 -27.0 19.1 -27.3 19.7 -29.3
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.645204
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:29:34.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:29:08', tmtdew=14.0, humidity=38.2, cloud=0.0, wind=21.46, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:29:05.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:29:34.264 [DEBUG] [Thread-162586] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:29:34.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:29:34.350 [DEBUG] [Thread-162589] [transport.py] [_log()] starting thread (client mode): 0x2b9cc220
2025-09-29T17:29:34.350 [DEBUG] [Thread-162589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:34.365 [DEBUG] [Thread-162589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:29:34.365 [INFO] [Thread-162589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:29:34.372 [DEBUG] [Thread-162589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:34.372 [DEBUG] [Thread-162589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:29:34.372 [DEBUG] [Thread-162589] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:34.372 [DEBUG] [Thread-162589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] Compression: none
2025-09-29T17:29:34.373 [DEBUG] [Thread-162589] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:34.430 [DEBUG] [Thread-162589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:34.430 [DEBUG] [Thread-162589] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:34.430 [DEBUG] [Thread-162589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:29:34.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:29:34.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:34.487 [DEBUG] [Thread-162589] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:34.487 [DEBUG] [Thread-162589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:34.487 [DEBUG] [Thread-162589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:34.487 [DEBUG] [Thread-162589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:29:34.487 [DEBUG] [Thread-162589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:34.501 [INFO] [Thread-162589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:34.501 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:29:34.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:29:35.509 [DEBUG] [Thread-162589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:29:35.510 [DEBUG] [Thread-162589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:29:35.558 [DEBUG] [Thread-162589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:29:35.558 [DEBUG] [Thread-162589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:29:35.567 [DEBUG] [Thread-162589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:29:35.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:29:35.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:29:35.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:29:35.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:29:35.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:29:35.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:29:35.603 [DEBUG] [Thread-162589] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:29:44.032 [DEBUG] [Thread-162591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:29:45.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:29:45.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:29:45.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:29:46.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 29, 40), 14.03, 38.25, 0.0, 20.22, 14.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:29:46.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:29:40
2025-09-29T17:29:46.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:29:46.449 [DEBUG] [Thread-162592] [transport.py] [_log()] starting thread (client mode): 0x2b9f3340
2025-09-29T17:29:46.449 [DEBUG] [Thread-162592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:46.469 [DEBUG] [Thread-162592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:29:46.469 [INFO] [Thread-162592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] Compression: none
2025-09-29T17:29:46.471 [DEBUG] [Thread-162592] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:46.492 [DEBUG] [Thread-162592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:46.492 [DEBUG] [Thread-162592] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:46.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:29:46.493 [DEBUG] [Thread-162592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:29:46.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:46.495 [DEBUG] [Thread-162592] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:46.495 [DEBUG] [Thread-162592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:46.495 [DEBUG] [Thread-162592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:46.495 [DEBUG] [Thread-162592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:29:46.495 [DEBUG] [Thread-162592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:46.519 [INFO] [Thread-162592] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:46.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:29:47.140 [DEBUG] [Thread-162592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:29:47.140 [DEBUG] [Thread-162592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:29:47.140 [DEBUG] [Thread-162592] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:29:47.181 [DEBUG] [Thread-162592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:29:47.181 [DEBUG] [Thread-162592] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:29:47.185 [DEBUG] [Thread-162592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:29:47.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:29:47.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:29:47.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:29:47.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:29:47.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:29:47.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:29:47.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:29:47.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:29:47.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:29:47.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.645551 -999.00  +14.00  14.80     44   +2.20 1 1 1 1 1   887    0 11.71 -8.06 ----- 10.9 14.8 147.4 22.2 17.7 -27.9 17.6 -26.7 19.0 -27.4 19.6 -29.0
2025-09-29T17:29:47.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:29:47.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:29:47.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.645551
2025-09-29T17:29:47.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:29:47.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:29:47.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:29:47.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:29:47.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:29:47.211 [DEBUG] [Thread-162592] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:29:47.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:29:40', tmtdew=14.03, humidity=38.25, cloud=0.0, wind=20.22, temperature=14.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:29:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:29:47.308 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:29:47.319 [DEBUG] [Thread-162595] [transport.py] [_log()] starting thread (client mode): 0x2b9f0d60
2025-09-29T17:29:47.319 [DEBUG] [Thread-162595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:47.334 [DEBUG] [Thread-162595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:29:47.334 [INFO] [Thread-162595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:29:47.341 [DEBUG] [Thread-162595] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:47.341 [DEBUG] [Thread-162595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:29:47.341 [DEBUG] [Thread-162595] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:47.341 [DEBUG] [Thread-162595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:47.341 [DEBUG] [Thread-162595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:47.341 [DEBUG] [Thread-162595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:47.341 [DEBUG] [Thread-162595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] Compression: none
2025-09-29T17:29:47.342 [DEBUG] [Thread-162595] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:47.399 [DEBUG] [Thread-162595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:47.400 [DEBUG] [Thread-162595] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:47.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:29:47.401 [DEBUG] [Thread-162595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:29:47.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:47.456 [DEBUG] [Thread-162595] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:47.456 [DEBUG] [Thread-162595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:47.456 [DEBUG] [Thread-162595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:47.456 [DEBUG] [Thread-162595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:29:47.456 [DEBUG] [Thread-162595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:47.475 [INFO] [Thread-162595] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:47.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:29:47.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:29:48.413 [DEBUG] [Thread-162595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:29:48.413 [DEBUG] [Thread-162595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:29:48.462 [DEBUG] [Thread-162595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:29:48.462 [DEBUG] [Thread-162595] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:29:48.470 [DEBUG] [Thread-162595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:29:48.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:29:48.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:29:48.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:29:48.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:29:48.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:29:48.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:29:48.505 [DEBUG] [Thread-162595] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:29:50.618 [DEBUG] [Thread-162597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:29:58.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:29:58.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:29:58.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:29:59.061 [DEBUG] [Thread-162598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:29:59.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 29, 40), 14.03, 38.25, 0.0, 20.22, 14.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:29:59.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:29:40
2025-09-29T17:29:59.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:29:59.341 [DEBUG] [Thread-162599] [transport.py] [_log()] starting thread (client mode): 0x2e3f8130
2025-09-29T17:29:59.341 [DEBUG] [Thread-162599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:29:59.366 [DEBUG] [Thread-162599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:29:59.367 [INFO] [Thread-162599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:29:59.370 [DEBUG] [Thread-162599] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] client lang: <none>
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] server lang: <none>
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] kex follows: False
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:29:59.376 [DEBUG] [Thread-162599] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:29:59.377 [DEBUG] [Thread-162599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:29:59.377 [DEBUG] [Thread-162599] [transport.py] [_log()] Compression: none
2025-09-29T17:29:59.377 [DEBUG] [Thread-162599] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:29:59.395 [DEBUG] [Thread-162599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:29:59.396 [DEBUG] [Thread-162599] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:29:59.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:29:59.397 [DEBUG] [Thread-162599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:29:59.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:29:59.398 [DEBUG] [Thread-162599] [transport.py] [_log()] userauth is OK
2025-09-29T17:29:59.399 [DEBUG] [Thread-162599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:29:59.399 [DEBUG] [Thread-162599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:29:59.399 [DEBUG] [Thread-162599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:29:59.399 [DEBUG] [Thread-162599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:29:59.423 [INFO] [Thread-162599] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:29:59.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:00.098 [DEBUG] [Thread-162599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:00.098 [DEBUG] [Thread-162599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:00.098 [DEBUG] [Thread-162599] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:30:00.139 [DEBUG] [Thread-162599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:00.139 [DEBUG] [Thread-162599] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:00.142 [DEBUG] [Thread-162599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:00.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:00.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:30:00.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:30:00.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:30:00.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:00.165 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:30:00.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:00.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:00.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:30:00.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.645551 -999.00  +14.00  14.80     44   +2.20 1 1 1 1 1   887    0 11.71 -8.06 ----- 10.9 14.8 147.4 22.2 17.7 -27.9 17.6 -26.7 19.0 -27.4 19.6 -29.0
2025-09-29T17:30:00.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:30:00.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:30:00.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.645551
2025-09-29T17:30:00.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:30:00.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:30:00.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:30:00.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:30:00.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:30:00.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:29:40', tmtdew=14.03, humidity=38.25, cloud=0.0, wind=20.22, temperature=14.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:29:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:30:00.167 [DEBUG] [Thread-162599] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:00.252 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:30:00.261 [DEBUG] [Thread-162602] [transport.py] [_log()] starting thread (client mode): 0x2b9f08b0
2025-09-29T17:30:00.261 [DEBUG] [Thread-162602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:00.276 [DEBUG] [Thread-162602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:30:00.276 [INFO] [Thread-162602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] Compression: none
2025-09-29T17:30:00.284 [DEBUG] [Thread-162602] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:00.343 [DEBUG] [Thread-162602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:00.344 [DEBUG] [Thread-162602] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:00.344 [DEBUG] [Thread-162602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:30:00.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:30:00.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:00.403 [DEBUG] [Thread-162602] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:00.403 [DEBUG] [Thread-162602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:00.403 [DEBUG] [Thread-162602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:00.403 [DEBUG] [Thread-162602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:30:00.403 [DEBUG] [Thread-162602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:00.427 [INFO] [Thread-162602] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:00.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:30:00.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:01.373 [DEBUG] [Thread-162602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:01.373 [DEBUG] [Thread-162602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:01.421 [DEBUG] [Thread-162602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:01.421 [DEBUG] [Thread-162602] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:01.430 [DEBUG] [Thread-162602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:01.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:01.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:30:01.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:30:01.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:01.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:01.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:01.465 [DEBUG] [Thread-162602] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:30:11.462 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:30:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:30:12.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 29, 40), 14.03, 38.25, 0.0, 20.22, 14.26, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:30:12.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:29:40
2025-09-29T17:30:12.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:30:12.313 [DEBUG] [Thread-162604] [transport.py] [_log()] starting thread (client mode): 0x2e3deb60
2025-09-29T17:30:12.313 [DEBUG] [Thread-162604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:12.332 [DEBUG] [Thread-162604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:30:12.332 [INFO] [Thread-162604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:12.335 [DEBUG] [Thread-162604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:12.336 [DEBUG] [Thread-162604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:12.336 [DEBUG] [Thread-162604] [transport.py] [_log()] Compression: none
2025-09-29T17:30:12.336 [DEBUG] [Thread-162604] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:12.347 [DEBUG] [Thread-162604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:12.347 [DEBUG] [Thread-162604] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:12.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:30:12.347 [DEBUG] [Thread-162604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:30:12.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:12.348 [DEBUG] [Thread-162604] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:12.349 [DEBUG] [Thread-162604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:12.349 [DEBUG] [Thread-162604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:12.349 [DEBUG] [Thread-162604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:30:12.349 [DEBUG] [Thread-162604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:12.358 [INFO] [Thread-162604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:12.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:13.043 [DEBUG] [Thread-162604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:13.043 [DEBUG] [Thread-162604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:13.043 [DEBUG] [Thread-162604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:30:13.084 [DEBUG] [Thread-162604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:13.084 [DEBUG] [Thread-162604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:13.087 [DEBUG] [Thread-162604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:13.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:13.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:30:13.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:30:13.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:30:13.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:13.104 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:30:13.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:13.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:13.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:30:13.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.645551 -999.00  +14.00  14.80     44   +2.20 1 1 1 1 1   887    0 11.71 -8.06 ----- 10.9 14.8 147.4 22.2 17.7 -27.9 17.6 -26.7 19.0 -27.4 19.6 -29.0
2025-09-29T17:30:13.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:30:13.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:30:13.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.645551
2025-09-29T17:30:13.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:30:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:30:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:30:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:30:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:30:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:29:40', tmtdew=14.03, humidity=38.25, cloud=0.0, wind=20.22, temperature=14.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:29:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:30:13.106 [DEBUG] [Thread-162604] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:13.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:30:13.191 [DEBUG] [Thread-162607] [transport.py] [_log()] starting thread (client mode): 0x2e38caf0
2025-09-29T17:30:13.191 [DEBUG] [Thread-162607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:13.206 [DEBUG] [Thread-162607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:30:13.206 [INFO] [Thread-162607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] Compression: none
2025-09-29T17:30:13.214 [DEBUG] [Thread-162607] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:13.270 [DEBUG] [Thread-162607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:13.270 [DEBUG] [Thread-162607] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:13.271 [DEBUG] [Thread-162607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:30:13.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:30:13.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:13.327 [DEBUG] [Thread-162607] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:13.328 [DEBUG] [Thread-162607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:13.328 [DEBUG] [Thread-162607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:13.328 [DEBUG] [Thread-162607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:30:13.328 [DEBUG] [Thread-162607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:13.345 [INFO] [Thread-162607] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:13.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:30:13.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:14.109 [DEBUG] [Thread-162609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:30:14.319 [DEBUG] [Thread-162607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:14.319 [DEBUG] [Thread-162607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:14.367 [DEBUG] [Thread-162607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:14.367 [DEBUG] [Thread-162607] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:14.375 [DEBUG] [Thread-162607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:14.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:14.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:30:14.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:30:14.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:14.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:14.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:14.406 [DEBUG] [Thread-162607] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:24.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:30:24.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:30:24.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:30:24.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 30, 12), 13.95, 38.45, 0.0, 18.47, 14.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:30:24.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:30:12
2025-09-29T17:30:25.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:30:25.241 [DEBUG] [Thread-162610] [transport.py] [_log()] starting thread (client mode): 0x2e3fa140
2025-09-29T17:30:25.241 [DEBUG] [Thread-162610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:25.258 [DEBUG] [Thread-162610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:30:25.258 [INFO] [Thread-162610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] Compression: none
2025-09-29T17:30:25.260 [DEBUG] [Thread-162610] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:25.268 [DEBUG] [Thread-162610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:25.269 [DEBUG] [Thread-162610] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:25.269 [DEBUG] [Thread-162610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:30:25.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:30:25.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:25.270 [DEBUG] [Thread-162610] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:25.270 [DEBUG] [Thread-162610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:25.270 [DEBUG] [Thread-162610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:25.270 [DEBUG] [Thread-162610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:30:25.271 [DEBUG] [Thread-162610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:25.285 [INFO] [Thread-162610] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:25.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:25.958 [DEBUG] [Thread-162610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:25.959 [DEBUG] [Thread-162610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:25.959 [DEBUG] [Thread-162610] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:30:25.999 [DEBUG] [Thread-162610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:25.999 [DEBUG] [Thread-162610] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:26.003 [DEBUG] [Thread-162610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:26.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:26.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:30:26.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:30:26.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:30:26.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:26.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:30:26.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:26.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:26.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:30:26.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.645898 -999.00  +13.90  15.76     45   +2.20 1 1 1 1 1   887    0 11.66 -7.82 ----- 14.6 15.8 145.2 19.4 17.7 -27.7 17.6 -27.1 19.0 -27.3 19.5 -28.6
2025-09-29T17:30:26.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:30:26.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:30:26.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.645898
2025-09-29T17:30:26.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:30:26.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:30:26.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:30:26.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:30:26.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:30:26.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:30:12', tmtdew=13.95, humidity=38.45, cloud=0.0, wind=18.47, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:30:05.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:30:26.027 [DEBUG] [Thread-162610] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:26.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:30:26.128 [DEBUG] [Thread-162613] [transport.py] [_log()] starting thread (client mode): 0x2b9cc940
2025-09-29T17:30:26.128 [DEBUG] [Thread-162613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:26.145 [DEBUG] [Thread-162613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:30:26.145 [INFO] [Thread-162613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:30:26.153 [DEBUG] [Thread-162613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:26.153 [DEBUG] [Thread-162613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:30:26.153 [DEBUG] [Thread-162613] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] Compression: none
2025-09-29T17:30:26.154 [DEBUG] [Thread-162613] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:26.211 [DEBUG] [Thread-162613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:26.211 [DEBUG] [Thread-162613] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:26.211 [DEBUG] [Thread-162613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:30:26.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:30:26.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:26.268 [DEBUG] [Thread-162613] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:26.268 [DEBUG] [Thread-162613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:26.268 [DEBUG] [Thread-162613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:26.268 [DEBUG] [Thread-162613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:30:26.268 [DEBUG] [Thread-162613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:26.283 [INFO] [Thread-162613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:26.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:30:26.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:27.326 [DEBUG] [Thread-162613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:27.326 [DEBUG] [Thread-162613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:27.374 [DEBUG] [Thread-162613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:27.374 [DEBUG] [Thread-162613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:27.383 [DEBUG] [Thread-162613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:27.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:27.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:30:27.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:30:27.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:27.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:27.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:27.417 [DEBUG] [Thread-162613] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:29.136 [DEBUG] [Thread-162615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:30:30.073 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:30:30.074 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:30:37.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:30:37.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:30:37.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:30:37.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 30, 12), 13.95, 38.45, 0.0, 18.47, 14.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:30:37.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:30:12
2025-09-29T17:30:38.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:30:38.247 [DEBUG] [Thread-162616] [transport.py] [_log()] starting thread (client mode): 0x2b9f3340
2025-09-29T17:30:38.247 [DEBUG] [Thread-162616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:38.266 [DEBUG] [Thread-162616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:30:38.266 [INFO] [Thread-162616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] Compression: none
2025-09-29T17:30:38.270 [DEBUG] [Thread-162616] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:38.288 [DEBUG] [Thread-162616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:38.288 [DEBUG] [Thread-162616] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:38.289 [DEBUG] [Thread-162616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:30:38.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:30:38.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:38.291 [DEBUG] [Thread-162616] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:38.291 [DEBUG] [Thread-162616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:38.291 [DEBUG] [Thread-162616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:38.291 [DEBUG] [Thread-162616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:30:38.291 [DEBUG] [Thread-162616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:38.306 [INFO] [Thread-162616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:38.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:39.339 [DEBUG] [Thread-162616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:39.339 [DEBUG] [Thread-162616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:39.340 [DEBUG] [Thread-162616] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:30:39.380 [DEBUG] [Thread-162616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:39.380 [DEBUG] [Thread-162616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:39.383 [DEBUG] [Thread-162616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:39.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:39.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:30:39.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:30:39.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:30:39.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:39.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:30:39.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:39.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:39.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:30:39.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.645898 -999.00  +13.90  15.76     45   +2.20 1 1 1 1 1   887    0 11.66 -7.82 ----- 14.6 15.8 145.2 19.4 17.7 -27.7 17.6 -27.1 19.0 -27.3 19.5 -28.6
2025-09-29T17:30:39.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:30:39.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:30:39.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.645898
2025-09-29T17:30:39.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:30:39.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:30:39.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:30:39.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:30:39.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:30:39.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:30:12', tmtdew=13.95, humidity=38.45, cloud=0.0, wind=18.47, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:30:05.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:30:39.416 [DEBUG] [Thread-162616] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:39.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:30:39.503 [DEBUG] [Thread-162619] [transport.py] [_log()] starting thread (client mode): 0x2b9ce3e0
2025-09-29T17:30:39.503 [DEBUG] [Thread-162619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:39.517 [DEBUG] [Thread-162619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:30:39.518 [INFO] [Thread-162619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:30:39.525 [DEBUG] [Thread-162619] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:39.525 [DEBUG] [Thread-162619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] Compression: none
2025-09-29T17:30:39.526 [DEBUG] [Thread-162619] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:39.584 [DEBUG] [Thread-162619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:39.584 [DEBUG] [Thread-162619] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:39.585 [DEBUG] [Thread-162619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:30:39.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:30:39.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:39.640 [DEBUG] [Thread-162619] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:39.641 [DEBUG] [Thread-162619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:39.641 [DEBUG] [Thread-162619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:39.641 [DEBUG] [Thread-162619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:30:39.641 [DEBUG] [Thread-162619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:39.660 [INFO] [Thread-162619] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:39.660 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:30:39.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:40.649 [DEBUG] [Thread-162619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:40.650 [DEBUG] [Thread-162619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:40.697 [DEBUG] [Thread-162619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:40.697 [DEBUG] [Thread-162619] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:40.706 [DEBUG] [Thread-162619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:40.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:40.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:30:40.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:30:40.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:40.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:40.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:40.739 [DEBUG] [Thread-162619] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:44.189 [DEBUG] [Thread-162621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:30:50.645 [DEBUG] [Thread-162622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:30:50.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:30:50.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:30:50.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:30:51.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 30, 44), 13.85, 38.93, 0.0, 20.01, 14.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:30:51.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:30:44
2025-09-29T17:30:51.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:30:51.609 [DEBUG] [Thread-162623] [transport.py] [_log()] starting thread (client mode): 0x2b9f3100
2025-09-29T17:30:51.609 [DEBUG] [Thread-162623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:51.629 [DEBUG] [Thread-162623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:30:51.629 [INFO] [Thread-162623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] Compression: none
2025-09-29T17:30:51.636 [DEBUG] [Thread-162623] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:51.648 [DEBUG] [Thread-162623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:51.648 [DEBUG] [Thread-162623] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:51.648 [DEBUG] [Thread-162623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:30:51.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:30:51.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:51.649 [DEBUG] [Thread-162623] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:51.649 [DEBUG] [Thread-162623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:51.649 [DEBUG] [Thread-162623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:51.649 [DEBUG] [Thread-162623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:30:51.649 [DEBUG] [Thread-162623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:51.664 [INFO] [Thread-162623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:51.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:52.390 [DEBUG] [Thread-162623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:52.390 [DEBUG] [Thread-162623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:52.390 [DEBUG] [Thread-162623] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:30:52.431 [DEBUG] [Thread-162623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:52.431 [DEBUG] [Thread-162623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:52.433 [DEBUG] [Thread-162623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:52.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:52.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:30:52.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:30:52.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:30:52.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:52.447 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:30:52.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:52.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:52.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:30:52.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.646246 -999.00  +14.00  13.35     45   +2.20 1 1 1 1 1   887    0 11.67 -8.60 ----- 18.3 13.3 150.2 21.5 17.7 -27.4 17.6 -26.7 18.9 -27.2 19.5 -28.5
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.646246
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:30:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:30:44', tmtdew=13.85, humidity=38.93, cloud=0.0, wind=20.01, temperature=14.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:30:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:30:52.448 [DEBUG] [Thread-162623] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:52.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:30:52.530 [DEBUG] [Thread-162626] [transport.py] [_log()] starting thread (client mode): 0x2e38d6f0
2025-09-29T17:30:52.530 [DEBUG] [Thread-162626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:30:52.545 [DEBUG] [Thread-162626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:30:52.545 [INFO] [Thread-162626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] client lang: <none>
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] server lang: <none>
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] kex follows: False
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] Compression: none
2025-09-29T17:30:52.553 [DEBUG] [Thread-162626] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:30:52.615 [DEBUG] [Thread-162626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:30:52.615 [DEBUG] [Thread-162626] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:30:52.616 [DEBUG] [Thread-162626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:30:52.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:30:52.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:30:52.672 [DEBUG] [Thread-162626] [transport.py] [_log()] userauth is OK
2025-09-29T17:30:52.672 [DEBUG] [Thread-162626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:30:52.672 [DEBUG] [Thread-162626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:30:52.672 [DEBUG] [Thread-162626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:30:52.672 [DEBUG] [Thread-162626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:30:52.688 [INFO] [Thread-162626] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:30:52.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:30:52.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:30:53.687 [DEBUG] [Thread-162626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:30:53.688 [DEBUG] [Thread-162626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:30:53.736 [DEBUG] [Thread-162626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:30:53.736 [DEBUG] [Thread-162626] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:30:53.744 [DEBUG] [Thread-162626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:30:53.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:30:53.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:30:53.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:30:53.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:30:53.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:30:53.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:30:53.775 [DEBUG] [Thread-162626] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:30:59.218 [DEBUG] [Thread-162628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:31:03.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:31:03.778 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:31:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:31:04.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 30, 44), 13.85, 38.93, 0.0, 20.01, 14.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:31:04.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:30:44
2025-09-29T17:31:04.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:31:04.647 [DEBUG] [Thread-162629] [transport.py] [_log()] starting thread (client mode): 0x2e38dd50
2025-09-29T17:31:04.647 [DEBUG] [Thread-162629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:04.668 [DEBUG] [Thread-162629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:31:04.668 [INFO] [Thread-162629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:31:04.671 [DEBUG] [Thread-162629] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:04.671 [DEBUG] [Thread-162629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:04.672 [DEBUG] [Thread-162629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:04.673 [DEBUG] [Thread-162629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:04.673 [DEBUG] [Thread-162629] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:04.673 [DEBUG] [Thread-162629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:04.673 [DEBUG] [Thread-162629] [transport.py] [_log()] Compression: none
2025-09-29T17:31:04.673 [DEBUG] [Thread-162629] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:04.687 [DEBUG] [Thread-162629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:04.688 [DEBUG] [Thread-162629] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:04.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:31:04.690 [DEBUG] [Thread-162629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:31:04.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:04.691 [DEBUG] [Thread-162629] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:04.692 [DEBUG] [Thread-162629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:04.692 [DEBUG] [Thread-162629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:04.692 [DEBUG] [Thread-162629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:31:04.692 [DEBUG] [Thread-162629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:04.708 [INFO] [Thread-162629] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:04.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:05.323 [DEBUG] [Thread-162629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:05.323 [DEBUG] [Thread-162629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:05.323 [DEBUG] [Thread-162629] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:31:05.364 [DEBUG] [Thread-162629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:05.364 [DEBUG] [Thread-162629] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:05.366 [DEBUG] [Thread-162629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:05.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:05.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:31:05.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:31:05.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:31:05.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:05.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:31:05.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:05.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:05.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:31:05.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.646246 -999.00  +14.00  13.35     45   +2.20 1 1 1 1 1   887    0 11.67 -8.60 ----- 18.3 13.3 150.2 21.5 17.7 -27.4 17.6 -26.7 18.9 -27.2 19.5 -28.5
2025-09-29T17:31:05.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:31:05.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:31:05.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.646246
2025-09-29T17:31:05.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:31:05.386 [DEBUG] [Thread-162629] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:05.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:31:05.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:31:05.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:31:05.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:31:05.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:30:44', tmtdew=13.85, humidity=38.93, cloud=0.0, wind=20.01, temperature=14.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:30:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:31:05.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:31:05.481 [DEBUG] [Thread-162632] [transport.py] [_log()] starting thread (client mode): 0x2e38d180
2025-09-29T17:31:05.481 [DEBUG] [Thread-162632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:05.495 [DEBUG] [Thread-162632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:31:05.496 [INFO] [Thread-162632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:31:05.503 [DEBUG] [Thread-162632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:05.503 [DEBUG] [Thread-162632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:31:05.503 [DEBUG] [Thread-162632] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:05.504 [DEBUG] [Thread-162632] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:05.505 [DEBUG] [Thread-162632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:05.505 [DEBUG] [Thread-162632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:05.505 [DEBUG] [Thread-162632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:05.505 [DEBUG] [Thread-162632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:05.505 [DEBUG] [Thread-162632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:05.505 [DEBUG] [Thread-162632] [transport.py] [_log()] Compression: none
2025-09-29T17:31:05.505 [DEBUG] [Thread-162632] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:05.564 [DEBUG] [Thread-162632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:05.564 [DEBUG] [Thread-162632] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:05.565 [DEBUG] [Thread-162632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:31:05.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:31:05.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:05.621 [DEBUG] [Thread-162632] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:05.621 [DEBUG] [Thread-162632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:05.621 [DEBUG] [Thread-162632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:05.621 [DEBUG] [Thread-162632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:31:05.621 [DEBUG] [Thread-162632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:05.643 [INFO] [Thread-162632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:05.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:31:05.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:06.632 [DEBUG] [Thread-162632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:06.633 [DEBUG] [Thread-162632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:06.680 [DEBUG] [Thread-162632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:06.680 [DEBUG] [Thread-162632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:06.689 [DEBUG] [Thread-162632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:06.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:06.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:31:06.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:31:06.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:06.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:06.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:06.724 [DEBUG] [Thread-162632] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:14.261 [DEBUG] [Thread-162634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:31:16.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:31:16.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:31:16.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:31:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 30, 44), 13.85, 38.93, 0.0, 20.01, 14.14, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:31:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:30:44
2025-09-29T17:31:17.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:31:17.617 [DEBUG] [Thread-162635] [transport.py] [_log()] starting thread (client mode): 0x2b9f3e20
2025-09-29T17:31:17.617 [DEBUG] [Thread-162635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:17.637 [DEBUG] [Thread-162635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:31:17.638 [INFO] [Thread-162635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] Compression: none
2025-09-29T17:31:17.641 [DEBUG] [Thread-162635] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:17.657 [DEBUG] [Thread-162635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:17.657 [DEBUG] [Thread-162635] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:17.657 [DEBUG] [Thread-162635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:31:17.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:31:17.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:17.658 [DEBUG] [Thread-162635] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:17.658 [DEBUG] [Thread-162635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:17.658 [DEBUG] [Thread-162635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:17.658 [DEBUG] [Thread-162635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:31:17.658 [DEBUG] [Thread-162635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:17.685 [INFO] [Thread-162635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:17.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:18.434 [DEBUG] [Thread-162635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:18.434 [DEBUG] [Thread-162635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:18.434 [DEBUG] [Thread-162635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:31:18.475 [DEBUG] [Thread-162635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:18.475 [DEBUG] [Thread-162635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:18.477 [DEBUG] [Thread-162635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:18.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:18.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:31:18.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:31:18.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:31:18.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:18.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:31:18.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.646246 -999.00  +14.00  13.35     45   +2.20 1 1 1 1 1   887    0 11.67 -8.60 ----- 18.3 13.3 150.2 21.5 17.7 -27.4 17.6 -26.7 18.9 -27.2 19.5 -28.5
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.646246
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:31:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:30:44', tmtdew=13.85, humidity=38.93, cloud=0.0, wind=20.01, temperature=14.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:30:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:31:18.498 [DEBUG] [Thread-162635] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:18.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:31:18.581 [DEBUG] [Thread-162638] [transport.py] [_log()] starting thread (client mode): 0x2e362020
2025-09-29T17:31:18.581 [DEBUG] [Thread-162638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:18.596 [DEBUG] [Thread-162638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:31:18.596 [INFO] [Thread-162638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] Compression: none
2025-09-29T17:31:18.604 [DEBUG] [Thread-162638] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:18.659 [DEBUG] [Thread-162638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:18.660 [DEBUG] [Thread-162638] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:18.660 [DEBUG] [Thread-162638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:31:18.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:31:18.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:18.716 [DEBUG] [Thread-162638] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:18.716 [DEBUG] [Thread-162638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:18.717 [DEBUG] [Thread-162638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:18.717 [DEBUG] [Thread-162638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:31:18.717 [DEBUG] [Thread-162638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:18.736 [INFO] [Thread-162638] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:18.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:31:18.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:19.816 [DEBUG] [Thread-162638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:19.816 [DEBUG] [Thread-162638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:19.864 [DEBUG] [Thread-162638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:19.864 [DEBUG] [Thread-162638] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:19.872 [DEBUG] [Thread-162638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:19.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:19.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:31:19.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:31:19.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:19.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:19.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:19.904 [DEBUG] [Thread-162638] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:29.290 [DEBUG] [Thread-162640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:31:29.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:31:29.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:31:29.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:31:30.212 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:31:30.212 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:31:30.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 31, 16), 13.82, 39.03, 0.0, 19.09, 14.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:31:30.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:31:16
2025-09-29T17:31:30.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:31:30.739 [DEBUG] [Thread-162641] [transport.py] [_log()] starting thread (client mode): 0x2e360bb0
2025-09-29T17:31:30.739 [DEBUG] [Thread-162641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:30.758 [DEBUG] [Thread-162641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:31:30.758 [INFO] [Thread-162641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:31:30.762 [DEBUG] [Thread-162641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:30.762 [DEBUG] [Thread-162641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:31:30.762 [DEBUG] [Thread-162641] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:30.762 [DEBUG] [Thread-162641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:30.762 [DEBUG] [Thread-162641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:30.762 [DEBUG] [Thread-162641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:30.762 [DEBUG] [Thread-162641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:30.762 [DEBUG] [Thread-162641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] Compression: none
2025-09-29T17:31:30.763 [DEBUG] [Thread-162641] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:30.780 [DEBUG] [Thread-162641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:30.781 [DEBUG] [Thread-162641] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:30.781 [DEBUG] [Thread-162641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:31:30.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:31:30.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:30.783 [DEBUG] [Thread-162641] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:30.783 [DEBUG] [Thread-162641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:30.783 [DEBUG] [Thread-162641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:30.783 [DEBUG] [Thread-162641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:31:30.783 [DEBUG] [Thread-162641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:30.801 [INFO] [Thread-162641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:30.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:31.439 [DEBUG] [Thread-162641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:31.439 [DEBUG] [Thread-162641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:31.440 [DEBUG] [Thread-162641] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:31:31.480 [DEBUG] [Thread-162641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:31.480 [DEBUG] [Thread-162641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:31.483 [DEBUG] [Thread-162641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:31.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:31.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:31:31.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:31:31.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:31:31.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:31.499 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:31:31.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:31.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:31.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:31:31.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.646593 -999.00  +13.90  14.39     45   +2.20 1 1 1 1 1   887    0 11.71 -7.85 ----- 15.3 14.4 171.0 22.2 17.6 -27.5 17.5 -27.3 18.9 -27.4 19.5 -29.1
2025-09-29T17:31:31.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:31:31.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:31:31.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.646593
2025-09-29T17:31:31.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:31:31.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:31:31.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:31:31.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:31:31.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:31:31.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:31:16', tmtdew=13.82, humidity=39.03, cloud=0.0, wind=19.09, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:31:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:31:31.501 [DEBUG] [Thread-162641] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:31.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:31:31.596 [DEBUG] [Thread-162644] [transport.py] [_log()] starting thread (client mode): 0x2e3fb700
2025-09-29T17:31:31.597 [DEBUG] [Thread-162644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:31.611 [DEBUG] [Thread-162644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:31:31.611 [INFO] [Thread-162644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:31:31.618 [DEBUG] [Thread-162644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:31.619 [DEBUG] [Thread-162644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:31:31.619 [DEBUG] [Thread-162644] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:31.619 [DEBUG] [Thread-162644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:31.619 [DEBUG] [Thread-162644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:31.619 [DEBUG] [Thread-162644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:31.619 [DEBUG] [Thread-162644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:31.619 [DEBUG] [Thread-162644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] Compression: none
2025-09-29T17:31:31.620 [DEBUG] [Thread-162644] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:31.675 [DEBUG] [Thread-162644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:31.676 [DEBUG] [Thread-162644] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:31.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:31:31.677 [DEBUG] [Thread-162644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:31:31.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:31.732 [DEBUG] [Thread-162644] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:31.733 [DEBUG] [Thread-162644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:31.733 [DEBUG] [Thread-162644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:31.733 [DEBUG] [Thread-162644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:31:31.733 [DEBUG] [Thread-162644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:31.752 [INFO] [Thread-162644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:31.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:31:31.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:32.784 [DEBUG] [Thread-162644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:32.784 [DEBUG] [Thread-162644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:32.831 [DEBUG] [Thread-162644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:32.831 [DEBUG] [Thread-162644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:32.840 [DEBUG] [Thread-162644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:32.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:32.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:31:32.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:31:32.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:32.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:32.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:32.875 [DEBUG] [Thread-162644] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:42.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:31:42.873 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:31:42.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:31:43.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 31, 16), 13.82, 39.03, 0.0, 19.09, 14.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:31:43.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:31:16
2025-09-29T17:31:43.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:31:43.703 [DEBUG] [Thread-162646] [transport.py] [_log()] starting thread (client mode): 0x2e34bdf0
2025-09-29T17:31:43.703 [DEBUG] [Thread-162646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:43.723 [DEBUG] [Thread-162646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:31:43.723 [INFO] [Thread-162646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:31:43.726 [DEBUG] [Thread-162646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:43.726 [DEBUG] [Thread-162646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] Compression: none
2025-09-29T17:31:43.727 [DEBUG] [Thread-162646] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:43.743 [DEBUG] [Thread-162646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:43.744 [DEBUG] [Thread-162646] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:43.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:31:43.745 [DEBUG] [Thread-162646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:31:43.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:43.747 [DEBUG] [Thread-162646] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:43.747 [DEBUG] [Thread-162646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:43.747 [DEBUG] [Thread-162646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:43.747 [DEBUG] [Thread-162646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:31:43.747 [DEBUG] [Thread-162646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:43.771 [INFO] [Thread-162646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:43.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:44.313 [DEBUG] [Thread-162648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:31:44.481 [DEBUG] [Thread-162646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:44.481 [DEBUG] [Thread-162646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:44.481 [DEBUG] [Thread-162646] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:31:44.522 [DEBUG] [Thread-162646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:44.522 [DEBUG] [Thread-162646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:44.524 [DEBUG] [Thread-162646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:44.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:44.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:31:44.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:31:44.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:31:44.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:44.540 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:31:44.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:44.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:44.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:31:44.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.646593 -999.00  +13.90  14.39     45   +2.20 1 1 1 1 1   887    0 11.71 -7.85 ----- 15.3 14.4 171.0 22.2 17.6 -27.5 17.5 -27.3 18.9 -27.4 19.5 -29.1
2025-09-29T17:31:44.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:31:44.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:31:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.646593
2025-09-29T17:31:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:31:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:31:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:31:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:31:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:31:44.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:31:16', tmtdew=13.82, humidity=39.03, cloud=0.0, wind=19.09, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:31:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:31:44.542 [DEBUG] [Thread-162646] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:44.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:31:44.628 [DEBUG] [Thread-162650] [transport.py] [_log()] starting thread (client mode): 0x2b9cf8e0
2025-09-29T17:31:44.628 [DEBUG] [Thread-162650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:44.643 [DEBUG] [Thread-162650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:31:44.643 [INFO] [Thread-162650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:44.650 [DEBUG] [Thread-162650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] Compression: none
2025-09-29T17:31:44.651 [DEBUG] [Thread-162650] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:44.707 [DEBUG] [Thread-162650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:44.707 [DEBUG] [Thread-162650] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:44.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:31:44.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:44.708 [DEBUG] [Thread-162650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:31:44.764 [DEBUG] [Thread-162650] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:44.764 [DEBUG] [Thread-162650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:44.764 [DEBUG] [Thread-162650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:44.764 [DEBUG] [Thread-162650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:31:44.764 [DEBUG] [Thread-162650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:44.778 [INFO] [Thread-162650] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:44.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:31:44.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:45.753 [DEBUG] [Thread-162650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:45.753 [DEBUG] [Thread-162650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:45.801 [DEBUG] [Thread-162650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:45.801 [DEBUG] [Thread-162650] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:45.809 [DEBUG] [Thread-162650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:45.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:45.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:31:45.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:31:45.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:45.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:45.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:45.841 [DEBUG] [Thread-162650] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:50.677 [DEBUG] [Thread-162652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:31:55.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:31:55.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:31:55.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:31:56.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 31, 48), 13.88, 38.36, 0.0, 22.62, 14.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:31:56.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:31:48
2025-09-29T17:31:56.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:31:56.679 [DEBUG] [Thread-162653] [transport.py] [_log()] starting thread (client mode): 0x2b9215d0
2025-09-29T17:31:56.679 [DEBUG] [Thread-162653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:56.699 [DEBUG] [Thread-162653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:31:56.699 [INFO] [Thread-162653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:56.703 [DEBUG] [Thread-162653] [transport.py] [_log()] Compression: none
2025-09-29T17:31:56.704 [DEBUG] [Thread-162653] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:56.719 [DEBUG] [Thread-162653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:56.720 [DEBUG] [Thread-162653] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:56.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:31:56.721 [DEBUG] [Thread-162653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:31:56.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:56.764 [DEBUG] [Thread-162653] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:56.765 [DEBUG] [Thread-162653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:56.765 [DEBUG] [Thread-162653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:56.765 [DEBUG] [Thread-162653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:31:56.765 [DEBUG] [Thread-162653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:56.785 [INFO] [Thread-162653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:56.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:57.534 [DEBUG] [Thread-162653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:57.538 [DEBUG] [Thread-162653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:57.538 [DEBUG] [Thread-162653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:31:57.576 [DEBUG] [Thread-162653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:57.576 [DEBUG] [Thread-162653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:57.578 [DEBUG] [Thread-162653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:57.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:57.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:31:57.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:31:57.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:31:57.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:57.588 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:31:57.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:57.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.646593 -999.00  +13.90  14.39     45   +2.20 1 1 1 1 1   887    0 11.71 -7.85 ----- 15.3 14.4 171.0 22.2 17.6 -27.5 17.5 -27.3 18.9 -27.4 19.5 -29.1
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.646593
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:31:57.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:31:48', tmtdew=13.88, humidity=38.36, cloud=0.0, wind=22.62, temperature=14.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:31:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:31:57.589 [DEBUG] [Thread-162653] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:57.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:31:57.672 [DEBUG] [Thread-162656] [transport.py] [_log()] starting thread (client mode): 0x2b922830
2025-09-29T17:31:57.672 [DEBUG] [Thread-162656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:31:57.687 [DEBUG] [Thread-162656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:31:57.687 [INFO] [Thread-162656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:31:57.694 [DEBUG] [Thread-162656] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] client lang: <none>
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] server lang: <none>
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] kex follows: False
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] Compression: none
2025-09-29T17:31:57.695 [DEBUG] [Thread-162656] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:31:57.752 [DEBUG] [Thread-162656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:31:57.752 [DEBUG] [Thread-162656] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:31:57.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:31:57.753 [DEBUG] [Thread-162656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:31:57.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:31:57.808 [DEBUG] [Thread-162656] [transport.py] [_log()] userauth is OK
2025-09-29T17:31:57.809 [DEBUG] [Thread-162656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:31:57.809 [DEBUG] [Thread-162656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:31:57.809 [DEBUG] [Thread-162656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:31:57.809 [DEBUG] [Thread-162656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:31:57.828 [INFO] [Thread-162656] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:31:57.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:31:57.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:31:58.827 [DEBUG] [Thread-162656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:31:58.827 [DEBUG] [Thread-162656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:31:58.878 [DEBUG] [Thread-162656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:31:58.879 [DEBUG] [Thread-162656] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:31:58.887 [DEBUG] [Thread-162656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:31:58.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:31:58.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:31:58.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:31:58.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:31:58.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:31:58.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:31:58.922 [DEBUG] [Thread-162656] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:31:59.349 [DEBUG] [Thread-162658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:32:08.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:32:08.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:32:08.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:32:09.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 31, 48), 13.88, 38.36, 0.0, 22.62, 14.21, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:32:09.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:31:48
2025-09-29T17:32:09.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:32:09.756 [DEBUG] [Thread-162659] [transport.py] [_log()] starting thread (client mode): 0x2e363130
2025-09-29T17:32:09.756 [DEBUG] [Thread-162659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:32:09.776 [DEBUG] [Thread-162659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:32:09.776 [INFO] [Thread-162659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:32:09.779 [DEBUG] [Thread-162659] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:32:09.779 [DEBUG] [Thread-162659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:32:09.779 [DEBUG] [Thread-162659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] client lang: <none>
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] server lang: <none>
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] kex follows: False
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] Compression: none
2025-09-29T17:32:09.780 [DEBUG] [Thread-162659] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:32:09.797 [DEBUG] [Thread-162659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:32:09.798 [DEBUG] [Thread-162659] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:32:09.798 [DEBUG] [Thread-162659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:32:09.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:32:09.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:32:09.801 [DEBUG] [Thread-162659] [transport.py] [_log()] userauth is OK
2025-09-29T17:32:09.801 [DEBUG] [Thread-162659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:32:09.801 [DEBUG] [Thread-162659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:32:09.801 [DEBUG] [Thread-162659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:32:09.801 [DEBUG] [Thread-162659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:32:09.824 [INFO] [Thread-162659] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:32:09.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:32:10.380 [DEBUG] [Thread-162659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:32:10.380 [DEBUG] [Thread-162659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:32:10.380 [DEBUG] [Thread-162659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:32:10.420 [DEBUG] [Thread-162659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:32:10.420 [DEBUG] [Thread-162659] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:32:10.426 [DEBUG] [Thread-162659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:32:10.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:32:10.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:32:10.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:32:10.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:32:10.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:32:10.456 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:32:10.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:32:10.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:32:10.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:32:10.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.646940 -999.00  +14.00  14.21     44   +2.10 1 1 1 1 1   887    0 11.78 -7.63 ----- 14.3 14.2 161.0 26.2 17.6 -28.2 17.6 -26.9 18.9 -27.5 19.4 -29.0
2025-09-29T17:32:10.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:32:10.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:32:10.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.646940
2025-09-29T17:32:10.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:32:10.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:32:10.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:32:10.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:32:10.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:32:10.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:31:48', tmtdew=13.88, humidity=38.36, cloud=0.0, wind=22.62, temperature=14.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:31:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:32:10.460 [DEBUG] [Thread-162659] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:32:10.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:32:14.393 [DEBUG] [Thread-162662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:32:29.442 [DEBUG] [Thread-162663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:32:30.350 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:32:30.351 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:32:44.472 [DEBUG] [Thread-162664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:32:50.711 [DEBUG] [Thread-162665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:32:59.503 [DEBUG] [Thread-162666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:33:14.534 [DEBUG] [Thread-162667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:33:29.567 [DEBUG] [Thread-162668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:33:30.489 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:33:30.490 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:33:44.595 [DEBUG] [Thread-162669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:33:50.744 [DEBUG] [Thread-162670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:33:59.624 [DEBUG] [Thread-162671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:34:14.654 [DEBUG] [Thread-162672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:34:25.210 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:34:29.682 [DEBUG] [Thread-162673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:34:30.633 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:34:30.634 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:34:35.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:34:35.221 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:34:35.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:34:35.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 34, 28), 13.79, 38.56, 0.0, 23.73, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:34:35.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:34:28
2025-09-29T17:34:35.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:34:36.082 [DEBUG] [Thread-162674] [transport.py] [_log()] starting thread (client mode): 0x2e360e20
2025-09-29T17:34:36.082 [DEBUG] [Thread-162674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:34:36.103 [DEBUG] [Thread-162674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:34:36.103 [INFO] [Thread-162674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:34:36.106 [DEBUG] [Thread-162674] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:34:36.106 [DEBUG] [Thread-162674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:34:36.106 [DEBUG] [Thread-162674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:34:36.106 [DEBUG] [Thread-162674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:34:36.106 [DEBUG] [Thread-162674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] client lang: <none>
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] server lang: <none>
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] kex follows: False
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:34:36.107 [DEBUG] [Thread-162674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:34:36.108 [DEBUG] [Thread-162674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:34:36.108 [DEBUG] [Thread-162674] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:34:36.108 [DEBUG] [Thread-162674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:34:36.108 [DEBUG] [Thread-162674] [transport.py] [_log()] Compression: none
2025-09-29T17:34:36.108 [DEBUG] [Thread-162674] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:34:36.119 [DEBUG] [Thread-162674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:34:36.120 [DEBUG] [Thread-162674] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:34:36.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:34:36.121 [DEBUG] [Thread-162674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:34:36.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:34:36.123 [DEBUG] [Thread-162674] [transport.py] [_log()] userauth is OK
2025-09-29T17:34:36.123 [DEBUG] [Thread-162674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:34:36.123 [DEBUG] [Thread-162674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:34:36.123 [DEBUG] [Thread-162674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:34:36.123 [DEBUG] [Thread-162674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:34:36.158 [INFO] [Thread-162674] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:34:36.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:34:36.808 [DEBUG] [Thread-162674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:34:36.808 [DEBUG] [Thread-162674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:34:36.808 [DEBUG] [Thread-162674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:34:36.849 [DEBUG] [Thread-162674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:34:36.850 [DEBUG] [Thread-162674] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:34:36.852 [DEBUG] [Thread-162674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:34:36.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:34:36.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:34:36.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:34:36.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:34:36.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:34:36.875 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:34:36.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:34:36.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:34:36.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:34:36.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.648676 -999.00  +14.00  19.63     44   +2.10 1 1 1 1 1   887    0 11.24 -11.13 ----- 22.4 19.6 147.6 27.8 17.4 -28.3 17.4 -26.8 18.7 -27.8 19.2 -28.9
2025-09-29T17:34:36.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:34:36.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:34:36.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.648676
2025-09-29T17:34:36.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:34:36.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:34:36.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:34:36.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:34:36.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:34:36.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:34:28', tmtdew=13.79, humidity=38.56, cloud=0.0, wind=23.73, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:34:05.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:34:36.878 [DEBUG] [Thread-162674] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:34:36.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:34:36.974 [DEBUG] [Thread-162677] [transport.py] [_log()] starting thread (client mode): 0x2b9232b0
2025-09-29T17:34:36.974 [DEBUG] [Thread-162677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:34:36.989 [DEBUG] [Thread-162677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:34:36.989 [INFO] [Thread-162677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] client lang: <none>
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] server lang: <none>
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] kex follows: False
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] Compression: none
2025-09-29T17:34:36.997 [DEBUG] [Thread-162677] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:34:37.054 [DEBUG] [Thread-162677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:34:37.054 [DEBUG] [Thread-162677] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:34:37.055 [DEBUG] [Thread-162677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:34:37.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:34:37.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:34:37.109 [DEBUG] [Thread-162677] [transport.py] [_log()] userauth is OK
2025-09-29T17:34:37.109 [DEBUG] [Thread-162677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:34:37.109 [DEBUG] [Thread-162677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:34:37.109 [DEBUG] [Thread-162677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:34:37.109 [DEBUG] [Thread-162677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:34:37.123 [INFO] [Thread-162677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:34:37.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:34:37.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:34:38.089 [DEBUG] [Thread-162677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:34:38.089 [DEBUG] [Thread-162677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:34:38.138 [DEBUG] [Thread-162677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:34:38.138 [DEBUG] [Thread-162677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:34:38.146 [DEBUG] [Thread-162677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:34:38.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:34:38.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:34:38.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:34:38.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:34:38.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:34:38.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:34:38.185 [DEBUG] [Thread-162677] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:34:44.711 [DEBUG] [Thread-162679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:34:48.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:34:48.182 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:34:48.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:34:48.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 34, 28), 13.79, 38.56, 0.0, 23.73, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:34:48.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:34:28
2025-09-29T17:34:48.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:34:49.057 [DEBUG] [Thread-162680] [transport.py] [_log()] starting thread (client mode): 0x2e38f190
2025-09-29T17:34:49.057 [DEBUG] [Thread-162680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:34:49.078 [DEBUG] [Thread-162680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:34:49.078 [INFO] [Thread-162680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:34:49.080 [DEBUG] [Thread-162680] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:34:49.080 [DEBUG] [Thread-162680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:34:49.080 [DEBUG] [Thread-162680] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:34:49.080 [DEBUG] [Thread-162680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:34:49.080 [DEBUG] [Thread-162680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] client lang: <none>
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] server lang: <none>
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] kex follows: False
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] Compression: none
2025-09-29T17:34:49.081 [DEBUG] [Thread-162680] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:34:49.095 [DEBUG] [Thread-162680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:34:49.095 [DEBUG] [Thread-162680] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:34:49.096 [DEBUG] [Thread-162680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:34:49.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:34:49.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:34:49.098 [DEBUG] [Thread-162680] [transport.py] [_log()] userauth is OK
2025-09-29T17:34:49.098 [DEBUG] [Thread-162680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:34:49.098 [DEBUG] [Thread-162680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:34:49.098 [DEBUG] [Thread-162680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:34:49.098 [DEBUG] [Thread-162680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:34:49.122 [INFO] [Thread-162680] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:34:49.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:34:49.773 [DEBUG] [Thread-162680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:34:49.773 [DEBUG] [Thread-162680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:34:49.774 [DEBUG] [Thread-162680] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:34:49.814 [DEBUG] [Thread-162680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:34:49.814 [DEBUG] [Thread-162680] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:34:49.817 [DEBUG] [Thread-162680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:34:49.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:34:49.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:34:49.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:34:49.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:34:49.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:34:49.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:34:49.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:34:49.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:34:49.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:34:49.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.649023 -999.00  +13.80  21.07     44   +2.00 1 1 1 1 1   887    0 11.43 -11.91 ----- 19.5 21.1 150.2 28.0 17.3 -27.8 17.3 -27.2 18.6 -28.5 19.2 -29.4
2025-09-29T17:34:49.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:34:49.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:34:49.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.649023
2025-09-29T17:34:49.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:34:49.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:34:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:34:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:34:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:34:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:34:28', tmtdew=13.79, humidity=38.56, cloud=0.0, wind=23.73, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:34:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:34:49.837 [DEBUG] [Thread-162680] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:34:49.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:34:49.932 [DEBUG] [Thread-162683] [transport.py] [_log()] starting thread (client mode): 0x2e3c0fd0
2025-09-29T17:34:49.932 [DEBUG] [Thread-162683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:34:49.948 [DEBUG] [Thread-162683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:34:49.948 [INFO] [Thread-162683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:34:49.960 [DEBUG] [Thread-162683] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:34:49.960 [DEBUG] [Thread-162683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:34:49.960 [DEBUG] [Thread-162683] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:34:49.960 [DEBUG] [Thread-162683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:34:49.960 [DEBUG] [Thread-162683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] client lang: <none>
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] server lang: <none>
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] kex follows: False
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] Compression: none
2025-09-29T17:34:49.961 [DEBUG] [Thread-162683] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:34:50.014 [DEBUG] [Thread-162683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:34:50.014 [DEBUG] [Thread-162683] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:34:50.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:34:50.015 [DEBUG] [Thread-162683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:34:50.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:34:50.070 [DEBUG] [Thread-162683] [transport.py] [_log()] userauth is OK
2025-09-29T17:34:50.070 [DEBUG] [Thread-162683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:34:50.070 [DEBUG] [Thread-162683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:34:50.070 [DEBUG] [Thread-162683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:34:50.070 [DEBUG] [Thread-162683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:34:50.090 [INFO] [Thread-162683] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:34:50.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:34:50.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:34:50.771 [DEBUG] [Thread-162685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:34:51.063 [DEBUG] [Thread-162683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:34:51.063 [DEBUG] [Thread-162683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:34:51.111 [DEBUG] [Thread-162683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:34:51.111 [DEBUG] [Thread-162683] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:34:51.120 [DEBUG] [Thread-162683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:34:51.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:34:51.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:34:51.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:34:51.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:34:51.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:34:51.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:34:51.155 [DEBUG] [Thread-162683] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:34:59.756 [DEBUG] [Thread-162686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:35:01.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:35:01.156 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:35:01.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:35:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 34, 28), 13.79, 38.56, 0.0, 23.73, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:35:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:34:28
2025-09-29T17:35:01.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:35:02.081 [DEBUG] [Thread-162687] [transport.py] [_log()] starting thread (client mode): 0x2b9686a0
2025-09-29T17:35:02.081 [DEBUG] [Thread-162687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:02.101 [DEBUG] [Thread-162687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:35:02.101 [INFO] [Thread-162687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:02.103 [DEBUG] [Thread-162687] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:02.104 [DEBUG] [Thread-162687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:02.104 [DEBUG] [Thread-162687] [transport.py] [_log()] Compression: none
2025-09-29T17:35:02.104 [DEBUG] [Thread-162687] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:02.114 [DEBUG] [Thread-162687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:02.115 [DEBUG] [Thread-162687] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:02.115 [DEBUG] [Thread-162687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:35:02.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:35:02.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:02.117 [DEBUG] [Thread-162687] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:02.117 [DEBUG] [Thread-162687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:02.117 [DEBUG] [Thread-162687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:02.117 [DEBUG] [Thread-162687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:35:02.117 [DEBUG] [Thread-162687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:02.132 [INFO] [Thread-162687] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:02.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:03.848 [DEBUG] [Thread-162687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:03.849 [DEBUG] [Thread-162687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:03.849 [DEBUG] [Thread-162687] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:35:03.889 [DEBUG] [Thread-162687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:03.889 [DEBUG] [Thread-162687] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:03.892 [DEBUG] [Thread-162687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:03.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:03.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:35:03.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:35:03.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:35:03.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:03.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:35:03.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:03.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:35:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.649023 -999.00  +13.80  21.07     44   +2.00 1 1 1 1 1   887    0 11.43 -11.91 ----- 19.5 21.1 150.2 28.0 17.3 -27.8 17.3 -27.2 18.6 -28.5 19.2 -29.4
2025-09-29T17:35:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:35:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:35:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.649023
2025-09-29T17:35:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:35:03.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:35:03.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:35:03.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:35:03.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:35:03.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:34:28', tmtdew=13.79, humidity=38.56, cloud=0.0, wind=23.73, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:34:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:35:03.928 [DEBUG] [Thread-162687] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:04.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:35:04.026 [DEBUG] [Thread-162690] [transport.py] [_log()] starting thread (client mode): 0x2b969c60
2025-09-29T17:35:04.026 [DEBUG] [Thread-162690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:04.040 [DEBUG] [Thread-162690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:35:04.040 [INFO] [Thread-162690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] Compression: none
2025-09-29T17:35:04.048 [DEBUG] [Thread-162690] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:04.106 [DEBUG] [Thread-162690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:04.106 [DEBUG] [Thread-162690] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:04.106 [DEBUG] [Thread-162690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:35:04.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:35:04.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:04.163 [DEBUG] [Thread-162690] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:04.163 [DEBUG] [Thread-162690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:04.164 [DEBUG] [Thread-162690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:04.164 [DEBUG] [Thread-162690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:35:04.164 [DEBUG] [Thread-162690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:04.181 [INFO] [Thread-162690] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:04.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:35:04.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:05.182 [DEBUG] [Thread-162690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:05.182 [DEBUG] [Thread-162690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:05.231 [DEBUG] [Thread-162690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:05.232 [DEBUG] [Thread-162690] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:05.240 [DEBUG] [Thread-162690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:05.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:05.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:35:05.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:35:05.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:05.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:05.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:05.277 [DEBUG] [Thread-162690] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:14.797 [DEBUG] [Thread-162692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:35:15.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:35:15.279 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:35:15.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:35:15.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 34, 28), 13.79, 38.56, 0.0, 23.73, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:35:15.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:34:28
2025-09-29T17:35:15.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:35:16.140 [DEBUG] [Thread-162693] [transport.py] [_log()] starting thread (client mode): 0x2e3fbfd0
2025-09-29T17:35:16.140 [DEBUG] [Thread-162693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:16.167 [DEBUG] [Thread-162693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:35:16.167 [INFO] [Thread-162693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:35:16.168 [DEBUG] [Thread-162693] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:16.168 [DEBUG] [Thread-162693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:35:16.168 [DEBUG] [Thread-162693] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:16.168 [DEBUG] [Thread-162693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:16.168 [DEBUG] [Thread-162693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:16.168 [DEBUG] [Thread-162693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:16.168 [DEBUG] [Thread-162693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] Compression: none
2025-09-29T17:35:16.169 [DEBUG] [Thread-162693] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:16.178 [DEBUG] [Thread-162693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:16.178 [DEBUG] [Thread-162693] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:16.179 [DEBUG] [Thread-162693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:35:16.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:35:16.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:16.181 [DEBUG] [Thread-162693] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:16.181 [DEBUG] [Thread-162693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:16.181 [DEBUG] [Thread-162693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:16.181 [DEBUG] [Thread-162693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:35:16.181 [DEBUG] [Thread-162693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:16.205 [INFO] [Thread-162693] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:16.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:19.800 [DEBUG] [Thread-162693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:19.800 [DEBUG] [Thread-162693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:19.800 [DEBUG] [Thread-162693] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:35:19.840 [DEBUG] [Thread-162693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:19.841 [DEBUG] [Thread-162693] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:19.844 [DEBUG] [Thread-162693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:19.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:19.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:35:19.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:35:19.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:35:19.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:19.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:35:19.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:19.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:35:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.649023 -999.00  +13.80  21.07     44   +2.00 1 1 1 1 1   887    0 11.43 -11.91 ----- 19.5 21.1 150.2 28.0 17.3 -27.8 17.3 -27.2 18.6 -28.5 19.2 -29.4
2025-09-29T17:35:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:35:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:35:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.649023
2025-09-29T17:35:19.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:35:19.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:35:19.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:35:19.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:35:19.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:35:19.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:34:28', tmtdew=13.79, humidity=38.56, cloud=0.0, wind=23.73, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:34:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:35:19.900 [DEBUG] [Thread-162693] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:19.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:35:19.991 [DEBUG] [Thread-162696] [transport.py] [_log()] starting thread (client mode): 0x2b9213c0
2025-09-29T17:35:19.991 [DEBUG] [Thread-162696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:20.005 [DEBUG] [Thread-162696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:35:20.005 [INFO] [Thread-162696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:35:20.013 [DEBUG] [Thread-162696] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:20.013 [DEBUG] [Thread-162696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] Compression: none
2025-09-29T17:35:20.014 [DEBUG] [Thread-162696] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:20.069 [DEBUG] [Thread-162696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:20.070 [DEBUG] [Thread-162696] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:20.070 [DEBUG] [Thread-162696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:35:20.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:35:20.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:20.126 [DEBUG] [Thread-162696] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:20.126 [DEBUG] [Thread-162696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:20.126 [DEBUG] [Thread-162696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:20.126 [DEBUG] [Thread-162696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:35:20.126 [DEBUG] [Thread-162696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:20.145 [INFO] [Thread-162696] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:20.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:35:20.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:21.087 [DEBUG] [Thread-162696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:21.087 [DEBUG] [Thread-162696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:21.135 [DEBUG] [Thread-162696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:21.135 [DEBUG] [Thread-162696] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:21.146 [DEBUG] [Thread-162696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:21.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:21.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:35:21.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:35:21.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:21.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:21.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:21.186 [DEBUG] [Thread-162696] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:29.828 [DEBUG] [Thread-162698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:35:30.773 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:35:30.774 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:35:31.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:35:31.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:35:31.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:35:31.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 34, 28), 13.79, 38.56, 0.0, 23.73, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:35:31.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:34:28
2025-09-29T17:35:31.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:35:32.041 [DEBUG] [Thread-162699] [transport.py] [_log()] starting thread (client mode): 0x2b9cdcc0
2025-09-29T17:35:32.041 [DEBUG] [Thread-162699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:32.062 [DEBUG] [Thread-162699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:35:32.062 [INFO] [Thread-162699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:35:32.063 [DEBUG] [Thread-162699] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:32.063 [DEBUG] [Thread-162699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] Compression: none
2025-09-29T17:35:32.064 [DEBUG] [Thread-162699] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:32.082 [DEBUG] [Thread-162699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:32.083 [DEBUG] [Thread-162699] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:32.084 [DEBUG] [Thread-162699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:35:32.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:35:32.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:32.085 [DEBUG] [Thread-162699] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:32.086 [DEBUG] [Thread-162699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:32.086 [DEBUG] [Thread-162699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:32.086 [DEBUG] [Thread-162699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:35:32.086 [DEBUG] [Thread-162699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:32.104 [INFO] [Thread-162699] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:32.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:32.727 [DEBUG] [Thread-162699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:32.727 [DEBUG] [Thread-162699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:32.727 [DEBUG] [Thread-162699] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:35:32.768 [DEBUG] [Thread-162699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:32.768 [DEBUG] [Thread-162699] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:32.771 [DEBUG] [Thread-162699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:32.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:32.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:35:32.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:35:32.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:35:32.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:32.786 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:35:32.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.649370 -999.00  +13.70  20.76     45   +2.00 1 1 1 1 1   887    0 11.37 -12.74 ----- 16.7 20.8 142.6 27.7 17.3 -27.8 17.3 -27.2 18.6 -27.1 19.1 -29.6
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.649370
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:35:32.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:34:28', tmtdew=13.79, humidity=38.56, cloud=0.0, wind=23.73, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:35:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:35:32.787 [DEBUG] [Thread-162699] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:32.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:35:32.872 [DEBUG] [Thread-162702] [transport.py] [_log()] starting thread (client mode): 0x2b9cff10
2025-09-29T17:35:32.872 [DEBUG] [Thread-162702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:32.887 [DEBUG] [Thread-162702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:35:32.887 [INFO] [Thread-162702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:32.894 [DEBUG] [Thread-162702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:32.895 [DEBUG] [Thread-162702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:32.895 [DEBUG] [Thread-162702] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:32.895 [DEBUG] [Thread-162702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:32.895 [DEBUG] [Thread-162702] [transport.py] [_log()] Compression: none
2025-09-29T17:35:32.895 [DEBUG] [Thread-162702] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:32.952 [DEBUG] [Thread-162702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:32.953 [DEBUG] [Thread-162702] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:32.953 [DEBUG] [Thread-162702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:35:32.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:35:32.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:33.014 [DEBUG] [Thread-162702] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:33.014 [DEBUG] [Thread-162702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:33.014 [DEBUG] [Thread-162702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:33.014 [DEBUG] [Thread-162702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:35:33.014 [DEBUG] [Thread-162702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:33.028 [INFO] [Thread-162702] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:33.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:35:33.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:34.000 [DEBUG] [Thread-162702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:34.001 [DEBUG] [Thread-162702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:34.048 [DEBUG] [Thread-162702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:34.048 [DEBUG] [Thread-162702] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:34.058 [DEBUG] [Thread-162702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:34.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:34.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:35:34.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:35:34.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:34.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:34.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:34.092 [DEBUG] [Thread-162702] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:44.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:35:44.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:35:44.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:35:44.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 35, 31), 13.77, 38.63, 0.0, 24.23, 13.97, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:35:44.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:35:31
2025-09-29T17:35:44.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:35:44.855 [DEBUG] [Thread-162704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:35:45.001 [DEBUG] [Thread-162705] [transport.py] [_log()] starting thread (client mode): 0x2e377fd0
2025-09-29T17:35:45.001 [DEBUG] [Thread-162705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:45.022 [DEBUG] [Thread-162705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:35:45.023 [INFO] [Thread-162705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] Compression: none
2025-09-29T17:35:45.026 [DEBUG] [Thread-162705] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:45.044 [DEBUG] [Thread-162705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:45.044 [DEBUG] [Thread-162705] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:45.044 [DEBUG] [Thread-162705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:35:45.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:35:45.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:45.045 [DEBUG] [Thread-162705] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:45.045 [DEBUG] [Thread-162705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:45.045 [DEBUG] [Thread-162705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:45.045 [DEBUG] [Thread-162705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:35:45.045 [DEBUG] [Thread-162705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:45.054 [INFO] [Thread-162705] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:45.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:45.821 [DEBUG] [Thread-162705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:45.821 [DEBUG] [Thread-162705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:45.821 [DEBUG] [Thread-162705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:35:45.862 [DEBUG] [Thread-162705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:45.862 [DEBUG] [Thread-162705] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:45.865 [DEBUG] [Thread-162705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:45.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:45.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:35:45.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:35:45.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:35:45.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:45.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:35:45.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:45.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:35:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.649370 -999.00  +13.70  20.76     45   +2.00 1 1 1 1 1   887    0 11.37 -12.74 ----- 16.7 20.8 142.6 27.7 17.3 -27.8 17.3 -27.2 18.6 -27.1 19.1 -29.6
2025-09-29T17:35:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:35:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:35:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.649370
2025-09-29T17:35:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:35:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:35:45.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:35:45.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:35:45.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:35:45.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:35:31', tmtdew=13.77, humidity=38.63, cloud=0.0, wind=24.23, temperature=13.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:35:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:35:45.878 [DEBUG] [Thread-162705] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:45.952 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:35:45.965 [DEBUG] [Thread-162708] [transport.py] [_log()] starting thread (client mode): 0x2e3f9090
2025-09-29T17:35:45.965 [DEBUG] [Thread-162708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:45.980 [DEBUG] [Thread-162708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:35:45.980 [INFO] [Thread-162708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] Compression: none
2025-09-29T17:35:45.988 [DEBUG] [Thread-162708] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:46.044 [DEBUG] [Thread-162708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:46.045 [DEBUG] [Thread-162708] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:46.045 [DEBUG] [Thread-162708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:35:46.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:35:46.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:46.102 [DEBUG] [Thread-162708] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:46.102 [DEBUG] [Thread-162708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:46.102 [DEBUG] [Thread-162708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:46.102 [DEBUG] [Thread-162708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:35:46.102 [DEBUG] [Thread-162708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:46.118 [INFO] [Thread-162708] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:46.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:35:46.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:47.092 [DEBUG] [Thread-162708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:47.092 [DEBUG] [Thread-162708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:47.140 [DEBUG] [Thread-162708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:47.140 [DEBUG] [Thread-162708] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:47.148 [DEBUG] [Thread-162708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:47.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:47.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:35:47.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:35:47.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:47.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:47.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:47.179 [DEBUG] [Thread-162708] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:50.803 [DEBUG] [Thread-162710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:35:57.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:35:57.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:35:57.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:35:57.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 35, 31), 13.77, 38.63, 0.0, 24.23, 13.97, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:35:57.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:35:31
2025-09-29T17:35:57.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:35:58.051 [DEBUG] [Thread-162711] [transport.py] [_log()] starting thread (client mode): 0x30ddf940
2025-09-29T17:35:58.051 [DEBUG] [Thread-162711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:58.071 [DEBUG] [Thread-162711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:35:58.071 [INFO] [Thread-162711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:35:58.074 [DEBUG] [Thread-162711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] Compression: none
2025-09-29T17:35:58.075 [DEBUG] [Thread-162711] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:58.087 [DEBUG] [Thread-162711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:58.088 [DEBUG] [Thread-162711] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:58.088 [DEBUG] [Thread-162711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:35:58.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:35:58.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:58.090 [DEBUG] [Thread-162711] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:58.090 [DEBUG] [Thread-162711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:58.090 [DEBUG] [Thread-162711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:58.091 [DEBUG] [Thread-162711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:35:58.091 [DEBUG] [Thread-162711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:58.114 [INFO] [Thread-162711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:58.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:58.813 [DEBUG] [Thread-162711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:35:58.813 [DEBUG] [Thread-162711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:35:58.814 [DEBUG] [Thread-162711] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:35:58.854 [DEBUG] [Thread-162711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:35:58.854 [DEBUG] [Thread-162711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:35:58.857 [DEBUG] [Thread-162711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:35:58.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:35:58.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:35:58.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:35:58.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:35:58.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:35:58.875 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:35:58.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:35:58.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:35:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:35:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.649718 -999.00  +13.70  17.60     45   +2.00 1 1 1 1 1   887    0 11.43 -12.94 ----- 15.9 17.6 145.6 22.9 17.2 -27.7 17.3 -26.9 18.5 -27.3 19.0 -29.3
2025-09-29T17:35:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:35:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:35:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.649718
2025-09-29T17:35:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:35:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:35:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:35:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:35:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:35:58.877 [DEBUG] [Thread-162711] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:35:58.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:35:31', tmtdew=13.77, humidity=38.63, cloud=0.0, wind=24.23, temperature=13.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:35:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:35:58.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:35:58.972 [DEBUG] [Thread-162714] [transport.py] [_log()] starting thread (client mode): 0x2e3c0fd0
2025-09-29T17:35:58.972 [DEBUG] [Thread-162714] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:35:58.987 [DEBUG] [Thread-162714] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:35:58.987 [INFO] [Thread-162714] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] client lang: <none>
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] server lang: <none>
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] kex follows: False
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:35:58.995 [DEBUG] [Thread-162714] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:35:58.996 [DEBUG] [Thread-162714] [transport.py] [_log()] Compression: none
2025-09-29T17:35:58.996 [DEBUG] [Thread-162714] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:35:59.053 [DEBUG] [Thread-162714] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:35:59.054 [DEBUG] [Thread-162714] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:35:59.054 [DEBUG] [Thread-162714] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:35:59.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:35:59.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:35:59.110 [DEBUG] [Thread-162714] [transport.py] [_log()] userauth is OK
2025-09-29T17:35:59.110 [DEBUG] [Thread-162714] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:35:59.110 [DEBUG] [Thread-162714] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:35:59.110 [DEBUG] [Thread-162714] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:35:59.110 [DEBUG] [Thread-162714] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:35:59.130 [INFO] [Thread-162714] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:35:59.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:35:59.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:35:59.887 [DEBUG] [Thread-162716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:36:00.158 [DEBUG] [Thread-162714] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:00.158 [DEBUG] [Thread-162714] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:00.206 [DEBUG] [Thread-162714] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:00.206 [DEBUG] [Thread-162714] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:00.215 [DEBUG] [Thread-162714] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:00.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:00.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:36:00.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:36:00.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:00.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:00.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:00.249 [DEBUG] [Thread-162714] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:36:10.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:36:10.252 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:36:10.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:36:10.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 36, 3), 13.87, 38.38, 0.0, 22.76, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:36:10.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:36:03
2025-09-29T17:36:10.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:36:11.119 [DEBUG] [Thread-162717] [transport.py] [_log()] starting thread (client mode): 0x2e3609d0
2025-09-29T17:36:11.120 [DEBUG] [Thread-162717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:36:11.135 [DEBUG] [Thread-162717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:36:11.135 [INFO] [Thread-162717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:36:11.138 [DEBUG] [Thread-162717] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:36:11.138 [DEBUG] [Thread-162717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:36:11.138 [DEBUG] [Thread-162717] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:36:11.138 [DEBUG] [Thread-162717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] client lang: <none>
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] server lang: <none>
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] kex follows: False
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] Compression: none
2025-09-29T17:36:11.139 [DEBUG] [Thread-162717] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:36:11.157 [DEBUG] [Thread-162717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:36:11.157 [DEBUG] [Thread-162717] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:36:11.158 [DEBUG] [Thread-162717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:36:11.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:36:11.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:36:11.160 [DEBUG] [Thread-162717] [transport.py] [_log()] userauth is OK
2025-09-29T17:36:11.160 [DEBUG] [Thread-162717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:36:11.160 [DEBUG] [Thread-162717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:36:11.160 [DEBUG] [Thread-162717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:36:11.160 [DEBUG] [Thread-162717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:36:11.178 [INFO] [Thread-162717] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:36:11.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:36:11.952 [DEBUG] [Thread-162717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:11.952 [DEBUG] [Thread-162717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:11.953 [DEBUG] [Thread-162717] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:36:11.993 [DEBUG] [Thread-162717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:11.993 [DEBUG] [Thread-162717] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:11.997 [DEBUG] [Thread-162717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:12.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:12.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:36:12.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:36:12.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:36:12.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:12.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:36:12.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:12.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:12.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:36:12.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.649718 -999.00  +13.70  17.60     45   +2.00 1 1 1 1 1   887    0 11.43 -12.94 ----- 15.9 17.6 145.6 22.9 17.2 -27.7 17.3 -26.9 18.5 -27.3 19.0 -29.3
2025-09-29T17:36:12.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:36:12.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:36:12.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.649718
2025-09-29T17:36:12.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:36:12.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:36:12.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:36:12.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:36:12.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:36:12.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:36:03', tmtdew=13.87, humidity=38.38, cloud=0.0, wind=22.76, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:35:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:36:12.026 [DEBUG] [Thread-162717] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:36:12.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:36:12.125 [DEBUG] [Thread-162720] [transport.py] [_log()] starting thread (client mode): 0x2e3614e0
2025-09-29T17:36:12.125 [DEBUG] [Thread-162720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:36:12.139 [DEBUG] [Thread-162720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:36:12.139 [INFO] [Thread-162720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:36:12.146 [DEBUG] [Thread-162720] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:36:12.146 [DEBUG] [Thread-162720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] client lang: <none>
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] server lang: <none>
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] kex follows: False
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] Compression: none
2025-09-29T17:36:12.147 [DEBUG] [Thread-162720] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:36:12.205 [DEBUG] [Thread-162720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:36:12.206 [DEBUG] [Thread-162720] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:36:12.206 [DEBUG] [Thread-162720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:36:12.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:36:12.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:36:12.262 [DEBUG] [Thread-162720] [transport.py] [_log()] userauth is OK
2025-09-29T17:36:12.262 [DEBUG] [Thread-162720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:36:12.262 [DEBUG] [Thread-162720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:36:12.262 [DEBUG] [Thread-162720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:36:12.262 [DEBUG] [Thread-162720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:36:12.280 [INFO] [Thread-162720] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:36:12.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:36:12.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:36:13.243 [DEBUG] [Thread-162720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:13.244 [DEBUG] [Thread-162720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:13.291 [DEBUG] [Thread-162720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:13.291 [DEBUG] [Thread-162720] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:13.300 [DEBUG] [Thread-162720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:13.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:13.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:36:13.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:36:13.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:13.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:13.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:13.334 [DEBUG] [Thread-162720] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:36:14.939 [DEBUG] [Thread-162722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:36:23.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:36:23.335 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:36:23.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:36:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 36, 3), 13.87, 38.38, 0.0, 22.76, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:36:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:36:03
2025-09-29T17:36:24.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:36:24.237 [DEBUG] [Thread-162723] [transport.py] [_log()] starting thread (client mode): 0x2b94fdc0
2025-09-29T17:36:24.237 [DEBUG] [Thread-162723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:36:24.256 [DEBUG] [Thread-162723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:36:24.257 [INFO] [Thread-162723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:36:24.258 [DEBUG] [Thread-162723] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:36:24.258 [DEBUG] [Thread-162723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:36:24.258 [DEBUG] [Thread-162723] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:36:24.258 [DEBUG] [Thread-162723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:24.258 [DEBUG] [Thread-162723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:24.258 [DEBUG] [Thread-162723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:24.258 [DEBUG] [Thread-162723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:24.258 [DEBUG] [Thread-162723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] client lang: <none>
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] server lang: <none>
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] kex follows: False
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] Compression: none
2025-09-29T17:36:24.259 [DEBUG] [Thread-162723] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:36:24.271 [DEBUG] [Thread-162723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:36:24.271 [DEBUG] [Thread-162723] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:36:24.272 [DEBUG] [Thread-162723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:36:24.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:36:24.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:36:24.272 [DEBUG] [Thread-162723] [transport.py] [_log()] userauth is OK
2025-09-29T17:36:24.272 [DEBUG] [Thread-162723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:36:24.272 [DEBUG] [Thread-162723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:36:24.272 [DEBUG] [Thread-162723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:36:24.272 [DEBUG] [Thread-162723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:36:24.287 [INFO] [Thread-162723] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:36:24.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:36:25.096 [DEBUG] [Thread-162723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:25.096 [DEBUG] [Thread-162723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:25.097 [DEBUG] [Thread-162723] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:36:25.139 [DEBUG] [Thread-162723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:25.139 [DEBUG] [Thread-162723] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:25.141 [DEBUG] [Thread-162723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:25.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:25.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:36:25.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:36:25.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:36:25.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:25.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:36:25.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.649718 -999.00  +13.70  17.60     45   +2.00 1 1 1 1 1   887    0 11.43 -12.94 ----- 15.9 17.6 145.6 22.9 17.2 -27.7 17.3 -26.9 18.5 -27.3 19.0 -29.3
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.649718
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:36:25.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:36:03', tmtdew=13.87, humidity=38.38, cloud=0.0, wind=22.76, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:35:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:36:25.153 [DEBUG] [Thread-162723] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:36:25.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:36:25.236 [DEBUG] [Thread-162726] [transport.py] [_log()] starting thread (client mode): 0x2b94c910
2025-09-29T17:36:25.236 [DEBUG] [Thread-162726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:36:25.251 [DEBUG] [Thread-162726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:36:25.251 [INFO] [Thread-162726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] client lang: <none>
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] server lang: <none>
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] kex follows: False
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:36:25.258 [DEBUG] [Thread-162726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:36:25.259 [DEBUG] [Thread-162726] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:36:25.259 [DEBUG] [Thread-162726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:36:25.259 [DEBUG] [Thread-162726] [transport.py] [_log()] Compression: none
2025-09-29T17:36:25.259 [DEBUG] [Thread-162726] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:36:25.317 [DEBUG] [Thread-162726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:36:25.317 [DEBUG] [Thread-162726] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:36:25.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:36:25.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:36:25.318 [DEBUG] [Thread-162726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:36:25.374 [DEBUG] [Thread-162726] [transport.py] [_log()] userauth is OK
2025-09-29T17:36:25.374 [DEBUG] [Thread-162726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:36:25.374 [DEBUG] [Thread-162726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:36:25.374 [DEBUG] [Thread-162726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:36:25.374 [DEBUG] [Thread-162726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:36:25.392 [INFO] [Thread-162726] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:36:25.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:36:25.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:36:26.384 [DEBUG] [Thread-162726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:26.384 [DEBUG] [Thread-162726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:26.432 [DEBUG] [Thread-162726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:26.432 [DEBUG] [Thread-162726] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:26.440 [DEBUG] [Thread-162726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:26.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:26.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:36:26.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:36:26.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:26.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:26.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:26.472 [DEBUG] [Thread-162726] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:36:29.983 [DEBUG] [Thread-162728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:36:30.911 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:36:30.913 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:36:36.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:36:36.475 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:36:36.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:36:37.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 36, 3), 13.87, 38.38, 0.0, 22.76, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:36:37.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:36:03
2025-09-29T17:36:37.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:36:37.382 [DEBUG] [Thread-162729] [transport.py] [_log()] starting thread (client mode): 0x2b91dbd0
2025-09-29T17:36:37.382 [DEBUG] [Thread-162729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:36:37.397 [DEBUG] [Thread-162729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:36:37.397 [INFO] [Thread-162729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] client lang: <none>
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] server lang: <none>
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] kex follows: False
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:36:37.400 [DEBUG] [Thread-162729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:36:37.401 [DEBUG] [Thread-162729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:36:37.401 [DEBUG] [Thread-162729] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:36:37.401 [DEBUG] [Thread-162729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:36:37.401 [DEBUG] [Thread-162729] [transport.py] [_log()] Compression: none
2025-09-29T17:36:37.401 [DEBUG] [Thread-162729] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:36:37.417 [DEBUG] [Thread-162729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:36:37.417 [DEBUG] [Thread-162729] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:36:37.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:36:37.418 [DEBUG] [Thread-162729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:36:37.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:36:37.418 [DEBUG] [Thread-162729] [transport.py] [_log()] userauth is OK
2025-09-29T17:36:37.418 [DEBUG] [Thread-162729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:36:37.419 [DEBUG] [Thread-162729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:36:37.419 [DEBUG] [Thread-162729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:36:37.419 [DEBUG] [Thread-162729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:36:37.434 [INFO] [Thread-162729] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:36:37.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:36:38.139 [DEBUG] [Thread-162729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:38.139 [DEBUG] [Thread-162729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:38.139 [DEBUG] [Thread-162729] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:36:38.179 [DEBUG] [Thread-162729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:38.179 [DEBUG] [Thread-162729] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:38.182 [DEBUG] [Thread-162729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:38.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:38.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:36:38.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:36:38.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:36:38.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:38.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:36:38.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:38.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:38.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:36:38.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.650065 -999.00  +13.70  21.66     45   +2.00 1 1 1 1 1   887    0 11.40 -13.86 ----- 19.6 21.7 157.2 25.2 17.2 -28.4 17.1 -26.9 18.5 -27.4 19.0 -29.7
2025-09-29T17:36:38.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:36:38.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:36:38.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.650065
2025-09-29T17:36:38.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:36:38.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:36:38.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:36:38.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:36:38.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:36:38.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:36:03', tmtdew=13.87, humidity=38.38, cloud=0.0, wind=22.76, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:36:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:36:38.211 [DEBUG] [Thread-162729] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:36:38.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:36:38.315 [DEBUG] [Thread-162732] [transport.py] [_log()] starting thread (client mode): 0x2e3c32b0
2025-09-29T17:36:38.316 [DEBUG] [Thread-162732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:36:38.330 [DEBUG] [Thread-162732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:36:38.330 [INFO] [Thread-162732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] client lang: <none>
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] server lang: <none>
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] kex follows: False
2025-09-29T17:36:38.338 [DEBUG] [Thread-162732] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:36:38.339 [DEBUG] [Thread-162732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:36:38.339 [DEBUG] [Thread-162732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:36:38.339 [DEBUG] [Thread-162732] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:36:38.339 [DEBUG] [Thread-162732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:36:38.339 [DEBUG] [Thread-162732] [transport.py] [_log()] Compression: none
2025-09-29T17:36:38.339 [DEBUG] [Thread-162732] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:36:38.394 [DEBUG] [Thread-162732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:36:38.394 [DEBUG] [Thread-162732] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:36:38.395 [DEBUG] [Thread-162732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:36:38.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:36:38.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:36:38.450 [DEBUG] [Thread-162732] [transport.py] [_log()] userauth is OK
2025-09-29T17:36:38.451 [DEBUG] [Thread-162732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:36:38.451 [DEBUG] [Thread-162732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:36:38.451 [DEBUG] [Thread-162732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:36:38.451 [DEBUG] [Thread-162732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:36:38.468 [INFO] [Thread-162732] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:36:38.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:36:38.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:36:39.420 [DEBUG] [Thread-162732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:39.420 [DEBUG] [Thread-162732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:39.468 [DEBUG] [Thread-162732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:39.468 [DEBUG] [Thread-162732] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:39.477 [DEBUG] [Thread-162732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:39.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:39.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:36:39.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:36:39.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:39.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:39.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:39.510 [DEBUG] [Thread-162732] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:36:45.013 [DEBUG] [Thread-162734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:36:49.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:36:49.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:36:49.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:36:50.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 36, 35), 13.88, 38.87, 0.0, 23.08, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:36:50.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:36:35
2025-09-29T17:36:50.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:36:50.374 [DEBUG] [Thread-162735] [transport.py] [_log()] starting thread (client mode): 0x2b94de70
2025-09-29T17:36:50.374 [DEBUG] [Thread-162735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:36:50.395 [DEBUG] [Thread-162735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:36:50.395 [INFO] [Thread-162735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] client lang: <none>
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] server lang: <none>
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] kex follows: False
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] Compression: none
2025-09-29T17:36:50.399 [DEBUG] [Thread-162735] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:36:50.413 [DEBUG] [Thread-162735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:36:50.413 [DEBUG] [Thread-162735] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:36:50.413 [DEBUG] [Thread-162735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:36:50.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:36:50.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:36:50.414 [DEBUG] [Thread-162735] [transport.py] [_log()] userauth is OK
2025-09-29T17:36:50.414 [DEBUG] [Thread-162735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:36:50.414 [DEBUG] [Thread-162735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:36:50.414 [DEBUG] [Thread-162735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:36:50.414 [DEBUG] [Thread-162735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:36:50.423 [INFO] [Thread-162735] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:36:50.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:36:50.838 [DEBUG] [Thread-162737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:36:51.241 [DEBUG] [Thread-162735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:51.241 [DEBUG] [Thread-162735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:51.242 [DEBUG] [Thread-162735] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:36:51.282 [DEBUG] [Thread-162735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:51.282 [DEBUG] [Thread-162735] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:51.285 [DEBUG] [Thread-162735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:51.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:51.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:36:51.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:36:51.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:36:51.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:51.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:36:51.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:51.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:36:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.650065 -999.00  +13.70  21.66     45   +2.00 1 1 1 1 1   887    0 11.40 -13.86 ----- 19.6 21.7 157.2 25.2 17.2 -28.4 17.1 -26.9 18.5 -27.4 19.0 -29.7
2025-09-29T17:36:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:36:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:36:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.650065
2025-09-29T17:36:51.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:36:51.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:36:51.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:36:51.314 [DEBUG] [Thread-162735] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:36:51.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:36:51.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:36:51.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:36:35', tmtdew=13.88, humidity=38.87, cloud=0.0, wind=23.08, temperature=14.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:36:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:36:51.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:36:51.410 [DEBUG] [Thread-162739] [transport.py] [_log()] starting thread (client mode): 0x2e3636d0
2025-09-29T17:36:51.410 [DEBUG] [Thread-162739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:36:51.425 [DEBUG] [Thread-162739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:36:51.425 [INFO] [Thread-162739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:36:51.434 [DEBUG] [Thread-162739] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:36:51.435 [DEBUG] [Thread-162739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:36:51.435 [DEBUG] [Thread-162739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:36:51.435 [DEBUG] [Thread-162739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:51.435 [DEBUG] [Thread-162739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:36:51.435 [DEBUG] [Thread-162739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:51.435 [DEBUG] [Thread-162739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:36:51.435 [DEBUG] [Thread-162739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:36:51.435 [DEBUG] [Thread-162739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:36:51.436 [DEBUG] [Thread-162739] [transport.py] [_log()] client lang: <none>
2025-09-29T17:36:51.436 [DEBUG] [Thread-162739] [transport.py] [_log()] server lang: <none>
2025-09-29T17:36:51.436 [DEBUG] [Thread-162739] [transport.py] [_log()] kex follows: False
2025-09-29T17:36:51.436 [DEBUG] [Thread-162739] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:36:51.436 [DEBUG] [Thread-162739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:36:51.436 [DEBUG] [Thread-162739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:36:51.436 [DEBUG] [Thread-162739] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:36:51.436 [DEBUG] [Thread-162739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:36:51.437 [DEBUG] [Thread-162739] [transport.py] [_log()] Compression: none
2025-09-29T17:36:51.437 [DEBUG] [Thread-162739] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:36:51.493 [DEBUG] [Thread-162739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:36:51.493 [DEBUG] [Thread-162739] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:36:51.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:36:51.494 [DEBUG] [Thread-162739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:36:51.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:36:51.552 [DEBUG] [Thread-162739] [transport.py] [_log()] userauth is OK
2025-09-29T17:36:51.552 [DEBUG] [Thread-162739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:36:51.552 [DEBUG] [Thread-162739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:36:51.552 [DEBUG] [Thread-162739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:36:51.553 [DEBUG] [Thread-162739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:36:51.569 [INFO] [Thread-162739] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:36:51.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:36:51.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:36:52.520 [DEBUG] [Thread-162739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:36:52.521 [DEBUG] [Thread-162739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:36:52.568 [DEBUG] [Thread-162739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:36:52.568 [DEBUG] [Thread-162739] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:36:52.577 [DEBUG] [Thread-162739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:36:52.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:36:52.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:36:52.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:36:52.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:36:52.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:36:52.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:36:52.612 [DEBUG] [Thread-162739] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:37:00.063 [DEBUG] [Thread-162741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:37:02.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:37:02.615 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:37:02.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:37:03.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 36, 35), 13.88, 38.87, 0.0, 23.08, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:37:03.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:36:35
2025-09-29T17:37:03.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:37:03.484 [DEBUG] [Thread-162742] [transport.py] [_log()] starting thread (client mode): 0x2b968460
2025-09-29T17:37:03.484 [DEBUG] [Thread-162742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:37:03.504 [DEBUG] [Thread-162742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:37:03.504 [INFO] [Thread-162742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] client lang: <none>
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] server lang: <none>
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] kex follows: False
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] Compression: none
2025-09-29T17:37:03.508 [DEBUG] [Thread-162742] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:37:03.526 [DEBUG] [Thread-162742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:37:03.526 [DEBUG] [Thread-162742] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:37:03.526 [DEBUG] [Thread-162742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:37:03.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:37:03.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:37:03.527 [DEBUG] [Thread-162742] [transport.py] [_log()] userauth is OK
2025-09-29T17:37:03.527 [DEBUG] [Thread-162742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:37:03.527 [DEBUG] [Thread-162742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:37:03.527 [DEBUG] [Thread-162742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:37:03.527 [DEBUG] [Thread-162742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:37:03.542 [INFO] [Thread-162742] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:37:03.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:37:04.174 [DEBUG] [Thread-162742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:37:04.174 [DEBUG] [Thread-162742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:37:04.174 [DEBUG] [Thread-162742] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:37:04.214 [DEBUG] [Thread-162742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:37:04.214 [DEBUG] [Thread-162742] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:37:04.216 [DEBUG] [Thread-162742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:37:04.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:37:04.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:37:04.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:37:04.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:37:04.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:37:04.235 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:37:04.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:37:04.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:37:04.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:37:04.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.650412 -999.00  +13.70  13.53     45   +2.00 1 1 1 1 1   887    0 11.43 -14.81 ----- 19.8 13.5 152.8 23.3 17.2 -27.9 17.1 -27.4 18.4 -27.8 19.0 -29.2
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.650412
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:37:04.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:36:35', tmtdew=13.88, humidity=38.87, cloud=0.0, wind=23.08, temperature=14.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:36:35.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:37:04.237 [DEBUG] [Thread-162742] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:37:04.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:37:04.321 [DEBUG] [Thread-162745] [transport.py] [_log()] starting thread (client mode): 0x2e34bbe0
2025-09-29T17:37:04.321 [DEBUG] [Thread-162745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:37:04.336 [DEBUG] [Thread-162745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:37:04.336 [INFO] [Thread-162745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] client lang: <none>
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] server lang: <none>
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] kex follows: False
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:37:04.343 [DEBUG] [Thread-162745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:37:04.344 [DEBUG] [Thread-162745] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:37:04.344 [DEBUG] [Thread-162745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:37:04.344 [DEBUG] [Thread-162745] [transport.py] [_log()] Compression: none
2025-09-29T17:37:04.344 [DEBUG] [Thread-162745] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:37:04.401 [DEBUG] [Thread-162745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:37:04.402 [DEBUG] [Thread-162745] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:37:04.402 [DEBUG] [Thread-162745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:37:04.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:37:04.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:37:04.458 [DEBUG] [Thread-162745] [transport.py] [_log()] userauth is OK
2025-09-29T17:37:04.458 [DEBUG] [Thread-162745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:37:04.458 [DEBUG] [Thread-162745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:37:04.458 [DEBUG] [Thread-162745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:37:04.458 [DEBUG] [Thread-162745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:37:04.475 [INFO] [Thread-162745] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:37:04.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:37:04.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:37:05.501 [DEBUG] [Thread-162745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:37:05.501 [DEBUG] [Thread-162745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:37:05.550 [DEBUG] [Thread-162745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:37:05.550 [DEBUG] [Thread-162745] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:37:05.563 [DEBUG] [Thread-162745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:37:05.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:37:05.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:37:05.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:37:05.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:37:05.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:37:05.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:37:05.602 [DEBUG] [Thread-162745] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:37:15.097 [DEBUG] [Thread-162747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:37:15.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:37:15.602 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:37:15.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:37:16.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 37, 7), 13.87, 38.88, 0.0, 24.05, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:37:16.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:37:07
2025-09-29T17:37:16.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:37:16.452 [DEBUG] [Thread-162748] [transport.py] [_log()] starting thread (client mode): 0x2b96b160
2025-09-29T17:37:16.452 [DEBUG] [Thread-162748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:37:16.472 [DEBUG] [Thread-162748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:37:16.472 [INFO] [Thread-162748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:37:16.475 [DEBUG] [Thread-162748] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] client lang: <none>
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] server lang: <none>
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] kex follows: False
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] Compression: none
2025-09-29T17:37:16.476 [DEBUG] [Thread-162748] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:37:16.493 [DEBUG] [Thread-162748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:37:16.493 [DEBUG] [Thread-162748] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:37:16.494 [DEBUG] [Thread-162748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:37:16.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:37:16.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:37:16.495 [DEBUG] [Thread-162748] [transport.py] [_log()] userauth is OK
2025-09-29T17:37:16.496 [DEBUG] [Thread-162748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:37:16.496 [DEBUG] [Thread-162748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:37:16.496 [DEBUG] [Thread-162748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:37:16.496 [DEBUG] [Thread-162748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:37:16.532 [INFO] [Thread-162748] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:37:16.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:37:17.355 [DEBUG] [Thread-162748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:37:17.355 [DEBUG] [Thread-162748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:37:17.356 [DEBUG] [Thread-162748] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:37:17.396 [DEBUG] [Thread-162748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:37:17.396 [DEBUG] [Thread-162748] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:37:17.399 [DEBUG] [Thread-162748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:37:17.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:37:17.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:37:17.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:37:17.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:37:17.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:37:17.422 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:37:17.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:37:17.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:37:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:37:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.650412 -999.00  +13.70  13.53     45   +2.00 1 1 1 1 1   887    0 11.43 -14.81 ----- 19.8 13.5 152.8 23.3 17.2 -27.9 17.1 -27.4 18.4 -27.8 19.0 -29.2
2025-09-29T17:37:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:37:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:37:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.650412
2025-09-29T17:37:17.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:37:17.424 [DEBUG] [Thread-162748] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:37:17.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:37:17.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:37:17.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:37:17.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:37:17.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:37:07', tmtdew=13.87, humidity=38.88, cloud=0.0, wind=24.05, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:36:35.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:37:17.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:37:17.520 [DEBUG] [Thread-162751] [transport.py] [_log()] starting thread (client mode): 0x2e3fa320
2025-09-29T17:37:17.520 [DEBUG] [Thread-162751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:37:17.538 [DEBUG] [Thread-162751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:37:17.539 [INFO] [Thread-162751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:37:17.546 [DEBUG] [Thread-162751] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:37:17.546 [DEBUG] [Thread-162751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:37:17.546 [DEBUG] [Thread-162751] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:37:17.546 [DEBUG] [Thread-162751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:17.546 [DEBUG] [Thread-162751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:17.546 [DEBUG] [Thread-162751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:17.546 [DEBUG] [Thread-162751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] client lang: <none>
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] server lang: <none>
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] kex follows: False
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] Compression: none
2025-09-29T17:37:17.547 [DEBUG] [Thread-162751] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:37:17.606 [DEBUG] [Thread-162751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:37:17.606 [DEBUG] [Thread-162751] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:37:17.607 [DEBUG] [Thread-162751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:37:17.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:37:17.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:37:17.662 [DEBUG] [Thread-162751] [transport.py] [_log()] userauth is OK
2025-09-29T17:37:17.663 [DEBUG] [Thread-162751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:37:17.663 [DEBUG] [Thread-162751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:37:17.663 [DEBUG] [Thread-162751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:37:17.663 [DEBUG] [Thread-162751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:37:17.682 [INFO] [Thread-162751] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:37:17.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:37:17.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:37:18.669 [DEBUG] [Thread-162751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:37:18.669 [DEBUG] [Thread-162751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:37:18.717 [DEBUG] [Thread-162751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:37:18.717 [DEBUG] [Thread-162751] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:37:18.725 [DEBUG] [Thread-162751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:37:18.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:37:18.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:37:18.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:37:18.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:37:18.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:37:18.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:37:18.757 [DEBUG] [Thread-162751] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:37:28.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:37:28.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:37:28.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:37:29.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 37, 7), 13.87, 38.88, 0.0, 24.05, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:37:29.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:37:07
2025-09-29T17:37:29.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:37:29.617 [DEBUG] [Thread-162753] [transport.py] [_log()] starting thread (client mode): 0x2b91e590
2025-09-29T17:37:29.617 [DEBUG] [Thread-162753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:37:29.639 [DEBUG] [Thread-162753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:37:29.639 [INFO] [Thread-162753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:37:29.643 [DEBUG] [Thread-162753] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:37:29.643 [DEBUG] [Thread-162753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:37:29.643 [DEBUG] [Thread-162753] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:37:29.643 [DEBUG] [Thread-162753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:29.643 [DEBUG] [Thread-162753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:37:29.643 [DEBUG] [Thread-162753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:29.643 [DEBUG] [Thread-162753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] client lang: <none>
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] server lang: <none>
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] kex follows: False
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] Compression: none
2025-09-29T17:37:29.644 [DEBUG] [Thread-162753] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:37:29.662 [DEBUG] [Thread-162753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:37:29.663 [DEBUG] [Thread-162753] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:37:29.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:37:29.663 [DEBUG] [Thread-162753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:37:29.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:37:29.665 [DEBUG] [Thread-162753] [transport.py] [_log()] userauth is OK
2025-09-29T17:37:29.665 [DEBUG] [Thread-162753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:37:29.666 [DEBUG] [Thread-162753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:37:29.666 [DEBUG] [Thread-162753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:37:29.666 [DEBUG] [Thread-162753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:37:29.701 [INFO] [Thread-162753] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:37:29.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:37:30.141 [DEBUG] [Thread-162755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:37:30.529 [DEBUG] [Thread-162753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:37:30.530 [DEBUG] [Thread-162753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:37:30.530 [DEBUG] [Thread-162753] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:37:30.570 [DEBUG] [Thread-162753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:37:30.571 [DEBUG] [Thread-162753] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:37:30.574 [DEBUG] [Thread-162753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:37:30.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:37:30.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:37:30.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:37:30.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:37:30.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:37:30.600 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:37:30.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:37:30.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:37:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:37:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.650412 -999.00  +13.70  13.53     45   +2.00 1 1 1 1 1   887    0 11.43 -14.81 ----- 19.8 13.5 152.8 23.3 17.2 -27.9 17.1 -27.4 18.4 -27.8 19.0 -29.2
2025-09-29T17:37:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:37:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:37:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.650412
2025-09-29T17:37:30.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:37:30.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:37:30.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:37:30.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:37:30.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:37:30.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:37:07', tmtdew=13.87, humidity=38.88, cloud=0.0, wind=24.05, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:36:35.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:37:30.603 [DEBUG] [Thread-162753] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:37:30.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:37:31.048 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:37:31.049 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:37:45.186 [DEBUG] [Thread-162757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:37:50.869 [DEBUG] [Thread-162758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:38:00.221 [DEBUG] [Thread-162759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:38:15.252 [DEBUG] [Thread-162760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:38:30.282 [DEBUG] [Thread-162761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:38:31.188 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:38:31.189 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:38:45.312 [DEBUG] [Thread-162762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:38:50.904 [DEBUG] [Thread-162763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:39:00.340 [DEBUG] [Thread-162764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:39:15.374 [DEBUG] [Thread-162765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:39:30.404 [DEBUG] [Thread-162766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:39:31.329 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:39:31.330 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:39:44.699 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:39:45.433 [DEBUG] [Thread-162767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:39:50.941 [DEBUG] [Thread-162768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:39:54.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:39:54.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:39:54.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:39:55.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 39, 48), 13.78, 38.61, 0.0, 17.72, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:39:55.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:39:48
2025-09-29T17:39:55.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:39:55.571 [DEBUG] [Thread-162769] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-29T17:39:55.571 [DEBUG] [Thread-162769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:39:55.587 [DEBUG] [Thread-162769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:39:55.587 [INFO] [Thread-162769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:39:55.591 [DEBUG] [Thread-162769] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] client lang: <none>
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] server lang: <none>
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] kex follows: False
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:39:55.592 [DEBUG] [Thread-162769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:39:55.593 [DEBUG] [Thread-162769] [transport.py] [_log()] Compression: none
2025-09-29T17:39:55.593 [DEBUG] [Thread-162769] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:39:55.612 [DEBUG] [Thread-162769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:39:55.613 [DEBUG] [Thread-162769] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:39:55.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:39:55.614 [DEBUG] [Thread-162769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:39:55.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:39:55.615 [DEBUG] [Thread-162769] [transport.py] [_log()] userauth is OK
2025-09-29T17:39:55.616 [DEBUG] [Thread-162769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:39:55.616 [DEBUG] [Thread-162769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:39:55.616 [DEBUG] [Thread-162769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:39:55.616 [DEBUG] [Thread-162769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:39:55.640 [INFO] [Thread-162769] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:39:55.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:39:56.265 [DEBUG] [Thread-162769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:39:56.265 [DEBUG] [Thread-162769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:39:56.266 [DEBUG] [Thread-162769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:39:56.306 [DEBUG] [Thread-162769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:39:56.306 [DEBUG] [Thread-162769] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:39:56.309 [DEBUG] [Thread-162769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:39:56.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:39:56.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:39:56.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:39:56.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:39:56.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:39:56.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:39:56.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:39:56.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:39:56.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:39:56.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.652496 -999.00  +13.90  15.77     44   +2.10 1 1 1 1 1   887    0 11.41 -22.43 ----- 11.9 15.8 145.2 19.6 17.2 -27.7 17.2 -26.7 18.5 -27.0 18.9 -28.2
2025-09-29T17:39:56.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:39:56.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:39:56.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.652496
2025-09-29T17:39:56.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:39:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:39:56.332 [DEBUG] [Thread-162769] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:39:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:39:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:39:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:39:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:39:48', tmtdew=13.78, humidity=38.61, cloud=0.0, wind=17.72, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:39:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:39:56.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:39:56.435 [DEBUG] [Thread-162772] [transport.py] [_log()] starting thread (client mode): 0x2b91d3c0
2025-09-29T17:39:56.435 [DEBUG] [Thread-162772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:39:56.450 [DEBUG] [Thread-162772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:39:56.450 [INFO] [Thread-162772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:39:56.458 [DEBUG] [Thread-162772] [transport.py] [_log()] client lang: <none>
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] server lang: <none>
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] kex follows: False
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] Compression: none
2025-09-29T17:39:56.459 [DEBUG] [Thread-162772] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:39:56.515 [DEBUG] [Thread-162772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:39:56.515 [DEBUG] [Thread-162772] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:39:56.516 [DEBUG] [Thread-162772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:39:56.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:39:56.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:39:56.572 [DEBUG] [Thread-162772] [transport.py] [_log()] userauth is OK
2025-09-29T17:39:56.572 [DEBUG] [Thread-162772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:39:56.572 [DEBUG] [Thread-162772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:39:56.572 [DEBUG] [Thread-162772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:39:56.572 [DEBUG] [Thread-162772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:39:56.591 [INFO] [Thread-162772] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:39:56.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:39:56.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:39:57.551 [DEBUG] [Thread-162772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:39:57.552 [DEBUG] [Thread-162772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:39:57.599 [DEBUG] [Thread-162772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:39:57.599 [DEBUG] [Thread-162772] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:39:57.609 [DEBUG] [Thread-162772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:39:57.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:39:57.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:39:57.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:39:57.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:39:57.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:39:57.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:39:57.643 [DEBUG] [Thread-162772] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:40:00.463 [DEBUG] [Thread-162774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:40:07.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:40:07.636 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:40:07.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:40:08.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 39, 48), 13.78, 38.61, 0.0, 17.72, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:40:08.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:39:48
2025-09-29T17:40:08.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:40:08.493 [DEBUG] [Thread-162775] [transport.py] [_log()] starting thread (client mode): 0x2e3c1540
2025-09-29T17:40:08.493 [DEBUG] [Thread-162775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:40:08.513 [DEBUG] [Thread-162775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:40:08.513 [INFO] [Thread-162775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:40:08.516 [DEBUG] [Thread-162775] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:40:08.516 [DEBUG] [Thread-162775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:40:08.516 [DEBUG] [Thread-162775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:40:08.516 [DEBUG] [Thread-162775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:08.516 [DEBUG] [Thread-162775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:08.516 [DEBUG] [Thread-162775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:08.516 [DEBUG] [Thread-162775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:08.516 [DEBUG] [Thread-162775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] client lang: <none>
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] server lang: <none>
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] kex follows: False
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] Compression: none
2025-09-29T17:40:08.517 [DEBUG] [Thread-162775] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:40:08.533 [DEBUG] [Thread-162775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:40:08.533 [DEBUG] [Thread-162775] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:40:08.534 [DEBUG] [Thread-162775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:40:08.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:40:08.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:40:08.536 [DEBUG] [Thread-162775] [transport.py] [_log()] userauth is OK
2025-09-29T17:40:08.536 [DEBUG] [Thread-162775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:40:08.536 [DEBUG] [Thread-162775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:40:08.536 [DEBUG] [Thread-162775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:40:08.536 [DEBUG] [Thread-162775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:40:08.554 [INFO] [Thread-162775] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:40:08.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:40:15.510 [DEBUG] [Thread-162777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:40:16.794 [DEBUG] [Thread-162775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:40:16.794 [DEBUG] [Thread-162775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:40:16.794 [DEBUG] [Thread-162775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:40:16.835 [DEBUG] [Thread-162775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:40:16.835 [DEBUG] [Thread-162775] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:40:16.838 [DEBUG] [Thread-162775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:40:16.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:40:16.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:40:16.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:40:16.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:40:16.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:40:16.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:40:16.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:40:16.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:40:16.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:40:16.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.652496 -999.00  +13.90  15.77     44   +2.10 1 1 1 1 1   887    0 11.41 -22.43 ----- 11.9 15.8 145.2 19.6 17.2 -27.7 17.2 -26.7 18.5 -27.0 18.9 -28.2
2025-09-29T17:40:16.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:40:16.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:40:16.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.652496
2025-09-29T17:40:16.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:40:16.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:40:16.928 [DEBUG] [Thread-162775] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:40:16.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:40:16.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:40:16.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:40:16.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:39:48', tmtdew=13.78, humidity=38.61, cloud=0.0, wind=17.72, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:39:35.654', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:40:17.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:40:17.026 [DEBUG] [Thread-162779] [transport.py] [_log()] starting thread (client mode): 0x2b91d360
2025-09-29T17:40:17.026 [DEBUG] [Thread-162779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:40:17.041 [DEBUG] [Thread-162779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:40:17.041 [INFO] [Thread-162779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:40:17.049 [DEBUG] [Thread-162779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:40:17.049 [DEBUG] [Thread-162779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:40:17.049 [DEBUG] [Thread-162779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:40:17.049 [DEBUG] [Thread-162779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:17.049 [DEBUG] [Thread-162779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:17.049 [DEBUG] [Thread-162779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:17.049 [DEBUG] [Thread-162779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:17.050 [DEBUG] [Thread-162779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:40:17.050 [DEBUG] [Thread-162779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:40:17.050 [DEBUG] [Thread-162779] [transport.py] [_log()] client lang: <none>
2025-09-29T17:40:17.050 [DEBUG] [Thread-162779] [transport.py] [_log()] server lang: <none>
2025-09-29T17:40:17.050 [DEBUG] [Thread-162779] [transport.py] [_log()] kex follows: False
2025-09-29T17:40:17.050 [DEBUG] [Thread-162779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:40:17.050 [DEBUG] [Thread-162779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:40:17.050 [DEBUG] [Thread-162779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:40:17.051 [DEBUG] [Thread-162779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:40:17.051 [DEBUG] [Thread-162779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:40:17.051 [DEBUG] [Thread-162779] [transport.py] [_log()] Compression: none
2025-09-29T17:40:17.051 [DEBUG] [Thread-162779] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:40:17.107 [DEBUG] [Thread-162779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:40:17.108 [DEBUG] [Thread-162779] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:40:17.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:40:17.109 [DEBUG] [Thread-162779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:40:17.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:40:17.166 [DEBUG] [Thread-162779] [transport.py] [_log()] userauth is OK
2025-09-29T17:40:17.167 [DEBUG] [Thread-162779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:40:17.167 [DEBUG] [Thread-162779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:40:17.167 [DEBUG] [Thread-162779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:40:17.167 [DEBUG] [Thread-162779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:40:17.185 [INFO] [Thread-162779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:40:17.185 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:40:17.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:40:18.175 [DEBUG] [Thread-162779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:40:18.175 [DEBUG] [Thread-162779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:40:18.223 [DEBUG] [Thread-162779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:40:18.223 [DEBUG] [Thread-162779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:40:18.232 [DEBUG] [Thread-162779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:40:18.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:40:18.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:40:18.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:40:18.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:40:18.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:40:18.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:40:18.267 [DEBUG] [Thread-162779] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:40:28.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:40:28.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:40:28.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:40:28.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 40, 20), 13.82, 38.51, 0.0, 16.96, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:40:28.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:40:20
2025-09-29T17:40:28.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:40:29.135 [DEBUG] [Thread-162781] [transport.py] [_log()] starting thread (client mode): 0x2e3493f0
2025-09-29T17:40:29.135 [DEBUG] [Thread-162781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:40:29.155 [DEBUG] [Thread-162781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:40:29.155 [INFO] [Thread-162781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:40:29.158 [DEBUG] [Thread-162781] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] client lang: <none>
2025-09-29T17:40:29.159 [DEBUG] [Thread-162781] [transport.py] [_log()] server lang: <none>
2025-09-29T17:40:29.160 [DEBUG] [Thread-162781] [transport.py] [_log()] kex follows: False
2025-09-29T17:40:29.160 [DEBUG] [Thread-162781] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:40:29.160 [DEBUG] [Thread-162781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:40:29.160 [DEBUG] [Thread-162781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:40:29.160 [DEBUG] [Thread-162781] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:40:29.160 [DEBUG] [Thread-162781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:40:29.160 [DEBUG] [Thread-162781] [transport.py] [_log()] Compression: none
2025-09-29T17:40:29.160 [DEBUG] [Thread-162781] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:40:29.177 [DEBUG] [Thread-162781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:40:29.177 [DEBUG] [Thread-162781] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:40:29.178 [DEBUG] [Thread-162781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:40:29.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:40:29.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:40:29.220 [DEBUG] [Thread-162781] [transport.py] [_log()] userauth is OK
2025-09-29T17:40:29.221 [DEBUG] [Thread-162781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:40:29.221 [DEBUG] [Thread-162781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:40:29.221 [DEBUG] [Thread-162781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:40:29.221 [DEBUG] [Thread-162781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:40:29.252 [INFO] [Thread-162781] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:40:29.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:40:29.840 [DEBUG] [Thread-162781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:40:29.840 [DEBUG] [Thread-162781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:40:29.841 [DEBUG] [Thread-162781] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:40:29.881 [DEBUG] [Thread-162781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:40:29.881 [DEBUG] [Thread-162781] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:40:29.884 [DEBUG] [Thread-162781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:40:29.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:40:29.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:40:29.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:40:29.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:40:29.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:40:29.904 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:40:29.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:40:29.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:40:29.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:40:29.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.652842 -999.00  +13.80  15.49     44   +2.00 1 1 1 1 1   887    0 11.11 -23.59 ----- 14.7 15.5 150.6 18.6 17.2 -28.1 17.1 -27.1 18.5 -26.8 18.9 -28.5
2025-09-29T17:40:29.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:40:29.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:40:29.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.652842
2025-09-29T17:40:29.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:40:29.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:40:29.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:40:29.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:40:29.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:40:29.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:40:20', tmtdew=13.82, humidity=38.51, cloud=0.0, wind=16.96, temperature=14.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:40:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:40:29.906 [DEBUG] [Thread-162781] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:40:29.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:40:30.001 [DEBUG] [Thread-162784] [transport.py] [_log()] starting thread (client mode): 0x2b969d20
2025-09-29T17:40:30.001 [DEBUG] [Thread-162784] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:40:30.015 [DEBUG] [Thread-162784] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:40:30.015 [INFO] [Thread-162784] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:40:30.023 [DEBUG] [Thread-162784] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:40:30.023 [DEBUG] [Thread-162784] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] client lang: <none>
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] server lang: <none>
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] kex follows: False
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] Compression: none
2025-09-29T17:40:30.024 [DEBUG] [Thread-162784] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:40:30.078 [DEBUG] [Thread-162784] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:40:30.078 [DEBUG] [Thread-162784] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:40:30.079 [DEBUG] [Thread-162784] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:40:30.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:40:30.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:40:30.136 [DEBUG] [Thread-162784] [transport.py] [_log()] userauth is OK
2025-09-29T17:40:30.136 [DEBUG] [Thread-162784] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:40:30.136 [DEBUG] [Thread-162784] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:40:30.137 [DEBUG] [Thread-162784] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:40:30.137 [DEBUG] [Thread-162784] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:40:30.156 [INFO] [Thread-162784] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:40:30.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:40:30.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:40:30.541 [DEBUG] [Thread-162786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:40:31.134 [DEBUG] [Thread-162784] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:40:31.134 [DEBUG] [Thread-162784] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:40:31.182 [DEBUG] [Thread-162784] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:40:31.182 [DEBUG] [Thread-162784] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:40:31.191 [DEBUG] [Thread-162784] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:40:31.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:40:31.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:40:31.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:40:31.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:40:31.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:40:31.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:40:31.226 [DEBUG] [Thread-162784] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:40:31.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:40:31.471 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:40:41.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:40:41.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:40:41.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:40:41.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 40, 20), 13.82, 38.51, 0.0, 16.96, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:40:41.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:40:20
2025-09-29T17:40:41.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:40:42.113 [DEBUG] [Thread-162787] [transport.py] [_log()] starting thread (client mode): 0x2e3c2d70
2025-09-29T17:40:42.113 [DEBUG] [Thread-162787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:40:42.133 [DEBUG] [Thread-162787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:40:42.134 [INFO] [Thread-162787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] client lang: <none>
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] server lang: <none>
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] kex follows: False
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:40:42.137 [DEBUG] [Thread-162787] [transport.py] [_log()] Compression: none
2025-09-29T17:40:42.138 [DEBUG] [Thread-162787] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:40:42.157 [DEBUG] [Thread-162787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:40:42.157 [DEBUG] [Thread-162787] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:40:42.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:40:42.158 [DEBUG] [Thread-162787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:40:42.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:40:42.160 [DEBUG] [Thread-162787] [transport.py] [_log()] userauth is OK
2025-09-29T17:40:42.160 [DEBUG] [Thread-162787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:40:42.160 [DEBUG] [Thread-162787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:40:42.160 [DEBUG] [Thread-162787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:40:42.160 [DEBUG] [Thread-162787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:40:42.183 [INFO] [Thread-162787] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:40:42.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:40:42.935 [DEBUG] [Thread-162787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:40:42.935 [DEBUG] [Thread-162787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:40:42.935 [DEBUG] [Thread-162787] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:40:42.976 [DEBUG] [Thread-162787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:40:42.977 [DEBUG] [Thread-162787] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:40:42.979 [DEBUG] [Thread-162787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:40:42.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:40:42.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:40:42.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:40:42.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:40:42.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:40:42.998 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:40:42.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:40:42.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:40:42.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:40:42.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.652842 -999.00  +13.80  15.49     44   +2.00 1 1 1 1 1   887    0 11.11 -23.59 ----- 14.7 15.5 150.6 18.6 17.2 -28.1 17.1 -27.1 18.5 -26.8 18.9 -28.5
2025-09-29T17:40:42.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:40:42.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:40:42.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.652842
2025-09-29T17:40:42.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:40:43.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:40:43.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:40:43.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:40:43.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:40:43.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:40:20', tmtdew=13.82, humidity=38.51, cloud=0.0, wind=16.96, temperature=14.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:40:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:40:43.000 [DEBUG] [Thread-162787] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:40:43.085 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:40:43.096 [DEBUG] [Thread-162790] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d90
2025-09-29T17:40:43.096 [DEBUG] [Thread-162790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:40:43.111 [DEBUG] [Thread-162790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:40:43.111 [INFO] [Thread-162790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] client lang: <none>
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] server lang: <none>
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] kex follows: False
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:40:43.119 [DEBUG] [Thread-162790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:40:43.120 [DEBUG] [Thread-162790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:40:43.120 [DEBUG] [Thread-162790] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:40:43.120 [DEBUG] [Thread-162790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:40:43.120 [DEBUG] [Thread-162790] [transport.py] [_log()] Compression: none
2025-09-29T17:40:43.120 [DEBUG] [Thread-162790] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:40:43.175 [DEBUG] [Thread-162790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:40:43.176 [DEBUG] [Thread-162790] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:40:43.176 [DEBUG] [Thread-162790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:40:43.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:40:43.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:40:43.231 [DEBUG] [Thread-162790] [transport.py] [_log()] userauth is OK
2025-09-29T17:40:43.231 [DEBUG] [Thread-162790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:40:43.231 [DEBUG] [Thread-162790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:40:43.231 [DEBUG] [Thread-162790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:40:43.232 [DEBUG] [Thread-162790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:40:43.248 [INFO] [Thread-162790] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:40:43.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:40:43.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:40:44.224 [DEBUG] [Thread-162790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:40:44.224 [DEBUG] [Thread-162790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:40:44.274 [DEBUG] [Thread-162790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:40:44.274 [DEBUG] [Thread-162790] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:40:44.283 [DEBUG] [Thread-162790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:40:44.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:40:44.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:40:44.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:40:44.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:40:44.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:40:44.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:40:44.319 [DEBUG] [Thread-162790] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:40:45.591 [DEBUG] [Thread-162792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:40:50.971 [DEBUG] [Thread-162793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:40:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:40:54.313 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:40:54.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:40:54.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 40, 52), 13.87, 38.5, 0.0, 18.51, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:40:54.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:40:52
2025-09-29T17:40:55.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:40:55.175 [DEBUG] [Thread-162794] [transport.py] [_log()] starting thread (client mode): 0x2e34bbe0
2025-09-29T17:40:55.175 [DEBUG] [Thread-162794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:40:55.196 [DEBUG] [Thread-162794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:40:55.196 [INFO] [Thread-162794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:40:55.198 [DEBUG] [Thread-162794] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:40:55.198 [DEBUG] [Thread-162794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] client lang: <none>
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] server lang: <none>
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] kex follows: False
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] Compression: none
2025-09-29T17:40:55.199 [DEBUG] [Thread-162794] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:40:55.212 [DEBUG] [Thread-162794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:40:55.213 [DEBUG] [Thread-162794] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:40:55.213 [DEBUG] [Thread-162794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:40:55.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:40:55.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:40:55.215 [DEBUG] [Thread-162794] [transport.py] [_log()] userauth is OK
2025-09-29T17:40:55.215 [DEBUG] [Thread-162794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:40:55.215 [DEBUG] [Thread-162794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:40:55.215 [DEBUG] [Thread-162794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:40:55.215 [DEBUG] [Thread-162794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:40:55.239 [INFO] [Thread-162794] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:40:55.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:40:55.884 [DEBUG] [Thread-162794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:40:55.884 [DEBUG] [Thread-162794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:40:55.885 [DEBUG] [Thread-162794] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:40:55.925 [DEBUG] [Thread-162794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:40:55.925 [DEBUG] [Thread-162794] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:40:55.927 [DEBUG] [Thread-162794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:40:55.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:40:55.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:40:55.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:40:55.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:40:55.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:40:55.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:40:55.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.653190 -999.00  +13.80  10.81     44   +2.10 1 1 1 1 1   887    0 11.31 -23.15 ----- 14.0 10.8 156.8 14.3 17.2 -27.5 17.1 -26.7 18.4 -27.1 19.0 -27.9
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.653190
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:40:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:40:55.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:40:52', tmtdew=13.87, humidity=38.5, cloud=0.0, wind=18.51, temperature=14.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:40:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:40:55.946 [DEBUG] [Thread-162794] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:40:56.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:40:56.037 [DEBUG] [Thread-162797] [transport.py] [_log()] starting thread (client mode): 0x2e3499f0
2025-09-29T17:40:56.037 [DEBUG] [Thread-162797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:40:56.053 [DEBUG] [Thread-162797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:40:56.053 [INFO] [Thread-162797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] client lang: <none>
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] server lang: <none>
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] kex follows: False
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:40:56.062 [DEBUG] [Thread-162797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:40:56.063 [DEBUG] [Thread-162797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:40:56.063 [DEBUG] [Thread-162797] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:40:56.063 [DEBUG] [Thread-162797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:40:56.063 [DEBUG] [Thread-162797] [transport.py] [_log()] Compression: none
2025-09-29T17:40:56.063 [DEBUG] [Thread-162797] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:40:56.119 [DEBUG] [Thread-162797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:40:56.120 [DEBUG] [Thread-162797] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:40:56.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:40:56.120 [DEBUG] [Thread-162797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:40:56.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:40:56.176 [DEBUG] [Thread-162797] [transport.py] [_log()] userauth is OK
2025-09-29T17:40:56.176 [DEBUG] [Thread-162797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:40:56.176 [DEBUG] [Thread-162797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:40:56.176 [DEBUG] [Thread-162797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:40:56.177 [DEBUG] [Thread-162797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:40:56.196 [INFO] [Thread-162797] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:40:56.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:40:56.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:40:57.171 [DEBUG] [Thread-162797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:40:57.171 [DEBUG] [Thread-162797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:40:57.219 [DEBUG] [Thread-162797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:40:57.219 [DEBUG] [Thread-162797] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:40:57.228 [DEBUG] [Thread-162797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:40:57.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:40:57.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:40:57.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:40:57.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:40:57.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:40:57.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:40:57.263 [DEBUG] [Thread-162797] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:00.618 [DEBUG] [Thread-162799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:41:07.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:41:07.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:41:07.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:41:07.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 40, 52), 13.87, 38.5, 0.0, 18.51, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:41:07.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:40:52
2025-09-29T17:41:07.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:41:08.113 [DEBUG] [Thread-162800] [transport.py] [_log()] starting thread (client mode): 0x2e3c2d40
2025-09-29T17:41:08.113 [DEBUG] [Thread-162800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:41:08.133 [DEBUG] [Thread-162800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:41:08.133 [INFO] [Thread-162800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] client lang: <none>
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] server lang: <none>
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] kex follows: False
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] Compression: none
2025-09-29T17:41:08.135 [DEBUG] [Thread-162800] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:41:08.149 [DEBUG] [Thread-162800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:41:08.149 [DEBUG] [Thread-162800] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:41:08.150 [DEBUG] [Thread-162800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:41:08.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:41:08.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:41:08.152 [DEBUG] [Thread-162800] [transport.py] [_log()] userauth is OK
2025-09-29T17:41:08.152 [DEBUG] [Thread-162800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:41:08.152 [DEBUG] [Thread-162800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:41:08.152 [DEBUG] [Thread-162800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:41:08.153 [DEBUG] [Thread-162800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:41:08.167 [INFO] [Thread-162800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:41:08.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:41:08.984 [DEBUG] [Thread-162800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:41:08.984 [DEBUG] [Thread-162800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:41:08.984 [DEBUG] [Thread-162800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:41:09.025 [DEBUG] [Thread-162800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:41:09.025 [DEBUG] [Thread-162800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:41:09.028 [DEBUG] [Thread-162800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:41:09.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:41:09.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:41:09.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:41:09.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:41:09.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:41:09.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:41:09.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:41:09.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:41:09.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:41:09.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.653190 -999.00  +13.80  10.81     44   +2.10 1 1 1 1 1   887    0 11.31 -23.15 ----- 14.0 10.8 156.8 14.3 17.2 -27.5 17.1 -26.7 18.4 -27.1 19.0 -27.9
2025-09-29T17:41:09.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:41:09.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:41:09.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.653190
2025-09-29T17:41:09.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:41:09.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:41:09.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:41:09.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:41:09.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:41:09.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:40:52', tmtdew=13.87, humidity=38.5, cloud=0.0, wind=18.51, temperature=14.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:40:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:41:09.054 [DEBUG] [Thread-162800] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:09.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:41:09.153 [DEBUG] [Thread-162803] [transport.py] [_log()] starting thread (client mode): 0x2b9214e0
2025-09-29T17:41:09.153 [DEBUG] [Thread-162803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:41:09.167 [DEBUG] [Thread-162803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:41:09.167 [INFO] [Thread-162803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:41:09.175 [DEBUG] [Thread-162803] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:41:09.175 [DEBUG] [Thread-162803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] client lang: <none>
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] server lang: <none>
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] kex follows: False
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] Compression: none
2025-09-29T17:41:09.176 [DEBUG] [Thread-162803] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:41:09.231 [DEBUG] [Thread-162803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:41:09.232 [DEBUG] [Thread-162803] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:41:09.232 [DEBUG] [Thread-162803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:41:09.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:41:09.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:41:09.288 [DEBUG] [Thread-162803] [transport.py] [_log()] userauth is OK
2025-09-29T17:41:09.288 [DEBUG] [Thread-162803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:41:09.288 [DEBUG] [Thread-162803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:41:09.288 [DEBUG] [Thread-162803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:41:09.288 [DEBUG] [Thread-162803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:41:09.307 [INFO] [Thread-162803] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:41:09.307 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:41:09.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:41:10.240 [DEBUG] [Thread-162803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:41:10.240 [DEBUG] [Thread-162803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:41:10.288 [DEBUG] [Thread-162803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:41:10.288 [DEBUG] [Thread-162803] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:41:10.297 [DEBUG] [Thread-162803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:41:10.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:41:10.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:41:10.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:41:10.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:41:10.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:41:10.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:41:10.331 [DEBUG] [Thread-162803] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:15.663 [DEBUG] [Thread-162805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:41:20.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:41:20.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:41:20.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:41:20.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 40, 52), 13.87, 38.5, 0.0, 18.51, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:41:20.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:40:52
2025-09-29T17:41:21.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:41:21.184 [DEBUG] [Thread-162806] [transport.py] [_log()] starting thread (client mode): 0x2e3df610
2025-09-29T17:41:21.184 [DEBUG] [Thread-162806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:41:21.206 [DEBUG] [Thread-162806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:41:21.207 [INFO] [Thread-162806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:41:21.210 [DEBUG] [Thread-162806] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:41:21.210 [DEBUG] [Thread-162806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:41:21.210 [DEBUG] [Thread-162806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:41:21.210 [DEBUG] [Thread-162806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:21.210 [DEBUG] [Thread-162806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:21.210 [DEBUG] [Thread-162806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:21.210 [DEBUG] [Thread-162806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] client lang: <none>
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] server lang: <none>
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] kex follows: False
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] Compression: none
2025-09-29T17:41:21.211 [DEBUG] [Thread-162806] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:41:21.227 [DEBUG] [Thread-162806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:41:21.227 [DEBUG] [Thread-162806] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:41:21.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:41:21.228 [DEBUG] [Thread-162806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:41:21.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:41:21.230 [DEBUG] [Thread-162806] [transport.py] [_log()] userauth is OK
2025-09-29T17:41:21.230 [DEBUG] [Thread-162806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:41:21.231 [DEBUG] [Thread-162806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:41:21.231 [DEBUG] [Thread-162806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:41:21.231 [DEBUG] [Thread-162806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:41:21.266 [INFO] [Thread-162806] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:41:21.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:41:22.000 [DEBUG] [Thread-162806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:41:22.000 [DEBUG] [Thread-162806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:41:22.001 [DEBUG] [Thread-162806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:41:22.041 [DEBUG] [Thread-162806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:41:22.041 [DEBUG] [Thread-162806] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:41:22.045 [DEBUG] [Thread-162806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:41:22.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:41:22.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:41:22.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:41:22.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:41:22.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:41:22.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:41:22.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:41:22.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:41:22.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:41:22.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.653190 -999.00  +13.80  10.81     44   +2.10 1 1 1 1 1   887    0 11.31 -23.15 ----- 14.0 10.8 156.8 14.3 17.2 -27.5 17.1 -26.7 18.4 -27.1 19.0 -27.9
2025-09-29T17:41:22.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:41:22.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:41:22.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.653190
2025-09-29T17:41:22.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:41:22.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:41:22.078 [DEBUG] [Thread-162806] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:22.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:41:22.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:41:22.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:41:22.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:40:52', tmtdew=13.87, humidity=38.5, cloud=0.0, wind=18.51, temperature=14.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:40:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:41:22.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:41:22.174 [DEBUG] [Thread-162809] [transport.py] [_log()] starting thread (client mode): 0x2b9cf8e0
2025-09-29T17:41:22.174 [DEBUG] [Thread-162809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:41:22.188 [DEBUG] [Thread-162809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:41:22.188 [INFO] [Thread-162809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] client lang: <none>
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] server lang: <none>
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] kex follows: False
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:41:22.196 [DEBUG] [Thread-162809] [transport.py] [_log()] Compression: none
2025-09-29T17:41:22.197 [DEBUG] [Thread-162809] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:41:22.255 [DEBUG] [Thread-162809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:41:22.256 [DEBUG] [Thread-162809] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:41:22.256 [DEBUG] [Thread-162809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:41:22.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:41:22.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:41:22.312 [DEBUG] [Thread-162809] [transport.py] [_log()] userauth is OK
2025-09-29T17:41:22.312 [DEBUG] [Thread-162809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:41:22.312 [DEBUG] [Thread-162809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:41:22.312 [DEBUG] [Thread-162809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:41:22.312 [DEBUG] [Thread-162809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:41:22.332 [INFO] [Thread-162809] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:41:22.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:41:22.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:41:23.322 [DEBUG] [Thread-162809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:41:23.322 [DEBUG] [Thread-162809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:41:23.374 [DEBUG] [Thread-162809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:41:23.374 [DEBUG] [Thread-162809] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:41:23.386 [DEBUG] [Thread-162809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:41:23.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:41:23.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:41:23.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:41:23.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:41:23.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:41:23.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:41:23.421 [DEBUG] [Thread-162809] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:30.690 [DEBUG] [Thread-162811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:41:31.609 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:41:31.610 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:41:33.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:41:33.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:41:33.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:41:34.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 41, 24), 13.87, 38.48, 0.0, 19.92, 14.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:41:34.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:41:24
2025-09-29T17:41:34.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:41:34.267 [DEBUG] [Thread-162812] [transport.py] [_log()] starting thread (client mode): 0x2b922c80
2025-09-29T17:41:34.267 [DEBUG] [Thread-162812] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:41:34.288 [DEBUG] [Thread-162812] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:41:34.288 [INFO] [Thread-162812] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:41:34.291 [DEBUG] [Thread-162812] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:41:34.291 [DEBUG] [Thread-162812] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:41:34.291 [DEBUG] [Thread-162812] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:41:34.291 [DEBUG] [Thread-162812] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] client lang: <none>
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] server lang: <none>
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] kex follows: False
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] Compression: none
2025-09-29T17:41:34.292 [DEBUG] [Thread-162812] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:41:34.309 [DEBUG] [Thread-162812] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:41:34.310 [DEBUG] [Thread-162812] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:41:34.311 [DEBUG] [Thread-162812] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:41:34.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:41:34.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:41:34.312 [DEBUG] [Thread-162812] [transport.py] [_log()] userauth is OK
2025-09-29T17:41:34.313 [DEBUG] [Thread-162812] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:41:34.313 [DEBUG] [Thread-162812] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:41:34.313 [DEBUG] [Thread-162812] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:41:34.313 [DEBUG] [Thread-162812] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:41:34.337 [INFO] [Thread-162812] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:41:34.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:41:34.933 [DEBUG] [Thread-162812] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:41:34.933 [DEBUG] [Thread-162812] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:41:34.933 [DEBUG] [Thread-162812] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:41:34.974 [DEBUG] [Thread-162812] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:41:34.974 [DEBUG] [Thread-162812] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:41:34.977 [DEBUG] [Thread-162812] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:41:34.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:41:34.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:41:34.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:41:34.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:41:34.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:41:34.999 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:41:35.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:41:35.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:41:35.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:41:35.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.653537 -999.00  +13.90  12.18     44   +2.10 1 1 1 1 1   887    0 10.97 -23.60 ----- 12.9 12.2 159.0 16.2 17.2 -27.7 17.1 -26.7 18.4 -27.2 18.9 -28.6
2025-09-29T17:41:35.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:41:35.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:41:35.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.653537
2025-09-29T17:41:35.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:41:35.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:41:35.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:41:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:41:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:41:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:41:24', tmtdew=13.87, humidity=38.48, cloud=0.0, wind=19.92, temperature=14.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:41:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:41:35.002 [DEBUG] [Thread-162812] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:35.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:41:35.096 [DEBUG] [Thread-162815] [transport.py] [_log()] starting thread (client mode): 0x2e3c3790
2025-09-29T17:41:35.097 [DEBUG] [Thread-162815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:41:35.112 [DEBUG] [Thread-162815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:41:35.112 [INFO] [Thread-162815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:41:35.120 [DEBUG] [Thread-162815] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:41:35.120 [DEBUG] [Thread-162815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:41:35.120 [DEBUG] [Thread-162815] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] client lang: <none>
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] server lang: <none>
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] kex follows: False
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] Compression: none
2025-09-29T17:41:35.121 [DEBUG] [Thread-162815] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:41:35.179 [DEBUG] [Thread-162815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:41:35.179 [DEBUG] [Thread-162815] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:41:35.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:41:35.180 [DEBUG] [Thread-162815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:41:35.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:41:35.236 [DEBUG] [Thread-162815] [transport.py] [_log()] userauth is OK
2025-09-29T17:41:35.236 [DEBUG] [Thread-162815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:41:35.237 [DEBUG] [Thread-162815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:41:35.237 [DEBUG] [Thread-162815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:41:35.237 [DEBUG] [Thread-162815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:41:35.256 [INFO] [Thread-162815] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:41:35.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:41:35.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:41:36.228 [DEBUG] [Thread-162815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:41:36.229 [DEBUG] [Thread-162815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:41:36.276 [DEBUG] [Thread-162815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:41:36.276 [DEBUG] [Thread-162815] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:41:36.285 [DEBUG] [Thread-162815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:41:36.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:41:36.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:41:36.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:41:36.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:41:36.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:41:36.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:41:36.319 [DEBUG] [Thread-162815] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:45.718 [DEBUG] [Thread-162817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:41:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:41:46.322 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:41:46.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:41:46.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 41, 24), 13.87, 38.48, 0.0, 19.92, 14.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:41:46.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:41:24
2025-09-29T17:41:47.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:41:47.171 [DEBUG] [Thread-162818] [transport.py] [_log()] starting thread (client mode): 0x2e34a1d0
2025-09-29T17:41:47.171 [DEBUG] [Thread-162818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:41:47.192 [DEBUG] [Thread-162818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:41:47.192 [INFO] [Thread-162818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:41:47.195 [DEBUG] [Thread-162818] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] client lang: <none>
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] server lang: <none>
2025-09-29T17:41:47.196 [DEBUG] [Thread-162818] [transport.py] [_log()] kex follows: False
2025-09-29T17:41:47.197 [DEBUG] [Thread-162818] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:41:47.197 [DEBUG] [Thread-162818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:41:47.197 [DEBUG] [Thread-162818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:41:47.197 [DEBUG] [Thread-162818] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:41:47.197 [DEBUG] [Thread-162818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:41:47.197 [DEBUG] [Thread-162818] [transport.py] [_log()] Compression: none
2025-09-29T17:41:47.197 [DEBUG] [Thread-162818] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:41:47.214 [DEBUG] [Thread-162818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:41:47.215 [DEBUG] [Thread-162818] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:41:47.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:41:47.216 [DEBUG] [Thread-162818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:41:47.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:41:47.218 [DEBUG] [Thread-162818] [transport.py] [_log()] userauth is OK
2025-09-29T17:41:47.218 [DEBUG] [Thread-162818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:41:47.218 [DEBUG] [Thread-162818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:41:47.218 [DEBUG] [Thread-162818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:41:47.218 [DEBUG] [Thread-162818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:41:47.237 [INFO] [Thread-162818] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:41:47.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:41:47.992 [DEBUG] [Thread-162818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:41:47.993 [DEBUG] [Thread-162818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:41:47.993 [DEBUG] [Thread-162818] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:41:48.033 [DEBUG] [Thread-162818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:41:48.033 [DEBUG] [Thread-162818] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:41:48.036 [DEBUG] [Thread-162818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:41:48.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:41:48.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:41:48.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:41:48.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:41:48.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:41:48.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:41:48.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:41:48.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:41:48.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:41:48.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.653537 -999.00  +13.90  12.18     44   +2.10 1 1 1 1 1   887    0 10.97 -23.60 ----- 12.9 12.2 159.0 16.2 17.2 -27.7 17.1 -26.7 18.4 -27.2 18.9 -28.6
2025-09-29T17:41:48.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:41:48.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:41:48.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.653537
2025-09-29T17:41:48.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:41:48.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:41:48.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:41:48.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:41:48.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:41:48.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:41:24', tmtdew=13.87, humidity=38.48, cloud=0.0, wind=19.92, temperature=14.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:41:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:41:48.063 [DEBUG] [Thread-162818] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:48.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:41:48.160 [DEBUG] [Thread-162821] [transport.py] [_log()] starting thread (client mode): 0x2b921600
2025-09-29T17:41:48.160 [DEBUG] [Thread-162821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:41:48.174 [DEBUG] [Thread-162821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:41:48.174 [INFO] [Thread-162821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:41:48.182 [DEBUG] [Thread-162821] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:41:48.182 [DEBUG] [Thread-162821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:41:48.182 [DEBUG] [Thread-162821] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:41:48.182 [DEBUG] [Thread-162821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] client lang: <none>
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] server lang: <none>
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] kex follows: False
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] Compression: none
2025-09-29T17:41:48.183 [DEBUG] [Thread-162821] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:41:48.240 [DEBUG] [Thread-162821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:41:48.240 [DEBUG] [Thread-162821] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:41:48.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:41:48.241 [DEBUG] [Thread-162821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:41:48.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:41:48.296 [DEBUG] [Thread-162821] [transport.py] [_log()] userauth is OK
2025-09-29T17:41:48.296 [DEBUG] [Thread-162821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:41:48.296 [DEBUG] [Thread-162821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:41:48.297 [DEBUG] [Thread-162821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:41:48.297 [DEBUG] [Thread-162821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:41:48.315 [INFO] [Thread-162821] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:41:48.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:41:48.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:41:49.303 [DEBUG] [Thread-162821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:41:49.303 [DEBUG] [Thread-162821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:41:49.351 [DEBUG] [Thread-162821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:41:49.351 [DEBUG] [Thread-162821] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:41:49.359 [DEBUG] [Thread-162821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:41:49.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:41:49.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:41:49.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:41:49.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:41:49.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:41:49.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:41:49.391 [DEBUG] [Thread-162821] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:41:51.007 [DEBUG] [Thread-162823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:41:59.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:41:59.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:41:59.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:41:59.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 41, 55), 13.84, 38.55, 0.0, 21.1, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:41:59.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:41:55
2025-09-29T17:42:00.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:42:00.229 [DEBUG] [Thread-162824] [transport.py] [_log()] starting thread (client mode): 0x2b9cf8e0
2025-09-29T17:42:00.229 [DEBUG] [Thread-162824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:00.243 [DEBUG] [Thread-162824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:42:00.243 [INFO] [Thread-162824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:00.246 [DEBUG] [Thread-162824] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:00.247 [DEBUG] [Thread-162824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:00.247 [DEBUG] [Thread-162824] [transport.py] [_log()] Compression: none
2025-09-29T17:42:00.247 [DEBUG] [Thread-162824] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:00.262 [DEBUG] [Thread-162824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:00.262 [DEBUG] [Thread-162824] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:00.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:42:00.263 [DEBUG] [Thread-162824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:42:00.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:00.265 [DEBUG] [Thread-162824] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:00.265 [DEBUG] [Thread-162824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:00.266 [DEBUG] [Thread-162824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:00.266 [DEBUG] [Thread-162824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:42:00.266 [DEBUG] [Thread-162824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:00.283 [INFO] [Thread-162824] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:00.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:00.768 [DEBUG] [Thread-162826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:42:00.873 [DEBUG] [Thread-162824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:00.874 [DEBUG] [Thread-162824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:00.874 [DEBUG] [Thread-162824] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:42:00.914 [DEBUG] [Thread-162824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:00.914 [DEBUG] [Thread-162824] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:00.917 [DEBUG] [Thread-162824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:00.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:00.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:42:00.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:42:00.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:42:00.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:00.936 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:42:00.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:00.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:00.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:42:00.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.653884 -999.00  +13.90  15.03     44   +2.10 1 1 1 1 1   887    0 10.98 -25.54 ----- 13.6 15.0 165.2 22.0 17.2 -27.8 17.1 -26.6 18.4 -26.9 18.9 -28.6
2025-09-29T17:42:00.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:42:00.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:42:00.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.653884
2025-09-29T17:42:00.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:42:00.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:42:00.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:42:00.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:42:00.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:42:00.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:41:55', tmtdew=13.84, humidity=38.55, cloud=0.0, wind=21.1, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:41:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:42:00.938 [DEBUG] [Thread-162824] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:01.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:42:01.033 [DEBUG] [Thread-162828] [transport.py] [_log()] starting thread (client mode): 0x2b91ecb0
2025-09-29T17:42:01.033 [DEBUG] [Thread-162828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:01.047 [DEBUG] [Thread-162828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:42:01.047 [INFO] [Thread-162828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:42:01.055 [DEBUG] [Thread-162828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:01.055 [DEBUG] [Thread-162828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:42:01.055 [DEBUG] [Thread-162828] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:01.055 [DEBUG] [Thread-162828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:01.055 [DEBUG] [Thread-162828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:01.056 [DEBUG] [Thread-162828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:01.057 [DEBUG] [Thread-162828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:01.057 [DEBUG] [Thread-162828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:01.057 [DEBUG] [Thread-162828] [transport.py] [_log()] Compression: none
2025-09-29T17:42:01.057 [DEBUG] [Thread-162828] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:01.114 [DEBUG] [Thread-162828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:01.115 [DEBUG] [Thread-162828] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:01.115 [DEBUG] [Thread-162828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:42:01.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:42:01.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:01.174 [DEBUG] [Thread-162828] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:01.174 [DEBUG] [Thread-162828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:01.174 [DEBUG] [Thread-162828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:01.174 [DEBUG] [Thread-162828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:42:01.174 [DEBUG] [Thread-162828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:01.195 [INFO] [Thread-162828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:01.195 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:42:01.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:02.182 [DEBUG] [Thread-162828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:02.182 [DEBUG] [Thread-162828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:02.230 [DEBUG] [Thread-162828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:02.230 [DEBUG] [Thread-162828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:02.239 [DEBUG] [Thread-162828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:02.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:02.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:42:02.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:42:02.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:02.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:02.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:02.274 [DEBUG] [Thread-162828] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:12.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:42:12.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:42:12.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:42:12.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 41, 55), 13.84, 38.55, 0.0, 21.1, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:42:12.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:41:55
2025-09-29T17:42:12.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:42:13.110 [DEBUG] [Thread-162830] [transport.py] [_log()] starting thread (client mode): 0x2b9f37c0
2025-09-29T17:42:13.110 [DEBUG] [Thread-162830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:13.131 [DEBUG] [Thread-162830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:42:13.131 [INFO] [Thread-162830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:42:13.134 [DEBUG] [Thread-162830] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:13.134 [DEBUG] [Thread-162830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:42:13.134 [DEBUG] [Thread-162830] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:13.134 [DEBUG] [Thread-162830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:13.134 [DEBUG] [Thread-162830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:13.134 [DEBUG] [Thread-162830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:13.134 [DEBUG] [Thread-162830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] Compression: none
2025-09-29T17:42:13.135 [DEBUG] [Thread-162830] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:13.151 [DEBUG] [Thread-162830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:13.151 [DEBUG] [Thread-162830] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:13.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:42:13.152 [DEBUG] [Thread-162830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:42:13.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:13.154 [DEBUG] [Thread-162830] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:13.154 [DEBUG] [Thread-162830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:13.154 [DEBUG] [Thread-162830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:13.154 [DEBUG] [Thread-162830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:42:13.154 [DEBUG] [Thread-162830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:13.178 [INFO] [Thread-162830] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:13.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:14.023 [DEBUG] [Thread-162830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:14.023 [DEBUG] [Thread-162830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:14.023 [DEBUG] [Thread-162830] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:42:14.064 [DEBUG] [Thread-162830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:14.064 [DEBUG] [Thread-162830] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:14.067 [DEBUG] [Thread-162830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:14.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:14.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:42:14.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:42:14.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:42:14.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:14.087 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:42:14.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:14.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:14.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:42:14.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.653884 -999.00  +13.90  15.03     44   +2.10 1 1 1 1 1   887    0 10.98 -25.54 ----- 13.6 15.0 165.2 22.0 17.2 -27.8 17.1 -26.6 18.4 -26.9 18.9 -28.6
2025-09-29T17:42:14.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:42:14.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:42:14.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.653884
2025-09-29T17:42:14.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:42:14.088 [DEBUG] [Thread-162830] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:42:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:42:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:42:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:42:14.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:41:55', tmtdew=13.84, humidity=38.55, cloud=0.0, wind=21.1, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:41:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:42:14.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:42:14.185 [DEBUG] [Thread-162833] [transport.py] [_log()] starting thread (client mode): 0x2b9f04c0
2025-09-29T17:42:14.185 [DEBUG] [Thread-162833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:14.199 [DEBUG] [Thread-162833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:42:14.199 [INFO] [Thread-162833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:42:14.206 [DEBUG] [Thread-162833] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:14.206 [DEBUG] [Thread-162833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:42:14.206 [DEBUG] [Thread-162833] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] Compression: none
2025-09-29T17:42:14.207 [DEBUG] [Thread-162833] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:14.264 [DEBUG] [Thread-162833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:14.264 [DEBUG] [Thread-162833] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:14.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:42:14.265 [DEBUG] [Thread-162833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:42:14.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:14.320 [DEBUG] [Thread-162833] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:14.320 [DEBUG] [Thread-162833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:14.320 [DEBUG] [Thread-162833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:14.320 [DEBUG] [Thread-162833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:42:14.321 [DEBUG] [Thread-162833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:14.343 [INFO] [Thread-162833] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:14.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:42:14.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:15.309 [DEBUG] [Thread-162833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:15.309 [DEBUG] [Thread-162833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:15.357 [DEBUG] [Thread-162833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:15.357 [DEBUG] [Thread-162833] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:15.366 [DEBUG] [Thread-162833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:15.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:15.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:42:15.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:42:15.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:15.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:15.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:15.401 [DEBUG] [Thread-162833] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:15.795 [DEBUG] [Thread-162835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:42:25.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:42:25.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:42:25.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:42:25.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 41, 55), 13.84, 38.55, 0.0, 21.1, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:42:25.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:41:55
2025-09-29T17:42:26.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:42:26.231 [DEBUG] [Thread-162836] [transport.py] [_log()] starting thread (client mode): 0x2b9f0790
2025-09-29T17:42:26.231 [DEBUG] [Thread-162836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:26.251 [DEBUG] [Thread-162836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:42:26.251 [INFO] [Thread-162836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:42:26.254 [DEBUG] [Thread-162836] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:26.255 [DEBUG] [Thread-162836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:26.256 [DEBUG] [Thread-162836] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:26.256 [DEBUG] [Thread-162836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:26.256 [DEBUG] [Thread-162836] [transport.py] [_log()] Compression: none
2025-09-29T17:42:26.256 [DEBUG] [Thread-162836] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:26.273 [DEBUG] [Thread-162836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:26.273 [DEBUG] [Thread-162836] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:26.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:42:26.274 [DEBUG] [Thread-162836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:42:26.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:26.317 [DEBUG] [Thread-162836] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:26.317 [DEBUG] [Thread-162836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:26.317 [DEBUG] [Thread-162836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:26.317 [DEBUG] [Thread-162836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:42:26.317 [DEBUG] [Thread-162836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:26.338 [INFO] [Thread-162836] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:26.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:27.175 [DEBUG] [Thread-162836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:27.175 [DEBUG] [Thread-162836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:27.175 [DEBUG] [Thread-162836] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:42:27.216 [DEBUG] [Thread-162836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:27.216 [DEBUG] [Thread-162836] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:27.219 [DEBUG] [Thread-162836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:27.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:27.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:42:27.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:42:27.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:42:27.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:27.241 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:42:27.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:27.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:27.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:42:27.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.653884 -999.00  +13.90  15.03     44   +2.10 1 1 1 1 1   887    0 10.98 -25.54 ----- 13.6 15.0 165.2 22.0 17.2 -27.8 17.1 -26.6 18.4 -26.9 18.9 -28.6
2025-09-29T17:42:27.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:42:27.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:42:27.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.653884
2025-09-29T17:42:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:42:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:42:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:42:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:42:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:42:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:41:55', tmtdew=13.84, humidity=38.55, cloud=0.0, wind=21.1, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:41:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:42:27.243 [DEBUG] [Thread-162836] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:27.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:42:27.331 [DEBUG] [Thread-162839] [transport.py] [_log()] starting thread (client mode): 0x2e38d360
2025-09-29T17:42:27.331 [DEBUG] [Thread-162839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:27.346 [DEBUG] [Thread-162839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:42:27.346 [INFO] [Thread-162839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:42:27.353 [DEBUG] [Thread-162839] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] Compression: none
2025-09-29T17:42:27.354 [DEBUG] [Thread-162839] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:27.412 [DEBUG] [Thread-162839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:27.413 [DEBUG] [Thread-162839] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:27.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:42:27.414 [DEBUG] [Thread-162839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:42:27.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:27.468 [DEBUG] [Thread-162839] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:27.469 [DEBUG] [Thread-162839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:27.469 [DEBUG] [Thread-162839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:27.469 [DEBUG] [Thread-162839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:42:27.469 [DEBUG] [Thread-162839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:27.488 [INFO] [Thread-162839] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:27.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:42:27.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:28.486 [DEBUG] [Thread-162839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:28.487 [DEBUG] [Thread-162839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:28.534 [DEBUG] [Thread-162839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:28.534 [DEBUG] [Thread-162839] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:28.543 [DEBUG] [Thread-162839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:28.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:28.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:42:28.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:42:28.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:28.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:28.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:28.577 [DEBUG] [Thread-162839] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:30.848 [DEBUG] [Thread-162841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:42:31.749 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:42:31.750 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:42:38.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:42:38.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:42:38.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:42:39.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 42, 28), 13.8, 38.66, 0.0, 19.0, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:42:39.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:42:28
2025-09-29T17:42:39.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:42:39.416 [DEBUG] [Thread-162842] [transport.py] [_log()] starting thread (client mode): 0x2b923520
2025-09-29T17:42:39.416 [DEBUG] [Thread-162842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:39.435 [DEBUG] [Thread-162842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:42:39.435 [INFO] [Thread-162842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:39.438 [DEBUG] [Thread-162842] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] Compression: none
2025-09-29T17:42:39.439 [DEBUG] [Thread-162842] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:39.455 [DEBUG] [Thread-162842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:39.456 [DEBUG] [Thread-162842] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:39.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:42:39.457 [DEBUG] [Thread-162842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:42:39.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:39.458 [DEBUG] [Thread-162842] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:39.459 [DEBUG] [Thread-162842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:39.459 [DEBUG] [Thread-162842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:39.459 [DEBUG] [Thread-162842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:42:39.459 [DEBUG] [Thread-162842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:39.482 [INFO] [Thread-162842] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:39.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:40.097 [DEBUG] [Thread-162842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:40.098 [DEBUG] [Thread-162842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:40.098 [DEBUG] [Thread-162842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:42:40.138 [DEBUG] [Thread-162842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:40.138 [DEBUG] [Thread-162842] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:40.141 [DEBUG] [Thread-162842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:40.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:40.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:42:40.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:42:40.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:42:40.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:40.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:42:40.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:40.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:40.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:42:40.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.654232 -999.00  +13.80  12.86     44   +2.10 1 1 1 1 1   887    0 11.19 -23.33 ----- 12.2 12.9 141.6 21.3 17.2 -27.8 17.1 -26.8 18.4 -27.3 18.9 -28.8
2025-09-29T17:42:40.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:42:40.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:42:40.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.654232
2025-09-29T17:42:40.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:42:40.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:42:40.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:42:40.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:42:40.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:42:40.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:42:28', tmtdew=13.8, humidity=38.66, cloud=0.0, wind=19.0, temperature=13.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:42:05.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:42:40.170 [DEBUG] [Thread-162842] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:40.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:42:40.266 [DEBUG] [Thread-162845] [transport.py] [_log()] starting thread (client mode): 0x2b920a00
2025-09-29T17:42:40.266 [DEBUG] [Thread-162845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:40.281 [DEBUG] [Thread-162845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:42:40.281 [INFO] [Thread-162845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:40.289 [DEBUG] [Thread-162845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:40.290 [DEBUG] [Thread-162845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:40.290 [DEBUG] [Thread-162845] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:40.290 [DEBUG] [Thread-162845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:40.290 [DEBUG] [Thread-162845] [transport.py] [_log()] Compression: none
2025-09-29T17:42:40.290 [DEBUG] [Thread-162845] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:40.352 [DEBUG] [Thread-162845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:40.352 [DEBUG] [Thread-162845] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:40.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:42:40.353 [DEBUG] [Thread-162845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:42:40.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:40.409 [DEBUG] [Thread-162845] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:40.409 [DEBUG] [Thread-162845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:40.409 [DEBUG] [Thread-162845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:40.409 [DEBUG] [Thread-162845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:42:40.409 [DEBUG] [Thread-162845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:40.428 [INFO] [Thread-162845] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:40.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:42:40.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:41.418 [DEBUG] [Thread-162845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:41.418 [DEBUG] [Thread-162845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:41.466 [DEBUG] [Thread-162845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:41.466 [DEBUG] [Thread-162845] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:41.474 [DEBUG] [Thread-162845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:41.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:41.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:42:41.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:42:41.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:41.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:41.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:41.505 [DEBUG] [Thread-162845] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:45.874 [DEBUG] [Thread-162847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:42:51.040 [DEBUG] [Thread-162848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:42:51.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:42:51.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:42:51.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:42:52.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 42, 28), 13.8, 38.66, 0.0, 19.0, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:42:52.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:42:28
2025-09-29T17:42:52.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:42:52.334 [DEBUG] [Thread-162849] [transport.py] [_log()] starting thread (client mode): 0x2b94dc90
2025-09-29T17:42:52.334 [DEBUG] [Thread-162849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:52.349 [DEBUG] [Thread-162849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:42:52.349 [INFO] [Thread-162849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] Compression: none
2025-09-29T17:42:52.353 [DEBUG] [Thread-162849] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:52.370 [DEBUG] [Thread-162849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:52.370 [DEBUG] [Thread-162849] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:52.371 [DEBUG] [Thread-162849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:42:52.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:42:52.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:52.372 [DEBUG] [Thread-162849] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:52.372 [DEBUG] [Thread-162849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:52.372 [DEBUG] [Thread-162849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:52.372 [DEBUG] [Thread-162849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:42:52.372 [DEBUG] [Thread-162849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:52.384 [INFO] [Thread-162849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:52.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:53.185 [DEBUG] [Thread-162849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:53.185 [DEBUG] [Thread-162849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:53.185 [DEBUG] [Thread-162849] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:42:53.226 [DEBUG] [Thread-162849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:53.227 [DEBUG] [Thread-162849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:53.230 [DEBUG] [Thread-162849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:53.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:53.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:42:53.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:42:53.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:42:53.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:53.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:42:53.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:53.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:53.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:42:53.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.654232 -999.00  +13.80  12.86     44   +2.10 1 1 1 1 1   887    0 11.19 -23.33 ----- 12.2 12.9 141.6 21.3 17.2 -27.8 17.1 -26.8 18.4 -27.3 18.9 -28.8
2025-09-29T17:42:53.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:42:53.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:42:53.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.654232
2025-09-29T17:42:53.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:42:53.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:42:53.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:42:53.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:42:53.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:42:53.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:42:28', tmtdew=13.8, humidity=38.66, cloud=0.0, wind=19.0, temperature=13.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:42:05.645', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:42:53.256 [DEBUG] [Thread-162849] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:42:53.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:42:53.351 [DEBUG] [Thread-162852] [transport.py] [_log()] starting thread (client mode): 0x2b94ed10
2025-09-29T17:42:53.351 [DEBUG] [Thread-162852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:42:53.366 [DEBUG] [Thread-162852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:42:53.366 [INFO] [Thread-162852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:42:53.374 [DEBUG] [Thread-162852] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:42:53.374 [DEBUG] [Thread-162852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:42:53.374 [DEBUG] [Thread-162852] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:42:53.374 [DEBUG] [Thread-162852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:53.374 [DEBUG] [Thread-162852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:42:53.374 [DEBUG] [Thread-162852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:53.374 [DEBUG] [Thread-162852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] client lang: <none>
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] server lang: <none>
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] kex follows: False
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] Compression: none
2025-09-29T17:42:53.375 [DEBUG] [Thread-162852] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:42:53.432 [DEBUG] [Thread-162852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:42:53.433 [DEBUG] [Thread-162852] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:42:53.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:42:53.434 [DEBUG] [Thread-162852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:42:53.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:42:53.489 [DEBUG] [Thread-162852] [transport.py] [_log()] userauth is OK
2025-09-29T17:42:53.489 [DEBUG] [Thread-162852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:42:53.489 [DEBUG] [Thread-162852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:42:53.489 [DEBUG] [Thread-162852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:42:53.489 [DEBUG] [Thread-162852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:42:53.508 [INFO] [Thread-162852] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:42:53.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:42:53.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:42:54.488 [DEBUG] [Thread-162852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:42:54.488 [DEBUG] [Thread-162852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:42:54.536 [DEBUG] [Thread-162852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:42:54.536 [DEBUG] [Thread-162852] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:42:54.548 [DEBUG] [Thread-162852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:42:54.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:42:54.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:42:54.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:42:54.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:42:54.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:42:54.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:42:54.583 [DEBUG] [Thread-162852] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:00.920 [DEBUG] [Thread-162854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:43:04.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:43:04.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:43:04.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:43:05.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 43), 13.76, 38.65, 0.0, 14.63, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:43:05.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:43:00
2025-09-29T17:43:05.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:43:05.423 [DEBUG] [Thread-162855] [transport.py] [_log()] starting thread (client mode): 0x2e38dc00
2025-09-29T17:43:05.424 [DEBUG] [Thread-162855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:05.445 [DEBUG] [Thread-162855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:43:05.446 [INFO] [Thread-162855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:43:05.449 [DEBUG] [Thread-162855] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:05.449 [DEBUG] [Thread-162855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:43:05.449 [DEBUG] [Thread-162855] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:05.449 [DEBUG] [Thread-162855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:05.449 [DEBUG] [Thread-162855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:05.449 [DEBUG] [Thread-162855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:05.449 [DEBUG] [Thread-162855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] Compression: none
2025-09-29T17:43:05.450 [DEBUG] [Thread-162855] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:05.468 [DEBUG] [Thread-162855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:05.468 [DEBUG] [Thread-162855] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:05.469 [DEBUG] [Thread-162855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:43:05.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:43:05.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:05.471 [DEBUG] [Thread-162855] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:05.471 [DEBUG] [Thread-162855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:05.471 [DEBUG] [Thread-162855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:05.471 [DEBUG] [Thread-162855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:43:05.471 [DEBUG] [Thread-162855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:05.489 [INFO] [Thread-162855] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:05.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:06.112 [DEBUG] [Thread-162855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:06.112 [DEBUG] [Thread-162855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:06.112 [DEBUG] [Thread-162855] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:43:06.153 [DEBUG] [Thread-162855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:06.154 [DEBUG] [Thread-162855] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:06.158 [DEBUG] [Thread-162855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:06.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:06.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:43:06.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:43:06.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:43:06.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:06.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:43:06.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:06.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:06.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:43:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.654579 -999.00  +13.80  13.67     45   +2.10 1 1 1 1 1   887    0 11.26 -22.30 ----- 10.6 13.7 146.5 16.0 17.1 -27.7 17.1 -26.5 18.3 -27.0 18.8 -28.6
2025-09-29T17:43:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:43:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:43:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.654579
2025-09-29T17:43:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:43:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:43:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:43:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:43:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:43:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:43:00', tmtdew=13.76, humidity=38.65, cloud=0.0, wind=14.63, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:42:35.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:43:06.182 [DEBUG] [Thread-162855] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:06.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:43:06.277 [DEBUG] [Thread-162858] [transport.py] [_log()] starting thread (client mode): 0x2b9cd5d0
2025-09-29T17:43:06.277 [DEBUG] [Thread-162858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:06.294 [DEBUG] [Thread-162858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:43:06.294 [INFO] [Thread-162858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:43:06.304 [DEBUG] [Thread-162858] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:06.304 [DEBUG] [Thread-162858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:43:06.304 [DEBUG] [Thread-162858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:06.304 [DEBUG] [Thread-162858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:06.305 [DEBUG] [Thread-162858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:06.306 [DEBUG] [Thread-162858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:06.306 [DEBUG] [Thread-162858] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:06.306 [DEBUG] [Thread-162858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:06.306 [DEBUG] [Thread-162858] [transport.py] [_log()] Compression: none
2025-09-29T17:43:06.306 [DEBUG] [Thread-162858] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:06.365 [DEBUG] [Thread-162858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:06.365 [DEBUG] [Thread-162858] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:06.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:43:06.366 [DEBUG] [Thread-162858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:43:06.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:06.423 [DEBUG] [Thread-162858] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:06.424 [DEBUG] [Thread-162858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:06.424 [DEBUG] [Thread-162858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:06.424 [DEBUG] [Thread-162858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:43:06.424 [DEBUG] [Thread-162858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:06.448 [INFO] [Thread-162858] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:06.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:43:06.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:07.445 [DEBUG] [Thread-162858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:07.445 [DEBUG] [Thread-162858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:07.493 [DEBUG] [Thread-162858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:07.494 [DEBUG] [Thread-162858] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:07.503 [DEBUG] [Thread-162858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:07.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:07.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:43:07.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:43:07.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:07.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:07.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:07.541 [DEBUG] [Thread-162858] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:15.951 [DEBUG] [Thread-162860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:43:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:43:17.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:43:17.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:43:18.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 43), 13.76, 38.65, 0.0, 14.63, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:43:18.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:43:00
2025-09-29T17:43:18.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:43:18.365 [DEBUG] [Thread-162861] [transport.py] [_log()] starting thread (client mode): 0x2b94f790
2025-09-29T17:43:18.365 [DEBUG] [Thread-162861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:18.387 [DEBUG] [Thread-162861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:43:18.387 [INFO] [Thread-162861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:43:18.390 [DEBUG] [Thread-162861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:18.390 [DEBUG] [Thread-162861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:43:18.390 [DEBUG] [Thread-162861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:18.390 [DEBUG] [Thread-162861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:18.390 [DEBUG] [Thread-162861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:18.390 [DEBUG] [Thread-162861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] Compression: none
2025-09-29T17:43:18.391 [DEBUG] [Thread-162861] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:18.408 [DEBUG] [Thread-162861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:18.408 [DEBUG] [Thread-162861] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:18.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:43:18.409 [DEBUG] [Thread-162861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:43:18.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:18.411 [DEBUG] [Thread-162861] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:18.412 [DEBUG] [Thread-162861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:18.412 [DEBUG] [Thread-162861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:18.412 [DEBUG] [Thread-162861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:43:18.412 [DEBUG] [Thread-162861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:18.436 [INFO] [Thread-162861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:18.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:19.251 [DEBUG] [Thread-162861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:19.251 [DEBUG] [Thread-162861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:19.252 [DEBUG] [Thread-162861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:43:19.293 [DEBUG] [Thread-162861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:19.293 [DEBUG] [Thread-162861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:19.295 [DEBUG] [Thread-162861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:19.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:19.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:43:19.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:43:19.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:43:19.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:19.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:43:19.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.654579 -999.00  +13.80  13.67     45   +2.10 1 1 1 1 1   887    0 11.26 -22.30 ----- 10.6 13.7 146.5 16.0 17.1 -27.7 17.1 -26.5 18.3 -27.0 18.8 -28.6
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.654579
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:43:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:43:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:43:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:43:00', tmtdew=13.76, humidity=38.65, cloud=0.0, wind=14.63, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:42:35.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:43:19.313 [DEBUG] [Thread-162861] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:19.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:43:19.401 [DEBUG] [Thread-162864] [transport.py] [_log()] starting thread (client mode): 0x2e38ce20
2025-09-29T17:43:19.401 [DEBUG] [Thread-162864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:19.418 [DEBUG] [Thread-162864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:43:19.418 [INFO] [Thread-162864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:19.428 [DEBUG] [Thread-162864] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:19.429 [DEBUG] [Thread-162864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:19.429 [DEBUG] [Thread-162864] [transport.py] [_log()] Compression: none
2025-09-29T17:43:19.429 [DEBUG] [Thread-162864] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:19.490 [DEBUG] [Thread-162864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:19.490 [DEBUG] [Thread-162864] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:19.490 [DEBUG] [Thread-162864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:43:19.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:43:19.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:19.556 [DEBUG] [Thread-162864] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:19.556 [DEBUG] [Thread-162864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:19.556 [DEBUG] [Thread-162864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:19.556 [DEBUG] [Thread-162864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:43:19.556 [DEBUG] [Thread-162864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:19.571 [INFO] [Thread-162864] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:19.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:43:19.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:20.543 [DEBUG] [Thread-162864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:20.543 [DEBUG] [Thread-162864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:20.595 [DEBUG] [Thread-162864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:20.604 [DEBUG] [Thread-162864] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:20.612 [DEBUG] [Thread-162864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:20.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:20.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:43:20.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:43:20.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:20.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:20.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:20.651 [DEBUG] [Thread-162864] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:30.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:43:30.646 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:43:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:43:30.992 [DEBUG] [Thread-162866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:43:31.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 43), 13.76, 38.65, 0.0, 14.63, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:43:31.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:43:00
2025-09-29T17:43:31.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:43:31.472 [DEBUG] [Thread-162867] [transport.py] [_log()] starting thread (client mode): 0x2b94e3b0
2025-09-29T17:43:31.473 [DEBUG] [Thread-162867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:31.493 [DEBUG] [Thread-162867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:43:31.494 [INFO] [Thread-162867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:43:31.497 [DEBUG] [Thread-162867] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:31.497 [DEBUG] [Thread-162867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:43:31.497 [DEBUG] [Thread-162867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:31.497 [DEBUG] [Thread-162867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:31.497 [DEBUG] [Thread-162867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:31.497 [DEBUG] [Thread-162867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] Compression: none
2025-09-29T17:43:31.498 [DEBUG] [Thread-162867] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:31.516 [DEBUG] [Thread-162867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:31.516 [DEBUG] [Thread-162867] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:31.517 [DEBUG] [Thread-162867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:43:31.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:43:31.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:31.518 [DEBUG] [Thread-162867] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:31.519 [DEBUG] [Thread-162867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:31.519 [DEBUG] [Thread-162867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:31.519 [DEBUG] [Thread-162867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:43:31.519 [DEBUG] [Thread-162867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:31.544 [INFO] [Thread-162867] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:31.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:31.890 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:43:31.891 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:43:32.317 [DEBUG] [Thread-162867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:32.317 [DEBUG] [Thread-162867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:32.317 [DEBUG] [Thread-162867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:43:32.358 [DEBUG] [Thread-162867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:32.358 [DEBUG] [Thread-162867] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:32.361 [DEBUG] [Thread-162867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:32.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:32.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:43:32.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:43:32.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:43:32.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:32.383 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:43:32.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:32.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:43:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.654579 -999.00  +13.80  13.67     45   +2.10 1 1 1 1 1   887    0 11.26 -22.30 ----- 10.6 13.7 146.5 16.0 17.1 -27.7 17.1 -26.5 18.3 -27.0 18.8 -28.6
2025-09-29T17:43:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:43:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:43:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.654579
2025-09-29T17:43:32.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:43:32.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:43:32.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:43:32.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:43:32.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:43:32.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:43:00', tmtdew=13.76, humidity=38.65, cloud=0.0, wind=14.63, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:42:35.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:43:32.386 [DEBUG] [Thread-162867] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:32.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:43:32.484 [DEBUG] [Thread-162870] [transport.py] [_log()] starting thread (client mode): 0x2b9f0160
2025-09-29T17:43:32.484 [DEBUG] [Thread-162870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:32.498 [DEBUG] [Thread-162870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:43:32.498 [INFO] [Thread-162870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:32.506 [DEBUG] [Thread-162870] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:32.507 [DEBUG] [Thread-162870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:32.507 [DEBUG] [Thread-162870] [transport.py] [_log()] Compression: none
2025-09-29T17:43:32.507 [DEBUG] [Thread-162870] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:32.565 [DEBUG] [Thread-162870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:32.565 [DEBUG] [Thread-162870] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:32.566 [DEBUG] [Thread-162870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:43:32.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:43:32.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:32.621 [DEBUG] [Thread-162870] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:32.621 [DEBUG] [Thread-162870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:32.621 [DEBUG] [Thread-162870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:32.621 [DEBUG] [Thread-162870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:43:32.621 [DEBUG] [Thread-162870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:32.641 [INFO] [Thread-162870] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:32.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:43:32.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:33.599 [DEBUG] [Thread-162870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:33.599 [DEBUG] [Thread-162870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:33.647 [DEBUG] [Thread-162870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:33.647 [DEBUG] [Thread-162870] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:33.655 [DEBUG] [Thread-162870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:33.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:33.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:43:33.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:43:33.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:33.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:33.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:33.686 [DEBUG] [Thread-162870] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:43.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:43:43.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:43:43.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:43:44.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 43, 32), 13.86, 38.4, 0.0, 18.07, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:43:44.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:43:32
2025-09-29T17:43:44.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:43:44.516 [DEBUG] [Thread-162872] [transport.py] [_log()] starting thread (client mode): 0x2b9f00d0
2025-09-29T17:43:44.516 [DEBUG] [Thread-162872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:44.536 [DEBUG] [Thread-162872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:43:44.537 [INFO] [Thread-162872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:43:44.540 [DEBUG] [Thread-162872] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:44.540 [DEBUG] [Thread-162872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] Compression: none
2025-09-29T17:43:44.541 [DEBUG] [Thread-162872] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:44.559 [DEBUG] [Thread-162872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:44.559 [DEBUG] [Thread-162872] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:44.560 [DEBUG] [Thread-162872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:43:44.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:43:44.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:44.561 [DEBUG] [Thread-162872] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:44.562 [DEBUG] [Thread-162872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:44.562 [DEBUG] [Thread-162872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:44.562 [DEBUG] [Thread-162872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:43:44.562 [DEBUG] [Thread-162872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:44.579 [INFO] [Thread-162872] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:44.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:45.240 [DEBUG] [Thread-162872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:45.240 [DEBUG] [Thread-162872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:45.241 [DEBUG] [Thread-162872] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:43:45.281 [DEBUG] [Thread-162872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:45.282 [DEBUG] [Thread-162872] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:45.284 [DEBUG] [Thread-162872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:45.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:45.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:43:45.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:43:45.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:43:45.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:45.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:43:45.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:45.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:45.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:43:45.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.654926 -999.00  +13.80  11.20     45   +2.10 1 1 1 1 1   887    0 11.42 -20.54 ----- 10.5 11.2 164.6 14.8 17.1 -27.7 17.1 -26.2 18.3 -26.9 18.9 -28.4
2025-09-29T17:43:45.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:43:45.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:43:45.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.654926
2025-09-29T17:43:45.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:43:45.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:43:45.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:43:45.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:43:45.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:43:45.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:43:32', tmtdew=13.86, humidity=38.4, cloud=0.0, wind=18.07, temperature=14.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:43:05.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:43:45.309 [DEBUG] [Thread-162872] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:45.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:43:45.408 [DEBUG] [Thread-162875] [transport.py] [_log()] starting thread (client mode): 0x2e38ec80
2025-09-29T17:43:45.408 [DEBUG] [Thread-162875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:45.423 [DEBUG] [Thread-162875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:43:45.423 [INFO] [Thread-162875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:45.431 [DEBUG] [Thread-162875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:45.432 [DEBUG] [Thread-162875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:45.432 [DEBUG] [Thread-162875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:45.432 [DEBUG] [Thread-162875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:45.432 [DEBUG] [Thread-162875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:45.432 [DEBUG] [Thread-162875] [transport.py] [_log()] Compression: none
2025-09-29T17:43:45.432 [DEBUG] [Thread-162875] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:45.488 [DEBUG] [Thread-162875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:45.489 [DEBUG] [Thread-162875] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:45.489 [DEBUG] [Thread-162875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:43:45.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:43:45.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:45.571 [DEBUG] [Thread-162875] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:45.571 [DEBUG] [Thread-162875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:45.571 [DEBUG] [Thread-162875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:45.572 [DEBUG] [Thread-162875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:43:45.572 [DEBUG] [Thread-162875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:45.596 [INFO] [Thread-162875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:45.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:43:45.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:46.018 [DEBUG] [Thread-162877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:43:46.579 [DEBUG] [Thread-162875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:46.580 [DEBUG] [Thread-162875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:46.627 [DEBUG] [Thread-162875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:46.627 [DEBUG] [Thread-162875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:46.636 [DEBUG] [Thread-162875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:46.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:46.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:43:46.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:43:46.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:46.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:46.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:46.672 [DEBUG] [Thread-162875] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:51.074 [DEBUG] [Thread-162878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:43:56.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:43:56.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:43:56.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:43:57.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 43, 32), 13.86, 38.4, 0.0, 18.07, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:43:57.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:43:32
2025-09-29T17:43:57.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:43:57.509 [DEBUG] [Thread-162879] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd60
2025-09-29T17:43:57.509 [DEBUG] [Thread-162879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:57.531 [DEBUG] [Thread-162879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:43:57.531 [INFO] [Thread-162879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:43:57.534 [DEBUG] [Thread-162879] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:57.534 [DEBUG] [Thread-162879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:43:57.534 [DEBUG] [Thread-162879] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] Compression: none
2025-09-29T17:43:57.535 [DEBUG] [Thread-162879] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:57.550 [DEBUG] [Thread-162879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:57.551 [DEBUG] [Thread-162879] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:57.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:43:57.551 [DEBUG] [Thread-162879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:43:57.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:57.552 [DEBUG] [Thread-162879] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:57.552 [DEBUG] [Thread-162879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:57.552 [DEBUG] [Thread-162879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:57.552 [DEBUG] [Thread-162879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:43:57.552 [DEBUG] [Thread-162879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:57.567 [INFO] [Thread-162879] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:57.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:58.375 [DEBUG] [Thread-162879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:58.375 [DEBUG] [Thread-162879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:58.375 [DEBUG] [Thread-162879] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:43:58.416 [DEBUG] [Thread-162879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:58.416 [DEBUG] [Thread-162879] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:58.418 [DEBUG] [Thread-162879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:58.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:58.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:43:58.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:43:58.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:43:58.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:58.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:43:58.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.654926 -999.00  +13.80  11.20     45   +2.10 1 1 1 1 1   887    0 11.42 -20.54 ----- 10.5 11.2 164.6 14.8 17.1 -27.7 17.1 -26.2 18.3 -26.9 18.9 -28.4
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.654926
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:43:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:43:32', tmtdew=13.86, humidity=38.4, cloud=0.0, wind=18.07, temperature=14.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:43:05.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:43:58.436 [DEBUG] [Thread-162879] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:43:58.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:43:58.519 [DEBUG] [Thread-162882] [transport.py] [_log()] starting thread (client mode): 0x2b9cee90
2025-09-29T17:43:58.519 [DEBUG] [Thread-162882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:43:58.533 [DEBUG] [Thread-162882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:43:58.533 [INFO] [Thread-162882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] client lang: <none>
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] server lang: <none>
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] kex follows: False
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] Compression: none
2025-09-29T17:43:58.541 [DEBUG] [Thread-162882] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:43:58.599 [DEBUG] [Thread-162882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:43:58.599 [DEBUG] [Thread-162882] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:43:58.600 [DEBUG] [Thread-162882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:43:58.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:43:58.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:43:58.657 [DEBUG] [Thread-162882] [transport.py] [_log()] userauth is OK
2025-09-29T17:43:58.657 [DEBUG] [Thread-162882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:43:58.657 [DEBUG] [Thread-162882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:43:58.657 [DEBUG] [Thread-162882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:43:58.657 [DEBUG] [Thread-162882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:43:58.670 [INFO] [Thread-162882] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:43:58.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:43:58.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:43:59.669 [DEBUG] [Thread-162882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:43:59.669 [DEBUG] [Thread-162882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:43:59.719 [DEBUG] [Thread-162882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:43:59.719 [DEBUG] [Thread-162882] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:43:59.730 [DEBUG] [Thread-162882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:43:59.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:43:59.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:43:59.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:43:59.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:43:59.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:43:59.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:43:59.764 [DEBUG] [Thread-162882] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:44:01.060 [DEBUG] [Thread-162884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:44:09.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:44:09.767 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:44:09.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:44:10.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 44, 4), 13.86, 38.4, 0.0, 17.36, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:44:10.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:44:04
2025-09-29T17:44:10.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:44:10.598 [DEBUG] [Thread-162885] [transport.py] [_log()] starting thread (client mode): 0x2b9f30a0
2025-09-29T17:44:10.598 [DEBUG] [Thread-162885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:44:10.610 [DEBUG] [Thread-162885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:44:10.610 [INFO] [Thread-162885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:44:10.611 [DEBUG] [Thread-162885] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:44:10.611 [DEBUG] [Thread-162885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:44:10.611 [DEBUG] [Thread-162885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:44:10.611 [DEBUG] [Thread-162885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:10.611 [DEBUG] [Thread-162885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:10.611 [DEBUG] [Thread-162885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] client lang: <none>
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] server lang: <none>
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] kex follows: False
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] Compression: none
2025-09-29T17:44:10.612 [DEBUG] [Thread-162885] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:44:10.619 [DEBUG] [Thread-162885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:44:10.620 [DEBUG] [Thread-162885] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:44:10.620 [DEBUG] [Thread-162885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:44:10.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:44:10.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:44:10.624 [DEBUG] [Thread-162885] [transport.py] [_log()] userauth is OK
2025-09-29T17:44:10.624 [DEBUG] [Thread-162885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:44:10.624 [DEBUG] [Thread-162885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:44:10.624 [DEBUG] [Thread-162885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:44:10.624 [DEBUG] [Thread-162885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:44:10.642 [INFO] [Thread-162885] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:44:10.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:44:11.219 [DEBUG] [Thread-162885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:44:11.219 [DEBUG] [Thread-162885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:44:11.219 [DEBUG] [Thread-162885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:44:11.260 [DEBUG] [Thread-162885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:44:11.261 [DEBUG] [Thread-162885] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:44:11.262 [DEBUG] [Thread-162885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:44:11.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:44:11.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:44:11.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:44:11.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:44:11.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:44:11.284 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:44:11.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:44:11.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:44:11.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:44:11.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.655620 -999.00  +13.80  15.62     44   +2.00 1 1 1 1 1   887    0 11.09 -18.97 ----- 18.0 15.6 174.8 21.6 17.2 -27.7 17.0 -26.9 18.2 -27.0 18.8 -29.0
2025-09-29T17:44:11.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:44:11.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:44:11.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.655620
2025-09-29T17:44:11.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:44:11.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:44:11.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:44:11.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:44:11.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:44:11.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:44:04', tmtdew=13.86, humidity=38.4, cloud=0.0, wind=17.36, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:44:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:44:11.287 [DEBUG] [Thread-162885] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:44:11.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:44:11.383 [DEBUG] [Thread-162888] [transport.py] [_log()] starting thread (client mode): 0x2e3f9450
2025-09-29T17:44:11.383 [DEBUG] [Thread-162888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:44:11.397 [DEBUG] [Thread-162888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:44:11.398 [INFO] [Thread-162888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:44:11.405 [DEBUG] [Thread-162888] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:44:11.405 [DEBUG] [Thread-162888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] client lang: <none>
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] server lang: <none>
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] kex follows: False
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] Compression: none
2025-09-29T17:44:11.406 [DEBUG] [Thread-162888] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:44:11.464 [DEBUG] [Thread-162888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:44:11.465 [DEBUG] [Thread-162888] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:44:11.465 [DEBUG] [Thread-162888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:44:11.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:44:11.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:44:11.521 [DEBUG] [Thread-162888] [transport.py] [_log()] userauth is OK
2025-09-29T17:44:11.521 [DEBUG] [Thread-162888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:44:11.521 [DEBUG] [Thread-162888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:44:11.522 [DEBUG] [Thread-162888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:44:11.522 [DEBUG] [Thread-162888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:44:11.541 [INFO] [Thread-162888] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:44:11.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:44:11.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:44:12.524 [DEBUG] [Thread-162888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:44:12.524 [DEBUG] [Thread-162888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:44:12.572 [DEBUG] [Thread-162888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:44:12.572 [DEBUG] [Thread-162888] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:44:12.581 [DEBUG] [Thread-162888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:44:12.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:44:12.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:44:12.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:44:12.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:44:12.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:44:12.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:44:12.616 [DEBUG] [Thread-162888] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:44:16.083 [DEBUG] [Thread-162890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:44:22.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:44:22.618 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:44:22.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:44:23.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 44, 4), 13.86, 38.4, 0.0, 17.36, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:44:23.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:44:04
2025-09-29T17:44:23.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:44:23.459 [DEBUG] [Thread-162891] [transport.py] [_log()] starting thread (client mode): 0x2b9ce020
2025-09-29T17:44:23.459 [DEBUG] [Thread-162891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:44:23.471 [DEBUG] [Thread-162891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:44:23.471 [INFO] [Thread-162891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] client lang: <none>
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] server lang: <none>
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] kex follows: False
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] Compression: none
2025-09-29T17:44:23.474 [DEBUG] [Thread-162891] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:44:23.488 [DEBUG] [Thread-162891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:44:23.488 [DEBUG] [Thread-162891] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:44:23.488 [DEBUG] [Thread-162891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:44:23.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:44:23.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:44:23.489 [DEBUG] [Thread-162891] [transport.py] [_log()] userauth is OK
2025-09-29T17:44:23.489 [DEBUG] [Thread-162891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:44:23.489 [DEBUG] [Thread-162891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:44:23.489 [DEBUG] [Thread-162891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:44:23.489 [DEBUG] [Thread-162891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:44:23.499 [INFO] [Thread-162891] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:44:23.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:44:24.097 [DEBUG] [Thread-162891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:44:24.098 [DEBUG] [Thread-162891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:44:24.098 [DEBUG] [Thread-162891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:44:24.140 [DEBUG] [Thread-162891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:44:24.140 [DEBUG] [Thread-162891] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:44:24.142 [DEBUG] [Thread-162891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:44:24.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:44:24.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:44:24.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:44:24.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:44:24.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:44:24.164 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:44:24.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:44:24.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:44:24.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:44:24.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.655620 -999.00  +13.80  15.62     44   +2.00 1 1 1 1 1   887    0 11.09 -18.97 ----- 18.0 15.6 174.8 21.6 17.2 -27.7 17.0 -26.9 18.2 -27.0 18.8 -29.0
2025-09-29T17:44:24.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:44:24.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:44:24.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.655620
2025-09-29T17:44:24.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:44:24.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:44:24.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:44:24.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:44:24.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:44:24.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:44:04', tmtdew=13.86, humidity=38.4, cloud=0.0, wind=17.36, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:44:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:44:24.166 [DEBUG] [Thread-162891] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:44:24.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:44:24.262 [DEBUG] [Thread-162894] [transport.py] [_log()] starting thread (client mode): 0x2e38fa90
2025-09-29T17:44:24.263 [DEBUG] [Thread-162894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:44:24.277 [DEBUG] [Thread-162894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:44:24.278 [INFO] [Thread-162894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:44:24.285 [DEBUG] [Thread-162894] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:44:24.285 [DEBUG] [Thread-162894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:44:24.285 [DEBUG] [Thread-162894] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:44:24.285 [DEBUG] [Thread-162894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:24.285 [DEBUG] [Thread-162894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] client lang: <none>
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] server lang: <none>
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] kex follows: False
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:44:24.286 [DEBUG] [Thread-162894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:44:24.287 [DEBUG] [Thread-162894] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:44:24.287 [DEBUG] [Thread-162894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:44:24.287 [DEBUG] [Thread-162894] [transport.py] [_log()] Compression: none
2025-09-29T17:44:24.287 [DEBUG] [Thread-162894] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:44:24.344 [DEBUG] [Thread-162894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:44:24.345 [DEBUG] [Thread-162894] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:44:24.345 [DEBUG] [Thread-162894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:44:24.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:44:24.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:44:24.409 [DEBUG] [Thread-162894] [transport.py] [_log()] userauth is OK
2025-09-29T17:44:24.409 [DEBUG] [Thread-162894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:44:24.409 [DEBUG] [Thread-162894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:44:24.409 [DEBUG] [Thread-162894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:44:24.409 [DEBUG] [Thread-162894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:44:24.432 [INFO] [Thread-162894] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:44:24.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:44:24.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:44:25.394 [DEBUG] [Thread-162894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:44:25.394 [DEBUG] [Thread-162894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:44:25.442 [DEBUG] [Thread-162894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:44:25.442 [DEBUG] [Thread-162894] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:44:25.451 [DEBUG] [Thread-162894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:44:25.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:44:25.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:44:25.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:44:25.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:44:25.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:44:25.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:44:25.485 [DEBUG] [Thread-162894] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:44:31.125 [DEBUG] [Thread-162896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:44:32.029 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:44:32.030 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:44:35.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:44:35.487 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:44:35.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:44:36.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 44, 4), 13.86, 38.4, 0.0, 17.36, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:44:36.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:44:04
2025-09-29T17:44:36.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:44:36.349 [DEBUG] [Thread-162897] [transport.py] [_log()] starting thread (client mode): 0x2e3dd180
2025-09-29T17:44:36.349 [DEBUG] [Thread-162897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:44:36.368 [DEBUG] [Thread-162897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:44:36.368 [INFO] [Thread-162897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] client lang: <none>
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] server lang: <none>
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] kex follows: False
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] Compression: none
2025-09-29T17:44:36.372 [DEBUG] [Thread-162897] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:44:36.385 [DEBUG] [Thread-162897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:44:36.386 [DEBUG] [Thread-162897] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:44:36.386 [DEBUG] [Thread-162897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:44:36.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:44:36.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:44:36.387 [DEBUG] [Thread-162897] [transport.py] [_log()] userauth is OK
2025-09-29T17:44:36.387 [DEBUG] [Thread-162897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:44:36.387 [DEBUG] [Thread-162897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:44:36.387 [DEBUG] [Thread-162897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:44:36.387 [DEBUG] [Thread-162897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:44:36.402 [INFO] [Thread-162897] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:44:36.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:44:37.204 [DEBUG] [Thread-162897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:44:37.204 [DEBUG] [Thread-162897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:44:37.204 [DEBUG] [Thread-162897] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:44:37.245 [DEBUG] [Thread-162897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:44:37.245 [DEBUG] [Thread-162897] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:44:37.247 [DEBUG] [Thread-162897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:44:37.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:44:37.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:44:37.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:44:37.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:44:37.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:44:37.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:44:37.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:44:37.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:44:37.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:44:37.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.655620 -999.00  +13.80  15.62     44   +2.00 1 1 1 1 1   887    0 11.09 -18.97 ----- 18.0 15.6 174.8 21.6 17.2 -27.7 17.0 -26.9 18.2 -27.0 18.8 -29.0
2025-09-29T17:44:37.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:44:37.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:44:37.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.655620
2025-09-29T17:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:44:04', tmtdew=13.86, humidity=38.4, cloud=0.0, wind=17.36, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:44:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:44:37.266 [DEBUG] [Thread-162897] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:44:37.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:44:37.358 [DEBUG] [Thread-162900] [transport.py] [_log()] starting thread (client mode): 0x2e362080
2025-09-29T17:44:37.358 [DEBUG] [Thread-162900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:44:37.380 [DEBUG] [Thread-162900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:44:37.380 [INFO] [Thread-162900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:44:37.387 [DEBUG] [Thread-162900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] client lang: <none>
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] server lang: <none>
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] kex follows: False
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] Compression: none
2025-09-29T17:44:37.388 [DEBUG] [Thread-162900] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:44:37.444 [DEBUG] [Thread-162900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:44:37.444 [DEBUG] [Thread-162900] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:44:37.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:44:37.445 [DEBUG] [Thread-162900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:44:37.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:44:37.501 [DEBUG] [Thread-162900] [transport.py] [_log()] userauth is OK
2025-09-29T17:44:37.501 [DEBUG] [Thread-162900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:44:37.501 [DEBUG] [Thread-162900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:44:37.501 [DEBUG] [Thread-162900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:44:37.501 [DEBUG] [Thread-162900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:44:37.519 [INFO] [Thread-162900] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:44:37.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:44:37.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:44:38.490 [DEBUG] [Thread-162900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:44:38.490 [DEBUG] [Thread-162900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:44:38.541 [DEBUG] [Thread-162900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:44:38.541 [DEBUG] [Thread-162900] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:44:38.553 [DEBUG] [Thread-162900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:44:38.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:44:38.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:44:38.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:44:38.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:44:38.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:44:38.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:44:38.596 [DEBUG] [Thread-162900] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:44:46.155 [DEBUG] [Thread-162902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:44:48.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:44:48.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:44:48.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:44:49.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 44, 36), 13.9, 38.43, 0.0, 20.08, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:44:49.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:44:36
2025-09-29T17:44:49.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:44:49.419 [DEBUG] [Thread-162903] [transport.py] [_log()] starting thread (client mode): 0x2b94d240
2025-09-29T17:44:49.419 [DEBUG] [Thread-162903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:44:49.436 [DEBUG] [Thread-162903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:44:49.436 [INFO] [Thread-162903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] client lang: <none>
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] server lang: <none>
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] kex follows: False
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] Compression: none
2025-09-29T17:44:49.439 [DEBUG] [Thread-162903] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:44:49.447 [DEBUG] [Thread-162903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:44:49.447 [DEBUG] [Thread-162903] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:44:49.447 [DEBUG] [Thread-162903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:44:49.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:44:49.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:44:49.448 [DEBUG] [Thread-162903] [transport.py] [_log()] userauth is OK
2025-09-29T17:44:49.449 [DEBUG] [Thread-162903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:44:49.449 [DEBUG] [Thread-162903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:44:49.449 [DEBUG] [Thread-162903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:44:49.449 [DEBUG] [Thread-162903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:44:49.464 [INFO] [Thread-162903] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:44:49.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:44:50.088 [DEBUG] [Thread-162903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:44:50.088 [DEBUG] [Thread-162903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:44:50.089 [DEBUG] [Thread-162903] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:44:50.129 [DEBUG] [Thread-162903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:44:50.129 [DEBUG] [Thread-162903] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:44:50.132 [DEBUG] [Thread-162903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:44:50.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:44:50.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:44:50.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:44:50.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:44:50.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:44:50.149 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:44:50.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:44:50.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:44:50.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:44:50.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.655968 -999.00  +13.80  11.15     45   +2.00 1 1 1 1 1   887    0 11.38 -18.52 ----- 12.9 11.2 160.2 18.8 17.1 -27.9 17.0 -26.2 18.2 -26.9 18.8 -28.5
2025-09-29T17:44:50.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:44:50.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:44:50.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.655968
2025-09-29T17:44:50.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:44:50.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:44:50.151 [DEBUG] [Thread-162903] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:44:50.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:44:50.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:44:50.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:44:50.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:44:36', tmtdew=13.9, humidity=38.43, cloud=0.0, wind=20.08, temperature=14.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:44:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:44:50.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:44:50.245 [DEBUG] [Thread-162906] [transport.py] [_log()] starting thread (client mode): 0x2e38d2d0
2025-09-29T17:44:50.245 [DEBUG] [Thread-162906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:44:50.259 [DEBUG] [Thread-162906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:44:50.260 [INFO] [Thread-162906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:44:50.267 [DEBUG] [Thread-162906] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] client lang: <none>
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] server lang: <none>
2025-09-29T17:44:50.268 [DEBUG] [Thread-162906] [transport.py] [_log()] kex follows: False
2025-09-29T17:44:50.269 [DEBUG] [Thread-162906] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:44:50.269 [DEBUG] [Thread-162906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:44:50.269 [DEBUG] [Thread-162906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:44:50.269 [DEBUG] [Thread-162906] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:44:50.269 [DEBUG] [Thread-162906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:44:50.269 [DEBUG] [Thread-162906] [transport.py] [_log()] Compression: none
2025-09-29T17:44:50.269 [DEBUG] [Thread-162906] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:44:50.328 [DEBUG] [Thread-162906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:44:50.328 [DEBUG] [Thread-162906] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:44:50.329 [DEBUG] [Thread-162906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:44:50.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:44:50.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:44:50.385 [DEBUG] [Thread-162906] [transport.py] [_log()] userauth is OK
2025-09-29T17:44:50.386 [DEBUG] [Thread-162906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:44:50.386 [DEBUG] [Thread-162906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:44:50.386 [DEBUG] [Thread-162906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:44:50.386 [DEBUG] [Thread-162906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:44:50.405 [INFO] [Thread-162906] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:44:50.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:44:50.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:44:51.106 [DEBUG] [Thread-162908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:44:51.436 [DEBUG] [Thread-162906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:44:51.436 [DEBUG] [Thread-162906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:44:51.484 [DEBUG] [Thread-162906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:44:51.484 [DEBUG] [Thread-162906] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:44:51.493 [DEBUG] [Thread-162906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:44:51.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:44:51.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:44:51.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:44:51.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:44:51.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:44:51.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:44:51.527 [DEBUG] [Thread-162906] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:01.185 [DEBUG] [Thread-162909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:45:01.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:45:01.530 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:45:01.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:45:02.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 44, 36), 13.9, 38.43, 0.0, 20.08, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:45:02.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:44:36
2025-09-29T17:45:02.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:45:02.422 [DEBUG] [Thread-162910] [transport.py] [_log()] starting thread (client mode): 0x2b94de70
2025-09-29T17:45:02.422 [DEBUG] [Thread-162910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:45:02.433 [DEBUG] [Thread-162910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:45:02.433 [INFO] [Thread-162910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] client lang: <none>
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] server lang: <none>
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] kex follows: False
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] Compression: none
2025-09-29T17:45:02.434 [DEBUG] [Thread-162910] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:45:02.445 [DEBUG] [Thread-162910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:45:02.445 [DEBUG] [Thread-162910] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:45:02.445 [DEBUG] [Thread-162910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:45:02.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:45:02.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:45:02.446 [DEBUG] [Thread-162910] [transport.py] [_log()] userauth is OK
2025-09-29T17:45:02.446 [DEBUG] [Thread-162910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:45:02.446 [DEBUG] [Thread-162910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:45:02.446 [DEBUG] [Thread-162910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:45:02.446 [DEBUG] [Thread-162910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:45:02.455 [INFO] [Thread-162910] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:45:02.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:45:10.235 [DEBUG] [Thread-162910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:45:10.235 [DEBUG] [Thread-162910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:45:10.236 [DEBUG] [Thread-162910] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:45:10.277 [DEBUG] [Thread-162910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:45:10.277 [DEBUG] [Thread-162910] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:45:10.280 [DEBUG] [Thread-162910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:45:10.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:45:10.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:45:10.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:45:10.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:45:10.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:45:10.333 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:45:10.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:45:10.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:45:10.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:45:10.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.655968 -999.00  +13.80  11.15     45   +2.00 1 1 1 1 1   887    0 11.38 -18.52 ----- 12.9 11.2 160.2 18.8 17.1 -27.9 17.0 -26.2 18.2 -26.9 18.8 -28.5
2025-09-29T17:45:10.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:45:10.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:45:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.655968
2025-09-29T17:45:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:45:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:45:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:45:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:45:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:45:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:44:36', tmtdew=13.9, humidity=38.43, cloud=0.0, wind=20.08, temperature=14.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:44:35.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:45:10.334 [DEBUG] [Thread-162910] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:10.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:45:10.425 [DEBUG] [Thread-162913] [transport.py] [_log()] starting thread (client mode): 0x2e38dd50
2025-09-29T17:45:10.425 [DEBUG] [Thread-162913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:45:10.443 [DEBUG] [Thread-162913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:45:10.443 [INFO] [Thread-162913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] client lang: <none>
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] server lang: <none>
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] kex follows: False
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] Compression: none
2025-09-29T17:45:10.450 [DEBUG] [Thread-162913] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:45:10.508 [DEBUG] [Thread-162913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:45:10.508 [DEBUG] [Thread-162913] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:45:10.508 [DEBUG] [Thread-162913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:45:10.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:45:10.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:45:10.565 [DEBUG] [Thread-162913] [transport.py] [_log()] userauth is OK
2025-09-29T17:45:10.565 [DEBUG] [Thread-162913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:45:10.565 [DEBUG] [Thread-162913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:45:10.565 [DEBUG] [Thread-162913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:45:10.565 [DEBUG] [Thread-162913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:45:10.579 [INFO] [Thread-162913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:45:10.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:45:10.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:45:11.616 [DEBUG] [Thread-162913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:45:11.616 [DEBUG] [Thread-162913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:45:11.664 [DEBUG] [Thread-162913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:45:11.664 [DEBUG] [Thread-162913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:45:11.674 [DEBUG] [Thread-162913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:45:11.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:45:11.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:45:11.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:45:11.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:45:11.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:45:11.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:45:11.708 [DEBUG] [Thread-162913] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:16.227 [DEBUG] [Thread-162915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:45:21.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:45:21.711 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:45:21.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:45:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 45, 8), 13.87, 38.48, 0.0, 20.41, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:45:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:45:08
2025-09-29T17:45:22.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:45:22.557 [DEBUG] [Thread-162916] [transport.py] [_log()] starting thread (client mode): 0x2e3772e0
2025-09-29T17:45:22.557 [DEBUG] [Thread-162916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:45:22.577 [DEBUG] [Thread-162916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:45:22.577 [INFO] [Thread-162916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:45:22.580 [DEBUG] [Thread-162916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:45:22.580 [DEBUG] [Thread-162916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:45:22.580 [DEBUG] [Thread-162916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:45:22.580 [DEBUG] [Thread-162916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:22.580 [DEBUG] [Thread-162916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:22.580 [DEBUG] [Thread-162916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:22.580 [DEBUG] [Thread-162916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] client lang: <none>
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] server lang: <none>
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] kex follows: False
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] Compression: none
2025-09-29T17:45:22.581 [DEBUG] [Thread-162916] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:45:22.591 [DEBUG] [Thread-162916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:45:22.592 [DEBUG] [Thread-162916] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:45:22.592 [DEBUG] [Thread-162916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:45:22.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:45:22.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:45:22.594 [DEBUG] [Thread-162916] [transport.py] [_log()] userauth is OK
2025-09-29T17:45:22.594 [DEBUG] [Thread-162916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:45:22.594 [DEBUG] [Thread-162916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:45:22.594 [DEBUG] [Thread-162916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:45:22.594 [DEBUG] [Thread-162916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:45:22.619 [INFO] [Thread-162916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:45:22.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:45:23.231 [DEBUG] [Thread-162916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:45:23.231 [DEBUG] [Thread-162916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:45:23.232 [DEBUG] [Thread-162916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:45:23.272 [DEBUG] [Thread-162916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:45:23.272 [DEBUG] [Thread-162916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:45:23.274 [DEBUG] [Thread-162916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:45:23.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:45:23.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:45:23.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:45:23.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:45:23.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:45:23.286 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:45:23.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:45:23.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:45:23.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:45:23.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.656315 -999.00  +13.80  16.07     45   +2.10 1 1 1 1 1   887    0 11.20 -16.67 ----- 15.5 16.1 161.6 21.5 17.1 -27.8 16.9 -27.2 18.1 -27.3 18.8 -28.4
2025-09-29T17:45:23.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:45:23.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:45:23.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.656315
2025-09-29T17:45:23.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:45:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:45:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:45:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:45:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:45:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:45:08', tmtdew=13.87, humidity=38.48, cloud=0.0, wind=20.41, temperature=13.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:45:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:45:23.287 [DEBUG] [Thread-162916] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:23.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:45:23.373 [DEBUG] [Thread-162919] [transport.py] [_log()] starting thread (client mode): 0x2e348ac0
2025-09-29T17:45:23.373 [DEBUG] [Thread-162919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:45:23.387 [DEBUG] [Thread-162919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:45:23.388 [INFO] [Thread-162919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] client lang: <none>
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] server lang: <none>
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] kex follows: False
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:45:23.395 [DEBUG] [Thread-162919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:45:23.396 [DEBUG] [Thread-162919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:45:23.396 [DEBUG] [Thread-162919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:45:23.396 [DEBUG] [Thread-162919] [transport.py] [_log()] Compression: none
2025-09-29T17:45:23.396 [DEBUG] [Thread-162919] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:45:23.453 [DEBUG] [Thread-162919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:45:23.454 [DEBUG] [Thread-162919] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:45:23.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:45:23.454 [DEBUG] [Thread-162919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:45:23.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:45:23.509 [DEBUG] [Thread-162919] [transport.py] [_log()] userauth is OK
2025-09-29T17:45:23.510 [DEBUG] [Thread-162919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:45:23.510 [DEBUG] [Thread-162919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:45:23.510 [DEBUG] [Thread-162919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:45:23.510 [DEBUG] [Thread-162919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:45:23.529 [INFO] [Thread-162919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:45:23.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:45:23.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:45:24.536 [DEBUG] [Thread-162919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:45:24.536 [DEBUG] [Thread-162919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:45:24.584 [DEBUG] [Thread-162919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:45:24.584 [DEBUG] [Thread-162919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:45:24.593 [DEBUG] [Thread-162919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:45:24.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:45:24.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:45:24.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:45:24.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:45:24.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:45:24.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:45:24.626 [DEBUG] [Thread-162919] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:31.255 [DEBUG] [Thread-162921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:45:32.167 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:45:32.169 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:45:34.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:45:34.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:45:34.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:45:35.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 45, 8), 13.87, 38.48, 0.0, 20.41, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:45:35.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:45:08
2025-09-29T17:45:35.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:45:35.460 [DEBUG] [Thread-162922] [transport.py] [_log()] starting thread (client mode): 0x2e3deb60
2025-09-29T17:45:35.460 [DEBUG] [Thread-162922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:45:35.480 [DEBUG] [Thread-162922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:45:35.480 [INFO] [Thread-162922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:45:35.483 [DEBUG] [Thread-162922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] client lang: <none>
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] server lang: <none>
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] kex follows: False
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:45:35.484 [DEBUG] [Thread-162922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:45:35.485 [DEBUG] [Thread-162922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:45:35.485 [DEBUG] [Thread-162922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:45:35.485 [DEBUG] [Thread-162922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:45:35.485 [DEBUG] [Thread-162922] [transport.py] [_log()] Compression: none
2025-09-29T17:45:35.485 [DEBUG] [Thread-162922] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:45:35.503 [DEBUG] [Thread-162922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:45:35.504 [DEBUG] [Thread-162922] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:45:35.504 [DEBUG] [Thread-162922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:45:35.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:45:35.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:45:35.506 [DEBUG] [Thread-162922] [transport.py] [_log()] userauth is OK
2025-09-29T17:45:35.506 [DEBUG] [Thread-162922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:45:35.506 [DEBUG] [Thread-162922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:45:35.506 [DEBUG] [Thread-162922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:45:35.506 [DEBUG] [Thread-162922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:45:35.524 [INFO] [Thread-162922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:45:35.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:45:36.362 [DEBUG] [Thread-162922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:45:36.362 [DEBUG] [Thread-162922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:45:36.362 [DEBUG] [Thread-162922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:45:36.403 [DEBUG] [Thread-162922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:45:36.403 [DEBUG] [Thread-162922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:45:36.406 [DEBUG] [Thread-162922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:45:36.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:45:36.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:45:36.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:45:36.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:45:36.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:45:36.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:45:36.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:45:36.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:45:36.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:45:36.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.656315 -999.00  +13.80  16.07     45   +2.10 1 1 1 1 1   887    0 11.20 -16.67 ----- 15.5 16.1 161.6 21.5 17.1 -27.8 16.9 -27.2 18.1 -27.3 18.8 -28.4
2025-09-29T17:45:36.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:45:36.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:45:36.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.656315
2025-09-29T17:45:36.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:45:36.429 [DEBUG] [Thread-162922] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:36.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:45:36.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:45:36.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:45:36.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:45:36.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:45:08', tmtdew=13.87, humidity=38.48, cloud=0.0, wind=20.41, temperature=13.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:45:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:45:36.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:45:36.524 [DEBUG] [Thread-162925] [transport.py] [_log()] starting thread (client mode): 0x2e362020
2025-09-29T17:45:36.525 [DEBUG] [Thread-162925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:45:36.539 [DEBUG] [Thread-162925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:45:36.539 [INFO] [Thread-162925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:45:36.547 [DEBUG] [Thread-162925] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:45:36.547 [DEBUG] [Thread-162925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:45:36.547 [DEBUG] [Thread-162925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] client lang: <none>
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] server lang: <none>
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] kex follows: False
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] Compression: none
2025-09-29T17:45:36.548 [DEBUG] [Thread-162925] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:45:36.605 [DEBUG] [Thread-162925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:45:36.606 [DEBUG] [Thread-162925] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:45:36.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:45:36.607 [DEBUG] [Thread-162925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:45:36.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:45:36.662 [DEBUG] [Thread-162925] [transport.py] [_log()] userauth is OK
2025-09-29T17:45:36.662 [DEBUG] [Thread-162925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:45:36.662 [DEBUG] [Thread-162925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:45:36.662 [DEBUG] [Thread-162925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:45:36.662 [DEBUG] [Thread-162925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:45:36.681 [INFO] [Thread-162925] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:45:36.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:45:36.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:45:37.644 [DEBUG] [Thread-162925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:45:37.644 [DEBUG] [Thread-162925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:45:37.691 [DEBUG] [Thread-162925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:45:37.691 [DEBUG] [Thread-162925] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:45:37.699 [DEBUG] [Thread-162925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:45:37.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:45:37.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:45:37.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:45:37.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:45:37.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:45:37.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:45:37.731 [DEBUG] [Thread-162925] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:46.301 [DEBUG] [Thread-162927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:45:47.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:45:47.734 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:45:47.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:45:48.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 45, 40), 13.78, 38.58, 0.0, 18.02, 13.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:45:48.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:45:40
2025-09-29T17:45:48.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:45:48.584 [DEBUG] [Thread-162928] [transport.py] [_log()] starting thread (client mode): 0x2e362680
2025-09-29T17:45:48.584 [DEBUG] [Thread-162928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:45:48.604 [DEBUG] [Thread-162928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:45:48.604 [INFO] [Thread-162928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] client lang: <none>
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] server lang: <none>
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] kex follows: False
2025-09-29T17:45:48.607 [DEBUG] [Thread-162928] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:45:48.608 [DEBUG] [Thread-162928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:45:48.608 [DEBUG] [Thread-162928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:45:48.608 [DEBUG] [Thread-162928] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:45:48.608 [DEBUG] [Thread-162928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:45:48.608 [DEBUG] [Thread-162928] [transport.py] [_log()] Compression: none
2025-09-29T17:45:48.608 [DEBUG] [Thread-162928] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:45:48.625 [DEBUG] [Thread-162928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:45:48.625 [DEBUG] [Thread-162928] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:45:48.625 [DEBUG] [Thread-162928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:45:48.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:45:48.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:45:48.626 [DEBUG] [Thread-162928] [transport.py] [_log()] userauth is OK
2025-09-29T17:45:48.626 [DEBUG] [Thread-162928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:45:48.626 [DEBUG] [Thread-162928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:45:48.626 [DEBUG] [Thread-162928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:45:48.626 [DEBUG] [Thread-162928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:45:48.641 [INFO] [Thread-162928] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:45:48.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:45:49.376 [DEBUG] [Thread-162928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:45:49.376 [DEBUG] [Thread-162928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:45:49.376 [DEBUG] [Thread-162928] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:45:49.417 [DEBUG] [Thread-162928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:45:49.417 [DEBUG] [Thread-162928] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:45:49.420 [DEBUG] [Thread-162928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:45:49.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:45:49.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:45:49.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:45:49.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:45:49.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:45:49.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:45:49.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:45:49.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:45:49.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:45:49.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.656315 -999.00  +13.80  16.07     45   +2.10 1 1 1 1 1   887    0 11.20 -16.67 ----- 15.5 16.1 161.6 21.5 17.1 -27.8 16.9 -27.2 18.1 -27.3 18.8 -28.4
2025-09-29T17:45:49.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:45:49.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:45:49.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.656315
2025-09-29T17:45:49.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:45:49.446 [DEBUG] [Thread-162928] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:49.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:45:49.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:45:49.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:45:49.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:45:49.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:45:40', tmtdew=13.78, humidity=38.58, cloud=0.0, wind=18.02, temperature=13.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:45:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:45:49.528 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:45:49.537 [DEBUG] [Thread-162931] [transport.py] [_log()] starting thread (client mode): 0x2b920c40
2025-09-29T17:45:49.538 [DEBUG] [Thread-162931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:45:49.552 [DEBUG] [Thread-162931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:45:49.552 [INFO] [Thread-162931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:45:49.559 [DEBUG] [Thread-162931] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] client lang: <none>
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] server lang: <none>
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] kex follows: False
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] Compression: none
2025-09-29T17:45:49.560 [DEBUG] [Thread-162931] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:45:49.617 [DEBUG] [Thread-162931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:45:49.618 [DEBUG] [Thread-162931] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:45:49.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:45:49.619 [DEBUG] [Thread-162931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:45:49.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:45:49.677 [DEBUG] [Thread-162931] [transport.py] [_log()] userauth is OK
2025-09-29T17:45:49.677 [DEBUG] [Thread-162931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:45:49.677 [DEBUG] [Thread-162931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:45:49.677 [DEBUG] [Thread-162931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:45:49.677 [DEBUG] [Thread-162931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:45:49.699 [INFO] [Thread-162931] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:45:49.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:45:49.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:45:50.721 [DEBUG] [Thread-162931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:45:50.722 [DEBUG] [Thread-162931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:45:50.769 [DEBUG] [Thread-162931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:45:50.769 [DEBUG] [Thread-162931] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:45:50.778 [DEBUG] [Thread-162931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:45:50.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:45:50.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:45:50.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:45:50.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:45:50.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:45:50.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:45:50.813 [DEBUG] [Thread-162931] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:45:51.139 [DEBUG] [Thread-162933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:46:00.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:46:00.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:46:00.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:46:01.330 [DEBUG] [Thread-162934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:46:01.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 45, 40), 13.78, 38.58, 0.0, 18.02, 13.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:46:01.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:45:40
2025-09-29T17:46:01.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:46:01.650 [DEBUG] [Thread-162935] [transport.py] [_log()] starting thread (client mode): 0x2e3f8df0
2025-09-29T17:46:01.650 [DEBUG] [Thread-162935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:01.663 [DEBUG] [Thread-162935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:46:01.663 [INFO] [Thread-162935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:01.666 [DEBUG] [Thread-162935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:01.667 [DEBUG] [Thread-162935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:01.667 [DEBUG] [Thread-162935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:01.667 [DEBUG] [Thread-162935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:01.667 [DEBUG] [Thread-162935] [transport.py] [_log()] Compression: none
2025-09-29T17:46:01.667 [DEBUG] [Thread-162935] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:01.683 [DEBUG] [Thread-162935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:01.684 [DEBUG] [Thread-162935] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:01.684 [DEBUG] [Thread-162935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:46:01.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:46:01.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:01.686 [DEBUG] [Thread-162935] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:01.686 [DEBUG] [Thread-162935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:01.686 [DEBUG] [Thread-162935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:01.686 [DEBUG] [Thread-162935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:46:01.686 [DEBUG] [Thread-162935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:01.706 [INFO] [Thread-162935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:01.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:02.333 [DEBUG] [Thread-162935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:02.333 [DEBUG] [Thread-162935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:02.333 [DEBUG] [Thread-162935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:46:02.374 [DEBUG] [Thread-162935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:02.374 [DEBUG] [Thread-162935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:02.377 [DEBUG] [Thread-162935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:02.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:02.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:46:02.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:46:02.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:46:02.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:02.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:46:02.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:02.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:02.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:46:02.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.656662 -999.00  +13.80  18.36     45   +2.10 1 1 1 1 1   887    0 11.31 -16.27 ----- 12.8 18.4 160.6 23.1 17.1 -28.0 16.9 -27.1 18.1 -27.3 18.7 -29.0
2025-09-29T17:46:02.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:46:02.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:46:02.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.656662
2025-09-29T17:46:02.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:46:02.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:46:02.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:46:02.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:46:02.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:46:02.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:45:40', tmtdew=13.78, humidity=38.58, cloud=0.0, wind=18.02, temperature=13.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:45:35.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:46:02.399 [DEBUG] [Thread-162935] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:02.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:46:02.495 [DEBUG] [Thread-162938] [transport.py] [_log()] starting thread (client mode): 0x2b9f3820
2025-09-29T17:46:02.495 [DEBUG] [Thread-162938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:02.510 [DEBUG] [Thread-162938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:46:02.510 [INFO] [Thread-162938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:46:02.517 [DEBUG] [Thread-162938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:02.517 [DEBUG] [Thread-162938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:02.518 [DEBUG] [Thread-162938] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:02.519 [DEBUG] [Thread-162938] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:02.519 [DEBUG] [Thread-162938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:02.519 [DEBUG] [Thread-162938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:02.519 [DEBUG] [Thread-162938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:02.519 [DEBUG] [Thread-162938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:02.519 [DEBUG] [Thread-162938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:02.519 [DEBUG] [Thread-162938] [transport.py] [_log()] Compression: none
2025-09-29T17:46:02.519 [DEBUG] [Thread-162938] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:02.578 [DEBUG] [Thread-162938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:02.578 [DEBUG] [Thread-162938] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:02.579 [DEBUG] [Thread-162938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:46:02.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:46:02.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:02.637 [DEBUG] [Thread-162938] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:02.637 [DEBUG] [Thread-162938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:02.637 [DEBUG] [Thread-162938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:02.637 [DEBUG] [Thread-162938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:46:02.637 [DEBUG] [Thread-162938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:02.660 [INFO] [Thread-162938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:02.660 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:46:02.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:03.709 [DEBUG] [Thread-162938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:03.710 [DEBUG] [Thread-162938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:03.757 [DEBUG] [Thread-162938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:03.757 [DEBUG] [Thread-162938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:03.766 [DEBUG] [Thread-162938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:03.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:03.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:46:03.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:46:03.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:03.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:03.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:03.800 [DEBUG] [Thread-162938] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:13.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:46:13.803 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:46:13.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:46:14.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 45, 40), 13.78, 38.58, 0.0, 18.02, 13.93, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:46:14.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:45:40
2025-09-29T17:46:14.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:46:14.669 [DEBUG] [Thread-162940] [transport.py] [_log()] starting thread (client mode): 0x2e349e10
2025-09-29T17:46:14.670 [DEBUG] [Thread-162940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:14.690 [DEBUG] [Thread-162940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:46:14.691 [INFO] [Thread-162940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:46:14.693 [DEBUG] [Thread-162940] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:14.694 [DEBUG] [Thread-162940] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] Compression: none
2025-09-29T17:46:14.695 [DEBUG] [Thread-162940] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:14.712 [DEBUG] [Thread-162940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:14.713 [DEBUG] [Thread-162940] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:14.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:46:14.714 [DEBUG] [Thread-162940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:46:14.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:14.715 [DEBUG] [Thread-162940] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:14.715 [DEBUG] [Thread-162940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:14.716 [DEBUG] [Thread-162940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:14.716 [DEBUG] [Thread-162940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:46:14.716 [DEBUG] [Thread-162940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:14.733 [INFO] [Thread-162940] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:14.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:15.472 [DEBUG] [Thread-162940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:15.473 [DEBUG] [Thread-162940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:15.473 [DEBUG] [Thread-162940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:46:15.513 [DEBUG] [Thread-162940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:15.514 [DEBUG] [Thread-162940] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:15.516 [DEBUG] [Thread-162940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:15.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:15.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:46:15.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:46:15.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:46:15.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:15.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:46:15.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:15.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:15.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:46:15.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.656662 -999.00  +13.80  18.36     45   +2.10 1 1 1 1 1   887    0 11.31 -16.27 ----- 12.8 18.4 160.6 23.1 17.1 -28.0 16.9 -27.1 18.1 -27.3 18.7 -29.0
2025-09-29T17:46:15.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:46:15.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:46:15.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.656662
2025-09-29T17:46:15.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:46:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:46:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:46:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:46:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:46:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:45:40', tmtdew=13.78, humidity=38.58, cloud=0.0, wind=18.02, temperature=13.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:45:35.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:46:15.541 [DEBUG] [Thread-162940] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:15.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:46:15.635 [DEBUG] [Thread-162943] [transport.py] [_log()] starting thread (client mode): 0x2e361cc0
2025-09-29T17:46:15.636 [DEBUG] [Thread-162943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:15.651 [DEBUG] [Thread-162943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:46:15.651 [INFO] [Thread-162943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:46:15.658 [DEBUG] [Thread-162943] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:15.658 [DEBUG] [Thread-162943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:46:15.658 [DEBUG] [Thread-162943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] Compression: none
2025-09-29T17:46:15.659 [DEBUG] [Thread-162943] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:15.716 [DEBUG] [Thread-162943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:15.717 [DEBUG] [Thread-162943] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:15.717 [DEBUG] [Thread-162943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:46:15.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:46:15.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:15.772 [DEBUG] [Thread-162943] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:15.772 [DEBUG] [Thread-162943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:15.773 [DEBUG] [Thread-162943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:15.773 [DEBUG] [Thread-162943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:46:15.773 [DEBUG] [Thread-162943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:15.793 [INFO] [Thread-162943] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:15.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:46:15.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:16.364 [DEBUG] [Thread-162945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:46:16.821 [DEBUG] [Thread-162943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:16.821 [DEBUG] [Thread-162943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:16.869 [DEBUG] [Thread-162943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:16.869 [DEBUG] [Thread-162943] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:16.877 [DEBUG] [Thread-162943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:16.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:16.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:46:16.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:46:16.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:16.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:16.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:16.909 [DEBUG] [Thread-162943] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:46:26.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:46:26.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:46:27.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 46, 12), 13.72, 38.73, 0.0, 18.72, 13.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:46:27.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:46:12
2025-09-29T17:46:27.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:46:27.734 [DEBUG] [Thread-162946] [transport.py] [_log()] starting thread (client mode): 0x2e38e710
2025-09-29T17:46:27.734 [DEBUG] [Thread-162946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:27.752 [DEBUG] [Thread-162946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:46:27.752 [INFO] [Thread-162946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:27.755 [DEBUG] [Thread-162946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:27.756 [DEBUG] [Thread-162946] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:27.756 [DEBUG] [Thread-162946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:27.756 [DEBUG] [Thread-162946] [transport.py] [_log()] Compression: none
2025-09-29T17:46:27.756 [DEBUG] [Thread-162946] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:27.767 [DEBUG] [Thread-162946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:27.767 [DEBUG] [Thread-162946] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:27.767 [DEBUG] [Thread-162946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:46:27.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:46:27.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:27.769 [DEBUG] [Thread-162946] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:27.769 [DEBUG] [Thread-162946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:27.769 [DEBUG] [Thread-162946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:27.769 [DEBUG] [Thread-162946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:46:27.769 [DEBUG] [Thread-162946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:27.781 [INFO] [Thread-162946] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:27.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:28.386 [DEBUG] [Thread-162946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:28.386 [DEBUG] [Thread-162946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:28.387 [DEBUG] [Thread-162946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:46:28.427 [DEBUG] [Thread-162946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:28.427 [DEBUG] [Thread-162946] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:28.430 [DEBUG] [Thread-162946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:28.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:28.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:46:28.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:46:28.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:46:28.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:28.454 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:46:28.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:28.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:28.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:46:28.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.657009 -999.00  +13.70  17.38     45   +2.10 1 1 1 1 1   887    0 11.36 -16.49 ----- 21.1 17.4 166.4 19.1 17.1 -27.4 16.9 -26.3 18.1 -27.1 18.7 -28.5
2025-09-29T17:46:28.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:46:28.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:46:28.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.657009
2025-09-29T17:46:28.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:46:28.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:46:28.456 [DEBUG] [Thread-162946] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:28.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:46:28.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:46:28.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:46:28.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:46:12', tmtdew=13.72, humidity=38.73, cloud=0.0, wind=18.72, temperature=13.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:46:05.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:46:28.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:46:28.553 [DEBUG] [Thread-162949] [transport.py] [_log()] starting thread (client mode): 0x2e3c2ec0
2025-09-29T17:46:28.553 [DEBUG] [Thread-162949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:28.567 [DEBUG] [Thread-162949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:46:28.568 [INFO] [Thread-162949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:46:28.575 [DEBUG] [Thread-162949] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:28.575 [DEBUG] [Thread-162949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:46:28.575 [DEBUG] [Thread-162949] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] Compression: none
2025-09-29T17:46:28.576 [DEBUG] [Thread-162949] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:28.630 [DEBUG] [Thread-162949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:28.631 [DEBUG] [Thread-162949] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:28.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:46:28.632 [DEBUG] [Thread-162949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:46:28.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:28.687 [DEBUG] [Thread-162949] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:28.687 [DEBUG] [Thread-162949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:28.688 [DEBUG] [Thread-162949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:28.688 [DEBUG] [Thread-162949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:46:28.688 [DEBUG] [Thread-162949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:28.705 [INFO] [Thread-162949] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:28.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:46:28.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:29.672 [DEBUG] [Thread-162949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:29.672 [DEBUG] [Thread-162949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:29.719 [DEBUG] [Thread-162949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:29.720 [DEBUG] [Thread-162949] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:29.727 [DEBUG] [Thread-162949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:29.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:29.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:46:29.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:46:29.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:29.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:29.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:29.758 [DEBUG] [Thread-162949] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:31.414 [DEBUG] [Thread-162951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:46:32.307 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:46:32.308 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:46:39.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:46:39.761 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:46:39.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:46:40.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 46, 12), 13.72, 38.73, 0.0, 18.72, 13.89, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:46:40.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:46:12
2025-09-29T17:46:40.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:46:40.586 [DEBUG] [Thread-162952] [transport.py] [_log()] starting thread (client mode): 0x2e360e20
2025-09-29T17:46:40.586 [DEBUG] [Thread-162952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:40.606 [DEBUG] [Thread-162952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:46:40.606 [INFO] [Thread-162952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:40.609 [DEBUG] [Thread-162952] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:40.610 [DEBUG] [Thread-162952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:40.610 [DEBUG] [Thread-162952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:40.610 [DEBUG] [Thread-162952] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:40.610 [DEBUG] [Thread-162952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:40.610 [DEBUG] [Thread-162952] [transport.py] [_log()] Compression: none
2025-09-29T17:46:40.610 [DEBUG] [Thread-162952] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:40.618 [DEBUG] [Thread-162952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:40.618 [DEBUG] [Thread-162952] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:40.618 [DEBUG] [Thread-162952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:46:40.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:46:40.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:40.619 [DEBUG] [Thread-162952] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:40.620 [DEBUG] [Thread-162952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:40.620 [DEBUG] [Thread-162952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:40.620 [DEBUG] [Thread-162952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:46:40.620 [DEBUG] [Thread-162952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:40.633 [INFO] [Thread-162952] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:40.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:41.393 [DEBUG] [Thread-162952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:41.393 [DEBUG] [Thread-162952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:41.393 [DEBUG] [Thread-162952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:46:41.434 [DEBUG] [Thread-162952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:41.434 [DEBUG] [Thread-162952] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:41.436 [DEBUG] [Thread-162952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:41.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:41.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:46:41.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:46:41.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:46:41.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:41.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:46:41.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:41.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:41.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:46:41.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.657009 -999.00  +13.70  17.38     45   +2.10 1 1 1 1 1   887    0 11.36 -16.49 ----- 21.1 17.4 166.4 19.1 17.1 -27.4 16.9 -26.3 18.1 -27.1 18.7 -28.5
2025-09-29T17:46:41.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:46:41.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:46:41.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.657009
2025-09-29T17:46:41.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:46:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:46:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:46:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:46:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:46:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:46:12', tmtdew=13.72, humidity=38.73, cloud=0.0, wind=18.72, temperature=13.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:46:05.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:46:41.462 [DEBUG] [Thread-162952] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:41.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:46:41.559 [DEBUG] [Thread-162955] [transport.py] [_log()] starting thread (client mode): 0x2e3609d0
2025-09-29T17:46:41.559 [DEBUG] [Thread-162955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:41.574 [DEBUG] [Thread-162955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:46:41.574 [INFO] [Thread-162955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:46:41.581 [DEBUG] [Thread-162955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:41.582 [DEBUG] [Thread-162955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:46:41.582 [DEBUG] [Thread-162955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:41.582 [DEBUG] [Thread-162955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:41.582 [DEBUG] [Thread-162955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:41.582 [DEBUG] [Thread-162955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:41.582 [DEBUG] [Thread-162955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:41.582 [DEBUG] [Thread-162955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:41.582 [DEBUG] [Thread-162955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:41.583 [DEBUG] [Thread-162955] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:41.583 [DEBUG] [Thread-162955] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:41.583 [DEBUG] [Thread-162955] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:41.583 [DEBUG] [Thread-162955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:41.583 [DEBUG] [Thread-162955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:41.583 [DEBUG] [Thread-162955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:41.583 [DEBUG] [Thread-162955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:41.583 [DEBUG] [Thread-162955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:41.584 [DEBUG] [Thread-162955] [transport.py] [_log()] Compression: none
2025-09-29T17:46:41.584 [DEBUG] [Thread-162955] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:41.639 [DEBUG] [Thread-162955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:41.640 [DEBUG] [Thread-162955] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:41.641 [DEBUG] [Thread-162955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:46:41.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:46:41.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:41.695 [DEBUG] [Thread-162955] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:41.695 [DEBUG] [Thread-162955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:41.695 [DEBUG] [Thread-162955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:41.696 [DEBUG] [Thread-162955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:46:41.696 [DEBUG] [Thread-162955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:41.719 [INFO] [Thread-162955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:41.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:46:41.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:42.684 [DEBUG] [Thread-162955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:42.684 [DEBUG] [Thread-162955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:42.732 [DEBUG] [Thread-162955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:42.732 [DEBUG] [Thread-162955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:42.743 [DEBUG] [Thread-162955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:42.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:42.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:46:42.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:46:42.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:42.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:42.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:42.780 [DEBUG] [Thread-162955] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:46.453 [DEBUG] [Thread-162957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:46:51.175 [DEBUG] [Thread-162958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:46:52.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:46:52.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:46:52.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:46:53.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 46, 44), 13.75, 39.18, 0.0, 26.2, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:46:53.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:46:44
2025-09-29T17:46:53.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:46:53.621 [DEBUG] [Thread-162959] [transport.py] [_log()] starting thread (client mode): 0x2b91cf40
2025-09-29T17:46:53.621 [DEBUG] [Thread-162959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:53.644 [DEBUG] [Thread-162959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:46:53.644 [INFO] [Thread-162959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] Compression: none
2025-09-29T17:46:53.648 [DEBUG] [Thread-162959] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:53.664 [DEBUG] [Thread-162959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:53.664 [DEBUG] [Thread-162959] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:53.665 [DEBUG] [Thread-162959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:46:53.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:46:53.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:53.666 [DEBUG] [Thread-162959] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:53.666 [DEBUG] [Thread-162959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:53.666 [DEBUG] [Thread-162959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:53.666 [DEBUG] [Thread-162959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:46:53.667 [DEBUG] [Thread-162959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:53.684 [INFO] [Thread-162959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:53.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:54.470 [DEBUG] [Thread-162959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:54.471 [DEBUG] [Thread-162959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:54.471 [DEBUG] [Thread-162959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:46:54.511 [DEBUG] [Thread-162959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:54.511 [DEBUG] [Thread-162959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:54.517 [DEBUG] [Thread-162959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:54.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:54.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:46:54.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:46:54.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:46:54.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:54.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:46:54.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:54.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:54.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:46:54.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.657009 -999.00  +13.70  17.38     45   +2.10 1 1 1 1 1   887    0 11.36 -16.49 ----- 21.1 17.4 166.4 19.1 17.1 -27.4 16.9 -26.3 18.1 -27.1 18.7 -28.5
2025-09-29T17:46:54.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:46:54.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:46:54.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.657009
2025-09-29T17:46:54.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:46:54.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:46:54.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:46:54.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:46:54.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:46:54.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:46:44', tmtdew=13.75, humidity=39.18, cloud=0.0, wind=26.2, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:46:05.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:46:54.545 [DEBUG] [Thread-162959] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:46:54.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:46:54.639 [DEBUG] [Thread-162962] [transport.py] [_log()] starting thread (client mode): 0x2b96ab90
2025-09-29T17:46:54.639 [DEBUG] [Thread-162962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:46:54.655 [DEBUG] [Thread-162962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:46:54.656 [INFO] [Thread-162962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] client lang: <none>
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] server lang: <none>
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] kex follows: False
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] Compression: none
2025-09-29T17:46:54.663 [DEBUG] [Thread-162962] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:46:54.721 [DEBUG] [Thread-162962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:46:54.721 [DEBUG] [Thread-162962] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:46:54.721 [DEBUG] [Thread-162962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:46:54.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:46:54.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:46:54.781 [DEBUG] [Thread-162962] [transport.py] [_log()] userauth is OK
2025-09-29T17:46:54.781 [DEBUG] [Thread-162962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:46:54.781 [DEBUG] [Thread-162962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:46:54.781 [DEBUG] [Thread-162962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:46:54.781 [DEBUG] [Thread-162962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:46:54.809 [INFO] [Thread-162962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:46:54.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:46:54.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:46:55.780 [DEBUG] [Thread-162962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:46:55.781 [DEBUG] [Thread-162962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:46:55.828 [DEBUG] [Thread-162962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:46:55.828 [DEBUG] [Thread-162962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:46:55.837 [DEBUG] [Thread-162962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:46:55.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:46:55.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:46:55.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:46:55.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:46:55.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:46:55.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:46:55.872 [DEBUG] [Thread-162962] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:01.485 [DEBUG] [Thread-162964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:47:05.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:47:05.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:47:05.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:47:06.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 46, 44), 13.75, 39.18, 0.0, 26.2, 13.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:47:06.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:46:44
2025-09-29T17:47:06.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:47:06.706 [DEBUG] [Thread-162965] [transport.py] [_log()] starting thread (client mode): 0x2b91cd00
2025-09-29T17:47:06.706 [DEBUG] [Thread-162965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:06.726 [DEBUG] [Thread-162965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:47:06.726 [INFO] [Thread-162965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:47:06.729 [DEBUG] [Thread-162965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:06.729 [DEBUG] [Thread-162965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:47:06.729 [DEBUG] [Thread-162965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:06.729 [DEBUG] [Thread-162965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:06.729 [DEBUG] [Thread-162965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:06.729 [DEBUG] [Thread-162965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] Compression: none
2025-09-29T17:47:06.730 [DEBUG] [Thread-162965] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:06.744 [DEBUG] [Thread-162965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:06.744 [DEBUG] [Thread-162965] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:06.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:47:06.745 [DEBUG] [Thread-162965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:47:06.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:06.746 [DEBUG] [Thread-162965] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:06.746 [DEBUG] [Thread-162965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:06.747 [DEBUG] [Thread-162965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:06.747 [DEBUG] [Thread-162965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:47:06.747 [DEBUG] [Thread-162965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:06.770 [INFO] [Thread-162965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:06.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:07.372 [DEBUG] [Thread-162965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:07.372 [DEBUG] [Thread-162965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:07.372 [DEBUG] [Thread-162965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:47:07.413 [DEBUG] [Thread-162965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:07.413 [DEBUG] [Thread-162965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:07.416 [DEBUG] [Thread-162965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:07.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:07.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:47:07.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:47:07.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:47:07.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:07.436 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:47:07.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.657356 -999.00  +13.70  17.27     45   +2.10 1 1 1 1 1   887    0 11.47 -14.04 ----- 16.7 17.3 145.7 23.8 17.0 -27.5 16.9 -27.8 18.1 -27.2 18.6 -28.7
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.657356
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:47:07.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:46:44', tmtdew=13.75, humidity=39.18, cloud=0.0, wind=26.2, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:46:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:47:07.437 [DEBUG] [Thread-162965] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:07.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:47:07.521 [DEBUG] [Thread-162968] [transport.py] [_log()] starting thread (client mode): 0x2b921540
2025-09-29T17:47:07.521 [DEBUG] [Thread-162968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:07.535 [DEBUG] [Thread-162968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:47:07.535 [INFO] [Thread-162968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] Compression: none
2025-09-29T17:47:07.543 [DEBUG] [Thread-162968] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:07.600 [DEBUG] [Thread-162968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:07.600 [DEBUG] [Thread-162968] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:07.600 [DEBUG] [Thread-162968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:47:07.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:47:07.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:07.657 [DEBUG] [Thread-162968] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:07.657 [DEBUG] [Thread-162968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:07.657 [DEBUG] [Thread-162968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:07.657 [DEBUG] [Thread-162968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:47:07.657 [DEBUG] [Thread-162968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:07.671 [INFO] [Thread-162968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:07.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:47:07.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:08.692 [DEBUG] [Thread-162968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:08.692 [DEBUG] [Thread-162968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:08.740 [DEBUG] [Thread-162968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:08.740 [DEBUG] [Thread-162968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:08.748 [DEBUG] [Thread-162968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:08.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:08.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:47:08.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:47:08.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:08.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:08.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:08.780 [DEBUG] [Thread-162968] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:16.540 [DEBUG] [Thread-162970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:47:18.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:47:18.783 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:47:18.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:47:19.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 47, 16), 13.72, 39.25, 0.0, 23.22, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:47:19.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:47:16
2025-09-29T17:47:19.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:47:19.615 [DEBUG] [Thread-162971] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-29T17:47:19.615 [DEBUG] [Thread-162971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:19.637 [DEBUG] [Thread-162971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:47:19.637 [INFO] [Thread-162971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:47:19.640 [DEBUG] [Thread-162971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:19.640 [DEBUG] [Thread-162971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:47:19.640 [DEBUG] [Thread-162971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] Compression: none
2025-09-29T17:47:19.641 [DEBUG] [Thread-162971] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:19.657 [DEBUG] [Thread-162971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:19.658 [DEBUG] [Thread-162971] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:19.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:47:19.659 [DEBUG] [Thread-162971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:47:19.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:19.660 [DEBUG] [Thread-162971] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:19.661 [DEBUG] [Thread-162971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:19.661 [DEBUG] [Thread-162971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:19.661 [DEBUG] [Thread-162971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:47:19.661 [DEBUG] [Thread-162971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:19.678 [INFO] [Thread-162971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:19.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:20.444 [DEBUG] [Thread-162971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:20.445 [DEBUG] [Thread-162971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:20.445 [DEBUG] [Thread-162971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:47:20.485 [DEBUG] [Thread-162971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:20.485 [DEBUG] [Thread-162971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:20.488 [DEBUG] [Thread-162971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:20.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:20.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:47:20.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:47:20.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:47:20.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:20.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:47:20.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:20.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:20.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:47:20.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.657356 -999.00  +13.70  17.27     45   +2.10 1 1 1 1 1   887    0 11.47 -14.04 ----- 16.7 17.3 145.7 23.8 17.0 -27.5 16.9 -27.8 18.1 -27.2 18.6 -28.7
2025-09-29T17:47:20.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:47:20.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:47:20.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.657356
2025-09-29T17:47:20.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:47:20.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:47:20.510 [DEBUG] [Thread-162971] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:20.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:47:20.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:47:20.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:47:20.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:47:16', tmtdew=13.72, humidity=39.25, cloud=0.0, wind=23.22, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:46:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:47:20.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:47:20.604 [DEBUG] [Thread-162974] [transport.py] [_log()] starting thread (client mode): 0x2e3c1570
2025-09-29T17:47:20.604 [DEBUG] [Thread-162974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:20.621 [DEBUG] [Thread-162974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:47:20.622 [INFO] [Thread-162974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:20.629 [DEBUG] [Thread-162974] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] Compression: none
2025-09-29T17:47:20.630 [DEBUG] [Thread-162974] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:20.689 [DEBUG] [Thread-162974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:20.689 [DEBUG] [Thread-162974] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:20.690 [DEBUG] [Thread-162974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:47:20.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:47:20.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:20.749 [DEBUG] [Thread-162974] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:20.749 [DEBUG] [Thread-162974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:20.750 [DEBUG] [Thread-162974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:20.750 [DEBUG] [Thread-162974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:47:20.750 [DEBUG] [Thread-162974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:20.769 [INFO] [Thread-162974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:20.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:47:20.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:21.772 [DEBUG] [Thread-162974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:21.772 [DEBUG] [Thread-162974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:21.822 [DEBUG] [Thread-162974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:21.822 [DEBUG] [Thread-162974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:21.834 [DEBUG] [Thread-162974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:21.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:21.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:47:21.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:47:21.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:21.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:21.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:21.880 [DEBUG] [Thread-162974] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:31.583 [DEBUG] [Thread-162976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:47:31.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:47:31.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:47:31.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:47:32.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 47, 16), 13.72, 39.25, 0.0, 23.22, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:47:32.444 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:47:32.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:47:16
2025-09-29T17:47:32.445 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:47:32.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:47:32.703 [DEBUG] [Thread-162977] [transport.py] [_log()] starting thread (client mode): 0x2e3c1720
2025-09-29T17:47:32.703 [DEBUG] [Thread-162977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:32.722 [DEBUG] [Thread-162977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:47:32.723 [INFO] [Thread-162977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:47:32.726 [DEBUG] [Thread-162977] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:32.726 [DEBUG] [Thread-162977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:32.727 [DEBUG] [Thread-162977] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:32.728 [DEBUG] [Thread-162977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:32.728 [DEBUG] [Thread-162977] [transport.py] [_log()] Compression: none
2025-09-29T17:47:32.728 [DEBUG] [Thread-162977] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:32.746 [DEBUG] [Thread-162977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:32.746 [DEBUG] [Thread-162977] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:32.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:47:32.747 [DEBUG] [Thread-162977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:47:32.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:32.788 [DEBUG] [Thread-162977] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:32.789 [DEBUG] [Thread-162977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:32.789 [DEBUG] [Thread-162977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:32.789 [DEBUG] [Thread-162977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:47:32.789 [DEBUG] [Thread-162977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:32.820 [INFO] [Thread-162977] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:32.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:33.442 [DEBUG] [Thread-162977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:33.442 [DEBUG] [Thread-162977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:33.442 [DEBUG] [Thread-162977] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:47:33.483 [DEBUG] [Thread-162977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:33.483 [DEBUG] [Thread-162977] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:33.486 [DEBUG] [Thread-162977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:33.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:33.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:47:33.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:47:33.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:47:33.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:33.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:47:33.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:33.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:33.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:47:33.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.657704 -999.00  +13.70  24.44     45   +2.10 1 1 1 1 1   887    0 11.46 -13.07 ----- 20.2 24.4 144.0 28.4 16.9 -27.9 16.8 -26.9 17.9 -27.9 18.6 -28.8
2025-09-29T17:47:33.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:47:33.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:47:33.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.657704
2025-09-29T17:47:33.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:47:33.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:47:33.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:47:33.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:47:33.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:47:33.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:47:16', tmtdew=13.72, humidity=39.25, cloud=0.0, wind=23.22, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:47:05.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:47:33.503 [DEBUG] [Thread-162977] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:33.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:47:33.598 [DEBUG] [Thread-162980] [transport.py] [_log()] starting thread (client mode): 0x2b91fac0
2025-09-29T17:47:33.598 [DEBUG] [Thread-162980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:33.614 [DEBUG] [Thread-162980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:47:33.614 [INFO] [Thread-162980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:47:33.621 [DEBUG] [Thread-162980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:33.621 [DEBUG] [Thread-162980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:47:33.621 [DEBUG] [Thread-162980] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] Compression: none
2025-09-29T17:47:33.622 [DEBUG] [Thread-162980] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:33.680 [DEBUG] [Thread-162980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:33.681 [DEBUG] [Thread-162980] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:33.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:47:33.682 [DEBUG] [Thread-162980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:47:33.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:33.736 [DEBUG] [Thread-162980] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:33.737 [DEBUG] [Thread-162980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:33.737 [DEBUG] [Thread-162980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:33.737 [DEBUG] [Thread-162980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:47:33.737 [DEBUG] [Thread-162980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:33.757 [INFO] [Thread-162980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:33.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:47:33.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:34.752 [DEBUG] [Thread-162980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:34.752 [DEBUG] [Thread-162980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:34.800 [DEBUG] [Thread-162980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:34.800 [DEBUG] [Thread-162980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:34.809 [DEBUG] [Thread-162980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:34.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:34.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:47:34.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:47:34.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:34.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:34.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:34.842 [DEBUG] [Thread-162980] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:44.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:47:44.840 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:47:44.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:47:45.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 47, 16), 13.72, 39.25, 0.0, 23.22, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:47:45.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:47:16
2025-09-29T17:47:45.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:47:45.696 [DEBUG] [Thread-162982] [transport.py] [_log()] starting thread (client mode): 0x2e3636d0
2025-09-29T17:47:45.696 [DEBUG] [Thread-162982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:45.717 [DEBUG] [Thread-162982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:47:45.717 [INFO] [Thread-162982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:45.720 [DEBUG] [Thread-162982] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:45.721 [DEBUG] [Thread-162982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:45.721 [DEBUG] [Thread-162982] [transport.py] [_log()] Compression: none
2025-09-29T17:47:45.721 [DEBUG] [Thread-162982] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:45.736 [DEBUG] [Thread-162982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:45.736 [DEBUG] [Thread-162982] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:45.736 [DEBUG] [Thread-162982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:47:45.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:47:45.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:45.737 [DEBUG] [Thread-162982] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:45.737 [DEBUG] [Thread-162982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:45.737 [DEBUG] [Thread-162982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:45.737 [DEBUG] [Thread-162982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:47:45.737 [DEBUG] [Thread-162982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:45.746 [INFO] [Thread-162982] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:45.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:46.557 [DEBUG] [Thread-162982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:46.557 [DEBUG] [Thread-162982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:46.557 [DEBUG] [Thread-162982] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:47:46.598 [DEBUG] [Thread-162982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:46.598 [DEBUG] [Thread-162982] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:46.600 [DEBUG] [Thread-162982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:46.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:46.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:47:46.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:47:46.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:47:46.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:46.613 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:47:46.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.657704 -999.00  +13.70  24.44     45   +2.10 1 1 1 1 1   887    0 11.46 -13.07 ----- 20.2 24.4 144.0 28.4 16.9 -27.9 16.8 -26.9 17.9 -27.9 18.6 -28.8
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.657704
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:47:46.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:47:16', tmtdew=13.72, humidity=39.25, cloud=0.0, wind=23.22, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:47:05.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:47:46.614 [DEBUG] [Thread-162982] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:46.627 [DEBUG] [Thread-162985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:47:46.687 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:47:46.699 [DEBUG] [Thread-162986] [transport.py] [_log()] starting thread (client mode): 0x2e375960
2025-09-29T17:47:46.699 [DEBUG] [Thread-162986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:46.714 [DEBUG] [Thread-162986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:47:46.714 [INFO] [Thread-162986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] Compression: none
2025-09-29T17:47:46.722 [DEBUG] [Thread-162986] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:46.779 [DEBUG] [Thread-162986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:46.779 [DEBUG] [Thread-162986] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:46.779 [DEBUG] [Thread-162986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:47:46.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:47:46.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:46.836 [DEBUG] [Thread-162986] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:46.836 [DEBUG] [Thread-162986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:46.836 [DEBUG] [Thread-162986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:46.836 [DEBUG] [Thread-162986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:47:46.836 [DEBUG] [Thread-162986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:46.849 [INFO] [Thread-162986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:46.850 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:47:46.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:47.878 [DEBUG] [Thread-162986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:47.878 [DEBUG] [Thread-162986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:47.927 [DEBUG] [Thread-162986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:47.927 [DEBUG] [Thread-162986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:47.935 [DEBUG] [Thread-162986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:47.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:47.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:47:47.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:47:47.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:47.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:47.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:47.966 [DEBUG] [Thread-162986] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:51.203 [DEBUG] [Thread-162988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:47:57.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:47:57.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:47:57.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:47:58.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 47, 48), 13.64, 39.33, 0.0, 17.91, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:47:58.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:47:48
2025-09-29T17:47:58.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:47:58.799 [DEBUG] [Thread-162989] [transport.py] [_log()] starting thread (client mode): 0x2e3743a0
2025-09-29T17:47:58.799 [DEBUG] [Thread-162989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:58.819 [DEBUG] [Thread-162989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:47:58.819 [INFO] [Thread-162989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] Compression: none
2025-09-29T17:47:58.821 [DEBUG] [Thread-162989] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:58.833 [DEBUG] [Thread-162989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:58.834 [DEBUG] [Thread-162989] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:58.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:47:58.835 [DEBUG] [Thread-162989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:47:58.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:58.836 [DEBUG] [Thread-162989] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:58.837 [DEBUG] [Thread-162989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:58.837 [DEBUG] [Thread-162989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:58.837 [DEBUG] [Thread-162989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:47:58.837 [DEBUG] [Thread-162989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:58.854 [INFO] [Thread-162989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:58.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:47:59.641 [DEBUG] [Thread-162989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:47:59.641 [DEBUG] [Thread-162989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:47:59.642 [DEBUG] [Thread-162989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:47:59.682 [DEBUG] [Thread-162989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:47:59.683 [DEBUG] [Thread-162989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:47:59.685 [DEBUG] [Thread-162989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:47:59.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:47:59.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:47:59.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:47:59.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:47:59.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:47:59.701 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:47:59.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:47:59.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:47:59.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:47:59.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.657704 -999.00  +13.70  24.44     45   +2.10 1 1 1 1 1   887    0 11.46 -13.07 ----- 20.2 24.4 144.0 28.4 16.9 -27.9 16.8 -26.9 17.9 -27.9 18.6 -28.8
2025-09-29T17:47:59.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:47:59.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:47:59.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.657704
2025-09-29T17:47:59.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:47:59.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:47:59.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:47:59.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:47:59.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:47:59.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:47:48', tmtdew=13.64, humidity=39.33, cloud=0.0, wind=17.91, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:47:05.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:47:59.704 [DEBUG] [Thread-162989] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:47:59.788 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:47:59.797 [DEBUG] [Thread-162992] [transport.py] [_log()] starting thread (client mode): 0x2b9684f0
2025-09-29T17:47:59.797 [DEBUG] [Thread-162992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:47:59.812 [DEBUG] [Thread-162992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:47:59.812 [INFO] [Thread-162992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:47:59.819 [DEBUG] [Thread-162992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:47:59.819 [DEBUG] [Thread-162992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:47:59.819 [DEBUG] [Thread-162992] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:47:59.819 [DEBUG] [Thread-162992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:59.819 [DEBUG] [Thread-162992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] client lang: <none>
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] server lang: <none>
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] kex follows: False
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] Compression: none
2025-09-29T17:47:59.820 [DEBUG] [Thread-162992] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:47:59.875 [DEBUG] [Thread-162992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:47:59.875 [DEBUG] [Thread-162992] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:47:59.876 [DEBUG] [Thread-162992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:47:59.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:47:59.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:47:59.931 [DEBUG] [Thread-162992] [transport.py] [_log()] userauth is OK
2025-09-29T17:47:59.932 [DEBUG] [Thread-162992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:47:59.932 [DEBUG] [Thread-162992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:47:59.932 [DEBUG] [Thread-162992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:47:59.932 [DEBUG] [Thread-162992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:47:59.957 [INFO] [Thread-162992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:47:59.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:47:59.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:01.004 [DEBUG] [Thread-162992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:01.004 [DEBUG] [Thread-162992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:01.052 [DEBUG] [Thread-162992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:01.052 [DEBUG] [Thread-162992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:01.061 [DEBUG] [Thread-162992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:01.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:01.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:48:01.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:48:01.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:01.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:01.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:01.096 [DEBUG] [Thread-162992] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:48:01.660 [DEBUG] [Thread-162994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:48:11.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:48:11.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:48:11.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:48:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 47, 48), 13.64, 39.33, 0.0, 17.91, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:48:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:47:48
2025-09-29T17:48:11.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:48:11.939 [DEBUG] [Thread-162995] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bf0
2025-09-29T17:48:11.939 [DEBUG] [Thread-162995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:48:11.959 [DEBUG] [Thread-162995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:48:11.959 [INFO] [Thread-162995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:48:11.963 [DEBUG] [Thread-162995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:48:11.963 [DEBUG] [Thread-162995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:48:11.963 [DEBUG] [Thread-162995] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:48:11.963 [DEBUG] [Thread-162995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:11.963 [DEBUG] [Thread-162995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:11.963 [DEBUG] [Thread-162995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:11.963 [DEBUG] [Thread-162995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] client lang: <none>
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] server lang: <none>
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] kex follows: False
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] Compression: none
2025-09-29T17:48:11.964 [DEBUG] [Thread-162995] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:48:11.983 [DEBUG] [Thread-162995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:48:11.983 [DEBUG] [Thread-162995] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:48:11.984 [DEBUG] [Thread-162995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:48:11.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:48:11.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:48:12.024 [DEBUG] [Thread-162995] [transport.py] [_log()] userauth is OK
2025-09-29T17:48:12.024 [DEBUG] [Thread-162995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:48:12.025 [DEBUG] [Thread-162995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:48:12.025 [DEBUG] [Thread-162995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:48:12.025 [DEBUG] [Thread-162995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:48:12.045 [INFO] [Thread-162995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:48:12.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:12.711 [DEBUG] [Thread-162995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:12.712 [DEBUG] [Thread-162995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:12.712 [DEBUG] [Thread-162995] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:48:12.752 [DEBUG] [Thread-162995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:12.752 [DEBUG] [Thread-162995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:12.756 [DEBUG] [Thread-162995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:12.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:12.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:48:12.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:48:12.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:48:12.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:12.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:48:12.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:12.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:12.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:48:12.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.658050 -999.00  +13.60  14.70     45   +2.10 1 1 1 1 1   887    0 11.29 -13.24 ----- 13.9 14.7 143.6 22.9 16.9 -27.6 16.8 -26.9 17.9 -27.2 18.5 -28.9
2025-09-29T17:48:12.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:48:12.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:48:12.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.658050
2025-09-29T17:48:12.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:48:12.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:48:12.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:48:12.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:48:12.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:48:12.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:47:48', tmtdew=13.64, humidity=39.33, cloud=0.0, wind=17.91, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:47:35.520', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:48:12.781 [DEBUG] [Thread-162995] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:48:12.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:48:12.876 [DEBUG] [Thread-162998] [transport.py] [_log()] starting thread (client mode): 0x2b9cdcc0
2025-09-29T17:48:12.877 [DEBUG] [Thread-162998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:48:12.891 [DEBUG] [Thread-162998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:48:12.891 [INFO] [Thread-162998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:48:12.898 [DEBUG] [Thread-162998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:48:12.898 [DEBUG] [Thread-162998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:48:12.898 [DEBUG] [Thread-162998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:48:12.898 [DEBUG] [Thread-162998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:12.898 [DEBUG] [Thread-162998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:12.898 [DEBUG] [Thread-162998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:12.898 [DEBUG] [Thread-162998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:12.898 [DEBUG] [Thread-162998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] client lang: <none>
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] server lang: <none>
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] kex follows: False
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] Compression: none
2025-09-29T17:48:12.899 [DEBUG] [Thread-162998] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:48:12.954 [DEBUG] [Thread-162998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:48:12.955 [DEBUG] [Thread-162998] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:48:12.955 [DEBUG] [Thread-162998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:48:12.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:48:12.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:48:13.011 [DEBUG] [Thread-162998] [transport.py] [_log()] userauth is OK
2025-09-29T17:48:13.011 [DEBUG] [Thread-162998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:48:13.011 [DEBUG] [Thread-162998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:48:13.011 [DEBUG] [Thread-162998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:48:13.011 [DEBUG] [Thread-162998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:48:13.030 [INFO] [Thread-162998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:48:13.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:48:13.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:14.011 [DEBUG] [Thread-162998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:14.012 [DEBUG] [Thread-162998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:14.061 [DEBUG] [Thread-162998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:14.061 [DEBUG] [Thread-162998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:14.070 [DEBUG] [Thread-162998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:14.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:14.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:48:14.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:48:14.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:14.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:14.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:14.114 [DEBUG] [Thread-162998] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:48:16.713 [DEBUG] [Thread-163000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:48:24.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:48:24.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:48:24.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:48:24.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 48, 21), 13.59, 39.45, 0.0, 19.57, 13.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:48:24.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:48:21
2025-09-29T17:48:24.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:48:24.982 [DEBUG] [Thread-163001] [transport.py] [_log()] starting thread (client mode): 0x2b91dba0
2025-09-29T17:48:24.983 [DEBUG] [Thread-163001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:48:25.001 [DEBUG] [Thread-163001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:48:25.002 [INFO] [Thread-163001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] client lang: <none>
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] server lang: <none>
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] kex follows: False
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] Compression: none
2025-09-29T17:48:25.005 [DEBUG] [Thread-163001] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:48:25.020 [DEBUG] [Thread-163001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:48:25.021 [DEBUG] [Thread-163001] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:48:25.021 [DEBUG] [Thread-163001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:48:25.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:48:25.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:48:25.022 [DEBUG] [Thread-163001] [transport.py] [_log()] userauth is OK
2025-09-29T17:48:25.022 [DEBUG] [Thread-163001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:48:25.022 [DEBUG] [Thread-163001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:48:25.022 [DEBUG] [Thread-163001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:48:25.022 [DEBUG] [Thread-163001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:48:25.041 [INFO] [Thread-163001] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:48:25.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:25.826 [DEBUG] [Thread-163001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:25.827 [DEBUG] [Thread-163001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:25.827 [DEBUG] [Thread-163001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:48:25.868 [DEBUG] [Thread-163001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:25.868 [DEBUG] [Thread-163001] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:25.870 [DEBUG] [Thread-163001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:25.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:25.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:48:25.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:48:25.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:48:25.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:25.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:48:25.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:25.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.658050 -999.00  +13.60  14.70     45   +2.10 1 1 1 1 1   887    0 11.29 -13.24 ----- 13.9 14.7 143.6 22.9 16.9 -27.6 16.8 -26.9 17.9 -27.2 18.5 -28.9
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.658050
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:48:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:48:21', tmtdew=13.59, humidity=39.45, cloud=0.0, wind=19.57, temperature=13.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:47:35.520', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:48:25.888 [DEBUG] [Thread-163001] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:48:25.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:48:25.972 [DEBUG] [Thread-163004] [transport.py] [_log()] starting thread (client mode): 0x2b9ccca0
2025-09-29T17:48:25.972 [DEBUG] [Thread-163004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:48:25.987 [DEBUG] [Thread-163004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:48:25.987 [INFO] [Thread-163004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] client lang: <none>
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] server lang: <none>
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] kex follows: False
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] Compression: none
2025-09-29T17:48:25.995 [DEBUG] [Thread-163004] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:48:26.053 [DEBUG] [Thread-163004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:48:26.053 [DEBUG] [Thread-163004] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:48:26.054 [DEBUG] [Thread-163004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:48:26.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:48:26.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:48:26.110 [DEBUG] [Thread-163004] [transport.py] [_log()] userauth is OK
2025-09-29T17:48:26.110 [DEBUG] [Thread-163004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:48:26.111 [DEBUG] [Thread-163004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:48:26.111 [DEBUG] [Thread-163004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:48:26.111 [DEBUG] [Thread-163004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:48:26.126 [INFO] [Thread-163004] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:48:26.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:48:26.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:27.115 [DEBUG] [Thread-163004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:27.115 [DEBUG] [Thread-163004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:27.163 [DEBUG] [Thread-163004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:27.163 [DEBUG] [Thread-163004] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:27.171 [DEBUG] [Thread-163004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:27.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:27.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:48:27.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:48:27.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:27.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:27.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:27.205 [DEBUG] [Thread-163004] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:48:31.756 [DEBUG] [Thread-163006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:48:32.586 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:48:32.587 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:48:37.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:48:37.208 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:48:37.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:48:37.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 48, 21), 13.59, 39.45, 0.0, 19.57, 13.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:48:37.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:48:21
2025-09-29T17:48:37.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:48:38.049 [DEBUG] [Thread-163007] [transport.py] [_log()] starting thread (client mode): 0x2b96a800
2025-09-29T17:48:38.049 [DEBUG] [Thread-163007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:48:38.065 [DEBUG] [Thread-163007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:48:38.065 [INFO] [Thread-163007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] client lang: <none>
2025-09-29T17:48:38.067 [DEBUG] [Thread-163007] [transport.py] [_log()] server lang: <none>
2025-09-29T17:48:38.068 [DEBUG] [Thread-163007] [transport.py] [_log()] kex follows: False
2025-09-29T17:48:38.068 [DEBUG] [Thread-163007] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:48:38.068 [DEBUG] [Thread-163007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:48:38.068 [DEBUG] [Thread-163007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:48:38.068 [DEBUG] [Thread-163007] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:48:38.068 [DEBUG] [Thread-163007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:48:38.068 [DEBUG] [Thread-163007] [transport.py] [_log()] Compression: none
2025-09-29T17:48:38.068 [DEBUG] [Thread-163007] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:48:38.078 [DEBUG] [Thread-163007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:48:38.079 [DEBUG] [Thread-163007] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:48:38.079 [DEBUG] [Thread-163007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:48:38.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:48:38.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:48:38.080 [DEBUG] [Thread-163007] [transport.py] [_log()] userauth is OK
2025-09-29T17:48:38.081 [DEBUG] [Thread-163007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:48:38.081 [DEBUG] [Thread-163007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:48:38.081 [DEBUG] [Thread-163007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:48:38.081 [DEBUG] [Thread-163007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:48:38.104 [INFO] [Thread-163007] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:48:38.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:38.684 [DEBUG] [Thread-163007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:38.684 [DEBUG] [Thread-163007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:38.684 [DEBUG] [Thread-163007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:48:38.725 [DEBUG] [Thread-163007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:38.725 [DEBUG] [Thread-163007] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:38.727 [DEBUG] [Thread-163007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:38.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:38.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:48:38.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:48:38.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:48:38.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:38.741 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:48:38.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:38.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:38.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:48:38.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.658398 -999.00  +13.60  14.66     45   +2.10 1 1 1 1 1   887    0 11.38 -14.34 ----- 14.5 14.7 158.0 24.9 16.9 -28.0 16.7 -26.8 17.9 -27.2 18.4 -29.0
2025-09-29T17:48:38.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:48:38.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:48:38.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.658398
2025-09-29T17:48:38.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:48:38.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:48:38.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:48:38.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:48:38.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:48:38.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:48:21', tmtdew=13.59, humidity=39.45, cloud=0.0, wind=19.57, temperature=13.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:48:05.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:48:38.744 [DEBUG] [Thread-163007] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:48:38.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:48:38.840 [DEBUG] [Thread-163010] [transport.py] [_log()] starting thread (client mode): 0x2e377ca0
2025-09-29T17:48:38.840 [DEBUG] [Thread-163010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:48:38.855 [DEBUG] [Thread-163010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:48:38.855 [INFO] [Thread-163010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] client lang: <none>
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] server lang: <none>
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] kex follows: False
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:48:38.863 [DEBUG] [Thread-163010] [transport.py] [_log()] Compression: none
2025-09-29T17:48:38.864 [DEBUG] [Thread-163010] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:48:38.921 [DEBUG] [Thread-163010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:48:38.922 [DEBUG] [Thread-163010] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:48:38.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:48:38.923 [DEBUG] [Thread-163010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:48:38.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:48:38.985 [DEBUG] [Thread-163010] [transport.py] [_log()] userauth is OK
2025-09-29T17:48:38.986 [DEBUG] [Thread-163010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:48:38.986 [DEBUG] [Thread-163010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:48:38.986 [DEBUG] [Thread-163010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:48:38.986 [DEBUG] [Thread-163010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:48:39.007 [INFO] [Thread-163010] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:48:39.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:48:39.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:39.975 [DEBUG] [Thread-163010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:39.975 [DEBUG] [Thread-163010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:40.024 [DEBUG] [Thread-163010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:40.025 [DEBUG] [Thread-163010] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:40.037 [DEBUG] [Thread-163010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:40.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:40.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:48:40.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:48:40.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:40.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:40.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:40.070 [DEBUG] [Thread-163010] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:48:46.801 [DEBUG] [Thread-163012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:48:50.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:48:50.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:48:50.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:48:50.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 48, 21), 13.59, 39.45, 0.0, 19.57, 13.88, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:48:50.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:48:21
2025-09-29T17:48:50.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:48:50.894 [DEBUG] [Thread-163013] [transport.py] [_log()] starting thread (client mode): 0x2b91df60
2025-09-29T17:48:50.894 [DEBUG] [Thread-163013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:48:50.917 [DEBUG] [Thread-163013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:48:50.917 [INFO] [Thread-163013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:48:50.920 [DEBUG] [Thread-163013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:48:50.920 [DEBUG] [Thread-163013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:48:50.920 [DEBUG] [Thread-163013] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:48:50.920 [DEBUG] [Thread-163013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:50.920 [DEBUG] [Thread-163013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] client lang: <none>
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] server lang: <none>
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] kex follows: False
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] Compression: none
2025-09-29T17:48:50.921 [DEBUG] [Thread-163013] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:48:50.939 [DEBUG] [Thread-163013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:48:50.940 [DEBUG] [Thread-163013] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:48:50.940 [DEBUG] [Thread-163013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:48:50.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:48:50.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:48:50.943 [DEBUG] [Thread-163013] [transport.py] [_log()] userauth is OK
2025-09-29T17:48:50.943 [DEBUG] [Thread-163013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:48:50.943 [DEBUG] [Thread-163013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:48:50.944 [DEBUG] [Thread-163013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:48:50.944 [DEBUG] [Thread-163013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:48:50.967 [INFO] [Thread-163013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:48:50.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:51.237 [DEBUG] [Thread-163015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:48:51.771 [DEBUG] [Thread-163013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:51.772 [DEBUG] [Thread-163013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:51.772 [DEBUG] [Thread-163013] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:48:51.812 [DEBUG] [Thread-163013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:51.813 [DEBUG] [Thread-163013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:51.816 [DEBUG] [Thread-163013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:51.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:51.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:48:51.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:48:51.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:48:51.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:51.838 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:48:51.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:51.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:51.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:48:51.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.658398 -999.00  +13.60  14.66     45   +2.10 1 1 1 1 1   887    0 11.38 -14.34 ----- 14.5 14.7 158.0 24.9 16.9 -28.0 16.7 -26.8 17.9 -27.2 18.4 -29.0
2025-09-29T17:48:51.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:48:51.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:48:51.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.658398
2025-09-29T17:48:51.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:48:51.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:48:51.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:48:51.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:48:51.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:48:51.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:48:21', tmtdew=13.59, humidity=39.45, cloud=0.0, wind=19.57, temperature=13.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:48:05.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:48:51.841 [DEBUG] [Thread-163013] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:48:51.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:48:51.935 [DEBUG] [Thread-163017] [transport.py] [_log()] starting thread (client mode): 0x2e3765f0
2025-09-29T17:48:51.935 [DEBUG] [Thread-163017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:48:51.950 [DEBUG] [Thread-163017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:48:51.950 [INFO] [Thread-163017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:48:51.957 [DEBUG] [Thread-163017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:48:51.957 [DEBUG] [Thread-163017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] client lang: <none>
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] server lang: <none>
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] kex follows: False
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] Compression: none
2025-09-29T17:48:51.958 [DEBUG] [Thread-163017] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:48:52.018 [DEBUG] [Thread-163017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:48:52.018 [DEBUG] [Thread-163017] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:48:52.019 [DEBUG] [Thread-163017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:48:52.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:48:52.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:48:52.074 [DEBUG] [Thread-163017] [transport.py] [_log()] userauth is OK
2025-09-29T17:48:52.074 [DEBUG] [Thread-163017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:48:52.074 [DEBUG] [Thread-163017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:48:52.074 [DEBUG] [Thread-163017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:48:52.074 [DEBUG] [Thread-163017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:48:52.094 [INFO] [Thread-163017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:48:52.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:48:52.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:48:53.109 [DEBUG] [Thread-163017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:48:53.109 [DEBUG] [Thread-163017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:48:53.157 [DEBUG] [Thread-163017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:48:53.157 [DEBUG] [Thread-163017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:48:53.166 [DEBUG] [Thread-163017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:48:53.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:48:53.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:48:53.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:48:53.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:48:53.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:48:53.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:48:53.201 [DEBUG] [Thread-163017] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:01.844 [DEBUG] [Thread-163019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:49:03.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:49:03.203 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:49:03.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:49:03.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 48, 53), 13.57, 39.36, 0.0, 24.77, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:49:03.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:48:53
2025-09-29T17:49:03.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:49:04.066 [DEBUG] [Thread-163020] [transport.py] [_log()] starting thread (client mode): 0x2b923280
2025-09-29T17:49:04.067 [DEBUG] [Thread-163020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:04.088 [DEBUG] [Thread-163020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:49:04.088 [INFO] [Thread-163020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:04.091 [DEBUG] [Thread-163020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:04.092 [DEBUG] [Thread-163020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:04.092 [DEBUG] [Thread-163020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:04.092 [DEBUG] [Thread-163020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:04.092 [DEBUG] [Thread-163020] [transport.py] [_log()] Compression: none
2025-09-29T17:49:04.092 [DEBUG] [Thread-163020] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:04.107 [DEBUG] [Thread-163020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:04.107 [DEBUG] [Thread-163020] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:04.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:49:04.108 [DEBUG] [Thread-163020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:49:04.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:04.108 [DEBUG] [Thread-163020] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:04.108 [DEBUG] [Thread-163020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:04.108 [DEBUG] [Thread-163020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:04.108 [DEBUG] [Thread-163020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:49:04.108 [DEBUG] [Thread-163020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:04.128 [INFO] [Thread-163020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:04.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:04.977 [DEBUG] [Thread-163020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:04.977 [DEBUG] [Thread-163020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:04.977 [DEBUG] [Thread-163020] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:49:05.018 [DEBUG] [Thread-163020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:05.018 [DEBUG] [Thread-163020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:05.020 [DEBUG] [Thread-163020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:05.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:05.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:49:05.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:49:05.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:49:05.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:05.035 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:49:05.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.658398 -999.00  +13.60  14.66     45   +2.10 1 1 1 1 1   887    0 11.38 -14.34 ----- 14.5 14.7 158.0 24.9 16.9 -28.0 16.7 -26.8 17.9 -27.2 18.4 -29.0
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.658398
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:49:05.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:48:53', tmtdew=13.57, humidity=39.36, cloud=0.0, wind=24.77, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:48:05.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:49:05.035 [DEBUG] [Thread-163020] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:05.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:49:05.123 [DEBUG] [Thread-163023] [transport.py] [_log()] starting thread (client mode): 0x2b920040
2025-09-29T17:49:05.123 [DEBUG] [Thread-163023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:05.137 [DEBUG] [Thread-163023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:49:05.137 [INFO] [Thread-163023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:49:05.144 [DEBUG] [Thread-163023] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:05.144 [DEBUG] [Thread-163023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:49:05.144 [DEBUG] [Thread-163023] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:05.144 [DEBUG] [Thread-163023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:05.144 [DEBUG] [Thread-163023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] Compression: none
2025-09-29T17:49:05.145 [DEBUG] [Thread-163023] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:05.200 [DEBUG] [Thread-163023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:05.200 [DEBUG] [Thread-163023] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:05.200 [DEBUG] [Thread-163023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:49:05.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:49:05.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:05.257 [DEBUG] [Thread-163023] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:05.257 [DEBUG] [Thread-163023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:05.257 [DEBUG] [Thread-163023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:05.257 [DEBUG] [Thread-163023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:49:05.257 [DEBUG] [Thread-163023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:05.271 [INFO] [Thread-163023] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:05.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:49:05.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:06.277 [DEBUG] [Thread-163023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:06.277 [DEBUG] [Thread-163023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:06.324 [DEBUG] [Thread-163023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:06.324 [DEBUG] [Thread-163023] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:06.333 [DEBUG] [Thread-163023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:06.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:06.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:49:06.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:49:06.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:06.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:06.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:06.373 [DEBUG] [Thread-163023] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:16.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:49:16.376 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:49:16.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:49:16.872 [DEBUG] [Thread-163025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:49:16.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 48, 53), 13.57, 39.36, 0.0, 24.77, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:49:16.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:48:53
2025-09-29T17:49:17.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:49:17.208 [DEBUG] [Thread-163026] [transport.py] [_log()] starting thread (client mode): 0x2b9cf910
2025-09-29T17:49:17.208 [DEBUG] [Thread-163026] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:17.228 [DEBUG] [Thread-163026] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:49:17.228 [INFO] [Thread-163026] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] Compression: none
2025-09-29T17:49:17.231 [DEBUG] [Thread-163026] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:17.247 [DEBUG] [Thread-163026] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:17.248 [DEBUG] [Thread-163026] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:17.249 [DEBUG] [Thread-163026] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:49:17.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:49:17.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:17.250 [DEBUG] [Thread-163026] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:17.250 [DEBUG] [Thread-163026] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:17.251 [DEBUG] [Thread-163026] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:17.251 [DEBUG] [Thread-163026] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:49:17.251 [DEBUG] [Thread-163026] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:17.275 [INFO] [Thread-163026] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:17.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:17.898 [DEBUG] [Thread-163026] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:17.898 [DEBUG] [Thread-163026] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:17.899 [DEBUG] [Thread-163026] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:49:17.939 [DEBUG] [Thread-163026] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:17.939 [DEBUG] [Thread-163026] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:17.942 [DEBUG] [Thread-163026] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:17.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:17.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:49:17.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:49:17.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:49:17.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:17.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:49:17.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:17.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:17.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:49:17.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.659093 -999.00  +13.70  18.71     45   +2.10 1 1 1 1 1   887    0 11.38 -14.68 ----- 16.0 18.7 158.8 24.4 16.8 -27.6 16.7 -26.6 17.8 -27.4 18.4 -28.4
2025-09-29T17:49:17.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:49:17.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:49:17.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.659093
2025-09-29T17:49:17.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:49:17.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:49:17.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:49:17.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:49:17.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:49:17.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:48:53', tmtdew=13.57, humidity=39.36, cloud=0.0, wind=24.77, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:49:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:49:17.969 [DEBUG] [Thread-163026] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:18.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:49:18.063 [DEBUG] [Thread-163029] [transport.py] [_log()] starting thread (client mode): 0x2b96bfd0
2025-09-29T17:49:18.063 [DEBUG] [Thread-163029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:18.078 [DEBUG] [Thread-163029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:49:18.078 [INFO] [Thread-163029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:49:18.086 [DEBUG] [Thread-163029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:18.086 [DEBUG] [Thread-163029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] Compression: none
2025-09-29T17:49:18.087 [DEBUG] [Thread-163029] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:18.144 [DEBUG] [Thread-163029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:18.145 [DEBUG] [Thread-163029] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:18.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:49:18.146 [DEBUG] [Thread-163029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:49:18.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:18.201 [DEBUG] [Thread-163029] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:18.201 [DEBUG] [Thread-163029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:18.201 [DEBUG] [Thread-163029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:18.201 [DEBUG] [Thread-163029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:49:18.201 [DEBUG] [Thread-163029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:18.220 [INFO] [Thread-163029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:18.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:49:18.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:19.210 [DEBUG] [Thread-163029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:19.210 [DEBUG] [Thread-163029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:19.257 [DEBUG] [Thread-163029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:19.257 [DEBUG] [Thread-163029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:19.265 [DEBUG] [Thread-163029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:19.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:19.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:49:19.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:49:19.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:19.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:19.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:19.297 [DEBUG] [Thread-163029] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:29.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:49:29.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:49:29.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:49:29.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 49, 25), 13.57, 39.38, 0.0, 24.93, 13.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:49:29.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:49:25
2025-09-29T17:49:29.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:49:30.135 [DEBUG] [Thread-163031] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-29T17:49:30.136 [DEBUG] [Thread-163031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:30.156 [DEBUG] [Thread-163031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:49:30.156 [INFO] [Thread-163031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:49:30.159 [DEBUG] [Thread-163031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:30.159 [DEBUG] [Thread-163031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:49:30.159 [DEBUG] [Thread-163031] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] Compression: none
2025-09-29T17:49:30.160 [DEBUG] [Thread-163031] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:30.177 [DEBUG] [Thread-163031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:30.178 [DEBUG] [Thread-163031] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:30.178 [DEBUG] [Thread-163031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:49:30.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:49:30.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:30.180 [DEBUG] [Thread-163031] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:30.180 [DEBUG] [Thread-163031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:30.180 [DEBUG] [Thread-163031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:30.180 [DEBUG] [Thread-163031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:49:30.181 [DEBUG] [Thread-163031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:30.204 [INFO] [Thread-163031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:30.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:31.018 [DEBUG] [Thread-163031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:31.019 [DEBUG] [Thread-163031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:31.019 [DEBUG] [Thread-163031] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:49:31.059 [DEBUG] [Thread-163031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:31.059 [DEBUG] [Thread-163031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:31.062 [DEBUG] [Thread-163031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:31.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:31.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:49:31.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:49:31.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:49:31.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:31.085 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:49:31.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:31.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:49:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.659093 -999.00  +13.70  18.71     45   +2.10 1 1 1 1 1   887    0 11.38 -14.68 ----- 16.0 18.7 158.8 24.4 16.8 -27.6 16.7 -26.6 17.8 -27.4 18.4 -28.4
2025-09-29T17:49:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:49:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:49:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.659093
2025-09-29T17:49:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:49:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:49:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:49:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:49:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:49:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:49:25', tmtdew=13.57, humidity=39.38, cloud=0.0, wind=24.93, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:49:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:49:31.087 [DEBUG] [Thread-163031] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:31.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:49:31.183 [DEBUG] [Thread-163034] [transport.py] [_log()] starting thread (client mode): 0x2e3488e0
2025-09-29T17:49:31.183 [DEBUG] [Thread-163034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:31.198 [DEBUG] [Thread-163034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:49:31.198 [INFO] [Thread-163034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:49:31.205 [DEBUG] [Thread-163034] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:31.205 [DEBUG] [Thread-163034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] Compression: none
2025-09-29T17:49:31.206 [DEBUG] [Thread-163034] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:31.264 [DEBUG] [Thread-163034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:31.264 [DEBUG] [Thread-163034] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:31.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:49:31.265 [DEBUG] [Thread-163034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:49:31.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:31.320 [DEBUG] [Thread-163034] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:31.320 [DEBUG] [Thread-163034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:31.320 [DEBUG] [Thread-163034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:31.321 [DEBUG] [Thread-163034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:49:31.321 [DEBUG] [Thread-163034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:31.344 [INFO] [Thread-163034] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:31.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:49:31.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:31.905 [DEBUG] [Thread-163036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:49:32.396 [DEBUG] [Thread-163034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:32.396 [DEBUG] [Thread-163034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:32.444 [DEBUG] [Thread-163034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:32.444 [DEBUG] [Thread-163034] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:32.453 [DEBUG] [Thread-163034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:32.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:32.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:49:32.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:49:32.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:32.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:32.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:32.488 [DEBUG] [Thread-163034] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:32.725 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:49:32.727 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:49:42.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:49:42.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:49:42.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:49:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 49, 25), 13.57, 39.38, 0.0, 24.93, 13.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:49:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:49:25
2025-09-29T17:49:43.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:49:43.323 [DEBUG] [Thread-163037] [transport.py] [_log()] starting thread (client mode): 0x2e348f70
2025-09-29T17:49:43.323 [DEBUG] [Thread-163037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:43.344 [DEBUG] [Thread-163037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:49:43.344 [INFO] [Thread-163037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] Compression: none
2025-09-29T17:49:43.348 [DEBUG] [Thread-163037] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:43.364 [DEBUG] [Thread-163037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:43.364 [DEBUG] [Thread-163037] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:43.364 [DEBUG] [Thread-163037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:49:43.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:49:43.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:43.368 [DEBUG] [Thread-163037] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:43.368 [DEBUG] [Thread-163037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:43.368 [DEBUG] [Thread-163037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:43.368 [DEBUG] [Thread-163037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:49:43.368 [DEBUG] [Thread-163037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:43.377 [INFO] [Thread-163037] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:43.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:44.111 [DEBUG] [Thread-163037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:44.112 [DEBUG] [Thread-163037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:44.112 [DEBUG] [Thread-163037] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:49:44.153 [DEBUG] [Thread-163037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:44.153 [DEBUG] [Thread-163037] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:44.156 [DEBUG] [Thread-163037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:44.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:44.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:49:44.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:49:44.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:49:44.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:44.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:49:44.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:44.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:44.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:49:44.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.659440 -999.00  +13.70  13.74     45   +2.10 1 1 1 1 1   887    0 11.13 -15.26 ----- 15.3 13.7 152.0 20.9 16.8 -27.7 16.6 -26.8 17.8 -27.3 18.3 -28.3
2025-09-29T17:49:44.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:49:44.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:49:44.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.659440
2025-09-29T17:49:44.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:49:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:49:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:49:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:49:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:49:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:49:25', tmtdew=13.57, humidity=39.38, cloud=0.0, wind=24.93, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:49:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:49:44.183 [DEBUG] [Thread-163037] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:44.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:49:44.271 [DEBUG] [Thread-163040] [transport.py] [_log()] starting thread (client mode): 0x2e3de0e0
2025-09-29T17:49:44.271 [DEBUG] [Thread-163040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:44.286 [DEBUG] [Thread-163040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:49:44.286 [INFO] [Thread-163040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:49:44.293 [DEBUG] [Thread-163040] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:44.293 [DEBUG] [Thread-163040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] Compression: none
2025-09-29T17:49:44.294 [DEBUG] [Thread-163040] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:44.351 [DEBUG] [Thread-163040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:44.352 [DEBUG] [Thread-163040] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:44.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:49:44.353 [DEBUG] [Thread-163040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:49:44.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:44.408 [DEBUG] [Thread-163040] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:44.408 [DEBUG] [Thread-163040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:44.408 [DEBUG] [Thread-163040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:44.408 [DEBUG] [Thread-163040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:49:44.408 [DEBUG] [Thread-163040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:44.426 [INFO] [Thread-163040] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:44.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:49:44.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:45.430 [DEBUG] [Thread-163040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:45.431 [DEBUG] [Thread-163040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:45.478 [DEBUG] [Thread-163040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:45.479 [DEBUG] [Thread-163040] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:45.488 [DEBUG] [Thread-163040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:45.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:45.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:49:45.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:49:45.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:45.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:45.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:45.522 [DEBUG] [Thread-163040] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:46.940 [DEBUG] [Thread-163042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:49:51.278 [DEBUG] [Thread-163043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:49:55.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:49:55.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:49:55.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:49:56.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 49, 25), 13.57, 39.38, 0.0, 24.93, 13.86, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:49:56.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:49:25
2025-09-29T17:49:56.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:49:56.352 [DEBUG] [Thread-163044] [transport.py] [_log()] starting thread (client mode): 0x2b968c10
2025-09-29T17:49:56.352 [DEBUG] [Thread-163044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:56.373 [DEBUG] [Thread-163044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:49:56.373 [INFO] [Thread-163044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:56.377 [DEBUG] [Thread-163044] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] Compression: none
2025-09-29T17:49:56.378 [DEBUG] [Thread-163044] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:56.395 [DEBUG] [Thread-163044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:56.396 [DEBUG] [Thread-163044] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:56.396 [DEBUG] [Thread-163044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:49:56.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:49:56.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:56.399 [DEBUG] [Thread-163044] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:56.399 [DEBUG] [Thread-163044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:56.399 [DEBUG] [Thread-163044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:56.399 [DEBUG] [Thread-163044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:49:56.399 [DEBUG] [Thread-163044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:56.423 [INFO] [Thread-163044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:56.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:57.051 [DEBUG] [Thread-163044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:57.051 [DEBUG] [Thread-163044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:57.051 [DEBUG] [Thread-163044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:49:57.092 [DEBUG] [Thread-163044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:57.092 [DEBUG] [Thread-163044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:57.094 [DEBUG] [Thread-163044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:57.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:57.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:49:57.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:49:57.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:49:57.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:57.113 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:49:57.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.659440 -999.00  +13.70  13.74     45   +2.10 1 1 1 1 1   887    0 11.13 -15.26 ----- 15.3 13.7 152.0 20.9 16.8 -27.7 16.6 -26.8 17.8 -27.3 18.3 -28.3
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.659440
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:49:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:49:25', tmtdew=13.57, humidity=39.38, cloud=0.0, wind=24.93, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:49:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:49:57.115 [DEBUG] [Thread-163044] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:49:57.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:49:57.196 [DEBUG] [Thread-163047] [transport.py] [_log()] starting thread (client mode): 0x2b920fa0
2025-09-29T17:49:57.197 [DEBUG] [Thread-163047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:49:57.213 [DEBUG] [Thread-163047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:49:57.213 [INFO] [Thread-163047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:49:57.221 [DEBUG] [Thread-163047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:49:57.221 [DEBUG] [Thread-163047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:49:57.221 [DEBUG] [Thread-163047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] client lang: <none>
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] server lang: <none>
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] kex follows: False
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] Compression: none
2025-09-29T17:49:57.222 [DEBUG] [Thread-163047] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:49:57.279 [DEBUG] [Thread-163047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:49:57.280 [DEBUG] [Thread-163047] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:49:57.280 [DEBUG] [Thread-163047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:49:57.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:49:57.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:49:57.335 [DEBUG] [Thread-163047] [transport.py] [_log()] userauth is OK
2025-09-29T17:49:57.336 [DEBUG] [Thread-163047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:49:57.336 [DEBUG] [Thread-163047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:49:57.336 [DEBUG] [Thread-163047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:49:57.336 [DEBUG] [Thread-163047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:49:57.355 [INFO] [Thread-163047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:49:57.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:49:57.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:49:58.341 [DEBUG] [Thread-163047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:49:58.341 [DEBUG] [Thread-163047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:49:58.390 [DEBUG] [Thread-163047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:49:58.390 [DEBUG] [Thread-163047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:49:58.398 [DEBUG] [Thread-163047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:49:58.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:49:58.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:49:58.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:49:58.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:49:58.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:49:58.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:49:58.429 [DEBUG] [Thread-163047] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:50:01.991 [DEBUG] [Thread-163049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:50:08.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:50:08.432 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:50:08.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:50:09.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 49, 57), 13.59, 39.31, 0.0, 23.22, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:50:09.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:49:57
2025-09-29T17:50:09.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:50:09.260 [DEBUG] [Thread-163050] [transport.py] [_log()] starting thread (client mode): 0x2b969750
2025-09-29T17:50:09.260 [DEBUG] [Thread-163050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:50:09.280 [DEBUG] [Thread-163050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:50:09.280 [INFO] [Thread-163050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:50:09.284 [DEBUG] [Thread-163050] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:50:09.284 [DEBUG] [Thread-163050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:50:09.284 [DEBUG] [Thread-163050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:50:09.284 [DEBUG] [Thread-163050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] client lang: <none>
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] server lang: <none>
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] kex follows: False
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] Compression: none
2025-09-29T17:50:09.285 [DEBUG] [Thread-163050] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:50:09.302 [DEBUG] [Thread-163050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:50:09.302 [DEBUG] [Thread-163050] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:50:09.302 [DEBUG] [Thread-163050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:50:09.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:50:09.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:50:09.304 [DEBUG] [Thread-163050] [transport.py] [_log()] userauth is OK
2025-09-29T17:50:09.304 [DEBUG] [Thread-163050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:50:09.305 [DEBUG] [Thread-163050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:50:09.305 [DEBUG] [Thread-163050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:50:09.305 [DEBUG] [Thread-163050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:50:09.325 [INFO] [Thread-163050] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:50:09.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:50:17.021 [DEBUG] [Thread-163052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:50:18.124 [DEBUG] [Thread-163050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:50:18.124 [DEBUG] [Thread-163050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:50:18.124 [DEBUG] [Thread-163050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:50:18.165 [DEBUG] [Thread-163050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:50:18.165 [DEBUG] [Thread-163050] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:50:18.167 [DEBUG] [Thread-163050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:50:18.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:50:18.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:50:18.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:50:18.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:50:18.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:50:18.299 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:50:18.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:50:18.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:50:18.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:50:18.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.659440 -999.00  +13.70  13.74     45   +2.10 1 1 1 1 1   887    0 11.13 -15.26 ----- 15.3 13.7 152.0 20.9 16.8 -27.7 16.6 -26.8 17.8 -27.3 18.3 -28.3
2025-09-29T17:50:18.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:50:18.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:50:18.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.659440
2025-09-29T17:50:18.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:50:18.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:50:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:50:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:50:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:50:18.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:49:57', tmtdew=13.59, humidity=39.31, cloud=0.0, wind=23.22, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:49:35.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:50:18.304 [DEBUG] [Thread-163050] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:50:18.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:50:18.384 [DEBUG] [Thread-163054] [transport.py] [_log()] starting thread (client mode): 0x2e3fb520
2025-09-29T17:50:18.385 [DEBUG] [Thread-163054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:50:18.399 [DEBUG] [Thread-163054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:50:18.399 [INFO] [Thread-163054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] client lang: <none>
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] server lang: <none>
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] kex follows: False
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:50:18.406 [DEBUG] [Thread-163054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:50:18.407 [DEBUG] [Thread-163054] [transport.py] [_log()] Compression: none
2025-09-29T17:50:18.407 [DEBUG] [Thread-163054] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:50:18.465 [DEBUG] [Thread-163054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:50:18.465 [DEBUG] [Thread-163054] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:50:18.465 [DEBUG] [Thread-163054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:50:18.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:50:18.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:50:18.522 [DEBUG] [Thread-163054] [transport.py] [_log()] userauth is OK
2025-09-29T17:50:18.522 [DEBUG] [Thread-163054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:50:18.522 [DEBUG] [Thread-163054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:50:18.522 [DEBUG] [Thread-163054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:50:18.522 [DEBUG] [Thread-163054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:50:18.536 [INFO] [Thread-163054] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:50:18.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:50:18.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:50:19.506 [DEBUG] [Thread-163054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:50:19.506 [DEBUG] [Thread-163054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:50:19.554 [DEBUG] [Thread-163054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:50:19.554 [DEBUG] [Thread-163054] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:50:19.563 [DEBUG] [Thread-163054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:50:19.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:50:19.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:50:19.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:50:19.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:50:19.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:50:19.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:50:19.601 [DEBUG] [Thread-163054] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:50:29.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:50:29.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:50:29.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:50:30.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 49, 57), 13.59, 39.31, 0.0, 23.22, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:50:30.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:49:57
2025-09-29T17:50:30.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:50:30.449 [DEBUG] [Thread-163056] [transport.py] [_log()] starting thread (client mode): 0x2e38f790
2025-09-29T17:50:30.449 [DEBUG] [Thread-163056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:50:30.464 [DEBUG] [Thread-163056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:50:30.465 [INFO] [Thread-163056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] client lang: <none>
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] server lang: <none>
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] kex follows: False
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] Compression: none
2025-09-29T17:50:30.468 [DEBUG] [Thread-163056] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:50:30.488 [DEBUG] [Thread-163056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:50:30.488 [DEBUG] [Thread-163056] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:50:30.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:50:30.489 [DEBUG] [Thread-163056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:50:30.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:50:30.489 [DEBUG] [Thread-163056] [transport.py] [_log()] userauth is OK
2025-09-29T17:50:30.489 [DEBUG] [Thread-163056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:50:30.489 [DEBUG] [Thread-163056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:50:30.489 [DEBUG] [Thread-163056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:50:30.489 [DEBUG] [Thread-163056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:50:30.504 [INFO] [Thread-163056] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:50:30.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:50:31.114 [DEBUG] [Thread-163056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:50:31.114 [DEBUG] [Thread-163056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:50:31.115 [DEBUG] [Thread-163056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:50:31.156 [DEBUG] [Thread-163056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:50:31.156 [DEBUG] [Thread-163056] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:50:31.158 [DEBUG] [Thread-163056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:50:31.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:50:31.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:50:31.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:50:31.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:50:31.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:50:31.176 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:50:31.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:50:31.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:50:31.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:50:31.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.659787 -999.00  +13.60  20.81     45   +2.10 1 1 1 1 1   887    0 11.35 -15.50 ----- 13.4 20.8 154.1 24.5 16.8 -27.9 16.6 -26.8 17.7 -27.6 18.2 -28.8
2025-09-29T17:50:31.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:50:31.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:50:31.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.659787
2025-09-29T17:50:31.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:50:31.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:50:31.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:50:31.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:50:31.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:50:31.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:49:57', tmtdew=13.59, humidity=39.31, cloud=0.0, wind=23.22, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:50:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:50:31.178 [DEBUG] [Thread-163056] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:50:31.252 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:50:31.261 [DEBUG] [Thread-163059] [transport.py] [_log()] starting thread (client mode): 0x2b91e020
2025-09-29T17:50:31.261 [DEBUG] [Thread-163059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:50:31.276 [DEBUG] [Thread-163059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:50:31.276 [INFO] [Thread-163059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] client lang: <none>
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] server lang: <none>
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] kex follows: False
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] Compression: none
2025-09-29T17:50:31.283 [DEBUG] [Thread-163059] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:50:31.341 [DEBUG] [Thread-163059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:50:31.341 [DEBUG] [Thread-163059] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:50:31.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:50:31.341 [DEBUG] [Thread-163059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:50:31.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:50:31.398 [DEBUG] [Thread-163059] [transport.py] [_log()] userauth is OK
2025-09-29T17:50:31.398 [DEBUG] [Thread-163059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:50:31.398 [DEBUG] [Thread-163059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:50:31.398 [DEBUG] [Thread-163059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:50:31.398 [DEBUG] [Thread-163059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:50:31.413 [INFO] [Thread-163059] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:50:31.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:50:31.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:50:32.046 [DEBUG] [Thread-163061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:50:32.445 [DEBUG] [Thread-163059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:50:32.445 [DEBUG] [Thread-163059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:50:32.493 [DEBUG] [Thread-163059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:50:32.493 [DEBUG] [Thread-163059] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:50:32.502 [DEBUG] [Thread-163059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:50:32.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:50:32.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:50:32.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:50:32.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:50:32.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:50:32.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:50:32.537 [DEBUG] [Thread-163059] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:50:32.866 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:50:32.867 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:50:42.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:50:42.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:50:42.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:50:43.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 50, 29), 13.55, 39.41, 0.0, 22.32, 13.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:50:43.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:50:29
2025-09-29T17:50:43.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:50:43.386 [DEBUG] [Thread-163062] [transport.py] [_log()] starting thread (client mode): 0x2e34a1d0
2025-09-29T17:50:43.386 [DEBUG] [Thread-163062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:50:43.403 [DEBUG] [Thread-163062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:50:43.403 [INFO] [Thread-163062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] client lang: <none>
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] server lang: <none>
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] kex follows: False
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] Compression: none
2025-09-29T17:50:43.406 [DEBUG] [Thread-163062] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:50:43.423 [DEBUG] [Thread-163062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:50:43.424 [DEBUG] [Thread-163062] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:50:43.424 [DEBUG] [Thread-163062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:50:43.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:50:43.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:50:43.426 [DEBUG] [Thread-163062] [transport.py] [_log()] userauth is OK
2025-09-29T17:50:43.426 [DEBUG] [Thread-163062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:50:43.426 [DEBUG] [Thread-163062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:50:43.426 [DEBUG] [Thread-163062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:50:43.426 [DEBUG] [Thread-163062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:50:43.444 [INFO] [Thread-163062] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:50:43.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:50:44.185 [DEBUG] [Thread-163062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:50:44.185 [DEBUG] [Thread-163062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:50:44.185 [DEBUG] [Thread-163062] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:50:44.226 [DEBUG] [Thread-163062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:50:44.226 [DEBUG] [Thread-163062] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:50:44.228 [DEBUG] [Thread-163062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:50:44.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:50:44.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:50:44.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:50:44.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:50:44.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:50:44.244 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:50:44.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:50:44.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:50:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:50:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.659787 -999.00  +13.60  20.81     45   +2.10 1 1 1 1 1   887    0 11.35 -15.50 ----- 13.4 20.8 154.1 24.5 16.8 -27.9 16.6 -26.8 17.7 -27.6 18.2 -28.8
2025-09-29T17:50:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:50:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:50:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.659787
2025-09-29T17:50:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:50:44.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:50:44.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:50:44.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:50:44.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:50:44.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:50:29', tmtdew=13.55, humidity=39.41, cloud=0.0, wind=22.32, temperature=13.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:50:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:50:44.245 [DEBUG] [Thread-163062] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:50:44.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:50:44.330 [DEBUG] [Thread-163065] [transport.py] [_log()] starting thread (client mode): 0x2b91c610
2025-09-29T17:50:44.330 [DEBUG] [Thread-163065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:50:44.348 [DEBUG] [Thread-163065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:50:44.348 [INFO] [Thread-163065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] client lang: <none>
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] server lang: <none>
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] kex follows: False
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:50:44.355 [DEBUG] [Thread-163065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:50:44.356 [DEBUG] [Thread-163065] [transport.py] [_log()] Compression: none
2025-09-29T17:50:44.356 [DEBUG] [Thread-163065] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:50:44.413 [DEBUG] [Thread-163065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:50:44.414 [DEBUG] [Thread-163065] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:50:44.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:50:44.415 [DEBUG] [Thread-163065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:50:44.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:50:44.470 [DEBUG] [Thread-163065] [transport.py] [_log()] userauth is OK
2025-09-29T17:50:44.470 [DEBUG] [Thread-163065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:50:44.470 [DEBUG] [Thread-163065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:50:44.470 [DEBUG] [Thread-163065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:50:44.470 [DEBUG] [Thread-163065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:50:44.488 [INFO] [Thread-163065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:50:44.489 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:50:44.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:50:45.481 [DEBUG] [Thread-163065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:50:45.481 [DEBUG] [Thread-163065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:50:45.529 [DEBUG] [Thread-163065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:50:45.529 [DEBUG] [Thread-163065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:50:45.538 [DEBUG] [Thread-163065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:50:45.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:50:45.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:50:45.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:50:45.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:50:45.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:50:45.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:50:45.571 [DEBUG] [Thread-163065] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:50:47.093 [DEBUG] [Thread-163067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:50:51.311 [DEBUG] [Thread-163068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:50:55.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:50:55.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:50:55.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:50:56.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 50, 29), 13.55, 39.41, 0.0, 22.32, 13.78, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:50:56.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:50:29
2025-09-29T17:50:56.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:50:56.442 [DEBUG] [Thread-163069] [transport.py] [_log()] starting thread (client mode): 0x2b968490
2025-09-29T17:50:56.442 [DEBUG] [Thread-163069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:50:56.462 [DEBUG] [Thread-163069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:50:56.462 [INFO] [Thread-163069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:50:56.465 [DEBUG] [Thread-163069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:50:56.465 [DEBUG] [Thread-163069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:50:56.465 [DEBUG] [Thread-163069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:50:56.465 [DEBUG] [Thread-163069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] client lang: <none>
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] server lang: <none>
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] kex follows: False
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] Compression: none
2025-09-29T17:50:56.466 [DEBUG] [Thread-163069] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:50:56.482 [DEBUG] [Thread-163069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:50:56.482 [DEBUG] [Thread-163069] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:50:56.482 [DEBUG] [Thread-163069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:50:56.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:50:56.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:50:56.483 [DEBUG] [Thread-163069] [transport.py] [_log()] userauth is OK
2025-09-29T17:50:56.483 [DEBUG] [Thread-163069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:50:56.483 [DEBUG] [Thread-163069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:50:56.483 [DEBUG] [Thread-163069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:50:56.483 [DEBUG] [Thread-163069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:50:56.491 [INFO] [Thread-163069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:50:56.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:50:57.065 [DEBUG] [Thread-163069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:50:57.065 [DEBUG] [Thread-163069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:50:57.065 [DEBUG] [Thread-163069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:50:57.106 [DEBUG] [Thread-163069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:50:57.106 [DEBUG] [Thread-163069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:50:57.108 [DEBUG] [Thread-163069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:50:57.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:50:57.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:50:57.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:50:57.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:50:57.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:50:57.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:50:57.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:50:57.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:50:57.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:50:57.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.660134 -999.00  +13.60  16.06     45   +2.10 1 1 1 1 1   887    0 11.38 -14.98 ----- 17.0 16.1 144.0 25.4 16.7 -27.7 16.5 -26.4 17.6 -26.8 18.2 -28.7
2025-09-29T17:50:57.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:50:57.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:50:57.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.660134
2025-09-29T17:50:57.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:50:57.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:50:57.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:50:57.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:50:57.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:50:57.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:50:29', tmtdew=13.55, humidity=39.41, cloud=0.0, wind=22.32, temperature=13.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:50:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:50:57.126 [DEBUG] [Thread-163069] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:50:57.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:50:57.210 [DEBUG] [Thread-163072] [transport.py] [_log()] starting thread (client mode): 0x2b91fee0
2025-09-29T17:50:57.210 [DEBUG] [Thread-163072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:50:57.226 [DEBUG] [Thread-163072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:50:57.226 [INFO] [Thread-163072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:50:57.233 [DEBUG] [Thread-163072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:50:57.233 [DEBUG] [Thread-163072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:50:57.233 [DEBUG] [Thread-163072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] client lang: <none>
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] server lang: <none>
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] kex follows: False
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] Compression: none
2025-09-29T17:50:57.234 [DEBUG] [Thread-163072] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:50:57.292 [DEBUG] [Thread-163072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:50:57.292 [DEBUG] [Thread-163072] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:50:57.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:50:57.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:50:57.293 [DEBUG] [Thread-163072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:50:57.353 [DEBUG] [Thread-163072] [transport.py] [_log()] userauth is OK
2025-09-29T17:50:57.353 [DEBUG] [Thread-163072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:50:57.353 [DEBUG] [Thread-163072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:50:57.353 [DEBUG] [Thread-163072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:50:57.353 [DEBUG] [Thread-163072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:50:57.368 [INFO] [Thread-163072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:50:57.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:50:57.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:50:58.357 [DEBUG] [Thread-163072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:50:58.357 [DEBUG] [Thread-163072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:50:58.405 [DEBUG] [Thread-163072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:50:58.405 [DEBUG] [Thread-163072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:50:58.413 [DEBUG] [Thread-163072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:50:58.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:50:58.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:50:58.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:50:58.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:50:58.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:50:58.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:50:58.444 [DEBUG] [Thread-163072] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:02.142 [DEBUG] [Thread-163074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:51:08.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:51:08.447 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:51:08.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:51:09.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 51, 1), 13.55, 39.43, 0.0, 20.31, 13.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:51:09.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:51:01
2025-09-29T17:51:09.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:51:09.281 [DEBUG] [Thread-163075] [transport.py] [_log()] starting thread (client mode): 0x2b9f1090
2025-09-29T17:51:09.282 [DEBUG] [Thread-163075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:51:09.300 [DEBUG] [Thread-163075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:51:09.301 [INFO] [Thread-163075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:51:09.304 [DEBUG] [Thread-163075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] client lang: <none>
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] server lang: <none>
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] kex follows: False
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] Compression: none
2025-09-29T17:51:09.305 [DEBUG] [Thread-163075] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:51:09.325 [DEBUG] [Thread-163075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:51:09.326 [DEBUG] [Thread-163075] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:51:09.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:51:09.327 [DEBUG] [Thread-163075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:51:09.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:51:09.329 [DEBUG] [Thread-163075] [transport.py] [_log()] userauth is OK
2025-09-29T17:51:09.329 [DEBUG] [Thread-163075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:51:09.329 [DEBUG] [Thread-163075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:51:09.329 [DEBUG] [Thread-163075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:51:09.330 [DEBUG] [Thread-163075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:51:09.346 [INFO] [Thread-163075] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:51:09.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:51:10.109 [DEBUG] [Thread-163075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:51:10.109 [DEBUG] [Thread-163075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:51:10.110 [DEBUG] [Thread-163075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:51:10.150 [DEBUG] [Thread-163075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:51:10.151 [DEBUG] [Thread-163075] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:51:10.154 [DEBUG] [Thread-163075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:51:10.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:51:10.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:51:10.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:51:10.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:51:10.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:51:10.175 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:51:10.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:51:10.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:51:10.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:51:10.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.660134 -999.00  +13.60  16.06     45   +2.10 1 1 1 1 1   887    0 11.38 -14.98 ----- 17.0 16.1 144.0 25.4 16.7 -27.7 16.5 -26.4 17.6 -26.8 18.2 -28.7
2025-09-29T17:51:10.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:51:10.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:51:10.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.660134
2025-09-29T17:51:10.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:51:10.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:51:10.178 [DEBUG] [Thread-163075] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:10.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:51:10.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:51:10.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:51:10.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:51:01', tmtdew=13.55, humidity=39.43, cloud=0.0, wind=20.31, temperature=13.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:50:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:51:10.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:51:10.274 [DEBUG] [Thread-163078] [transport.py] [_log()] starting thread (client mode): 0x2b9694b0
2025-09-29T17:51:10.275 [DEBUG] [Thread-163078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:51:10.291 [DEBUG] [Thread-163078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:51:10.291 [INFO] [Thread-163078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] client lang: <none>
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] server lang: <none>
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] kex follows: False
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:51:10.299 [DEBUG] [Thread-163078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:51:10.300 [DEBUG] [Thread-163078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:51:10.300 [DEBUG] [Thread-163078] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:51:10.300 [DEBUG] [Thread-163078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:51:10.300 [DEBUG] [Thread-163078] [transport.py] [_log()] Compression: none
2025-09-29T17:51:10.300 [DEBUG] [Thread-163078] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:51:10.356 [DEBUG] [Thread-163078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:51:10.357 [DEBUG] [Thread-163078] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:51:10.357 [DEBUG] [Thread-163078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:51:10.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:51:10.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:51:10.413 [DEBUG] [Thread-163078] [transport.py] [_log()] userauth is OK
2025-09-29T17:51:10.413 [DEBUG] [Thread-163078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:51:10.413 [DEBUG] [Thread-163078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:51:10.413 [DEBUG] [Thread-163078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:51:10.413 [DEBUG] [Thread-163078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:51:10.432 [INFO] [Thread-163078] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:51:10.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:51:10.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:51:11.443 [DEBUG] [Thread-163078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:51:11.443 [DEBUG] [Thread-163078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:51:11.491 [DEBUG] [Thread-163078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:51:11.491 [DEBUG] [Thread-163078] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:51:11.500 [DEBUG] [Thread-163078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:51:11.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:51:11.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:51:11.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:51:11.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:51:11.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:51:11.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:51:11.534 [DEBUG] [Thread-163078] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:17.180 [DEBUG] [Thread-163080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:51:21.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:51:21.537 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:51:21.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:51:22.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 51, 1), 13.55, 39.43, 0.0, 20.31, 13.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:51:22.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:51:01
2025-09-29T17:51:22.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:51:22.362 [DEBUG] [Thread-163081] [transport.py] [_log()] starting thread (client mode): 0x2e3dc820
2025-09-29T17:51:22.362 [DEBUG] [Thread-163081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:51:22.382 [DEBUG] [Thread-163081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:51:22.382 [INFO] [Thread-163081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:51:22.385 [DEBUG] [Thread-163081] [transport.py] [_log()] client lang: <none>
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] server lang: <none>
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] kex follows: False
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] Compression: none
2025-09-29T17:51:22.386 [DEBUG] [Thread-163081] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:51:22.403 [DEBUG] [Thread-163081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:51:22.403 [DEBUG] [Thread-163081] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:51:22.404 [DEBUG] [Thread-163081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:51:22.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:51:22.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:51:22.406 [DEBUG] [Thread-163081] [transport.py] [_log()] userauth is OK
2025-09-29T17:51:22.406 [DEBUG] [Thread-163081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:51:22.406 [DEBUG] [Thread-163081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:51:22.406 [DEBUG] [Thread-163081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:51:22.406 [DEBUG] [Thread-163081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:51:22.427 [INFO] [Thread-163081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:51:22.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:51:23.202 [DEBUG] [Thread-163081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:51:23.202 [DEBUG] [Thread-163081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:51:23.202 [DEBUG] [Thread-163081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:51:23.243 [DEBUG] [Thread-163081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:51:23.243 [DEBUG] [Thread-163081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:51:23.247 [DEBUG] [Thread-163081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:51:23.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:51:23.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:51:23.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:51:23.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:51:23.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:51:23.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:51:23.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:51:23.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:51:23.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:51:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.660134 -999.00  +13.60  16.06     45   +2.10 1 1 1 1 1   887    0 11.38 -14.98 ----- 17.0 16.1 144.0 25.4 16.7 -27.7 16.5 -26.4 17.6 -26.8 18.2 -28.7
2025-09-29T17:51:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:51:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:51:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.660134
2025-09-29T17:51:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:51:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:51:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:51:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:51:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:51:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:51:01', tmtdew=13.55, humidity=39.43, cloud=0.0, wind=20.31, temperature=13.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:50:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:51:23.280 [DEBUG] [Thread-163081] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:23.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:51:23.372 [DEBUG] [Thread-163084] [transport.py] [_log()] starting thread (client mode): 0x2e3def20
2025-09-29T17:51:23.372 [DEBUG] [Thread-163084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:51:23.387 [DEBUG] [Thread-163084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:51:23.387 [INFO] [Thread-163084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] client lang: <none>
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] server lang: <none>
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] kex follows: False
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:51:23.395 [DEBUG] [Thread-163084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:51:23.396 [DEBUG] [Thread-163084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:51:23.396 [DEBUG] [Thread-163084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:51:23.396 [DEBUG] [Thread-163084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:51:23.396 [DEBUG] [Thread-163084] [transport.py] [_log()] Compression: none
2025-09-29T17:51:23.396 [DEBUG] [Thread-163084] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:51:23.452 [DEBUG] [Thread-163084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:51:23.453 [DEBUG] [Thread-163084] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:51:23.453 [DEBUG] [Thread-163084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:51:23.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:51:23.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:51:23.509 [DEBUG] [Thread-163084] [transport.py] [_log()] userauth is OK
2025-09-29T17:51:23.509 [DEBUG] [Thread-163084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:51:23.509 [DEBUG] [Thread-163084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:51:23.509 [DEBUG] [Thread-163084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:51:23.509 [DEBUG] [Thread-163084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:51:23.529 [INFO] [Thread-163084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:51:23.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:51:23.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:51:24.522 [DEBUG] [Thread-163084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:51:24.522 [DEBUG] [Thread-163084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:51:24.570 [DEBUG] [Thread-163084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:51:24.570 [DEBUG] [Thread-163084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:51:24.579 [DEBUG] [Thread-163084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:51:24.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:51:24.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:51:24.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:51:24.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:51:24.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:51:24.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:51:24.613 [DEBUG] [Thread-163084] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:32.229 [DEBUG] [Thread-163086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:51:33.008 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:51:33.009 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:51:34.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:51:34.615 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:51:34.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:51:35.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 51, 1), 13.55, 39.43, 0.0, 20.31, 13.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:51:35.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:51:01
2025-09-29T17:51:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:51:35.514 [DEBUG] [Thread-163087] [transport.py] [_log()] starting thread (client mode): 0x2b969630
2025-09-29T17:51:35.514 [DEBUG] [Thread-163087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:51:35.533 [DEBUG] [Thread-163087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:51:35.533 [INFO] [Thread-163087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:51:35.536 [DEBUG] [Thread-163087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:51:35.536 [DEBUG] [Thread-163087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:51:35.536 [DEBUG] [Thread-163087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:51:35.536 [DEBUG] [Thread-163087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:35.536 [DEBUG] [Thread-163087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] client lang: <none>
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] server lang: <none>
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] kex follows: False
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] Compression: none
2025-09-29T17:51:35.537 [DEBUG] [Thread-163087] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:51:35.554 [DEBUG] [Thread-163087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:51:35.554 [DEBUG] [Thread-163087] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:51:35.554 [DEBUG] [Thread-163087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:51:35.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:51:35.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:51:35.554 [DEBUG] [Thread-163087] [transport.py] [_log()] userauth is OK
2025-09-29T17:51:35.554 [DEBUG] [Thread-163087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:51:35.554 [DEBUG] [Thread-163087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:51:35.554 [DEBUG] [Thread-163087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:51:35.554 [DEBUG] [Thread-163087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:51:35.564 [INFO] [Thread-163087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:51:35.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:51:36.199 [DEBUG] [Thread-163087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:51:36.199 [DEBUG] [Thread-163087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:51:36.199 [DEBUG] [Thread-163087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:51:36.240 [DEBUG] [Thread-163087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:51:36.240 [DEBUG] [Thread-163087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:51:36.241 [DEBUG] [Thread-163087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:51:36.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:51:36.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:51:36.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:51:36.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:51:36.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:51:36.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:51:36.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.660481 -999.00  +13.50  11.51     46   +2.10 1 1 1 1 1   887    0 11.33 -14.60 ----- 12.2 11.5 148.0 23.3 16.6 -27.7 16.4 -26.9 17.6 -26.6 18.1 -28.7
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.660481
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:51:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:51:01', tmtdew=13.55, humidity=39.43, cloud=0.0, wind=20.31, temperature=13.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:51:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:51:36.252 [DEBUG] [Thread-163087] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:36.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:51:36.334 [DEBUG] [Thread-163090] [transport.py] [_log()] starting thread (client mode): 0x2b9f22c0
2025-09-29T17:51:36.334 [DEBUG] [Thread-163090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:51:36.350 [DEBUG] [Thread-163090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:51:36.350 [INFO] [Thread-163090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] client lang: <none>
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] server lang: <none>
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] kex follows: False
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] Compression: none
2025-09-29T17:51:36.358 [DEBUG] [Thread-163090] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:51:36.415 [DEBUG] [Thread-163090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:51:36.415 [DEBUG] [Thread-163090] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:51:36.415 [DEBUG] [Thread-163090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:51:36.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:51:36.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:51:36.472 [DEBUG] [Thread-163090] [transport.py] [_log()] userauth is OK
2025-09-29T17:51:36.472 [DEBUG] [Thread-163090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:51:36.473 [DEBUG] [Thread-163090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:51:36.473 [DEBUG] [Thread-163090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:51:36.473 [DEBUG] [Thread-163090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:51:36.486 [INFO] [Thread-163090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:51:36.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:51:36.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:51:37.482 [DEBUG] [Thread-163090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:51:37.482 [DEBUG] [Thread-163090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:51:37.530 [DEBUG] [Thread-163090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:51:37.530 [DEBUG] [Thread-163090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:51:37.538 [DEBUG] [Thread-163090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:51:37.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:51:37.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:51:37.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:51:37.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:51:37.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:51:37.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:51:37.570 [DEBUG] [Thread-163090] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:47.253 [DEBUG] [Thread-163092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:51:47.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:51:47.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:51:47.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:51:48.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 51, 33), 13.51, 39.41, 0.0, 21.09, 13.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:51:48.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:51:33
2025-09-29T17:51:48.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:51:48.417 [DEBUG] [Thread-163093] [transport.py] [_log()] starting thread (client mode): 0x2e362050
2025-09-29T17:51:48.417 [DEBUG] [Thread-163093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:51:48.436 [DEBUG] [Thread-163093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:51:48.437 [INFO] [Thread-163093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] client lang: <none>
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] server lang: <none>
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] kex follows: False
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] Compression: none
2025-09-29T17:51:48.440 [DEBUG] [Thread-163093] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:51:48.449 [DEBUG] [Thread-163093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:51:48.449 [DEBUG] [Thread-163093] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:51:48.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:51:48.450 [DEBUG] [Thread-163093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:51:48.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:51:48.452 [DEBUG] [Thread-163093] [transport.py] [_log()] userauth is OK
2025-09-29T17:51:48.452 [DEBUG] [Thread-163093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:51:48.452 [DEBUG] [Thread-163093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:51:48.452 [DEBUG] [Thread-163093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:51:48.452 [DEBUG] [Thread-163093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:51:48.470 [INFO] [Thread-163093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:51:48.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:51:49.239 [DEBUG] [Thread-163093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:51:49.239 [DEBUG] [Thread-163093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:51:49.239 [DEBUG] [Thread-163093] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:51:49.280 [DEBUG] [Thread-163093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:51:49.280 [DEBUG] [Thread-163093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:51:49.283 [DEBUG] [Thread-163093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:51:49.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:51:49.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:51:49.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:51:49.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:51:49.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:51:49.304 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:51:49.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:51:49.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:51:49.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:51:49.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.660481 -999.00  +13.50  11.51     46   +2.10 1 1 1 1 1   887    0 11.33 -14.60 ----- 12.2 11.5 148.0 23.3 16.6 -27.7 16.4 -26.9 17.6 -26.6 18.1 -28.7
2025-09-29T17:51:49.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:51:49.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:51:49.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.660481
2025-09-29T17:51:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:51:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:51:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:51:49.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:51:49.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:51:49.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:51:33', tmtdew=13.51, humidity=39.41, cloud=0.0, wind=21.09, temperature=13.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:51:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:51:49.307 [DEBUG] [Thread-163093] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:49.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:51:49.404 [DEBUG] [Thread-163096] [transport.py] [_log()] starting thread (client mode): 0x2e361a20
2025-09-29T17:51:49.404 [DEBUG] [Thread-163096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:51:49.419 [DEBUG] [Thread-163096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:51:49.419 [INFO] [Thread-163096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:51:49.426 [DEBUG] [Thread-163096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] client lang: <none>
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] server lang: <none>
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] kex follows: False
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] Compression: none
2025-09-29T17:51:49.427 [DEBUG] [Thread-163096] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:51:49.486 [DEBUG] [Thread-163096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:51:49.487 [DEBUG] [Thread-163096] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:51:49.487 [DEBUG] [Thread-163096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:51:49.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:51:49.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:51:49.544 [DEBUG] [Thread-163096] [transport.py] [_log()] userauth is OK
2025-09-29T17:51:49.544 [DEBUG] [Thread-163096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:51:49.544 [DEBUG] [Thread-163096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:51:49.544 [DEBUG] [Thread-163096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:51:49.544 [DEBUG] [Thread-163096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:51:49.564 [INFO] [Thread-163096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:51:49.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:51:49.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:51:50.570 [DEBUG] [Thread-163096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:51:50.571 [DEBUG] [Thread-163096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:51:50.618 [DEBUG] [Thread-163096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:51:50.618 [DEBUG] [Thread-163096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:51:50.627 [DEBUG] [Thread-163096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:51:50.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:51:50.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:51:50.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:51:50.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:51:50.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:51:50.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:51:50.661 [DEBUG] [Thread-163096] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:51:51.343 [DEBUG] [Thread-163098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:52:00.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:52:00.664 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:52:00.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:52:01.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 51, 33), 13.51, 39.41, 0.0, 21.09, 13.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:52:01.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:51:33
2025-09-29T17:52:01.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:52:01.489 [DEBUG] [Thread-163099] [transport.py] [_log()] starting thread (client mode): 0x2b9f3d90
2025-09-29T17:52:01.489 [DEBUG] [Thread-163099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:01.510 [DEBUG] [Thread-163099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:52:01.510 [INFO] [Thread-163099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:01.513 [DEBUG] [Thread-163099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:01.514 [DEBUG] [Thread-163099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:01.514 [DEBUG] [Thread-163099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:01.514 [DEBUG] [Thread-163099] [transport.py] [_log()] Compression: none
2025-09-29T17:52:01.514 [DEBUG] [Thread-163099] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:01.531 [DEBUG] [Thread-163099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:01.531 [DEBUG] [Thread-163099] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:01.531 [DEBUG] [Thread-163099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:52:01.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:52:01.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:01.533 [DEBUG] [Thread-163099] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:01.534 [DEBUG] [Thread-163099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:01.534 [DEBUG] [Thread-163099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:01.534 [DEBUG] [Thread-163099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:52:01.534 [DEBUG] [Thread-163099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:01.555 [INFO] [Thread-163099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:01.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:02.199 [DEBUG] [Thread-163099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:02.199 [DEBUG] [Thread-163099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:02.200 [DEBUG] [Thread-163099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:52:02.241 [DEBUG] [Thread-163099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:02.241 [DEBUG] [Thread-163099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:02.244 [DEBUG] [Thread-163099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:02.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:02.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:52:02.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:52:02.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:52:02.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:02.262 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:52:02.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.660829 -999.00  +13.50  15.97     45   +2.10 1 1 1 1 1   887    0 11.15 -14.89 ----- 17.2 16.0 153.2 26.8 16.6 -27.4 16.5 -27.0 17.6 -27.0 18.2 -28.5
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.660829
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:52:02.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:51:33', tmtdew=13.51, humidity=39.41, cloud=0.0, wind=21.09, temperature=13.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:51:35.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:52:02.263 [DEBUG] [Thread-163099] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:02.286 [DEBUG] [Thread-163102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:52:02.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:52:02.346 [DEBUG] [Thread-163103] [transport.py] [_log()] starting thread (client mode): 0x2e3fb2b0
2025-09-29T17:52:02.346 [DEBUG] [Thread-163103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:02.362 [DEBUG] [Thread-163103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:52:02.362 [INFO] [Thread-163103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:02.370 [DEBUG] [Thread-163103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:02.371 [DEBUG] [Thread-163103] [transport.py] [_log()] Compression: none
2025-09-29T17:52:02.371 [DEBUG] [Thread-163103] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:02.427 [DEBUG] [Thread-163103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:02.428 [DEBUG] [Thread-163103] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:02.428 [DEBUG] [Thread-163103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:52:02.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:52:02.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:02.484 [DEBUG] [Thread-163103] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:02.484 [DEBUG] [Thread-163103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:02.484 [DEBUG] [Thread-163103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:02.484 [DEBUG] [Thread-163103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:52:02.484 [DEBUG] [Thread-163103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:02.503 [INFO] [Thread-163103] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:02.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:52:02.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:03.546 [DEBUG] [Thread-163103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:03.546 [DEBUG] [Thread-163103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:03.598 [DEBUG] [Thread-163103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:03.598 [DEBUG] [Thread-163103] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:03.607 [DEBUG] [Thread-163103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:03.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:03.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:52:03.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:52:03.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:03.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:03.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:03.648 [DEBUG] [Thread-163103] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:13.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:52:13.648 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:52:13.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:52:14.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 52, 5), 13.56, 39.28, 0.0, 22.89, 13.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:52:14.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:52:05
2025-09-29T17:52:14.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:52:14.509 [DEBUG] [Thread-163105] [transport.py] [_log()] starting thread (client mode): 0x2e38eda0
2025-09-29T17:52:14.509 [DEBUG] [Thread-163105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:14.529 [DEBUG] [Thread-163105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:52:14.529 [INFO] [Thread-163105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] Compression: none
2025-09-29T17:52:14.532 [DEBUG] [Thread-163105] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:14.548 [DEBUG] [Thread-163105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:14.548 [DEBUG] [Thread-163105] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:14.548 [DEBUG] [Thread-163105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:52:14.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:52:14.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:14.549 [DEBUG] [Thread-163105] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:14.549 [DEBUG] [Thread-163105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:14.549 [DEBUG] [Thread-163105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:14.549 [DEBUG] [Thread-163105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:52:14.549 [DEBUG] [Thread-163105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:14.569 [INFO] [Thread-163105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:14.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:15.383 [DEBUG] [Thread-163105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:15.383 [DEBUG] [Thread-163105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:15.384 [DEBUG] [Thread-163105] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:52:15.424 [DEBUG] [Thread-163105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:15.424 [DEBUG] [Thread-163105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:15.426 [DEBUG] [Thread-163105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:15.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:15.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:52:15.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:52:15.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:52:15.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:15.445 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:52:15.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:15.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:52:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.660829 -999.00  +13.50  15.97     45   +2.10 1 1 1 1 1   887    0 11.15 -14.89 ----- 17.2 16.0 153.2 26.8 16.6 -27.4 16.5 -27.0 17.6 -27.0 18.2 -28.5
2025-09-29T17:52:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:52:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:52:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.660829
2025-09-29T17:52:15.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:52:15.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:52:15.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:52:15.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:52:15.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:52:15.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:52:05', tmtdew=13.56, humidity=39.28, cloud=0.0, wind=22.89, temperature=13.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:51:35.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:52:15.446 [DEBUG] [Thread-163105] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:15.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:52:15.534 [DEBUG] [Thread-163108] [transport.py] [_log()] starting thread (client mode): 0x2e38d990
2025-09-29T17:52:15.534 [DEBUG] [Thread-163108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:15.551 [DEBUG] [Thread-163108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:52:15.551 [INFO] [Thread-163108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:15.563 [DEBUG] [Thread-163108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:15.564 [DEBUG] [Thread-163108] [transport.py] [_log()] Compression: none
2025-09-29T17:52:15.564 [DEBUG] [Thread-163108] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:15.614 [DEBUG] [Thread-163108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:15.614 [DEBUG] [Thread-163108] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:15.614 [DEBUG] [Thread-163108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:52:15.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:52:15.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:15.671 [DEBUG] [Thread-163108] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:15.671 [DEBUG] [Thread-163108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:15.671 [DEBUG] [Thread-163108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:15.671 [DEBUG] [Thread-163108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:52:15.671 [DEBUG] [Thread-163108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:15.687 [INFO] [Thread-163108] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:15.687 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:52:15.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:16.742 [DEBUG] [Thread-163108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:16.742 [DEBUG] [Thread-163108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:16.790 [DEBUG] [Thread-163108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:16.790 [DEBUG] [Thread-163108] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:16.799 [DEBUG] [Thread-163108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:16.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:16.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:52:16.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:52:16.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:16.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:16.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:16.842 [DEBUG] [Thread-163108] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:17.319 [DEBUG] [Thread-163110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:52:26.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:52:26.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:52:26.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:52:27.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 52, 5), 13.56, 39.28, 0.0, 22.89, 13.83, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:52:27.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:52:05
2025-09-29T17:52:27.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:52:27.671 [DEBUG] [Thread-163111] [transport.py] [_log()] starting thread (client mode): 0x2e362020
2025-09-29T17:52:27.671 [DEBUG] [Thread-163111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:27.692 [DEBUG] [Thread-163111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:52:27.692 [INFO] [Thread-163111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:52:27.693 [DEBUG] [Thread-163111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:27.693 [DEBUG] [Thread-163111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:52:27.693 [DEBUG] [Thread-163111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:27.693 [DEBUG] [Thread-163111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:27.693 [DEBUG] [Thread-163111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] Compression: none
2025-09-29T17:52:27.694 [DEBUG] [Thread-163111] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:27.704 [DEBUG] [Thread-163111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:27.704 [DEBUG] [Thread-163111] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:27.705 [DEBUG] [Thread-163111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:52:27.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:52:27.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:27.748 [DEBUG] [Thread-163111] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:27.749 [DEBUG] [Thread-163111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:27.749 [DEBUG] [Thread-163111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:27.749 [DEBUG] [Thread-163111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:52:27.749 [DEBUG] [Thread-163111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:27.772 [INFO] [Thread-163111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:27.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:28.571 [DEBUG] [Thread-163111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:28.571 [DEBUG] [Thread-163111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:28.572 [DEBUG] [Thread-163111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:52:28.612 [DEBUG] [Thread-163111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:28.612 [DEBUG] [Thread-163111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:28.615 [DEBUG] [Thread-163111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:28.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:28.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:52:28.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:52:28.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:52:28.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:28.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:52:28.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:28.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:28.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:52:28.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.660829 -999.00  +13.50  15.97     45   +2.10 1 1 1 1 1   887    0 11.15 -14.89 ----- 17.2 16.0 153.2 26.8 16.6 -27.4 16.5 -27.0 17.6 -27.0 18.2 -28.5
2025-09-29T17:52:28.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:52:28.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:52:28.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.660829
2025-09-29T17:52:28.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:52:28.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:52:28.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:52:28.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:52:28.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:52:28.640 [DEBUG] [Thread-163111] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:28.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:52:05', tmtdew=13.56, humidity=39.28, cloud=0.0, wind=22.89, temperature=13.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:51:35.626', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:52:28.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:52:28.735 [DEBUG] [Thread-163114] [transport.py] [_log()] starting thread (client mode): 0x2b9f00a0
2025-09-29T17:52:28.735 [DEBUG] [Thread-163114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:28.750 [DEBUG] [Thread-163114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:52:28.750 [INFO] [Thread-163114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:52:28.757 [DEBUG] [Thread-163114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:28.757 [DEBUG] [Thread-163114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:52:28.757 [DEBUG] [Thread-163114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:28.757 [DEBUG] [Thread-163114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:28.757 [DEBUG] [Thread-163114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:28.757 [DEBUG] [Thread-163114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:28.757 [DEBUG] [Thread-163114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] Compression: none
2025-09-29T17:52:28.758 [DEBUG] [Thread-163114] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:28.815 [DEBUG] [Thread-163114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:28.815 [DEBUG] [Thread-163114] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:28.816 [DEBUG] [Thread-163114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:52:28.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:52:28.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:28.871 [DEBUG] [Thread-163114] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:28.871 [DEBUG] [Thread-163114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:28.871 [DEBUG] [Thread-163114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:28.871 [DEBUG] [Thread-163114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:52:28.872 [DEBUG] [Thread-163114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:28.891 [INFO] [Thread-163114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:28.891 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:52:28.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:29.901 [DEBUG] [Thread-163114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:29.901 [DEBUG] [Thread-163114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:29.949 [DEBUG] [Thread-163114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:29.949 [DEBUG] [Thread-163114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:29.958 [DEBUG] [Thread-163114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:29.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:29.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:52:29.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:52:29.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:29.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:29.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:29.993 [DEBUG] [Thread-163114] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:32.369 [DEBUG] [Thread-163116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:52:33.148 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:52:33.149 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:52:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:52:39.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:52:39.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:52:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 52, 37), 13.6, 39.3, 0.0, 23.86, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:52:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:52:37
2025-09-29T17:52:40.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:52:40.833 [DEBUG] [Thread-163117] [transport.py] [_log()] starting thread (client mode): 0x2e38fa90
2025-09-29T17:52:40.834 [DEBUG] [Thread-163117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:40.853 [DEBUG] [Thread-163117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:52:40.854 [INFO] [Thread-163117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:40.857 [DEBUG] [Thread-163117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:40.858 [DEBUG] [Thread-163117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:40.858 [DEBUG] [Thread-163117] [transport.py] [_log()] Compression: none
2025-09-29T17:52:40.858 [DEBUG] [Thread-163117] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:40.875 [DEBUG] [Thread-163117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:40.875 [DEBUG] [Thread-163117] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:40.876 [DEBUG] [Thread-163117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:52:40.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:52:40.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:40.877 [DEBUG] [Thread-163117] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:40.878 [DEBUG] [Thread-163117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:40.878 [DEBUG] [Thread-163117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:40.878 [DEBUG] [Thread-163117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:52:40.878 [DEBUG] [Thread-163117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:40.913 [INFO] [Thread-163117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:40.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:41.542 [DEBUG] [Thread-163117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:41.542 [DEBUG] [Thread-163117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:41.543 [DEBUG] [Thread-163117] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:52:41.583 [DEBUG] [Thread-163117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:41.584 [DEBUG] [Thread-163117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:41.587 [DEBUG] [Thread-163117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:41.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:41.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:52:41.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:52:41.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:52:41.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:41.607 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:52:41.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:41.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:41.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:52:41.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.661176 -999.00  +13.50  15.43     45   +2.10 1 1 1 1 1   887    0 11.26 -14.53 ----- 13.0 15.4 158.4 17.9 16.6 -28.1 16.4 -26.4 17.5 -26.8 18.1 -28.3
2025-09-29T17:52:41.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:52:41.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:52:41.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.661176
2025-09-29T17:52:41.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:52:41.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:52:41.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:52:41.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:52:41.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:52:41.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:52:37', tmtdew=13.6, humidity=39.3, cloud=0.0, wind=23.86, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:52:05.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:52:41.610 [DEBUG] [Thread-163117] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:41.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:52:41.706 [DEBUG] [Thread-163120] [transport.py] [_log()] starting thread (client mode): 0x2e3609d0
2025-09-29T17:52:41.706 [DEBUG] [Thread-163120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:41.721 [DEBUG] [Thread-163120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:52:41.721 [INFO] [Thread-163120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:52:41.728 [DEBUG] [Thread-163120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:41.729 [DEBUG] [Thread-163120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:52:41.729 [DEBUG] [Thread-163120] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:41.729 [DEBUG] [Thread-163120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:41.729 [DEBUG] [Thread-163120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:41.729 [DEBUG] [Thread-163120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] Compression: none
2025-09-29T17:52:41.730 [DEBUG] [Thread-163120] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:41.786 [DEBUG] [Thread-163120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:41.787 [DEBUG] [Thread-163120] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:41.787 [DEBUG] [Thread-163120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:52:41.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:52:41.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:41.843 [DEBUG] [Thread-163120] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:41.843 [DEBUG] [Thread-163120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:41.843 [DEBUG] [Thread-163120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:41.843 [DEBUG] [Thread-163120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:52:41.843 [DEBUG] [Thread-163120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:41.862 [INFO] [Thread-163120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:41.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:52:41.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:42.867 [DEBUG] [Thread-163120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:42.868 [DEBUG] [Thread-163120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:42.915 [DEBUG] [Thread-163120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:42.915 [DEBUG] [Thread-163120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:42.925 [DEBUG] [Thread-163120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:42.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:42.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:52:42.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:52:42.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:42.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:42.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:42.958 [DEBUG] [Thread-163120] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:47.400 [DEBUG] [Thread-163122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:52:51.369 [DEBUG] [Thread-163123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:52:52.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:52:52.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:52:52.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:52:53.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 52, 37), 13.6, 39.3, 0.0, 23.86, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:52:53.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:52:37
2025-09-29T17:52:53.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:52:53.807 [DEBUG] [Thread-163124] [transport.py] [_log()] starting thread (client mode): 0x2e361660
2025-09-29T17:52:53.808 [DEBUG] [Thread-163124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:53.828 [DEBUG] [Thread-163124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:52:53.828 [INFO] [Thread-163124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:52:53.832 [DEBUG] [Thread-163124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:53.832 [DEBUG] [Thread-163124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:52:53.832 [DEBUG] [Thread-163124] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:53.832 [DEBUG] [Thread-163124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:53.832 [DEBUG] [Thread-163124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] Compression: none
2025-09-29T17:52:53.833 [DEBUG] [Thread-163124] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:53.850 [DEBUG] [Thread-163124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:53.851 [DEBUG] [Thread-163124] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:53.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:52:53.852 [DEBUG] [Thread-163124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:52:53.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:53.853 [DEBUG] [Thread-163124] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:53.854 [DEBUG] [Thread-163124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:53.854 [DEBUG] [Thread-163124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:53.854 [DEBUG] [Thread-163124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:52:53.854 [DEBUG] [Thread-163124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:53.871 [INFO] [Thread-163124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:53.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:54.694 [DEBUG] [Thread-163124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:54.694 [DEBUG] [Thread-163124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:54.694 [DEBUG] [Thread-163124] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:52:54.735 [DEBUG] [Thread-163124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:54.735 [DEBUG] [Thread-163124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:54.737 [DEBUG] [Thread-163124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:54.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:54.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:52:54.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:52:54.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:52:54.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:54.758 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:52:54.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:54.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:54.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:52:54.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.661176 -999.00  +13.50  15.43     45   +2.10 1 1 1 1 1   887    0 11.26 -14.53 ----- 13.0 15.4 158.4 17.9 16.6 -28.1 16.4 -26.4 17.5 -26.8 18.1 -28.3
2025-09-29T17:52:54.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:52:54.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:52:54.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.661176
2025-09-29T17:52:54.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:52:54.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:52:54.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:52:54.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:52:54.760 [DEBUG] [Thread-163124] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:52:54.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:52:54.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:52:37', tmtdew=13.6, humidity=39.3, cloud=0.0, wind=23.86, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:52:05.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:52:54.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:52:54.852 [DEBUG] [Thread-163127] [transport.py] [_log()] starting thread (client mode): 0x2b9f3ee0
2025-09-29T17:52:54.852 [DEBUG] [Thread-163127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:52:54.866 [DEBUG] [Thread-163127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:52:54.866 [INFO] [Thread-163127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] client lang: <none>
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] server lang: <none>
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] kex follows: False
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:52:54.874 [DEBUG] [Thread-163127] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:52:54.875 [DEBUG] [Thread-163127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:52:54.875 [DEBUG] [Thread-163127] [transport.py] [_log()] Compression: none
2025-09-29T17:52:54.875 [DEBUG] [Thread-163127] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:52:54.933 [DEBUG] [Thread-163127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:52:54.934 [DEBUG] [Thread-163127] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:52:54.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:52:54.935 [DEBUG] [Thread-163127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:52:54.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:52:54.990 [DEBUG] [Thread-163127] [transport.py] [_log()] userauth is OK
2025-09-29T17:52:54.990 [DEBUG] [Thread-163127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:52:54.990 [DEBUG] [Thread-163127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:52:54.991 [DEBUG] [Thread-163127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:52:54.991 [DEBUG] [Thread-163127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:52:55.012 [INFO] [Thread-163127] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:52:55.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:52:55.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:52:56.027 [DEBUG] [Thread-163127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:52:56.027 [DEBUG] [Thread-163127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:52:56.075 [DEBUG] [Thread-163127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:52:56.075 [DEBUG] [Thread-163127] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:52:56.084 [DEBUG] [Thread-163127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:52:56.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:52:56.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:52:56.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:52:56.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:52:56.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:52:56.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:52:56.117 [DEBUG] [Thread-163127] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:02.452 [DEBUG] [Thread-163129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:53:06.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:53:06.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:53:06.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:53:06.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 52, 37), 13.6, 39.3, 0.0, 23.86, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:53:06.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:52:37
2025-09-29T17:53:06.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:53:06.963 [DEBUG] [Thread-163130] [transport.py] [_log()] starting thread (client mode): 0x2e38e110
2025-09-29T17:53:06.963 [DEBUG] [Thread-163130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:06.983 [DEBUG] [Thread-163130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:53:06.983 [INFO] [Thread-163130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:53:06.986 [DEBUG] [Thread-163130] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:06.986 [DEBUG] [Thread-163130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:53:06.986 [DEBUG] [Thread-163130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:06.986 [DEBUG] [Thread-163130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:06.986 [DEBUG] [Thread-163130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:06.986 [DEBUG] [Thread-163130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] Compression: none
2025-09-29T17:53:06.987 [DEBUG] [Thread-163130] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:07.003 [DEBUG] [Thread-163130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:07.004 [DEBUG] [Thread-163130] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:07.004 [DEBUG] [Thread-163130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:53:07.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:53:07.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:07.006 [DEBUG] [Thread-163130] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:07.006 [DEBUG] [Thread-163130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:07.007 [DEBUG] [Thread-163130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:07.007 [DEBUG] [Thread-163130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:53:07.007 [DEBUG] [Thread-163130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:07.024 [INFO] [Thread-163130] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:07.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:53:07.671 [DEBUG] [Thread-163130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:53:07.671 [DEBUG] [Thread-163130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:53:07.672 [DEBUG] [Thread-163130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:53:07.712 [DEBUG] [Thread-163130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:53:07.712 [DEBUG] [Thread-163130] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:53:07.715 [DEBUG] [Thread-163130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:53:07.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:53:07.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:53:07.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:53:07.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:53:07.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:53:07.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:53:07.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:53:07.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:53:07.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:53:07.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.661523 -999.00  +13.50  15.03     45   +2.10 1 1 1 1 1   887    0 11.29 -15.01 ----- 13.7 15.0 149.6 21.9 16.6 -27.6 16.4 -26.4 17.5 -27.1 18.1 -28.2
2025-09-29T17:53:07.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:53:07.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:53:07.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.661523
2025-09-29T17:53:07.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:53:07.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:53:07.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:53:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:53:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:53:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:52:37', tmtdew=13.6, humidity=39.3, cloud=0.0, wind=23.86, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:52:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:53:07.742 [DEBUG] [Thread-163130] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:07.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:53:07.837 [DEBUG] [Thread-163133] [transport.py] [_log()] starting thread (client mode): 0x2e34ab00
2025-09-29T17:53:07.838 [DEBUG] [Thread-163133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:07.853 [DEBUG] [Thread-163133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:53:07.853 [INFO] [Thread-163133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:53:07.860 [DEBUG] [Thread-163133] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:07.861 [DEBUG] [Thread-163133] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:07.862 [DEBUG] [Thread-163133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:07.862 [DEBUG] [Thread-163133] [transport.py] [_log()] Compression: none
2025-09-29T17:53:07.862 [DEBUG] [Thread-163133] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:07.918 [DEBUG] [Thread-163133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:07.918 [DEBUG] [Thread-163133] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:07.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:53:07.919 [DEBUG] [Thread-163133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:53:07.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:07.979 [DEBUG] [Thread-163133] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:07.979 [DEBUG] [Thread-163133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:07.979 [DEBUG] [Thread-163133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:07.979 [DEBUG] [Thread-163133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:53:07.979 [DEBUG] [Thread-163133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:07.999 [INFO] [Thread-163133] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:07.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:53:07.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:53:09.038 [DEBUG] [Thread-163133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:53:09.038 [DEBUG] [Thread-163133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:53:09.086 [DEBUG] [Thread-163133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:53:09.086 [DEBUG] [Thread-163133] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:53:09.094 [DEBUG] [Thread-163133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:53:09.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:53:09.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:53:09.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:53:09.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:53:09.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:53:09.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:53:09.126 [DEBUG] [Thread-163133] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:17.483 [DEBUG] [Thread-163135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:53:19.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:53:19.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:53:19.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:53:19.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 53, 9), 13.57, 39.38, 0.0, 22.92, 13.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:53:19.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:53:09
2025-09-29T17:53:19.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:53:19.962 [DEBUG] [Thread-163136] [transport.py] [_log()] starting thread (client mode): 0x2e34a440
2025-09-29T17:53:19.962 [DEBUG] [Thread-163136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:19.982 [DEBUG] [Thread-163136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:53:19.983 [INFO] [Thread-163136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:19.986 [DEBUG] [Thread-163136] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] Compression: none
2025-09-29T17:53:19.987 [DEBUG] [Thread-163136] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:20.000 [DEBUG] [Thread-163136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:20.001 [DEBUG] [Thread-163136] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:20.001 [DEBUG] [Thread-163136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:53:20.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:53:20.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:20.003 [DEBUG] [Thread-163136] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:20.003 [DEBUG] [Thread-163136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:20.003 [DEBUG] [Thread-163136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:20.003 [DEBUG] [Thread-163136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:53:20.003 [DEBUG] [Thread-163136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:20.035 [INFO] [Thread-163136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:20.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:53:20.862 [DEBUG] [Thread-163136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:53:20.862 [DEBUG] [Thread-163136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:53:20.862 [DEBUG] [Thread-163136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:53:20.903 [DEBUG] [Thread-163136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:53:20.903 [DEBUG] [Thread-163136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:53:20.906 [DEBUG] [Thread-163136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:53:20.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:53:20.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:53:20.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:53:20.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:53:20.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:53:20.929 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:53:20.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:53:20.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:53:20.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:53:20.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.661523 -999.00  +13.50  15.03     45   +2.10 1 1 1 1 1   887    0 11.29 -15.01 ----- 13.7 15.0 149.6 21.9 16.6 -27.6 16.4 -26.4 17.5 -27.1 18.1 -28.2
2025-09-29T17:53:20.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:53:20.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:53:20.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.661523
2025-09-29T17:53:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:53:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:53:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:53:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:53:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:53:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:53:09', tmtdew=13.57, humidity=39.38, cloud=0.0, wind=22.92, temperature=13.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:52:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:53:20.932 [DEBUG] [Thread-163136] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:21.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:53:21.025 [DEBUG] [Thread-163139] [transport.py] [_log()] starting thread (client mode): 0x2b9232b0
2025-09-29T17:53:21.025 [DEBUG] [Thread-163139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:21.040 [DEBUG] [Thread-163139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:53:21.041 [INFO] [Thread-163139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:53:21.049 [DEBUG] [Thread-163139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:21.049 [DEBUG] [Thread-163139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] Compression: none
2025-09-29T17:53:21.050 [DEBUG] [Thread-163139] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:21.105 [DEBUG] [Thread-163139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:21.106 [DEBUG] [Thread-163139] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:21.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:53:21.107 [DEBUG] [Thread-163139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:53:21.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:21.166 [DEBUG] [Thread-163139] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:21.166 [DEBUG] [Thread-163139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:21.166 [DEBUG] [Thread-163139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:21.166 [DEBUG] [Thread-163139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:53:21.167 [DEBUG] [Thread-163139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:21.185 [INFO] [Thread-163139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:21.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:53:21.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:53:22.191 [DEBUG] [Thread-163139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:53:22.191 [DEBUG] [Thread-163139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:53:22.241 [DEBUG] [Thread-163139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:53:22.242 [DEBUG] [Thread-163139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:53:22.250 [DEBUG] [Thread-163139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:53:22.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:53:22.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:53:22.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:53:22.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:53:22.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:53:22.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:53:22.284 [DEBUG] [Thread-163139] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:32.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:53:32.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:53:32.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:53:32.523 [DEBUG] [Thread-163141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:53:32.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 53, 9), 13.57, 39.38, 0.0, 22.92, 13.79, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:53:32.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:53:09
2025-09-29T17:53:32.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:53:33.118 [DEBUG] [Thread-163142] [transport.py] [_log()] starting thread (client mode): 0x2e3f8730
2025-09-29T17:53:33.118 [DEBUG] [Thread-163142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:33.138 [DEBUG] [Thread-163142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:53:33.138 [INFO] [Thread-163142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:33.141 [DEBUG] [Thread-163142] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:33.142 [DEBUG] [Thread-163142] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:33.142 [DEBUG] [Thread-163142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:33.142 [DEBUG] [Thread-163142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:33.142 [DEBUG] [Thread-163142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:33.142 [DEBUG] [Thread-163142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:33.142 [DEBUG] [Thread-163142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:33.142 [DEBUG] [Thread-163142] [transport.py] [_log()] Compression: none
2025-09-29T17:53:33.142 [DEBUG] [Thread-163142] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:33.158 [DEBUG] [Thread-163142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:33.158 [DEBUG] [Thread-163142] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:33.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:53:33.159 [DEBUG] [Thread-163142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:53:33.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:33.161 [DEBUG] [Thread-163142] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:33.161 [DEBUG] [Thread-163142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:33.161 [DEBUG] [Thread-163142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:33.161 [DEBUG] [Thread-163142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:53:33.161 [DEBUG] [Thread-163142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:33.179 [INFO] [Thread-163142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:33.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:53:33.288 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:53:33.289 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:53:33.983 [DEBUG] [Thread-163142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:53:33.984 [DEBUG] [Thread-163142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:53:33.984 [DEBUG] [Thread-163142] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:53:34.024 [DEBUG] [Thread-163142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:53:34.025 [DEBUG] [Thread-163142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:53:34.027 [DEBUG] [Thread-163142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:53:34.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:53:34.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:53:34.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:53:34.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:53:34.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:53:34.049 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:53:34.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:53:34.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:53:34.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:53:34.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.661523 -999.00  +13.50  15.03     45   +2.10 1 1 1 1 1   887    0 11.29 -15.01 ----- 13.7 15.0 149.6 21.9 16.6 -27.6 16.4 -26.4 17.5 -27.1 18.1 -28.2
2025-09-29T17:53:34.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:53:34.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:53:34.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.661523
2025-09-29T17:53:34.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:53:34.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:53:34.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:53:34.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:53:34.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:53:34.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:53:09', tmtdew=13.57, humidity=39.38, cloud=0.0, wind=22.92, temperature=13.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:52:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:53:34.051 [DEBUG] [Thread-163142] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:34.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:53:34.145 [DEBUG] [Thread-163145] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d90
2025-09-29T17:53:34.145 [DEBUG] [Thread-163145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:34.160 [DEBUG] [Thread-163145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:53:34.160 [INFO] [Thread-163145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:53:34.167 [DEBUG] [Thread-163145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:34.167 [DEBUG] [Thread-163145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:53:34.167 [DEBUG] [Thread-163145] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:34.167 [DEBUG] [Thread-163145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] Compression: none
2025-09-29T17:53:34.168 [DEBUG] [Thread-163145] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:34.224 [DEBUG] [Thread-163145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:34.224 [DEBUG] [Thread-163145] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:34.224 [DEBUG] [Thread-163145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:53:34.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:53:34.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:34.281 [DEBUG] [Thread-163145] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:34.281 [DEBUG] [Thread-163145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:34.281 [DEBUG] [Thread-163145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:34.281 [DEBUG] [Thread-163145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:53:34.281 [DEBUG] [Thread-163145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:34.295 [INFO] [Thread-163145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:34.295 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:53:34.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:53:35.285 [DEBUG] [Thread-163145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:53:35.285 [DEBUG] [Thread-163145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:53:35.333 [DEBUG] [Thread-163145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:53:35.333 [DEBUG] [Thread-163145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:53:35.342 [DEBUG] [Thread-163145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:53:35.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:53:35.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:53:35.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:53:35.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:53:35.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:53:35.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:53:35.378 [DEBUG] [Thread-163145] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:45.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:53:45.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:53:45.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:53:45.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 53, 41), 13.56, 39.4, 0.0, 21.16, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:53:45.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:53:41
2025-09-29T17:53:46.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:53:46.203 [DEBUG] [Thread-163147] [transport.py] [_log()] starting thread (client mode): 0x2b94c100
2025-09-29T17:53:46.204 [DEBUG] [Thread-163147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:46.224 [DEBUG] [Thread-163147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:53:46.224 [INFO] [Thread-163147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:53:46.227 [DEBUG] [Thread-163147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:46.227 [DEBUG] [Thread-163147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:53:46.227 [DEBUG] [Thread-163147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:46.227 [DEBUG] [Thread-163147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:46.227 [DEBUG] [Thread-163147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:46.227 [DEBUG] [Thread-163147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] Compression: none
2025-09-29T17:53:46.228 [DEBUG] [Thread-163147] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:46.246 [DEBUG] [Thread-163147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:46.247 [DEBUG] [Thread-163147] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:46.247 [DEBUG] [Thread-163147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:53:46.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:53:46.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:46.250 [DEBUG] [Thread-163147] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:46.250 [DEBUG] [Thread-163147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:46.250 [DEBUG] [Thread-163147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:46.250 [DEBUG] [Thread-163147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:53:46.250 [DEBUG] [Thread-163147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:46.276 [INFO] [Thread-163147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:46.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:53:46.923 [DEBUG] [Thread-163147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:53:46.923 [DEBUG] [Thread-163147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:53:46.923 [DEBUG] [Thread-163147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:53:46.964 [DEBUG] [Thread-163147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:53:46.964 [DEBUG] [Thread-163147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:53:46.967 [DEBUG] [Thread-163147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:53:46.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:53:46.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:53:46.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:53:46.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:53:46.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:53:46.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:53:46.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:53:46.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:53:46.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:53:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.661870 -999.00  +13.50  15.44     45   +2.10 1 1 1 1 1   887    0 11.19 -14.68 ----- 18.6 15.4 165.0 20.3 16.5 -27.4 16.4 -26.6 17.4 -26.9 18.0 -27.8
2025-09-29T17:53:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:53:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:53:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.661870
2025-09-29T17:53:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:53:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:53:41', tmtdew=13.56, humidity=39.4, cloud=0.0, wind=21.16, temperature=13.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:53:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:53:46.992 [DEBUG] [Thread-163147] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:47.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:53:47.087 [DEBUG] [Thread-163150] [transport.py] [_log()] starting thread (client mode): 0x2b921240
2025-09-29T17:53:47.087 [DEBUG] [Thread-163150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:47.103 [DEBUG] [Thread-163150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:53:47.103 [INFO] [Thread-163150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:53:47.110 [DEBUG] [Thread-163150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:47.110 [DEBUG] [Thread-163150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:53:47.110 [DEBUG] [Thread-163150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:47.110 [DEBUG] [Thread-163150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:47.110 [DEBUG] [Thread-163150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:47.110 [DEBUG] [Thread-163150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:47.110 [DEBUG] [Thread-163150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] Compression: none
2025-09-29T17:53:47.111 [DEBUG] [Thread-163150] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:47.169 [DEBUG] [Thread-163150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:47.169 [DEBUG] [Thread-163150] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:47.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:53:47.170 [DEBUG] [Thread-163150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:53:47.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:47.225 [DEBUG] [Thread-163150] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:47.226 [DEBUG] [Thread-163150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:47.226 [DEBUG] [Thread-163150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:47.226 [DEBUG] [Thread-163150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:53:47.226 [DEBUG] [Thread-163150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:47.245 [INFO] [Thread-163150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:47.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:53:47.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:53:47.557 [DEBUG] [Thread-163152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:53:48.307 [DEBUG] [Thread-163150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:53:48.307 [DEBUG] [Thread-163150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:53:48.355 [DEBUG] [Thread-163150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:53:48.355 [DEBUG] [Thread-163150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:53:48.364 [DEBUG] [Thread-163150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:53:48.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:53:48.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:53:48.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:53:48.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:53:48.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:53:48.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:53:48.398 [DEBUG] [Thread-163150] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:53:51.416 [DEBUG] [Thread-163153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:53:58.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:53:58.401 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:53:58.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:53:58.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 53, 41), 13.56, 39.4, 0.0, 21.16, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:53:58.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:53:41
2025-09-29T17:53:59.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:53:59.234 [DEBUG] [Thread-163154] [transport.py] [_log()] starting thread (client mode): 0x2e349e10
2025-09-29T17:53:59.234 [DEBUG] [Thread-163154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:53:59.255 [DEBUG] [Thread-163154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:53:59.255 [INFO] [Thread-163154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:53:59.258 [DEBUG] [Thread-163154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] client lang: <none>
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] server lang: <none>
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] kex follows: False
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] Compression: none
2025-09-29T17:53:59.259 [DEBUG] [Thread-163154] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:53:59.277 [DEBUG] [Thread-163154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:53:59.278 [DEBUG] [Thread-163154] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:53:59.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:53:59.279 [DEBUG] [Thread-163154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:53:59.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:53:59.281 [DEBUG] [Thread-163154] [transport.py] [_log()] userauth is OK
2025-09-29T17:53:59.281 [DEBUG] [Thread-163154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:53:59.282 [DEBUG] [Thread-163154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:53:59.282 [DEBUG] [Thread-163154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:53:59.282 [DEBUG] [Thread-163154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:53:59.306 [INFO] [Thread-163154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:53:59.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:54:00.120 [DEBUG] [Thread-163154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:54:00.121 [DEBUG] [Thread-163154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:54:00.121 [DEBUG] [Thread-163154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:54:00.161 [DEBUG] [Thread-163154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:54:00.161 [DEBUG] [Thread-163154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:54:00.164 [DEBUG] [Thread-163154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:54:00.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:54:00.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:54:00.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:54:00.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:54:00.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:54:00.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:54:00.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:54:00.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:54:00.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:54:00.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.661870 -999.00  +13.50  15.44     45   +2.10 1 1 1 1 1   887    0 11.19 -14.68 ----- 18.6 15.4 165.0 20.3 16.5 -27.4 16.4 -26.6 17.4 -26.9 18.0 -27.8
2025-09-29T17:54:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:54:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:54:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.661870
2025-09-29T17:54:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:54:00.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:54:00.187 [DEBUG] [Thread-163154] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:54:00.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:54:00.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:54:00.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:54:00.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:53:41', tmtdew=13.56, humidity=39.4, cloud=0.0, wind=21.16, temperature=13.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:53:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:54:00.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:54:00.279 [DEBUG] [Thread-163157] [transport.py] [_log()] starting thread (client mode): 0x2b9f1180
2025-09-29T17:54:00.279 [DEBUG] [Thread-163157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:54:00.293 [DEBUG] [Thread-163157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:54:00.293 [INFO] [Thread-163157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] client lang: <none>
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] server lang: <none>
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] kex follows: False
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] Compression: none
2025-09-29T17:54:00.301 [DEBUG] [Thread-163157] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:54:00.360 [DEBUG] [Thread-163157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:54:00.361 [DEBUG] [Thread-163157] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:54:00.361 [DEBUG] [Thread-163157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:54:00.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:54:00.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:54:00.417 [DEBUG] [Thread-163157] [transport.py] [_log()] userauth is OK
2025-09-29T17:54:00.417 [DEBUG] [Thread-163157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:54:00.417 [DEBUG] [Thread-163157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:54:00.417 [DEBUG] [Thread-163157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:54:00.418 [DEBUG] [Thread-163157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:54:00.441 [INFO] [Thread-163157] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:54:00.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:54:00.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:54:01.408 [DEBUG] [Thread-163157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:54:01.408 [DEBUG] [Thread-163157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:54:01.456 [DEBUG] [Thread-163157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:54:01.456 [DEBUG] [Thread-163157] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:54:01.464 [DEBUG] [Thread-163157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:54:01.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:54:01.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:54:01.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:54:01.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:54:01.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:54:01.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:54:01.495 [DEBUG] [Thread-163157] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:54:02.600 [DEBUG] [Thread-163159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:54:11.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:54:11.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:54:11.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:54:12.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 53, 41), 13.56, 39.4, 0.0, 21.16, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:54:12.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:53:41
2025-09-29T17:54:12.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:54:12.323 [DEBUG] [Thread-163160] [transport.py] [_log()] starting thread (client mode): 0x2e3c0730
2025-09-29T17:54:12.323 [DEBUG] [Thread-163160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:54:12.340 [DEBUG] [Thread-163160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:54:12.340 [INFO] [Thread-163160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:54:12.342 [DEBUG] [Thread-163160] [transport.py] [_log()] client lang: <none>
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] server lang: <none>
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] kex follows: False
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] Compression: none
2025-09-29T17:54:12.343 [DEBUG] [Thread-163160] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:54:12.351 [DEBUG] [Thread-163160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:54:12.351 [DEBUG] [Thread-163160] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:54:12.351 [DEBUG] [Thread-163160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:54:12.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:54:12.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:54:12.352 [DEBUG] [Thread-163160] [transport.py] [_log()] userauth is OK
2025-09-29T17:54:12.353 [DEBUG] [Thread-163160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:54:12.353 [DEBUG] [Thread-163160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:54:12.353 [DEBUG] [Thread-163160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:54:12.353 [DEBUG] [Thread-163160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:54:12.369 [INFO] [Thread-163160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:54:12.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:54:13.034 [DEBUG] [Thread-163160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:54:13.035 [DEBUG] [Thread-163160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:54:13.035 [DEBUG] [Thread-163160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:54:13.075 [DEBUG] [Thread-163160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:54:13.076 [DEBUG] [Thread-163160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:54:13.079 [DEBUG] [Thread-163160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:54:13.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:54:13.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:54:13.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:54:13.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:54:13.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:54:13.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:54:13.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:54:13.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:54:13.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:54:13.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.662565 -999.00  +13.50  15.53     46   +2.10 1 1 1 1 1   887    0 11.18 -15.72 ----- 15.4 15.5 164.2 23.6 16.4 -27.4 16.3 -26.7 17.4 -27.0 17.9 -28.3
2025-09-29T17:54:13.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:54:13.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:54:13.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.662565
2025-09-29T17:54:13.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:54:13.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:54:13.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:54:13.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:54:13.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:54:13.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:53:41', tmtdew=13.56, humidity=39.4, cloud=0.0, wind=21.16, temperature=13.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:54:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:54:13.096 [DEBUG] [Thread-163160] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:54:13.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:54:13.192 [DEBUG] [Thread-163163] [transport.py] [_log()] starting thread (client mode): 0x2e362110
2025-09-29T17:54:13.193 [DEBUG] [Thread-163163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:54:13.207 [DEBUG] [Thread-163163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:54:13.207 [INFO] [Thread-163163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:54:13.214 [DEBUG] [Thread-163163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:54:13.214 [DEBUG] [Thread-163163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] client lang: <none>
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] server lang: <none>
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] kex follows: False
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] Compression: none
2025-09-29T17:54:13.215 [DEBUG] [Thread-163163] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:54:13.276 [DEBUG] [Thread-163163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:54:13.277 [DEBUG] [Thread-163163] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:54:13.278 [DEBUG] [Thread-163163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:54:13.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:54:13.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:54:13.332 [DEBUG] [Thread-163163] [transport.py] [_log()] userauth is OK
2025-09-29T17:54:13.333 [DEBUG] [Thread-163163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:54:13.333 [DEBUG] [Thread-163163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:54:13.333 [DEBUG] [Thread-163163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:54:13.333 [DEBUG] [Thread-163163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:54:13.352 [INFO] [Thread-163163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:54:13.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:54:13.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:54:14.360 [DEBUG] [Thread-163163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:54:14.360 [DEBUG] [Thread-163163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:54:14.408 [DEBUG] [Thread-163163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:54:14.408 [DEBUG] [Thread-163163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:54:14.416 [DEBUG] [Thread-163163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:54:14.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:54:14.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:54:14.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:54:14.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:54:14.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:54:14.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:54:14.448 [DEBUG] [Thread-163163] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:54:17.626 [DEBUG] [Thread-163165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:54:24.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:54:24.450 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:54:24.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:54:25.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 54, 13), 13.53, 39.45, 0.0, 21.47, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:54:25.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:54:13
2025-09-29T17:54:25.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:54:25.274 [DEBUG] [Thread-163166] [transport.py] [_log()] starting thread (client mode): 0x2e38cf40
2025-09-29T17:54:25.274 [DEBUG] [Thread-163166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:54:25.295 [DEBUG] [Thread-163166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:54:25.295 [INFO] [Thread-163166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:54:25.298 [DEBUG] [Thread-163166] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:54:25.298 [DEBUG] [Thread-163166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:54:25.298 [DEBUG] [Thread-163166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:54:25.298 [DEBUG] [Thread-163166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:25.298 [DEBUG] [Thread-163166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:25.298 [DEBUG] [Thread-163166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] client lang: <none>
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] server lang: <none>
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] kex follows: False
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:54:25.299 [DEBUG] [Thread-163166] [transport.py] [_log()] Compression: none
2025-09-29T17:54:25.300 [DEBUG] [Thread-163166] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:54:25.321 [DEBUG] [Thread-163166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:54:25.322 [DEBUG] [Thread-163166] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:54:25.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:54:25.323 [DEBUG] [Thread-163166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:54:25.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:54:25.325 [DEBUG] [Thread-163166] [transport.py] [_log()] userauth is OK
2025-09-29T17:54:25.325 [DEBUG] [Thread-163166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:54:25.325 [DEBUG] [Thread-163166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:54:25.325 [DEBUG] [Thread-163166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:54:25.325 [DEBUG] [Thread-163166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:54:25.349 [INFO] [Thread-163166] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:54:25.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:54:26.201 [DEBUG] [Thread-163166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:54:26.201 [DEBUG] [Thread-163166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:54:26.202 [DEBUG] [Thread-163166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:54:26.242 [DEBUG] [Thread-163166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:54:26.242 [DEBUG] [Thread-163166] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:54:26.245 [DEBUG] [Thread-163166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:54:26.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:54:26.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:54:26.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:54:26.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:54:26.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:54:26.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:54:26.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:54:26.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:54:26.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:54:26.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.662565 -999.00  +13.50  15.53     46   +2.10 1 1 1 1 1   887    0 11.18 -15.72 ----- 15.4 15.5 164.2 23.6 16.4 -27.4 16.3 -26.7 17.4 -27.0 17.9 -28.3
2025-09-29T17:54:26.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:54:26.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:54:26.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.662565
2025-09-29T17:54:26.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:54:26.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:54:26.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:54:26.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:54:26.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:54:26.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:54:13', tmtdew=13.53, humidity=39.45, cloud=0.0, wind=21.47, temperature=13.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:54:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:54:26.272 [DEBUG] [Thread-163166] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:54:26.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:54:26.368 [DEBUG] [Thread-163169] [transport.py] [_log()] starting thread (client mode): 0x2e38fa30
2025-09-29T17:54:26.368 [DEBUG] [Thread-163169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:54:26.387 [DEBUG] [Thread-163169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:54:26.387 [INFO] [Thread-163169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:54:26.395 [DEBUG] [Thread-163169] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:54:26.395 [DEBUG] [Thread-163169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] client lang: <none>
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] server lang: <none>
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] kex follows: False
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] Compression: none
2025-09-29T17:54:26.396 [DEBUG] [Thread-163169] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:54:26.456 [DEBUG] [Thread-163169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:54:26.457 [DEBUG] [Thread-163169] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:54:26.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:54:26.458 [DEBUG] [Thread-163169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:54:26.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:54:26.512 [DEBUG] [Thread-163169] [transport.py] [_log()] userauth is OK
2025-09-29T17:54:26.513 [DEBUG] [Thread-163169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:54:26.513 [DEBUG] [Thread-163169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:54:26.513 [DEBUG] [Thread-163169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:54:26.513 [DEBUG] [Thread-163169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:54:26.533 [INFO] [Thread-163169] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:54:26.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:54:26.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:54:27.604 [DEBUG] [Thread-163169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:54:27.605 [DEBUG] [Thread-163169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:54:27.652 [DEBUG] [Thread-163169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:54:27.652 [DEBUG] [Thread-163169] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:54:27.660 [DEBUG] [Thread-163169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:54:27.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:54:27.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:54:27.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:54:27.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:54:27.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:54:27.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:54:27.692 [DEBUG] [Thread-163169] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:54:32.669 [DEBUG] [Thread-163171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:54:33.428 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:54:33.430 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:54:37.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:54:37.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:54:37.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:54:38.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 54, 13), 13.53, 39.45, 0.0, 21.47, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:54:38.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:54:13
2025-09-29T17:54:38.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:54:38.519 [DEBUG] [Thread-163172] [transport.py] [_log()] starting thread (client mode): 0x2b9f39a0
2025-09-29T17:54:38.520 [DEBUG] [Thread-163172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:54:38.540 [DEBUG] [Thread-163172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:54:38.540 [INFO] [Thread-163172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:54:38.543 [DEBUG] [Thread-163172] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:54:38.543 [DEBUG] [Thread-163172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:54:38.543 [DEBUG] [Thread-163172] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:54:38.543 [DEBUG] [Thread-163172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:38.543 [DEBUG] [Thread-163172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:54:38.543 [DEBUG] [Thread-163172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:38.543 [DEBUG] [Thread-163172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] client lang: <none>
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] server lang: <none>
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] kex follows: False
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] Compression: none
2025-09-29T17:54:38.544 [DEBUG] [Thread-163172] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:54:38.561 [DEBUG] [Thread-163172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:54:38.562 [DEBUG] [Thread-163172] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:54:38.562 [DEBUG] [Thread-163172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:54:38.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:54:38.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:54:38.564 [DEBUG] [Thread-163172] [transport.py] [_log()] userauth is OK
2025-09-29T17:54:38.564 [DEBUG] [Thread-163172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:54:38.564 [DEBUG] [Thread-163172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:54:38.564 [DEBUG] [Thread-163172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:54:38.564 [DEBUG] [Thread-163172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:54:38.587 [INFO] [Thread-163172] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:54:38.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:54:39.362 [DEBUG] [Thread-163172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:54:39.362 [DEBUG] [Thread-163172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:54:39.363 [DEBUG] [Thread-163172] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:54:39.403 [DEBUG] [Thread-163172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:54:39.404 [DEBUG] [Thread-163172] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:54:39.406 [DEBUG] [Thread-163172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:54:39.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:54:39.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:54:39.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:54:39.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:54:39.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:54:39.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:54:39.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:54:39.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:54:39.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:54:39.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.662565 -999.00  +13.50  15.53     46   +2.10 1 1 1 1 1   887    0 11.18 -15.72 ----- 15.4 15.5 164.2 23.6 16.4 -27.4 16.3 -26.7 17.4 -27.0 17.9 -28.3
2025-09-29T17:54:39.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:54:39.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:54:39.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.662565
2025-09-29T17:54:39.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:54:39.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:54:39.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:54:39.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:54:39.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:54:39.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:54:13', tmtdew=13.53, humidity=39.45, cloud=0.0, wind=21.47, temperature=13.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:54:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:54:39.430 [DEBUG] [Thread-163172] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:54:39.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:54:47.721 [DEBUG] [Thread-163175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:54:51.452 [DEBUG] [Thread-163176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:55:02.756 [DEBUG] [Thread-163177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:55:17.788 [DEBUG] [Thread-163178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:55:32.816 [DEBUG] [Thread-163179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:55:33.570 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:55:33.571 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:55:47.848 [DEBUG] [Thread-163180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:55:51.487 [DEBUG] [Thread-163181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:56:02.883 [DEBUG] [Thread-163182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:56:17.912 [DEBUG] [Thread-163183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:56:32.938 [DEBUG] [Thread-163184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:56:33.709 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:56:33.710 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:56:47.968 [DEBUG] [Thread-163185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:56:51.521 [DEBUG] [Thread-163186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:56:52.795 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T17:57:02.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:57:02.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:57:02.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:57:02.997 [DEBUG] [Thread-163187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:57:03.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 56, 52), 13.13, 40.38, 0.0, 23.11, 13.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:57:03.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:56:52
2025-09-29T17:57:03.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:57:03.664 [DEBUG] [Thread-163188] [transport.py] [_log()] starting thread (client mode): 0x2e361cc0
2025-09-29T17:57:03.665 [DEBUG] [Thread-163188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:03.685 [DEBUG] [Thread-163188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:57:03.685 [INFO] [Thread-163188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:57:03.688 [DEBUG] [Thread-163188] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:03.688 [DEBUG] [Thread-163188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:57:03.688 [DEBUG] [Thread-163188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:03.688 [DEBUG] [Thread-163188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:03.688 [DEBUG] [Thread-163188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:03.688 [DEBUG] [Thread-163188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:03.688 [DEBUG] [Thread-163188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:03.688 [DEBUG] [Thread-163188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] Compression: none
2025-09-29T17:57:03.689 [DEBUG] [Thread-163188] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:03.706 [DEBUG] [Thread-163188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:03.707 [DEBUG] [Thread-163188] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:03.707 [DEBUG] [Thread-163188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:57:03.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:57:03.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:03.709 [DEBUG] [Thread-163188] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:03.709 [DEBUG] [Thread-163188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:03.709 [DEBUG] [Thread-163188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:03.709 [DEBUG] [Thread-163188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:57:03.709 [DEBUG] [Thread-163188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:03.745 [INFO] [Thread-163188] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:03.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:04.456 [DEBUG] [Thread-163188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:04.456 [DEBUG] [Thread-163188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:04.457 [DEBUG] [Thread-163188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:57:04.497 [DEBUG] [Thread-163188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:04.497 [DEBUG] [Thread-163188] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:04.500 [DEBUG] [Thread-163188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:04.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:04.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:57:04.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:57:04.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:57:04.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:04.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:57:04.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:04.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:57:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.664301 -999.00  +13.40  18.77     47   +2.40 1 1 1 1 1   887    0 10.92 -24.40 ----- 16.3 18.8 150.4 25.2 16.3 -27.7 16.1 -26.4 17.1 -26.8 17.8 -28.5
2025-09-29T17:57:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:57:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:57:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.664301
2025-09-29T17:57:04.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:57:04.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:57:04.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:57:04.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:57:04.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:57:04.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:56:52', tmtdew=13.13, humidity=40.38, cloud=0.0, wind=23.11, temperature=13.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:56:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:57:04.526 [DEBUG] [Thread-163188] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:04.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:57:04.625 [DEBUG] [Thread-163191] [transport.py] [_log()] starting thread (client mode): 0x2e38fdc0
2025-09-29T17:57:04.625 [DEBUG] [Thread-163191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:04.640 [DEBUG] [Thread-163191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:57:04.640 [INFO] [Thread-163191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:57:04.647 [DEBUG] [Thread-163191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:04.648 [DEBUG] [Thread-163191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:04.649 [DEBUG] [Thread-163191] [transport.py] [_log()] Compression: none
2025-09-29T17:57:04.649 [DEBUG] [Thread-163191] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:04.705 [DEBUG] [Thread-163191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:04.706 [DEBUG] [Thread-163191] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:04.706 [DEBUG] [Thread-163191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:57:04.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:57:04.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:04.767 [DEBUG] [Thread-163191] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:04.767 [DEBUG] [Thread-163191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:04.767 [DEBUG] [Thread-163191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:04.767 [DEBUG] [Thread-163191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:57:04.767 [DEBUG] [Thread-163191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:04.786 [INFO] [Thread-163191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:04.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:57:04.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:05.807 [DEBUG] [Thread-163191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:05.807 [DEBUG] [Thread-163191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:05.855 [DEBUG] [Thread-163191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:05.855 [DEBUG] [Thread-163191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:05.864 [DEBUG] [Thread-163191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:05.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:05.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:57:05.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:57:05.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:05.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:05.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:05.898 [DEBUG] [Thread-163191] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:15.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:57:15.891 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:57:15.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:57:16.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 56, 52), 13.13, 40.38, 0.0, 23.11, 13.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:57:16.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:56:52
2025-09-29T17:57:16.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:57:16.781 [DEBUG] [Thread-163193] [transport.py] [_log()] starting thread (client mode): 0x2e38ec80
2025-09-29T17:57:16.781 [DEBUG] [Thread-163193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:16.802 [DEBUG] [Thread-163193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:57:16.802 [INFO] [Thread-163193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] Compression: none
2025-09-29T17:57:16.806 [DEBUG] [Thread-163193] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:16.822 [DEBUG] [Thread-163193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:16.822 [DEBUG] [Thread-163193] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:16.823 [DEBUG] [Thread-163193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:57:16.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:57:16.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:16.823 [DEBUG] [Thread-163193] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:16.824 [DEBUG] [Thread-163193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:16.824 [DEBUG] [Thread-163193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:16.824 [DEBUG] [Thread-163193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:57:16.824 [DEBUG] [Thread-163193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:16.836 [INFO] [Thread-163193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:16.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:17.475 [DEBUG] [Thread-163193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:17.475 [DEBUG] [Thread-163193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:17.475 [DEBUG] [Thread-163193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:57:17.516 [DEBUG] [Thread-163193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:17.516 [DEBUG] [Thread-163193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:17.519 [DEBUG] [Thread-163193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:17.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:17.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:57:17.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:57:17.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:57:17.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:17.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:57:17.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.664301 -999.00  +13.40  18.77     47   +2.40 1 1 1 1 1   887    0 10.92 -24.40 ----- 16.3 18.8 150.4 25.2 16.3 -27.7 16.1 -26.4 17.1 -26.8 17.8 -28.5
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.664301
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:57:17.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:56:52', tmtdew=13.13, humidity=40.38, cloud=0.0, wind=23.11, temperature=13.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:56:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:57:17.539 [DEBUG] [Thread-163193] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:17.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:57:17.625 [DEBUG] [Thread-163196] [transport.py] [_log()] starting thread (client mode): 0x2b91fd90
2025-09-29T17:57:17.625 [DEBUG] [Thread-163196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:17.640 [DEBUG] [Thread-163196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:57:17.640 [INFO] [Thread-163196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:57:17.647 [DEBUG] [Thread-163196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:17.647 [DEBUG] [Thread-163196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:57:17.647 [DEBUG] [Thread-163196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:17.647 [DEBUG] [Thread-163196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:17.647 [DEBUG] [Thread-163196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:17.647 [DEBUG] [Thread-163196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] Compression: none
2025-09-29T17:57:17.648 [DEBUG] [Thread-163196] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:17.704 [DEBUG] [Thread-163196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:17.704 [DEBUG] [Thread-163196] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:17.704 [DEBUG] [Thread-163196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:57:17.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:57:17.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:17.761 [DEBUG] [Thread-163196] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:17.762 [DEBUG] [Thread-163196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:17.762 [DEBUG] [Thread-163196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:17.762 [DEBUG] [Thread-163196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:57:17.762 [DEBUG] [Thread-163196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:17.785 [INFO] [Thread-163196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:17.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:57:17.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:18.024 [DEBUG] [Thread-163198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:57:18.764 [DEBUG] [Thread-163196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:18.764 [DEBUG] [Thread-163196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:18.812 [DEBUG] [Thread-163196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:18.812 [DEBUG] [Thread-163196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:18.821 [DEBUG] [Thread-163196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:18.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:18.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:57:18.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:57:18.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:18.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:18.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:18.856 [DEBUG] [Thread-163196] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:28.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:57:28.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:57:28.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:57:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 57, 24), 13.12, 40.39, 0.0, 22.97, 13.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:57:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:57:24
2025-09-29T17:57:29.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:57:29.723 [DEBUG] [Thread-163199] [transport.py] [_log()] starting thread (client mode): 0x2e349e40
2025-09-29T17:57:29.723 [DEBUG] [Thread-163199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:29.746 [DEBUG] [Thread-163199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:57:29.746 [INFO] [Thread-163199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:57:29.750 [DEBUG] [Thread-163199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:29.750 [DEBUG] [Thread-163199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:57:29.750 [DEBUG] [Thread-163199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:29.750 [DEBUG] [Thread-163199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] Compression: none
2025-09-29T17:57:29.751 [DEBUG] [Thread-163199] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:29.771 [DEBUG] [Thread-163199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:29.772 [DEBUG] [Thread-163199] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:29.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:57:29.773 [DEBUG] [Thread-163199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:57:29.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:29.774 [DEBUG] [Thread-163199] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:29.774 [DEBUG] [Thread-163199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:29.774 [DEBUG] [Thread-163199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:29.774 [DEBUG] [Thread-163199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:57:29.774 [DEBUG] [Thread-163199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:29.809 [INFO] [Thread-163199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:29.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:30.440 [DEBUG] [Thread-163199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:30.440 [DEBUG] [Thread-163199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:30.440 [DEBUG] [Thread-163199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:57:30.481 [DEBUG] [Thread-163199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:30.481 [DEBUG] [Thread-163199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:30.484 [DEBUG] [Thread-163199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:30.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:30.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:57:30.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:57:30.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:57:30.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:30.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:57:30.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:30.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:30.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:57:30.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.664301 -999.00  +13.40  18.77     47   +2.40 1 1 1 1 1   887    0 10.92 -24.40 ----- 16.3 18.8 150.4 25.2 16.3 -27.7 16.1 -26.4 17.1 -26.8 17.8 -28.5
2025-09-29T17:57:30.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:57:30.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:57:30.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.664301
2025-09-29T17:57:30.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:57:30.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:57:30.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:57:30.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:57:30.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:57:30.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:57:24', tmtdew=13.12, humidity=40.39, cloud=0.0, wind=22.97, temperature=13.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:56:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:57:30.508 [DEBUG] [Thread-163199] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:30.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:57:30.603 [DEBUG] [Thread-163202] [transport.py] [_log()] starting thread (client mode): 0x2b96bf70
2025-09-29T17:57:30.603 [DEBUG] [Thread-163202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:30.618 [DEBUG] [Thread-163202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:57:30.618 [INFO] [Thread-163202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:57:30.626 [DEBUG] [Thread-163202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:30.626 [DEBUG] [Thread-163202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:57:30.626 [DEBUG] [Thread-163202] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:30.626 [DEBUG] [Thread-163202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:30.627 [DEBUG] [Thread-163202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:30.628 [DEBUG] [Thread-163202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:30.628 [DEBUG] [Thread-163202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:30.628 [DEBUG] [Thread-163202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:30.628 [DEBUG] [Thread-163202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:30.628 [DEBUG] [Thread-163202] [transport.py] [_log()] Compression: none
2025-09-29T17:57:30.628 [DEBUG] [Thread-163202] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:30.686 [DEBUG] [Thread-163202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:30.686 [DEBUG] [Thread-163202] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:30.687 [DEBUG] [Thread-163202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:57:30.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:57:30.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:30.741 [DEBUG] [Thread-163202] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:30.741 [DEBUG] [Thread-163202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:30.741 [DEBUG] [Thread-163202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:30.742 [DEBUG] [Thread-163202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:57:30.742 [DEBUG] [Thread-163202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:30.761 [INFO] [Thread-163202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:30.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:57:30.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:31.783 [DEBUG] [Thread-163202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:31.783 [DEBUG] [Thread-163202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:31.831 [DEBUG] [Thread-163202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:31.831 [DEBUG] [Thread-163202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:31.840 [DEBUG] [Thread-163202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:31.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:31.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:57:31.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:57:31.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:31.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:31.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:31.874 [DEBUG] [Thread-163202] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:33.070 [DEBUG] [Thread-163204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:57:33.848 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:57:33.849 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:57:41.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:57:41.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:57:41.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:57:42.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 57, 24), 13.12, 40.39, 0.0, 22.97, 13.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:57:42.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:57:24
2025-09-29T17:57:42.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:57:42.733 [DEBUG] [Thread-163205] [transport.py] [_log()] starting thread (client mode): 0x2e38ec20
2025-09-29T17:57:42.733 [DEBUG] [Thread-163205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:42.754 [DEBUG] [Thread-163205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:57:42.754 [INFO] [Thread-163205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] Compression: none
2025-09-29T17:57:42.757 [DEBUG] [Thread-163205] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:42.777 [DEBUG] [Thread-163205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:42.777 [DEBUG] [Thread-163205] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:42.777 [DEBUG] [Thread-163205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:57:42.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:57:42.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:42.778 [DEBUG] [Thread-163205] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:42.778 [DEBUG] [Thread-163205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:42.778 [DEBUG] [Thread-163205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:42.778 [DEBUG] [Thread-163205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:57:42.778 [DEBUG] [Thread-163205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:42.794 [INFO] [Thread-163205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:42.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:43.444 [DEBUG] [Thread-163205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:43.444 [DEBUG] [Thread-163205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:43.444 [DEBUG] [Thread-163205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:57:43.484 [DEBUG] [Thread-163205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:43.485 [DEBUG] [Thread-163205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:43.488 [DEBUG] [Thread-163205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:43.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:43.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:57:43.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:57:43.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:57:43.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:43.511 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:57:43.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:43.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:43.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:57:43.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.664648 -999.00  +13.40  19.52     47   +2.40 1 1 1 1 1   887    0 10.89 -27.62 ----- 17.9 19.5 150.3 24.3 16.3 -27.3 16.1 -26.1 17.1 -26.8 17.7 -28.3
2025-09-29T17:57:43.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:57:43.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:57:43.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.664648
2025-09-29T17:57:43.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:57:43.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:57:43.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:57:43.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:57:43.513 [DEBUG] [Thread-163205] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:43.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:57:43.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:57:24', tmtdew=13.12, humidity=40.39, cloud=0.0, wind=22.97, temperature=13.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:57:05.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:57:43.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:57:43.610 [DEBUG] [Thread-163208] [transport.py] [_log()] starting thread (client mode): 0x2b968af0
2025-09-29T17:57:43.610 [DEBUG] [Thread-163208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:43.625 [DEBUG] [Thread-163208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:57:43.626 [INFO] [Thread-163208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:57:43.634 [DEBUG] [Thread-163208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:43.634 [DEBUG] [Thread-163208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:57:43.634 [DEBUG] [Thread-163208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:43.635 [DEBUG] [Thread-163208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:43.636 [DEBUG] [Thread-163208] [transport.py] [_log()] Compression: none
2025-09-29T17:57:43.636 [DEBUG] [Thread-163208] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:43.694 [DEBUG] [Thread-163208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:43.695 [DEBUG] [Thread-163208] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:43.695 [DEBUG] [Thread-163208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:57:43.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:57:43.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:43.753 [DEBUG] [Thread-163208] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:43.754 [DEBUG] [Thread-163208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:43.754 [DEBUG] [Thread-163208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:43.754 [DEBUG] [Thread-163208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:57:43.754 [DEBUG] [Thread-163208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:43.774 [INFO] [Thread-163208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:43.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:57:43.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:44.750 [DEBUG] [Thread-163208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:44.750 [DEBUG] [Thread-163208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:44.798 [DEBUG] [Thread-163208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:44.798 [DEBUG] [Thread-163208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:44.807 [DEBUG] [Thread-163208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:44.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:44.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:57:44.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:57:44.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:44.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:44.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:44.842 [DEBUG] [Thread-163208] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:48.115 [DEBUG] [Thread-163210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:57:51.548 [DEBUG] [Thread-163211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:57:54.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:57:54.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:57:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:57:55.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 57, 24), 13.12, 40.39, 0.0, 22.97, 13.65, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:57:55.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:57:24
2025-09-29T17:57:55.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:57:55.738 [DEBUG] [Thread-163212] [transport.py] [_log()] starting thread (client mode): 0x2b91f430
2025-09-29T17:57:55.738 [DEBUG] [Thread-163212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:55.758 [DEBUG] [Thread-163212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:57:55.758 [INFO] [Thread-163212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:57:55.761 [DEBUG] [Thread-163212] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:55.762 [DEBUG] [Thread-163212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:55.763 [DEBUG] [Thread-163212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:55.763 [DEBUG] [Thread-163212] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:55.763 [DEBUG] [Thread-163212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:55.763 [DEBUG] [Thread-163212] [transport.py] [_log()] Compression: none
2025-09-29T17:57:55.763 [DEBUG] [Thread-163212] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:55.782 [DEBUG] [Thread-163212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:55.783 [DEBUG] [Thread-163212] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:55.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:57:55.785 [DEBUG] [Thread-163212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:57:55.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:55.787 [DEBUG] [Thread-163212] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:55.787 [DEBUG] [Thread-163212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:55.787 [DEBUG] [Thread-163212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:55.787 [DEBUG] [Thread-163212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:57:55.787 [DEBUG] [Thread-163212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:55.809 [INFO] [Thread-163212] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:55.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:56.459 [DEBUG] [Thread-163212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:56.459 [DEBUG] [Thread-163212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:56.460 [DEBUG] [Thread-163212] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:57:56.500 [DEBUG] [Thread-163212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:56.501 [DEBUG] [Thread-163212] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:56.504 [DEBUG] [Thread-163212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:56.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:56.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:57:56.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:57:56.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:57:56.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:56.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:57:56.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:56.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:56.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:57:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.664648 -999.00  +13.40  19.52     47   +2.40 1 1 1 1 1   887    0 10.89 -27.62 ----- 17.9 19.5 150.3 24.3 16.3 -27.3 16.1 -26.1 17.1 -26.8 17.7 -28.3
2025-09-29T17:57:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:57:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:57:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.664648
2025-09-29T17:57:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:57:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:57:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:57:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:57:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:57:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:57:24', tmtdew=13.12, humidity=40.39, cloud=0.0, wind=22.97, temperature=13.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:57:05.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:57:56.528 [DEBUG] [Thread-163212] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:57:56.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:57:56.634 [DEBUG] [Thread-163215] [transport.py] [_log()] starting thread (client mode): 0x2b91f640
2025-09-29T17:57:56.634 [DEBUG] [Thread-163215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:57:56.653 [DEBUG] [Thread-163215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:57:56.653 [INFO] [Thread-163215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:57:56.660 [DEBUG] [Thread-163215] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] client lang: <none>
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] server lang: <none>
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] kex follows: False
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:57:56.661 [DEBUG] [Thread-163215] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:57:56.662 [DEBUG] [Thread-163215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:57:56.662 [DEBUG] [Thread-163215] [transport.py] [_log()] Compression: none
2025-09-29T17:57:56.662 [DEBUG] [Thread-163215] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:57:56.724 [DEBUG] [Thread-163215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:57:56.725 [DEBUG] [Thread-163215] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:57:56.725 [DEBUG] [Thread-163215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:57:56.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:57:56.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:57:56.781 [DEBUG] [Thread-163215] [transport.py] [_log()] userauth is OK
2025-09-29T17:57:56.782 [DEBUG] [Thread-163215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:57:56.782 [DEBUG] [Thread-163215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:57:56.782 [DEBUG] [Thread-163215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:57:56.782 [DEBUG] [Thread-163215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:57:56.801 [INFO] [Thread-163215] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:57:56.801 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:57:56.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:57:57.749 [DEBUG] [Thread-163215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:57:57.749 [DEBUG] [Thread-163215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:57:57.797 [DEBUG] [Thread-163215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:57:57.797 [DEBUG] [Thread-163215] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:57:57.805 [DEBUG] [Thread-163215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:57:57.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:57:57.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:57:57.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:57:57.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:57:57.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:57:57.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:57:57.837 [DEBUG] [Thread-163215] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:03.157 [DEBUG] [Thread-163217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:58:07.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:58:07.839 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:58:07.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:58:08.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 57, 56), 13.08, 41.01, 0.0, 20.82, 13.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:58:08.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:57:56
2025-09-29T17:58:08.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:58:08.709 [DEBUG] [Thread-163218] [transport.py] [_log()] starting thread (client mode): 0x2e38fdc0
2025-09-29T17:58:08.709 [DEBUG] [Thread-163218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:58:08.728 [DEBUG] [Thread-163218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:58:08.728 [INFO] [Thread-163218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] client lang: <none>
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] server lang: <none>
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] kex follows: False
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] Compression: none
2025-09-29T17:58:08.732 [DEBUG] [Thread-163218] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:58:08.744 [DEBUG] [Thread-163218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:58:08.745 [DEBUG] [Thread-163218] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:58:08.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:58:08.746 [DEBUG] [Thread-163218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:58:08.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:58:08.747 [DEBUG] [Thread-163218] [transport.py] [_log()] userauth is OK
2025-09-29T17:58:08.748 [DEBUG] [Thread-163218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:58:08.748 [DEBUG] [Thread-163218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:58:08.748 [DEBUG] [Thread-163218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:58:08.748 [DEBUG] [Thread-163218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:58:08.771 [INFO] [Thread-163218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:58:08.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:58:09.351 [DEBUG] [Thread-163218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:58:09.352 [DEBUG] [Thread-163218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:58:09.352 [DEBUG] [Thread-163218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:58:09.392 [DEBUG] [Thread-163218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:58:09.392 [DEBUG] [Thread-163218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:58:09.395 [DEBUG] [Thread-163218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:58:09.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:58:09.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:58:09.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:58:09.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:58:09.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:58:09.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:58:09.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:58:09.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:58:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:58:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.664995 -999.00  +13.40  13.72     47   +2.40 1 1 1 1 1   887    0 10.71 -30.23 ----- 14.8 13.7 171.6 21.6 16.2 -27.2 16.1 -26.2 17.1 -26.9 17.6 -27.9
2025-09-29T17:58:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:58:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:58:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.664995
2025-09-29T17:58:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:58:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:58:09.421 [DEBUG] [Thread-163218] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:09.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:58:09.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:58:09.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:58:09.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:57:56', tmtdew=13.08, humidity=41.01, cloud=0.0, wind=20.82, temperature=13.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:57:35.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:58:09.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:58:09.519 [DEBUG] [Thread-163221] [transport.py] [_log()] starting thread (client mode): 0x2b91f550
2025-09-29T17:58:09.520 [DEBUG] [Thread-163221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:58:09.535 [DEBUG] [Thread-163221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:58:09.535 [INFO] [Thread-163221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] client lang: <none>
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] server lang: <none>
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] kex follows: False
2025-09-29T17:58:09.543 [DEBUG] [Thread-163221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:58:09.544 [DEBUG] [Thread-163221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:58:09.544 [DEBUG] [Thread-163221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:58:09.544 [DEBUG] [Thread-163221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:58:09.544 [DEBUG] [Thread-163221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:58:09.544 [DEBUG] [Thread-163221] [transport.py] [_log()] Compression: none
2025-09-29T17:58:09.544 [DEBUG] [Thread-163221] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:58:09.600 [DEBUG] [Thread-163221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:58:09.601 [DEBUG] [Thread-163221] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:58:09.601 [DEBUG] [Thread-163221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:58:09.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:58:09.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:58:09.657 [DEBUG] [Thread-163221] [transport.py] [_log()] userauth is OK
2025-09-29T17:58:09.657 [DEBUG] [Thread-163221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:58:09.657 [DEBUG] [Thread-163221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:58:09.658 [DEBUG] [Thread-163221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:58:09.658 [DEBUG] [Thread-163221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:58:09.677 [INFO] [Thread-163221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:58:09.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:58:09.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:58:10.787 [DEBUG] [Thread-163221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:58:10.787 [DEBUG] [Thread-163221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:58:10.835 [DEBUG] [Thread-163221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:58:10.835 [DEBUG] [Thread-163221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:58:10.844 [DEBUG] [Thread-163221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:58:10.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:58:10.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:58:10.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:58:10.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:58:10.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:58:10.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:58:10.878 [DEBUG] [Thread-163221] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:18.186 [DEBUG] [Thread-163223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:58:20.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:58:20.873 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:58:20.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:58:21.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 57, 56), 13.08, 41.01, 0.0, 20.82, 13.63, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:58:21.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:57:56
2025-09-29T17:58:21.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:58:21.747 [DEBUG] [Thread-163224] [transport.py] [_log()] starting thread (client mode): 0x2b91cbe0
2025-09-29T17:58:21.747 [DEBUG] [Thread-163224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:58:21.768 [DEBUG] [Thread-163224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:58:21.769 [INFO] [Thread-163224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:58:21.772 [DEBUG] [Thread-163224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] client lang: <none>
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] server lang: <none>
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] kex follows: False
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] Compression: none
2025-09-29T17:58:21.773 [DEBUG] [Thread-163224] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:58:21.791 [DEBUG] [Thread-163224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:58:21.791 [DEBUG] [Thread-163224] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:58:21.792 [DEBUG] [Thread-163224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:58:21.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:58:21.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:58:21.793 [DEBUG] [Thread-163224] [transport.py] [_log()] userauth is OK
2025-09-29T17:58:21.794 [DEBUG] [Thread-163224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:58:21.794 [DEBUG] [Thread-163224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:58:21.794 [DEBUG] [Thread-163224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:58:21.794 [DEBUG] [Thread-163224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:58:21.828 [INFO] [Thread-163224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:58:21.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:58:22.454 [DEBUG] [Thread-163224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:58:22.454 [DEBUG] [Thread-163224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:58:22.454 [DEBUG] [Thread-163224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:58:22.495 [DEBUG] [Thread-163224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:58:22.495 [DEBUG] [Thread-163224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:58:22.498 [DEBUG] [Thread-163224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:58:22.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:58:22.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:58:22.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:58:22.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:58:22.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:58:22.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:58:22.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:58:22.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:58:22.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:58:22.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.664995 -999.00  +13.40  13.72     47   +2.40 1 1 1 1 1   887    0 10.71 -30.23 ----- 14.8 13.7 171.6 21.6 16.2 -27.2 16.1 -26.2 17.1 -26.9 17.6 -27.9
2025-09-29T17:58:22.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:58:22.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:58:22.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.664995
2025-09-29T17:58:22.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:58:22.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:58:22.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:58:22.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:58:22.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:58:22.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:57:56', tmtdew=13.08, humidity=41.01, cloud=0.0, wind=20.82, temperature=13.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:57:35.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:58:22.522 [DEBUG] [Thread-163224] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:22.606 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:58:22.615 [DEBUG] [Thread-163227] [transport.py] [_log()] starting thread (client mode): 0x2e377fd0
2025-09-29T17:58:22.615 [DEBUG] [Thread-163227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:58:22.630 [DEBUG] [Thread-163227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:58:22.631 [INFO] [Thread-163227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:58:22.639 [DEBUG] [Thread-163227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:58:22.640 [DEBUG] [Thread-163227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:58:22.640 [DEBUG] [Thread-163227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:58:22.640 [DEBUG] [Thread-163227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:22.640 [DEBUG] [Thread-163227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:22.640 [DEBUG] [Thread-163227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:22.640 [DEBUG] [Thread-163227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:22.640 [DEBUG] [Thread-163227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:58:22.640 [DEBUG] [Thread-163227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] client lang: <none>
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] server lang: <none>
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] kex follows: False
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:58:22.641 [DEBUG] [Thread-163227] [transport.py] [_log()] Compression: none
2025-09-29T17:58:22.642 [DEBUG] [Thread-163227] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:58:22.697 [DEBUG] [Thread-163227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:58:22.697 [DEBUG] [Thread-163227] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:58:22.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:58:22.698 [DEBUG] [Thread-163227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:58:22.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:58:22.752 [DEBUG] [Thread-163227] [transport.py] [_log()] userauth is OK
2025-09-29T17:58:22.753 [DEBUG] [Thread-163227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:58:22.753 [DEBUG] [Thread-163227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:58:22.753 [DEBUG] [Thread-163227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:58:22.753 [DEBUG] [Thread-163227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:58:22.772 [INFO] [Thread-163227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:58:22.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:58:22.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:58:23.802 [DEBUG] [Thread-163227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:58:23.802 [DEBUG] [Thread-163227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:58:23.850 [DEBUG] [Thread-163227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:58:23.850 [DEBUG] [Thread-163227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:58:23.859 [DEBUG] [Thread-163227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:58:23.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:58:23.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:58:23.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:58:23.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:58:23.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:58:23.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:58:23.909 [DEBUG] [Thread-163227] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:33.238 [DEBUG] [Thread-163229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:58:33.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:58:33.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:58:33.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:58:33.994 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:58:33.994 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:58:34.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 58, 29), 13.1, 40.96, 0.0, 21.35, 13.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:58:34.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:58:29
2025-09-29T17:58:34.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:58:34.754 [DEBUG] [Thread-163230] [transport.py] [_log()] starting thread (client mode): 0x2b9cabf0
2025-09-29T17:58:34.754 [DEBUG] [Thread-163230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:58:34.774 [DEBUG] [Thread-163230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:58:34.774 [INFO] [Thread-163230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] client lang: <none>
2025-09-29T17:58:34.778 [DEBUG] [Thread-163230] [transport.py] [_log()] server lang: <none>
2025-09-29T17:58:34.779 [DEBUG] [Thread-163230] [transport.py] [_log()] kex follows: False
2025-09-29T17:58:34.779 [DEBUG] [Thread-163230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:58:34.779 [DEBUG] [Thread-163230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:58:34.779 [DEBUG] [Thread-163230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:58:34.779 [DEBUG] [Thread-163230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:58:34.779 [DEBUG] [Thread-163230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:58:34.779 [DEBUG] [Thread-163230] [transport.py] [_log()] Compression: none
2025-09-29T17:58:34.779 [DEBUG] [Thread-163230] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:58:34.796 [DEBUG] [Thread-163230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:58:34.797 [DEBUG] [Thread-163230] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:58:34.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:58:34.798 [DEBUG] [Thread-163230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:58:34.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:58:34.799 [DEBUG] [Thread-163230] [transport.py] [_log()] userauth is OK
2025-09-29T17:58:34.800 [DEBUG] [Thread-163230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:58:34.800 [DEBUG] [Thread-163230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:58:34.800 [DEBUG] [Thread-163230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:58:34.800 [DEBUG] [Thread-163230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:58:34.818 [INFO] [Thread-163230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:58:34.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:58:35.494 [DEBUG] [Thread-163230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:58:35.494 [DEBUG] [Thread-163230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:58:35.495 [DEBUG] [Thread-163230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:58:35.535 [DEBUG] [Thread-163230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:58:35.535 [DEBUG] [Thread-163230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:58:35.538 [DEBUG] [Thread-163230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:58:35.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:58:35.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:58:35.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:58:35.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:58:35.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:58:35.558 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:58:35.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:58:35.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:58:35.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:58:35.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.664995 -999.00  +13.40  13.72     47   +2.40 1 1 1 1 1   887    0 10.71 -30.23 ----- 14.8 13.7 171.6 21.6 16.2 -27.2 16.1 -26.2 17.1 -26.9 17.6 -27.9
2025-09-29T17:58:35.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:58:35.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:58:35.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.664995
2025-09-29T17:58:35.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:58:35.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:58:35.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:58:35.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:58:35.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:58:35.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:58:29', tmtdew=13.1, humidity=40.96, cloud=0.0, wind=21.35, temperature=13.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:57:35.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:58:35.560 [DEBUG] [Thread-163230] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:35.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:58:35.657 [DEBUG] [Thread-163233] [transport.py] [_log()] starting thread (client mode): 0x2b9ca170
2025-09-29T17:58:35.657 [DEBUG] [Thread-163233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:58:35.672 [DEBUG] [Thread-163233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:58:35.672 [INFO] [Thread-163233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] client lang: <none>
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] server lang: <none>
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] kex follows: False
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:58:35.680 [DEBUG] [Thread-163233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:58:35.681 [DEBUG] [Thread-163233] [transport.py] [_log()] Compression: none
2025-09-29T17:58:35.681 [DEBUG] [Thread-163233] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:58:35.736 [DEBUG] [Thread-163233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:58:35.736 [DEBUG] [Thread-163233] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:58:35.737 [DEBUG] [Thread-163233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:58:35.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:58:35.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:58:35.796 [DEBUG] [Thread-163233] [transport.py] [_log()] userauth is OK
2025-09-29T17:58:35.797 [DEBUG] [Thread-163233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:58:35.797 [DEBUG] [Thread-163233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:58:35.797 [DEBUG] [Thread-163233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:58:35.797 [DEBUG] [Thread-163233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:58:35.816 [INFO] [Thread-163233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:58:35.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:58:35.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:58:36.831 [DEBUG] [Thread-163233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:58:36.831 [DEBUG] [Thread-163233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:58:36.879 [DEBUG] [Thread-163233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:58:36.879 [DEBUG] [Thread-163233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:58:36.888 [DEBUG] [Thread-163233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:58:36.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:58:36.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:58:36.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:58:36.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:58:36.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:58:36.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:58:36.922 [DEBUG] [Thread-163233] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:46.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:58:46.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:58:46.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:58:47.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 58, 29), 13.1, 40.96, 0.0, 21.35, 13.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:58:47.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:58:29
2025-09-29T17:58:47.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:58:47.793 [DEBUG] [Thread-163235] [transport.py] [_log()] starting thread (client mode): 0x2b9cb220
2025-09-29T17:58:47.794 [DEBUG] [Thread-163235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:58:47.813 [DEBUG] [Thread-163235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:58:47.813 [INFO] [Thread-163235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:58:47.823 [DEBUG] [Thread-163235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:58:47.823 [DEBUG] [Thread-163235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:58:47.823 [DEBUG] [Thread-163235] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:58:47.823 [DEBUG] [Thread-163235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] client lang: <none>
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] server lang: <none>
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] kex follows: False
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:58:47.824 [DEBUG] [Thread-163235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:58:47.825 [DEBUG] [Thread-163235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:58:47.825 [DEBUG] [Thread-163235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:58:47.825 [DEBUG] [Thread-163235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:58:47.825 [DEBUG] [Thread-163235] [transport.py] [_log()] Compression: none
2025-09-29T17:58:47.825 [DEBUG] [Thread-163235] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:58:47.844 [DEBUG] [Thread-163235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:58:47.845 [DEBUG] [Thread-163235] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:58:47.845 [DEBUG] [Thread-163235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:58:47.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:58:47.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:58:47.847 [DEBUG] [Thread-163235] [transport.py] [_log()] userauth is OK
2025-09-29T17:58:47.848 [DEBUG] [Thread-163235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:58:47.848 [DEBUG] [Thread-163235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:58:47.848 [DEBUG] [Thread-163235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:58:47.848 [DEBUG] [Thread-163235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:58:47.871 [INFO] [Thread-163235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:58:47.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:58:48.266 [DEBUG] [Thread-163237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:58:48.491 [DEBUG] [Thread-163235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:58:48.491 [DEBUG] [Thread-163235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:58:48.492 [DEBUG] [Thread-163235] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:58:48.532 [DEBUG] [Thread-163235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:58:48.532 [DEBUG] [Thread-163235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:58:48.536 [DEBUG] [Thread-163235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:58:48.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:58:48.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:58:48.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:58:48.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:58:48.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:58:48.557 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:58:48.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:58:48.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:58:48.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:58:48.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.665343 -999.00  +13.40  17.63     47   +2.40 1 1 1 1 1   887    0 10.22 -35.61 ----- 13.7 17.6 153.0 23.3 16.2 -27.4 16.1 -26.4 17.0 -27.0 17.6 -28.6
2025-09-29T17:58:48.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:58:48.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:58:48.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.665343
2025-09-29T17:58:48.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:58:48.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:58:48.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:58:48.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:58:48.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:58:48.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:58:29', tmtdew=13.1, humidity=40.96, cloud=0.0, wind=21.35, temperature=13.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:58:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:58:48.560 [DEBUG] [Thread-163235] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:48.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:58:48.654 [DEBUG] [Thread-163239] [transport.py] [_log()] starting thread (client mode): 0x2b91ed10
2025-09-29T17:58:48.654 [DEBUG] [Thread-163239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:58:48.668 [DEBUG] [Thread-163239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:58:48.668 [INFO] [Thread-163239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:58:48.676 [DEBUG] [Thread-163239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:58:48.676 [DEBUG] [Thread-163239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:58:48.676 [DEBUG] [Thread-163239] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] client lang: <none>
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] server lang: <none>
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] kex follows: False
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] Compression: none
2025-09-29T17:58:48.677 [DEBUG] [Thread-163239] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:58:48.732 [DEBUG] [Thread-163239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:58:48.733 [DEBUG] [Thread-163239] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:58:48.734 [DEBUG] [Thread-163239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:58:48.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:58:48.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:58:48.788 [DEBUG] [Thread-163239] [transport.py] [_log()] userauth is OK
2025-09-29T17:58:48.788 [DEBUG] [Thread-163239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:58:48.788 [DEBUG] [Thread-163239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:58:48.788 [DEBUG] [Thread-163239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:58:48.788 [DEBUG] [Thread-163239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:58:48.806 [INFO] [Thread-163239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:58:48.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:58:48.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:58:49.886 [DEBUG] [Thread-163239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:58:49.886 [DEBUG] [Thread-163239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:58:49.935 [DEBUG] [Thread-163239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:58:49.936 [DEBUG] [Thread-163239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:58:49.945 [DEBUG] [Thread-163239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:58:49.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:58:49.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:58:49.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:58:49.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:58:49.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:58:49.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:58:49.980 [DEBUG] [Thread-163239] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:58:51.591 [DEBUG] [Thread-163241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:58:59.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:58:59.975 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:58:59.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:59:00.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 58, 29), 13.1, 40.96, 0.0, 21.35, 13.69, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:59:00.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:58:29
2025-09-29T17:59:00.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:59:00.832 [DEBUG] [Thread-163242] [transport.py] [_log()] starting thread (client mode): 0x2b9ca710
2025-09-29T17:59:00.832 [DEBUG] [Thread-163242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:00.853 [DEBUG] [Thread-163242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:59:00.853 [INFO] [Thread-163242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:00.856 [DEBUG] [Thread-163242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:00.857 [DEBUG] [Thread-163242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:00.857 [DEBUG] [Thread-163242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:00.857 [DEBUG] [Thread-163242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:00.857 [DEBUG] [Thread-163242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:00.857 [DEBUG] [Thread-163242] [transport.py] [_log()] Compression: none
2025-09-29T17:59:00.857 [DEBUG] [Thread-163242] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:00.873 [DEBUG] [Thread-163242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:00.874 [DEBUG] [Thread-163242] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:00.874 [DEBUG] [Thread-163242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:59:00.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:59:00.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:00.877 [DEBUG] [Thread-163242] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:00.877 [DEBUG] [Thread-163242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:00.877 [DEBUG] [Thread-163242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:00.877 [DEBUG] [Thread-163242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:59:00.877 [DEBUG] [Thread-163242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:00.902 [INFO] [Thread-163242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:00.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:01.579 [DEBUG] [Thread-163242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:01.579 [DEBUG] [Thread-163242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:01.579 [DEBUG] [Thread-163242] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:59:01.620 [DEBUG] [Thread-163242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:01.620 [DEBUG] [Thread-163242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:01.622 [DEBUG] [Thread-163242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:01.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:01.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:59:01.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:59:01.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:59:01.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:01.639 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:59:01.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:01.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.665343 -999.00  +13.40  17.63     47   +2.40 1 1 1 1 1   887    0 10.22 -35.61 ----- 13.7 17.6 153.0 23.3 16.2 -27.4 16.1 -26.4 17.0 -27.0 17.6 -28.6
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.665343
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:59:01.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:58:29', tmtdew=13.1, humidity=40.96, cloud=0.0, wind=21.35, temperature=13.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:58:05.635', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:59:01.641 [DEBUG] [Thread-163242] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:01.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:59:01.725 [DEBUG] [Thread-163245] [transport.py] [_log()] starting thread (client mode): 0x2b9cb070
2025-09-29T17:59:01.725 [DEBUG] [Thread-163245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:01.739 [DEBUG] [Thread-163245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:59:01.739 [INFO] [Thread-163245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] Compression: none
2025-09-29T17:59:01.747 [DEBUG] [Thread-163245] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:01.802 [DEBUG] [Thread-163245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:01.803 [DEBUG] [Thread-163245] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:01.803 [DEBUG] [Thread-163245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:59:01.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:59:01.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:01.860 [DEBUG] [Thread-163245] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:01.860 [DEBUG] [Thread-163245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:01.860 [DEBUG] [Thread-163245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:01.860 [DEBUG] [Thread-163245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:59:01.860 [DEBUG] [Thread-163245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:01.878 [INFO] [Thread-163245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:01.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:59:01.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:02.959 [DEBUG] [Thread-163245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:02.959 [DEBUG] [Thread-163245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:03.007 [DEBUG] [Thread-163245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:03.007 [DEBUG] [Thread-163245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:03.015 [DEBUG] [Thread-163245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:03.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:03.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:59:03.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:59:03.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:03.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:03.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:03.047 [DEBUG] [Thread-163245] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:03.308 [DEBUG] [Thread-163247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:59:13.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:59:13.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:59:13.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:59:13.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 59, 1), 13.12, 40.91, 0.0, 23.31, 13.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:59:13.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:59:01
2025-09-29T17:59:13.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:59:13.909 [DEBUG] [Thread-163248] [transport.py] [_log()] starting thread (client mode): 0x2b9ca110
2025-09-29T17:59:13.909 [DEBUG] [Thread-163248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:13.930 [DEBUG] [Thread-163248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:59:13.930 [INFO] [Thread-163248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:59:13.933 [DEBUG] [Thread-163248] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:13.933 [DEBUG] [Thread-163248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:13.934 [DEBUG] [Thread-163248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:13.935 [DEBUG] [Thread-163248] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:13.935 [DEBUG] [Thread-163248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:13.935 [DEBUG] [Thread-163248] [transport.py] [_log()] Compression: none
2025-09-29T17:59:13.935 [DEBUG] [Thread-163248] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:13.951 [DEBUG] [Thread-163248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:13.952 [DEBUG] [Thread-163248] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:13.952 [DEBUG] [Thread-163248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:59:13.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:59:13.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:13.954 [DEBUG] [Thread-163248] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:13.954 [DEBUG] [Thread-163248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:13.954 [DEBUG] [Thread-163248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:13.954 [DEBUG] [Thread-163248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:59:13.954 [DEBUG] [Thread-163248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:13.974 [INFO] [Thread-163248] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:13.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:14.633 [DEBUG] [Thread-163248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:14.633 [DEBUG] [Thread-163248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:14.634 [DEBUG] [Thread-163248] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:59:14.674 [DEBUG] [Thread-163248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:14.674 [DEBUG] [Thread-163248] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:14.677 [DEBUG] [Thread-163248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:14.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:14.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:59:14.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:59:14.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:59:14.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:14.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:59:14.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:14.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:59:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.666037 -999.00  +13.30  17.68     47   +2.40 1 1 1 1 1   887    0 10.13 -40.01 ----- 17.7 17.7 163.4 23.9 16.1 -27.4 15.9 -26.2 16.9 -26.8 17.5 -27.5
2025-09-29T17:59:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:59:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:59:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.666037
2025-09-29T17:59:14.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:59:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:59:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:59:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:59:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:59:14.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:59:01', tmtdew=13.12, humidity=40.91, cloud=0.0, wind=23.31, temperature=13.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:59:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:59:14.701 [DEBUG] [Thread-163248] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:14.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:59:14.793 [DEBUG] [Thread-163251] [transport.py] [_log()] starting thread (client mode): 0x2b9c9f90
2025-09-29T17:59:14.793 [DEBUG] [Thread-163251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:14.807 [DEBUG] [Thread-163251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:59:14.807 [INFO] [Thread-163251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:14.815 [DEBUG] [Thread-163251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:14.816 [DEBUG] [Thread-163251] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:14.816 [DEBUG] [Thread-163251] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:14.816 [DEBUG] [Thread-163251] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:14.816 [DEBUG] [Thread-163251] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:14.816 [DEBUG] [Thread-163251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:14.817 [DEBUG] [Thread-163251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:14.817 [DEBUG] [Thread-163251] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:14.817 [DEBUG] [Thread-163251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:14.817 [DEBUG] [Thread-163251] [transport.py] [_log()] Compression: none
2025-09-29T17:59:14.817 [DEBUG] [Thread-163251] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:14.871 [DEBUG] [Thread-163251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:14.871 [DEBUG] [Thread-163251] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:14.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:59:14.872 [DEBUG] [Thread-163251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:59:14.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:14.928 [DEBUG] [Thread-163251] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:14.928 [DEBUG] [Thread-163251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:14.928 [DEBUG] [Thread-163251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:14.928 [DEBUG] [Thread-163251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:59:14.928 [DEBUG] [Thread-163251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:14.948 [INFO] [Thread-163251] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:14.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:59:14.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:15.926 [DEBUG] [Thread-163251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:15.926 [DEBUG] [Thread-163251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:15.974 [DEBUG] [Thread-163251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:15.974 [DEBUG] [Thread-163251] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:15.983 [DEBUG] [Thread-163251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:15.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:15.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:59:16.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:59:16.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:16.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:16.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:16.016 [DEBUG] [Thread-163251] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:18.345 [DEBUG] [Thread-163253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:59:26.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:59:26.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:59:26.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:59:26.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 59, 1), 13.12, 40.91, 0.0, 23.31, 13.7, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:59:26.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:59:01
2025-09-29T17:59:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:59:26.881 [DEBUG] [Thread-163254] [transport.py] [_log()] starting thread (client mode): 0x2e3f8730
2025-09-29T17:59:26.881 [DEBUG] [Thread-163254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:26.902 [DEBUG] [Thread-163254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:59:26.902 [INFO] [Thread-163254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:26.905 [DEBUG] [Thread-163254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:26.906 [DEBUG] [Thread-163254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:26.906 [DEBUG] [Thread-163254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:26.906 [DEBUG] [Thread-163254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:26.906 [DEBUG] [Thread-163254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:26.906 [DEBUG] [Thread-163254] [transport.py] [_log()] Compression: none
2025-09-29T17:59:26.906 [DEBUG] [Thread-163254] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:26.924 [DEBUG] [Thread-163254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:26.924 [DEBUG] [Thread-163254] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:26.925 [DEBUG] [Thread-163254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:59:26.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:59:26.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:26.927 [DEBUG] [Thread-163254] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:26.927 [DEBUG] [Thread-163254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:26.927 [DEBUG] [Thread-163254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:26.928 [DEBUG] [Thread-163254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:59:26.928 [DEBUG] [Thread-163254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:26.962 [INFO] [Thread-163254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:26.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:27.614 [DEBUG] [Thread-163254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:27.614 [DEBUG] [Thread-163254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:27.615 [DEBUG] [Thread-163254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:59:27.655 [DEBUG] [Thread-163254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:27.655 [DEBUG] [Thread-163254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:27.658 [DEBUG] [Thread-163254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:27.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:27.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:59:27.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:59:27.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:59:27.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:27.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:59:27.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:27.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:59:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.666037 -999.00  +13.30  17.68     47   +2.40 1 1 1 1 1   887    0 10.13 -40.01 ----- 17.7 17.7 163.4 23.9 16.1 -27.4 15.9 -26.2 16.9 -26.8 17.5 -27.5
2025-09-29T17:59:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:59:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:59:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.666037
2025-09-29T17:59:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:59:27.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:59:27.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:59:27.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:59:27.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:59:27.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:59:01', tmtdew=13.12, humidity=40.91, cloud=0.0, wind=23.31, temperature=13.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:59:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:59:27.683 [DEBUG] [Thread-163254] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:27.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:59:27.779 [DEBUG] [Thread-163257] [transport.py] [_log()] starting thread (client mode): 0x2e3744f0
2025-09-29T17:59:27.779 [DEBUG] [Thread-163257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:27.794 [DEBUG] [Thread-163257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:59:27.794 [INFO] [Thread-163257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:59:27.802 [DEBUG] [Thread-163257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:27.802 [DEBUG] [Thread-163257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:27.803 [DEBUG] [Thread-163257] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:27.804 [DEBUG] [Thread-163257] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:27.804 [DEBUG] [Thread-163257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:27.804 [DEBUG] [Thread-163257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:27.804 [DEBUG] [Thread-163257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:27.804 [DEBUG] [Thread-163257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:27.804 [DEBUG] [Thread-163257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:27.804 [DEBUG] [Thread-163257] [transport.py] [_log()] Compression: none
2025-09-29T17:59:27.804 [DEBUG] [Thread-163257] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:27.860 [DEBUG] [Thread-163257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:27.860 [DEBUG] [Thread-163257] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:27.861 [DEBUG] [Thread-163257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:59:27.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:59:27.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:27.916 [DEBUG] [Thread-163257] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:27.916 [DEBUG] [Thread-163257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:27.916 [DEBUG] [Thread-163257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:27.916 [DEBUG] [Thread-163257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:59:27.916 [DEBUG] [Thread-163257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:27.936 [INFO] [Thread-163257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:27.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:59:27.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:28.983 [DEBUG] [Thread-163257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:28.983 [DEBUG] [Thread-163257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:29.031 [DEBUG] [Thread-163257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:29.031 [DEBUG] [Thread-163257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:29.041 [DEBUG] [Thread-163257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:29.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:29.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:59:29.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:59:29.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:29.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:29.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:29.082 [DEBUG] [Thread-163257] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:33.395 [DEBUG] [Thread-163259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:59:34.132 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:59:34.133 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:59:39.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:59:39.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:59:39.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:59:39.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 59, 33), 13.1, 40.96, 0.0, 24.35, 13.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:59:39.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:59:33
2025-09-29T17:59:39.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:59:39.954 [DEBUG] [Thread-163260] [transport.py] [_log()] starting thread (client mode): 0x2b91fc40
2025-09-29T17:59:39.955 [DEBUG] [Thread-163260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:39.966 [DEBUG] [Thread-163260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:59:39.966 [INFO] [Thread-163260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:59:39.969 [DEBUG] [Thread-163260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] Compression: none
2025-09-29T17:59:39.970 [DEBUG] [Thread-163260] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:39.985 [DEBUG] [Thread-163260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:39.986 [DEBUG] [Thread-163260] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:39.986 [DEBUG] [Thread-163260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:59:39.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:59:39.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:39.987 [DEBUG] [Thread-163260] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:39.988 [DEBUG] [Thread-163260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:39.988 [DEBUG] [Thread-163260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:39.988 [DEBUG] [Thread-163260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:59:39.988 [DEBUG] [Thread-163260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:40.020 [INFO] [Thread-163260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:40.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:40.666 [DEBUG] [Thread-163260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:40.666 [DEBUG] [Thread-163260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:40.666 [DEBUG] [Thread-163260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:59:40.707 [DEBUG] [Thread-163260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:40.707 [DEBUG] [Thread-163260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:40.710 [DEBUG] [Thread-163260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:40.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:40.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:59:40.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:59:40.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:59:40.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:40.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:59:40.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:40.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:40.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:59:40.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.666037 -999.00  +13.30  17.68     47   +2.40 1 1 1 1 1   887    0 10.13 -40.01 ----- 17.7 17.7 163.4 23.9 16.1 -27.4 15.9 -26.2 16.9 -26.8 17.5 -27.5
2025-09-29T17:59:40.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:59:40.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:59:40.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.666037
2025-09-29T17:59:40.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:59:40.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:59:40.736 [DEBUG] [Thread-163260] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:40.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:59:40.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:59:40.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:59:40.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:59:33', tmtdew=13.1, humidity=40.96, cloud=0.0, wind=24.35, temperature=13.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:59:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:59:40.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:59:40.834 [DEBUG] [Thread-163263] [transport.py] [_log()] starting thread (client mode): 0x2b91d480
2025-09-29T17:59:40.834 [DEBUG] [Thread-163263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:40.850 [DEBUG] [Thread-163263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:59:40.851 [INFO] [Thread-163263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:59:40.858 [DEBUG] [Thread-163263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:40.858 [DEBUG] [Thread-163263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:40.859 [DEBUG] [Thread-163263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:40.860 [DEBUG] [Thread-163263] [transport.py] [_log()] Compression: none
2025-09-29T17:59:40.860 [DEBUG] [Thread-163263] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:40.915 [DEBUG] [Thread-163263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:40.916 [DEBUG] [Thread-163263] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:40.916 [DEBUG] [Thread-163263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:59:40.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:59:40.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:40.972 [DEBUG] [Thread-163263] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:40.972 [DEBUG] [Thread-163263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:40.972 [DEBUG] [Thread-163263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:40.972 [DEBUG] [Thread-163263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:59:40.972 [DEBUG] [Thread-163263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:40.992 [INFO] [Thread-163263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:40.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:59:40.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:42.041 [DEBUG] [Thread-163263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:42.041 [DEBUG] [Thread-163263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:42.089 [DEBUG] [Thread-163263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:42.089 [DEBUG] [Thread-163263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:42.098 [DEBUG] [Thread-163263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:42.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:42.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:59:42.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:59:42.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:42.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:42.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:42.133 [DEBUG] [Thread-163263] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:48.419 [DEBUG] [Thread-163265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:59:51.626 [DEBUG] [Thread-163266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T17:59:52.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T17:59:52.136 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T17:59:52.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T17:59:52.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 59, 33), 13.1, 40.96, 0.0, 24.35, 13.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T17:59:52.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:59:33
2025-09-29T17:59:52.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T17:59:52.986 [DEBUG] [Thread-163267] [transport.py] [_log()] starting thread (client mode): 0x2e3c1720
2025-09-29T17:59:52.986 [DEBUG] [Thread-163267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:53.006 [DEBUG] [Thread-163267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T17:59:53.007 [INFO] [Thread-163267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] Compression: none
2025-09-29T17:59:53.010 [DEBUG] [Thread-163267] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:53.027 [DEBUG] [Thread-163267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:53.027 [DEBUG] [Thread-163267] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:53.027 [DEBUG] [Thread-163267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T17:59:53.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T17:59:53.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:53.029 [DEBUG] [Thread-163267] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:53.029 [DEBUG] [Thread-163267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:53.029 [DEBUG] [Thread-163267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:53.029 [DEBUG] [Thread-163267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T17:59:53.029 [DEBUG] [Thread-163267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:53.062 [INFO] [Thread-163267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:53.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:53.738 [DEBUG] [Thread-163267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:53.738 [DEBUG] [Thread-163267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:53.738 [DEBUG] [Thread-163267] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T17:59:53.778 [DEBUG] [Thread-163267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:53.778 [DEBUG] [Thread-163267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:53.782 [DEBUG] [Thread-163267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:53.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:53.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T17:59:53.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T17:59:53.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T17:59:53.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:53.806 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T17:59:53.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:53.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T17:59:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.666384 -999.00  +13.30  15.72     47   +2.40 1 1 1 1 1   887    0 10.03 -41.41 ----- 15.7 15.7 167.0 21.7 16.1 -27.3 15.9 -26.1 16.9 -26.9 17.4 -28.1
2025-09-29T17:59:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T17:59:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T17:59:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.666384
2025-09-29T17:59:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T17:59:53.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T17:59:53.808 [DEBUG] [Thread-163267] [transport.py] [_log()] EOF in transport thread
2025-09-29T17:59:53.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T17:59:53.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T17:59:53.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T17:59:53.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:59:33', tmtdew=13.1, humidity=40.96, cloud=0.0, wind=24.35, temperature=13.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:59:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T17:59:53.893 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T17:59:53.902 [DEBUG] [Thread-163270] [transport.py] [_log()] starting thread (client mode): 0x2e3dd300
2025-09-29T17:59:53.902 [DEBUG] [Thread-163270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T17:59:53.916 [DEBUG] [Thread-163270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T17:59:53.917 [INFO] [Thread-163270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T17:59:53.924 [DEBUG] [Thread-163270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T17:59:53.924 [DEBUG] [Thread-163270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] client lang: <none>
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] server lang: <none>
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] kex follows: False
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] Compression: none
2025-09-29T17:59:53.925 [DEBUG] [Thread-163270] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T17:59:53.983 [DEBUG] [Thread-163270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T17:59:53.984 [DEBUG] [Thread-163270] [transport.py] [_log()] Switch to new keys ...
2025-09-29T17:59:53.984 [DEBUG] [Thread-163270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T17:59:53.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T17:59:53.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T17:59:54.043 [DEBUG] [Thread-163270] [transport.py] [_log()] userauth is OK
2025-09-29T17:59:54.044 [DEBUG] [Thread-163270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T17:59:54.044 [DEBUG] [Thread-163270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T17:59:54.044 [DEBUG] [Thread-163270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T17:59:54.044 [DEBUG] [Thread-163270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T17:59:54.063 [INFO] [Thread-163270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T17:59:54.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T17:59:54.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T17:59:55.031 [DEBUG] [Thread-163270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T17:59:55.031 [DEBUG] [Thread-163270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T17:59:55.079 [DEBUG] [Thread-163270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T17:59:55.079 [DEBUG] [Thread-163270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T17:59:55.088 [DEBUG] [Thread-163270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T17:59:55.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T17:59:55.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T17:59:55.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T17:59:55.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T17:59:55.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T17:59:55.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T17:59:55.122 [DEBUG] [Thread-163270] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:00:03.454 [DEBUG] [Thread-163272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:00:05.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:00:05.124 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:00:05.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:00:05.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 17, 59, 33), 13.1, 40.96, 0.0, 24.35, 13.68, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:00:05.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 17:59:33
2025-09-29T18:00:05.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:00:06.038 [DEBUG] [Thread-163273] [transport.py] [_log()] starting thread (client mode): 0x2b9cb880
2025-09-29T18:00:06.038 [DEBUG] [Thread-163273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:00:06.053 [DEBUG] [Thread-163273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:00:06.053 [INFO] [Thread-163273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:00:06.056 [DEBUG] [Thread-163273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] client lang: <none>
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] server lang: <none>
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] kex follows: False
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] Compression: none
2025-09-29T18:00:06.057 [DEBUG] [Thread-163273] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:00:06.072 [DEBUG] [Thread-163273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:00:06.073 [DEBUG] [Thread-163273] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:00:06.073 [DEBUG] [Thread-163273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:00:06.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:00:06.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:00:06.074 [DEBUG] [Thread-163273] [transport.py] [_log()] userauth is OK
2025-09-29T18:00:06.074 [DEBUG] [Thread-163273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:00:06.074 [DEBUG] [Thread-163273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:00:06.074 [DEBUG] [Thread-163273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:00:06.074 [DEBUG] [Thread-163273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:00:06.083 [INFO] [Thread-163273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:00:06.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:00:09.269 [DEBUG] [Thread-163273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:00:09.269 [DEBUG] [Thread-163273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:00:09.269 [DEBUG] [Thread-163273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:00:09.310 [DEBUG] [Thread-163273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:00:09.311 [DEBUG] [Thread-163273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:00:09.314 [DEBUG] [Thread-163273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:00:09.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:00:09.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:00:09.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:00:09.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:00:09.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:00:09.338 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:00:09.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:00:09.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:00:09.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:00:09.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.666384 -999.00  +13.30  15.72     47   +2.40 1 1 1 1 1   887    0 10.03 -41.41 ----- 15.7 15.7 167.0 21.7 16.1 -27.3 15.9 -26.1 16.9 -26.9 17.4 -28.1
2025-09-29T18:00:09.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:00:09.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:00:09.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.666384
2025-09-29T18:00:09.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:00:09.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:00:09.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:00:09.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:00:09.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:00:09.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T17:59:33', tmtdew=13.1, humidity=40.96, cloud=0.0, wind=24.35, temperature=13.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T15:59:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:00:09.341 [DEBUG] [Thread-163273] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:00:09.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:00:09.441 [DEBUG] [Thread-163276] [transport.py] [_log()] starting thread (client mode): 0x2b9ca080
2025-09-29T18:00:09.441 [DEBUG] [Thread-163276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:00:09.455 [DEBUG] [Thread-163276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:00:09.456 [INFO] [Thread-163276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:00:09.463 [DEBUG] [Thread-163276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:00:09.463 [DEBUG] [Thread-163276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:00:09.464 [DEBUG] [Thread-163276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:00:09.464 [DEBUG] [Thread-163276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:09.464 [DEBUG] [Thread-163276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:09.464 [DEBUG] [Thread-163276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:09.464 [DEBUG] [Thread-163276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:09.464 [DEBUG] [Thread-163276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:00:09.464 [DEBUG] [Thread-163276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:00:09.464 [DEBUG] [Thread-163276] [transport.py] [_log()] client lang: <none>
2025-09-29T18:00:09.465 [DEBUG] [Thread-163276] [transport.py] [_log()] server lang: <none>
2025-09-29T18:00:09.465 [DEBUG] [Thread-163276] [transport.py] [_log()] kex follows: False
2025-09-29T18:00:09.465 [DEBUG] [Thread-163276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:00:09.465 [DEBUG] [Thread-163276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:00:09.465 [DEBUG] [Thread-163276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:00:09.465 [DEBUG] [Thread-163276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:00:09.465 [DEBUG] [Thread-163276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:00:09.466 [DEBUG] [Thread-163276] [transport.py] [_log()] Compression: none
2025-09-29T18:00:09.466 [DEBUG] [Thread-163276] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:00:09.524 [DEBUG] [Thread-163276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:00:09.524 [DEBUG] [Thread-163276] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:00:09.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:00:09.525 [DEBUG] [Thread-163276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:00:09.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:00:09.582 [DEBUG] [Thread-163276] [transport.py] [_log()] userauth is OK
2025-09-29T18:00:09.582 [DEBUG] [Thread-163276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:00:09.582 [DEBUG] [Thread-163276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:00:09.582 [DEBUG] [Thread-163276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:00:09.582 [DEBUG] [Thread-163276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:00:09.606 [INFO] [Thread-163276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:00:09.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:00:09.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:00:10.650 [DEBUG] [Thread-163276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:00:10.650 [DEBUG] [Thread-163276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:00:10.699 [DEBUG] [Thread-163276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:00:10.699 [DEBUG] [Thread-163276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:00:10.708 [DEBUG] [Thread-163276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:00:10.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:00:10.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:00:10.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:00:10.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:00:10.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:00:10.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:00:10.740 [DEBUG] [Thread-163276] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:00:18.498 [DEBUG] [Thread-163278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:00:20.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:00:20.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:00:20.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:00:21.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 0, 4), 13.05, 41.09, 0.0, 22.04, 13.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:00:21.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:00:04
2025-09-29T18:00:21.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:00:21.591 [DEBUG] [Thread-163279] [transport.py] [_log()] starting thread (client mode): 0x2b91f100
2025-09-29T18:00:21.592 [DEBUG] [Thread-163279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:00:21.611 [DEBUG] [Thread-163279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:00:21.611 [INFO] [Thread-163279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] client lang: <none>
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] server lang: <none>
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] kex follows: False
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:00:21.614 [DEBUG] [Thread-163279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:00:21.615 [DEBUG] [Thread-163279] [transport.py] [_log()] Compression: none
2025-09-29T18:00:21.615 [DEBUG] [Thread-163279] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:00:21.629 [DEBUG] [Thread-163279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:00:21.630 [DEBUG] [Thread-163279] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:00:21.630 [DEBUG] [Thread-163279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:00:21.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:00:21.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:00:21.632 [DEBUG] [Thread-163279] [transport.py] [_log()] userauth is OK
2025-09-29T18:00:21.632 [DEBUG] [Thread-163279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:00:21.632 [DEBUG] [Thread-163279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:00:21.633 [DEBUG] [Thread-163279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:00:21.633 [DEBUG] [Thread-163279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:00:21.670 [INFO] [Thread-163279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:00:21.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:00:22.328 [DEBUG] [Thread-163279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:00:22.328 [DEBUG] [Thread-163279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:00:22.328 [DEBUG] [Thread-163279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:00:22.369 [DEBUG] [Thread-163279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:00:22.370 [DEBUG] [Thread-163279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:00:22.372 [DEBUG] [Thread-163279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:00:22.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:00:22.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:00:22.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:00:22.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:00:22.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:00:22.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:00:22.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:00:22.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:00:22.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:00:22.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.666731 -999.00  +13.20  16.96     47   +2.30 1 1 1 1 1   887    0 10.04 -44.81 ----- 17.0 17.0 162.4 24.7 16.1 -27.5 15.9 -26.5 16.8 -26.6 17.4 -28.4
2025-09-29T18:00:22.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:00:22.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:00:22.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.666731
2025-09-29T18:00:22.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:00:22.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:00:22.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:00:22.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:00:22.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:00:22.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:00:04', tmtdew=13.05, humidity=41.09, cloud=0.0, wind=22.04, temperature=13.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:00:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:00:22.399 [DEBUG] [Thread-163279] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:00:22.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:00:22.486 [DEBUG] [Thread-163282] [transport.py] [_log()] starting thread (client mode): 0x2e3c0df0
2025-09-29T18:00:22.486 [DEBUG] [Thread-163282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:00:22.506 [DEBUG] [Thread-163282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:00:22.506 [INFO] [Thread-163282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:00:22.514 [DEBUG] [Thread-163282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:00:22.514 [DEBUG] [Thread-163282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:00:22.514 [DEBUG] [Thread-163282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:00:22.514 [DEBUG] [Thread-163282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:22.514 [DEBUG] [Thread-163282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:22.514 [DEBUG] [Thread-163282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:22.514 [DEBUG] [Thread-163282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:22.515 [DEBUG] [Thread-163282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:00:22.515 [DEBUG] [Thread-163282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:00:22.515 [DEBUG] [Thread-163282] [transport.py] [_log()] client lang: <none>
2025-09-29T18:00:22.515 [DEBUG] [Thread-163282] [transport.py] [_log()] server lang: <none>
2025-09-29T18:00:22.515 [DEBUG] [Thread-163282] [transport.py] [_log()] kex follows: False
2025-09-29T18:00:22.515 [DEBUG] [Thread-163282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:00:22.515 [DEBUG] [Thread-163282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:00:22.515 [DEBUG] [Thread-163282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:00:22.516 [DEBUG] [Thread-163282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:00:22.516 [DEBUG] [Thread-163282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:00:22.516 [DEBUG] [Thread-163282] [transport.py] [_log()] Compression: none
2025-09-29T18:00:22.516 [DEBUG] [Thread-163282] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:00:22.570 [DEBUG] [Thread-163282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:00:22.570 [DEBUG] [Thread-163282] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:00:22.571 [DEBUG] [Thread-163282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:00:22.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:00:22.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:00:22.628 [DEBUG] [Thread-163282] [transport.py] [_log()] userauth is OK
2025-09-29T18:00:22.628 [DEBUG] [Thread-163282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:00:22.628 [DEBUG] [Thread-163282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:00:22.629 [DEBUG] [Thread-163282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:00:22.629 [DEBUG] [Thread-163282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:00:22.649 [INFO] [Thread-163282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:00:22.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:00:22.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:00:23.634 [DEBUG] [Thread-163282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:00:23.634 [DEBUG] [Thread-163282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:00:23.682 [DEBUG] [Thread-163282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:00:23.682 [DEBUG] [Thread-163282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:00:23.690 [DEBUG] [Thread-163282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:00:23.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:00:23.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:00:23.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:00:23.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:00:23.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:00:23.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:00:23.721 [DEBUG] [Thread-163282] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:00:33.526 [DEBUG] [Thread-163284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:00:33.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:00:33.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:00:33.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:00:34.272 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:00:34.273 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:00:34.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 0, 4), 13.05, 41.09, 0.0, 22.04, 13.61, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:00:34.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:00:04
2025-09-29T18:00:34.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:00:34.572 [DEBUG] [Thread-163285] [transport.py] [_log()] starting thread (client mode): 0x2b91e770
2025-09-29T18:00:34.572 [DEBUG] [Thread-163285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:00:34.597 [DEBUG] [Thread-163285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:00:34.597 [INFO] [Thread-163285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] client lang: <none>
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] server lang: <none>
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] kex follows: False
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:00:34.601 [DEBUG] [Thread-163285] [transport.py] [_log()] Compression: none
2025-09-29T18:00:34.602 [DEBUG] [Thread-163285] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:00:34.617 [DEBUG] [Thread-163285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:00:34.617 [DEBUG] [Thread-163285] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:00:34.617 [DEBUG] [Thread-163285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:00:34.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:00:34.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:00:34.627 [DEBUG] [Thread-163285] [transport.py] [_log()] userauth is OK
2025-09-29T18:00:34.627 [DEBUG] [Thread-163285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:00:34.627 [DEBUG] [Thread-163285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:00:34.627 [DEBUG] [Thread-163285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:00:34.627 [DEBUG] [Thread-163285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:00:34.642 [INFO] [Thread-163285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:00:34.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:00:35.316 [DEBUG] [Thread-163285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:00:35.316 [DEBUG] [Thread-163285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:00:35.317 [DEBUG] [Thread-163285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:00:35.357 [DEBUG] [Thread-163285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:00:35.358 [DEBUG] [Thread-163285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:00:35.361 [DEBUG] [Thread-163285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:00:35.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:00:35.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:00:35.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:00:35.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:00:35.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:00:35.383 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:00:35.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:00:35.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:00:35.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:00:35.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.666731 -999.00  +13.20  16.96     47   +2.30 1 1 1 1 1   887    0 10.04 -44.81 ----- 17.0 17.0 162.4 24.7 16.1 -27.5 15.9 -26.5 16.8 -26.6 17.4 -28.4
2025-09-29T18:00:35.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:00:35.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:00:35.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.666731
2025-09-29T18:00:35.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:00:35.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:00:35.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:00:35.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:00:35.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:00:35.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:00:04', tmtdew=13.05, humidity=41.09, cloud=0.0, wind=22.04, temperature=13.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:00:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:00:35.385 [DEBUG] [Thread-163285] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:00:35.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:00:35.486 [DEBUG] [Thread-163288] [transport.py] [_log()] starting thread (client mode): 0x2e34baf0
2025-09-29T18:00:35.486 [DEBUG] [Thread-163288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:00:35.502 [DEBUG] [Thread-163288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:00:35.502 [INFO] [Thread-163288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:00:35.510 [DEBUG] [Thread-163288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:00:35.510 [DEBUG] [Thread-163288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:00:35.510 [DEBUG] [Thread-163288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:00:35.510 [DEBUG] [Thread-163288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:35.510 [DEBUG] [Thread-163288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:35.510 [DEBUG] [Thread-163288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:35.510 [DEBUG] [Thread-163288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:35.511 [DEBUG] [Thread-163288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:00:35.511 [DEBUG] [Thread-163288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:00:35.511 [DEBUG] [Thread-163288] [transport.py] [_log()] client lang: <none>
2025-09-29T18:00:35.511 [DEBUG] [Thread-163288] [transport.py] [_log()] server lang: <none>
2025-09-29T18:00:35.511 [DEBUG] [Thread-163288] [transport.py] [_log()] kex follows: False
2025-09-29T18:00:35.511 [DEBUG] [Thread-163288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:00:35.511 [DEBUG] [Thread-163288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:00:35.511 [DEBUG] [Thread-163288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:00:35.512 [DEBUG] [Thread-163288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:00:35.512 [DEBUG] [Thread-163288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:00:35.512 [DEBUG] [Thread-163288] [transport.py] [_log()] Compression: none
2025-09-29T18:00:35.512 [DEBUG] [Thread-163288] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:00:35.571 [DEBUG] [Thread-163288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:00:35.571 [DEBUG] [Thread-163288] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:00:35.572 [DEBUG] [Thread-163288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:00:35.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:00:35.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:00:35.631 [DEBUG] [Thread-163288] [transport.py] [_log()] userauth is OK
2025-09-29T18:00:35.631 [DEBUG] [Thread-163288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:00:35.631 [DEBUG] [Thread-163288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:00:35.632 [DEBUG] [Thread-163288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:00:35.632 [DEBUG] [Thread-163288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:00:35.651 [INFO] [Thread-163288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:00:35.651 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:00:35.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:00:36.634 [DEBUG] [Thread-163288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:00:36.634 [DEBUG] [Thread-163288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:00:36.682 [DEBUG] [Thread-163288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:00:36.682 [DEBUG] [Thread-163288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:00:36.691 [DEBUG] [Thread-163288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:00:36.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:00:36.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:00:36.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:00:36.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:00:36.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:00:36.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:00:36.725 [DEBUG] [Thread-163288] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:00:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:00:46.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:00:46.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:00:47.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 0, 36), 12.99, 41.13, 0.0, 21.26, 13.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:00:47.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:00:36
2025-09-29T18:00:47.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:00:47.583 [DEBUG] [Thread-163290] [transport.py] [_log()] starting thread (client mode): 0x2e3dd300
2025-09-29T18:00:47.583 [DEBUG] [Thread-163290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:00:47.604 [DEBUG] [Thread-163290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:00:47.604 [INFO] [Thread-163290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:00:47.607 [DEBUG] [Thread-163290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] client lang: <none>
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] server lang: <none>
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] kex follows: False
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] Compression: none
2025-09-29T18:00:47.608 [DEBUG] [Thread-163290] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:00:47.625 [DEBUG] [Thread-163290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:00:47.625 [DEBUG] [Thread-163290] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:00:47.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:00:47.626 [DEBUG] [Thread-163290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:00:47.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:00:47.628 [DEBUG] [Thread-163290] [transport.py] [_log()] userauth is OK
2025-09-29T18:00:47.628 [DEBUG] [Thread-163290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:00:47.629 [DEBUG] [Thread-163290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:00:47.629 [DEBUG] [Thread-163290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:00:47.629 [DEBUG] [Thread-163290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:00:47.652 [INFO] [Thread-163290] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:00:47.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:00:48.286 [DEBUG] [Thread-163290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:00:48.286 [DEBUG] [Thread-163290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:00:48.287 [DEBUG] [Thread-163290] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:00:48.327 [DEBUG] [Thread-163290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:00:48.328 [DEBUG] [Thread-163290] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:00:48.331 [DEBUG] [Thread-163290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:00:48.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:00:48.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:00:48.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:00:48.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:00:48.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:00:48.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:00:48.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:00:48.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:00:48.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:00:48.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.666731 -999.00  +13.20  16.96     47   +2.30 1 1 1 1 1   887    0 10.04 -44.81 ----- 17.0 17.0 162.4 24.7 16.1 -27.5 15.9 -26.5 16.8 -26.6 17.4 -28.4
2025-09-29T18:00:48.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:00:48.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:00:48.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.666731
2025-09-29T18:00:48.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:00:48.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:00:48.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:00:48.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:00:48.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:00:48.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:00:36', tmtdew=12.99, humidity=41.13, cloud=0.0, wind=21.26, temperature=13.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:00:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:00:48.358 [DEBUG] [Thread-163290] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:00:48.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:00:48.570 [DEBUG] [Thread-163293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:00:51.655 [DEBUG] [Thread-163294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:01:03.606 [DEBUG] [Thread-163295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:01:18.635 [DEBUG] [Thread-163296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:01:33.666 [DEBUG] [Thread-163297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:01:34.412 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:01:34.413 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:01:48.694 [DEBUG] [Thread-163298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:01:51.689 [DEBUG] [Thread-163299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:02:03.726 [DEBUG] [Thread-163300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:02:18.752 [DEBUG] [Thread-163301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:02:33.775 [DEBUG] [Thread-163302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:02:34.552 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:02:34.553 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:02:48.810 [DEBUG] [Thread-163303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:02:51.724 [DEBUG] [Thread-163304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:03:01.435 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T18:03:03.837 [DEBUG] [Thread-163305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:03:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:03:11.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:03:11.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:03:12.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 2, 44), 12.96, 41.18, 0.0, 20.27, 13.51, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:03:12.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:02:44
2025-09-29T18:03:12.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:03:12.317 [DEBUG] [Thread-163306] [transport.py] [_log()] starting thread (client mode): 0x2e3df220
2025-09-29T18:03:12.317 [DEBUG] [Thread-163306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:03:12.337 [DEBUG] [Thread-163306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:03:12.337 [INFO] [Thread-163306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] client lang: <none>
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] server lang: <none>
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] kex follows: False
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] Compression: none
2025-09-29T18:03:12.339 [DEBUG] [Thread-163306] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:03:12.347 [DEBUG] [Thread-163306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:03:12.347 [DEBUG] [Thread-163306] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:03:12.348 [DEBUG] [Thread-163306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:03:12.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:03:12.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:03:12.349 [DEBUG] [Thread-163306] [transport.py] [_log()] userauth is OK
2025-09-29T18:03:12.349 [DEBUG] [Thread-163306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:03:12.349 [DEBUG] [Thread-163306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:03:12.350 [DEBUG] [Thread-163306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:03:12.350 [DEBUG] [Thread-163306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:03:12.372 [INFO] [Thread-163306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:03:12.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:03:13.002 [DEBUG] [Thread-163306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:03:13.003 [DEBUG] [Thread-163306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:03:13.003 [DEBUG] [Thread-163306] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:03:13.043 [DEBUG] [Thread-163306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:03:13.043 [DEBUG] [Thread-163306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:03:13.046 [DEBUG] [Thread-163306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:03:13.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:03:13.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:03:13.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:03:13.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:03:13.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:03:13.071 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:03:13.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:03:13.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:03:13.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:03:13.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.668467 -999.00  +13.20  13.97     47   +2.30 1 1 1 1 1   887    0 9.72 -55.88 ----- 14.0 14.0 150.2 23.4 15.9 -27.0 15.7 -25.9 16.6 -26.4 17.2 -27.3
2025-09-29T18:03:13.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:03:13.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:03:13.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.668467
2025-09-29T18:03:13.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:03:13.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:03:13.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:03:13.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:03:13.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:03:13.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:02:44', tmtdew=12.96, humidity=41.18, cloud=0.0, wind=20.27, temperature=13.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:02:35.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:03:13.073 [DEBUG] [Thread-163306] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:03:13.158 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:03:13.170 [DEBUG] [Thread-163309] [transport.py] [_log()] starting thread (client mode): 0x2e3f8910
2025-09-29T18:03:13.170 [DEBUG] [Thread-163309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:03:13.186 [DEBUG] [Thread-163309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:03:13.186 [INFO] [Thread-163309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:03:13.193 [DEBUG] [Thread-163309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] client lang: <none>
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] server lang: <none>
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] kex follows: False
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:03:13.194 [DEBUG] [Thread-163309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:03:13.195 [DEBUG] [Thread-163309] [transport.py] [_log()] Compression: none
2025-09-29T18:03:13.195 [DEBUG] [Thread-163309] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:03:13.252 [DEBUG] [Thread-163309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:03:13.252 [DEBUG] [Thread-163309] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:03:13.252 [DEBUG] [Thread-163309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:03:13.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:03:13.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:03:13.309 [DEBUG] [Thread-163309] [transport.py] [_log()] userauth is OK
2025-09-29T18:03:13.309 [DEBUG] [Thread-163309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:03:13.309 [DEBUG] [Thread-163309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:03:13.309 [DEBUG] [Thread-163309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:03:13.309 [DEBUG] [Thread-163309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:03:13.324 [INFO] [Thread-163309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:03:13.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:03:13.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:03:14.429 [DEBUG] [Thread-163309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:03:14.430 [DEBUG] [Thread-163309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:03:14.477 [DEBUG] [Thread-163309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:03:14.477 [DEBUG] [Thread-163309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:03:14.486 [DEBUG] [Thread-163309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:03:14.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:03:14.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:03:14.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:03:14.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:03:14.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:03:14.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:03:14.521 [DEBUG] [Thread-163309] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:03:18.864 [DEBUG] [Thread-163311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:03:24.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:03:24.524 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:03:24.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:03:25.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 3, 16), 12.94, 41.24, 0.0, 18.91, 13.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:03:25.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:03:16
2025-09-29T18:03:25.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:03:25.384 [DEBUG] [Thread-163312] [transport.py] [_log()] starting thread (client mode): 0x2b91d480
2025-09-29T18:03:25.385 [DEBUG] [Thread-163312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:03:25.405 [DEBUG] [Thread-163312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:03:25.405 [INFO] [Thread-163312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:03:25.408 [DEBUG] [Thread-163312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] client lang: <none>
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] server lang: <none>
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] kex follows: False
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:03:25.409 [DEBUG] [Thread-163312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:03:25.410 [DEBUG] [Thread-163312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:03:25.410 [DEBUG] [Thread-163312] [transport.py] [_log()] Compression: none
2025-09-29T18:03:25.410 [DEBUG] [Thread-163312] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:03:25.428 [DEBUG] [Thread-163312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:03:25.428 [DEBUG] [Thread-163312] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:03:25.429 [DEBUG] [Thread-163312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:03:25.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:03:25.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:03:25.432 [DEBUG] [Thread-163312] [transport.py] [_log()] userauth is OK
2025-09-29T18:03:25.432 [DEBUG] [Thread-163312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:03:25.432 [DEBUG] [Thread-163312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:03:25.433 [DEBUG] [Thread-163312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:03:25.433 [DEBUG] [Thread-163312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:03:25.453 [INFO] [Thread-163312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:03:25.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:03:26.085 [DEBUG] [Thread-163312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:03:26.085 [DEBUG] [Thread-163312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:03:26.086 [DEBUG] [Thread-163312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:03:26.126 [DEBUG] [Thread-163312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:03:26.126 [DEBUG] [Thread-163312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:03:26.129 [DEBUG] [Thread-163312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:03:26.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:03:26.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:03:26.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:03:26.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:03:26.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:03:26.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:03:26.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:03:26.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:03:26.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:03:26.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.668467 -999.00  +13.20  13.97     47   +2.30 1 1 1 1 1   887    0 9.72 -55.88 ----- 14.0 14.0 150.2 23.4 15.9 -27.0 15.7 -25.9 16.6 -26.4 17.2 -27.3
2025-09-29T18:03:26.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:03:26.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:03:26.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.668467
2025-09-29T18:03:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:03:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:03:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:03:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:03:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:03:26.152 [DEBUG] [Thread-163312] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:03:26.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:03:16', tmtdew=12.94, humidity=41.24, cloud=0.0, wind=18.91, temperature=13.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:02:35.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:03:26.237 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:03:26.247 [DEBUG] [Thread-163315] [transport.py] [_log()] starting thread (client mode): 0x2b96aef0
2025-09-29T18:03:26.247 [DEBUG] [Thread-163315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:03:26.262 [DEBUG] [Thread-163315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:03:26.262 [INFO] [Thread-163315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:03:26.269 [DEBUG] [Thread-163315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:03:26.270 [DEBUG] [Thread-163315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:03:26.270 [DEBUG] [Thread-163315] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:03:26.270 [DEBUG] [Thread-163315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:26.270 [DEBUG] [Thread-163315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:26.270 [DEBUG] [Thread-163315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:26.270 [DEBUG] [Thread-163315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:26.270 [DEBUG] [Thread-163315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] client lang: <none>
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] server lang: <none>
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] kex follows: False
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] Compression: none
2025-09-29T18:03:26.271 [DEBUG] [Thread-163315] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:03:26.330 [DEBUG] [Thread-163315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:03:26.330 [DEBUG] [Thread-163315] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:03:26.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:03:26.331 [DEBUG] [Thread-163315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:03:26.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:03:26.390 [DEBUG] [Thread-163315] [transport.py] [_log()] userauth is OK
2025-09-29T18:03:26.390 [DEBUG] [Thread-163315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:03:26.390 [DEBUG] [Thread-163315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:03:26.390 [DEBUG] [Thread-163315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:03:26.390 [DEBUG] [Thread-163315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:03:26.409 [INFO] [Thread-163315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:03:26.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:03:26.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:03:27.446 [DEBUG] [Thread-163315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:03:27.446 [DEBUG] [Thread-163315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:03:27.494 [DEBUG] [Thread-163315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:03:27.494 [DEBUG] [Thread-163315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:03:27.503 [DEBUG] [Thread-163315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:03:27.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:03:27.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:03:27.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:03:27.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:03:27.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:03:27.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:03:27.536 [DEBUG] [Thread-163315] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:03:33.913 [DEBUG] [Thread-163317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:03:34.691 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:03:34.692 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:03:37.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:03:37.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:03:37.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:03:38.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 3, 16), 12.94, 41.24, 0.0, 18.91, 13.53, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:03:38.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:03:16
2025-09-29T18:03:38.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:03:38.452 [DEBUG] [Thread-163318] [transport.py] [_log()] starting thread (client mode): 0x2e3dd7b0
2025-09-29T18:03:38.452 [DEBUG] [Thread-163318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:03:38.468 [DEBUG] [Thread-163318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:03:38.468 [INFO] [Thread-163318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:03:38.471 [DEBUG] [Thread-163318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] client lang: <none>
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] server lang: <none>
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] kex follows: False
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] Compression: none
2025-09-29T18:03:38.472 [DEBUG] [Thread-163318] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:03:38.486 [DEBUG] [Thread-163318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:03:38.486 [DEBUG] [Thread-163318] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:03:38.486 [DEBUG] [Thread-163318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:03:38.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:03:38.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:03:38.487 [DEBUG] [Thread-163318] [transport.py] [_log()] userauth is OK
2025-09-29T18:03:38.487 [DEBUG] [Thread-163318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:03:38.487 [DEBUG] [Thread-163318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:03:38.487 [DEBUG] [Thread-163318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:03:38.487 [DEBUG] [Thread-163318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:03:38.497 [INFO] [Thread-163318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:03:38.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:03:39.057 [DEBUG] [Thread-163318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:03:39.057 [DEBUG] [Thread-163318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:03:39.057 [DEBUG] [Thread-163318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:03:39.098 [DEBUG] [Thread-163318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:03:39.098 [DEBUG] [Thread-163318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:03:39.100 [DEBUG] [Thread-163318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:03:39.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:03:39.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:03:39.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:03:39.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:03:39.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:03:39.112 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:03:39.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.668815 -999.00  +13.30  14.78     47   +2.30 1 1 1 1 1   887    0 9.65 -55.98 ----- 14.8 14.8 148.1 21.5 15.9 -27.0 15.7 -25.9 16.6 -26.6 17.1 -27.4
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.668815
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:03:39.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:03:39.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:03:16', tmtdew=12.94, humidity=41.24, cloud=0.0, wind=18.91, temperature=13.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:03:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:03:39.114 [DEBUG] [Thread-163318] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:03:39.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:03:39.197 [DEBUG] [Thread-163321] [transport.py] [_log()] starting thread (client mode): 0x2e349e40
2025-09-29T18:03:39.197 [DEBUG] [Thread-163321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:03:39.212 [DEBUG] [Thread-163321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:03:39.212 [INFO] [Thread-163321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:03:39.220 [DEBUG] [Thread-163321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:03:39.220 [DEBUG] [Thread-163321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:03:39.220 [DEBUG] [Thread-163321] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:03:39.220 [DEBUG] [Thread-163321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:39.220 [DEBUG] [Thread-163321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] client lang: <none>
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] server lang: <none>
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] kex follows: False
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:03:39.221 [DEBUG] [Thread-163321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:03:39.222 [DEBUG] [Thread-163321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:03:39.222 [DEBUG] [Thread-163321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:03:39.222 [DEBUG] [Thread-163321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:03:39.222 [DEBUG] [Thread-163321] [transport.py] [_log()] Compression: none
2025-09-29T18:03:39.222 [DEBUG] [Thread-163321] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:03:39.280 [DEBUG] [Thread-163321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:03:39.281 [DEBUG] [Thread-163321] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:03:39.281 [DEBUG] [Thread-163321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:03:39.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:03:39.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:03:39.337 [DEBUG] [Thread-163321] [transport.py] [_log()] userauth is OK
2025-09-29T18:03:39.338 [DEBUG] [Thread-163321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:03:39.338 [DEBUG] [Thread-163321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:03:39.338 [DEBUG] [Thread-163321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:03:39.338 [DEBUG] [Thread-163321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:03:39.356 [INFO] [Thread-163321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:03:39.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:03:39.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:03:40.349 [DEBUG] [Thread-163321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:03:40.350 [DEBUG] [Thread-163321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:03:40.397 [DEBUG] [Thread-163321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:03:40.397 [DEBUG] [Thread-163321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:03:40.407 [DEBUG] [Thread-163321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:03:40.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:03:40.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:03:40.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:03:40.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:03:40.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:03:40.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:03:40.442 [DEBUG] [Thread-163321] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:03:48.944 [DEBUG] [Thread-163323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:03:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:03:50.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:03:50.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:03:51.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 3, 48), 13.05, 40.72, 0.0, 17.75, 13.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:03:51.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:03:48
2025-09-29T18:03:51.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:03:51.321 [DEBUG] [Thread-163324] [transport.py] [_log()] starting thread (client mode): 0x2b96a530
2025-09-29T18:03:51.321 [DEBUG] [Thread-163324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:03:51.342 [DEBUG] [Thread-163324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:03:51.342 [INFO] [Thread-163324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:03:51.345 [DEBUG] [Thread-163324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:03:51.345 [DEBUG] [Thread-163324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:03:51.345 [DEBUG] [Thread-163324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:03:51.345 [DEBUG] [Thread-163324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] client lang: <none>
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] server lang: <none>
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] kex follows: False
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] Compression: none
2025-09-29T18:03:51.346 [DEBUG] [Thread-163324] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:03:51.363 [DEBUG] [Thread-163324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:03:51.364 [DEBUG] [Thread-163324] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:03:51.364 [DEBUG] [Thread-163324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:03:51.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:03:51.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:03:51.366 [DEBUG] [Thread-163324] [transport.py] [_log()] userauth is OK
2025-09-29T18:03:51.367 [DEBUG] [Thread-163324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:03:51.367 [DEBUG] [Thread-163324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:03:51.367 [DEBUG] [Thread-163324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:03:51.367 [DEBUG] [Thread-163324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:03:51.390 [INFO] [Thread-163324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:03:51.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:03:51.757 [DEBUG] [Thread-163326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:03:52.027 [DEBUG] [Thread-163324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:03:52.027 [DEBUG] [Thread-163324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:03:52.027 [DEBUG] [Thread-163324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:03:52.068 [DEBUG] [Thread-163324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:03:52.069 [DEBUG] [Thread-163324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:03:52.072 [DEBUG] [Thread-163324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:03:52.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:03:52.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:03:52.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:03:52.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:03:52.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:03:52.095 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:03:52.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:03:52.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:03:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:03:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.668815 -999.00  +13.30  14.78     47   +2.30 1 1 1 1 1   887    0 9.65 -55.98 ----- 14.8 14.8 148.1 21.5 15.9 -27.0 15.7 -25.9 16.6 -26.6 17.1 -27.4
2025-09-29T18:03:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:03:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:03:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.668815
2025-09-29T18:03:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:03:52.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:03:52.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:03:52.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:03:52.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:03:52.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:03:48', tmtdew=13.05, humidity=40.72, cloud=0.0, wind=17.75, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:03:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:03:52.098 [DEBUG] [Thread-163324] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:03:52.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:03:52.186 [DEBUG] [Thread-163328] [transport.py] [_log()] starting thread (client mode): 0x2e3c3430
2025-09-29T18:03:52.186 [DEBUG] [Thread-163328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:03:52.201 [DEBUG] [Thread-163328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:03:52.201 [INFO] [Thread-163328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:03:52.208 [DEBUG] [Thread-163328] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:03:52.208 [DEBUG] [Thread-163328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:03:52.208 [DEBUG] [Thread-163328] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:03:52.208 [DEBUG] [Thread-163328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] client lang: <none>
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] server lang: <none>
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] kex follows: False
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] Compression: none
2025-09-29T18:03:52.209 [DEBUG] [Thread-163328] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:03:52.265 [DEBUG] [Thread-163328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:03:52.265 [DEBUG] [Thread-163328] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:03:52.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:03:52.266 [DEBUG] [Thread-163328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:03:52.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:03:52.321 [DEBUG] [Thread-163328] [transport.py] [_log()] userauth is OK
2025-09-29T18:03:52.322 [DEBUG] [Thread-163328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:03:52.322 [DEBUG] [Thread-163328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:03:52.322 [DEBUG] [Thread-163328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:03:52.322 [DEBUG] [Thread-163328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:03:52.341 [INFO] [Thread-163328] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:03:52.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:03:52.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:03:53.339 [DEBUG] [Thread-163328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:03:53.340 [DEBUG] [Thread-163328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:03:53.388 [DEBUG] [Thread-163328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:03:53.388 [DEBUG] [Thread-163328] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:03:53.397 [DEBUG] [Thread-163328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:03:53.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:03:53.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:03:53.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:03:53.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:03:53.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:03:53.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:03:53.432 [DEBUG] [Thread-163328] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:04:03.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:04:03.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:04:03.982 [DEBUG] [Thread-163330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:04:04.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 3, 48), 13.05, 40.72, 0.0, 17.75, 13.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:04:04.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:03:48
2025-09-29T18:04:04.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:04:04.301 [DEBUG] [Thread-163331] [transport.py] [_log()] starting thread (client mode): 0x2e3c2b30
2025-09-29T18:04:04.301 [DEBUG] [Thread-163331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:04.320 [DEBUG] [Thread-163331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:04:04.320 [INFO] [Thread-163331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:04:04.323 [DEBUG] [Thread-163331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:04.323 [DEBUG] [Thread-163331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:04:04.323 [DEBUG] [Thread-163331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:04.323 [DEBUG] [Thread-163331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:04.324 [DEBUG] [Thread-163331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:04.325 [DEBUG] [Thread-163331] [transport.py] [_log()] Compression: none
2025-09-29T18:04:04.325 [DEBUG] [Thread-163331] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:04.344 [DEBUG] [Thread-163331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:04.345 [DEBUG] [Thread-163331] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:04.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:04:04.347 [DEBUG] [Thread-163331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:04:04.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:04.349 [DEBUG] [Thread-163331] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:04.349 [DEBUG] [Thread-163331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:04.349 [DEBUG] [Thread-163331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:04.350 [DEBUG] [Thread-163331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:04:04.350 [DEBUG] [Thread-163331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:04.374 [INFO] [Thread-163331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:04.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:05.011 [DEBUG] [Thread-163331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:05.011 [DEBUG] [Thread-163331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:05.011 [DEBUG] [Thread-163331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:04:05.052 [DEBUG] [Thread-163331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:05.052 [DEBUG] [Thread-163331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:05.065 [DEBUG] [Thread-163331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:05.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:05.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:04:05.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:04:05.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:04:05.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:05.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:04:05.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:05.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:04:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.668815 -999.00  +13.30  14.78     47   +2.30 1 1 1 1 1   887    0 9.65 -55.98 ----- 14.8 14.8 148.1 21.5 15.9 -27.0 15.7 -25.9 16.6 -26.6 17.1 -27.4
2025-09-29T18:04:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:04:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:04:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.668815
2025-09-29T18:04:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:04:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:04:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:04:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:04:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:04:05.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:03:48', tmtdew=13.05, humidity=40.72, cloud=0.0, wind=17.75, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:03:05.616', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:04:05.091 [DEBUG] [Thread-163331] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:05.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:04:05.188 [DEBUG] [Thread-163334] [transport.py] [_log()] starting thread (client mode): 0x2b969840
2025-09-29T18:04:05.188 [DEBUG] [Thread-163334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:05.203 [DEBUG] [Thread-163334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:04:05.203 [INFO] [Thread-163334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:04:05.210 [DEBUG] [Thread-163334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:05.210 [DEBUG] [Thread-163334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:04:05.210 [DEBUG] [Thread-163334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:05.210 [DEBUG] [Thread-163334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:05.210 [DEBUG] [Thread-163334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] Compression: none
2025-09-29T18:04:05.211 [DEBUG] [Thread-163334] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:05.269 [DEBUG] [Thread-163334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:05.269 [DEBUG] [Thread-163334] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:05.270 [DEBUG] [Thread-163334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:04:05.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:04:05.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:05.325 [DEBUG] [Thread-163334] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:05.325 [DEBUG] [Thread-163334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:05.326 [DEBUG] [Thread-163334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:05.326 [DEBUG] [Thread-163334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:04:05.326 [DEBUG] [Thread-163334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:05.345 [INFO] [Thread-163334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:05.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:04:05.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:06.396 [DEBUG] [Thread-163334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:06.396 [DEBUG] [Thread-163334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:06.444 [DEBUG] [Thread-163334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:06.444 [DEBUG] [Thread-163334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:06.454 [DEBUG] [Thread-163334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:06.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:06.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:04:06.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:04:06.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:06.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:06.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:06.491 [DEBUG] [Thread-163334] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:16.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:04:16.492 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:04:16.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:04:17.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 3, 48), 13.05, 40.72, 0.0, 17.75, 13.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:04:17.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:03:48
2025-09-29T18:04:17.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:04:17.361 [DEBUG] [Thread-163336] [transport.py] [_log()] starting thread (client mode): 0x2b920eb0
2025-09-29T18:04:17.361 [DEBUG] [Thread-163336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:17.382 [DEBUG] [Thread-163336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:04:17.382 [INFO] [Thread-163336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] Compression: none
2025-09-29T18:04:17.385 [DEBUG] [Thread-163336] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:17.401 [DEBUG] [Thread-163336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:17.401 [DEBUG] [Thread-163336] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:17.402 [DEBUG] [Thread-163336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:04:17.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:04:17.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:17.403 [DEBUG] [Thread-163336] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:17.403 [DEBUG] [Thread-163336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:17.403 [DEBUG] [Thread-163336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:17.403 [DEBUG] [Thread-163336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:04:17.403 [DEBUG] [Thread-163336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:17.431 [INFO] [Thread-163336] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:17.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:18.111 [DEBUG] [Thread-163336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:18.111 [DEBUG] [Thread-163336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:18.112 [DEBUG] [Thread-163336] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:04:18.152 [DEBUG] [Thread-163336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:18.152 [DEBUG] [Thread-163336] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:18.155 [DEBUG] [Thread-163336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:18.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:18.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:04:18.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:04:18.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:04:18.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:18.178 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:04:18.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:18.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:18.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:04:18.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.669509 -999.00  +13.30  15.37     47   +2.30 1 1 1 1 1   887    0 9.92 -52.23 ----- 15.4 15.4 154.6 21.5 15.8 -26.8 15.7 -25.9 16.6 -26.3 17.1 -28.0
2025-09-29T18:04:18.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:04:18.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:04:18.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.669509
2025-09-29T18:04:18.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:04:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:04:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:04:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:04:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:04:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:03:48', tmtdew=13.05, humidity=40.72, cloud=0.0, wind=17.75, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:04:05.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:04:18.180 [DEBUG] [Thread-163336] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:18.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:04:18.276 [DEBUG] [Thread-163339] [transport.py] [_log()] starting thread (client mode): 0x2b94d900
2025-09-29T18:04:18.276 [DEBUG] [Thread-163339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:18.290 [DEBUG] [Thread-163339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:04:18.290 [INFO] [Thread-163339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:04:18.298 [DEBUG] [Thread-163339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:18.298 [DEBUG] [Thread-163339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:04:18.298 [DEBUG] [Thread-163339] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:18.299 [DEBUG] [Thread-163339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:18.300 [DEBUG] [Thread-163339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:18.300 [DEBUG] [Thread-163339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:18.300 [DEBUG] [Thread-163339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:18.300 [DEBUG] [Thread-163339] [transport.py] [_log()] Compression: none
2025-09-29T18:04:18.300 [DEBUG] [Thread-163339] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:18.360 [DEBUG] [Thread-163339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:18.360 [DEBUG] [Thread-163339] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:18.361 [DEBUG] [Thread-163339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:04:18.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:04:18.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:18.417 [DEBUG] [Thread-163339] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:18.417 [DEBUG] [Thread-163339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:18.417 [DEBUG] [Thread-163339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:18.417 [DEBUG] [Thread-163339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:04:18.418 [DEBUG] [Thread-163339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:18.436 [INFO] [Thread-163339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:18.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:04:18.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:19.019 [DEBUG] [Thread-163341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:04:19.416 [DEBUG] [Thread-163339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:19.416 [DEBUG] [Thread-163339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:19.464 [DEBUG] [Thread-163339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:19.464 [DEBUG] [Thread-163339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:19.474 [DEBUG] [Thread-163339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:19.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:19.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:04:19.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:04:19.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:19.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:19.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:19.509 [DEBUG] [Thread-163339] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:04:29.504 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:04:29.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:04:30.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 4, 20), 13.08, 40.63, 0.0, 17.68, 13.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:04:30.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:04:20
2025-09-29T18:04:30.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:04:30.365 [DEBUG] [Thread-163342] [transport.py] [_log()] starting thread (client mode): 0x2b9cb700
2025-09-29T18:04:30.365 [DEBUG] [Thread-163342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:30.385 [DEBUG] [Thread-163342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:04:30.385 [INFO] [Thread-163342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:04:30.388 [DEBUG] [Thread-163342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:30.388 [DEBUG] [Thread-163342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] Compression: none
2025-09-29T18:04:30.389 [DEBUG] [Thread-163342] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:30.405 [DEBUG] [Thread-163342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:30.405 [DEBUG] [Thread-163342] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:30.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:04:30.406 [DEBUG] [Thread-163342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:04:30.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:30.408 [DEBUG] [Thread-163342] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:30.408 [DEBUG] [Thread-163342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:30.408 [DEBUG] [Thread-163342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:30.408 [DEBUG] [Thread-163342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:04:30.408 [DEBUG] [Thread-163342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:30.429 [INFO] [Thread-163342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:30.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:31.081 [DEBUG] [Thread-163342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:31.082 [DEBUG] [Thread-163342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:31.082 [DEBUG] [Thread-163342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:04:31.122 [DEBUG] [Thread-163342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:31.122 [DEBUG] [Thread-163342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:31.125 [DEBUG] [Thread-163342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:31.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:31.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:04:31.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:04:31.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:04:31.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:31.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:04:31.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:31.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:31.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:04:31.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.669509 -999.00  +13.30  15.37     47   +2.30 1 1 1 1 1   887    0 9.92 -52.23 ----- 15.4 15.4 154.6 21.5 15.8 -26.8 15.7 -25.9 16.6 -26.3 17.1 -28.0
2025-09-29T18:04:31.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:04:31.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:04:31.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.669509
2025-09-29T18:04:31.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:04:31.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:04:31.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:04:31.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:04:31.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:04:31.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:04:20', tmtdew=13.08, humidity=40.63, cloud=0.0, wind=17.68, temperature=13.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:04:05.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:04:31.150 [DEBUG] [Thread-163342] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:31.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:04:31.244 [DEBUG] [Thread-163345] [transport.py] [_log()] starting thread (client mode): 0x2b9cdc30
2025-09-29T18:04:31.244 [DEBUG] [Thread-163345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:31.259 [DEBUG] [Thread-163345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:04:31.259 [INFO] [Thread-163345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:04:31.266 [DEBUG] [Thread-163345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:31.266 [DEBUG] [Thread-163345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:31.267 [DEBUG] [Thread-163345] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:31.268 [DEBUG] [Thread-163345] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:31.268 [DEBUG] [Thread-163345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:31.268 [DEBUG] [Thread-163345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:31.268 [DEBUG] [Thread-163345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:31.268 [DEBUG] [Thread-163345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:31.268 [DEBUG] [Thread-163345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:31.268 [DEBUG] [Thread-163345] [transport.py] [_log()] Compression: none
2025-09-29T18:04:31.268 [DEBUG] [Thread-163345] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:31.325 [DEBUG] [Thread-163345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:31.326 [DEBUG] [Thread-163345] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:31.326 [DEBUG] [Thread-163345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:04:31.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:04:31.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:31.381 [DEBUG] [Thread-163345] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:31.381 [DEBUG] [Thread-163345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:31.381 [DEBUG] [Thread-163345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:31.381 [DEBUG] [Thread-163345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:04:31.382 [DEBUG] [Thread-163345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:31.401 [INFO] [Thread-163345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:31.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:04:31.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:32.421 [DEBUG] [Thread-163345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:32.421 [DEBUG] [Thread-163345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:32.469 [DEBUG] [Thread-163345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:32.469 [DEBUG] [Thread-163345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:32.478 [DEBUG] [Thread-163345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:32.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:32.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:04:32.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:04:32.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:32.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:32.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:32.512 [DEBUG] [Thread-163345] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:34.063 [DEBUG] [Thread-163347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:04:34.830 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:04:34.831 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:04:42.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:04:42.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:04:42.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:04:43.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 4, 20), 13.08, 40.63, 0.0, 17.68, 13.58, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:04:43.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:04:20
2025-09-29T18:04:43.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:04:43.359 [DEBUG] [Thread-163348] [transport.py] [_log()] starting thread (client mode): 0x2b9cb8e0
2025-09-29T18:04:43.359 [DEBUG] [Thread-163348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:43.368 [DEBUG] [Thread-163348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:04:43.368 [INFO] [Thread-163348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] Compression: none
2025-09-29T18:04:43.370 [DEBUG] [Thread-163348] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:43.380 [DEBUG] [Thread-163348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:43.381 [DEBUG] [Thread-163348] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:43.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:04:43.381 [DEBUG] [Thread-163348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:04:43.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:43.382 [DEBUG] [Thread-163348] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:43.383 [DEBUG] [Thread-163348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:43.383 [DEBUG] [Thread-163348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:43.383 [DEBUG] [Thread-163348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:04:43.383 [DEBUG] [Thread-163348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:43.398 [INFO] [Thread-163348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:43.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:43.987 [DEBUG] [Thread-163348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:43.987 [DEBUG] [Thread-163348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:43.988 [DEBUG] [Thread-163348] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:04:44.028 [DEBUG] [Thread-163348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:44.028 [DEBUG] [Thread-163348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:44.030 [DEBUG] [Thread-163348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:44.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:44.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:04:44.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:04:44.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:04:44.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:44.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:04:44.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:44.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:44.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:04:44.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.669856 -999.00  +13.20  16.97     47   +2.30 1 1 1 1 1   887    0 9.64 -55.41 ----- 17.0 17.0 167.8 24.8 15.8 -26.9 15.7 -25.9 16.6 -26.3 17.1 -27.8
2025-09-29T18:04:44.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:04:44.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:04:44.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.669856
2025-09-29T18:04:44.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:04:44.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:04:44.053 [DEBUG] [Thread-163348] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:44.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:04:44.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:04:44.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:04:44.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:04:20', tmtdew=13.08, humidity=40.63, cloud=0.0, wind=17.68, temperature=13.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:04:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:04:44.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:04:44.149 [DEBUG] [Thread-163351] [transport.py] [_log()] starting thread (client mode): 0x2b9ceb30
2025-09-29T18:04:44.150 [DEBUG] [Thread-163351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:44.164 [DEBUG] [Thread-163351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:04:44.164 [INFO] [Thread-163351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:44.172 [DEBUG] [Thread-163351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:44.173 [DEBUG] [Thread-163351] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:44.173 [DEBUG] [Thread-163351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:44.173 [DEBUG] [Thread-163351] [transport.py] [_log()] Compression: none
2025-09-29T18:04:44.173 [DEBUG] [Thread-163351] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:44.228 [DEBUG] [Thread-163351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:44.229 [DEBUG] [Thread-163351] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:44.229 [DEBUG] [Thread-163351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:04:44.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:04:44.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:44.286 [DEBUG] [Thread-163351] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:44.286 [DEBUG] [Thread-163351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:44.287 [DEBUG] [Thread-163351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:44.287 [DEBUG] [Thread-163351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:04:44.287 [DEBUG] [Thread-163351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:44.305 [INFO] [Thread-163351] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:44.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:04:44.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:45.290 [DEBUG] [Thread-163351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:45.290 [DEBUG] [Thread-163351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:45.338 [DEBUG] [Thread-163351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:45.338 [DEBUG] [Thread-163351] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:45.347 [DEBUG] [Thread-163351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:45.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:45.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:04:45.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:04:45.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:45.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:45.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:45.382 [DEBUG] [Thread-163351] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:49.117 [DEBUG] [Thread-163353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:04:51.785 [DEBUG] [Thread-163354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:04:55.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:04:55.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:04:55.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:04:55.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 4, 51), 13.12, 40.51, 0.0, 18.1, 13.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:04:55.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:04:51
2025-09-29T18:04:56.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:04:56.231 [DEBUG] [Thread-163355] [transport.py] [_log()] starting thread (client mode): 0x2b920d60
2025-09-29T18:04:56.231 [DEBUG] [Thread-163355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:56.245 [DEBUG] [Thread-163355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:04:56.245 [INFO] [Thread-163355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:04:56.246 [DEBUG] [Thread-163355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:56.246 [DEBUG] [Thread-163355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:04:56.246 [DEBUG] [Thread-163355] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:56.246 [DEBUG] [Thread-163355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] Compression: none
2025-09-29T18:04:56.247 [DEBUG] [Thread-163355] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:56.259 [DEBUG] [Thread-163355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:56.260 [DEBUG] [Thread-163355] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:56.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:04:56.260 [DEBUG] [Thread-163355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:04:56.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:56.261 [DEBUG] [Thread-163355] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:56.261 [DEBUG] [Thread-163355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:56.261 [DEBUG] [Thread-163355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:56.261 [DEBUG] [Thread-163355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:04:56.261 [DEBUG] [Thread-163355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:56.275 [INFO] [Thread-163355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:56.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:56.915 [DEBUG] [Thread-163355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:56.915 [DEBUG] [Thread-163355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:56.915 [DEBUG] [Thread-163355] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:04:56.956 [DEBUG] [Thread-163355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:56.957 [DEBUG] [Thread-163355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:56.960 [DEBUG] [Thread-163355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:56.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:56.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:04:56.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:04:56.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:04:56.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:56.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:04:56.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:56.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:56.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:04:56.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.669856 -999.00  +13.20  16.97     47   +2.30 1 1 1 1 1   887    0 9.64 -55.41 ----- 17.0 17.0 167.8 24.8 15.8 -26.9 15.7 -25.9 16.6 -26.3 17.1 -27.8
2025-09-29T18:04:56.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:04:56.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:04:56.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.669856
2025-09-29T18:04:56.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:04:56.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:04:56.984 [DEBUG] [Thread-163355] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:04:56.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:04:56.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:04:56.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:04:56.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:04:51', tmtdew=13.12, humidity=40.51, cloud=0.0, wind=18.1, temperature=13.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:04:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:04:57.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:04:57.074 [DEBUG] [Thread-163358] [transport.py] [_log()] starting thread (client mode): 0x2b9234f0
2025-09-29T18:04:57.074 [DEBUG] [Thread-163358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:04:57.089 [DEBUG] [Thread-163358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:04:57.089 [INFO] [Thread-163358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] client lang: <none>
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] server lang: <none>
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] kex follows: False
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:04:57.097 [DEBUG] [Thread-163358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:04:57.098 [DEBUG] [Thread-163358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:04:57.098 [DEBUG] [Thread-163358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:04:57.098 [DEBUG] [Thread-163358] [transport.py] [_log()] Compression: none
2025-09-29T18:04:57.098 [DEBUG] [Thread-163358] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:04:57.155 [DEBUG] [Thread-163358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:04:57.156 [DEBUG] [Thread-163358] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:04:57.156 [DEBUG] [Thread-163358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:04:57.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:04:57.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:04:57.214 [DEBUG] [Thread-163358] [transport.py] [_log()] userauth is OK
2025-09-29T18:04:57.214 [DEBUG] [Thread-163358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:04:57.215 [DEBUG] [Thread-163358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:04:57.215 [DEBUG] [Thread-163358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:04:57.215 [DEBUG] [Thread-163358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:04:57.233 [INFO] [Thread-163358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:04:57.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:04:57.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:04:58.234 [DEBUG] [Thread-163358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:04:58.234 [DEBUG] [Thread-163358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:04:58.282 [DEBUG] [Thread-163358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:04:58.282 [DEBUG] [Thread-163358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:04:58.291 [DEBUG] [Thread-163358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:04:58.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:04:58.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:04:58.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:04:58.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:04:58.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:04:58.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:04:58.326 [DEBUG] [Thread-163358] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:05:04.158 [DEBUG] [Thread-163360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:05:08.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:05:08.328 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:05:08.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:05:08.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 4, 51), 13.12, 40.51, 0.0, 18.1, 13.6, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:05:08.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:04:51
2025-09-29T18:05:09.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:05:09.190 [DEBUG] [Thread-163361] [transport.py] [_log()] starting thread (client mode): 0x2e3758d0
2025-09-29T18:05:09.190 [DEBUG] [Thread-163361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:05:09.212 [DEBUG] [Thread-163361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:05:09.212 [INFO] [Thread-163361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:05:09.214 [DEBUG] [Thread-163361] [transport.py] [_log()] client lang: <none>
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] server lang: <none>
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] kex follows: False
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] Compression: none
2025-09-29T18:05:09.215 [DEBUG] [Thread-163361] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:05:09.226 [DEBUG] [Thread-163361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:05:09.227 [DEBUG] [Thread-163361] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:05:09.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:05:09.228 [DEBUG] [Thread-163361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:05:09.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:05:09.230 [DEBUG] [Thread-163361] [transport.py] [_log()] userauth is OK
2025-09-29T18:05:09.230 [DEBUG] [Thread-163361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:05:09.230 [DEBUG] [Thread-163361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:05:09.230 [DEBUG] [Thread-163361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:05:09.230 [DEBUG] [Thread-163361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:05:09.255 [INFO] [Thread-163361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:05:09.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:05:16.089 [DEBUG] [Thread-163361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:05:16.089 [DEBUG] [Thread-163361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:05:16.089 [DEBUG] [Thread-163361] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:05:16.130 [DEBUG] [Thread-163361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:05:16.130 [DEBUG] [Thread-163361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:05:16.132 [DEBUG] [Thread-163361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:05:16.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:05:16.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:05:16.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:05:16.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:05:16.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:05:16.176 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:05:16.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:05:16.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:05:16.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:05:16.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.669856 -999.00  +13.20  16.97     47   +2.30 1 1 1 1 1   887    0 9.64 -55.41 ----- 17.0 17.0 167.8 24.8 15.8 -26.9 15.7 -25.9 16.6 -26.3 17.1 -27.8
2025-09-29T18:05:16.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:05:16.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:05:16.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.669856
2025-09-29T18:05:16.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:05:16.178 [DEBUG] [Thread-163361] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:05:16.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:05:16.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:05:16.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:05:16.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:05:16.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:04:51', tmtdew=13.12, humidity=40.51, cloud=0.0, wind=18.1, temperature=13.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:04:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:05:16.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:05:16.274 [DEBUG] [Thread-163364] [transport.py] [_log()] starting thread (client mode): 0x2e3fab30
2025-09-29T18:05:16.274 [DEBUG] [Thread-163364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:05:16.290 [DEBUG] [Thread-163364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:05:16.290 [INFO] [Thread-163364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:05:16.298 [DEBUG] [Thread-163364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:05:16.298 [DEBUG] [Thread-163364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:05:16.298 [DEBUG] [Thread-163364] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:05:16.298 [DEBUG] [Thread-163364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:16.298 [DEBUG] [Thread-163364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:16.298 [DEBUG] [Thread-163364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] client lang: <none>
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] server lang: <none>
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] kex follows: False
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:05:16.299 [DEBUG] [Thread-163364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:05:16.300 [DEBUG] [Thread-163364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:05:16.300 [DEBUG] [Thread-163364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:05:16.300 [DEBUG] [Thread-163364] [transport.py] [_log()] Compression: none
2025-09-29T18:05:16.300 [DEBUG] [Thread-163364] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:05:16.357 [DEBUG] [Thread-163364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:05:16.358 [DEBUG] [Thread-163364] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:05:16.358 [DEBUG] [Thread-163364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:05:16.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:05:16.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:05:16.416 [DEBUG] [Thread-163364] [transport.py] [_log()] userauth is OK
2025-09-29T18:05:16.416 [DEBUG] [Thread-163364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:05:16.416 [DEBUG] [Thread-163364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:05:16.416 [DEBUG] [Thread-163364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:05:16.417 [DEBUG] [Thread-163364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:05:16.431 [INFO] [Thread-163364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:05:16.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:05:16.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:05:17.454 [DEBUG] [Thread-163364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:05:17.455 [DEBUG] [Thread-163364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:05:17.502 [DEBUG] [Thread-163364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:05:17.503 [DEBUG] [Thread-163364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:05:17.511 [DEBUG] [Thread-163364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:05:17.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:05:17.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:05:17.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:05:17.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:05:17.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:05:17.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:05:17.546 [DEBUG] [Thread-163364] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:05:19.205 [DEBUG] [Thread-163366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:05:27.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:05:27.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:05:27.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:05:28.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 5, 24), 13.09, 40.61, 0.0, 17.15, 13.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:05:28.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:05:24
2025-09-29T18:05:28.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:05:28.391 [DEBUG] [Thread-163367] [transport.py] [_log()] starting thread (client mode): 0x2e3f8910
2025-09-29T18:05:28.391 [DEBUG] [Thread-163367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:05:28.409 [DEBUG] [Thread-163367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:05:28.410 [INFO] [Thread-163367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] client lang: <none>
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] server lang: <none>
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] kex follows: False
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:05:28.413 [DEBUG] [Thread-163367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:05:28.414 [DEBUG] [Thread-163367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:05:28.414 [DEBUG] [Thread-163367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:05:28.414 [DEBUG] [Thread-163367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:05:28.414 [DEBUG] [Thread-163367] [transport.py] [_log()] Compression: none
2025-09-29T18:05:28.414 [DEBUG] [Thread-163367] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:05:28.431 [DEBUG] [Thread-163367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:05:28.431 [DEBUG] [Thread-163367] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:05:28.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:05:28.432 [DEBUG] [Thread-163367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:05:28.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:05:28.434 [DEBUG] [Thread-163367] [transport.py] [_log()] userauth is OK
2025-09-29T18:05:28.434 [DEBUG] [Thread-163367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:05:28.434 [DEBUG] [Thread-163367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:05:28.434 [DEBUG] [Thread-163367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:05:28.434 [DEBUG] [Thread-163367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:05:28.455 [INFO] [Thread-163367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:05:28.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:05:29.052 [DEBUG] [Thread-163367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:05:29.053 [DEBUG] [Thread-163367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:05:29.053 [DEBUG] [Thread-163367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:05:29.094 [DEBUG] [Thread-163367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:05:29.094 [DEBUG] [Thread-163367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:05:29.095 [DEBUG] [Thread-163367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:05:29.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:05:29.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:05:29.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:05:29.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:05:29.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:05:29.108 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:05:29.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.670203 -999.00  +13.20  18.96     47   +2.30 1 1 1 1 1   887    0 9.82 -55.31 ----- 19.0 19.0 173.4 25.3 15.8 -27.0 15.6 -27.4 16.5 -26.2 17.1 -28.1
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.670203
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:05:29.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:05:29.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:05:24', tmtdew=13.09, humidity=40.61, cloud=0.0, wind=17.15, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:05:05.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:05:29.109 [DEBUG] [Thread-163367] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:05:29.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:05:29.191 [DEBUG] [Thread-163370] [transport.py] [_log()] starting thread (client mode): 0x2b9215a0
2025-09-29T18:05:29.191 [DEBUG] [Thread-163370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:05:29.207 [DEBUG] [Thread-163370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:05:29.207 [INFO] [Thread-163370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:05:29.214 [DEBUG] [Thread-163370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:05:29.214 [DEBUG] [Thread-163370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:05:29.214 [DEBUG] [Thread-163370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] client lang: <none>
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] server lang: <none>
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] kex follows: False
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] Compression: none
2025-09-29T18:05:29.215 [DEBUG] [Thread-163370] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:05:29.271 [DEBUG] [Thread-163370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:05:29.271 [DEBUG] [Thread-163370] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:05:29.271 [DEBUG] [Thread-163370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:05:29.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:05:29.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:05:29.328 [DEBUG] [Thread-163370] [transport.py] [_log()] userauth is OK
2025-09-29T18:05:29.328 [DEBUG] [Thread-163370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:05:29.328 [DEBUG] [Thread-163370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:05:29.328 [DEBUG] [Thread-163370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:05:29.328 [DEBUG] [Thread-163370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:05:29.343 [INFO] [Thread-163370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:05:29.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:05:29.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:05:30.401 [DEBUG] [Thread-163370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:05:30.401 [DEBUG] [Thread-163370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:05:30.449 [DEBUG] [Thread-163370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:05:30.449 [DEBUG] [Thread-163370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:05:30.457 [DEBUG] [Thread-163370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:05:30.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:05:30.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:05:30.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:05:30.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:05:30.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:05:30.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:05:30.489 [DEBUG] [Thread-163370] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:05:34.232 [DEBUG] [Thread-163372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:05:34.970 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:05:34.971 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:05:40.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:05:40.485 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:05:40.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:05:41.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 5, 24), 13.09, 40.61, 0.0, 17.15, 13.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:05:41.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:05:24
2025-09-29T18:05:41.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:05:41.348 [DEBUG] [Thread-163373] [transport.py] [_log()] starting thread (client mode): 0x2e3f9fc0
2025-09-29T18:05:41.348 [DEBUG] [Thread-163373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:05:41.367 [DEBUG] [Thread-163373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:05:41.368 [INFO] [Thread-163373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] client lang: <none>
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] server lang: <none>
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] kex follows: False
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:05:41.371 [DEBUG] [Thread-163373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:05:41.372 [DEBUG] [Thread-163373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:05:41.372 [DEBUG] [Thread-163373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:05:41.372 [DEBUG] [Thread-163373] [transport.py] [_log()] Compression: none
2025-09-29T18:05:41.372 [DEBUG] [Thread-163373] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:05:41.388 [DEBUG] [Thread-163373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:05:41.389 [DEBUG] [Thread-163373] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:05:41.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:05:41.390 [DEBUG] [Thread-163373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:05:41.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:05:41.391 [DEBUG] [Thread-163373] [transport.py] [_log()] userauth is OK
2025-09-29T18:05:41.391 [DEBUG] [Thread-163373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:05:41.391 [DEBUG] [Thread-163373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:05:41.392 [DEBUG] [Thread-163373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:05:41.392 [DEBUG] [Thread-163373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:05:41.415 [INFO] [Thread-163373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:05:41.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:05:42.148 [DEBUG] [Thread-163373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:05:42.148 [DEBUG] [Thread-163373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:05:42.149 [DEBUG] [Thread-163373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:05:42.189 [DEBUG] [Thread-163373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:05:42.190 [DEBUG] [Thread-163373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:05:42.193 [DEBUG] [Thread-163373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:05:42.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:05:42.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:05:42.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:05:42.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:05:42.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:05:42.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:05:42.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:05:42.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:05:42.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:05:42.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.670203 -999.00  +13.20  18.96     47   +2.30 1 1 1 1 1   887    0 9.82 -55.31 ----- 19.0 19.0 173.4 25.3 15.8 -27.0 15.6 -27.4 16.5 -26.2 17.1 -28.1
2025-09-29T18:05:42.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:05:42.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:05:42.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.670203
2025-09-29T18:05:42.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:05:42.211 [DEBUG] [Thread-163373] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:05:42.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:05:42.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:05:42.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:05:42.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:05:42.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:05:24', tmtdew=13.09, humidity=40.61, cloud=0.0, wind=17.15, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:05:05.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:05:42.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:05:42.312 [DEBUG] [Thread-163376] [transport.py] [_log()] starting thread (client mode): 0x2e3f92d0
2025-09-29T18:05:42.313 [DEBUG] [Thread-163376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:05:42.327 [DEBUG] [Thread-163376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:05:42.327 [INFO] [Thread-163376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:05:42.335 [DEBUG] [Thread-163376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:05:42.335 [DEBUG] [Thread-163376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:05:42.335 [DEBUG] [Thread-163376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:05:42.335 [DEBUG] [Thread-163376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] client lang: <none>
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] server lang: <none>
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] kex follows: False
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] Compression: none
2025-09-29T18:05:42.336 [DEBUG] [Thread-163376] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:05:42.392 [DEBUG] [Thread-163376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:05:42.393 [DEBUG] [Thread-163376] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:05:42.393 [DEBUG] [Thread-163376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:05:42.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:05:42.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:05:42.449 [DEBUG] [Thread-163376] [transport.py] [_log()] userauth is OK
2025-09-29T18:05:42.449 [DEBUG] [Thread-163376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:05:42.449 [DEBUG] [Thread-163376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:05:42.449 [DEBUG] [Thread-163376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:05:42.449 [DEBUG] [Thread-163376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:05:42.469 [INFO] [Thread-163376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:05:42.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:05:42.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:05:43.437 [DEBUG] [Thread-163376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:05:43.437 [DEBUG] [Thread-163376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:05:43.485 [DEBUG] [Thread-163376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:05:43.485 [DEBUG] [Thread-163376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:05:43.494 [DEBUG] [Thread-163376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:05:43.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:05:43.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:05:43.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:05:43.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:05:43.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:05:43.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:05:43.528 [DEBUG] [Thread-163376] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:05:49.278 [DEBUG] [Thread-163378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:05:51.817 [DEBUG] [Thread-163379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:05:53.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:05:53.531 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:05:53.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:05:54.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 5, 24), 13.09, 40.61, 0.0, 17.15, 13.56, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:05:54.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:05:24
2025-09-29T18:05:54.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:05:54.399 [DEBUG] [Thread-163380] [transport.py] [_log()] starting thread (client mode): 0x2e38e920
2025-09-29T18:05:54.399 [DEBUG] [Thread-163380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:05:54.418 [DEBUG] [Thread-163380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:05:54.418 [INFO] [Thread-163380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:05:54.422 [DEBUG] [Thread-163380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:05:54.422 [DEBUG] [Thread-163380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:05:54.422 [DEBUG] [Thread-163380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:05:54.422 [DEBUG] [Thread-163380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:54.422 [DEBUG] [Thread-163380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:54.422 [DEBUG] [Thread-163380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:54.422 [DEBUG] [Thread-163380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:54.422 [DEBUG] [Thread-163380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] client lang: <none>
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] server lang: <none>
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] kex follows: False
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] Compression: none
2025-09-29T18:05:54.423 [DEBUG] [Thread-163380] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:05:54.440 [DEBUG] [Thread-163380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:05:54.440 [DEBUG] [Thread-163380] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:05:54.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:05:54.441 [DEBUG] [Thread-163380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:05:54.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:05:54.443 [DEBUG] [Thread-163380] [transport.py] [_log()] userauth is OK
2025-09-29T18:05:54.443 [DEBUG] [Thread-163380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:05:54.443 [DEBUG] [Thread-163380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:05:54.444 [DEBUG] [Thread-163380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:05:54.444 [DEBUG] [Thread-163380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:05:54.467 [INFO] [Thread-163380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:05:54.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:05:55.067 [DEBUG] [Thread-163380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:05:55.067 [DEBUG] [Thread-163380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:05:55.067 [DEBUG] [Thread-163380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:05:55.108 [DEBUG] [Thread-163380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:05:55.109 [DEBUG] [Thread-163380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:05:55.112 [DEBUG] [Thread-163380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:05:55.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:05:55.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:05:55.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:05:55.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:05:55.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:05:55.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:05:55.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:05:55.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:05:55.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:05:55.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.670551 -999.00  +13.20  10.92     47   +2.30 1 1 1 1 1   887    0 9.25 -63.20 ----- 10.9 10.9 173.8 22.8 15.8 -27.0 15.5 -27.6 16.4 -26.1 17.0 -27.9
2025-09-29T18:05:55.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:05:55.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:05:55.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.670551
2025-09-29T18:05:55.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:05:55.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:05:55.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:05:55.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:05:55.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:05:55.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:05:24', tmtdew=13.09, humidity=40.61, cloud=0.0, wind=17.15, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:05:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:05:55.133 [DEBUG] [Thread-163380] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:05:55.217 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:05:55.227 [DEBUG] [Thread-163383] [transport.py] [_log()] starting thread (client mode): 0x2b9f3e80
2025-09-29T18:05:55.227 [DEBUG] [Thread-163383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:05:55.242 [DEBUG] [Thread-163383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:05:55.242 [INFO] [Thread-163383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] client lang: <none>
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] server lang: <none>
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] kex follows: False
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] Compression: none
2025-09-29T18:05:55.250 [DEBUG] [Thread-163383] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:05:55.308 [DEBUG] [Thread-163383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:05:55.308 [DEBUG] [Thread-163383] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:05:55.309 [DEBUG] [Thread-163383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:05:55.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:05:55.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:05:55.368 [DEBUG] [Thread-163383] [transport.py] [_log()] userauth is OK
2025-09-29T18:05:55.369 [DEBUG] [Thread-163383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:05:55.369 [DEBUG] [Thread-163383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:05:55.369 [DEBUG] [Thread-163383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:05:55.369 [DEBUG] [Thread-163383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:05:55.388 [INFO] [Thread-163383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:05:55.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:05:55.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:05:56.410 [DEBUG] [Thread-163383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:05:56.410 [DEBUG] [Thread-163383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:05:56.458 [DEBUG] [Thread-163383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:05:56.458 [DEBUG] [Thread-163383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:05:56.466 [DEBUG] [Thread-163383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:05:56.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:05:56.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:05:56.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:05:56.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:05:56.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:05:56.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:05:56.498 [DEBUG] [Thread-163383] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:06:04.312 [DEBUG] [Thread-163385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:06:06.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:06:06.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:06:06.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:06:07.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 5, 55), 13.03, 40.61, 0.0, 20.42, 13.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:06:07.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:05:55
2025-09-29T18:06:07.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:06:07.347 [DEBUG] [Thread-163386] [transport.py] [_log()] starting thread (client mode): 0x2e38c190
2025-09-29T18:06:07.347 [DEBUG] [Thread-163386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:06:07.368 [DEBUG] [Thread-163386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:06:07.368 [INFO] [Thread-163386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:06:07.371 [DEBUG] [Thread-163386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] client lang: <none>
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] server lang: <none>
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] kex follows: False
2025-09-29T18:06:07.372 [DEBUG] [Thread-163386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:06:07.373 [DEBUG] [Thread-163386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:06:07.373 [DEBUG] [Thread-163386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:06:07.373 [DEBUG] [Thread-163386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:06:07.373 [DEBUG] [Thread-163386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:06:07.373 [DEBUG] [Thread-163386] [transport.py] [_log()] Compression: none
2025-09-29T18:06:07.373 [DEBUG] [Thread-163386] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:06:07.392 [DEBUG] [Thread-163386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:06:07.393 [DEBUG] [Thread-163386] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:06:07.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:06:07.394 [DEBUG] [Thread-163386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:06:07.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:06:07.396 [DEBUG] [Thread-163386] [transport.py] [_log()] userauth is OK
2025-09-29T18:06:07.396 [DEBUG] [Thread-163386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:06:07.396 [DEBUG] [Thread-163386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:06:07.397 [DEBUG] [Thread-163386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:06:07.397 [DEBUG] [Thread-163386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:06:07.420 [INFO] [Thread-163386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:06:07.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:06:08.208 [DEBUG] [Thread-163386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:06:08.208 [DEBUG] [Thread-163386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:06:08.208 [DEBUG] [Thread-163386] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:06:08.249 [DEBUG] [Thread-163386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:06:08.249 [DEBUG] [Thread-163386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:06:08.251 [DEBUG] [Thread-163386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:06:08.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:06:08.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:06:08.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:06:08.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:06:08.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:06:08.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:06:08.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:06:08.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:06:08.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:06:08.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.670551 -999.00  +13.20  10.92     47   +2.30 1 1 1 1 1   887    0 9.25 -63.20 ----- 10.9 10.9 173.8 22.8 15.8 -27.0 15.5 -27.6 16.4 -26.1 17.0 -27.9
2025-09-29T18:06:08.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:06:08.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:06:08.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.670551
2025-09-29T18:06:08.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:06:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:06:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:06:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:06:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:06:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:05:55', tmtdew=13.03, humidity=40.61, cloud=0.0, wind=20.42, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:05:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:06:08.270 [DEBUG] [Thread-163386] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:06:08.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:06:08.359 [DEBUG] [Thread-163389] [transport.py] [_log()] starting thread (client mode): 0x2e38d750
2025-09-29T18:06:08.360 [DEBUG] [Thread-163389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:06:08.374 [DEBUG] [Thread-163389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:06:08.374 [INFO] [Thread-163389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:06:08.381 [DEBUG] [Thread-163389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] client lang: <none>
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] server lang: <none>
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] kex follows: False
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] Compression: none
2025-09-29T18:06:08.382 [DEBUG] [Thread-163389] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:06:08.439 [DEBUG] [Thread-163389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:06:08.439 [DEBUG] [Thread-163389] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:06:08.439 [DEBUG] [Thread-163389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:06:08.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:06:08.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:06:08.500 [DEBUG] [Thread-163389] [transport.py] [_log()] userauth is OK
2025-09-29T18:06:08.500 [DEBUG] [Thread-163389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:06:08.500 [DEBUG] [Thread-163389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:06:08.500 [DEBUG] [Thread-163389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:06:08.500 [DEBUG] [Thread-163389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:06:08.518 [INFO] [Thread-163389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:06:08.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:06:08.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:06:09.499 [DEBUG] [Thread-163389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:06:09.499 [DEBUG] [Thread-163389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:06:09.548 [DEBUG] [Thread-163389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:06:09.548 [DEBUG] [Thread-163389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:06:09.556 [DEBUG] [Thread-163389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:06:09.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:06:09.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:06:09.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:06:09.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:06:09.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:06:09.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:06:09.588 [DEBUG] [Thread-163389] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:06:19.356 [DEBUG] [Thread-163391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:06:19.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:06:19.590 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:06:19.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:06:20.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 5, 55), 13.03, 40.61, 0.0, 20.42, 13.46, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:06:20.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:05:55
2025-09-29T18:06:20.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:06:20.415 [DEBUG] [Thread-163392] [transport.py] [_log()] starting thread (client mode): 0x2b94d240
2025-09-29T18:06:20.415 [DEBUG] [Thread-163392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:06:20.437 [DEBUG] [Thread-163392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:06:20.437 [INFO] [Thread-163392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:06:20.441 [DEBUG] [Thread-163392] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:06:20.441 [DEBUG] [Thread-163392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:06:20.441 [DEBUG] [Thread-163392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:06:20.441 [DEBUG] [Thread-163392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:20.441 [DEBUG] [Thread-163392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:20.441 [DEBUG] [Thread-163392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] client lang: <none>
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] server lang: <none>
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] kex follows: False
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:06:20.442 [DEBUG] [Thread-163392] [transport.py] [_log()] Compression: none
2025-09-29T18:06:20.443 [DEBUG] [Thread-163392] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:06:20.460 [DEBUG] [Thread-163392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:06:20.460 [DEBUG] [Thread-163392] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:06:20.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:06:20.461 [DEBUG] [Thread-163392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:06:20.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:06:20.463 [DEBUG] [Thread-163392] [transport.py] [_log()] userauth is OK
2025-09-29T18:06:20.463 [DEBUG] [Thread-163392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:06:20.463 [DEBUG] [Thread-163392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:06:20.464 [DEBUG] [Thread-163392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:06:20.464 [DEBUG] [Thread-163392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:06:20.486 [INFO] [Thread-163392] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:06:20.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:06:21.290 [DEBUG] [Thread-163392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:06:21.291 [DEBUG] [Thread-163392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:06:21.291 [DEBUG] [Thread-163392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:06:21.331 [DEBUG] [Thread-163392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:06:21.331 [DEBUG] [Thread-163392] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:06:21.334 [DEBUG] [Thread-163392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:06:21.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:06:21.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:06:21.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:06:21.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:06:21.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:06:21.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:06:21.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:06:21.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:06:21.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:06:21.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.670551 -999.00  +13.20  10.92     47   +2.30 1 1 1 1 1   887    0 9.25 -63.20 ----- 10.9 10.9 173.8 22.8 15.8 -27.0 15.5 -27.6 16.4 -26.1 17.0 -27.9
2025-09-29T18:06:21.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:06:21.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:06:21.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.670551
2025-09-29T18:06:21.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:06:21.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:06:21.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:06:21.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:06:21.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:06:21.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:05:55', tmtdew=13.03, humidity=40.61, cloud=0.0, wind=20.42, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:05:35.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:06:21.360 [DEBUG] [Thread-163392] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:06:21.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:06:21.464 [DEBUG] [Thread-163395] [transport.py] [_log()] starting thread (client mode): 0x2e3dd630
2025-09-29T18:06:21.464 [DEBUG] [Thread-163395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:06:21.479 [DEBUG] [Thread-163395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:06:21.479 [INFO] [Thread-163395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:06:21.487 [DEBUG] [Thread-163395] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] client lang: <none>
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] server lang: <none>
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] kex follows: False
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] Compression: none
2025-09-29T18:06:21.488 [DEBUG] [Thread-163395] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:06:21.544 [DEBUG] [Thread-163395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:06:21.544 [DEBUG] [Thread-163395] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:06:21.545 [DEBUG] [Thread-163395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:06:21.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:06:21.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:06:21.601 [DEBUG] [Thread-163395] [transport.py] [_log()] userauth is OK
2025-09-29T18:06:21.601 [DEBUG] [Thread-163395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:06:21.601 [DEBUG] [Thread-163395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:06:21.601 [DEBUG] [Thread-163395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:06:21.601 [DEBUG] [Thread-163395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:06:21.623 [INFO] [Thread-163395] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:06:21.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:06:21.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:06:22.646 [DEBUG] [Thread-163395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:06:22.646 [DEBUG] [Thread-163395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:06:22.694 [DEBUG] [Thread-163395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:06:22.694 [DEBUG] [Thread-163395] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:06:22.703 [DEBUG] [Thread-163395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:06:22.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:06:22.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:06:22.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:06:22.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:06:22.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:06:22.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:06:22.738 [DEBUG] [Thread-163395] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:06:32.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:06:32.731 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:06:32.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:06:33.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 6, 27), 13.02, 40.66, 0.0, 22.3, 13.5, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:06:33.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:06:27
2025-09-29T18:06:33.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:06:33.574 [DEBUG] [Thread-163397] [transport.py] [_log()] starting thread (client mode): 0x2b9f3e50
2025-09-29T18:06:33.574 [DEBUG] [Thread-163397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:06:33.589 [DEBUG] [Thread-163397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:06:33.589 [INFO] [Thread-163397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] client lang: <none>
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] server lang: <none>
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] kex follows: False
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:06:33.593 [DEBUG] [Thread-163397] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:06:33.594 [DEBUG] [Thread-163397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:06:33.594 [DEBUG] [Thread-163397] [transport.py] [_log()] Compression: none
2025-09-29T18:06:33.594 [DEBUG] [Thread-163397] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:06:33.611 [DEBUG] [Thread-163397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:06:33.611 [DEBUG] [Thread-163397] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:06:33.612 [DEBUG] [Thread-163397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:06:33.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:06:33.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:06:33.614 [DEBUG] [Thread-163397] [transport.py] [_log()] userauth is OK
2025-09-29T18:06:33.614 [DEBUG] [Thread-163397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:06:33.614 [DEBUG] [Thread-163397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:06:33.614 [DEBUG] [Thread-163397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:06:33.614 [DEBUG] [Thread-163397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:06:33.638 [INFO] [Thread-163397] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:06:33.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:06:34.212 [DEBUG] [Thread-163397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:06:34.212 [DEBUG] [Thread-163397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:06:34.212 [DEBUG] [Thread-163397] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:06:34.253 [DEBUG] [Thread-163397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:06:34.253 [DEBUG] [Thread-163397] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:06:34.256 [DEBUG] [Thread-163397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:06:34.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:06:34.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:06:34.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:06:34.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:06:34.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:06:34.281 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:06:34.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:06:34.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:06:34.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:06:34.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.670898 -999.00  +13.20  15.82     47   +2.30 1 1 1 1 1   887    0 9.48 -59.21 ----- 15.8 15.8 168.6 19.6 15.8 -26.8 15.6 -25.7 16.6 -26.2 17.0 -27.5
2025-09-29T18:06:34.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:06:34.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:06:34.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.670898
2025-09-29T18:06:34.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:06:34.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:06:34.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:06:34.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:06:34.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:06:34.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:06:27', tmtdew=13.02, humidity=40.66, cloud=0.0, wind=22.3, temperature=13.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:06:05.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:06:34.284 [DEBUG] [Thread-163397] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:06:34.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:06:34.398 [DEBUG] [Thread-163400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:06:35.112 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:06:35.114 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:06:49.444 [DEBUG] [Thread-163401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:06:51.849 [DEBUG] [Thread-163402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:07:04.471 [DEBUG] [Thread-163403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:07:19.501 [DEBUG] [Thread-163404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:07:34.532 [DEBUG] [Thread-163405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:07:35.255 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:07:35.256 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:07:49.563 [DEBUG] [Thread-163406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:07:51.881 [DEBUG] [Thread-163407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:08:04.591 [DEBUG] [Thread-163408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:08:19.617 [DEBUG] [Thread-163409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:08:34.647 [DEBUG] [Thread-163410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:08:35.394 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:08:35.395 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:08:49.595 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T18:08:49.675 [DEBUG] [Thread-163411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:08:51.919 [DEBUG] [Thread-163412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:08:59.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:08:59.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:08:59.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:09:00.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 8, 35), 12.96, 40.82, 0.0, 20.08, 13.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:09:00.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:08:35
2025-09-29T18:09:00.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:09:00.467 [DEBUG] [Thread-163413] [transport.py] [_log()] starting thread (client mode): 0x2e34bdf0
2025-09-29T18:09:00.467 [DEBUG] [Thread-163413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:00.486 [DEBUG] [Thread-163413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:09:00.486 [INFO] [Thread-163413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] Compression: none
2025-09-29T18:09:00.488 [DEBUG] [Thread-163413] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:00.496 [DEBUG] [Thread-163413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:00.496 [DEBUG] [Thread-163413] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:00.496 [DEBUG] [Thread-163413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:09:00.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:09:00.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:00.498 [DEBUG] [Thread-163413] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:00.498 [DEBUG] [Thread-163413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:00.498 [DEBUG] [Thread-163413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:00.498 [DEBUG] [Thread-163413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:09:00.498 [DEBUG] [Thread-163413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:00.514 [INFO] [Thread-163413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:00.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:01.133 [DEBUG] [Thread-163413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:01.133 [DEBUG] [Thread-163413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:01.134 [DEBUG] [Thread-163413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:09:01.174 [DEBUG] [Thread-163413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:01.174 [DEBUG] [Thread-163413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:01.177 [DEBUG] [Thread-163413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:01.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:01.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:09:01.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:09:01.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:09:01.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:01.200 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:09:01.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:01.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:01.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:09:01.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.672287 -999.00  +13.20  14.45     47   +2.30 1 1 1 1 1   887    0 9.10 -57.78 ----- 14.4 14.4 157.0 19.7 15.7 -26.7 15.6 -25.6 16.4 -26.5 16.9 -27.6
2025-09-29T18:09:01.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:09:01.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:09:01.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.672287
2025-09-29T18:09:01.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:09:01.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:09:01.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:09:01.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:09:01.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:09:01.202 [DEBUG] [Thread-163413] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:01.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:08:35', tmtdew=12.96, humidity=40.82, cloud=0.0, wind=20.08, temperature=13.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:08:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:09:01.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:09:01.299 [DEBUG] [Thread-163416] [transport.py] [_log()] starting thread (client mode): 0x2e34a140
2025-09-29T18:09:01.299 [DEBUG] [Thread-163416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:01.314 [DEBUG] [Thread-163416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:09:01.314 [INFO] [Thread-163416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:01.322 [DEBUG] [Thread-163416] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:01.323 [DEBUG] [Thread-163416] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:01.323 [DEBUG] [Thread-163416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:01.323 [DEBUG] [Thread-163416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:01.323 [DEBUG] [Thread-163416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:01.323 [DEBUG] [Thread-163416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:01.323 [DEBUG] [Thread-163416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:01.323 [DEBUG] [Thread-163416] [transport.py] [_log()] Compression: none
2025-09-29T18:09:01.323 [DEBUG] [Thread-163416] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:01.379 [DEBUG] [Thread-163416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:01.380 [DEBUG] [Thread-163416] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:01.380 [DEBUG] [Thread-163416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:09:01.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:09:01.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:01.435 [DEBUG] [Thread-163416] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:01.436 [DEBUG] [Thread-163416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:01.436 [DEBUG] [Thread-163416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:01.436 [DEBUG] [Thread-163416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:09:01.436 [DEBUG] [Thread-163416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:01.455 [INFO] [Thread-163416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:01.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:09:01.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:02.501 [DEBUG] [Thread-163416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:02.501 [DEBUG] [Thread-163416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:02.549 [DEBUG] [Thread-163416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:02.549 [DEBUG] [Thread-163416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:02.557 [DEBUG] [Thread-163416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:02.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:02.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:09:02.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:09:02.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:02.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:02.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:02.594 [DEBUG] [Thread-163416] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:04.706 [DEBUG] [Thread-163418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:09:12.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:09:12.597 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:09:12.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:09:13.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 9, 7), 12.97, 40.78, 0.0, 19.85, 13.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:09:13.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:09:07
2025-09-29T18:09:13.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:09:13.453 [DEBUG] [Thread-163419] [transport.py] [_log()] starting thread (client mode): 0x2e348f40
2025-09-29T18:09:13.453 [DEBUG] [Thread-163419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:13.478 [DEBUG] [Thread-163419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:09:13.478 [INFO] [Thread-163419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:09:13.481 [DEBUG] [Thread-163419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:13.481 [DEBUG] [Thread-163419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] Compression: none
2025-09-29T18:09:13.482 [DEBUG] [Thread-163419] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:13.493 [DEBUG] [Thread-163419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:13.494 [DEBUG] [Thread-163419] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:13.494 [DEBUG] [Thread-163419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:09:13.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:09:13.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:13.496 [DEBUG] [Thread-163419] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:13.497 [DEBUG] [Thread-163419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:13.497 [DEBUG] [Thread-163419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:13.497 [DEBUG] [Thread-163419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:09:13.497 [DEBUG] [Thread-163419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:13.515 [INFO] [Thread-163419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:13.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:14.164 [DEBUG] [Thread-163419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:14.164 [DEBUG] [Thread-163419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:14.165 [DEBUG] [Thread-163419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:09:14.205 [DEBUG] [Thread-163419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:14.205 [DEBUG] [Thread-163419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:14.208 [DEBUG] [Thread-163419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:14.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:14.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:09:14.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:09:14.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:09:14.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:14.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:09:14.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:14.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:09:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.672981 -999.00  +13.20  15.51     47   +2.30 1 1 1 1 1   887    0 9.51 -56.87 ----- 15.5 15.5 160.2 20.0 15.7 -27.2 15.6 -25.9 16.3 -26.5 16.9 -27.8
2025-09-29T18:09:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:09:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:09:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.672981
2025-09-29T18:09:14.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:09:14.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:09:14.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:09:14.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:09:14.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:09:14.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:09:07', tmtdew=12.97, humidity=40.78, cloud=0.0, wind=19.85, temperature=13.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:09:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:09:14.233 [DEBUG] [Thread-163419] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:14.317 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:09:14.326 [DEBUG] [Thread-163422] [transport.py] [_log()] starting thread (client mode): 0x2e3c2800
2025-09-29T18:09:14.327 [DEBUG] [Thread-163422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:14.342 [DEBUG] [Thread-163422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:09:14.342 [INFO] [Thread-163422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:09:14.349 [DEBUG] [Thread-163422] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] Compression: none
2025-09-29T18:09:14.350 [DEBUG] [Thread-163422] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:14.407 [DEBUG] [Thread-163422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:14.408 [DEBUG] [Thread-163422] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:14.408 [DEBUG] [Thread-163422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:09:14.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:09:14.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:14.464 [DEBUG] [Thread-163422] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:14.464 [DEBUG] [Thread-163422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:14.464 [DEBUG] [Thread-163422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:14.464 [DEBUG] [Thread-163422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:09:14.464 [DEBUG] [Thread-163422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:14.482 [INFO] [Thread-163422] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:14.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:09:14.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:15.507 [DEBUG] [Thread-163422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:15.507 [DEBUG] [Thread-163422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:15.557 [DEBUG] [Thread-163422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:15.557 [DEBUG] [Thread-163422] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:15.566 [DEBUG] [Thread-163422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:15.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:15.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:09:15.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:09:15.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:15.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:15.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:15.601 [DEBUG] [Thread-163422] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:19.752 [DEBUG] [Thread-163424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:09:25.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:09:25.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:09:25.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:09:26.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 9, 7), 12.97, 40.78, 0.0, 19.85, 13.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:09:26.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:09:07
2025-09-29T18:09:26.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:09:26.457 [DEBUG] [Thread-163425] [transport.py] [_log()] starting thread (client mode): 0x2b9222c0
2025-09-29T18:09:26.457 [DEBUG] [Thread-163425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:26.469 [DEBUG] [Thread-163425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:09:26.469 [INFO] [Thread-163425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:26.472 [DEBUG] [Thread-163425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:26.473 [DEBUG] [Thread-163425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:26.473 [DEBUG] [Thread-163425] [transport.py] [_log()] Compression: none
2025-09-29T18:09:26.473 [DEBUG] [Thread-163425] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:26.483 [DEBUG] [Thread-163425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:26.483 [DEBUG] [Thread-163425] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:26.483 [DEBUG] [Thread-163425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:09:26.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:09:26.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:26.484 [DEBUG] [Thread-163425] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:26.484 [DEBUG] [Thread-163425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:26.484 [DEBUG] [Thread-163425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:26.484 [DEBUG] [Thread-163425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:09:26.484 [DEBUG] [Thread-163425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:26.498 [INFO] [Thread-163425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:26.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:27.180 [DEBUG] [Thread-163425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:27.180 [DEBUG] [Thread-163425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:27.180 [DEBUG] [Thread-163425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:09:27.221 [DEBUG] [Thread-163425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:27.221 [DEBUG] [Thread-163425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:27.224 [DEBUG] [Thread-163425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:27.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:27.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:09:27.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:09:27.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:09:27.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:27.247 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:09:27.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:27.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:27.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:09:27.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.672981 -999.00  +13.20  15.51     47   +2.30 1 1 1 1 1   887    0 9.51 -56.87 ----- 15.5 15.5 160.2 20.0 15.7 -27.2 15.6 -25.9 16.3 -26.5 16.9 -27.8
2025-09-29T18:09:27.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:09:27.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:09:27.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.672981
2025-09-29T18:09:27.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:09:27.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:09:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:09:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:09:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:09:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:09:07', tmtdew=12.97, humidity=40.78, cloud=0.0, wind=19.85, temperature=13.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:09:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:09:27.250 [DEBUG] [Thread-163425] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:27.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:09:27.347 [DEBUG] [Thread-163428] [transport.py] [_log()] starting thread (client mode): 0x2b922c80
2025-09-29T18:09:27.347 [DEBUG] [Thread-163428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:27.362 [DEBUG] [Thread-163428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:09:27.362 [INFO] [Thread-163428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:09:27.369 [DEBUG] [Thread-163428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] Compression: none
2025-09-29T18:09:27.370 [DEBUG] [Thread-163428] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:27.427 [DEBUG] [Thread-163428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:27.427 [DEBUG] [Thread-163428] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:27.428 [DEBUG] [Thread-163428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:09:27.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:09:27.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:27.483 [DEBUG] [Thread-163428] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:27.484 [DEBUG] [Thread-163428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:27.484 [DEBUG] [Thread-163428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:27.484 [DEBUG] [Thread-163428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:09:27.484 [DEBUG] [Thread-163428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:27.503 [INFO] [Thread-163428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:27.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:09:27.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:28.560 [DEBUG] [Thread-163428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:28.560 [DEBUG] [Thread-163428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:28.608 [DEBUG] [Thread-163428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:28.608 [DEBUG] [Thread-163428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:28.617 [DEBUG] [Thread-163428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:28.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:28.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:09:28.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:09:28.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:28.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:28.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:28.651 [DEBUG] [Thread-163428] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:34.789 [DEBUG] [Thread-163430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:09:35.534 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:09:35.535 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:09:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:09:38.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:09:38.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:09:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 9, 7), 12.97, 40.78, 0.0, 19.85, 13.38, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:09:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:09:07
2025-09-29T18:09:39.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:09:39.512 [DEBUG] [Thread-163431] [transport.py] [_log()] starting thread (client mode): 0x2e3c1570
2025-09-29T18:09:39.513 [DEBUG] [Thread-163431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:39.532 [DEBUG] [Thread-163431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:09:39.532 [INFO] [Thread-163431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:39.533 [DEBUG] [Thread-163431] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] Compression: none
2025-09-29T18:09:39.534 [DEBUG] [Thread-163431] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:39.543 [DEBUG] [Thread-163431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:39.544 [DEBUG] [Thread-163431] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:39.544 [DEBUG] [Thread-163431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:09:39.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:09:39.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:39.544 [DEBUG] [Thread-163431] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:39.545 [DEBUG] [Thread-163431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:39.545 [DEBUG] [Thread-163431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:39.545 [DEBUG] [Thread-163431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:09:39.545 [DEBUG] [Thread-163431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:39.556 [INFO] [Thread-163431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:39.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:40.182 [DEBUG] [Thread-163431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:40.182 [DEBUG] [Thread-163431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:40.182 [DEBUG] [Thread-163431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:09:40.223 [DEBUG] [Thread-163431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:40.223 [DEBUG] [Thread-163431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:40.225 [DEBUG] [Thread-163431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:40.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:40.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:09:40.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:09:40.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:09:40.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:40.244 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:09:40.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:40.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:09:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.672981 -999.00  +13.20  15.51     47   +2.30 1 1 1 1 1   887    0 9.51 -56.87 ----- 15.5 15.5 160.2 20.0 15.7 -27.2 15.6 -25.9 16.3 -26.5 16.9 -27.8
2025-09-29T18:09:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:09:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:09:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.672981
2025-09-29T18:09:40.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:09:40.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:09:40.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:09:40.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:09:40.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:09:40.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:09:07', tmtdew=12.97, humidity=40.78, cloud=0.0, wind=19.85, temperature=13.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:09:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:09:40.245 [DEBUG] [Thread-163431] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:40.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:09:40.335 [DEBUG] [Thread-163434] [transport.py] [_log()] starting thread (client mode): 0x2b920d00
2025-09-29T18:09:40.335 [DEBUG] [Thread-163434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:40.349 [DEBUG] [Thread-163434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:09:40.349 [INFO] [Thread-163434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] Compression: none
2025-09-29T18:09:40.357 [DEBUG] [Thread-163434] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:40.413 [DEBUG] [Thread-163434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:40.414 [DEBUG] [Thread-163434] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:40.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:09:40.414 [DEBUG] [Thread-163434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:09:40.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:40.471 [DEBUG] [Thread-163434] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:40.471 [DEBUG] [Thread-163434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:40.471 [DEBUG] [Thread-163434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:40.471 [DEBUG] [Thread-163434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:09:40.471 [DEBUG] [Thread-163434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:40.486 [INFO] [Thread-163434] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:40.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:09:40.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:41.472 [DEBUG] [Thread-163434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:41.473 [DEBUG] [Thread-163434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:41.521 [DEBUG] [Thread-163434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:41.521 [DEBUG] [Thread-163434] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:41.530 [DEBUG] [Thread-163434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:41.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:41.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:09:41.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:09:41.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:41.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:41.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:41.565 [DEBUG] [Thread-163434] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:49.812 [DEBUG] [Thread-163436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:09:51.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:09:51.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:09:51.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:09:51.946 [DEBUG] [Thread-163437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:09:52.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 9, 39), 12.93, 41.24, 0.0, 22.5, 13.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:09:52.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:09:39
2025-09-29T18:09:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:09:52.438 [DEBUG] [Thread-163438] [transport.py] [_log()] starting thread (client mode): 0x2e348520
2025-09-29T18:09:52.438 [DEBUG] [Thread-163438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:52.457 [DEBUG] [Thread-163438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:09:52.458 [INFO] [Thread-163438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:52.461 [DEBUG] [Thread-163438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:52.462 [DEBUG] [Thread-163438] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:52.462 [DEBUG] [Thread-163438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:52.462 [DEBUG] [Thread-163438] [transport.py] [_log()] Compression: none
2025-09-29T18:09:52.462 [DEBUG] [Thread-163438] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:52.470 [DEBUG] [Thread-163438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:52.470 [DEBUG] [Thread-163438] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:52.471 [DEBUG] [Thread-163438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:09:52.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:09:52.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:52.472 [DEBUG] [Thread-163438] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:52.472 [DEBUG] [Thread-163438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:52.472 [DEBUG] [Thread-163438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:52.472 [DEBUG] [Thread-163438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:09:52.472 [DEBUG] [Thread-163438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:52.486 [INFO] [Thread-163438] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:52.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:53.089 [DEBUG] [Thread-163438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:53.090 [DEBUG] [Thread-163438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:53.090 [DEBUG] [Thread-163438] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:09:53.130 [DEBUG] [Thread-163438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:53.130 [DEBUG] [Thread-163438] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:53.133 [DEBUG] [Thread-163438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:53.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:53.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:09:53.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:09:53.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:09:53.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:53.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:09:53.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:53.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:53.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:09:53.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.673328 -999.00  +13.20  14.53     47   +2.30 1 1 1 1 1   887    0 9.05 -58.49 ----- 14.5 14.5 153.6 19.8 15.7 -26.9 15.6 -26.4 16.3 -26.4 16.8 -28.0
2025-09-29T18:09:53.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:09:53.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:09:53.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.673328
2025-09-29T18:09:53.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:09:53.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:09:53.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:09:53.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:09:53.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:09:53.156 [DEBUG] [Thread-163438] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:09:53.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:09:39', tmtdew=12.93, humidity=41.24, cloud=0.0, wind=22.5, temperature=13.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:09:35.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:09:53.249 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:09:53.258 [DEBUG] [Thread-163441] [transport.py] [_log()] starting thread (client mode): 0x2b9f07f0
2025-09-29T18:09:53.258 [DEBUG] [Thread-163441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:09:53.273 [DEBUG] [Thread-163441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:09:53.273 [INFO] [Thread-163441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:09:53.280 [DEBUG] [Thread-163441] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] client lang: <none>
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] server lang: <none>
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] kex follows: False
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] Compression: none
2025-09-29T18:09:53.281 [DEBUG] [Thread-163441] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:09:53.338 [DEBUG] [Thread-163441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:09:53.339 [DEBUG] [Thread-163441] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:09:53.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:09:53.340 [DEBUG] [Thread-163441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:09:53.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:09:53.395 [DEBUG] [Thread-163441] [transport.py] [_log()] userauth is OK
2025-09-29T18:09:53.395 [DEBUG] [Thread-163441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:09:53.395 [DEBUG] [Thread-163441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:09:53.395 [DEBUG] [Thread-163441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:09:53.395 [DEBUG] [Thread-163441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:09:53.418 [INFO] [Thread-163441] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:09:53.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:09:53.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:09:54.418 [DEBUG] [Thread-163441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:09:54.418 [DEBUG] [Thread-163441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:09:54.466 [DEBUG] [Thread-163441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:09:54.466 [DEBUG] [Thread-163441] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:09:54.475 [DEBUG] [Thread-163441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:09:54.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:09:54.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:09:54.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:09:54.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:09:54.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:09:54.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:09:54.508 [DEBUG] [Thread-163441] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:10:04.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:10:04.510 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:10:04.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:10:04.837 [DEBUG] [Thread-163443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:10:05.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 9, 39), 12.93, 41.24, 0.0, 22.5, 13.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:10:05.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:09:39
2025-09-29T18:10:05.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:10:05.358 [DEBUG] [Thread-163444] [transport.py] [_log()] starting thread (client mode): 0x2b9cf910
2025-09-29T18:10:05.358 [DEBUG] [Thread-163444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:10:05.383 [DEBUG] [Thread-163444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:10:05.383 [INFO] [Thread-163444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:10:05.384 [DEBUG] [Thread-163444] [transport.py] [_log()] client lang: <none>
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] server lang: <none>
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] kex follows: False
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] Compression: none
2025-09-29T18:10:05.385 [DEBUG] [Thread-163444] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:10:05.395 [DEBUG] [Thread-163444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:10:05.395 [DEBUG] [Thread-163444] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:10:05.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:10:05.396 [DEBUG] [Thread-163444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:10:05.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:10:05.398 [DEBUG] [Thread-163444] [transport.py] [_log()] userauth is OK
2025-09-29T18:10:05.398 [DEBUG] [Thread-163444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:10:05.399 [DEBUG] [Thread-163444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:10:05.399 [DEBUG] [Thread-163444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:10:05.399 [DEBUG] [Thread-163444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:10:05.408 [INFO] [Thread-163444] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:10:05.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:10:14.444 [DEBUG] [Thread-163444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:10:14.444 [DEBUG] [Thread-163444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:10:14.444 [DEBUG] [Thread-163444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:10:14.484 [DEBUG] [Thread-163444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:10:14.485 [DEBUG] [Thread-163444] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:10:14.488 [DEBUG] [Thread-163444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:10:14.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:10:14.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:10:14.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:10:14.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:10:14.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:10:14.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:10:14.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:10:14.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:10:14.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:10:14.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.673328 -999.00  +13.20  14.53     47   +2.30 1 1 1 1 1   887    0 9.05 -58.49 ----- 14.5 14.5 153.6 19.8 15.7 -26.9 15.6 -26.4 16.3 -26.4 16.8 -28.0
2025-09-29T18:10:14.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:10:14.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:10:14.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.673328
2025-09-29T18:10:14.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:10:14.561 [DEBUG] [Thread-163444] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:10:14.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:10:14.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:10:14.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:10:14.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:10:14.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:09:39', tmtdew=12.93, humidity=41.24, cloud=0.0, wind=22.5, temperature=13.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:09:35.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:10:14.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:10:14.662 [DEBUG] [Thread-163447] [transport.py] [_log()] starting thread (client mode): 0x2e38ee60
2025-09-29T18:10:14.662 [DEBUG] [Thread-163447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:10:14.677 [DEBUG] [Thread-163447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:10:14.677 [INFO] [Thread-163447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] client lang: <none>
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] server lang: <none>
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] kex follows: False
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:10:14.685 [DEBUG] [Thread-163447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:10:14.686 [DEBUG] [Thread-163447] [transport.py] [_log()] Compression: none
2025-09-29T18:10:14.686 [DEBUG] [Thread-163447] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:10:14.743 [DEBUG] [Thread-163447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:10:14.743 [DEBUG] [Thread-163447] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:10:14.744 [DEBUG] [Thread-163447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:10:14.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:10:14.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:10:14.799 [DEBUG] [Thread-163447] [transport.py] [_log()] userauth is OK
2025-09-29T18:10:14.799 [DEBUG] [Thread-163447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:10:14.799 [DEBUG] [Thread-163447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:10:14.799 [DEBUG] [Thread-163447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:10:14.799 [DEBUG] [Thread-163447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:10:14.822 [INFO] [Thread-163447] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:10:14.823 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:10:14.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:10:15.840 [DEBUG] [Thread-163447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:10:15.840 [DEBUG] [Thread-163447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:10:15.888 [DEBUG] [Thread-163447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:10:15.888 [DEBUG] [Thread-163447] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:10:15.897 [DEBUG] [Thread-163447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:10:15.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:10:15.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:10:15.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:10:15.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:10:15.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:10:15.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:10:15.932 [DEBUG] [Thread-163447] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:10:19.872 [DEBUG] [Thread-163449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:10:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:10:25.935 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:10:25.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:10:26.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 10, 11), 12.92, 41.29, 0.0, 21.35, 13.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:10:26.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:10:11
2025-09-29T18:10:26.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:10:26.782 [DEBUG] [Thread-163450] [transport.py] [_log()] starting thread (client mode): 0x2b9f31c0
2025-09-29T18:10:26.782 [DEBUG] [Thread-163450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:10:26.804 [DEBUG] [Thread-163450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:10:26.804 [INFO] [Thread-163450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:10:26.807 [DEBUG] [Thread-163450] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] client lang: <none>
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] server lang: <none>
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] kex follows: False
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] Compression: none
2025-09-29T18:10:26.808 [DEBUG] [Thread-163450] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:10:26.825 [DEBUG] [Thread-163450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:10:26.825 [DEBUG] [Thread-163450] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:10:26.826 [DEBUG] [Thread-163450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:10:26.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:10:26.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:10:26.828 [DEBUG] [Thread-163450] [transport.py] [_log()] userauth is OK
2025-09-29T18:10:26.828 [DEBUG] [Thread-163450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:10:26.828 [DEBUG] [Thread-163450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:10:26.828 [DEBUG] [Thread-163450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:10:26.829 [DEBUG] [Thread-163450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:10:26.847 [INFO] [Thread-163450] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:10:26.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:10:27.487 [DEBUG] [Thread-163450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:10:27.487 [DEBUG] [Thread-163450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:10:27.487 [DEBUG] [Thread-163450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:10:27.528 [DEBUG] [Thread-163450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:10:27.528 [DEBUG] [Thread-163450] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:10:27.530 [DEBUG] [Thread-163450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:10:27.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:10:27.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:10:27.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:10:27.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:10:27.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:10:27.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:10:27.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:10:27.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:10:27.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:10:27.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.673675 -999.00  +13.20  16.60     47   +2.20 1 1 1 1 1   887    0 9.45 -58.29 ----- 16.6 16.6 144.2 20.5 15.7 -26.8 15.5 -25.8 16.3 -26.5 16.8 -27.5
2025-09-29T18:10:27.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:10:27.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:10:27.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.673675
2025-09-29T18:10:27.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:10:27.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:10:27.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:10:27.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:10:27.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:10:27.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:10:11', tmtdew=12.92, humidity=41.29, cloud=0.0, wind=21.35, temperature=13.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:10:05.520', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:10:27.543 [DEBUG] [Thread-163450] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:10:27.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:10:27.624 [DEBUG] [Thread-163453] [transport.py] [_log()] starting thread (client mode): 0x2b9cebc0
2025-09-29T18:10:27.625 [DEBUG] [Thread-163453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:10:27.640 [DEBUG] [Thread-163453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:10:27.640 [INFO] [Thread-163453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:10:27.647 [DEBUG] [Thread-163453] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:10:27.647 [DEBUG] [Thread-163453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:10:27.647 [DEBUG] [Thread-163453] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] client lang: <none>
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] server lang: <none>
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] kex follows: False
2025-09-29T18:10:27.648 [DEBUG] [Thread-163453] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:10:27.649 [DEBUG] [Thread-163453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:10:27.649 [DEBUG] [Thread-163453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:10:27.649 [DEBUG] [Thread-163453] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:10:27.649 [DEBUG] [Thread-163453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:10:27.649 [DEBUG] [Thread-163453] [transport.py] [_log()] Compression: none
2025-09-29T18:10:27.649 [DEBUG] [Thread-163453] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:10:27.707 [DEBUG] [Thread-163453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:10:27.707 [DEBUG] [Thread-163453] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:10:27.708 [DEBUG] [Thread-163453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:10:27.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:10:27.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:10:27.763 [DEBUG] [Thread-163453] [transport.py] [_log()] userauth is OK
2025-09-29T18:10:27.763 [DEBUG] [Thread-163453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:10:27.764 [DEBUG] [Thread-163453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:10:27.764 [DEBUG] [Thread-163453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:10:27.764 [DEBUG] [Thread-163453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:10:27.783 [INFO] [Thread-163453] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:10:27.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:10:27.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:10:28.787 [DEBUG] [Thread-163453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:10:28.787 [DEBUG] [Thread-163453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:10:28.835 [DEBUG] [Thread-163453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:10:28.835 [DEBUG] [Thread-163453] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:10:28.844 [DEBUG] [Thread-163453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:10:28.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:10:28.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:10:28.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:10:28.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:10:28.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:10:28.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:10:28.879 [DEBUG] [Thread-163453] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:10:34.900 [DEBUG] [Thread-163455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:10:35.680 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:10:35.682 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:10:38.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:10:38.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:10:38.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:10:39.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 10, 11), 12.92, 41.29, 0.0, 21.35, 13.4, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:10:39.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:10:11
2025-09-29T18:10:39.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:10:39.719 [DEBUG] [Thread-163456] [transport.py] [_log()] starting thread (client mode): 0x2e377130
2025-09-29T18:10:39.719 [DEBUG] [Thread-163456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:10:39.739 [DEBUG] [Thread-163456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:10:39.740 [INFO] [Thread-163456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:10:39.743 [DEBUG] [Thread-163456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:10:39.743 [DEBUG] [Thread-163456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] client lang: <none>
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] server lang: <none>
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] kex follows: False
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] Compression: none
2025-09-29T18:10:39.744 [DEBUG] [Thread-163456] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:10:39.757 [DEBUG] [Thread-163456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:10:39.757 [DEBUG] [Thread-163456] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:10:39.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:10:39.758 [DEBUG] [Thread-163456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:10:39.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:10:39.800 [DEBUG] [Thread-163456] [transport.py] [_log()] userauth is OK
2025-09-29T18:10:39.801 [DEBUG] [Thread-163456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:10:39.801 [DEBUG] [Thread-163456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:10:39.801 [DEBUG] [Thread-163456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:10:39.801 [DEBUG] [Thread-163456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:10:39.824 [INFO] [Thread-163456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:10:39.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:10:40.587 [DEBUG] [Thread-163456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:10:40.588 [DEBUG] [Thread-163456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:10:40.588 [DEBUG] [Thread-163456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:10:40.628 [DEBUG] [Thread-163456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:10:40.628 [DEBUG] [Thread-163456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:10:40.631 [DEBUG] [Thread-163456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:10:40.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:10:40.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:10:40.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:10:40.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:10:40.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:10:40.654 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:10:40.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:10:40.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:10:40.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:10:40.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.673675 -999.00  +13.20  16.60     47   +2.20 1 1 1 1 1   887    0 9.45 -58.29 ----- 16.6 16.6 144.2 20.5 15.7 -26.8 15.5 -25.8 16.3 -26.5 16.8 -27.5
2025-09-29T18:10:40.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:10:40.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:10:40.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.673675
2025-09-29T18:10:40.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:10:40.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:10:40.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:10:40.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:10:40.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:10:40.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:10:11', tmtdew=12.92, humidity=41.29, cloud=0.0, wind=21.35, temperature=13.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:10:05.520', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:10:40.656 [DEBUG] [Thread-163456] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:10:40.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:10:40.762 [DEBUG] [Thread-163459] [transport.py] [_log()] starting thread (client mode): 0x2e38cbb0
2025-09-29T18:10:40.762 [DEBUG] [Thread-163459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:10:40.777 [DEBUG] [Thread-163459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:10:40.777 [INFO] [Thread-163459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:10:40.784 [DEBUG] [Thread-163459] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] client lang: <none>
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] server lang: <none>
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] kex follows: False
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:10:40.785 [DEBUG] [Thread-163459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:10:40.786 [DEBUG] [Thread-163459] [transport.py] [_log()] Compression: none
2025-09-29T18:10:40.786 [DEBUG] [Thread-163459] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:10:40.843 [DEBUG] [Thread-163459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:10:40.844 [DEBUG] [Thread-163459] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:10:40.845 [DEBUG] [Thread-163459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:10:40.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:10:40.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:10:40.904 [DEBUG] [Thread-163459] [transport.py] [_log()] userauth is OK
2025-09-29T18:10:40.904 [DEBUG] [Thread-163459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:10:40.904 [DEBUG] [Thread-163459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:10:40.905 [DEBUG] [Thread-163459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:10:40.905 [DEBUG] [Thread-163459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:10:40.924 [INFO] [Thread-163459] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:10:40.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:10:40.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:10:41.905 [DEBUG] [Thread-163459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:10:41.905 [DEBUG] [Thread-163459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:10:41.956 [DEBUG] [Thread-163459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:10:41.956 [DEBUG] [Thread-163459] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:10:41.965 [DEBUG] [Thread-163459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:10:41.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:10:41.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:10:41.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:10:41.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:10:41.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:10:41.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:10:42.000 [DEBUG] [Thread-163459] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:10:49.933 [DEBUG] [Thread-163461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:10:51.996 [DEBUG] [Thread-163462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:10:52.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:10:52.000 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:10:52.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:10:52.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 10, 43), 13.0, 41.18, 0.0, 19.5, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:10:52.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:10:43
2025-09-29T18:10:52.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:10:52.836 [DEBUG] [Thread-163463] [transport.py] [_log()] starting thread (client mode): 0x2b91f640
2025-09-29T18:10:52.836 [DEBUG] [Thread-163463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:10:52.855 [DEBUG] [Thread-163463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:10:52.856 [INFO] [Thread-163463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:10:52.859 [DEBUG] [Thread-163463] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:10:52.859 [DEBUG] [Thread-163463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:10:52.859 [DEBUG] [Thread-163463] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:10:52.859 [DEBUG] [Thread-163463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:52.859 [DEBUG] [Thread-163463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:52.859 [DEBUG] [Thread-163463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:52.859 [DEBUG] [Thread-163463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] client lang: <none>
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] server lang: <none>
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] kex follows: False
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] Compression: none
2025-09-29T18:10:52.860 [DEBUG] [Thread-163463] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:10:52.876 [DEBUG] [Thread-163463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:10:52.876 [DEBUG] [Thread-163463] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:10:52.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:10:52.877 [DEBUG] [Thread-163463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:10:52.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:10:52.879 [DEBUG] [Thread-163463] [transport.py] [_log()] userauth is OK
2025-09-29T18:10:52.879 [DEBUG] [Thread-163463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:10:52.879 [DEBUG] [Thread-163463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:10:52.879 [DEBUG] [Thread-163463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:10:52.880 [DEBUG] [Thread-163463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:10:52.897 [INFO] [Thread-163463] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:10:52.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:10:53.516 [DEBUG] [Thread-163463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:10:53.516 [DEBUG] [Thread-163463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:10:53.516 [DEBUG] [Thread-163463] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:10:53.557 [DEBUG] [Thread-163463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:10:53.557 [DEBUG] [Thread-163463] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:10:53.561 [DEBUG] [Thread-163463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:10:53.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:10:53.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:10:53.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:10:53.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:10:53.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:10:53.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:10:53.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.674023 -999.00  +13.20  16.30     47   +2.20 1 1 1 1 1   887    0 9.59 -58.12 ----- 16.3 16.3 146.8 19.2 15.6 -26.7 15.5 -25.8 16.3 -26.6 16.8 -27.5
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.674023
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:10:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:10:43', tmtdew=13.0, humidity=41.18, cloud=0.0, wind=19.5, temperature=13.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:10:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:10:53.578 [DEBUG] [Thread-163463] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:10:53.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:10:53.672 [DEBUG] [Thread-163466] [transport.py] [_log()] starting thread (client mode): 0x2e38dd50
2025-09-29T18:10:53.672 [DEBUG] [Thread-163466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:10:53.686 [DEBUG] [Thread-163466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:10:53.686 [INFO] [Thread-163466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:10:53.694 [DEBUG] [Thread-163466] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:10:53.694 [DEBUG] [Thread-163466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:10:53.694 [DEBUG] [Thread-163466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:10:53.694 [DEBUG] [Thread-163466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:53.694 [DEBUG] [Thread-163466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] client lang: <none>
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] server lang: <none>
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] kex follows: False
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:10:53.695 [DEBUG] [Thread-163466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:10:53.696 [DEBUG] [Thread-163466] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:10:53.696 [DEBUG] [Thread-163466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:10:53.696 [DEBUG] [Thread-163466] [transport.py] [_log()] Compression: none
2025-09-29T18:10:53.696 [DEBUG] [Thread-163466] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:10:53.751 [DEBUG] [Thread-163466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:10:53.751 [DEBUG] [Thread-163466] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:10:53.752 [DEBUG] [Thread-163466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:10:53.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:10:53.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:10:53.807 [DEBUG] [Thread-163466] [transport.py] [_log()] userauth is OK
2025-09-29T18:10:53.807 [DEBUG] [Thread-163466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:10:53.807 [DEBUG] [Thread-163466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:10:53.807 [DEBUG] [Thread-163466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:10:53.807 [DEBUG] [Thread-163466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:10:53.830 [INFO] [Thread-163466] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:10:53.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:10:53.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:10:54.822 [DEBUG] [Thread-163466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:10:54.822 [DEBUG] [Thread-163466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:10:54.870 [DEBUG] [Thread-163466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:10:54.870 [DEBUG] [Thread-163466] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:10:54.879 [DEBUG] [Thread-163466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:10:54.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:10:54.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:10:54.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:10:54.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:10:54.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:10:54.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:10:54.913 [DEBUG] [Thread-163466] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:04.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:11:04.916 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:11:04.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:11:04.962 [DEBUG] [Thread-163468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:11:05.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 10, 43), 13.0, 41.18, 0.0, 19.5, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:11:05.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:10:43
2025-09-29T18:11:05.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:11:05.773 [DEBUG] [Thread-163469] [transport.py] [_log()] starting thread (client mode): 0x2b9f0790
2025-09-29T18:11:05.773 [DEBUG] [Thread-163469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:05.793 [DEBUG] [Thread-163469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:11:05.793 [INFO] [Thread-163469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:11:05.796 [DEBUG] [Thread-163469] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:05.796 [DEBUG] [Thread-163469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:11:05.796 [DEBUG] [Thread-163469] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] Compression: none
2025-09-29T18:11:05.797 [DEBUG] [Thread-163469] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:05.816 [DEBUG] [Thread-163469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:05.816 [DEBUG] [Thread-163469] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:05.817 [DEBUG] [Thread-163469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:11:05.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:11:05.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:05.818 [DEBUG] [Thread-163469] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:05.819 [DEBUG] [Thread-163469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:05.819 [DEBUG] [Thread-163469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:05.819 [DEBUG] [Thread-163469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:11:05.819 [DEBUG] [Thread-163469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:05.841 [INFO] [Thread-163469] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:05.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:06.615 [DEBUG] [Thread-163469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:06.615 [DEBUG] [Thread-163469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:06.616 [DEBUG] [Thread-163469] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:11:06.656 [DEBUG] [Thread-163469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:06.656 [DEBUG] [Thread-163469] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:06.659 [DEBUG] [Thread-163469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:06.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:06.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:11:06.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:11:06.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:11:06.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:06.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:11:06.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:06.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:06.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:11:06.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.674023 -999.00  +13.20  16.30     47   +2.20 1 1 1 1 1   887    0 9.59 -58.12 ----- 16.3 16.3 146.8 19.2 15.6 -26.7 15.5 -25.8 16.3 -26.6 16.8 -27.5
2025-09-29T18:11:06.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:11:06.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:11:06.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.674023
2025-09-29T18:11:06.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:11:06.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:11:06.685 [DEBUG] [Thread-163469] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:06.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:11:06.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:11:06.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:11:06.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:10:43', tmtdew=13.0, humidity=41.18, cloud=0.0, wind=19.5, temperature=13.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:10:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:11:06.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:11:06.779 [DEBUG] [Thread-163472] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d90
2025-09-29T18:11:06.779 [DEBUG] [Thread-163472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:06.795 [DEBUG] [Thread-163472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:11:06.795 [INFO] [Thread-163472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:11:06.802 [DEBUG] [Thread-163472] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:06.802 [DEBUG] [Thread-163472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:11:06.802 [DEBUG] [Thread-163472] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:06.802 [DEBUG] [Thread-163472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:06.802 [DEBUG] [Thread-163472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:06.802 [DEBUG] [Thread-163472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:06.802 [DEBUG] [Thread-163472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:06.802 [DEBUG] [Thread-163472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] Compression: none
2025-09-29T18:11:06.803 [DEBUG] [Thread-163472] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:06.865 [DEBUG] [Thread-163472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:06.865 [DEBUG] [Thread-163472] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:06.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:11:06.866 [DEBUG] [Thread-163472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:11:06.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:06.923 [DEBUG] [Thread-163472] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:06.923 [DEBUG] [Thread-163472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:06.924 [DEBUG] [Thread-163472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:06.924 [DEBUG] [Thread-163472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:11:06.924 [DEBUG] [Thread-163472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:06.947 [INFO] [Thread-163472] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:06.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:11:06.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:07.942 [DEBUG] [Thread-163472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:07.943 [DEBUG] [Thread-163472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:07.990 [DEBUG] [Thread-163472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:07.990 [DEBUG] [Thread-163472] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:07.999 [DEBUG] [Thread-163472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:08.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:08.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:11:08.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:11:08.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:08.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:08.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:08.034 [DEBUG] [Thread-163472] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:18.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:11:18.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:11:18.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:11:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 11, 15), 12.97, 41.26, 0.0, 19.8, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:11:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:11:15
2025-09-29T18:11:18.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:11:18.871 [DEBUG] [Thread-163474] [transport.py] [_log()] starting thread (client mode): 0x2b9ce3e0
2025-09-29T18:11:18.871 [DEBUG] [Thread-163474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:18.896 [DEBUG] [Thread-163474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:11:18.896 [INFO] [Thread-163474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:11:18.899 [DEBUG] [Thread-163474] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:18.899 [DEBUG] [Thread-163474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:11:18.899 [DEBUG] [Thread-163474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:18.900 [DEBUG] [Thread-163474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:18.901 [DEBUG] [Thread-163474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:18.901 [DEBUG] [Thread-163474] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:18.901 [DEBUG] [Thread-163474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:18.901 [DEBUG] [Thread-163474] [transport.py] [_log()] Compression: none
2025-09-29T18:11:18.901 [DEBUG] [Thread-163474] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:18.920 [DEBUG] [Thread-163474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:18.920 [DEBUG] [Thread-163474] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:18.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:11:18.921 [DEBUG] [Thread-163474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:11:18.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:18.922 [DEBUG] [Thread-163474] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:18.922 [DEBUG] [Thread-163474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:18.922 [DEBUG] [Thread-163474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:18.922 [DEBUG] [Thread-163474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:11:18.922 [DEBUG] [Thread-163474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:18.934 [INFO] [Thread-163474] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:18.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:19.687 [DEBUG] [Thread-163474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:19.687 [DEBUG] [Thread-163474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:19.688 [DEBUG] [Thread-163474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:11:19.728 [DEBUG] [Thread-163474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:19.729 [DEBUG] [Thread-163474] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:19.731 [DEBUG] [Thread-163474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:19.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:19.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:11:19.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:11:19.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:11:19.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:19.752 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:11:19.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:19.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:19.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:11:19.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.674023 -999.00  +13.20  16.30     47   +2.20 1 1 1 1 1   887    0 9.59 -58.12 ----- 16.3 16.3 146.8 19.2 15.6 -26.7 15.5 -25.8 16.3 -26.6 16.8 -27.5
2025-09-29T18:11:19.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:11:19.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:11:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.674023
2025-09-29T18:11:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:11:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:11:19.755 [DEBUG] [Thread-163474] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:11:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:11:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:11:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:11:15', tmtdew=12.97, humidity=41.26, cloud=0.0, wind=19.8, temperature=13.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:10:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:11:19.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:11:19.847 [DEBUG] [Thread-163477] [transport.py] [_log()] starting thread (client mode): 0x2b9cbfa0
2025-09-29T18:11:19.847 [DEBUG] [Thread-163477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:19.862 [DEBUG] [Thread-163477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:11:19.862 [INFO] [Thread-163477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:11:19.869 [DEBUG] [Thread-163477] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:19.869 [DEBUG] [Thread-163477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:11:19.869 [DEBUG] [Thread-163477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] Compression: none
2025-09-29T18:11:19.870 [DEBUG] [Thread-163477] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:19.926 [DEBUG] [Thread-163477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:19.926 [DEBUG] [Thread-163477] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:19.926 [DEBUG] [Thread-163477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:11:19.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:11:19.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:19.983 [DEBUG] [Thread-163477] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:19.983 [DEBUG] [Thread-163477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:19.983 [DEBUG] [Thread-163477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:19.984 [DEBUG] [Thread-163477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:11:19.984 [DEBUG] [Thread-163477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:19.996 [DEBUG] [Thread-163479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:11:20.009 [INFO] [Thread-163477] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:20.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:11:20.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:21.016 [DEBUG] [Thread-163477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:21.016 [DEBUG] [Thread-163477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:21.064 [DEBUG] [Thread-163477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:21.064 [DEBUG] [Thread-163477] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:21.073 [DEBUG] [Thread-163477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:21.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:21.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:11:21.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:11:21.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:21.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:21.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:21.107 [DEBUG] [Thread-163477] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:31.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:11:31.110 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:11:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:11:31.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 11, 15), 12.97, 41.26, 0.0, 19.8, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:11:31.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:11:15
2025-09-29T18:11:31.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:11:31.943 [DEBUG] [Thread-163480] [transport.py] [_log()] starting thread (client mode): 0x2e34bdf0
2025-09-29T18:11:31.943 [DEBUG] [Thread-163480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:31.965 [DEBUG] [Thread-163480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:11:31.965 [INFO] [Thread-163480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:31.968 [DEBUG] [Thread-163480] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:31.969 [DEBUG] [Thread-163480] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:31.969 [DEBUG] [Thread-163480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:31.969 [DEBUG] [Thread-163480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:31.969 [DEBUG] [Thread-163480] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:31.969 [DEBUG] [Thread-163480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:31.969 [DEBUG] [Thread-163480] [transport.py] [_log()] Compression: none
2025-09-29T18:11:31.969 [DEBUG] [Thread-163480] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:31.981 [DEBUG] [Thread-163480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:31.981 [DEBUG] [Thread-163480] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:31.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:11:31.982 [DEBUG] [Thread-163480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:11:31.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:31.984 [DEBUG] [Thread-163480] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:31.984 [DEBUG] [Thread-163480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:31.985 [DEBUG] [Thread-163480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:31.985 [DEBUG] [Thread-163480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:11:31.985 [DEBUG] [Thread-163480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:32.020 [INFO] [Thread-163480] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:32.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:32.654 [DEBUG] [Thread-163480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:32.655 [DEBUG] [Thread-163480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:32.655 [DEBUG] [Thread-163480] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:11:32.695 [DEBUG] [Thread-163480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:32.695 [DEBUG] [Thread-163480] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:32.699 [DEBUG] [Thread-163480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:32.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:32.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:11:32.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:11:32.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:11:32.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:32.726 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:11:32.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:32.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:32.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:11:32.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.674370 -999.00  +13.20  15.58     47   +2.20 1 1 1 1 1   887    0 9.44 -56.62 ----- 15.6 15.6 144.7 22.0 15.6 -26.9 15.5 -25.7 16.2 -26.2 16.7 -27.8
2025-09-29T18:11:32.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:11:32.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:11:32.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.674370
2025-09-29T18:11:32.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:11:32.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:11:32.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:11:32.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:11:32.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:11:32.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:11:15', tmtdew=12.97, humidity=41.26, cloud=0.0, wind=19.8, temperature=13.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:11:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:11:32.729 [DEBUG] [Thread-163480] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:32.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:11:32.826 [DEBUG] [Thread-163483] [transport.py] [_log()] starting thread (client mode): 0x2b94dbd0
2025-09-29T18:11:32.826 [DEBUG] [Thread-163483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:32.841 [DEBUG] [Thread-163483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:11:32.841 [INFO] [Thread-163483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:11:32.849 [DEBUG] [Thread-163483] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:32.849 [DEBUG] [Thread-163483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] Compression: none
2025-09-29T18:11:32.850 [DEBUG] [Thread-163483] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:32.906 [DEBUG] [Thread-163483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:32.907 [DEBUG] [Thread-163483] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:32.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:11:32.908 [DEBUG] [Thread-163483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:11:32.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:32.963 [DEBUG] [Thread-163483] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:32.963 [DEBUG] [Thread-163483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:32.963 [DEBUG] [Thread-163483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:32.963 [DEBUG] [Thread-163483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:11:32.963 [DEBUG] [Thread-163483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:32.983 [INFO] [Thread-163483] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:32.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:11:32.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:33.996 [DEBUG] [Thread-163483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:33.996 [DEBUG] [Thread-163483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:34.044 [DEBUG] [Thread-163483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:34.044 [DEBUG] [Thread-163483] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:34.053 [DEBUG] [Thread-163483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:34.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:34.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:11:34.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:11:34.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:34.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:34.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:34.088 [DEBUG] [Thread-163483] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:35.038 [DEBUG] [Thread-163485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:11:35.843 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:11:35.844 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:11:44.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:11:44.091 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:11:44.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:11:44.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 11, 15), 12.97, 41.26, 0.0, 19.8, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:11:44.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:11:15
2025-09-29T18:11:44.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:11:44.916 [DEBUG] [Thread-163486] [transport.py] [_log()] starting thread (client mode): 0x2b968cd0
2025-09-29T18:11:44.916 [DEBUG] [Thread-163486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:44.937 [DEBUG] [Thread-163486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:11:44.937 [INFO] [Thread-163486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:11:44.940 [DEBUG] [Thread-163486] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:44.940 [DEBUG] [Thread-163486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:11:44.940 [DEBUG] [Thread-163486] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:44.941 [DEBUG] [Thread-163486] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:44.942 [DEBUG] [Thread-163486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:44.942 [DEBUG] [Thread-163486] [transport.py] [_log()] Compression: none
2025-09-29T18:11:44.942 [DEBUG] [Thread-163486] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:44.961 [DEBUG] [Thread-163486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:44.962 [DEBUG] [Thread-163486] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:44.962 [DEBUG] [Thread-163486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:11:44.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:11:44.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:44.964 [DEBUG] [Thread-163486] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:44.964 [DEBUG] [Thread-163486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:44.965 [DEBUG] [Thread-163486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:44.965 [DEBUG] [Thread-163486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:11:44.965 [DEBUG] [Thread-163486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:44.982 [INFO] [Thread-163486] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:44.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:45.747 [DEBUG] [Thread-163486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:45.747 [DEBUG] [Thread-163486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:45.747 [DEBUG] [Thread-163486] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:11:45.788 [DEBUG] [Thread-163486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:45.789 [DEBUG] [Thread-163486] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:45.791 [DEBUG] [Thread-163486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:45.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:45.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:11:45.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:11:45.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:11:45.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:45.809 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:11:45.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:45.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:45.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:11:45.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.674370 -999.00  +13.20  15.58     47   +2.20 1 1 1 1 1   887    0 9.44 -56.62 ----- 15.6 15.6 144.7 22.0 15.6 -26.9 15.5 -25.7 16.2 -26.2 16.7 -27.8
2025-09-29T18:11:45.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:11:45.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:11:45.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.674370
2025-09-29T18:11:45.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:11:45.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:11:45.811 [DEBUG] [Thread-163486] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:45.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:11:45.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:11:45.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:11:45.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:11:15', tmtdew=12.97, humidity=41.26, cloud=0.0, wind=19.8, temperature=13.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:11:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:11:45.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:11:45.908 [DEBUG] [Thread-163489] [transport.py] [_log()] starting thread (client mode): 0x2b9cb4f0
2025-09-29T18:11:45.908 [DEBUG] [Thread-163489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:45.925 [DEBUG] [Thread-163489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:11:45.925 [INFO] [Thread-163489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:11:45.932 [DEBUG] [Thread-163489] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:45.933 [DEBUG] [Thread-163489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:45.934 [DEBUG] [Thread-163489] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:45.934 [DEBUG] [Thread-163489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:45.934 [DEBUG] [Thread-163489] [transport.py] [_log()] Compression: none
2025-09-29T18:11:45.934 [DEBUG] [Thread-163489] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:45.991 [DEBUG] [Thread-163489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:45.991 [DEBUG] [Thread-163489] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:45.992 [DEBUG] [Thread-163489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:11:45.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:11:45.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:46.050 [DEBUG] [Thread-163489] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:46.050 [DEBUG] [Thread-163489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:46.050 [DEBUG] [Thread-163489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:46.050 [DEBUG] [Thread-163489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:11:46.051 [DEBUG] [Thread-163489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:46.069 [INFO] [Thread-163489] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:46.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:11:46.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:47.126 [DEBUG] [Thread-163489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:47.126 [DEBUG] [Thread-163489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:47.174 [DEBUG] [Thread-163489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:47.175 [DEBUG] [Thread-163489] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:47.184 [DEBUG] [Thread-163489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:47.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:47.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:11:47.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:11:47.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:47.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:47.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:47.217 [DEBUG] [Thread-163489] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:50.084 [DEBUG] [Thread-163491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:11:52.033 [DEBUG] [Thread-163492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:11:57.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:11:57.220 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:11:57.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:11:57.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 11, 47), 12.95, 40.81, 0.0, 21.23, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:11:57.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:11:47
2025-09-29T18:11:57.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:11:58.059 [DEBUG] [Thread-163494] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-29T18:11:58.059 [DEBUG] [Thread-163494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:58.079 [DEBUG] [Thread-163494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:11:58.079 [INFO] [Thread-163494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:58.082 [DEBUG] [Thread-163494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:58.083 [DEBUG] [Thread-163494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:58.083 [DEBUG] [Thread-163494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:58.083 [DEBUG] [Thread-163494] [transport.py] [_log()] Compression: none
2025-09-29T18:11:58.083 [DEBUG] [Thread-163494] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:58.099 [DEBUG] [Thread-163494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:58.100 [DEBUG] [Thread-163494] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:58.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:11:58.101 [DEBUG] [Thread-163494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:11:58.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:58.103 [DEBUG] [Thread-163494] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:58.103 [DEBUG] [Thread-163494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:58.104 [DEBUG] [Thread-163494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:58.104 [DEBUG] [Thread-163494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:11:58.104 [DEBUG] [Thread-163494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:58.127 [INFO] [Thread-163494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:58.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:11:58.781 [DEBUG] [Thread-163494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:11:58.781 [DEBUG] [Thread-163494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:11:58.781 [DEBUG] [Thread-163494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:11:58.822 [DEBUG] [Thread-163494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:11:58.822 [DEBUG] [Thread-163494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:11:58.825 [DEBUG] [Thread-163494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:11:58.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:11:58.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:11:58.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:11:58.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:11:58.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:11:58.844 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:11:58.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:11:58.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:11:58.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:11:58.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.674717 -999.00  +13.20  14.40     47   +2.20 1 1 1 1 1   887    0 9.73 -48.49 ----- 14.4 14.4 141.8 18.9 15.6 -26.7 15.4 -25.7 16.2 -26.2 16.7 -27.7
2025-09-29T18:11:58.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:11:58.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:11:58.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.674717
2025-09-29T18:11:58.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:11:58.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:11:58.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:11:58.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:11:58.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:11:58.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:11:47', tmtdew=12.95, humidity=40.81, cloud=0.0, wind=21.23, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:11:35.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:11:58.847 [DEBUG] [Thread-163494] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:11:58.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:11:58.940 [DEBUG] [Thread-163497] [transport.py] [_log()] starting thread (client mode): 0x2e348160
2025-09-29T18:11:58.940 [DEBUG] [Thread-163497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:11:58.959 [DEBUG] [Thread-163497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:11:58.959 [INFO] [Thread-163497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] client lang: <none>
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] server lang: <none>
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] kex follows: False
2025-09-29T18:11:58.967 [DEBUG] [Thread-163497] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:11:58.968 [DEBUG] [Thread-163497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:11:58.968 [DEBUG] [Thread-163497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:11:58.968 [DEBUG] [Thread-163497] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:11:58.968 [DEBUG] [Thread-163497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:11:58.968 [DEBUG] [Thread-163497] [transport.py] [_log()] Compression: none
2025-09-29T18:11:58.968 [DEBUG] [Thread-163497] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:11:59.026 [DEBUG] [Thread-163497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:11:59.026 [DEBUG] [Thread-163497] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:11:59.027 [DEBUG] [Thread-163497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:11:59.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:11:59.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:11:59.086 [DEBUG] [Thread-163497] [transport.py] [_log()] userauth is OK
2025-09-29T18:11:59.087 [DEBUG] [Thread-163497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:11:59.087 [DEBUG] [Thread-163497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:11:59.087 [DEBUG] [Thread-163497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:11:59.087 [DEBUG] [Thread-163497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:11:59.106 [INFO] [Thread-163497] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:11:59.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:11:59.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:12:00.146 [DEBUG] [Thread-163497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:12:00.146 [DEBUG] [Thread-163497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:12:00.194 [DEBUG] [Thread-163497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:12:00.194 [DEBUG] [Thread-163497] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:12:00.203 [DEBUG] [Thread-163497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:12:00.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:12:00.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:12:00.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:12:00.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:12:00.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:12:00.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:12:00.236 [DEBUG] [Thread-163497] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:12:05.112 [DEBUG] [Thread-163499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:12:10.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:12:10.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:12:10.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:12:10.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 11, 47), 12.95, 40.81, 0.0, 21.23, 13.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:12:10.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:11:47
2025-09-29T18:12:10.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:12:11.076 [DEBUG] [Thread-163500] [transport.py] [_log()] starting thread (client mode): 0x2b96bb80
2025-09-29T18:12:11.076 [DEBUG] [Thread-163500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:12:11.091 [DEBUG] [Thread-163500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:12:11.091 [INFO] [Thread-163500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] client lang: <none>
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] server lang: <none>
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] kex follows: False
2025-09-29T18:12:11.095 [DEBUG] [Thread-163500] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:12:11.096 [DEBUG] [Thread-163500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:12:11.096 [DEBUG] [Thread-163500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:12:11.096 [DEBUG] [Thread-163500] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:12:11.096 [DEBUG] [Thread-163500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:12:11.096 [DEBUG] [Thread-163500] [transport.py] [_log()] Compression: none
2025-09-29T18:12:11.096 [DEBUG] [Thread-163500] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:12:11.112 [DEBUG] [Thread-163500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:12:11.113 [DEBUG] [Thread-163500] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:12:11.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:12:11.114 [DEBUG] [Thread-163500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:12:11.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:12:11.116 [DEBUG] [Thread-163500] [transport.py] [_log()] userauth is OK
2025-09-29T18:12:11.116 [DEBUG] [Thread-163500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:12:11.116 [DEBUG] [Thread-163500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:12:11.116 [DEBUG] [Thread-163500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:12:11.116 [DEBUG] [Thread-163500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:12:11.140 [INFO] [Thread-163500] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:12:11.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:12:11.842 [DEBUG] [Thread-163500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:12:11.842 [DEBUG] [Thread-163500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:12:11.843 [DEBUG] [Thread-163500] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:12:11.883 [DEBUG] [Thread-163500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:12:11.883 [DEBUG] [Thread-163500] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:12:11.886 [DEBUG] [Thread-163500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:12:11.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:12:11.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:12:11.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:12:11.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:12:11.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:12:11.903 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:12:11.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:12:11.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:12:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:12:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.674717 -999.00  +13.20  14.40     47   +2.20 1 1 1 1 1   887    0 9.73 -48.49 ----- 14.4 14.4 141.8 18.9 15.6 -26.7 15.4 -25.7 16.2 -26.2 16.7 -27.7
2025-09-29T18:12:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:12:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:12:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.674717
2025-09-29T18:12:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:12:11.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:12:11.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:12:11.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:12:11.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:12:11.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:11:47', tmtdew=12.95, humidity=40.81, cloud=0.0, wind=21.23, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:11:35.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:12:11.905 [DEBUG] [Thread-163500] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:12:11.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:12:20.157 [DEBUG] [Thread-163503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:12:35.184 [DEBUG] [Thread-163505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:12:35.984 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:12:35.985 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:12:49.844 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:12:50.219 [DEBUG] [Thread-163506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:12:52.088 [DEBUG] [Thread-163507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:13:05.251 [DEBUG] [Thread-163508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:13:20.281 [DEBUG] [Thread-163509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:13:30.359 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:13:35.310 [DEBUG] [Thread-163510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:13:36.126 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:13:36.127 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:13:50.338 [DEBUG] [Thread-163511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:13:52.143 [DEBUG] [Thread-163512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:03.154 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:05.367 [DEBUG] [Thread-163513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:20.400 [DEBUG] [Thread-163514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:25.466 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T18:14:27.712 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:35.431 [DEBUG] [Thread-163515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:35.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:14:35.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:14:35.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:14:36.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 14, 27), 12.86, 41.56, 0.0, 21.51, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:14:36.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:14:27
2025-09-29T18:14:36.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:14:36.268 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:36.269 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:36.339 [DEBUG] [Thread-163516] [transport.py] [_log()] starting thread (client mode): 0x2b91e350
2025-09-29T18:14:36.339 [DEBUG] [Thread-163516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:14:36.360 [DEBUG] [Thread-163516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:14:36.361 [INFO] [Thread-163516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:14:36.364 [DEBUG] [Thread-163516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:14:36.364 [DEBUG] [Thread-163516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] client lang: <none>
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] server lang: <none>
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] kex follows: False
2025-09-29T18:14:36.365 [DEBUG] [Thread-163516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:14:36.366 [DEBUG] [Thread-163516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:14:36.366 [DEBUG] [Thread-163516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:14:36.366 [DEBUG] [Thread-163516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:14:36.366 [DEBUG] [Thread-163516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:14:36.366 [DEBUG] [Thread-163516] [transport.py] [_log()] Compression: none
2025-09-29T18:14:36.366 [DEBUG] [Thread-163516] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:14:36.384 [DEBUG] [Thread-163516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:14:36.385 [DEBUG] [Thread-163516] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:14:36.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:14:36.386 [DEBUG] [Thread-163516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:14:36.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:14:36.388 [DEBUG] [Thread-163516] [transport.py] [_log()] userauth is OK
2025-09-29T18:14:36.388 [DEBUG] [Thread-163516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:14:36.388 [DEBUG] [Thread-163516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:14:36.388 [DEBUG] [Thread-163516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:14:36.388 [DEBUG] [Thread-163516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:14:36.419 [INFO] [Thread-163516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:14:36.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:14:37.171 [DEBUG] [Thread-163516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:14:37.171 [DEBUG] [Thread-163516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:14:37.171 [DEBUG] [Thread-163516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:14:37.212 [DEBUG] [Thread-163516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:14:37.213 [DEBUG] [Thread-163516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:14:37.217 [DEBUG] [Thread-163516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:14:37.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:14:37.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:14:37.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:14:37.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:14:37.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:14:37.236 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:14:37.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:14:37.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:14:37.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:14:37.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.676106 -999.00  +13.10  14.52     47   +2.20 1 1 1 1 1   887    0 9.77 -49.77 ----- 14.5 14.5 134.8 19.7 15.5 -26.5 15.4 -25.7 16.1 -26.4 16.6 -27.6
2025-09-29T18:14:37.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:14:37.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:14:37.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.676106
2025-09-29T18:14:37.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:14:37.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:14:37.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:14:37.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:14:37.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:14:37.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:14:27', tmtdew=12.86, humidity=41.56, cloud=0.0, wind=21.51, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:13:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:14:37.237 [DEBUG] [Thread-163516] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:14:37.321 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:14:37.332 [DEBUG] [Thread-163519] [transport.py] [_log()] starting thread (client mode): 0x2b91c490
2025-09-29T18:14:37.332 [DEBUG] [Thread-163519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:14:37.346 [DEBUG] [Thread-163519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:14:37.346 [INFO] [Thread-163519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] client lang: <none>
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] server lang: <none>
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] kex follows: False
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:14:37.354 [DEBUG] [Thread-163519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:14:37.355 [DEBUG] [Thread-163519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:14:37.355 [DEBUG] [Thread-163519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:14:37.355 [DEBUG] [Thread-163519] [transport.py] [_log()] Compression: none
2025-09-29T18:14:37.355 [DEBUG] [Thread-163519] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:14:37.414 [DEBUG] [Thread-163519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:14:37.414 [DEBUG] [Thread-163519] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:14:37.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:14:37.415 [DEBUG] [Thread-163519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:14:37.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:14:37.473 [DEBUG] [Thread-163519] [transport.py] [_log()] userauth is OK
2025-09-29T18:14:37.473 [DEBUG] [Thread-163519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:14:37.473 [DEBUG] [Thread-163519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:14:37.473 [DEBUG] [Thread-163519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:14:37.473 [DEBUG] [Thread-163519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:14:37.496 [INFO] [Thread-163519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:14:37.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:14:37.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:14:38.448 [DEBUG] [Thread-163519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:14:38.448 [DEBUG] [Thread-163519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:14:38.496 [DEBUG] [Thread-163519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:14:38.496 [DEBUG] [Thread-163519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:14:38.506 [DEBUG] [Thread-163519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:14:38.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:14:38.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:14:38.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:14:38.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:14:38.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:14:38.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:14:38.540 [DEBUG] [Thread-163519] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:14:48.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:14:48.542 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:14:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:14:49.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 14, 27), 12.86, 41.56, 0.0, 21.51, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:14:49.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:14:27
2025-09-29T18:14:49.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:14:49.397 [DEBUG] [Thread-163521] [transport.py] [_log()] starting thread (client mode): 0x2b91cc70
2025-09-29T18:14:49.397 [DEBUG] [Thread-163521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:14:49.411 [DEBUG] [Thread-163521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:14:49.411 [INFO] [Thread-163521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:14:49.414 [DEBUG] [Thread-163521] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] client lang: <none>
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] server lang: <none>
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] kex follows: False
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] Compression: none
2025-09-29T18:14:49.415 [DEBUG] [Thread-163521] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:14:49.432 [DEBUG] [Thread-163521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:14:49.432 [DEBUG] [Thread-163521] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:14:49.432 [DEBUG] [Thread-163521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:14:49.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:14:49.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:14:49.434 [DEBUG] [Thread-163521] [transport.py] [_log()] userauth is OK
2025-09-29T18:14:49.434 [DEBUG] [Thread-163521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:14:49.435 [DEBUG] [Thread-163521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:14:49.435 [DEBUG] [Thread-163521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:14:49.435 [DEBUG] [Thread-163521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:14:49.467 [INFO] [Thread-163521] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:14:49.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:14:50.120 [DEBUG] [Thread-163521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:14:50.129 [DEBUG] [Thread-163521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:14:50.130 [DEBUG] [Thread-163521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:14:50.161 [DEBUG] [Thread-163521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:14:50.161 [DEBUG] [Thread-163521] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:14:50.165 [DEBUG] [Thread-163521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:14:50.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:14:50.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:14:50.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:14:50.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:14:50.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:14:50.188 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:14:50.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:14:50.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:14:50.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:14:50.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.676800 -999.00  +13.10  17.52     47   +2.20 1 1 1 1 1   887    0 9.54 -48.51 ----- 17.5 17.5 160.2 21.7 15.4 -26.8 15.3 -25.7 16.0 -26.7 16.4 -27.9
2025-09-29T18:14:50.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:14:50.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:14:50.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.676800
2025-09-29T18:14:50.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:14:50.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:14:50.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:14:50.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:14:50.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:14:50.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:14:27', tmtdew=12.86, humidity=41.56, cloud=0.0, wind=21.51, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:14:35.520', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:14:50.191 [DEBUG] [Thread-163521] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:14:50.193 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:50.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:14:50.284 [DEBUG] [Thread-163524] [transport.py] [_log()] starting thread (client mode): 0x2b96a560
2025-09-29T18:14:50.284 [DEBUG] [Thread-163524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:14:50.300 [DEBUG] [Thread-163524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:14:50.300 [INFO] [Thread-163524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:14:50.307 [DEBUG] [Thread-163524] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] client lang: <none>
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] server lang: <none>
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] kex follows: False
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] Compression: none
2025-09-29T18:14:50.308 [DEBUG] [Thread-163524] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:14:50.365 [DEBUG] [Thread-163524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:14:50.366 [DEBUG] [Thread-163524] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:14:50.366 [DEBUG] [Thread-163524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:14:50.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:14:50.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:14:50.422 [DEBUG] [Thread-163524] [transport.py] [_log()] userauth is OK
2025-09-29T18:14:50.422 [DEBUG] [Thread-163524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:14:50.422 [DEBUG] [Thread-163524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:14:50.422 [DEBUG] [Thread-163524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:14:50.423 [DEBUG] [Thread-163524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:14:50.450 [INFO] [Thread-163524] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:14:50.459 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:14:50.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:14:50.461 [DEBUG] [Thread-163526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:14:51.458 [DEBUG] [Thread-163524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:14:51.458 [DEBUG] [Thread-163524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:14:51.506 [DEBUG] [Thread-163524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:14:51.506 [DEBUG] [Thread-163524] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:14:51.515 [DEBUG] [Thread-163524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:14:51.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:14:51.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:14:51.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:14:51.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:14:51.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:14:51.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:14:51.548 [DEBUG] [Thread-163524] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:14:52.177 [DEBUG] [Thread-163527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:01.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:15:01.551 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:15:01.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:15:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 14, 27), 12.86, 41.56, 0.0, 21.51, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:15:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:14:27
2025-09-29T18:15:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:15:02.541 [DEBUG] [Thread-163528] [transport.py] [_log()] starting thread (client mode): 0x2e34afe0
2025-09-29T18:15:02.541 [DEBUG] [Thread-163528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:15:02.561 [DEBUG] [Thread-163528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:15:02.561 [INFO] [Thread-163528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:15:02.564 [DEBUG] [Thread-163528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:15:02.564 [DEBUG] [Thread-163528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:15:02.564 [DEBUG] [Thread-163528] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:15:02.564 [DEBUG] [Thread-163528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:02.564 [DEBUG] [Thread-163528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] client lang: <none>
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] server lang: <none>
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] kex follows: False
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] Compression: none
2025-09-29T18:15:02.565 [DEBUG] [Thread-163528] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:15:02.579 [DEBUG] [Thread-163528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:15:02.579 [DEBUG] [Thread-163528] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:15:02.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:15:02.580 [DEBUG] [Thread-163528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:15:02.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:15:02.580 [DEBUG] [Thread-163528] [transport.py] [_log()] userauth is OK
2025-09-29T18:15:02.580 [DEBUG] [Thread-163528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:15:02.580 [DEBUG] [Thread-163528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:15:02.580 [DEBUG] [Thread-163528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:15:02.580 [DEBUG] [Thread-163528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:15:02.589 [INFO] [Thread-163528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:15:02.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:15:05.503 [DEBUG] [Thread-163530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:10.436 [DEBUG] [Thread-163528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:15:10.436 [DEBUG] [Thread-163528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:15:10.436 [DEBUG] [Thread-163528] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:15:10.477 [DEBUG] [Thread-163528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:15:10.477 [DEBUG] [Thread-163528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:15:10.479 [DEBUG] [Thread-163528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:15:10.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:15:10.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:15:10.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:15:10.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:15:10.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:15:10.505 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:15:10.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:15:10.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:15:10.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:15:10.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.676800 -999.00  +13.10  17.52     47   +2.20 1 1 1 1 1   887    0 9.54 -48.51 ----- 17.5 17.5 160.2 21.7 15.4 -26.8 15.3 -25.7 16.0 -26.7 16.4 -27.9
2025-09-29T18:15:10.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:15:10.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:15:10.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.676800
2025-09-29T18:15:10.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:15:10.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:15:10.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:15:10.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:15:10.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:15:10.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:14:27', tmtdew=12.86, humidity=41.56, cloud=0.0, wind=21.51, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:14:35.520', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:15:10.508 [DEBUG] [Thread-163528] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:15:10.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:15:10.599 [DEBUG] [Thread-163532] [transport.py] [_log()] starting thread (client mode): 0x2e34b9a0
2025-09-29T18:15:10.599 [DEBUG] [Thread-163532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:15:10.614 [DEBUG] [Thread-163532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:15:10.614 [INFO] [Thread-163532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:15:10.621 [DEBUG] [Thread-163532] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:15:10.621 [DEBUG] [Thread-163532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:15:10.621 [DEBUG] [Thread-163532] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] client lang: <none>
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] server lang: <none>
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] kex follows: False
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] Compression: none
2025-09-29T18:15:10.622 [DEBUG] [Thread-163532] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:15:10.677 [DEBUG] [Thread-163532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:15:10.677 [DEBUG] [Thread-163532] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:15:10.677 [DEBUG] [Thread-163532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:15:10.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:15:10.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:15:10.734 [DEBUG] [Thread-163532] [transport.py] [_log()] userauth is OK
2025-09-29T18:15:10.734 [DEBUG] [Thread-163532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:15:10.734 [DEBUG] [Thread-163532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:15:10.734 [DEBUG] [Thread-163532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:15:10.735 [DEBUG] [Thread-163532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:15:10.753 [INFO] [Thread-163532] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:15:10.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:15:10.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:15:11.728 [DEBUG] [Thread-163532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:15:11.729 [DEBUG] [Thread-163532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:15:11.776 [DEBUG] [Thread-163532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:15:11.776 [DEBUG] [Thread-163532] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:15:11.786 [DEBUG] [Thread-163532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:15:11.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:15:11.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:15:11.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:15:11.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:15:11.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:15:11.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:15:11.820 [DEBUG] [Thread-163532] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:15:12.652 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:20.531 [DEBUG] [Thread-163534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:21.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:15:21.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:15:21.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:15:22.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 14, 59), 12.83, 41.49, 0.0, 23.15, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:15:22.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:14:59
2025-09-29T18:15:22.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:15:22.676 [DEBUG] [Thread-163535] [transport.py] [_log()] starting thread (client mode): 0x2b968d00
2025-09-29T18:15:22.676 [DEBUG] [Thread-163535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:15:22.698 [DEBUG] [Thread-163535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:15:22.698 [INFO] [Thread-163535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] client lang: <none>
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] server lang: <none>
2025-09-29T18:15:22.701 [DEBUG] [Thread-163535] [transport.py] [_log()] kex follows: False
2025-09-29T18:15:22.702 [DEBUG] [Thread-163535] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:15:22.702 [DEBUG] [Thread-163535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:15:22.702 [DEBUG] [Thread-163535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:15:22.702 [DEBUG] [Thread-163535] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:15:22.702 [DEBUG] [Thread-163535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:15:22.702 [DEBUG] [Thread-163535] [transport.py] [_log()] Compression: none
2025-09-29T18:15:22.702 [DEBUG] [Thread-163535] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:15:22.720 [DEBUG] [Thread-163535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:15:22.720 [DEBUG] [Thread-163535] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:15:22.721 [DEBUG] [Thread-163535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:15:22.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:15:22.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:15:22.723 [DEBUG] [Thread-163535] [transport.py] [_log()] userauth is OK
2025-09-29T18:15:22.723 [DEBUG] [Thread-163535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:15:22.723 [DEBUG] [Thread-163535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:15:22.723 [DEBUG] [Thread-163535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:15:22.723 [DEBUG] [Thread-163535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:15:22.740 [INFO] [Thread-163535] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:15:22.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:15:23.342 [DEBUG] [Thread-163535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:15:23.343 [DEBUG] [Thread-163535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:15:23.343 [DEBUG] [Thread-163535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:15:23.383 [DEBUG] [Thread-163535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:15:23.383 [DEBUG] [Thread-163535] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:15:23.386 [DEBUG] [Thread-163535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:15:23.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:15:23.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:15:23.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:15:23.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:15:23.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:15:23.407 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:15:23.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:15:23.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:15:23.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:15:23.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.677147 -999.00  +13.10  14.27     47   +2.20 1 1 1 1 1   887    0 9.86 -47.80 ----- 14.3 14.3 159.2 20.2 15.4 -26.8 15.3 -25.9 16.0 -26.5 16.4 -27.5
2025-09-29T18:15:23.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:15:23.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:15:23.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.677147
2025-09-29T18:15:23.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:15:23.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:15:23.409 [DEBUG] [Thread-163535] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:15:23.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:15:23.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:15:23.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:15:23.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:14:59', tmtdew=12.83, humidity=41.49, cloud=0.0, wind=23.15, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:15:05.501', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:15:23.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:15:23.504 [DEBUG] [Thread-163538] [transport.py] [_log()] starting thread (client mode): 0x2b91d120
2025-09-29T18:15:23.504 [DEBUG] [Thread-163538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:15:23.519 [DEBUG] [Thread-163538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:15:23.519 [INFO] [Thread-163538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:15:23.527 [DEBUG] [Thread-163538] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:15:23.527 [DEBUG] [Thread-163538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] client lang: <none>
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] server lang: <none>
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] kex follows: False
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:15:23.528 [DEBUG] [Thread-163538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:15:23.529 [DEBUG] [Thread-163538] [transport.py] [_log()] Compression: none
2025-09-29T18:15:23.529 [DEBUG] [Thread-163538] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:15:23.586 [DEBUG] [Thread-163538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:15:23.586 [DEBUG] [Thread-163538] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:15:23.587 [DEBUG] [Thread-163538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:15:23.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:15:23.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:15:23.642 [DEBUG] [Thread-163538] [transport.py] [_log()] userauth is OK
2025-09-29T18:15:23.642 [DEBUG] [Thread-163538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:15:23.642 [DEBUG] [Thread-163538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:15:23.643 [DEBUG] [Thread-163538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:15:23.643 [DEBUG] [Thread-163538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:15:23.674 [INFO] [Thread-163538] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:15:23.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:15:23.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:15:24.676 [DEBUG] [Thread-163538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:15:24.676 [DEBUG] [Thread-163538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:15:24.724 [DEBUG] [Thread-163538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:15:24.724 [DEBUG] [Thread-163538] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:15:24.733 [DEBUG] [Thread-163538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:15:24.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:15:24.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:15:24.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:15:24.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:15:24.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:15:24.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:15:24.768 [DEBUG] [Thread-163538] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:15:34.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:15:34.771 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:15:34.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:15:35.106 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:35.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 15, 31), 12.78, 41.64, 0.0, 23.93, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:15:35.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:15:31
2025-09-29T18:15:35.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:15:35.560 [DEBUG] [Thread-163540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:35.626 [DEBUG] [Thread-163541] [transport.py] [_log()] starting thread (client mode): 0x2e3deb60
2025-09-29T18:15:35.626 [DEBUG] [Thread-163541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:15:35.646 [DEBUG] [Thread-163541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:15:35.647 [INFO] [Thread-163541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] client lang: <none>
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] server lang: <none>
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] kex follows: False
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] Compression: none
2025-09-29T18:15:35.650 [DEBUG] [Thread-163541] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:15:35.662 [DEBUG] [Thread-163541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:15:35.663 [DEBUG] [Thread-163541] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:15:35.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:15:35.663 [DEBUG] [Thread-163541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:15:35.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:15:35.663 [DEBUG] [Thread-163541] [transport.py] [_log()] userauth is OK
2025-09-29T18:15:35.663 [DEBUG] [Thread-163541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:15:35.663 [DEBUG] [Thread-163541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:15:35.663 [DEBUG] [Thread-163541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:15:35.663 [DEBUG] [Thread-163541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:15:35.672 [INFO] [Thread-163541] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:15:35.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:15:36.409 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:36.410 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:36.491 [DEBUG] [Thread-163541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:15:36.492 [DEBUG] [Thread-163541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:15:36.492 [DEBUG] [Thread-163541] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:15:36.532 [DEBUG] [Thread-163541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:15:36.532 [DEBUG] [Thread-163541] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:15:36.535 [DEBUG] [Thread-163541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:15:36.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:15:36.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:15:36.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:15:36.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:15:36.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:15:36.552 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:15:36.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:15:36.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:15:36.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:15:36.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.677147 -999.00  +13.10  14.27     47   +2.20 1 1 1 1 1   887    0 9.86 -47.80 ----- 14.3 14.3 159.2 20.2 15.4 -26.8 15.3 -25.9 16.0 -26.5 16.4 -27.5
2025-09-29T18:15:36.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:15:36.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:15:36.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.677147
2025-09-29T18:15:36.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:15:36.553 [DEBUG] [Thread-163541] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:15:36.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:15:36.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:15:36.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:15:36.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:15:36.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:15:31', tmtdew=12.78, humidity=41.64, cloud=0.0, wind=23.93, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:15:05.501', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:15:36.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:15:36.649 [DEBUG] [Thread-163544] [transport.py] [_log()] starting thread (client mode): 0x2b91d4e0
2025-09-29T18:15:36.649 [DEBUG] [Thread-163544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:15:36.663 [DEBUG] [Thread-163544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:15:36.664 [INFO] [Thread-163544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:15:36.671 [DEBUG] [Thread-163544] [transport.py] [_log()] client lang: <none>
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] server lang: <none>
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] kex follows: False
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] Compression: none
2025-09-29T18:15:36.672 [DEBUG] [Thread-163544] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:15:36.731 [DEBUG] [Thread-163544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:15:36.731 [DEBUG] [Thread-163544] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:15:36.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:15:36.733 [DEBUG] [Thread-163544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:15:36.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:15:36.786 [DEBUG] [Thread-163544] [transport.py] [_log()] userauth is OK
2025-09-29T18:15:36.786 [DEBUG] [Thread-163544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:15:36.786 [DEBUG] [Thread-163544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:15:36.786 [DEBUG] [Thread-163544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:15:36.786 [DEBUG] [Thread-163544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:15:36.807 [INFO] [Thread-163544] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:15:36.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:15:36.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:15:37.751 [DEBUG] [Thread-163544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:15:37.751 [DEBUG] [Thread-163544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:15:37.799 [DEBUG] [Thread-163544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:15:37.799 [DEBUG] [Thread-163544] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:15:37.809 [DEBUG] [Thread-163544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:15:37.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:15:37.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:15:37.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:15:37.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:15:37.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:15:37.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:15:37.843 [DEBUG] [Thread-163544] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:15:47.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:15:47.846 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:15:47.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:15:48.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 15, 31), 12.78, 41.64, 0.0, 23.93, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:15:48.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:15:31
2025-09-29T18:15:48.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:15:48.708 [DEBUG] [Thread-163546] [transport.py] [_log()] starting thread (client mode): 0x2b96ad10
2025-09-29T18:15:48.709 [DEBUG] [Thread-163546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:15:48.728 [DEBUG] [Thread-163546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:15:48.728 [INFO] [Thread-163546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:15:48.731 [DEBUG] [Thread-163546] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:15:48.732 [DEBUG] [Thread-163546] [transport.py] [_log()] client lang: <none>
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] server lang: <none>
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] kex follows: False
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] Compression: none
2025-09-29T18:15:48.733 [DEBUG] [Thread-163546] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:15:48.750 [DEBUG] [Thread-163546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:15:48.750 [DEBUG] [Thread-163546] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:15:48.751 [DEBUG] [Thread-163546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:15:48.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:15:48.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:15:48.753 [DEBUG] [Thread-163546] [transport.py] [_log()] userauth is OK
2025-09-29T18:15:48.753 [DEBUG] [Thread-163546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:15:48.754 [DEBUG] [Thread-163546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:15:48.754 [DEBUG] [Thread-163546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:15:48.754 [DEBUG] [Thread-163546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:15:48.777 [INFO] [Thread-163546] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:15:48.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:15:49.386 [DEBUG] [Thread-163546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:15:49.387 [DEBUG] [Thread-163546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:15:49.387 [DEBUG] [Thread-163546] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:15:49.427 [DEBUG] [Thread-163546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:15:49.427 [DEBUG] [Thread-163546] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:15:49.430 [DEBUG] [Thread-163546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:15:49.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:15:49.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:15:49.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:15:49.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:15:49.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:15:49.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:15:49.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:15:49.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:15:49.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:15:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.677495 -999.00  +13.10  12.18     47   +2.20 1 1 1 1 1   887    0 9.85 -47.19 ----- 12.2 12.2 150.8 17.2 15.3 -26.6 15.2 -25.7 15.9 -26.2 16.4 -27.5
2025-09-29T18:15:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:15:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:15:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.677495
2025-09-29T18:15:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:15:49.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:15:49.449 [DEBUG] [Thread-163546] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:15:49.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:15:49.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:15:49.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:15:49.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:15:31', tmtdew=12.78, humidity=41.64, cloud=0.0, wind=23.93, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:15:35.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:15:49.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:15:49.544 [DEBUG] [Thread-163549] [transport.py] [_log()] starting thread (client mode): 0x2e349090
2025-09-29T18:15:49.544 [DEBUG] [Thread-163549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:15:49.560 [DEBUG] [Thread-163549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:15:49.560 [INFO] [Thread-163549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:15:49.570 [DEBUG] [Thread-163549] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:15:49.570 [DEBUG] [Thread-163549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:15:49.570 [DEBUG] [Thread-163549] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:15:49.570 [DEBUG] [Thread-163549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:49.570 [DEBUG] [Thread-163549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:15:49.570 [DEBUG] [Thread-163549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:49.571 [DEBUG] [Thread-163549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:15:49.571 [DEBUG] [Thread-163549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:15:49.571 [DEBUG] [Thread-163549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:15:49.571 [DEBUG] [Thread-163549] [transport.py] [_log()] client lang: <none>
2025-09-29T18:15:49.571 [DEBUG] [Thread-163549] [transport.py] [_log()] server lang: <none>
2025-09-29T18:15:49.571 [DEBUG] [Thread-163549] [transport.py] [_log()] kex follows: False
2025-09-29T18:15:49.571 [DEBUG] [Thread-163549] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:15:49.571 [DEBUG] [Thread-163549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:15:49.572 [DEBUG] [Thread-163549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:15:49.572 [DEBUG] [Thread-163549] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:15:49.572 [DEBUG] [Thread-163549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:15:49.572 [DEBUG] [Thread-163549] [transport.py] [_log()] Compression: none
2025-09-29T18:15:49.572 [DEBUG] [Thread-163549] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:15:49.626 [DEBUG] [Thread-163549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:15:49.627 [DEBUG] [Thread-163549] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:15:49.627 [DEBUG] [Thread-163549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:15:49.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:15:49.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:15:49.683 [DEBUG] [Thread-163549] [transport.py] [_log()] userauth is OK
2025-09-29T18:15:49.683 [DEBUG] [Thread-163549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:15:49.683 [DEBUG] [Thread-163549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:15:49.683 [DEBUG] [Thread-163549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:15:49.683 [DEBUG] [Thread-163549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:15:49.702 [INFO] [Thread-163549] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:15:49.703 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:15:49.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:15:50.599 [DEBUG] [Thread-163551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:50.731 [DEBUG] [Thread-163549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:15:50.732 [DEBUG] [Thread-163549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:15:50.779 [DEBUG] [Thread-163549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:15:50.779 [DEBUG] [Thread-163549] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:15:50.788 [DEBUG] [Thread-163549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:15:50.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:15:50.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:15:50.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:15:50.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:15:50.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:15:50.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:15:50.823 [DEBUG] [Thread-163549] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:15:52.233 [DEBUG] [Thread-163552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:15:57.655 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:00.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:16:00.825 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:16:00.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:16:01.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 15, 31), 12.78, 41.64, 0.0, 23.93, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:16:01.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:15:31
2025-09-29T18:16:01.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:16:01.676 [DEBUG] [Thread-163553] [transport.py] [_log()] starting thread (client mode): 0x2b96ba30
2025-09-29T18:16:01.676 [DEBUG] [Thread-163553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:01.696 [DEBUG] [Thread-163553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:16:01.696 [INFO] [Thread-163553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:16:01.698 [DEBUG] [Thread-163553] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:01.698 [DEBUG] [Thread-163553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:16:01.698 [DEBUG] [Thread-163553] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:01.698 [DEBUG] [Thread-163553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:01.698 [DEBUG] [Thread-163553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] Compression: none
2025-09-29T18:16:01.699 [DEBUG] [Thread-163553] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:01.716 [DEBUG] [Thread-163553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:01.717 [DEBUG] [Thread-163553] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:01.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:16:01.718 [DEBUG] [Thread-163553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:16:01.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:01.720 [DEBUG] [Thread-163553] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:01.720 [DEBUG] [Thread-163553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:01.720 [DEBUG] [Thread-163553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:01.720 [DEBUG] [Thread-163553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:16:01.720 [DEBUG] [Thread-163553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:01.738 [INFO] [Thread-163553] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:01.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:02.543 [DEBUG] [Thread-163553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:02.544 [DEBUG] [Thread-163553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:02.544 [DEBUG] [Thread-163553] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:16:02.584 [DEBUG] [Thread-163553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:02.584 [DEBUG] [Thread-163553] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:02.587 [DEBUG] [Thread-163553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:02.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:02.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:16:02.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:16:02.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:16:02.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:02.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:16:02.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:02.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:02.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:16:02.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.677495 -999.00  +13.10  12.18     47   +2.20 1 1 1 1 1   887    0 9.85 -47.19 ----- 12.2 12.2 150.8 17.2 15.3 -26.6 15.2 -25.7 15.9 -26.2 16.4 -27.5
2025-09-29T18:16:02.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:16:02.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:16:02.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.677495
2025-09-29T18:16:02.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:16:02.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:16:02.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:16:02.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:16:02.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:16:02.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:15:31', tmtdew=12.78, humidity=41.64, cloud=0.0, wind=23.93, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:15:35.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:16:02.612 [DEBUG] [Thread-163553] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:02.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:16:02.706 [DEBUG] [Thread-163556] [transport.py] [_log()] starting thread (client mode): 0x2b96b040
2025-09-29T18:16:02.706 [DEBUG] [Thread-163556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:02.721 [DEBUG] [Thread-163556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:16:02.721 [INFO] [Thread-163556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:16:02.728 [DEBUG] [Thread-163556] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:02.728 [DEBUG] [Thread-163556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:16:02.728 [DEBUG] [Thread-163556] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:02.728 [DEBUG] [Thread-163556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:02.729 [DEBUG] [Thread-163556] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:02.730 [DEBUG] [Thread-163556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:02.730 [DEBUG] [Thread-163556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:02.730 [DEBUG] [Thread-163556] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:02.730 [DEBUG] [Thread-163556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:02.730 [DEBUG] [Thread-163556] [transport.py] [_log()] Compression: none
2025-09-29T18:16:02.730 [DEBUG] [Thread-163556] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:02.794 [DEBUG] [Thread-163556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:02.795 [DEBUG] [Thread-163556] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:02.795 [DEBUG] [Thread-163556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:16:02.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:16:02.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:02.850 [DEBUG] [Thread-163556] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:02.850 [DEBUG] [Thread-163556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:02.850 [DEBUG] [Thread-163556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:02.850 [DEBUG] [Thread-163556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:16:02.850 [DEBUG] [Thread-163556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:02.871 [INFO] [Thread-163556] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:02.871 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:16:02.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:03.858 [DEBUG] [Thread-163556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:03.858 [DEBUG] [Thread-163556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:03.906 [DEBUG] [Thread-163556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:03.906 [DEBUG] [Thread-163556] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:03.914 [DEBUG] [Thread-163556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:03.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:03.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:16:03.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:16:03.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:03.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:03.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:03.949 [DEBUG] [Thread-163556] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:05.647 [DEBUG] [Thread-163558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:13.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:16:13.950 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:16:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:16:14.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 16, 3), 12.75, 41.71, 0.0, 23.47, 13.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:16:14.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:16:03
2025-09-29T18:16:14.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:16:14.797 [DEBUG] [Thread-163559] [transport.py] [_log()] starting thread (client mode): 0x2e34a230
2025-09-29T18:16:14.797 [DEBUG] [Thread-163559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:14.814 [DEBUG] [Thread-163559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:16:14.814 [INFO] [Thread-163559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:14.817 [DEBUG] [Thread-163559] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:14.818 [DEBUG] [Thread-163559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:14.818 [DEBUG] [Thread-163559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:14.818 [DEBUG] [Thread-163559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:14.818 [DEBUG] [Thread-163559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:14.818 [DEBUG] [Thread-163559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:14.818 [DEBUG] [Thread-163559] [transport.py] [_log()] Compression: none
2025-09-29T18:16:14.818 [DEBUG] [Thread-163559] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:14.833 [DEBUG] [Thread-163559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:14.833 [DEBUG] [Thread-163559] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:14.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:16:14.834 [DEBUG] [Thread-163559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:16:14.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:14.835 [DEBUG] [Thread-163559] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:14.835 [DEBUG] [Thread-163559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:14.836 [DEBUG] [Thread-163559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:14.836 [DEBUG] [Thread-163559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:16:14.836 [DEBUG] [Thread-163559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:14.859 [INFO] [Thread-163559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:14.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:15.602 [DEBUG] [Thread-163559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:15.602 [DEBUG] [Thread-163559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:15.602 [DEBUG] [Thread-163559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:16:15.643 [DEBUG] [Thread-163559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:15.643 [DEBUG] [Thread-163559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:15.650 [DEBUG] [Thread-163559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:15.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:15.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:16:15.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:16:15.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:16:15.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:15.673 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:16:15.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:15.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:16:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.677495 -999.00  +13.10  12.18     47   +2.20 1 1 1 1 1   887    0 9.85 -47.19 ----- 12.2 12.2 150.8 17.2 15.3 -26.6 15.2 -25.7 15.9 -26.2 16.4 -27.5
2025-09-29T18:16:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:16:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:16:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.677495
2025-09-29T18:16:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:16:15.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:16:15.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:16:15.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:16:15.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:16:15.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:16:03', tmtdew=12.75, humidity=41.71, cloud=0.0, wind=23.47, temperature=13.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:15:35.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:16:15.676 [DEBUG] [Thread-163559] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:15.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:16:15.780 [DEBUG] [Thread-163562] [transport.py] [_log()] starting thread (client mode): 0x2e3c1e10
2025-09-29T18:16:15.780 [DEBUG] [Thread-163562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:15.795 [DEBUG] [Thread-163562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:16:15.795 [INFO] [Thread-163562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:16:15.802 [DEBUG] [Thread-163562] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:15.802 [DEBUG] [Thread-163562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] Compression: none
2025-09-29T18:16:15.803 [DEBUG] [Thread-163562] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:15.861 [DEBUG] [Thread-163562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:15.862 [DEBUG] [Thread-163562] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:15.862 [DEBUG] [Thread-163562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:16:15.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:16:15.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:15.918 [DEBUG] [Thread-163562] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:15.918 [DEBUG] [Thread-163562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:15.918 [DEBUG] [Thread-163562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:15.918 [DEBUG] [Thread-163562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:16:15.918 [DEBUG] [Thread-163562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:15.938 [INFO] [Thread-163562] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:15.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:16:15.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:16.892 [DEBUG] [Thread-163562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:16.892 [DEBUG] [Thread-163562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:16.940 [DEBUG] [Thread-163562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:16.940 [DEBUG] [Thread-163562] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:16.948 [DEBUG] [Thread-163562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:16.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:16.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:16:16.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:16:16.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:16.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:16.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:16.979 [DEBUG] [Thread-163562] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:20.120 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:20.672 [DEBUG] [Thread-163564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:26.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:16:26.982 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:16:26.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:16:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 16, 3), 12.75, 41.71, 0.0, 23.47, 13.15, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:16:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:16:03
2025-09-29T18:16:27.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:16:27.824 [DEBUG] [Thread-163565] [transport.py] [_log()] starting thread (client mode): 0x2b96a980
2025-09-29T18:16:27.824 [DEBUG] [Thread-163565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:27.846 [DEBUG] [Thread-163565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:16:27.846 [INFO] [Thread-163565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:16:27.850 [DEBUG] [Thread-163565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:27.850 [DEBUG] [Thread-163565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:16:27.850 [DEBUG] [Thread-163565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:27.850 [DEBUG] [Thread-163565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:27.850 [DEBUG] [Thread-163565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:27.850 [DEBUG] [Thread-163565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] Compression: none
2025-09-29T18:16:27.851 [DEBUG] [Thread-163565] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:27.876 [DEBUG] [Thread-163565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:27.876 [DEBUG] [Thread-163565] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:27.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:16:27.877 [DEBUG] [Thread-163565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:16:27.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:27.879 [DEBUG] [Thread-163565] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:27.880 [DEBUG] [Thread-163565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:27.880 [DEBUG] [Thread-163565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:27.880 [DEBUG] [Thread-163565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:16:27.880 [DEBUG] [Thread-163565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:27.894 [INFO] [Thread-163565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:27.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:28.491 [DEBUG] [Thread-163565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:28.500 [DEBUG] [Thread-163565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:28.501 [DEBUG] [Thread-163565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:16:28.532 [DEBUG] [Thread-163565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:28.532 [DEBUG] [Thread-163565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:28.535 [DEBUG] [Thread-163565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:28.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:28.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:16:28.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:16:28.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:16:28.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:28.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:16:28.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:28.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:28.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:16:28.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.677842 -999.00  +13.10  20.24     47   +2.20 1 1 1 1 1   887    0 9.76 -45.31 ----- 20.2 20.2 156.0 23.5 15.3 -26.5 15.2 -25.6 15.9 -26.1 16.4 -27.3
2025-09-29T18:16:28.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:16:28.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:16:28.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.677842
2025-09-29T18:16:28.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:16:28.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:16:28.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:16:28.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:16:28.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:16:28.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:16:03', tmtdew=12.75, humidity=41.71, cloud=0.0, wind=23.47, temperature=13.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:16:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:16:28.562 [DEBUG] [Thread-163565] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:28.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:16:28.658 [DEBUG] [Thread-163568] [transport.py] [_log()] starting thread (client mode): 0x2b96a8c0
2025-09-29T18:16:28.658 [DEBUG] [Thread-163568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:28.673 [DEBUG] [Thread-163568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:16:28.673 [INFO] [Thread-163568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:16:28.681 [DEBUG] [Thread-163568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:28.681 [DEBUG] [Thread-163568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:16:28.681 [DEBUG] [Thread-163568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:28.681 [DEBUG] [Thread-163568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] Compression: none
2025-09-29T18:16:28.682 [DEBUG] [Thread-163568] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:28.741 [DEBUG] [Thread-163568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:28.741 [DEBUG] [Thread-163568] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:28.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:16:28.742 [DEBUG] [Thread-163568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:16:28.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:28.798 [DEBUG] [Thread-163568] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:28.798 [DEBUG] [Thread-163568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:28.798 [DEBUG] [Thread-163568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:28.798 [DEBUG] [Thread-163568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:16:28.798 [DEBUG] [Thread-163568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:28.826 [INFO] [Thread-163568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:28.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:16:28.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:29.780 [DEBUG] [Thread-163568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:29.781 [DEBUG] [Thread-163568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:29.828 [DEBUG] [Thread-163568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:29.828 [DEBUG] [Thread-163568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:29.837 [DEBUG] [Thread-163568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:29.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:29.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:16:29.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:16:29.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:29.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:29.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:29.872 [DEBUG] [Thread-163568] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:35.718 [DEBUG] [Thread-163570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:36.551 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:36.552 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:39.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:16:39.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:16:39.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:16:40.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 16, 35), 12.75, 41.72, 0.0, 23.24, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:16:40.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:16:35
2025-09-29T18:16:40.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:16:40.711 [DEBUG] [Thread-163571] [transport.py] [_log()] starting thread (client mode): 0x2e34b1f0
2025-09-29T18:16:40.711 [DEBUG] [Thread-163571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:40.732 [DEBUG] [Thread-163571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:16:40.732 [INFO] [Thread-163571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:16:40.735 [DEBUG] [Thread-163571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:40.735 [DEBUG] [Thread-163571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:16:40.735 [DEBUG] [Thread-163571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:40.735 [DEBUG] [Thread-163571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:40.735 [DEBUG] [Thread-163571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] Compression: none
2025-09-29T18:16:40.736 [DEBUG] [Thread-163571] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:40.756 [DEBUG] [Thread-163571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:40.756 [DEBUG] [Thread-163571] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:40.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:16:40.757 [DEBUG] [Thread-163571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:16:40.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:40.758 [DEBUG] [Thread-163571] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:40.759 [DEBUG] [Thread-163571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:40.759 [DEBUG] [Thread-163571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:40.759 [DEBUG] [Thread-163571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:16:40.759 [DEBUG] [Thread-163571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:40.780 [INFO] [Thread-163571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:40.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:41.562 [DEBUG] [Thread-163571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:41.562 [DEBUG] [Thread-163571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:41.562 [DEBUG] [Thread-163571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:16:41.603 [DEBUG] [Thread-163571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:41.603 [DEBUG] [Thread-163571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:41.606 [DEBUG] [Thread-163571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:41.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:41.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:16:41.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:16:41.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:16:41.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:41.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:16:41.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:41.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:41.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:16:41.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.677842 -999.00  +13.10  20.24     47   +2.20 1 1 1 1 1   887    0 9.76 -45.31 ----- 20.2 20.2 156.0 23.5 15.3 -26.5 15.2 -25.6 15.9 -26.1 16.4 -27.3
2025-09-29T18:16:41.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:16:41.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:16:41.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.677842
2025-09-29T18:16:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:16:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:16:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:16:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:16:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:16:41.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:16:35', tmtdew=12.75, humidity=41.72, cloud=0.0, wind=23.24, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:16:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:16:41.631 [DEBUG] [Thread-163571] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:41.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:16:41.725 [DEBUG] [Thread-163574] [transport.py] [_log()] starting thread (client mode): 0x2b9ce8c0
2025-09-29T18:16:41.725 [DEBUG] [Thread-163574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:41.741 [DEBUG] [Thread-163574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:16:41.741 [INFO] [Thread-163574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:41.748 [DEBUG] [Thread-163574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:41.749 [DEBUG] [Thread-163574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:41.749 [DEBUG] [Thread-163574] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:41.749 [DEBUG] [Thread-163574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:41.749 [DEBUG] [Thread-163574] [transport.py] [_log()] Compression: none
2025-09-29T18:16:41.749 [DEBUG] [Thread-163574] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:41.804 [DEBUG] [Thread-163574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:41.804 [DEBUG] [Thread-163574] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:41.805 [DEBUG] [Thread-163574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:16:41.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:16:41.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:41.862 [DEBUG] [Thread-163574] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:41.862 [DEBUG] [Thread-163574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:41.862 [DEBUG] [Thread-163574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:41.862 [DEBUG] [Thread-163574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:16:41.862 [DEBUG] [Thread-163574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:41.879 [INFO] [Thread-163574] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:41.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:16:41.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:42.581 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:42.841 [DEBUG] [Thread-163574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:42.841 [DEBUG] [Thread-163574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:42.890 [DEBUG] [Thread-163574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:42.890 [DEBUG] [Thread-163574] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:42.900 [DEBUG] [Thread-163574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:42.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:42.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:16:42.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:16:42.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:42.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:42.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:42.934 [DEBUG] [Thread-163574] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:50.752 [DEBUG] [Thread-163576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:52.267 [DEBUG] [Thread-163577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:16:52.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:16:52.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:16:52.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:16:53.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 16, 35), 12.75, 41.72, 0.0, 23.24, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:16:53.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:16:35
2025-09-29T18:16:53.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:16:53.794 [DEBUG] [Thread-163578] [transport.py] [_log()] starting thread (client mode): 0x2e376aa0
2025-09-29T18:16:53.794 [DEBUG] [Thread-163578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:53.815 [DEBUG] [Thread-163578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:16:53.815 [INFO] [Thread-163578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:16:53.817 [DEBUG] [Thread-163578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:53.818 [DEBUG] [Thread-163578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:53.819 [DEBUG] [Thread-163578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:53.819 [DEBUG] [Thread-163578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:53.819 [DEBUG] [Thread-163578] [transport.py] [_log()] Compression: none
2025-09-29T18:16:53.819 [DEBUG] [Thread-163578] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:53.835 [DEBUG] [Thread-163578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:53.836 [DEBUG] [Thread-163578] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:53.836 [DEBUG] [Thread-163578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:16:53.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:16:53.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:53.838 [DEBUG] [Thread-163578] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:53.839 [DEBUG] [Thread-163578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:53.839 [DEBUG] [Thread-163578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:53.839 [DEBUG] [Thread-163578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:16:53.839 [DEBUG] [Thread-163578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:53.862 [INFO] [Thread-163578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:53.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:54.603 [DEBUG] [Thread-163578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:54.603 [DEBUG] [Thread-163578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:54.604 [DEBUG] [Thread-163578] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:16:54.644 [DEBUG] [Thread-163578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:54.644 [DEBUG] [Thread-163578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:54.647 [DEBUG] [Thread-163578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:54.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:54.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:16:54.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:16:54.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:16:54.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:54.665 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:16:54.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.677842 -999.00  +13.10  20.24     47   +2.20 1 1 1 1 1   887    0 9.76 -45.31 ----- 20.2 20.2 156.0 23.5 15.3 -26.5 15.2 -25.6 15.9 -26.1 16.4 -27.3
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.677842
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:16:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:16:35', tmtdew=12.75, humidity=41.72, cloud=0.0, wind=23.24, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:16:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:16:54.666 [DEBUG] [Thread-163578] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:16:54.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:16:54.748 [DEBUG] [Thread-163581] [transport.py] [_log()] starting thread (client mode): 0x2b91d8d0
2025-09-29T18:16:54.748 [DEBUG] [Thread-163581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:16:54.762 [DEBUG] [Thread-163581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:16:54.762 [INFO] [Thread-163581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] client lang: <none>
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] server lang: <none>
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] kex follows: False
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] Compression: none
2025-09-29T18:16:54.770 [DEBUG] [Thread-163581] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:16:54.828 [DEBUG] [Thread-163581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:16:54.828 [DEBUG] [Thread-163581] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:16:54.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:16:54.829 [DEBUG] [Thread-163581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:16:54.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:16:54.885 [DEBUG] [Thread-163581] [transport.py] [_log()] userauth is OK
2025-09-29T18:16:54.886 [DEBUG] [Thread-163581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:16:54.886 [DEBUG] [Thread-163581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:16:54.886 [DEBUG] [Thread-163581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:16:54.886 [DEBUG] [Thread-163581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:16:54.901 [INFO] [Thread-163581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:16:54.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:16:54.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:16:55.851 [DEBUG] [Thread-163581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:16:55.851 [DEBUG] [Thread-163581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:16:55.899 [DEBUG] [Thread-163581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:16:55.899 [DEBUG] [Thread-163581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:16:55.907 [DEBUG] [Thread-163581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:16:55.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:16:55.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:16:55.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:16:55.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:16:55.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:16:55.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:16:55.938 [DEBUG] [Thread-163581] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:05.060 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:05.798 [DEBUG] [Thread-163583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:05.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:17:05.941 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:17:05.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:17:06.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 16, 35), 12.75, 41.72, 0.0, 23.24, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:17:06.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:16:35
2025-09-29T18:17:06.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:17:06.780 [DEBUG] [Thread-163584] [transport.py] [_log()] starting thread (client mode): 0x2b9cc220
2025-09-29T18:17:06.780 [DEBUG] [Thread-163584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:06.803 [DEBUG] [Thread-163584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:17:06.803 [INFO] [Thread-163584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:17:06.806 [DEBUG] [Thread-163584] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:06.807 [DEBUG] [Thread-163584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:17:06.807 [DEBUG] [Thread-163584] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:06.807 [DEBUG] [Thread-163584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:06.807 [DEBUG] [Thread-163584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:06.807 [DEBUG] [Thread-163584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:06.807 [DEBUG] [Thread-163584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:06.807 [DEBUG] [Thread-163584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:06.807 [DEBUG] [Thread-163584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] Compression: none
2025-09-29T18:17:06.808 [DEBUG] [Thread-163584] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:06.827 [DEBUG] [Thread-163584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:06.828 [DEBUG] [Thread-163584] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:06.828 [DEBUG] [Thread-163584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:17:06.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:17:06.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:06.830 [DEBUG] [Thread-163584] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:06.830 [DEBUG] [Thread-163584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:06.831 [DEBUG] [Thread-163584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:06.831 [DEBUG] [Thread-163584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:17:06.831 [DEBUG] [Thread-163584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:06.845 [INFO] [Thread-163584] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:06.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:07.445 [DEBUG] [Thread-163584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:07.445 [DEBUG] [Thread-163584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:07.445 [DEBUG] [Thread-163584] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:17:07.486 [DEBUG] [Thread-163584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:07.486 [DEBUG] [Thread-163584] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:07.489 [DEBUG] [Thread-163584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:07.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:07.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:17:07.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:17:07.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:17:07.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:07.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:17:07.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:07.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:07.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:17:07.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.678189 -999.00  +13.00  13.25     47   +2.20 1 1 1 1 1   887    0 9.44 -47.75 ----- 13.2 13.2 154.8 19.6 15.3 -26.7 15.2 -26.0 15.9 -26.1 16.3 -27.2
2025-09-29T18:17:07.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:17:07.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:17:07.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.678189
2025-09-29T18:17:07.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:17:07.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:17:07.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:17:07.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:17:07.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:17:07.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:16:35', tmtdew=12.75, humidity=41.72, cloud=0.0, wind=23.24, temperature=13.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:16:35.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:17:07.516 [DEBUG] [Thread-163584] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:07.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:17:07.616 [DEBUG] [Thread-163587] [transport.py] [_log()] starting thread (client mode): 0x2b9cb280
2025-09-29T18:17:07.616 [DEBUG] [Thread-163587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:07.632 [DEBUG] [Thread-163587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:17:07.632 [INFO] [Thread-163587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:07.639 [DEBUG] [Thread-163587] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:07.640 [DEBUG] [Thread-163587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:07.640 [DEBUG] [Thread-163587] [transport.py] [_log()] Compression: none
2025-09-29T18:17:07.640 [DEBUG] [Thread-163587] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:07.696 [DEBUG] [Thread-163587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:07.696 [DEBUG] [Thread-163587] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:07.697 [DEBUG] [Thread-163587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:17:07.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:17:07.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:07.753 [DEBUG] [Thread-163587] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:07.754 [DEBUG] [Thread-163587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:07.754 [DEBUG] [Thread-163587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:07.754 [DEBUG] [Thread-163587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:17:07.754 [DEBUG] [Thread-163587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:07.771 [INFO] [Thread-163587] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:07.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:17:07.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:08.765 [DEBUG] [Thread-163587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:08.765 [DEBUG] [Thread-163587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:08.813 [DEBUG] [Thread-163587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:08.813 [DEBUG] [Thread-163587] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:08.821 [DEBUG] [Thread-163587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:08.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:08.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:17:08.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:17:08.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:08.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:08.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:08.852 [DEBUG] [Thread-163587] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:18.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:17:18.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:17:18.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:17:19.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 17, 7), 12.73, 41.76, 0.0, 22.85, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:17:19.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:17:07
2025-09-29T18:17:19.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:17:19.695 [DEBUG] [Thread-163589] [transport.py] [_log()] starting thread (client mode): 0x2b9ca0e0
2025-09-29T18:17:19.695 [DEBUG] [Thread-163589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:19.715 [DEBUG] [Thread-163589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:17:19.715 [INFO] [Thread-163589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:17:19.718 [DEBUG] [Thread-163589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:19.718 [DEBUG] [Thread-163589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:17:19.718 [DEBUG] [Thread-163589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:19.718 [DEBUG] [Thread-163589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:19.718 [DEBUG] [Thread-163589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] Compression: none
2025-09-29T18:17:19.719 [DEBUG] [Thread-163589] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:19.738 [DEBUG] [Thread-163589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:19.739 [DEBUG] [Thread-163589] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:19.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:17:19.740 [DEBUG] [Thread-163589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:17:19.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:19.742 [DEBUG] [Thread-163589] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:19.742 [DEBUG] [Thread-163589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:19.742 [DEBUG] [Thread-163589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:19.742 [DEBUG] [Thread-163589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:17:19.742 [DEBUG] [Thread-163589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:19.766 [INFO] [Thread-163589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:19.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:20.580 [DEBUG] [Thread-163589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:20.580 [DEBUG] [Thread-163589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:20.580 [DEBUG] [Thread-163589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:17:20.621 [DEBUG] [Thread-163589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:20.621 [DEBUG] [Thread-163589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:20.624 [DEBUG] [Thread-163589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:20.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:20.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:17:20.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:17:20.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:17:20.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:20.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:17:20.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:20.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:20.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:17:20.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.678189 -999.00  +13.00  13.25     47   +2.20 1 1 1 1 1   887    0 9.44 -47.75 ----- 13.2 13.2 154.8 19.6 15.3 -26.7 15.2 -26.0 15.9 -26.1 16.3 -27.2
2025-09-29T18:17:20.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:17:20.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:17:20.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.678189
2025-09-29T18:17:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:17:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:17:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:17:20.651 [DEBUG] [Thread-163589] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:20.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:17:20.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:17:20.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:17:07', tmtdew=12.73, humidity=41.76, cloud=0.0, wind=22.85, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:16:35.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:17:20.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:17:20.745 [DEBUG] [Thread-163592] [transport.py] [_log()] starting thread (client mode): 0x2b94f850
2025-09-29T18:17:20.746 [DEBUG] [Thread-163592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:20.761 [DEBUG] [Thread-163592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:17:20.761 [INFO] [Thread-163592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:17:20.768 [DEBUG] [Thread-163592] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:20.768 [DEBUG] [Thread-163592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:20.769 [DEBUG] [Thread-163592] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:20.770 [DEBUG] [Thread-163592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:20.770 [DEBUG] [Thread-163592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:20.770 [DEBUG] [Thread-163592] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:20.770 [DEBUG] [Thread-163592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:20.770 [DEBUG] [Thread-163592] [transport.py] [_log()] Compression: none
2025-09-29T18:17:20.770 [DEBUG] [Thread-163592] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:20.826 [DEBUG] [Thread-163592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:20.826 [DEBUG] [Thread-163592] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:20.827 [DEBUG] [Thread-163592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:17:20.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:17:20.829 [DEBUG] [Thread-163594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:20.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:20.881 [DEBUG] [Thread-163592] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:20.882 [DEBUG] [Thread-163592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:20.882 [DEBUG] [Thread-163592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:20.882 [DEBUG] [Thread-163592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:17:20.882 [DEBUG] [Thread-163592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:20.900 [INFO] [Thread-163592] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:20.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:17:20.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:21.861 [DEBUG] [Thread-163592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:21.861 [DEBUG] [Thread-163592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:21.909 [DEBUG] [Thread-163592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:21.909 [DEBUG] [Thread-163592] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:21.918 [DEBUG] [Thread-163592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:21.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:21.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:17:21.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:17:21.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:21.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:21.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:21.953 [DEBUG] [Thread-163592] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:27.517 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:31.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:17:31.956 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:17:31.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:17:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 17, 7), 12.73, 41.76, 0.0, 22.85, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:17:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:17:07
2025-09-29T18:17:32.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:17:32.834 [DEBUG] [Thread-163595] [transport.py] [_log()] starting thread (client mode): 0x2b94e8c0
2025-09-29T18:17:32.834 [DEBUG] [Thread-163595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:32.854 [DEBUG] [Thread-163595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:17:32.854 [INFO] [Thread-163595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] Compression: none
2025-09-29T18:17:32.857 [DEBUG] [Thread-163595] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:32.874 [DEBUG] [Thread-163595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:32.874 [DEBUG] [Thread-163595] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:32.875 [DEBUG] [Thread-163595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:17:32.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:17:32.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:32.875 [DEBUG] [Thread-163595] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:32.875 [DEBUG] [Thread-163595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:32.875 [DEBUG] [Thread-163595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:32.875 [DEBUG] [Thread-163595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:17:32.875 [DEBUG] [Thread-163595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:32.884 [INFO] [Thread-163595] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:32.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:33.560 [DEBUG] [Thread-163595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:33.560 [DEBUG] [Thread-163595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:33.560 [DEBUG] [Thread-163595] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:17:33.601 [DEBUG] [Thread-163595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:33.601 [DEBUG] [Thread-163595] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:33.603 [DEBUG] [Thread-163595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:33.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:33.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:17:33.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:17:33.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:17:33.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:33.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:17:33.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:33.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:33.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:17:33.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.678537 -999.00  +13.00  15.22     47   +2.20 1 1 1 1 1   887    0 9.58 -44.49 ----- 15.2 15.2 159.8 20.0 15.3 -26.7 15.2 -25.6 15.9 -25.9 16.3 -27.4
2025-09-29T18:17:33.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:17:33.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:17:33.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.678537
2025-09-29T18:17:33.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:17:33.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:17:33.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:17:33.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:17:33.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:17:33.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:17:07', tmtdew=12.73, humidity=41.76, cloud=0.0, wind=22.85, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:17:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:17:33.621 [DEBUG] [Thread-163595] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:33.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:17:33.706 [DEBUG] [Thread-163598] [transport.py] [_log()] starting thread (client mode): 0x2e38dde0
2025-09-29T18:17:33.706 [DEBUG] [Thread-163598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:33.720 [DEBUG] [Thread-163598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:17:33.720 [INFO] [Thread-163598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:17:33.727 [DEBUG] [Thread-163598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:33.727 [DEBUG] [Thread-163598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] Compression: none
2025-09-29T18:17:33.728 [DEBUG] [Thread-163598] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:33.788 [DEBUG] [Thread-163598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:33.788 [DEBUG] [Thread-163598] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:33.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:17:33.788 [DEBUG] [Thread-163598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:17:33.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:33.845 [DEBUG] [Thread-163598] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:33.845 [DEBUG] [Thread-163598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:33.845 [DEBUG] [Thread-163598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:33.845 [DEBUG] [Thread-163598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:17:33.845 [DEBUG] [Thread-163598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:33.859 [INFO] [Thread-163598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:33.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:17:33.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:34.816 [DEBUG] [Thread-163598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:34.816 [DEBUG] [Thread-163598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:34.864 [DEBUG] [Thread-163598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:34.864 [DEBUG] [Thread-163598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:34.872 [DEBUG] [Thread-163598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:34.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:34.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:17:34.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:17:34.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:34.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:34.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:34.903 [DEBUG] [Thread-163598] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:35.870 [DEBUG] [Thread-163600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:36.697 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:36.698 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:44.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:17:44.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:17:44.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:17:45.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 17, 39), 12.73, 41.76, 0.0, 18.95, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:17:45.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:17:39
2025-09-29T18:17:45.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:17:45.752 [DEBUG] [Thread-163601] [transport.py] [_log()] starting thread (client mode): 0x2e3f92d0
2025-09-29T18:17:45.753 [DEBUG] [Thread-163601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:45.773 [DEBUG] [Thread-163601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:17:45.774 [INFO] [Thread-163601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:17:45.777 [DEBUG] [Thread-163601] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:45.777 [DEBUG] [Thread-163601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:17:45.777 [DEBUG] [Thread-163601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:45.777 [DEBUG] [Thread-163601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:45.777 [DEBUG] [Thread-163601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:45.778 [DEBUG] [Thread-163601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:45.779 [DEBUG] [Thread-163601] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:45.779 [DEBUG] [Thread-163601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:45.779 [DEBUG] [Thread-163601] [transport.py] [_log()] Compression: none
2025-09-29T18:17:45.779 [DEBUG] [Thread-163601] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:45.797 [DEBUG] [Thread-163601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:45.798 [DEBUG] [Thread-163601] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:45.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:17:45.799 [DEBUG] [Thread-163601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:17:45.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:45.801 [DEBUG] [Thread-163601] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:45.801 [DEBUG] [Thread-163601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:45.801 [DEBUG] [Thread-163601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:45.802 [DEBUG] [Thread-163601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:17:45.802 [DEBUG] [Thread-163601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:45.826 [INFO] [Thread-163601] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:45.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:46.636 [DEBUG] [Thread-163601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:46.637 [DEBUG] [Thread-163601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:46.637 [DEBUG] [Thread-163601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:17:46.677 [DEBUG] [Thread-163601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:46.677 [DEBUG] [Thread-163601] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:46.680 [DEBUG] [Thread-163601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:46.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:46.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:17:46.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:17:46.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:17:46.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:46.702 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:17:46.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:46.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:46.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:17:46.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.678537 -999.00  +13.00  15.22     47   +2.20 1 1 1 1 1   887    0 9.58 -44.49 ----- 15.2 15.2 159.8 20.0 15.3 -26.7 15.2 -25.6 15.9 -25.9 16.3 -27.4
2025-09-29T18:17:46.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:17:46.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:17:46.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.678537
2025-09-29T18:17:46.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:17:46.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:17:46.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:17:46.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:17:46.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:17:46.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:17:39', tmtdew=12.73, humidity=41.76, cloud=0.0, wind=18.95, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:17:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:17:46.705 [DEBUG] [Thread-163601] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:46.789 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:17:46.800 [DEBUG] [Thread-163604] [transport.py] [_log()] starting thread (client mode): 0x2b91c370
2025-09-29T18:17:46.800 [DEBUG] [Thread-163604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:46.815 [DEBUG] [Thread-163604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:17:46.815 [INFO] [Thread-163604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:46.823 [DEBUG] [Thread-163604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:46.824 [DEBUG] [Thread-163604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:46.824 [DEBUG] [Thread-163604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:46.824 [DEBUG] [Thread-163604] [transport.py] [_log()] Compression: none
2025-09-29T18:17:46.824 [DEBUG] [Thread-163604] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:46.882 [DEBUG] [Thread-163604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:46.882 [DEBUG] [Thread-163604] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:46.883 [DEBUG] [Thread-163604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:17:46.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:17:46.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:46.942 [DEBUG] [Thread-163604] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:46.942 [DEBUG] [Thread-163604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:46.942 [DEBUG] [Thread-163604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:46.942 [DEBUG] [Thread-163604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:17:46.942 [DEBUG] [Thread-163604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:46.961 [INFO] [Thread-163604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:46.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:17:46.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:48.000 [DEBUG] [Thread-163604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:48.000 [DEBUG] [Thread-163604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:48.048 [DEBUG] [Thread-163604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:48.048 [DEBUG] [Thread-163604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:48.057 [DEBUG] [Thread-163604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:48.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:48.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:17:48.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:17:48.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:48.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:48.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:48.092 [DEBUG] [Thread-163604] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:49.999 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:50.906 [DEBUG] [Thread-163606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:50.957 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:52.299 [DEBUG] [Thread-163607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:53.357 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:53.772 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:54.175 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:54.586 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:55.017 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:55.413 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:55.827 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:56.340 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:56.730 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:57.145 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:57.486 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:17:58.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:17:58.088 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:17:58.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:17:58.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 17, 39), 12.73, 41.76, 0.0, 18.95, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:17:58.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:17:39
2025-09-29T18:17:58.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:17:58.921 [DEBUG] [Thread-163608] [transport.py] [_log()] starting thread (client mode): 0x2b94e3b0
2025-09-29T18:17:58.922 [DEBUG] [Thread-163608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:58.941 [DEBUG] [Thread-163608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:17:58.941 [INFO] [Thread-163608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:17:58.944 [DEBUG] [Thread-163608] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:58.944 [DEBUG] [Thread-163608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:17:58.944 [DEBUG] [Thread-163608] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:58.944 [DEBUG] [Thread-163608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:58.944 [DEBUG] [Thread-163608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:58.944 [DEBUG] [Thread-163608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] Compression: none
2025-09-29T18:17:58.945 [DEBUG] [Thread-163608] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:17:58.961 [DEBUG] [Thread-163608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:17:58.962 [DEBUG] [Thread-163608] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:17:58.962 [DEBUG] [Thread-163608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:17:58.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:17:58.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:17:58.964 [DEBUG] [Thread-163608] [transport.py] [_log()] userauth is OK
2025-09-29T18:17:58.964 [DEBUG] [Thread-163608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:17:58.964 [DEBUG] [Thread-163608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:17:58.965 [DEBUG] [Thread-163608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:17:58.965 [DEBUG] [Thread-163608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:17:58.981 [INFO] [Thread-163608] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:17:58.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:17:59.781 [DEBUG] [Thread-163608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:17:59.782 [DEBUG] [Thread-163608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:17:59.782 [DEBUG] [Thread-163608] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:17:59.822 [DEBUG] [Thread-163608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:17:59.822 [DEBUG] [Thread-163608] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:17:59.825 [DEBUG] [Thread-163608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:17:59.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:17:59.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:17:59.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:17:59.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:17:59.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:17:59.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:17:59.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:17:59.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:17:59.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:17:59.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.678537 -999.00  +13.00  15.22     47   +2.20 1 1 1 1 1   887    0 9.58 -44.49 ----- 15.2 15.2 159.8 20.0 15.3 -26.7 15.2 -25.6 15.9 -25.9 16.3 -27.4
2025-09-29T18:17:59.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:17:59.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:17:59.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.678537
2025-09-29T18:17:59.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:17:59.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:17:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:17:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:17:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:17:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:17:39', tmtdew=12.73, humidity=41.76, cloud=0.0, wind=18.95, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:17:05.597', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:17:59.850 [DEBUG] [Thread-163608] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:17:59.935 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:17:59.944 [DEBUG] [Thread-163611] [transport.py] [_log()] starting thread (client mode): 0x2b9f1930
2025-09-29T18:17:59.944 [DEBUG] [Thread-163611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:17:59.959 [DEBUG] [Thread-163611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:17:59.959 [INFO] [Thread-163611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:17:59.966 [DEBUG] [Thread-163611] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:17:59.966 [DEBUG] [Thread-163611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] client lang: <none>
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] server lang: <none>
2025-09-29T18:17:59.967 [DEBUG] [Thread-163611] [transport.py] [_log()] kex follows: False
2025-09-29T18:17:59.968 [DEBUG] [Thread-163611] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:17:59.968 [DEBUG] [Thread-163611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:17:59.968 [DEBUG] [Thread-163611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:17:59.968 [DEBUG] [Thread-163611] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:17:59.968 [DEBUG] [Thread-163611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:17:59.968 [DEBUG] [Thread-163611] [transport.py] [_log()] Compression: none
2025-09-29T18:17:59.968 [DEBUG] [Thread-163611] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:00.030 [DEBUG] [Thread-163611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:00.031 [DEBUG] [Thread-163611] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:00.031 [DEBUG] [Thread-163611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:18:00.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:18:00.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:00.085 [DEBUG] [Thread-163611] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:00.085 [DEBUG] [Thread-163611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:00.086 [DEBUG] [Thread-163611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:00.086 [DEBUG] [Thread-163611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:18:00.086 [DEBUG] [Thread-163611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:00.103 [INFO] [Thread-163611] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:00.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:18:00.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:01.037 [DEBUG] [Thread-163611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:01.037 [DEBUG] [Thread-163611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:01.085 [DEBUG] [Thread-163611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:01.085 [DEBUG] [Thread-163611] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:01.094 [DEBUG] [Thread-163611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:01.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:01.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:18:01.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:18:01.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:01.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:01.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:01.129 [DEBUG] [Thread-163611] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:05.936 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:05.951 [DEBUG] [Thread-163613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:11.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:18:11.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:18:11.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:18:11.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 17, 39), 12.73, 41.76, 0.0, 18.95, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:18:11.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:17:39
2025-09-29T18:18:11.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:18:12.032 [DEBUG] [Thread-163614] [transport.py] [_log()] starting thread (client mode): 0x2b9cd150
2025-09-29T18:18:12.032 [DEBUG] [Thread-163614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:18:12.053 [DEBUG] [Thread-163614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:18:12.054 [INFO] [Thread-163614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] client lang: <none>
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] server lang: <none>
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] kex follows: False
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] Compression: none
2025-09-29T18:18:12.057 [DEBUG] [Thread-163614] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:12.072 [DEBUG] [Thread-163614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:12.072 [DEBUG] [Thread-163614] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:12.073 [DEBUG] [Thread-163614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:18:12.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:18:12.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:12.074 [DEBUG] [Thread-163614] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:12.074 [DEBUG] [Thread-163614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:12.074 [DEBUG] [Thread-163614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:12.074 [DEBUG] [Thread-163614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:18:12.074 [DEBUG] [Thread-163614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:12.086 [INFO] [Thread-163614] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:12.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:12.368 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:12.740 [DEBUG] [Thread-163614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:12.749 [DEBUG] [Thread-163614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:12.749 [DEBUG] [Thread-163614] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:18:12.781 [DEBUG] [Thread-163614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:12.781 [DEBUG] [Thread-163614] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:12.784 [DEBUG] [Thread-163614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:12.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:12.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:18:12.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:18:12.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:18:12.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:12.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:18:12.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:12.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.678884 -999.00  +13.00  12.99     47   +2.20 1 1 1 1 1   887    0 9.85 -42.56 ----- 13.0 13.0 167.2 20.5 15.2 -26.8 15.2 -25.5 15.8 -26.1 16.2 -27.4
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.678884
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:18:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:17:39', tmtdew=12.73, humidity=41.76, cloud=0.0, wind=18.95, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:17:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:18:12.804 [DEBUG] [Thread-163614] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:12.884 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:18:12.895 [DEBUG] [Thread-163617] [transport.py] [_log()] starting thread (client mode): 0x2b9cbfa0
2025-09-29T18:18:12.895 [DEBUG] [Thread-163617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:18:12.910 [DEBUG] [Thread-163617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:18:12.910 [INFO] [Thread-163617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:18:12.917 [DEBUG] [Thread-163617] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:18:12.917 [DEBUG] [Thread-163617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:18:12.917 [DEBUG] [Thread-163617] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:18:12.917 [DEBUG] [Thread-163617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:12.917 [DEBUG] [Thread-163617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:12.917 [DEBUG] [Thread-163617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] client lang: <none>
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] server lang: <none>
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] kex follows: False
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] Compression: none
2025-09-29T18:18:12.918 [DEBUG] [Thread-163617] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:12.976 [DEBUG] [Thread-163617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:12.976 [DEBUG] [Thread-163617] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:12.976 [DEBUG] [Thread-163617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:18:12.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:18:12.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:13.033 [DEBUG] [Thread-163617] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:13.033 [DEBUG] [Thread-163617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:13.033 [DEBUG] [Thread-163617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:13.033 [DEBUG] [Thread-163617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:18:13.033 [DEBUG] [Thread-163617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:13.048 [INFO] [Thread-163617] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:13.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:18:13.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:14.043 [DEBUG] [Thread-163617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:14.052 [DEBUG] [Thread-163617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:14.091 [DEBUG] [Thread-163617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:14.091 [DEBUG] [Thread-163617] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:14.099 [DEBUG] [Thread-163617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:14.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:14.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:18:14.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:18:14.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:14.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:14.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:14.130 [DEBUG] [Thread-163617] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:18.763 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:20.979 [DEBUG] [Thread-163619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:24.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:18:24.133 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:18:24.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:18:24.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 18, 11), 12.71, 41.82, 0.0, 19.92, 13.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:18:24.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:18:11
2025-09-29T18:18:24.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:18:24.976 [DEBUG] [Thread-163620] [transport.py] [_log()] starting thread (client mode): 0x2e38c460
2025-09-29T18:18:24.976 [DEBUG] [Thread-163620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:18:24.997 [DEBUG] [Thread-163620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:18:24.998 [INFO] [Thread-163620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:18:25.001 [DEBUG] [Thread-163620] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:18:25.001 [DEBUG] [Thread-163620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:18:25.001 [DEBUG] [Thread-163620] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:18:25.001 [DEBUG] [Thread-163620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:25.001 [DEBUG] [Thread-163620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:25.001 [DEBUG] [Thread-163620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] client lang: <none>
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] server lang: <none>
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] kex follows: False
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] Compression: none
2025-09-29T18:18:25.002 [DEBUG] [Thread-163620] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:25.019 [DEBUG] [Thread-163620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:25.020 [DEBUG] [Thread-163620] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:25.020 [DEBUG] [Thread-163620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:18:25.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:18:25.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:25.022 [DEBUG] [Thread-163620] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:25.022 [DEBUG] [Thread-163620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:25.022 [DEBUG] [Thread-163620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:25.023 [DEBUG] [Thread-163620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:18:25.023 [DEBUG] [Thread-163620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:25.040 [INFO] [Thread-163620] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:25.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:25.155 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:25.866 [DEBUG] [Thread-163620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:25.866 [DEBUG] [Thread-163620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:25.867 [DEBUG] [Thread-163620] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:18:25.907 [DEBUG] [Thread-163620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:25.907 [DEBUG] [Thread-163620] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:25.910 [DEBUG] [Thread-163620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:25.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:25.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:18:25.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:18:25.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:18:25.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:25.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:18:25.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:25.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:18:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.678884 -999.00  +13.00  12.99     47   +2.20 1 1 1 1 1   887    0 9.85 -42.56 ----- 13.0 13.0 167.2 20.5 15.2 -26.8 15.2 -25.5 15.8 -26.1 16.2 -27.4
2025-09-29T18:18:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:18:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:18:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.678884
2025-09-29T18:18:25.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:18:25.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:18:25.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:18:25.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:18:25.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:18:25.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:18:11', tmtdew=12.71, humidity=41.82, cloud=0.0, wind=19.92, temperature=13.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:17:35.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:18:25.937 [DEBUG] [Thread-163620] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:26.018 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:18:26.026 [DEBUG] [Thread-163623] [transport.py] [_log()] starting thread (client mode): 0x2b923ee0
2025-09-29T18:18:26.027 [DEBUG] [Thread-163623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:18:26.041 [DEBUG] [Thread-163623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:18:26.041 [INFO] [Thread-163623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:18:26.048 [DEBUG] [Thread-163623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] client lang: <none>
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] server lang: <none>
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] kex follows: False
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] Compression: none
2025-09-29T18:18:26.049 [DEBUG] [Thread-163623] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:26.104 [DEBUG] [Thread-163623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:26.105 [DEBUG] [Thread-163623] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:26.105 [DEBUG] [Thread-163623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:18:26.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:18:26.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:26.161 [DEBUG] [Thread-163623] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:26.161 [DEBUG] [Thread-163623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:26.162 [DEBUG] [Thread-163623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:26.162 [DEBUG] [Thread-163623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:18:26.162 [DEBUG] [Thread-163623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:26.181 [INFO] [Thread-163623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:26.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:18:26.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:27.188 [DEBUG] [Thread-163623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:27.188 [DEBUG] [Thread-163623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:27.236 [DEBUG] [Thread-163623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:27.236 [DEBUG] [Thread-163623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:27.245 [DEBUG] [Thread-163623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:27.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:27.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:18:27.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:18:27.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:27.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:27.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:27.279 [DEBUG] [Thread-163623] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:31.567 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:36.026 [DEBUG] [Thread-163625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:36.840 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:36.841 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:37.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:18:37.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:18:37.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:18:37.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 18, 11), 12.71, 41.82, 0.0, 19.92, 13.12, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:18:37.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:18:11
2025-09-29T18:18:37.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:18:37.994 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:38.112 [DEBUG] [Thread-163626] [transport.py] [_log()] starting thread (client mode): 0x2e3c2ec0
2025-09-29T18:18:38.112 [DEBUG] [Thread-163626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:18:38.127 [DEBUG] [Thread-163626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:18:38.127 [INFO] [Thread-163626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] client lang: <none>
2025-09-29T18:18:38.130 [DEBUG] [Thread-163626] [transport.py] [_log()] server lang: <none>
2025-09-29T18:18:38.131 [DEBUG] [Thread-163626] [transport.py] [_log()] kex follows: False
2025-09-29T18:18:38.131 [DEBUG] [Thread-163626] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:18:38.131 [DEBUG] [Thread-163626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:18:38.131 [DEBUG] [Thread-163626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:18:38.131 [DEBUG] [Thread-163626] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:18:38.131 [DEBUG] [Thread-163626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:18:38.131 [DEBUG] [Thread-163626] [transport.py] [_log()] Compression: none
2025-09-29T18:18:38.131 [DEBUG] [Thread-163626] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:38.146 [DEBUG] [Thread-163626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:38.147 [DEBUG] [Thread-163626] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:38.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:18:38.148 [DEBUG] [Thread-163626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:18:38.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:38.150 [DEBUG] [Thread-163626] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:38.150 [DEBUG] [Thread-163626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:38.150 [DEBUG] [Thread-163626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:38.151 [DEBUG] [Thread-163626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:18:38.151 [DEBUG] [Thread-163626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:38.171 [INFO] [Thread-163626] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:38.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:38.855 [DEBUG] [Thread-163626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:38.855 [DEBUG] [Thread-163626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:38.856 [DEBUG] [Thread-163626] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:18:38.896 [DEBUG] [Thread-163626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:38.896 [DEBUG] [Thread-163626] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:38.899 [DEBUG] [Thread-163626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:38.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:38.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:18:38.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:18:38.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:18:38.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:38.921 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:18:38.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:38.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:38.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:18:38.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.679231 -999.00  +13.00  15.23     47   +2.20 1 1 1 1 1   887    0 9.53 -41.89 ----- 15.2 15.2 151.2 23.6 15.2 -26.6 15.1 -25.7 15.8 -26.1 16.2 -27.5
2025-09-29T18:18:38.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:18:38.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:18:38.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.679231
2025-09-29T18:18:38.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:18:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:18:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:18:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:18:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:18:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:18:11', tmtdew=12.71, humidity=41.82, cloud=0.0, wind=19.92, temperature=13.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:18:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:18:38.923 [DEBUG] [Thread-163626] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:39.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:18:39.022 [DEBUG] [Thread-163629] [transport.py] [_log()] starting thread (client mode): 0x2e38e110
2025-09-29T18:18:39.022 [DEBUG] [Thread-163629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:18:39.037 [DEBUG] [Thread-163629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:18:39.037 [INFO] [Thread-163629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:18:39.044 [DEBUG] [Thread-163629] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:18:39.044 [DEBUG] [Thread-163629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] client lang: <none>
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] server lang: <none>
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] kex follows: False
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] Compression: none
2025-09-29T18:18:39.045 [DEBUG] [Thread-163629] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:39.106 [DEBUG] [Thread-163629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:39.107 [DEBUG] [Thread-163629] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:39.107 [DEBUG] [Thread-163629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:18:39.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:18:39.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:39.161 [DEBUG] [Thread-163629] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:39.162 [DEBUG] [Thread-163629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:39.162 [DEBUG] [Thread-163629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:39.162 [DEBUG] [Thread-163629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:18:39.162 [DEBUG] [Thread-163629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:39.181 [INFO] [Thread-163629] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:39.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:18:39.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:40.124 [DEBUG] [Thread-163629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:40.124 [DEBUG] [Thread-163629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:40.172 [DEBUG] [Thread-163629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:40.172 [DEBUG] [Thread-163629] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:40.181 [DEBUG] [Thread-163629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:40.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:40.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:18:40.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:18:40.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:40.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:40.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:40.215 [DEBUG] [Thread-163629] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:44.404 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:50.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:18:50.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:18:50.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:18:50.796 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:50.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 18, 43), 12.64, 41.87, 0.0, 22.66, 13.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:18:50.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:18:43
2025-09-29T18:18:50.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:18:51.077 [DEBUG] [Thread-163631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:51.080 [DEBUG] [Thread-163632] [transport.py] [_log()] starting thread (client mode): 0x2e3fab30
2025-09-29T18:18:51.080 [DEBUG] [Thread-163632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:18:51.100 [DEBUG] [Thread-163632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:18:51.100 [INFO] [Thread-163632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] client lang: <none>
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] server lang: <none>
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] kex follows: False
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] Compression: none
2025-09-29T18:18:51.103 [DEBUG] [Thread-163632] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:51.120 [DEBUG] [Thread-163632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:51.120 [DEBUG] [Thread-163632] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:51.120 [DEBUG] [Thread-163632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:18:51.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:18:51.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:51.121 [DEBUG] [Thread-163632] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:51.121 [DEBUG] [Thread-163632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:51.121 [DEBUG] [Thread-163632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:51.121 [DEBUG] [Thread-163632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:18:51.121 [DEBUG] [Thread-163632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:51.130 [INFO] [Thread-163632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:51.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:51.945 [DEBUG] [Thread-163632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:51.945 [DEBUG] [Thread-163632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:51.945 [DEBUG] [Thread-163632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:18:51.986 [DEBUG] [Thread-163632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:51.986 [DEBUG] [Thread-163632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:51.989 [DEBUG] [Thread-163632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:52.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:52.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:18:52.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:18:52.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:18:52.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:52.006 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:18:52.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:52.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:18:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.679231 -999.00  +13.00  15.23     47   +2.20 1 1 1 1 1   887    0 9.53 -41.89 ----- 15.2 15.2 151.2 23.6 15.2 -26.6 15.1 -25.7 15.8 -26.1 16.2 -27.5
2025-09-29T18:18:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:18:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:18:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.679231
2025-09-29T18:18:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:18:52.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:18:52.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:18:52.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:18:52.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:18:52.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:18:43', tmtdew=12.64, humidity=41.87, cloud=0.0, wind=22.66, temperature=13.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:18:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:18:52.007 [DEBUG] [Thread-163632] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:52.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:18:52.091 [DEBUG] [Thread-163635] [transport.py] [_log()] starting thread (client mode): 0x2e3def20
2025-09-29T18:18:52.091 [DEBUG] [Thread-163635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:18:52.105 [DEBUG] [Thread-163635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:18:52.105 [INFO] [Thread-163635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] client lang: <none>
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] server lang: <none>
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] kex follows: False
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] Compression: none
2025-09-29T18:18:52.113 [DEBUG] [Thread-163635] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:18:52.168 [DEBUG] [Thread-163635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:18:52.168 [DEBUG] [Thread-163635] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:18:52.168 [DEBUG] [Thread-163635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:18:52.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:18:52.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:18:52.225 [DEBUG] [Thread-163635] [transport.py] [_log()] userauth is OK
2025-09-29T18:18:52.225 [DEBUG] [Thread-163635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:18:52.225 [DEBUG] [Thread-163635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:18:52.225 [DEBUG] [Thread-163635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:18:52.225 [DEBUG] [Thread-163635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:18:52.239 [INFO] [Thread-163635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:18:52.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:18:52.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:18:52.347 [DEBUG] [Thread-163637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:18:53.207 [DEBUG] [Thread-163635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:18:53.207 [DEBUG] [Thread-163635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:18:53.255 [DEBUG] [Thread-163635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:18:53.255 [DEBUG] [Thread-163635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:18:53.264 [DEBUG] [Thread-163635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:18:53.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:18:53.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:18:53.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:18:53.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:18:53.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:18:53.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:18:53.299 [DEBUG] [Thread-163635] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:18:57.199 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:19:03.302 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:19:03.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:19:03.723 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:03.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 18, 43), 12.64, 41.87, 0.0, 22.66, 13.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:19:03.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:18:43
2025-09-29T18:19:04.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:19:04.056 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:04.173 [DEBUG] [Thread-163638] [transport.py] [_log()] starting thread (client mode): 0x2b9215a0
2025-09-29T18:19:04.173 [DEBUG] [Thread-163638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:04.193 [DEBUG] [Thread-163638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:19:04.193 [INFO] [Thread-163638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] Compression: none
2025-09-29T18:19:04.197 [DEBUG] [Thread-163638] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:04.212 [DEBUG] [Thread-163638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:04.212 [DEBUG] [Thread-163638] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:04.212 [DEBUG] [Thread-163638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:19:04.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:19:04.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:04.212 [DEBUG] [Thread-163638] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:04.212 [DEBUG] [Thread-163638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:04.213 [DEBUG] [Thread-163638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:04.213 [DEBUG] [Thread-163638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:19:04.213 [DEBUG] [Thread-163638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:04.221 [INFO] [Thread-163638] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:04.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:05.051 [DEBUG] [Thread-163638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:05.051 [DEBUG] [Thread-163638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:05.051 [DEBUG] [Thread-163638] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:19:05.092 [DEBUG] [Thread-163638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:05.092 [DEBUG] [Thread-163638] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:05.095 [DEBUG] [Thread-163638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:05.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:05.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:19:05.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:19:05.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:19:05.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:05.120 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:19:05.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:05.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:19:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.679231 -999.00  +13.00  15.23     47   +2.20 1 1 1 1 1   887    0 9.53 -41.89 ----- 15.2 15.2 151.2 23.6 15.2 -26.6 15.1 -25.7 15.8 -26.1 16.2 -27.5
2025-09-29T18:19:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:19:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:19:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.679231
2025-09-29T18:19:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:19:05.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:19:05.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:19:05.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:19:05.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:19:05.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:18:43', tmtdew=12.64, humidity=41.87, cloud=0.0, wind=22.66, temperature=13.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:18:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:19:05.123 [DEBUG] [Thread-163638] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:05.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:19:05.220 [DEBUG] [Thread-163641] [transport.py] [_log()] starting thread (client mode): 0x2b94dc60
2025-09-29T18:19:05.220 [DEBUG] [Thread-163641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:05.235 [DEBUG] [Thread-163641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:19:05.235 [INFO] [Thread-163641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:19:05.242 [DEBUG] [Thread-163641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:05.243 [DEBUG] [Thread-163641] [transport.py] [_log()] Compression: none
2025-09-29T18:19:05.244 [DEBUG] [Thread-163641] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:05.301 [DEBUG] [Thread-163641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:05.301 [DEBUG] [Thread-163641] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:05.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:19:05.302 [DEBUG] [Thread-163641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:19:05.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:05.357 [DEBUG] [Thread-163641] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:05.358 [DEBUG] [Thread-163641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:05.358 [DEBUG] [Thread-163641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:05.358 [DEBUG] [Thread-163641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:19:05.358 [DEBUG] [Thread-163641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:05.377 [INFO] [Thread-163641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:05.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:19:05.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:06.110 [DEBUG] [Thread-163643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:06.339 [DEBUG] [Thread-163641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:06.340 [DEBUG] [Thread-163641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:06.387 [DEBUG] [Thread-163641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:06.387 [DEBUG] [Thread-163641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:06.396 [DEBUG] [Thread-163641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:06.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:06.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:19:06.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:19:06.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:06.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:06.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:06.431 [DEBUG] [Thread-163641] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:06.462 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:06.866 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:07.319 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:07.789 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:08.183 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:08.635 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:09.106 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:09.494 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:09.947 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:10.439 [DEBUG] [Thread-163504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:16.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:19:16.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:19:16.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:19:17.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 18, 43), 12.64, 41.87, 0.0, 22.66, 13.02, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:19:17.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:18:43
2025-09-29T18:19:17.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:19:17.309 [DEBUG] [Thread-163644] [transport.py] [_log()] starting thread (client mode): 0x2e3df8e0
2025-09-29T18:19:17.309 [DEBUG] [Thread-163644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:17.329 [DEBUG] [Thread-163644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:19:17.329 [INFO] [Thread-163644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:19:17.332 [DEBUG] [Thread-163644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:17.333 [DEBUG] [Thread-163644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:17.334 [DEBUG] [Thread-163644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:17.334 [DEBUG] [Thread-163644] [transport.py] [_log()] Compression: none
2025-09-29T18:19:17.334 [DEBUG] [Thread-163644] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:17.350 [DEBUG] [Thread-163644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:17.350 [DEBUG] [Thread-163644] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:17.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:19:17.351 [DEBUG] [Thread-163644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:19:17.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:17.352 [DEBUG] [Thread-163644] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:17.352 [DEBUG] [Thread-163644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:17.353 [DEBUG] [Thread-163644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:17.353 [DEBUG] [Thread-163644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:19:17.353 [DEBUG] [Thread-163644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:17.376 [INFO] [Thread-163644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:17.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:18.043 [DEBUG] [Thread-163644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:18.043 [DEBUG] [Thread-163644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:18.044 [DEBUG] [Thread-163644] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:19:18.084 [DEBUG] [Thread-163644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:18.084 [DEBUG] [Thread-163644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:18.087 [DEBUG] [Thread-163644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:18.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:18.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:19:18.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:19:18.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:19:18.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:18.109 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:19:18.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:18.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:19:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.679578 -999.00  +13.00  13.81     47   +2.20 1 1 1 1 1   887    0 9.79 -38.47 ----- 13.8 13.8 160.4 23.8 15.2 -26.7 15.1 -25.4 15.7 -26.2 16.1 -27.2
2025-09-29T18:19:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:19:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:19:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.679578
2025-09-29T18:19:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:19:18.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:19:18.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:19:18.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:19:18.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:19:18.111 [DEBUG] [Thread-163644] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:18.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:18:43', tmtdew=12.64, humidity=41.87, cloud=0.0, wind=22.66, temperature=13.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:18:35.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:19:18.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:19:18.208 [DEBUG] [Thread-163647] [transport.py] [_log()] starting thread (client mode): 0x2e361660
2025-09-29T18:19:18.209 [DEBUG] [Thread-163647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:18.230 [DEBUG] [Thread-163647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:19:18.230 [INFO] [Thread-163647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:19:18.238 [DEBUG] [Thread-163647] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:18.238 [DEBUG] [Thread-163647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:19:18.238 [DEBUG] [Thread-163647] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:18.238 [DEBUG] [Thread-163647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:18.238 [DEBUG] [Thread-163647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:18.238 [DEBUG] [Thread-163647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:18.238 [DEBUG] [Thread-163647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:18.239 [DEBUG] [Thread-163647] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:18.240 [DEBUG] [Thread-163647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:18.240 [DEBUG] [Thread-163647] [transport.py] [_log()] Compression: none
2025-09-29T18:19:18.240 [DEBUG] [Thread-163647] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:18.298 [DEBUG] [Thread-163647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:18.298 [DEBUG] [Thread-163647] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:18.298 [DEBUG] [Thread-163647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:19:18.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:19:18.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:18.354 [DEBUG] [Thread-163647] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:18.354 [DEBUG] [Thread-163647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:18.355 [DEBUG] [Thread-163647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:18.355 [DEBUG] [Thread-163647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:19:18.355 [DEBUG] [Thread-163647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:18.375 [INFO] [Thread-163647] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:18.375 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:19:18.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:19.414 [DEBUG] [Thread-163647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:19.415 [DEBUG] [Thread-163647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:19.462 [DEBUG] [Thread-163647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:19.462 [DEBUG] [Thread-163647] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:19.471 [DEBUG] [Thread-163647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:19.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:19.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:19:19.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:19:19.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:19.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:19.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:19.506 [DEBUG] [Thread-163647] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:21.153 [DEBUG] [Thread-163649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:29.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:19:29.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:19:29.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:19:30.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 19, 15), 12.63, 41.91, 0.0, 23.47, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:19:30.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:19:15
2025-09-29T18:19:30.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:19:30.344 [DEBUG] [Thread-163650] [transport.py] [_log()] starting thread (client mode): 0x2e3deb60
2025-09-29T18:19:30.344 [DEBUG] [Thread-163650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:30.363 [DEBUG] [Thread-163650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:19:30.364 [INFO] [Thread-163650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] Compression: none
2025-09-29T18:19:30.367 [DEBUG] [Thread-163650] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:30.384 [DEBUG] [Thread-163650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:30.384 [DEBUG] [Thread-163650] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:30.385 [DEBUG] [Thread-163650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:19:30.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:19:30.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:30.385 [DEBUG] [Thread-163650] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:30.385 [DEBUG] [Thread-163650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:30.385 [DEBUG] [Thread-163650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:30.385 [DEBUG] [Thread-163650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:19:30.385 [DEBUG] [Thread-163650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:30.412 [INFO] [Thread-163650] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:30.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:31.261 [DEBUG] [Thread-163650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:31.261 [DEBUG] [Thread-163650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:31.262 [DEBUG] [Thread-163650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:19:31.302 [DEBUG] [Thread-163650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:31.302 [DEBUG] [Thread-163650] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:31.305 [DEBUG] [Thread-163650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:31.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:31.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:19:31.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:19:31.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:19:31.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:31.331 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:19:31.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:31.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:31.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:19:31.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.679578 -999.00  +13.00  13.81     47   +2.20 1 1 1 1 1   887    0 9.79 -38.47 ----- 13.8 13.8 160.4 23.8 15.2 -26.7 15.1 -25.4 15.7 -26.2 16.1 -27.2
2025-09-29T18:19:31.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:19:31.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:19:31.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.679578
2025-09-29T18:19:31.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:19:31.333 [DEBUG] [Thread-163650] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:31.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:19:31.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:19:31.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:19:31.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:19:31.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:19:15', tmtdew=12.63, humidity=41.91, cloud=0.0, wind=23.47, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:18:35.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:19:31.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:19:31.422 [DEBUG] [Thread-163653] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-29T18:19:31.422 [DEBUG] [Thread-163653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:31.437 [DEBUG] [Thread-163653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:19:31.437 [INFO] [Thread-163653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:19:31.444 [DEBUG] [Thread-163653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:31.445 [DEBUG] [Thread-163653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:19:31.445 [DEBUG] [Thread-163653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:31.445 [DEBUG] [Thread-163653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:31.445 [DEBUG] [Thread-163653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:31.445 [DEBUG] [Thread-163653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:31.445 [DEBUG] [Thread-163653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:31.445 [DEBUG] [Thread-163653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] Compression: none
2025-09-29T18:19:31.446 [DEBUG] [Thread-163653] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:31.501 [DEBUG] [Thread-163653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:31.501 [DEBUG] [Thread-163653] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:31.502 [DEBUG] [Thread-163653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:19:31.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:19:31.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:31.557 [DEBUG] [Thread-163653] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:31.558 [DEBUG] [Thread-163653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:31.558 [DEBUG] [Thread-163653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:31.558 [DEBUG] [Thread-163653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:19:31.558 [DEBUG] [Thread-163653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:31.577 [INFO] [Thread-163653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:31.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:19:31.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:32.564 [DEBUG] [Thread-163653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:32.565 [DEBUG] [Thread-163653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:32.612 [DEBUG] [Thread-163653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:32.613 [DEBUG] [Thread-163653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:32.622 [DEBUG] [Thread-163653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:32.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:32.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:19:32.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:19:32.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:32.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:32.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:32.656 [DEBUG] [Thread-163653] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:36.203 [DEBUG] [Thread-163655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:36.983 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:36.984 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:42.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:19:42.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:19:42.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:19:43.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 19, 15), 12.63, 41.91, 0.0, 23.47, 13.03, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:19:43.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:19:15
2025-09-29T18:19:43.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:19:43.495 [DEBUG] [Thread-163656] [transport.py] [_log()] starting thread (client mode): 0x2b923880
2025-09-29T18:19:43.495 [DEBUG] [Thread-163656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:43.515 [DEBUG] [Thread-163656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:19:43.516 [INFO] [Thread-163656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:43.520 [DEBUG] [Thread-163656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] Compression: none
2025-09-29T18:19:43.521 [DEBUG] [Thread-163656] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:43.542 [DEBUG] [Thread-163656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:43.542 [DEBUG] [Thread-163656] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:43.543 [DEBUG] [Thread-163656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:19:43.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:19:43.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:43.585 [DEBUG] [Thread-163656] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:43.585 [DEBUG] [Thread-163656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:43.585 [DEBUG] [Thread-163656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:43.585 [DEBUG] [Thread-163656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:19:43.585 [DEBUG] [Thread-163656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:43.621 [INFO] [Thread-163656] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:43.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:44.309 [DEBUG] [Thread-163656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:44.309 [DEBUG] [Thread-163656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:44.309 [DEBUG] [Thread-163656] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:19:44.350 [DEBUG] [Thread-163656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:44.350 [DEBUG] [Thread-163656] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:44.353 [DEBUG] [Thread-163656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:44.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:44.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:19:44.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:19:44.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:19:44.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:44.370 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:19:44.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:44.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.680273 -999.00  +12.90  18.39     48   +2.30 1 1 1 1 1   887    0 9.95 -32.55 ----- 18.4 18.4 157.4 22.7 15.2 -26.9 15.0 -25.9 15.6 -26.5 16.0 -27.7
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.680273
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:19:44.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:19:15', tmtdew=12.63, humidity=41.91, cloud=0.0, wind=23.47, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:19:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:19:44.372 [DEBUG] [Thread-163656] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:44.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:19:44.453 [DEBUG] [Thread-163659] [transport.py] [_log()] starting thread (client mode): 0x2e360a90
2025-09-29T18:19:44.453 [DEBUG] [Thread-163659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:44.468 [DEBUG] [Thread-163659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:19:44.468 [INFO] [Thread-163659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:19:44.475 [DEBUG] [Thread-163659] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:44.475 [DEBUG] [Thread-163659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:44.476 [DEBUG] [Thread-163659] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:44.477 [DEBUG] [Thread-163659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:44.477 [DEBUG] [Thread-163659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:44.477 [DEBUG] [Thread-163659] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:44.477 [DEBUG] [Thread-163659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:44.477 [DEBUG] [Thread-163659] [transport.py] [_log()] Compression: none
2025-09-29T18:19:44.477 [DEBUG] [Thread-163659] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:44.534 [DEBUG] [Thread-163659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:44.535 [DEBUG] [Thread-163659] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:44.535 [DEBUG] [Thread-163659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:19:44.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:19:44.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:44.589 [DEBUG] [Thread-163659] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:44.590 [DEBUG] [Thread-163659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:44.590 [DEBUG] [Thread-163659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:44.590 [DEBUG] [Thread-163659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:19:44.590 [DEBUG] [Thread-163659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:44.609 [INFO] [Thread-163659] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:44.609 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:19:44.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:45.654 [DEBUG] [Thread-163659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:45.661 [DEBUG] [Thread-163659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:45.702 [DEBUG] [Thread-163659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:45.702 [DEBUG] [Thread-163659] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:45.711 [DEBUG] [Thread-163659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:45.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:45.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:19:45.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:19:45.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:45.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:45.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:45.746 [DEBUG] [Thread-163659] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:51.243 [DEBUG] [Thread-163661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:52.399 [DEBUG] [Thread-163662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:19:55.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:19:55.749 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:19:55.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:19:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 19, 47), 12.57, 41.91, 0.0, 22.81, 12.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:19:56.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:19:47
2025-09-29T18:19:56.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:19:56.588 [DEBUG] [Thread-163663] [transport.py] [_log()] starting thread (client mode): 0x2e363130
2025-09-29T18:19:56.588 [DEBUG] [Thread-163663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:56.608 [DEBUG] [Thread-163663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:19:56.608 [INFO] [Thread-163663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:56.612 [DEBUG] [Thread-163663] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] Compression: none
2025-09-29T18:19:56.613 [DEBUG] [Thread-163663] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:56.629 [DEBUG] [Thread-163663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:56.630 [DEBUG] [Thread-163663] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:56.631 [DEBUG] [Thread-163663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:19:56.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:19:56.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:56.632 [DEBUG] [Thread-163663] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:56.633 [DEBUG] [Thread-163663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:56.633 [DEBUG] [Thread-163663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:56.633 [DEBUG] [Thread-163663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:19:56.633 [DEBUG] [Thread-163663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:56.657 [INFO] [Thread-163663] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:56.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:57.447 [DEBUG] [Thread-163663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:57.447 [DEBUG] [Thread-163663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:57.448 [DEBUG] [Thread-163663] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:19:57.488 [DEBUG] [Thread-163663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:57.488 [DEBUG] [Thread-163663] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:57.491 [DEBUG] [Thread-163663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:57.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:57.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:19:57.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:19:57.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:19:57.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:57.513 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:19:57.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:57.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:57.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:19:57.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.680273 -999.00  +12.90  18.39     48   +2.30 1 1 1 1 1   887    0 9.95 -32.55 ----- 18.4 18.4 157.4 22.7 15.2 -26.9 15.0 -25.9 15.6 -26.5 16.0 -27.7
2025-09-29T18:19:57.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:19:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:19:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.680273
2025-09-29T18:19:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:19:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:19:57.516 [DEBUG] [Thread-163663] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:19:57.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:19:57.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:19:57.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:19:57.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:19:47', tmtdew=12.57, humidity=41.91, cloud=0.0, wind=22.81, temperature=12.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:19:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:19:57.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:19:57.610 [DEBUG] [Thread-163666] [transport.py] [_log()] starting thread (client mode): 0x2e360e20
2025-09-29T18:19:57.610 [DEBUG] [Thread-163666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:19:57.626 [DEBUG] [Thread-163666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:19:57.626 [INFO] [Thread-163666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:19:57.634 [DEBUG] [Thread-163666] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:19:57.634 [DEBUG] [Thread-163666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:19:57.634 [DEBUG] [Thread-163666] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:19:57.634 [DEBUG] [Thread-163666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:57.634 [DEBUG] [Thread-163666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] client lang: <none>
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] server lang: <none>
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] kex follows: False
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] Compression: none
2025-09-29T18:19:57.635 [DEBUG] [Thread-163666] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:19:57.698 [DEBUG] [Thread-163666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:19:57.699 [DEBUG] [Thread-163666] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:19:57.699 [DEBUG] [Thread-163666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:19:57.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:19:57.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:19:57.757 [DEBUG] [Thread-163666] [transport.py] [_log()] userauth is OK
2025-09-29T18:19:57.757 [DEBUG] [Thread-163666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:19:57.757 [DEBUG] [Thread-163666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:19:57.758 [DEBUG] [Thread-163666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:19:57.758 [DEBUG] [Thread-163666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:19:57.777 [INFO] [Thread-163666] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:19:57.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:19:57.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:19:58.794 [DEBUG] [Thread-163666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:19:58.794 [DEBUG] [Thread-163666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:19:58.842 [DEBUG] [Thread-163666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:19:58.842 [DEBUG] [Thread-163666] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:19:58.851 [DEBUG] [Thread-163666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:19:58.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:19:58.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:19:58.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:19:58.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:19:58.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:19:58.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:19:58.887 [DEBUG] [Thread-163666] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:20:06.285 [DEBUG] [Thread-163668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:20:08.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:20:08.889 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:20:08.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:20:09.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 19, 47), 12.57, 41.91, 0.0, 22.81, 12.99, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:20:09.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:19:47
2025-09-29T18:20:09.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:20:09.730 [DEBUG] [Thread-163669] [transport.py] [_log()] starting thread (client mode): 0x2b96af20
2025-09-29T18:20:09.730 [DEBUG] [Thread-163669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:20:09.749 [DEBUG] [Thread-163669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:20:09.749 [INFO] [Thread-163669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] client lang: <none>
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] server lang: <none>
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] kex follows: False
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:20:09.754 [DEBUG] [Thread-163669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:20:09.755 [DEBUG] [Thread-163669] [transport.py] [_log()] Compression: none
2025-09-29T18:20:09.755 [DEBUG] [Thread-163669] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:20:09.770 [DEBUG] [Thread-163669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:20:09.770 [DEBUG] [Thread-163669] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:20:09.771 [DEBUG] [Thread-163669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:20:09.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:20:09.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:20:09.773 [DEBUG] [Thread-163669] [transport.py] [_log()] userauth is OK
2025-09-29T18:20:09.773 [DEBUG] [Thread-163669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:20:09.773 [DEBUG] [Thread-163669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:20:09.773 [DEBUG] [Thread-163669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:20:09.773 [DEBUG] [Thread-163669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:20:09.794 [INFO] [Thread-163669] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:20:09.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:20:17.720 [DEBUG] [Thread-163669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:20:17.720 [DEBUG] [Thread-163669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:20:17.721 [DEBUG] [Thread-163669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:20:17.761 [DEBUG] [Thread-163669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:20:17.761 [DEBUG] [Thread-163669] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:20:17.764 [DEBUG] [Thread-163669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:20:17.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:20:17.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:20:17.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:20:17.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:20:17.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:20:17.855 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:20:17.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:20:17.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:20:17.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:20:17.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.680273 -999.00  +12.90  18.39     48   +2.30 1 1 1 1 1   887    0 9.95 -32.55 ----- 18.4 18.4 157.4 22.7 15.2 -26.9 15.0 -25.9 15.6 -26.5 16.0 -27.7
2025-09-29T18:20:17.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:20:17.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:20:17.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.680273
2025-09-29T18:20:17.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:20:17.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:20:17.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:20:17.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:20:17.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:20:17.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:19:47', tmtdew=12.57, humidity=41.91, cloud=0.0, wind=22.81, temperature=12.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:19:35.587', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:20:17.858 [DEBUG] [Thread-163669] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:20:17.933 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:20:17.945 [DEBUG] [Thread-163672] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-29T18:20:17.945 [DEBUG] [Thread-163672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:20:17.960 [DEBUG] [Thread-163672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:20:17.960 [INFO] [Thread-163672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:20:17.968 [DEBUG] [Thread-163672] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] client lang: <none>
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] server lang: <none>
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] kex follows: False
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:20:17.969 [DEBUG] [Thread-163672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:20:17.970 [DEBUG] [Thread-163672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:20:17.970 [DEBUG] [Thread-163672] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:20:17.970 [DEBUG] [Thread-163672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:20:17.970 [DEBUG] [Thread-163672] [transport.py] [_log()] Compression: none
2025-09-29T18:20:17.970 [DEBUG] [Thread-163672] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:20:18.027 [DEBUG] [Thread-163672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:20:18.028 [DEBUG] [Thread-163672] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:20:18.028 [DEBUG] [Thread-163672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:20:18.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:20:18.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:20:18.084 [DEBUG] [Thread-163672] [transport.py] [_log()] userauth is OK
2025-09-29T18:20:18.084 [DEBUG] [Thread-163672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:20:18.084 [DEBUG] [Thread-163672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:20:18.084 [DEBUG] [Thread-163672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:20:18.084 [DEBUG] [Thread-163672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:20:18.105 [INFO] [Thread-163672] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:20:18.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:20:18.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:20:19.098 [DEBUG] [Thread-163672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:20:19.098 [DEBUG] [Thread-163672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:20:19.146 [DEBUG] [Thread-163672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:20:19.146 [DEBUG] [Thread-163672] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:20:19.154 [DEBUG] [Thread-163672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:20:19.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:20:19.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:20:19.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:20:19.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:20:19.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:20:19.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:20:19.188 [DEBUG] [Thread-163672] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:20:21.323 [DEBUG] [Thread-163674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:20:29.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:20:29.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:20:29.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:20:29.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 20, 18), 12.56, 41.97, 0.0, 22.37, 13.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:20:29.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:20:18
2025-09-29T18:20:29.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:20:30.039 [DEBUG] [Thread-163675] [transport.py] [_log()] starting thread (client mode): 0x2b920ac0
2025-09-29T18:20:30.039 [DEBUG] [Thread-163675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:20:30.059 [DEBUG] [Thread-163675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:20:30.059 [INFO] [Thread-163675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] client lang: <none>
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] server lang: <none>
2025-09-29T18:20:30.063 [DEBUG] [Thread-163675] [transport.py] [_log()] kex follows: False
2025-09-29T18:20:30.064 [DEBUG] [Thread-163675] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:20:30.064 [DEBUG] [Thread-163675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:20:30.064 [DEBUG] [Thread-163675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:20:30.064 [DEBUG] [Thread-163675] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:20:30.064 [DEBUG] [Thread-163675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:20:30.064 [DEBUG] [Thread-163675] [transport.py] [_log()] Compression: none
2025-09-29T18:20:30.064 [DEBUG] [Thread-163675] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:20:30.081 [DEBUG] [Thread-163675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:20:30.082 [DEBUG] [Thread-163675] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:20:30.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:20:30.083 [DEBUG] [Thread-163675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:20:30.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:20:30.124 [DEBUG] [Thread-163675] [transport.py] [_log()] userauth is OK
2025-09-29T18:20:30.125 [DEBUG] [Thread-163675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:20:30.125 [DEBUG] [Thread-163675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:20:30.125 [DEBUG] [Thread-163675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:20:30.125 [DEBUG] [Thread-163675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:20:30.160 [INFO] [Thread-163675] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:20:30.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:20:30.744 [DEBUG] [Thread-163675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:20:30.744 [DEBUG] [Thread-163675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:20:30.744 [DEBUG] [Thread-163675] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:20:30.785 [DEBUG] [Thread-163675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:20:30.785 [DEBUG] [Thread-163675] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:20:30.787 [DEBUG] [Thread-163675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:20:30.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:20:30.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:20:30.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:20:30.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:20:30.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:20:30.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:20:30.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:20:30.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:20:30.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:20:30.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.680619 -999.00  +12.90  13.82     48   +2.30 1 1 1 1 1   887    0 10.05 -29.69 ----- 13.8 13.8 158.2 20.3 15.1 -26.7 15.0 -25.8 15.6 -26.1 16.0 -27.4
2025-09-29T18:20:30.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:20:30.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:20:30.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.680619
2025-09-29T18:20:30.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:20:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:20:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:20:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:20:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:20:30.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:20:18', tmtdew=12.56, humidity=41.97, cloud=0.0, wind=22.37, temperature=13.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:20:05.482', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:20:30.804 [DEBUG] [Thread-163675] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:20:30.891 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:20:30.900 [DEBUG] [Thread-163678] [transport.py] [_log()] starting thread (client mode): 0x2e3f9fc0
2025-09-29T18:20:30.900 [DEBUG] [Thread-163678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:20:30.915 [DEBUG] [Thread-163678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:20:30.915 [INFO] [Thread-163678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:20:30.922 [DEBUG] [Thread-163678] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:20:30.922 [DEBUG] [Thread-163678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:20:30.922 [DEBUG] [Thread-163678] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] client lang: <none>
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] server lang: <none>
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] kex follows: False
2025-09-29T18:20:30.923 [DEBUG] [Thread-163678] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:20:30.924 [DEBUG] [Thread-163678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:20:30.924 [DEBUG] [Thread-163678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:20:30.924 [DEBUG] [Thread-163678] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:20:30.924 [DEBUG] [Thread-163678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:20:30.924 [DEBUG] [Thread-163678] [transport.py] [_log()] Compression: none
2025-09-29T18:20:30.924 [DEBUG] [Thread-163678] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:20:30.978 [DEBUG] [Thread-163678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:20:30.979 [DEBUG] [Thread-163678] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:20:30.979 [DEBUG] [Thread-163678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:20:30.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:20:30.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:20:31.035 [DEBUG] [Thread-163678] [transport.py] [_log()] userauth is OK
2025-09-29T18:20:31.035 [DEBUG] [Thread-163678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:20:31.035 [DEBUG] [Thread-163678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:20:31.035 [DEBUG] [Thread-163678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:20:31.035 [DEBUG] [Thread-163678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:20:31.054 [INFO] [Thread-163678] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:20:31.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:20:31.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:20:32.061 [DEBUG] [Thread-163678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:20:32.062 [DEBUG] [Thread-163678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:20:32.109 [DEBUG] [Thread-163678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:20:32.109 [DEBUG] [Thread-163678] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:20:32.118 [DEBUG] [Thread-163678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:20:32.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:20:32.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:20:32.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:20:32.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:20:32.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:20:32.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:20:32.151 [DEBUG] [Thread-163678] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:20:36.356 [DEBUG] [Thread-163680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:20:37.127 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:20:37.127 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:20:42.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:20:42.153 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:20:42.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:20:42.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 20, 18), 12.56, 41.97, 0.0, 22.37, 13.07, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:20:42.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:20:18
2025-09-29T18:20:42.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:20:43.014 [DEBUG] [Thread-163681] [transport.py] [_log()] starting thread (client mode): 0x2e3ddea0
2025-09-29T18:20:43.015 [DEBUG] [Thread-163681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:20:43.035 [DEBUG] [Thread-163681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:20:43.035 [INFO] [Thread-163681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] client lang: <none>
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] server lang: <none>
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] kex follows: False
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:20:43.038 [DEBUG] [Thread-163681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:20:43.039 [DEBUG] [Thread-163681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:20:43.039 [DEBUG] [Thread-163681] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:20:43.039 [DEBUG] [Thread-163681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:20:43.039 [DEBUG] [Thread-163681] [transport.py] [_log()] Compression: none
2025-09-29T18:20:43.039 [DEBUG] [Thread-163681] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:20:43.055 [DEBUG] [Thread-163681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:20:43.055 [DEBUG] [Thread-163681] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:20:43.055 [DEBUG] [Thread-163681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:20:43.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:20:43.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:20:43.057 [DEBUG] [Thread-163681] [transport.py] [_log()] userauth is OK
2025-09-29T18:20:43.057 [DEBUG] [Thread-163681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:20:43.057 [DEBUG] [Thread-163681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:20:43.057 [DEBUG] [Thread-163681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:20:43.057 [DEBUG] [Thread-163681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:20:43.072 [INFO] [Thread-163681] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:20:43.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:20:43.835 [DEBUG] [Thread-163681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:20:43.835 [DEBUG] [Thread-163681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:20:43.835 [DEBUG] [Thread-163681] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:20:43.876 [DEBUG] [Thread-163681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:20:43.876 [DEBUG] [Thread-163681] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:20:43.878 [DEBUG] [Thread-163681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:20:43.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:20:43.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:20:43.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:20:43.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:20:43.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:20:43.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:20:43.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:20:43.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:20:43.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:20:43.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.680619 -999.00  +12.90  13.82     48   +2.30 1 1 1 1 1   887    0 10.05 -29.69 ----- 13.8 13.8 158.2 20.3 15.1 -26.7 15.0 -25.8 15.6 -26.1 16.0 -27.4
2025-09-29T18:20:43.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:20:43.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:20:43.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.680619
2025-09-29T18:20:43.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:20:43.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:20:43.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:20:43.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:20:43.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:20:43.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:20:18', tmtdew=12.56, humidity=41.97, cloud=0.0, wind=22.37, temperature=13.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:20:05.482', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:20:43.896 [DEBUG] [Thread-163681] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:20:43.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:20:43.982 [DEBUG] [Thread-163684] [transport.py] [_log()] starting thread (client mode): 0x2b9cd150
2025-09-29T18:20:43.982 [DEBUG] [Thread-163684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:20:43.996 [DEBUG] [Thread-163684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:20:43.996 [INFO] [Thread-163684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] client lang: <none>
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] server lang: <none>
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] kex follows: False
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] Compression: none
2025-09-29T18:20:44.004 [DEBUG] [Thread-163684] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:20:44.061 [DEBUG] [Thread-163684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:20:44.061 [DEBUG] [Thread-163684] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:20:44.061 [DEBUG] [Thread-163684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:20:44.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:20:44.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:20:44.118 [DEBUG] [Thread-163684] [transport.py] [_log()] userauth is OK
2025-09-29T18:20:44.118 [DEBUG] [Thread-163684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:20:44.118 [DEBUG] [Thread-163684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:20:44.118 [DEBUG] [Thread-163684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:20:44.118 [DEBUG] [Thread-163684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:20:44.133 [INFO] [Thread-163684] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:20:44.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:20:44.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:20:45.079 [DEBUG] [Thread-163684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:20:45.079 [DEBUG] [Thread-163684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:20:45.127 [DEBUG] [Thread-163684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:20:45.127 [DEBUG] [Thread-163684] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:20:45.135 [DEBUG] [Thread-163684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:20:45.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:20:45.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:20:45.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:20:45.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:20:45.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:20:45.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:20:45.166 [DEBUG] [Thread-163684] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:20:51.394 [DEBUG] [Thread-163686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:20:52.427 [DEBUG] [Thread-163687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:20:55.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:20:55.169 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:20:55.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:20:55.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 20, 50), 12.52, 42.09, 0.0, 23.57, 13.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:20:55.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:20:50
2025-09-29T18:20:55.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:20:56.001 [DEBUG] [Thread-163688] [transport.py] [_log()] starting thread (client mode): 0x2e38f430
2025-09-29T18:20:56.001 [DEBUG] [Thread-163688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:20:56.022 [DEBUG] [Thread-163688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:20:56.023 [INFO] [Thread-163688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:20:56.026 [DEBUG] [Thread-163688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:20:56.026 [DEBUG] [Thread-163688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:20:56.026 [DEBUG] [Thread-163688] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:20:56.026 [DEBUG] [Thread-163688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:56.026 [DEBUG] [Thread-163688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] client lang: <none>
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] server lang: <none>
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] kex follows: False
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] Compression: none
2025-09-29T18:20:56.027 [DEBUG] [Thread-163688] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:20:56.045 [DEBUG] [Thread-163688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:20:56.045 [DEBUG] [Thread-163688] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:20:56.046 [DEBUG] [Thread-163688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:20:56.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:20:56.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:20:56.048 [DEBUG] [Thread-163688] [transport.py] [_log()] userauth is OK
2025-09-29T18:20:56.048 [DEBUG] [Thread-163688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:20:56.048 [DEBUG] [Thread-163688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:20:56.048 [DEBUG] [Thread-163688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:20:56.048 [DEBUG] [Thread-163688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:20:56.071 [INFO] [Thread-163688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:20:56.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:20:56.727 [DEBUG] [Thread-163688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:20:56.727 [DEBUG] [Thread-163688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:20:56.728 [DEBUG] [Thread-163688] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:20:56.768 [DEBUG] [Thread-163688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:20:56.768 [DEBUG] [Thread-163688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:20:56.771 [DEBUG] [Thread-163688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:20:56.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:20:56.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:20:56.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:20:56.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:20:56.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:20:56.789 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:20:56.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:20:56.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:20:56.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:20:56.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.680967 -999.00  +12.90  16.28     48   +2.30 1 1 1 1 1   887    0 10.25 -27.81 ----- 16.3 16.3 159.2 25.7 15.0 -26.9 14.9 -25.8 15.5 -26.2 15.9 -27.5
2025-09-29T18:20:56.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:20:56.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:20:56.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.680967
2025-09-29T18:20:56.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:20:56.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:20:56.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:20:56.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:20:56.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:20:56.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:20:50', tmtdew=12.52, humidity=42.09, cloud=0.0, wind=23.57, temperature=13.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:20:35.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:20:56.790 [DEBUG] [Thread-163688] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:20:56.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:20:56.876 [DEBUG] [Thread-163691] [transport.py] [_log()] starting thread (client mode): 0x2e3dd630
2025-09-29T18:20:56.877 [DEBUG] [Thread-163691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:20:56.892 [DEBUG] [Thread-163691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:20:56.892 [INFO] [Thread-163691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:20:56.899 [DEBUG] [Thread-163691] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] client lang: <none>
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] server lang: <none>
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] kex follows: False
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] Compression: none
2025-09-29T18:20:56.900 [DEBUG] [Thread-163691] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:20:56.957 [DEBUG] [Thread-163691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:20:56.958 [DEBUG] [Thread-163691] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:20:56.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:20:56.959 [DEBUG] [Thread-163691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:20:56.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:20:57.013 [DEBUG] [Thread-163691] [transport.py] [_log()] userauth is OK
2025-09-29T18:20:57.014 [DEBUG] [Thread-163691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:20:57.014 [DEBUG] [Thread-163691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:20:57.014 [DEBUG] [Thread-163691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:20:57.014 [DEBUG] [Thread-163691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:20:57.032 [INFO] [Thread-163691] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:20:57.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:20:57.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:20:58.002 [DEBUG] [Thread-163691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:20:58.003 [DEBUG] [Thread-163691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:20:58.050 [DEBUG] [Thread-163691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:20:58.050 [DEBUG] [Thread-163691] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:20:58.059 [DEBUG] [Thread-163691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:20:58.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:20:58.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:20:58.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:20:58.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:20:58.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:20:58.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:20:58.094 [DEBUG] [Thread-163691] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:06.419 [DEBUG] [Thread-163693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:21:08.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:21:08.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:21:08.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:21:08.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 20, 50), 12.52, 42.09, 0.0, 23.57, 13.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:21:08.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:20:50
2025-09-29T18:21:08.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:21:08.941 [DEBUG] [Thread-163694] [transport.py] [_log()] starting thread (client mode): 0x2e361930
2025-09-29T18:21:08.941 [DEBUG] [Thread-163694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:21:08.956 [DEBUG] [Thread-163694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:21:08.956 [INFO] [Thread-163694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] client lang: <none>
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] server lang: <none>
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] kex follows: False
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] Compression: none
2025-09-29T18:21:08.960 [DEBUG] [Thread-163694] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:21:08.978 [DEBUG] [Thread-163694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:21:08.978 [DEBUG] [Thread-163694] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:21:08.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:21:08.979 [DEBUG] [Thread-163694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:21:08.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:21:08.981 [DEBUG] [Thread-163694] [transport.py] [_log()] userauth is OK
2025-09-29T18:21:08.981 [DEBUG] [Thread-163694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:21:08.982 [DEBUG] [Thread-163694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:21:08.982 [DEBUG] [Thread-163694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:21:08.982 [DEBUG] [Thread-163694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:21:09.005 [INFO] [Thread-163694] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:21:09.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:21:09.755 [DEBUG] [Thread-163694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:21:09.755 [DEBUG] [Thread-163694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:21:09.755 [DEBUG] [Thread-163694] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:21:09.796 [DEBUG] [Thread-163694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:21:09.796 [DEBUG] [Thread-163694] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:21:09.799 [DEBUG] [Thread-163694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:21:09.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:21:09.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:21:09.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:21:09.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:21:09.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:21:09.824 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:21:09.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:21:09.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:21:09.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:21:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.680967 -999.00  +12.90  16.28     48   +2.30 1 1 1 1 1   887    0 10.25 -27.81 ----- 16.3 16.3 159.2 25.7 15.0 -26.9 14.9 -25.8 15.5 -26.2 15.9 -27.5
2025-09-29T18:21:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:21:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:21:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.680967
2025-09-29T18:21:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:21:09.825 [DEBUG] [Thread-163694] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:09.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:21:09.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:21:09.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:21:09.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:21:09.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:20:50', tmtdew=12.52, humidity=42.09, cloud=0.0, wind=23.57, temperature=13.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:20:35.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:21:09.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:21:09.922 [DEBUG] [Thread-163697] [transport.py] [_log()] starting thread (client mode): 0x2e375960
2025-09-29T18:21:09.922 [DEBUG] [Thread-163697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:21:09.938 [DEBUG] [Thread-163697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:21:09.938 [INFO] [Thread-163697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:21:09.945 [DEBUG] [Thread-163697] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:21:09.945 [DEBUG] [Thread-163697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:21:09.945 [DEBUG] [Thread-163697] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:21:09.945 [DEBUG] [Thread-163697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:09.945 [DEBUG] [Thread-163697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:09.945 [DEBUG] [Thread-163697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:09.945 [DEBUG] [Thread-163697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] client lang: <none>
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] server lang: <none>
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] kex follows: False
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] Compression: none
2025-09-29T18:21:09.946 [DEBUG] [Thread-163697] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:21:10.004 [DEBUG] [Thread-163697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:21:10.005 [DEBUG] [Thread-163697] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:21:10.005 [DEBUG] [Thread-163697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:21:10.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:21:10.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:21:10.061 [DEBUG] [Thread-163697] [transport.py] [_log()] userauth is OK
2025-09-29T18:21:10.061 [DEBUG] [Thread-163697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:21:10.061 [DEBUG] [Thread-163697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:21:10.070 [DEBUG] [Thread-163697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:21:10.070 [DEBUG] [Thread-163697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:21:10.089 [INFO] [Thread-163697] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:21:10.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:21:10.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:21:11.088 [DEBUG] [Thread-163697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:21:11.088 [DEBUG] [Thread-163697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:21:11.136 [DEBUG] [Thread-163697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:21:11.136 [DEBUG] [Thread-163697] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:21:11.145 [DEBUG] [Thread-163697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:21:11.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:21:11.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:21:11.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:21:11.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:21:11.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:21:11.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:21:11.180 [DEBUG] [Thread-163697] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:21.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:21:21.182 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:21:21.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:21:21.453 [DEBUG] [Thread-163699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:21:21.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 20, 50), 12.52, 42.09, 0.0, 23.57, 13.04, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:21:21.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:20:50
2025-09-29T18:21:21.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:21:22.042 [DEBUG] [Thread-163700] [transport.py] [_log()] starting thread (client mode): 0x2e348100
2025-09-29T18:21:22.042 [DEBUG] [Thread-163700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:21:22.063 [DEBUG] [Thread-163700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:21:22.063 [INFO] [Thread-163700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:21:22.066 [DEBUG] [Thread-163700] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:21:22.066 [DEBUG] [Thread-163700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:21:22.066 [DEBUG] [Thread-163700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:21:22.066 [DEBUG] [Thread-163700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] client lang: <none>
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] server lang: <none>
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] kex follows: False
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] Compression: none
2025-09-29T18:21:22.067 [DEBUG] [Thread-163700] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:21:22.083 [DEBUG] [Thread-163700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:21:22.083 [DEBUG] [Thread-163700] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:21:22.084 [DEBUG] [Thread-163700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:21:22.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:21:22.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:21:22.085 [DEBUG] [Thread-163700] [transport.py] [_log()] userauth is OK
2025-09-29T18:21:22.085 [DEBUG] [Thread-163700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:21:22.085 [DEBUG] [Thread-163700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:21:22.085 [DEBUG] [Thread-163700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:21:22.085 [DEBUG] [Thread-163700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:21:22.114 [INFO] [Thread-163700] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:21:22.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:21:22.883 [DEBUG] [Thread-163700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:21:22.883 [DEBUG] [Thread-163700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:21:22.883 [DEBUG] [Thread-163700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:21:22.924 [DEBUG] [Thread-163700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:21:22.924 [DEBUG] [Thread-163700] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:21:22.925 [DEBUG] [Thread-163700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:21:22.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:21:22.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:21:22.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:21:22.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:21:22.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:21:22.944 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:21:22.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:21:22.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.680967 -999.00  +12.90  16.28     48   +2.30 1 1 1 1 1   887    0 10.25 -27.81 ----- 16.3 16.3 159.2 25.7 15.0 -26.9 14.9 -25.8 15.5 -26.2 15.9 -27.5
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.680967
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:21:22.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:20:50', tmtdew=12.52, humidity=42.09, cloud=0.0, wind=23.57, temperature=13.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:20:35.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:21:22.945 [DEBUG] [Thread-163700] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:23.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:21:23.029 [DEBUG] [Thread-163703] [transport.py] [_log()] starting thread (client mode): 0x2b9f1750
2025-09-29T18:21:23.029 [DEBUG] [Thread-163703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:21:23.044 [DEBUG] [Thread-163703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:21:23.044 [INFO] [Thread-163703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] client lang: <none>
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] server lang: <none>
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] kex follows: False
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] Compression: none
2025-09-29T18:21:23.051 [DEBUG] [Thread-163703] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:21:23.107 [DEBUG] [Thread-163703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:21:23.107 [DEBUG] [Thread-163703] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:21:23.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:21:23.107 [DEBUG] [Thread-163703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:21:23.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:21:23.164 [DEBUG] [Thread-163703] [transport.py] [_log()] userauth is OK
2025-09-29T18:21:23.164 [DEBUG] [Thread-163703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:21:23.164 [DEBUG] [Thread-163703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:21:23.164 [DEBUG] [Thread-163703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:21:23.164 [DEBUG] [Thread-163703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:21:23.177 [INFO] [Thread-163703] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:21:23.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:21:23.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:21:24.152 [DEBUG] [Thread-163703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:21:24.152 [DEBUG] [Thread-163703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:21:24.201 [DEBUG] [Thread-163703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:21:24.201 [DEBUG] [Thread-163703] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:21:24.209 [DEBUG] [Thread-163703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:21:24.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:21:24.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:21:24.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:21:24.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:21:24.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:21:24.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:21:24.241 [DEBUG] [Thread-163703] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:21:34.244 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:21:34.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:21:34.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 21, 22), 12.48, 42.17, 0.0, 24.51, 13.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:21:34.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:21:22
2025-09-29T18:21:34.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:21:35.087 [DEBUG] [Thread-163705] [transport.py] [_log()] starting thread (client mode): 0x2e3482e0
2025-09-29T18:21:35.088 [DEBUG] [Thread-163705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:21:35.107 [DEBUG] [Thread-163705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:21:35.108 [INFO] [Thread-163705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:21:35.111 [DEBUG] [Thread-163705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] client lang: <none>
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] server lang: <none>
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] kex follows: False
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] Compression: none
2025-09-29T18:21:35.112 [DEBUG] [Thread-163705] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:21:35.133 [DEBUG] [Thread-163705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:21:35.134 [DEBUG] [Thread-163705] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:21:35.135 [DEBUG] [Thread-163705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:21:35.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:21:35.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:21:35.176 [DEBUG] [Thread-163705] [transport.py] [_log()] userauth is OK
2025-09-29T18:21:35.177 [DEBUG] [Thread-163705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:21:35.177 [DEBUG] [Thread-163705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:21:35.177 [DEBUG] [Thread-163705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:21:35.177 [DEBUG] [Thread-163705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:21:35.208 [INFO] [Thread-163705] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:21:35.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:21:35.815 [DEBUG] [Thread-163705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:21:35.815 [DEBUG] [Thread-163705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:21:35.816 [DEBUG] [Thread-163705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:21:35.856 [DEBUG] [Thread-163705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:21:35.856 [DEBUG] [Thread-163705] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:21:35.859 [DEBUG] [Thread-163705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:21:35.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:21:35.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:21:35.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:21:35.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:21:35.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:21:35.884 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:21:35.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:21:35.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:21:35.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:21:35.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.681314 -999.00  +12.90  16.39     48   +2.30 1 1 1 1 1   887    0 10.27 -26.34 ----- 16.4 16.4 151.2 23.6 15.0 -26.7 14.9 -25.7 15.4 -26.3 15.8 -27.3
2025-09-29T18:21:35.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:21:35.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:21:35.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.681314
2025-09-29T18:21:35.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:21:35.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:21:35.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:21:35.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:21:35.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:21:35.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:21:22', tmtdew=12.48, humidity=42.17, cloud=0.0, wind=24.51, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:21:05.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:21:35.887 [DEBUG] [Thread-163705] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:35.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:21:35.986 [DEBUG] [Thread-163708] [transport.py] [_log()] starting thread (client mode): 0x2b921600
2025-09-29T18:21:35.986 [DEBUG] [Thread-163708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:21:36.004 [DEBUG] [Thread-163708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:21:36.004 [INFO] [Thread-163708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:21:36.014 [DEBUG] [Thread-163708] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:21:36.014 [DEBUG] [Thread-163708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:21:36.014 [DEBUG] [Thread-163708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:21:36.014 [DEBUG] [Thread-163708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:36.014 [DEBUG] [Thread-163708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] client lang: <none>
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] server lang: <none>
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] kex follows: False
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] Compression: none
2025-09-29T18:21:36.015 [DEBUG] [Thread-163708] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:21:36.076 [DEBUG] [Thread-163708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:21:36.077 [DEBUG] [Thread-163708] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:21:36.077 [DEBUG] [Thread-163708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:21:36.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:21:36.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:21:36.138 [DEBUG] [Thread-163708] [transport.py] [_log()] userauth is OK
2025-09-29T18:21:36.138 [DEBUG] [Thread-163708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:21:36.138 [DEBUG] [Thread-163708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:21:36.138 [DEBUG] [Thread-163708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:21:36.138 [DEBUG] [Thread-163708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:21:36.161 [INFO] [Thread-163708] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:21:36.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:21:36.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:21:36.485 [DEBUG] [Thread-163710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:21:37.122 [DEBUG] [Thread-163708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:21:37.122 [DEBUG] [Thread-163708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:21:37.170 [DEBUG] [Thread-163708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:21:37.170 [DEBUG] [Thread-163708] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:21:37.179 [DEBUG] [Thread-163708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:21:37.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:21:37.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:21:37.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:21:37.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:21:37.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:21:37.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:21:37.213 [DEBUG] [Thread-163708] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:37.267 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:21:37.269 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:21:47.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:21:47.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:21:47.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:21:47.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 21, 22), 12.48, 42.17, 0.0, 24.51, 13.0, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:21:47.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:21:22
2025-09-29T18:21:47.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:21:48.037 [DEBUG] [Thread-163711] [transport.py] [_log()] starting thread (client mode): 0x2b9f00d0
2025-09-29T18:21:48.037 [DEBUG] [Thread-163711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:21:48.058 [DEBUG] [Thread-163711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:21:48.058 [INFO] [Thread-163711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] client lang: <none>
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] server lang: <none>
2025-09-29T18:21:48.061 [DEBUG] [Thread-163711] [transport.py] [_log()] kex follows: False
2025-09-29T18:21:48.062 [DEBUG] [Thread-163711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:21:48.062 [DEBUG] [Thread-163711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:21:48.062 [DEBUG] [Thread-163711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:21:48.062 [DEBUG] [Thread-163711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:21:48.062 [DEBUG] [Thread-163711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:21:48.062 [DEBUG] [Thread-163711] [transport.py] [_log()] Compression: none
2025-09-29T18:21:48.062 [DEBUG] [Thread-163711] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:21:48.080 [DEBUG] [Thread-163711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:21:48.080 [DEBUG] [Thread-163711] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:21:48.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:21:48.082 [DEBUG] [Thread-163711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:21:48.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:21:48.084 [DEBUG] [Thread-163711] [transport.py] [_log()] userauth is OK
2025-09-29T18:21:48.084 [DEBUG] [Thread-163711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:21:48.084 [DEBUG] [Thread-163711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:21:48.084 [DEBUG] [Thread-163711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:21:48.084 [DEBUG] [Thread-163711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:21:48.107 [INFO] [Thread-163711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:21:48.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:21:48.875 [DEBUG] [Thread-163711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:21:48.875 [DEBUG] [Thread-163711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:21:48.875 [DEBUG] [Thread-163711] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:21:48.916 [DEBUG] [Thread-163711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:21:48.917 [DEBUG] [Thread-163711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:21:48.919 [DEBUG] [Thread-163711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:21:48.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:21:48.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:21:48.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:21:48.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:21:48.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:21:48.940 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:21:48.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:21:48.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:21:48.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:21:48.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.681314 -999.00  +12.90  16.39     48   +2.30 1 1 1 1 1   887    0 10.27 -26.34 ----- 16.4 16.4 151.2 23.6 15.0 -26.7 14.9 -25.7 15.4 -26.3 15.8 -27.3
2025-09-29T18:21:48.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:21:48.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:21:48.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.681314
2025-09-29T18:21:48.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:21:48.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:21:48.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:21:48.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:21:48.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:21:48.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:21:22', tmtdew=12.48, humidity=42.17, cloud=0.0, wind=24.51, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:21:05.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:21:48.943 [DEBUG] [Thread-163711] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:49.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:21:49.035 [DEBUG] [Thread-163714] [transport.py] [_log()] starting thread (client mode): 0x2b91ca30
2025-09-29T18:21:49.035 [DEBUG] [Thread-163714] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:21:49.050 [DEBUG] [Thread-163714] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:21:49.050 [INFO] [Thread-163714] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:21:49.057 [DEBUG] [Thread-163714] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:21:49.057 [DEBUG] [Thread-163714] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:21:49.057 [DEBUG] [Thread-163714] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] client lang: <none>
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] server lang: <none>
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] kex follows: False
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] Compression: none
2025-09-29T18:21:49.058 [DEBUG] [Thread-163714] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:21:49.118 [DEBUG] [Thread-163714] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:21:49.118 [DEBUG] [Thread-163714] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:21:49.119 [DEBUG] [Thread-163714] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:21:49.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:21:49.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:21:49.175 [DEBUG] [Thread-163714] [transport.py] [_log()] userauth is OK
2025-09-29T18:21:49.175 [DEBUG] [Thread-163714] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:21:49.175 [DEBUG] [Thread-163714] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:21:49.175 [DEBUG] [Thread-163714] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:21:49.176 [DEBUG] [Thread-163714] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:21:49.194 [INFO] [Thread-163714] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:21:49.195 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:21:49.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:21:50.194 [DEBUG] [Thread-163714] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:21:50.194 [DEBUG] [Thread-163714] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:21:50.242 [DEBUG] [Thread-163714] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:21:50.242 [DEBUG] [Thread-163714] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:21:50.251 [DEBUG] [Thread-163714] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:21:50.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:21:50.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:21:50.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:21:50.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:21:50.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:21:50.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:21:50.284 [DEBUG] [Thread-163714] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:21:51.530 [DEBUG] [Thread-163716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:21:52.460 [DEBUG] [Thread-163717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:22:00.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:22:00.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:22:00.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:22:00.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 21, 54), 12.44, 42.65, 0.0, 19.0, 12.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:22:00.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:21:54
2025-09-29T18:22:00.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:22:01.147 [DEBUG] [Thread-163718] [transport.py] [_log()] starting thread (client mode): 0x2e34afb0
2025-09-29T18:22:01.147 [DEBUG] [Thread-163718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:01.168 [DEBUG] [Thread-163718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:22:01.168 [INFO] [Thread-163718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] Compression: none
2025-09-29T18:22:01.171 [DEBUG] [Thread-163718] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:01.192 [DEBUG] [Thread-163718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:01.192 [DEBUG] [Thread-163718] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:01.193 [DEBUG] [Thread-163718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:22:01.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:22:01.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:01.236 [DEBUG] [Thread-163718] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:01.236 [DEBUG] [Thread-163718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:01.236 [DEBUG] [Thread-163718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:01.237 [DEBUG] [Thread-163718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:22:01.237 [DEBUG] [Thread-163718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:01.252 [INFO] [Thread-163718] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:01.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:01.916 [DEBUG] [Thread-163718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:01.916 [DEBUG] [Thread-163718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:01.916 [DEBUG] [Thread-163718] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:22:01.962 [DEBUG] [Thread-163718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:01.962 [DEBUG] [Thread-163718] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:01.964 [DEBUG] [Thread-163718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:01.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:01.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:22:01.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:22:01.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:22:01.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:01.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:22:01.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.681661 -999.00  +12.90  18.06     48   +2.30 1 1 1 1 1   887    0 10.26 -26.68 ----- 18.1 18.1 154.8 23.7 14.9 -26.8 14.9 -25.6 15.4 -26.3 15.8 -27.3
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.681661
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:22:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:21:54', tmtdew=12.44, humidity=42.65, cloud=0.0, wind=19.0, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:21:35.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:22:01.983 [DEBUG] [Thread-163718] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:02.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:22:02.067 [DEBUG] [Thread-163721] [transport.py] [_log()] starting thread (client mode): 0x2b9f1060
2025-09-29T18:22:02.067 [DEBUG] [Thread-163721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:02.081 [DEBUG] [Thread-163721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:22:02.082 [INFO] [Thread-163721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:02.089 [DEBUG] [Thread-163721] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:02.090 [DEBUG] [Thread-163721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:02.090 [DEBUG] [Thread-163721] [transport.py] [_log()] Compression: none
2025-09-29T18:22:02.090 [DEBUG] [Thread-163721] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:02.144 [DEBUG] [Thread-163721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:02.145 [DEBUG] [Thread-163721] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:02.145 [DEBUG] [Thread-163721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:22:02.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:22:02.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:02.202 [DEBUG] [Thread-163721] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:02.202 [DEBUG] [Thread-163721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:02.202 [DEBUG] [Thread-163721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:02.202 [DEBUG] [Thread-163721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:22:02.202 [DEBUG] [Thread-163721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:02.216 [INFO] [Thread-163721] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:02.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:22:02.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:03.234 [DEBUG] [Thread-163721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:03.234 [DEBUG] [Thread-163721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:03.282 [DEBUG] [Thread-163721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:03.282 [DEBUG] [Thread-163721] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:03.292 [DEBUG] [Thread-163721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:03.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:03.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:22:03.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:22:03.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:03.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:03.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:03.327 [DEBUG] [Thread-163721] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:06.564 [DEBUG] [Thread-163723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:22:13.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:22:13.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:22:13.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:22:13.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 21, 54), 12.44, 42.65, 0.0, 19.0, 12.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:22:13.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:21:54
2025-09-29T18:22:14.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:22:14.169 [DEBUG] [Thread-163724] [transport.py] [_log()] starting thread (client mode): 0x2b9f0790
2025-09-29T18:22:14.169 [DEBUG] [Thread-163724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:14.182 [DEBUG] [Thread-163724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:22:14.182 [INFO] [Thread-163724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:22:14.184 [DEBUG] [Thread-163724] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:14.184 [DEBUG] [Thread-163724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:22:14.184 [DEBUG] [Thread-163724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:14.184 [DEBUG] [Thread-163724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:14.184 [DEBUG] [Thread-163724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:14.184 [DEBUG] [Thread-163724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] Compression: none
2025-09-29T18:22:14.185 [DEBUG] [Thread-163724] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:14.199 [DEBUG] [Thread-163724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:14.200 [DEBUG] [Thread-163724] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:14.200 [DEBUG] [Thread-163724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:22:14.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:22:14.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:14.202 [DEBUG] [Thread-163724] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:14.202 [DEBUG] [Thread-163724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:14.202 [DEBUG] [Thread-163724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:14.202 [DEBUG] [Thread-163724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:22:14.202 [DEBUG] [Thread-163724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:14.220 [INFO] [Thread-163724] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:14.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:15.002 [DEBUG] [Thread-163724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:15.002 [DEBUG] [Thread-163724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:15.003 [DEBUG] [Thread-163724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:22:15.043 [DEBUG] [Thread-163724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:15.043 [DEBUG] [Thread-163724] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:15.046 [DEBUG] [Thread-163724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:15.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:15.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:22:15.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:22:15.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:22:15.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:15.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:22:15.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:15.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:15.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:22:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.681661 -999.00  +12.90  18.06     48   +2.30 1 1 1 1 1   887    0 10.26 -26.68 ----- 18.1 18.1 154.8 23.7 14.9 -26.8 14.9 -25.6 15.4 -26.3 15.8 -27.3
2025-09-29T18:22:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:22:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:22:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.681661
2025-09-29T18:22:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:22:15.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:22:15.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:22:15.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:22:15.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:22:15.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:21:54', tmtdew=12.44, humidity=42.65, cloud=0.0, wind=19.0, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:21:35.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:22:15.071 [DEBUG] [Thread-163724] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:15.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:22:15.166 [DEBUG] [Thread-163727] [transport.py] [_log()] starting thread (client mode): 0x2b9f16f0
2025-09-29T18:22:15.166 [DEBUG] [Thread-163727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:15.180 [DEBUG] [Thread-163727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:22:15.180 [INFO] [Thread-163727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:22:15.187 [DEBUG] [Thread-163727] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:15.187 [DEBUG] [Thread-163727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:22:15.187 [DEBUG] [Thread-163727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] Compression: none
2025-09-29T18:22:15.188 [DEBUG] [Thread-163727] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:15.249 [DEBUG] [Thread-163727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:15.249 [DEBUG] [Thread-163727] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:15.250 [DEBUG] [Thread-163727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:22:15.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:22:15.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:15.309 [DEBUG] [Thread-163727] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:15.309 [DEBUG] [Thread-163727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:15.309 [DEBUG] [Thread-163727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:15.309 [DEBUG] [Thread-163727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:22:15.309 [DEBUG] [Thread-163727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:15.322 [INFO] [Thread-163727] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:15.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:22:15.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:16.305 [DEBUG] [Thread-163727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:16.305 [DEBUG] [Thread-163727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:16.353 [DEBUG] [Thread-163727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:16.353 [DEBUG] [Thread-163727] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:16.362 [DEBUG] [Thread-163727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:16.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:16.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:22:16.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:22:16.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:16.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:16.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:16.398 [DEBUG] [Thread-163727] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:21.604 [DEBUG] [Thread-163729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:22:26.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:22:26.396 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:22:26.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:22:26.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 21, 54), 12.44, 42.65, 0.0, 19.0, 12.9, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:22:26.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:21:54
2025-09-29T18:22:27.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:22:27.246 [DEBUG] [Thread-163730] [transport.py] [_log()] starting thread (client mode): 0x2e349090
2025-09-29T18:22:27.246 [DEBUG] [Thread-163730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:27.269 [DEBUG] [Thread-163730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:22:27.269 [INFO] [Thread-163730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:27.273 [DEBUG] [Thread-163730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:27.274 [DEBUG] [Thread-163730] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:27.274 [DEBUG] [Thread-163730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:27.274 [DEBUG] [Thread-163730] [transport.py] [_log()] Compression: none
2025-09-29T18:22:27.274 [DEBUG] [Thread-163730] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:27.290 [DEBUG] [Thread-163730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:27.290 [DEBUG] [Thread-163730] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:27.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:22:27.290 [DEBUG] [Thread-163730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:22:27.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:27.291 [DEBUG] [Thread-163730] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:27.291 [DEBUG] [Thread-163730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:27.291 [DEBUG] [Thread-163730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:27.291 [DEBUG] [Thread-163730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:22:27.291 [DEBUG] [Thread-163730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:27.306 [INFO] [Thread-163730] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:27.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:28.122 [DEBUG] [Thread-163730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:28.122 [DEBUG] [Thread-163730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:28.122 [DEBUG] [Thread-163730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:22:28.163 [DEBUG] [Thread-163730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:28.163 [DEBUG] [Thread-163730] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:28.165 [DEBUG] [Thread-163730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:28.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:28.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:22:28.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:22:28.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:22:28.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:28.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:22:28.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.681661 -999.00  +12.90  18.06     48   +2.30 1 1 1 1 1   887    0 10.26 -26.68 ----- 18.1 18.1 154.8 23.7 14.9 -26.8 14.9 -25.6 15.4 -26.3 15.8 -27.3
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.681661
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:22:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:21:54', tmtdew=12.44, humidity=42.65, cloud=0.0, wind=19.0, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:21:35.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:22:28.186 [DEBUG] [Thread-163730] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:28.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:22:28.271 [DEBUG] [Thread-163733] [transport.py] [_log()] starting thread (client mode): 0x2b920b20
2025-09-29T18:22:28.271 [DEBUG] [Thread-163733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:28.286 [DEBUG] [Thread-163733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:22:28.286 [INFO] [Thread-163733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:22:28.293 [DEBUG] [Thread-163733] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:28.293 [DEBUG] [Thread-163733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:22:28.293 [DEBUG] [Thread-163733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] Compression: none
2025-09-29T18:22:28.294 [DEBUG] [Thread-163733] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:28.352 [DEBUG] [Thread-163733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:28.353 [DEBUG] [Thread-163733] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:28.353 [DEBUG] [Thread-163733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:22:28.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:22:28.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:28.412 [DEBUG] [Thread-163733] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:28.412 [DEBUG] [Thread-163733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:28.412 [DEBUG] [Thread-163733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:28.412 [DEBUG] [Thread-163733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:22:28.412 [DEBUG] [Thread-163733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:28.426 [INFO] [Thread-163733] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:28.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:22:28.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:29.445 [DEBUG] [Thread-163733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:29.445 [DEBUG] [Thread-163733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:29.493 [DEBUG] [Thread-163733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:29.494 [DEBUG] [Thread-163733] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:29.503 [DEBUG] [Thread-163733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:29.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:29.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:22:29.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:22:29.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:29.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:29.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:29.538 [DEBUG] [Thread-163733] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:36.628 [DEBUG] [Thread-163735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:22:37.413 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:22:37.414 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:22:39.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:22:39.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:22:39.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:22:40.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 22, 26), 12.44, 42.65, 0.0, 19.73, 12.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:22:40.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:22:26
2025-09-29T18:22:40.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:22:40.410 [DEBUG] [Thread-163736] [transport.py] [_log()] starting thread (client mode): 0x2e34a440
2025-09-29T18:22:40.410 [DEBUG] [Thread-163736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:40.431 [DEBUG] [Thread-163736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:22:40.431 [INFO] [Thread-163736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:22:40.434 [DEBUG] [Thread-163736] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:40.434 [DEBUG] [Thread-163736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:22:40.434 [DEBUG] [Thread-163736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:40.434 [DEBUG] [Thread-163736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:40.434 [DEBUG] [Thread-163736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] Compression: none
2025-09-29T18:22:40.435 [DEBUG] [Thread-163736] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:40.450 [DEBUG] [Thread-163736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:40.450 [DEBUG] [Thread-163736] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:40.451 [DEBUG] [Thread-163736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:22:40.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:22:40.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:40.451 [DEBUG] [Thread-163736] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:40.451 [DEBUG] [Thread-163736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:40.451 [DEBUG] [Thread-163736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:40.452 [DEBUG] [Thread-163736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:22:40.452 [DEBUG] [Thread-163736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:40.461 [INFO] [Thread-163736] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:40.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:41.118 [DEBUG] [Thread-163736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:41.119 [DEBUG] [Thread-163736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:41.119 [DEBUG] [Thread-163736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:22:41.160 [DEBUG] [Thread-163736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:41.160 [DEBUG] [Thread-163736] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:41.163 [DEBUG] [Thread-163736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:41.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:41.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:22:41.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:22:41.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:22:41.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:41.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:22:41.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:41.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:41.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:22:41.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.682009 -999.00  +12.80  13.64     48   +2.30 1 1 1 1 1   887    0 9.93 -25.84 ----- 13.6 13.6 159.2 22.5 14.9 -26.6 14.8 -25.5 15.3 -26.2 15.7 -27.3
2025-09-29T18:22:41.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:22:41.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:22:41.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.682009
2025-09-29T18:22:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:22:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:22:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:22:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:22:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:22:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:22:26', tmtdew=12.44, humidity=42.65, cloud=0.0, wind=19.73, temperature=12.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:22:05.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:22:41.187 [DEBUG] [Thread-163736] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:41.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:22:41.282 [DEBUG] [Thread-163739] [transport.py] [_log()] starting thread (client mode): 0x2b9f3f10
2025-09-29T18:22:41.282 [DEBUG] [Thread-163739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:41.298 [DEBUG] [Thread-163739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:22:41.298 [INFO] [Thread-163739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:22:41.305 [DEBUG] [Thread-163739] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:41.305 [DEBUG] [Thread-163739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] Compression: none
2025-09-29T18:22:41.306 [DEBUG] [Thread-163739] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:41.364 [DEBUG] [Thread-163739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:41.364 [DEBUG] [Thread-163739] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:41.364 [DEBUG] [Thread-163739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:22:41.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:22:41.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:41.420 [DEBUG] [Thread-163739] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:41.420 [DEBUG] [Thread-163739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:41.420 [DEBUG] [Thread-163739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:41.421 [DEBUG] [Thread-163739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:22:41.421 [DEBUG] [Thread-163739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:41.440 [INFO] [Thread-163739] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:41.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:22:41.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:42.437 [DEBUG] [Thread-163739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:42.437 [DEBUG] [Thread-163739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:42.485 [DEBUG] [Thread-163739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:42.485 [DEBUG] [Thread-163739] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:42.494 [DEBUG] [Thread-163739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:42.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:42.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:22:42.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:22:42.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:42.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:42.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:42.529 [DEBUG] [Thread-163739] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:51.659 [DEBUG] [Thread-163741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:22:52.493 [DEBUG] [Thread-163742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:22:52.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:22:52.529 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:22:52.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:22:53.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 22, 26), 12.44, 42.65, 0.0, 19.73, 12.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:22:53.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:22:26
2025-09-29T18:22:53.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:22:53.368 [DEBUG] [Thread-163743] [transport.py] [_log()] starting thread (client mode): 0x2b9f1c90
2025-09-29T18:22:53.368 [DEBUG] [Thread-163743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:53.390 [DEBUG] [Thread-163743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:22:53.390 [INFO] [Thread-163743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:22:53.393 [DEBUG] [Thread-163743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:53.393 [DEBUG] [Thread-163743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:53.394 [DEBUG] [Thread-163743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:53.395 [DEBUG] [Thread-163743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:53.395 [DEBUG] [Thread-163743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:53.395 [DEBUG] [Thread-163743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:53.395 [DEBUG] [Thread-163743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:53.395 [DEBUG] [Thread-163743] [transport.py] [_log()] Compression: none
2025-09-29T18:22:53.395 [DEBUG] [Thread-163743] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:53.413 [DEBUG] [Thread-163743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:53.413 [DEBUG] [Thread-163743] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:53.414 [DEBUG] [Thread-163743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:22:53.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:22:53.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:53.416 [DEBUG] [Thread-163743] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:53.417 [DEBUG] [Thread-163743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:53.417 [DEBUG] [Thread-163743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:53.417 [DEBUG] [Thread-163743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:22:53.417 [DEBUG] [Thread-163743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:53.434 [INFO] [Thread-163743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:53.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:54.270 [DEBUG] [Thread-163743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:54.271 [DEBUG] [Thread-163743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:54.271 [DEBUG] [Thread-163743] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:22:54.311 [DEBUG] [Thread-163743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:54.311 [DEBUG] [Thread-163743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:54.314 [DEBUG] [Thread-163743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:54.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:54.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:22:54.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:22:54.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:22:54.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:54.337 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:22:54.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:54.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:54.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:22:54.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.682009 -999.00  +12.80  13.64     48   +2.30 1 1 1 1 1   887    0 9.93 -25.84 ----- 13.6 13.6 159.2 22.5 14.9 -26.6 14.8 -25.5 15.3 -26.2 15.7 -27.3
2025-09-29T18:22:54.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:22:54.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:22:54.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.682009
2025-09-29T18:22:54.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:22:54.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:22:54.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:22:54.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:22:54.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:22:54.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:22:26', tmtdew=12.44, humidity=42.65, cloud=0.0, wind=19.73, temperature=12.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:22:05.578', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:22:54.339 [DEBUG] [Thread-163743] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:22:54.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:22:54.430 [DEBUG] [Thread-163746] [transport.py] [_log()] starting thread (client mode): 0x2e3c09d0
2025-09-29T18:22:54.430 [DEBUG] [Thread-163746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:22:54.444 [DEBUG] [Thread-163746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:22:54.444 [INFO] [Thread-163746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:22:54.452 [DEBUG] [Thread-163746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:22:54.452 [DEBUG] [Thread-163746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:22:54.452 [DEBUG] [Thread-163746] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:22:54.452 [DEBUG] [Thread-163746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:54.452 [DEBUG] [Thread-163746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:22:54.452 [DEBUG] [Thread-163746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:54.452 [DEBUG] [Thread-163746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:22:54.452 [DEBUG] [Thread-163746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] client lang: <none>
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] server lang: <none>
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] kex follows: False
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] Compression: none
2025-09-29T18:22:54.453 [DEBUG] [Thread-163746] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:22:54.511 [DEBUG] [Thread-163746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:22:54.511 [DEBUG] [Thread-163746] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:22:54.512 [DEBUG] [Thread-163746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:22:54.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:22:54.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:22:54.568 [DEBUG] [Thread-163746] [transport.py] [_log()] userauth is OK
2025-09-29T18:22:54.568 [DEBUG] [Thread-163746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:22:54.568 [DEBUG] [Thread-163746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:22:54.568 [DEBUG] [Thread-163746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:22:54.568 [DEBUG] [Thread-163746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:22:54.587 [INFO] [Thread-163746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:22:54.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:22:54.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:22:55.590 [DEBUG] [Thread-163746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:22:55.591 [DEBUG] [Thread-163746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:22:55.638 [DEBUG] [Thread-163746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:22:55.638 [DEBUG] [Thread-163746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:22:55.647 [DEBUG] [Thread-163746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:22:55.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:22:55.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:22:55.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:22:55.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:22:55.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:22:55.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:22:55.681 [DEBUG] [Thread-163746] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:05.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:23:05.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:23:05.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:23:06.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 22, 58), 12.43, 42.69, 0.0, 22.41, 12.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:23:06.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:22:58
2025-09-29T18:23:06.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:23:06.510 [DEBUG] [Thread-163748] [transport.py] [_log()] starting thread (client mode): 0x2e3c21a0
2025-09-29T18:23:06.510 [DEBUG] [Thread-163748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:06.530 [DEBUG] [Thread-163748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:23:06.530 [INFO] [Thread-163748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:23:06.533 [DEBUG] [Thread-163748] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:06.533 [DEBUG] [Thread-163748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:23:06.533 [DEBUG] [Thread-163748] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:06.533 [DEBUG] [Thread-163748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:06.533 [DEBUG] [Thread-163748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] Compression: none
2025-09-29T18:23:06.534 [DEBUG] [Thread-163748] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:06.549 [DEBUG] [Thread-163748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:06.550 [DEBUG] [Thread-163748] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:06.550 [DEBUG] [Thread-163748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:23:06.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:23:06.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:06.552 [DEBUG] [Thread-163748] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:06.552 [DEBUG] [Thread-163748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:06.552 [DEBUG] [Thread-163748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:06.552 [DEBUG] [Thread-163748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:23:06.552 [DEBUG] [Thread-163748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:06.578 [INFO] [Thread-163748] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:06.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:06.710 [DEBUG] [Thread-163750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:23:07.241 [DEBUG] [Thread-163748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:07.242 [DEBUG] [Thread-163748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:07.242 [DEBUG] [Thread-163748] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:23:07.282 [DEBUG] [Thread-163748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:07.283 [DEBUG] [Thread-163748] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:07.285 [DEBUG] [Thread-163748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:07.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:07.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:23:07.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:23:07.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:23:07.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:07.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:23:07.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:07.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:07.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:23:07.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.682356 -999.00  +12.80  19.31     48   +2.30 1 1 1 1 1   887    0 10.00 -25.17 ----- 19.3 19.3 152.8 23.6 14.9 -26.5 14.8 -25.7 15.3 -26.1 15.7 -27.4
2025-09-29T18:23:07.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:23:07.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:23:07.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.682356
2025-09-29T18:23:07.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:23:07.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:23:07.309 [DEBUG] [Thread-163748] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:07.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:23:07.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:23:07.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:23:07.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:22:58', tmtdew=12.43, humidity=42.69, cloud=0.0, wind=22.41, temperature=12.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:22:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:23:07.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:23:07.401 [DEBUG] [Thread-163752] [transport.py] [_log()] starting thread (client mode): 0x2b9cbf40
2025-09-29T18:23:07.401 [DEBUG] [Thread-163752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:07.416 [DEBUG] [Thread-163752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:23:07.416 [INFO] [Thread-163752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:07.424 [DEBUG] [Thread-163752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:07.425 [DEBUG] [Thread-163752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:07.425 [DEBUG] [Thread-163752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:07.425 [DEBUG] [Thread-163752] [transport.py] [_log()] Compression: none
2025-09-29T18:23:07.425 [DEBUG] [Thread-163752] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:07.483 [DEBUG] [Thread-163752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:07.483 [DEBUG] [Thread-163752] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:07.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:23:07.484 [DEBUG] [Thread-163752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:23:07.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:07.539 [DEBUG] [Thread-163752] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:07.539 [DEBUG] [Thread-163752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:07.539 [DEBUG] [Thread-163752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:07.539 [DEBUG] [Thread-163752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:23:07.539 [DEBUG] [Thread-163752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:07.558 [INFO] [Thread-163752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:07.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:23:07.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:08.565 [DEBUG] [Thread-163752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:08.565 [DEBUG] [Thread-163752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:08.613 [DEBUG] [Thread-163752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:08.613 [DEBUG] [Thread-163752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:08.622 [DEBUG] [Thread-163752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:08.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:08.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:23:08.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:23:08.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:08.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:08.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:08.657 [DEBUG] [Thread-163752] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:23:18.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:23:18.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:23:19.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 22, 58), 12.43, 42.69, 0.0, 22.41, 12.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:23:19.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:22:58
2025-09-29T18:23:19.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:23:19.500 [DEBUG] [Thread-163754] [transport.py] [_log()] starting thread (client mode): 0x2b9cbb20
2025-09-29T18:23:19.500 [DEBUG] [Thread-163754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:19.519 [DEBUG] [Thread-163754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:23:19.519 [INFO] [Thread-163754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:19.522 [DEBUG] [Thread-163754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:19.523 [DEBUG] [Thread-163754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:19.523 [DEBUG] [Thread-163754] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:19.523 [DEBUG] [Thread-163754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:19.523 [DEBUG] [Thread-163754] [transport.py] [_log()] Compression: none
2025-09-29T18:23:19.523 [DEBUG] [Thread-163754] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:19.538 [DEBUG] [Thread-163754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:19.538 [DEBUG] [Thread-163754] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:19.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:23:19.539 [DEBUG] [Thread-163754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:23:19.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:19.581 [DEBUG] [Thread-163754] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:19.581 [DEBUG] [Thread-163754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:19.581 [DEBUG] [Thread-163754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:19.581 [DEBUG] [Thread-163754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:23:19.581 [DEBUG] [Thread-163754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:19.605 [INFO] [Thread-163754] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:19.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:20.476 [DEBUG] [Thread-163754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:20.476 [DEBUG] [Thread-163754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:20.476 [DEBUG] [Thread-163754] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:23:20.517 [DEBUG] [Thread-163754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:20.517 [DEBUG] [Thread-163754] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:20.520 [DEBUG] [Thread-163754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:20.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:20.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:23:20.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:23:20.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:23:20.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:20.545 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:23:20.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:20.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:20.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:23:20.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.682356 -999.00  +12.80  19.31     48   +2.30 1 1 1 1 1   887    0 10.00 -25.17 ----- 19.3 19.3 152.8 23.6 14.9 -26.5 14.8 -25.7 15.3 -26.1 15.7 -27.4
2025-09-29T18:23:20.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:23:20.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:23:20.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.682356
2025-09-29T18:23:20.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:23:20.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:23:20.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:23:20.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:23:20.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:23:20.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:22:58', tmtdew=12.43, humidity=42.69, cloud=0.0, wind=22.41, temperature=12.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:22:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:23:20.548 [DEBUG] [Thread-163754] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:20.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:23:20.644 [DEBUG] [Thread-163757] [transport.py] [_log()] starting thread (client mode): 0x2e349090
2025-09-29T18:23:20.644 [DEBUG] [Thread-163757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:20.659 [DEBUG] [Thread-163757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:23:20.659 [INFO] [Thread-163757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:23:20.667 [DEBUG] [Thread-163757] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:20.667 [DEBUG] [Thread-163757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:23:20.667 [DEBUG] [Thread-163757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:20.667 [DEBUG] [Thread-163757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:20.667 [DEBUG] [Thread-163757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:20.667 [DEBUG] [Thread-163757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] Compression: none
2025-09-29T18:23:20.668 [DEBUG] [Thread-163757] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:20.726 [DEBUG] [Thread-163757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:20.727 [DEBUG] [Thread-163757] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:20.727 [DEBUG] [Thread-163757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:23:20.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:23:20.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:20.788 [DEBUG] [Thread-163757] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:20.788 [DEBUG] [Thread-163757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:20.788 [DEBUG] [Thread-163757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:20.789 [DEBUG] [Thread-163757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:23:20.789 [DEBUG] [Thread-163757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:20.807 [INFO] [Thread-163757] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:20.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:23:20.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:21.734 [DEBUG] [Thread-163759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:23:21.780 [DEBUG] [Thread-163757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:21.781 [DEBUG] [Thread-163757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:21.828 [DEBUG] [Thread-163757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:21.828 [DEBUG] [Thread-163757] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:21.837 [DEBUG] [Thread-163757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:21.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:21.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:23:21.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:23:21.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:21.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:21.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:21.872 [DEBUG] [Thread-163757] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:31.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:23:31.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:23:31.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:23:32.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 22, 58), 12.43, 42.69, 0.0, 22.41, 12.94, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:23:32.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:22:58
2025-09-29T18:23:32.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:23:32.744 [DEBUG] [Thread-163760] [transport.py] [_log()] starting thread (client mode): 0x2b9ca680
2025-09-29T18:23:32.744 [DEBUG] [Thread-163760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:32.759 [DEBUG] [Thread-163760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:23:32.760 [INFO] [Thread-163760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:32.763 [DEBUG] [Thread-163760] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:32.764 [DEBUG] [Thread-163760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:32.764 [DEBUG] [Thread-163760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:32.764 [DEBUG] [Thread-163760] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:32.764 [DEBUG] [Thread-163760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:32.764 [DEBUG] [Thread-163760] [transport.py] [_log()] Compression: none
2025-09-29T18:23:32.764 [DEBUG] [Thread-163760] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:32.784 [DEBUG] [Thread-163760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:32.784 [DEBUG] [Thread-163760] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:32.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:23:32.785 [DEBUG] [Thread-163760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:23:32.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:32.787 [DEBUG] [Thread-163760] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:32.787 [DEBUG] [Thread-163760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:32.787 [DEBUG] [Thread-163760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:32.787 [DEBUG] [Thread-163760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:23:32.788 [DEBUG] [Thread-163760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:32.811 [INFO] [Thread-163760] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:32.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:33.666 [DEBUG] [Thread-163760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:33.666 [DEBUG] [Thread-163760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:33.666 [DEBUG] [Thread-163760] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:23:33.708 [DEBUG] [Thread-163760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:33.708 [DEBUG] [Thread-163760] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:33.712 [DEBUG] [Thread-163760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:33.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:33.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:23:33.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:23:33.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:23:33.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:33.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:23:33.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:33.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:33.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:23:33.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.682356 -999.00  +12.80  19.31     48   +2.30 1 1 1 1 1   887    0 10.00 -25.17 ----- 19.3 19.3 152.8 23.6 14.9 -26.5 14.8 -25.7 15.3 -26.1 15.7 -27.4
2025-09-29T18:23:33.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:23:33.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:23:33.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.682356
2025-09-29T18:23:33.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:23:33.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:23:33.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:23:33.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:23:33.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:23:33.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:22:58', tmtdew=12.43, humidity=42.69, cloud=0.0, wind=22.41, temperature=12.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:22:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:23:33.738 [DEBUG] [Thread-163760] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:33.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:23:33.830 [DEBUG] [Thread-163763] [transport.py] [_log()] starting thread (client mode): 0x2b9cab90
2025-09-29T18:23:33.830 [DEBUG] [Thread-163763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:33.845 [DEBUG] [Thread-163763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:23:33.845 [INFO] [Thread-163763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:23:33.852 [DEBUG] [Thread-163763] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] Compression: none
2025-09-29T18:23:33.853 [DEBUG] [Thread-163763] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:33.913 [DEBUG] [Thread-163763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:33.913 [DEBUG] [Thread-163763] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:33.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:23:33.914 [DEBUG] [Thread-163763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:23:33.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:33.973 [DEBUG] [Thread-163763] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:33.973 [DEBUG] [Thread-163763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:33.973 [DEBUG] [Thread-163763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:33.973 [DEBUG] [Thread-163763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:23:33.973 [DEBUG] [Thread-163763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:33.988 [INFO] [Thread-163763] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:33.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:23:33.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:34.961 [DEBUG] [Thread-163763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:34.962 [DEBUG] [Thread-163763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:35.009 [DEBUG] [Thread-163763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:35.010 [DEBUG] [Thread-163763] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:35.019 [DEBUG] [Thread-163763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:35.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:35.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:23:35.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:23:35.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:35.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:35.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:35.053 [DEBUG] [Thread-163763] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:36.791 [DEBUG] [Thread-163765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:23:37.553 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:23:37.554 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:23:45.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:23:45.056 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:23:45.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:23:45.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 23, 30), 12.43, 42.69, 0.0, 24.91, 12.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:23:45.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:23:30
2025-09-29T18:23:45.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:23:45.886 [DEBUG] [Thread-163766] [transport.py] [_log()] starting thread (client mode): 0x2b9f3970
2025-09-29T18:23:45.887 [DEBUG] [Thread-163766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:45.907 [DEBUG] [Thread-163766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:23:45.907 [INFO] [Thread-163766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:23:45.910 [DEBUG] [Thread-163766] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:45.910 [DEBUG] [Thread-163766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:23:45.910 [DEBUG] [Thread-163766] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] Compression: none
2025-09-29T18:23:45.911 [DEBUG] [Thread-163766] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:45.929 [DEBUG] [Thread-163766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:45.929 [DEBUG] [Thread-163766] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:45.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:23:45.930 [DEBUG] [Thread-163766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:23:45.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:45.932 [DEBUG] [Thread-163766] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:45.933 [DEBUG] [Thread-163766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:45.933 [DEBUG] [Thread-163766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:45.933 [DEBUG] [Thread-163766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:23:45.933 [DEBUG] [Thread-163766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:45.957 [INFO] [Thread-163766] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:45.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:46.630 [DEBUG] [Thread-163766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:46.630 [DEBUG] [Thread-163766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:46.631 [DEBUG] [Thread-163766] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:23:46.671 [DEBUG] [Thread-163766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:46.671 [DEBUG] [Thread-163766] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:46.673 [DEBUG] [Thread-163766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:46.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:46.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:23:46.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:23:46.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:23:46.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:46.694 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:23:46.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:46.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:46.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:23:46.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.682703 -999.00  +12.80  17.77     48   +2.30 1 1 1 1 1   887    0 9.96 -24.21 ----- 17.8 17.8 150.4 25.2 14.8 -26.4 14.7 -25.7 15.2 -26.1 15.6 -27.1
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.682703
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:23:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:23:30', tmtdew=12.43, humidity=42.69, cloud=0.0, wind=24.91, temperature=12.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:23:05.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:23:46.696 [DEBUG] [Thread-163766] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:46.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:23:46.791 [DEBUG] [Thread-163769] [transport.py] [_log()] starting thread (client mode): 0x2e3fb4f0
2025-09-29T18:23:46.792 [DEBUG] [Thread-163769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:46.806 [DEBUG] [Thread-163769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:23:46.807 [INFO] [Thread-163769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:23:46.814 [DEBUG] [Thread-163769] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:46.814 [DEBUG] [Thread-163769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:23:46.814 [DEBUG] [Thread-163769] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:46.814 [DEBUG] [Thread-163769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:46.814 [DEBUG] [Thread-163769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:46.814 [DEBUG] [Thread-163769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:46.814 [DEBUG] [Thread-163769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:46.814 [DEBUG] [Thread-163769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] Compression: none
2025-09-29T18:23:46.815 [DEBUG] [Thread-163769] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:46.877 [DEBUG] [Thread-163769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:46.878 [DEBUG] [Thread-163769] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:46.878 [DEBUG] [Thread-163769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:23:46.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:23:46.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:46.933 [DEBUG] [Thread-163769] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:46.933 [DEBUG] [Thread-163769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:46.934 [DEBUG] [Thread-163769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:46.934 [DEBUG] [Thread-163769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:23:46.934 [DEBUG] [Thread-163769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:46.953 [INFO] [Thread-163769] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:46.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:23:46.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:47.968 [DEBUG] [Thread-163769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:47.969 [DEBUG] [Thread-163769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:48.016 [DEBUG] [Thread-163769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:48.016 [DEBUG] [Thread-163769] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:48.025 [DEBUG] [Thread-163769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:48.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:48.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:23:48.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:23:48.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:48.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:48.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:48.059 [DEBUG] [Thread-163769] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:51.819 [DEBUG] [Thread-163771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:23:52.522 [DEBUG] [Thread-163772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:23:58.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:23:58.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:23:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:23:58.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 23, 30), 12.43, 42.69, 0.0, 24.91, 12.92, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:23:58.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:23:30
2025-09-29T18:23:58.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:23:58.889 [DEBUG] [Thread-163773] [transport.py] [_log()] starting thread (client mode): 0x2b9c9de0
2025-09-29T18:23:58.889 [DEBUG] [Thread-163773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:58.908 [DEBUG] [Thread-163773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:23:58.909 [INFO] [Thread-163773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:23:58.912 [DEBUG] [Thread-163773] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:58.912 [DEBUG] [Thread-163773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:23:58.912 [DEBUG] [Thread-163773] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:58.912 [DEBUG] [Thread-163773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:58.912 [DEBUG] [Thread-163773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:58.912 [DEBUG] [Thread-163773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:58.912 [DEBUG] [Thread-163773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] Compression: none
2025-09-29T18:23:58.913 [DEBUG] [Thread-163773] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:23:58.930 [DEBUG] [Thread-163773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:23:58.931 [DEBUG] [Thread-163773] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:23:58.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:23:58.932 [DEBUG] [Thread-163773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:23:58.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:23:58.934 [DEBUG] [Thread-163773] [transport.py] [_log()] userauth is OK
2025-09-29T18:23:58.934 [DEBUG] [Thread-163773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:23:58.934 [DEBUG] [Thread-163773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:23:58.934 [DEBUG] [Thread-163773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:23:58.934 [DEBUG] [Thread-163773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:23:58.948 [INFO] [Thread-163773] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:23:58.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:23:59.765 [DEBUG] [Thread-163773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:23:59.766 [DEBUG] [Thread-163773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:23:59.766 [DEBUG] [Thread-163773] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:23:59.806 [DEBUG] [Thread-163773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:23:59.806 [DEBUG] [Thread-163773] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:23:59.809 [DEBUG] [Thread-163773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:23:59.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:23:59.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:23:59.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:23:59.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:23:59.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:23:59.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:23:59.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:23:59.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:23:59.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:23:59.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.682703 -999.00  +12.80  17.77     48   +2.30 1 1 1 1 1   887    0 9.96 -24.21 ----- 17.8 17.8 150.4 25.2 14.8 -26.4 14.7 -25.7 15.2 -26.1 15.6 -27.1
2025-09-29T18:23:59.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:23:59.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:23:59.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.682703
2025-09-29T18:23:59.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:23:59.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:23:59.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:23:59.832 [DEBUG] [Thread-163773] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:23:59.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:23:59.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:23:59.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:23:30', tmtdew=12.43, humidity=42.69, cloud=0.0, wind=24.91, temperature=12.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:23:05.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:23:59.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:23:59.924 [DEBUG] [Thread-163776] [transport.py] [_log()] starting thread (client mode): 0x2b91fb80
2025-09-29T18:23:59.924 [DEBUG] [Thread-163776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:23:59.940 [DEBUG] [Thread-163776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:23:59.940 [INFO] [Thread-163776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:23:59.947 [DEBUG] [Thread-163776] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:23:59.947 [DEBUG] [Thread-163776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:23:59.947 [DEBUG] [Thread-163776] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:23:59.947 [DEBUG] [Thread-163776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:59.947 [DEBUG] [Thread-163776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:23:59.947 [DEBUG] [Thread-163776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] client lang: <none>
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] server lang: <none>
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] kex follows: False
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] Compression: none
2025-09-29T18:23:59.948 [DEBUG] [Thread-163776] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:00.004 [DEBUG] [Thread-163776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:00.004 [DEBUG] [Thread-163776] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:00.005 [DEBUG] [Thread-163776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:24:00.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:24:00.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:00.063 [DEBUG] [Thread-163776] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:00.063 [DEBUG] [Thread-163776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:00.063 [DEBUG] [Thread-163776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:00.063 [DEBUG] [Thread-163776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:24:00.063 [DEBUG] [Thread-163776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:00.082 [INFO] [Thread-163776] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:00.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:24:00.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:01.052 [DEBUG] [Thread-163776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:01.052 [DEBUG] [Thread-163776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:01.100 [DEBUG] [Thread-163776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:01.100 [DEBUG] [Thread-163776] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:01.109 [DEBUG] [Thread-163776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:01.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:01.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:24:01.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:24:01.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:01.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:01.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:01.143 [DEBUG] [Thread-163776] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:24:06.855 [DEBUG] [Thread-163778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:24:11.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:24:11.146 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:24:11.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:24:11.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 24, 2), 12.42, 42.7, 0.0, 22.2, 12.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:24:11.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:24:02
2025-09-29T18:24:11.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:24:11.972 [DEBUG] [Thread-163779] [transport.py] [_log()] starting thread (client mode): 0x2b91c490
2025-09-29T18:24:11.972 [DEBUG] [Thread-163779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:24:11.991 [DEBUG] [Thread-163779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:24:11.991 [INFO] [Thread-163779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:24:11.996 [DEBUG] [Thread-163779] [transport.py] [_log()] client lang: <none>
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] server lang: <none>
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] kex follows: False
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] Compression: none
2025-09-29T18:24:11.997 [DEBUG] [Thread-163779] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:12.014 [DEBUG] [Thread-163779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:12.014 [DEBUG] [Thread-163779] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:12.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:24:12.015 [DEBUG] [Thread-163779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:24:12.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:12.017 [DEBUG] [Thread-163779] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:12.018 [DEBUG] [Thread-163779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:12.018 [DEBUG] [Thread-163779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:12.018 [DEBUG] [Thread-163779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:24:12.018 [DEBUG] [Thread-163779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:12.053 [INFO] [Thread-163779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:12.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:12.682 [DEBUG] [Thread-163779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:12.682 [DEBUG] [Thread-163779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:12.682 [DEBUG] [Thread-163779] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:24:12.722 [DEBUG] [Thread-163779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:12.722 [DEBUG] [Thread-163779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:12.725 [DEBUG] [Thread-163779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:12.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:12.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:24:12.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:24:12.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:24:12.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:12.747 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:24:12.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:12.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:12.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:24:12.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.683397 -999.00  +12.80  18.99     48   +2.20 1 1 1 1 1   887    0 10.21 -21.21 ----- 19.0 19.0 161.2 23.0 14.8 -26.6 14.7 -25.5 15.1 -26.0 15.6 -27.1
2025-09-29T18:24:12.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:24:12.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:24:12.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.683397
2025-09-29T18:24:12.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:24:12.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:24:12.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:24:12.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:24:12.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:24:12.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:24:02', tmtdew=12.42, humidity=42.7, cloud=0.0, wind=22.2, temperature=12.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:24:05.501', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:24:12.749 [DEBUG] [Thread-163779] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:24:12.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:24:12.845 [DEBUG] [Thread-163782] [transport.py] [_log()] starting thread (client mode): 0x2b9f0b20
2025-09-29T18:24:12.845 [DEBUG] [Thread-163782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:24:12.862 [DEBUG] [Thread-163782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:24:12.862 [INFO] [Thread-163782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:24:12.869 [DEBUG] [Thread-163782] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] client lang: <none>
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] server lang: <none>
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] kex follows: False
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:24:12.870 [DEBUG] [Thread-163782] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:24:12.871 [DEBUG] [Thread-163782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:24:12.871 [DEBUG] [Thread-163782] [transport.py] [_log()] Compression: none
2025-09-29T18:24:12.871 [DEBUG] [Thread-163782] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:12.927 [DEBUG] [Thread-163782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:12.928 [DEBUG] [Thread-163782] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:12.928 [DEBUG] [Thread-163782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:24:12.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:24:12.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:12.984 [DEBUG] [Thread-163782] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:12.985 [DEBUG] [Thread-163782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:12.985 [DEBUG] [Thread-163782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:12.985 [DEBUG] [Thread-163782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:24:12.985 [DEBUG] [Thread-163782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:13.005 [INFO] [Thread-163782] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:13.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:24:13.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:14.022 [DEBUG] [Thread-163782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:14.022 [DEBUG] [Thread-163782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:14.070 [DEBUG] [Thread-163782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:14.070 [DEBUG] [Thread-163782] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:14.079 [DEBUG] [Thread-163782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:14.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:14.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:24:14.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:24:14.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:14.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:14.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:14.113 [DEBUG] [Thread-163782] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:24:21.885 [DEBUG] [Thread-163784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:24:24.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:24:24.116 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:24:24.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:24:24.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 24, 2), 12.42, 42.7, 0.0, 22.2, 12.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:24:24.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:24:02
2025-09-29T18:24:24.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:24:24.945 [DEBUG] [Thread-163785] [transport.py] [_log()] starting thread (client mode): 0x2e3c3730
2025-09-29T18:24:24.945 [DEBUG] [Thread-163785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:24:24.964 [DEBUG] [Thread-163785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:24:24.964 [INFO] [Thread-163785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:24:24.967 [DEBUG] [Thread-163785] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:24:24.967 [DEBUG] [Thread-163785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:24:24.967 [DEBUG] [Thread-163785] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:24:24.967 [DEBUG] [Thread-163785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:24.967 [DEBUG] [Thread-163785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:24.967 [DEBUG] [Thread-163785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] client lang: <none>
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] server lang: <none>
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] kex follows: False
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] Compression: none
2025-09-29T18:24:24.968 [DEBUG] [Thread-163785] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:24.986 [DEBUG] [Thread-163785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:24.986 [DEBUG] [Thread-163785] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:24.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:24:24.987 [DEBUG] [Thread-163785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:24:24.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:24.989 [DEBUG] [Thread-163785] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:24.989 [DEBUG] [Thread-163785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:24.989 [DEBUG] [Thread-163785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:24.989 [DEBUG] [Thread-163785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:24:24.989 [DEBUG] [Thread-163785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:25.010 [INFO] [Thread-163785] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:25.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:25.811 [DEBUG] [Thread-163785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:25.811 [DEBUG] [Thread-163785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:25.812 [DEBUG] [Thread-163785] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:24:25.852 [DEBUG] [Thread-163785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:25.852 [DEBUG] [Thread-163785] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:25.855 [DEBUG] [Thread-163785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:25.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:25.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:24:25.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:24:25.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:24:25.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:25.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:24:25.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:25.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:25.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:24:25.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.683397 -999.00  +12.80  18.99     48   +2.20 1 1 1 1 1   887    0 10.21 -21.21 ----- 19.0 19.0 161.2 23.0 14.8 -26.6 14.7 -25.5 15.1 -26.0 15.6 -27.1
2025-09-29T18:24:25.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:24:25.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:24:25.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.683397
2025-09-29T18:24:25.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:24:25.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:24:25.880 [DEBUG] [Thread-163785] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:24:25.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:24:25.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:24:25.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:24:25.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:24:02', tmtdew=12.42, humidity=42.7, cloud=0.0, wind=22.2, temperature=12.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:24:05.501', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:24:25.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:24:25.972 [DEBUG] [Thread-163788] [transport.py] [_log()] starting thread (client mode): 0x2e3c16c0
2025-09-29T18:24:25.972 [DEBUG] [Thread-163788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:24:25.986 [DEBUG] [Thread-163788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:24:25.987 [INFO] [Thread-163788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:24:25.994 [DEBUG] [Thread-163788] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:24:25.994 [DEBUG] [Thread-163788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] client lang: <none>
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] server lang: <none>
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] kex follows: False
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] Compression: none
2025-09-29T18:24:25.995 [DEBUG] [Thread-163788] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:26.052 [DEBUG] [Thread-163788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:26.052 [DEBUG] [Thread-163788] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:26.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:24:26.053 [DEBUG] [Thread-163788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:24:26.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:26.112 [DEBUG] [Thread-163788] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:26.112 [DEBUG] [Thread-163788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:26.112 [DEBUG] [Thread-163788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:26.112 [DEBUG] [Thread-163788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:24:26.112 [DEBUG] [Thread-163788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:26.131 [INFO] [Thread-163788] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:26.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:24:26.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:27.123 [DEBUG] [Thread-163788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:27.123 [DEBUG] [Thread-163788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:27.171 [DEBUG] [Thread-163788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:27.171 [DEBUG] [Thread-163788] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:27.180 [DEBUG] [Thread-163788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:27.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:27.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:24:27.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:24:27.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:27.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:27.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:27.215 [DEBUG] [Thread-163788] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:24:36.926 [DEBUG] [Thread-163790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:24:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:24:37.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:24:37.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:24:37.697 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:24:37.699 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:24:37.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 24, 34), 12.46, 42.22, 0.0, 22.3, 12.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:24:37.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:24:34
2025-09-29T18:24:37.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:24:38.045 [DEBUG] [Thread-163791] [transport.py] [_log()] starting thread (client mode): 0x2b9ca2f0
2025-09-29T18:24:38.045 [DEBUG] [Thread-163791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:24:38.065 [DEBUG] [Thread-163791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:24:38.065 [INFO] [Thread-163791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:24:38.069 [DEBUG] [Thread-163791] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:24:38.069 [DEBUG] [Thread-163791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:24:38.069 [DEBUG] [Thread-163791] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:24:38.069 [DEBUG] [Thread-163791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:38.069 [DEBUG] [Thread-163791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:38.069 [DEBUG] [Thread-163791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] client lang: <none>
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] server lang: <none>
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] kex follows: False
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] Compression: none
2025-09-29T18:24:38.070 [DEBUG] [Thread-163791] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:38.088 [DEBUG] [Thread-163791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:38.089 [DEBUG] [Thread-163791] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:38.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:24:38.090 [DEBUG] [Thread-163791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:24:38.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:38.091 [DEBUG] [Thread-163791] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:38.091 [DEBUG] [Thread-163791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:38.091 [DEBUG] [Thread-163791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:38.091 [DEBUG] [Thread-163791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:24:38.091 [DEBUG] [Thread-163791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:38.108 [INFO] [Thread-163791] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:38.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:38.920 [DEBUG] [Thread-163791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:38.920 [DEBUG] [Thread-163791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:38.920 [DEBUG] [Thread-163791] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:24:38.961 [DEBUG] [Thread-163791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:38.961 [DEBUG] [Thread-163791] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:38.963 [DEBUG] [Thread-163791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:38.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:38.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:24:38.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:24:38.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:24:38.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:38.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:24:38.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:38.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:24:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.683397 -999.00  +12.80  18.99     48   +2.20 1 1 1 1 1   887    0 10.21 -21.21 ----- 19.0 19.0 161.2 23.0 14.8 -26.6 14.7 -25.5 15.1 -26.0 15.6 -27.1
2025-09-29T18:24:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:24:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:24:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.683397
2025-09-29T18:24:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:24:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:24:38.986 [DEBUG] [Thread-163791] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:24:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:24:38.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:24:38.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:24:38.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:24:34', tmtdew=12.46, humidity=42.22, cloud=0.0, wind=22.3, temperature=12.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:24:05.501', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:24:39.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:24:39.082 [DEBUG] [Thread-163794] [transport.py] [_log()] starting thread (client mode): 0x2b9f05b0
2025-09-29T18:24:39.082 [DEBUG] [Thread-163794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:24:39.097 [DEBUG] [Thread-163794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:24:39.097 [INFO] [Thread-163794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:24:39.104 [DEBUG] [Thread-163794] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:24:39.105 [DEBUG] [Thread-163794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:24:39.105 [DEBUG] [Thread-163794] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:24:39.105 [DEBUG] [Thread-163794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:39.105 [DEBUG] [Thread-163794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:39.105 [DEBUG] [Thread-163794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:39.105 [DEBUG] [Thread-163794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:39.105 [DEBUG] [Thread-163794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:24:39.105 [DEBUG] [Thread-163794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:24:39.106 [DEBUG] [Thread-163794] [transport.py] [_log()] client lang: <none>
2025-09-29T18:24:39.106 [DEBUG] [Thread-163794] [transport.py] [_log()] server lang: <none>
2025-09-29T18:24:39.106 [DEBUG] [Thread-163794] [transport.py] [_log()] kex follows: False
2025-09-29T18:24:39.106 [DEBUG] [Thread-163794] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:24:39.106 [DEBUG] [Thread-163794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:24:39.106 [DEBUG] [Thread-163794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:24:39.106 [DEBUG] [Thread-163794] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:24:39.107 [DEBUG] [Thread-163794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:24:39.107 [DEBUG] [Thread-163794] [transport.py] [_log()] Compression: none
2025-09-29T18:24:39.107 [DEBUG] [Thread-163794] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:39.163 [DEBUG] [Thread-163794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:39.163 [DEBUG] [Thread-163794] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:39.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:24:39.164 [DEBUG] [Thread-163794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:24:39.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:39.219 [DEBUG] [Thread-163794] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:39.219 [DEBUG] [Thread-163794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:39.219 [DEBUG] [Thread-163794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:39.219 [DEBUG] [Thread-163794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:24:39.220 [DEBUG] [Thread-163794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:39.238 [INFO] [Thread-163794] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:39.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:24:39.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:40.245 [DEBUG] [Thread-163794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:40.245 [DEBUG] [Thread-163794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:40.293 [DEBUG] [Thread-163794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:40.293 [DEBUG] [Thread-163794] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:40.303 [DEBUG] [Thread-163794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:40.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:40.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:24:40.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:24:40.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:40.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:40.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:40.338 [DEBUG] [Thread-163794] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:24:50.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:24:50.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:24:50.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:24:50.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 24, 34), 12.46, 42.22, 0.0, 22.3, 12.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:24:50.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:24:34
2025-09-29T18:24:51.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:24:51.163 [DEBUG] [Thread-163796] [transport.py] [_log()] starting thread (client mode): 0x2b91e320
2025-09-29T18:24:51.164 [DEBUG] [Thread-163796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:24:51.185 [DEBUG] [Thread-163796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:24:51.185 [INFO] [Thread-163796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:24:51.188 [DEBUG] [Thread-163796] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] client lang: <none>
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] server lang: <none>
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] kex follows: False
2025-09-29T18:24:51.189 [DEBUG] [Thread-163796] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:24:51.190 [DEBUG] [Thread-163796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:24:51.190 [DEBUG] [Thread-163796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:24:51.190 [DEBUG] [Thread-163796] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:24:51.190 [DEBUG] [Thread-163796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:24:51.190 [DEBUG] [Thread-163796] [transport.py] [_log()] Compression: none
2025-09-29T18:24:51.190 [DEBUG] [Thread-163796] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:51.210 [DEBUG] [Thread-163796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:51.211 [DEBUG] [Thread-163796] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:51.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:24:51.212 [DEBUG] [Thread-163796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:24:51.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:51.213 [DEBUG] [Thread-163796] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:51.213 [DEBUG] [Thread-163796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:51.213 [DEBUG] [Thread-163796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:51.214 [DEBUG] [Thread-163796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:24:51.214 [DEBUG] [Thread-163796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:51.230 [INFO] [Thread-163796] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:51.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:51.897 [DEBUG] [Thread-163796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:51.897 [DEBUG] [Thread-163796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:51.897 [DEBUG] [Thread-163796] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:24:51.938 [DEBUG] [Thread-163796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:51.939 [DEBUG] [Thread-163796] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:51.941 [DEBUG] [Thread-163796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:51.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:51.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:24:51.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:24:51.958 [DEBUG] [Thread-163798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:24:51.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:24:51.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:51.964 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:24:51.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:51.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:51.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:24:51.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.683745 -999.00  +12.80  17.21     48   +2.20 1 1 1 1 1   887    0 10.24 -18.97 ----- 17.2 17.2 158.0 21.2 14.7 -26.4 14.7 -25.5 15.1 -26.2 15.5 -27.1
2025-09-29T18:24:51.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:24:51.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:24:51.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.683745
2025-09-29T18:24:51.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:24:51.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:24:51.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:24:51.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:24:51.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:24:51.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:24:34', tmtdew=12.46, humidity=42.22, cloud=0.0, wind=22.3, temperature=12.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:24:35.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:24:51.966 [DEBUG] [Thread-163796] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:24:52.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:24:52.057 [DEBUG] [Thread-163800] [transport.py] [_log()] starting thread (client mode): 0x2b9f1090
2025-09-29T18:24:52.057 [DEBUG] [Thread-163800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:24:52.072 [DEBUG] [Thread-163800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:24:52.072 [INFO] [Thread-163800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:24:52.080 [DEBUG] [Thread-163800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:24:52.080 [DEBUG] [Thread-163800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:24:52.080 [DEBUG] [Thread-163800] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:24:52.080 [DEBUG] [Thread-163800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] client lang: <none>
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] server lang: <none>
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] kex follows: False
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:24:52.081 [DEBUG] [Thread-163800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:24:52.082 [DEBUG] [Thread-163800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:24:52.082 [DEBUG] [Thread-163800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:24:52.082 [DEBUG] [Thread-163800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:24:52.082 [DEBUG] [Thread-163800] [transport.py] [_log()] Compression: none
2025-09-29T18:24:52.082 [DEBUG] [Thread-163800] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:24:52.138 [DEBUG] [Thread-163800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:24:52.139 [DEBUG] [Thread-163800] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:24:52.139 [DEBUG] [Thread-163800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:24:52.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:24:52.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:24:52.195 [DEBUG] [Thread-163800] [transport.py] [_log()] userauth is OK
2025-09-29T18:24:52.195 [DEBUG] [Thread-163800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:24:52.195 [DEBUG] [Thread-163800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:24:52.195 [DEBUG] [Thread-163800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:24:52.195 [DEBUG] [Thread-163800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:24:52.214 [INFO] [Thread-163800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:24:52.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:24:52.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:24:52.575 [DEBUG] [Thread-163802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:24:53.203 [DEBUG] [Thread-163800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:24:53.203 [DEBUG] [Thread-163800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:24:53.251 [DEBUG] [Thread-163800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:24:53.251 [DEBUG] [Thread-163800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:24:53.260 [DEBUG] [Thread-163800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:24:53.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:24:53.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:24:53.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:24:53.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:24:53.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:24:53.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:24:53.294 [DEBUG] [Thread-163800] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:25:03.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:25:03.297 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:25:03.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:25:03.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 24, 34), 12.46, 42.22, 0.0, 22.3, 12.87, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:25:03.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:24:34
2025-09-29T18:25:03.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:25:04.131 [DEBUG] [Thread-163803] [transport.py] [_log()] starting thread (client mode): 0x2e3c3430
2025-09-29T18:25:04.131 [DEBUG] [Thread-163803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:25:04.151 [DEBUG] [Thread-163803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:25:04.151 [INFO] [Thread-163803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] client lang: <none>
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] server lang: <none>
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] kex follows: False
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] Compression: none
2025-09-29T18:25:04.154 [DEBUG] [Thread-163803] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:25:04.171 [DEBUG] [Thread-163803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:25:04.171 [DEBUG] [Thread-163803] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:25:04.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:25:04.171 [DEBUG] [Thread-163803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:25:04.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:25:04.172 [DEBUG] [Thread-163803] [transport.py] [_log()] userauth is OK
2025-09-29T18:25:04.172 [DEBUG] [Thread-163803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:25:04.172 [DEBUG] [Thread-163803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:25:04.172 [DEBUG] [Thread-163803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:25:04.172 [DEBUG] [Thread-163803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:25:04.181 [INFO] [Thread-163803] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:25:04.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:25:06.998 [DEBUG] [Thread-163805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:25:13.063 [DEBUG] [Thread-163803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:25:13.063 [DEBUG] [Thread-163803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:25:13.064 [DEBUG] [Thread-163803] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:25:13.105 [DEBUG] [Thread-163803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:25:13.105 [DEBUG] [Thread-163803] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:25:13.108 [DEBUG] [Thread-163803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:25:13.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:25:13.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:25:13.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:25:13.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:25:13.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:25:13.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:25:13.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:25:13.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:25:13.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:25:13.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.683745 -999.00  +12.80  17.21     48   +2.20 1 1 1 1 1   887    0 10.24 -18.97 ----- 17.2 17.2 158.0 21.2 14.7 -26.4 14.7 -25.5 15.1 -26.2 15.5 -27.1
2025-09-29T18:25:13.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:25:13.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:25:13.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.683745
2025-09-29T18:25:13.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:25:13.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:25:13.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:25:13.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:25:13.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:25:13.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:24:34', tmtdew=12.46, humidity=42.22, cloud=0.0, wind=22.3, temperature=12.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:24:35.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:25:13.204 [DEBUG] [Thread-163803] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:25:13.293 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:25:13.304 [DEBUG] [Thread-163807] [transport.py] [_log()] starting thread (client mode): 0x2b920d60
2025-09-29T18:25:13.304 [DEBUG] [Thread-163807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:25:13.320 [DEBUG] [Thread-163807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:25:13.320 [INFO] [Thread-163807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:25:13.327 [DEBUG] [Thread-163807] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:25:13.328 [DEBUG] [Thread-163807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:25:13.328 [DEBUG] [Thread-163807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:25:13.328 [DEBUG] [Thread-163807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:13.328 [DEBUG] [Thread-163807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:13.328 [DEBUG] [Thread-163807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] client lang: <none>
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] server lang: <none>
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] kex follows: False
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] Compression: none
2025-09-29T18:25:13.329 [DEBUG] [Thread-163807] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:25:13.385 [DEBUG] [Thread-163807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:25:13.386 [DEBUG] [Thread-163807] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:25:13.386 [DEBUG] [Thread-163807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:25:13.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:25:13.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:25:13.442 [DEBUG] [Thread-163807] [transport.py] [_log()] userauth is OK
2025-09-29T18:25:13.442 [DEBUG] [Thread-163807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:25:13.442 [DEBUG] [Thread-163807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:25:13.442 [DEBUG] [Thread-163807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:25:13.442 [DEBUG] [Thread-163807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:25:13.462 [INFO] [Thread-163807] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:25:13.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:25:13.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:25:14.488 [DEBUG] [Thread-163807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:25:14.488 [DEBUG] [Thread-163807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:25:14.536 [DEBUG] [Thread-163807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:25:14.536 [DEBUG] [Thread-163807] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:25:14.545 [DEBUG] [Thread-163807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:25:14.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:25:14.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:25:14.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:25:14.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:25:14.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:25:14.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:25:14.579 [DEBUG] [Thread-163807] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:25:22.040 [DEBUG] [Thread-163809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:25:24.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:25:24.582 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:25:24.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:25:25.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 25, 6), 12.49, 42.14, 0.0, 28.18, 12.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:25:25.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:25:06
2025-09-29T18:25:25.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:25:25.408 [DEBUG] [Thread-163810] [transport.py] [_log()] starting thread (client mode): 0x2b9222f0
2025-09-29T18:25:25.408 [DEBUG] [Thread-163810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:25:25.426 [DEBUG] [Thread-163810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:25:25.426 [INFO] [Thread-163810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:25:25.430 [DEBUG] [Thread-163810] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:25:25.430 [DEBUG] [Thread-163810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:25:25.430 [DEBUG] [Thread-163810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:25:25.430 [DEBUG] [Thread-163810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:25.430 [DEBUG] [Thread-163810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:25.430 [DEBUG] [Thread-163810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:25.430 [DEBUG] [Thread-163810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:25.430 [DEBUG] [Thread-163810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] client lang: <none>
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] server lang: <none>
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] kex follows: False
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] Compression: none
2025-09-29T18:25:25.431 [DEBUG] [Thread-163810] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:25:25.448 [DEBUG] [Thread-163810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:25:25.448 [DEBUG] [Thread-163810] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:25:25.449 [DEBUG] [Thread-163810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:25:25.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:25:25.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:25:25.451 [DEBUG] [Thread-163810] [transport.py] [_log()] userauth is OK
2025-09-29T18:25:25.451 [DEBUG] [Thread-163810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:25:25.451 [DEBUG] [Thread-163810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:25:25.451 [DEBUG] [Thread-163810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:25:25.451 [DEBUG] [Thread-163810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:25:25.468 [INFO] [Thread-163810] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:25:25.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:25:26.084 [DEBUG] [Thread-163810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:25:26.084 [DEBUG] [Thread-163810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:25:26.084 [DEBUG] [Thread-163810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:25:26.125 [DEBUG] [Thread-163810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:25:26.125 [DEBUG] [Thread-163810] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:25:26.128 [DEBUG] [Thread-163810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:25:26.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:25:26.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:25:26.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:25:26.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:25:26.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:25:26.151 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:25:26.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:25:26.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:25:26.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:25:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.684092 -999.00  +12.80  17.29     48   +2.10 1 1 1 1 1   887    0 10.12 -17.71 ----- 17.3 17.3 156.4 26.5 14.7 -26.5 14.6 -25.4 15.1 -26.2 15.4 -27.2
2025-09-29T18:25:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:25:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:25:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.684092
2025-09-29T18:25:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:25:26.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:25:26.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:25:26.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:25:26.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:25:26.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:25:06', tmtdew=12.49, humidity=42.14, cloud=0.0, wind=28.18, temperature=12.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:25:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:25:26.153 [DEBUG] [Thread-163810] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:25:26.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:25:26.245 [DEBUG] [Thread-163813] [transport.py] [_log()] starting thread (client mode): 0x2b9ceec0
2025-09-29T18:25:26.245 [DEBUG] [Thread-163813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:25:26.260 [DEBUG] [Thread-163813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:25:26.260 [INFO] [Thread-163813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:25:26.267 [DEBUG] [Thread-163813] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:25:26.267 [DEBUG] [Thread-163813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:25:26.267 [DEBUG] [Thread-163813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:25:26.267 [DEBUG] [Thread-163813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:26.267 [DEBUG] [Thread-163813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:26.267 [DEBUG] [Thread-163813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] client lang: <none>
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] server lang: <none>
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] kex follows: False
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] Compression: none
2025-09-29T18:25:26.268 [DEBUG] [Thread-163813] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:25:26.325 [DEBUG] [Thread-163813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:25:26.325 [DEBUG] [Thread-163813] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:25:26.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:25:26.326 [DEBUG] [Thread-163813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:25:26.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:25:26.381 [DEBUG] [Thread-163813] [transport.py] [_log()] userauth is OK
2025-09-29T18:25:26.381 [DEBUG] [Thread-163813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:25:26.381 [DEBUG] [Thread-163813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:25:26.381 [DEBUG] [Thread-163813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:25:26.382 [DEBUG] [Thread-163813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:25:26.401 [INFO] [Thread-163813] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:25:26.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:25:26.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:25:27.384 [DEBUG] [Thread-163813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:25:27.384 [DEBUG] [Thread-163813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:25:27.432 [DEBUG] [Thread-163813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:25:27.432 [DEBUG] [Thread-163813] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:25:27.441 [DEBUG] [Thread-163813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:25:27.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:25:27.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:25:27.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:25:27.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:25:27.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:25:27.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:25:27.475 [DEBUG] [Thread-163813] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:25:37.071 [DEBUG] [Thread-163815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:25:37.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:25:37.478 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:25:37.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:25:37.851 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:25:37.852 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:25:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 25, 6), 12.49, 42.14, 0.0, 28.18, 12.84, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:25:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:25:06
2025-09-29T18:25:38.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:25:38.297 [DEBUG] [Thread-163816] [transport.py] [_log()] starting thread (client mode): 0x2e375390
2025-09-29T18:25:38.297 [DEBUG] [Thread-163816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:25:38.317 [DEBUG] [Thread-163816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:25:38.317 [INFO] [Thread-163816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:25:38.320 [DEBUG] [Thread-163816] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:25:38.320 [DEBUG] [Thread-163816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:25:38.320 [DEBUG] [Thread-163816] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] client lang: <none>
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] server lang: <none>
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] kex follows: False
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] Compression: none
2025-09-29T18:25:38.321 [DEBUG] [Thread-163816] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:25:38.338 [DEBUG] [Thread-163816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:25:38.338 [DEBUG] [Thread-163816] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:25:38.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:25:38.339 [DEBUG] [Thread-163816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:25:38.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:25:38.341 [DEBUG] [Thread-163816] [transport.py] [_log()] userauth is OK
2025-09-29T18:25:38.342 [DEBUG] [Thread-163816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:25:38.342 [DEBUG] [Thread-163816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:25:38.342 [DEBUG] [Thread-163816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:25:38.342 [DEBUG] [Thread-163816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:25:38.368 [INFO] [Thread-163816] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:25:38.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:25:39.110 [DEBUG] [Thread-163816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:25:39.110 [DEBUG] [Thread-163816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:25:39.110 [DEBUG] [Thread-163816] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:25:39.151 [DEBUG] [Thread-163816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:25:39.151 [DEBUG] [Thread-163816] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:25:39.153 [DEBUG] [Thread-163816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:25:39.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:25:39.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:25:39.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:25:39.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:25:39.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:25:39.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:25:39.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.684092 -999.00  +12.80  17.29     48   +2.10 1 1 1 1 1   887    0 10.12 -17.71 ----- 17.3 17.3 156.4 26.5 14.7 -26.5 14.6 -25.4 15.1 -26.2 15.4 -27.2
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.684092
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:25:39.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:25:06', tmtdew=12.49, humidity=42.14, cloud=0.0, wind=28.18, temperature=12.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:25:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:25:39.164 [DEBUG] [Thread-163816] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:25:39.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:25:39.249 [DEBUG] [Thread-163819] [transport.py] [_log()] starting thread (client mode): 0x2b9ccac0
2025-09-29T18:25:39.250 [DEBUG] [Thread-163819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:25:39.264 [DEBUG] [Thread-163819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:25:39.264 [INFO] [Thread-163819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] client lang: <none>
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] server lang: <none>
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] kex follows: False
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] Compression: none
2025-09-29T18:25:39.272 [DEBUG] [Thread-163819] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:25:39.327 [DEBUG] [Thread-163819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:25:39.327 [DEBUG] [Thread-163819] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:25:39.327 [DEBUG] [Thread-163819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:25:39.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:25:39.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:25:39.385 [DEBUG] [Thread-163819] [transport.py] [_log()] userauth is OK
2025-09-29T18:25:39.385 [DEBUG] [Thread-163819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:25:39.385 [DEBUG] [Thread-163819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:25:39.385 [DEBUG] [Thread-163819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:25:39.385 [DEBUG] [Thread-163819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:25:39.399 [INFO] [Thread-163819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:25:39.399 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:25:39.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:25:40.393 [DEBUG] [Thread-163819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:25:40.393 [DEBUG] [Thread-163819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:25:40.441 [DEBUG] [Thread-163819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:25:40.441 [DEBUG] [Thread-163819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:25:40.449 [DEBUG] [Thread-163819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:25:40.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:25:40.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:25:40.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:25:40.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:25:40.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:25:40.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:25:40.480 [DEBUG] [Thread-163819] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:25:50.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:25:50.483 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:25:50.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:25:51.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 25, 38), 12.51, 42.07, 0.0, 25.09, 12.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:25:51.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:25:38
2025-09-29T18:25:51.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:25:51.310 [DEBUG] [Thread-163821] [transport.py] [_log()] starting thread (client mode): 0x2b91f460
2025-09-29T18:25:51.310 [DEBUG] [Thread-163821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:25:51.324 [DEBUG] [Thread-163821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:25:51.324 [INFO] [Thread-163821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:25:51.325 [DEBUG] [Thread-163821] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:25:51.325 [DEBUG] [Thread-163821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] client lang: <none>
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] server lang: <none>
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] kex follows: False
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] Compression: none
2025-09-29T18:25:51.326 [DEBUG] [Thread-163821] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:25:51.334 [DEBUG] [Thread-163821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:25:51.334 [DEBUG] [Thread-163821] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:25:51.334 [DEBUG] [Thread-163821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:25:51.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:25:51.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:25:51.335 [DEBUG] [Thread-163821] [transport.py] [_log()] userauth is OK
2025-09-29T18:25:51.335 [DEBUG] [Thread-163821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:25:51.335 [DEBUG] [Thread-163821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:25:51.335 [DEBUG] [Thread-163821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:25:51.336 [DEBUG] [Thread-163821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:25:51.349 [INFO] [Thread-163821] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:25:51.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:25:51.924 [DEBUG] [Thread-163821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:25:51.924 [DEBUG] [Thread-163821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:25:51.925 [DEBUG] [Thread-163821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:25:51.965 [DEBUG] [Thread-163821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:25:51.966 [DEBUG] [Thread-163821] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:25:51.968 [DEBUG] [Thread-163821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:25:51.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:25:51.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:25:51.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:25:51.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:25:51.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:25:51.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:25:51.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:25:51.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:25:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:25:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.684439 -999.00  +12.70  18.86     48   +2.10 1 1 1 1 1   886    0 10.39 -17.37 ----- 18.9 18.9 153.4 22.8 14.7 -26.4 14.5 -25.4 15.0 -25.8 15.4 -26.8
2025-09-29T18:25:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:25:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:25:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.684439
2025-09-29T18:25:51.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:25:51.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:25:51.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:25:51.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:25:51.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:25:51.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:25:38', tmtdew=12.51, humidity=42.07, cloud=0.0, wind=25.09, temperature=12.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:25:35.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:25:51.991 [DEBUG] [Thread-163821] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:25:52.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:25:52.082 [DEBUG] [Thread-163824] [transport.py] [_log()] starting thread (client mode): 0x2b91dcc0
2025-09-29T18:25:52.083 [DEBUG] [Thread-163824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:25:52.098 [DEBUG] [Thread-163824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:25:52.098 [INFO] [Thread-163824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] client lang: <none>
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] server lang: <none>
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] kex follows: False
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] Compression: none
2025-09-29T18:25:52.106 [DEBUG] [Thread-163824] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:25:52.108 [DEBUG] [Thread-163826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:25:52.168 [DEBUG] [Thread-163824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:25:52.168 [DEBUG] [Thread-163824] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:25:52.169 [DEBUG] [Thread-163824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:25:52.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:25:52.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:25:52.224 [DEBUG] [Thread-163824] [transport.py] [_log()] userauth is OK
2025-09-29T18:25:52.224 [DEBUG] [Thread-163824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:25:52.224 [DEBUG] [Thread-163824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:25:52.224 [DEBUG] [Thread-163824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:25:52.224 [DEBUG] [Thread-163824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:25:52.243 [INFO] [Thread-163824] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:25:52.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:25:52.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:25:52.602 [DEBUG] [Thread-163827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:25:53.281 [DEBUG] [Thread-163824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:25:53.281 [DEBUG] [Thread-163824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:25:53.328 [DEBUG] [Thread-163824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:25:53.328 [DEBUG] [Thread-163824] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:25:53.337 [DEBUG] [Thread-163824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:25:53.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:25:53.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:25:53.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:25:53.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:25:53.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:25:53.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:25:53.373 [DEBUG] [Thread-163824] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:03.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:26:03.376 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:26:03.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:26:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 25, 38), 12.51, 42.07, 0.0, 25.09, 12.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:26:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:25:38
2025-09-29T18:26:04.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:26:04.233 [DEBUG] [Thread-163828] [transport.py] [_log()] starting thread (client mode): 0x2b9c9ea0
2025-09-29T18:26:04.233 [DEBUG] [Thread-163828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:04.254 [DEBUG] [Thread-163828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:26:04.254 [INFO] [Thread-163828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] Compression: none
2025-09-29T18:26:04.257 [DEBUG] [Thread-163828] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:04.280 [DEBUG] [Thread-163828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:04.280 [DEBUG] [Thread-163828] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:04.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:26:04.281 [DEBUG] [Thread-163828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:26:04.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:04.283 [DEBUG] [Thread-163828] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:04.284 [DEBUG] [Thread-163828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:04.284 [DEBUG] [Thread-163828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:04.284 [DEBUG] [Thread-163828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:26:04.284 [DEBUG] [Thread-163828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:04.307 [INFO] [Thread-163828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:04.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:05.061 [DEBUG] [Thread-163828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:05.062 [DEBUG] [Thread-163828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:05.062 [DEBUG] [Thread-163828] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:26:05.102 [DEBUG] [Thread-163828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:05.102 [DEBUG] [Thread-163828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:05.104 [DEBUG] [Thread-163828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:05.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:05.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:26:05.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:26:05.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:26:05.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:05.133 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:26:05.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:05.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:05.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:26:05.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.684439 -999.00  +12.70  18.86     48   +2.10 1 1 1 1 1   886    0 10.39 -17.37 ----- 18.9 18.9 153.4 22.8 14.7 -26.4 14.5 -25.4 15.0 -25.8 15.4 -26.8
2025-09-29T18:26:05.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:26:05.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:26:05.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.684439
2025-09-29T18:26:05.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:26:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:26:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:26:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:26:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:26:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:25:38', tmtdew=12.51, humidity=42.07, cloud=0.0, wind=25.09, temperature=12.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:25:35.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:26:05.134 [DEBUG] [Thread-163828] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:05.210 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:26:05.221 [DEBUG] [Thread-163831] [transport.py] [_log()] starting thread (client mode): 0x2b921390
2025-09-29T18:26:05.221 [DEBUG] [Thread-163831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:05.236 [DEBUG] [Thread-163831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:26:05.236 [INFO] [Thread-163831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:26:05.244 [DEBUG] [Thread-163831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:05.244 [DEBUG] [Thread-163831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] Compression: none
2025-09-29T18:26:05.245 [DEBUG] [Thread-163831] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:05.304 [DEBUG] [Thread-163831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:05.304 [DEBUG] [Thread-163831] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:05.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:26:05.305 [DEBUG] [Thread-163831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:26:05.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:05.364 [DEBUG] [Thread-163831] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:05.365 [DEBUG] [Thread-163831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:05.365 [DEBUG] [Thread-163831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:05.365 [DEBUG] [Thread-163831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:26:05.365 [DEBUG] [Thread-163831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:05.384 [INFO] [Thread-163831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:05.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:26:05.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:06.390 [DEBUG] [Thread-163831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:06.390 [DEBUG] [Thread-163831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:06.438 [DEBUG] [Thread-163831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:06.438 [DEBUG] [Thread-163831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:06.447 [DEBUG] [Thread-163831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:06.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:06.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:26:06.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:26:06.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:06.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:06.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:06.482 [DEBUG] [Thread-163831] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:07.151 [DEBUG] [Thread-163833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:26:16.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:26:16.478 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:26:16.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:26:17.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 26, 10), 12.49, 42.12, 0.0, 24.79, 12.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:26:17.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:26:10
2025-09-29T18:26:17.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:26:17.323 [DEBUG] [Thread-163834] [transport.py] [_log()] starting thread (client mode): 0x2b9f37c0
2025-09-29T18:26:17.323 [DEBUG] [Thread-163834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:17.344 [DEBUG] [Thread-163834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:26:17.344 [INFO] [Thread-163834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:26:17.347 [DEBUG] [Thread-163834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] Compression: none
2025-09-29T18:26:17.348 [DEBUG] [Thread-163834] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:17.367 [DEBUG] [Thread-163834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:17.368 [DEBUG] [Thread-163834] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:17.368 [DEBUG] [Thread-163834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:26:17.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:26:17.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:17.370 [DEBUG] [Thread-163834] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:17.370 [DEBUG] [Thread-163834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:17.370 [DEBUG] [Thread-163834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:17.370 [DEBUG] [Thread-163834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:26:17.371 [DEBUG] [Thread-163834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:17.394 [INFO] [Thread-163834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:17.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:18.162 [DEBUG] [Thread-163834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:18.163 [DEBUG] [Thread-163834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:18.163 [DEBUG] [Thread-163834] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:26:18.203 [DEBUG] [Thread-163834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:18.204 [DEBUG] [Thread-163834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:18.206 [DEBUG] [Thread-163834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:18.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:18.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:26:18.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:26:18.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:26:18.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:18.232 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:26:18.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:18.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:18.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:26:18.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.684439 -999.00  +12.70  18.86     48   +2.10 1 1 1 1 1   886    0 10.39 -17.37 ----- 18.9 18.9 153.4 22.8 14.7 -26.4 14.5 -25.4 15.0 -25.8 15.4 -26.8
2025-09-29T18:26:18.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:26:18.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:26:18.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.684439
2025-09-29T18:26:18.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:26:18.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:26:18.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:26:18.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:26:18.234 [DEBUG] [Thread-163834] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:18.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:26:18.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:26:10', tmtdew=12.49, humidity=42.12, cloud=0.0, wind=24.79, temperature=12.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:25:35.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:26:18.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:26:18.326 [DEBUG] [Thread-163837] [transport.py] [_log()] starting thread (client mode): 0x2b96af20
2025-09-29T18:26:18.326 [DEBUG] [Thread-163837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:18.341 [DEBUG] [Thread-163837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:26:18.341 [INFO] [Thread-163837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:26:18.349 [DEBUG] [Thread-163837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:18.349 [DEBUG] [Thread-163837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] Compression: none
2025-09-29T18:26:18.350 [DEBUG] [Thread-163837] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:18.411 [DEBUG] [Thread-163837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:18.412 [DEBUG] [Thread-163837] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:18.412 [DEBUG] [Thread-163837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:26:18.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:26:18.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:18.467 [DEBUG] [Thread-163837] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:18.467 [DEBUG] [Thread-163837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:18.468 [DEBUG] [Thread-163837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:18.468 [DEBUG] [Thread-163837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:26:18.468 [DEBUG] [Thread-163837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:18.487 [INFO] [Thread-163837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:18.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:26:18.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:19.465 [DEBUG] [Thread-163837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:19.466 [DEBUG] [Thread-163837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:19.513 [DEBUG] [Thread-163837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:19.513 [DEBUG] [Thread-163837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:19.522 [DEBUG] [Thread-163837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:19.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:19.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:26:19.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:26:19.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:19.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:19.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:19.559 [DEBUG] [Thread-163837] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:22.181 [DEBUG] [Thread-163839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:26:29.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:26:29.560 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:26:29.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:26:30.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 26, 10), 12.49, 42.12, 0.0, 24.79, 12.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:26:30.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:26:10
2025-09-29T18:26:30.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:26:30.392 [DEBUG] [Thread-163840] [transport.py] [_log()] starting thread (client mode): 0x2e3deb60
2025-09-29T18:26:30.392 [DEBUG] [Thread-163840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:30.413 [DEBUG] [Thread-163840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:26:30.413 [INFO] [Thread-163840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] Compression: none
2025-09-29T18:26:30.417 [DEBUG] [Thread-163840] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:30.434 [DEBUG] [Thread-163840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:30.434 [DEBUG] [Thread-163840] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:30.435 [DEBUG] [Thread-163840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:26:30.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:26:30.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:30.437 [DEBUG] [Thread-163840] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:30.437 [DEBUG] [Thread-163840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:30.437 [DEBUG] [Thread-163840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:30.437 [DEBUG] [Thread-163840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:26:30.437 [DEBUG] [Thread-163840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:30.460 [INFO] [Thread-163840] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:30.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:31.063 [DEBUG] [Thread-163840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:31.063 [DEBUG] [Thread-163840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:31.063 [DEBUG] [Thread-163840] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:26:31.104 [DEBUG] [Thread-163840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:31.104 [DEBUG] [Thread-163840] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:31.107 [DEBUG] [Thread-163840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:31.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:31.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:26:31.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:26:31.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:26:31.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:31.129 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:26:31.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:31.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:31.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:26:31.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.684786 -999.00  +12.70  18.53     48   +2.10 1 1 1 1 1   886    0 10.15 -17.21 ----- 18.5 18.5 156.8 28.9 14.6 -26.5 14.5 -25.4 15.0 -26.1 15.3 -27.1
2025-09-29T18:26:31.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:26:31.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:26:31.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.684786
2025-09-29T18:26:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:26:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:26:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:26:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:26:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:26:31.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:26:10', tmtdew=12.49, humidity=42.12, cloud=0.0, wind=24.79, temperature=12.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:26:05.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:26:31.132 [DEBUG] [Thread-163840] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:31.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:26:31.227 [DEBUG] [Thread-163843] [transport.py] [_log()] starting thread (client mode): 0x2e38e4a0
2025-09-29T18:26:31.227 [DEBUG] [Thread-163843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:31.242 [DEBUG] [Thread-163843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:26:31.242 [INFO] [Thread-163843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:26:31.250 [DEBUG] [Thread-163843] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:31.250 [DEBUG] [Thread-163843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:26:31.250 [DEBUG] [Thread-163843] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:31.250 [DEBUG] [Thread-163843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:31.250 [DEBUG] [Thread-163843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:31.251 [DEBUG] [Thread-163843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:31.252 [DEBUG] [Thread-163843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:31.252 [DEBUG] [Thread-163843] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:31.252 [DEBUG] [Thread-163843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:31.252 [DEBUG] [Thread-163843] [transport.py] [_log()] Compression: none
2025-09-29T18:26:31.252 [DEBUG] [Thread-163843] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:31.307 [DEBUG] [Thread-163843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:31.307 [DEBUG] [Thread-163843] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:31.308 [DEBUG] [Thread-163843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:26:31.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:26:31.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:31.367 [DEBUG] [Thread-163843] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:31.367 [DEBUG] [Thread-163843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:31.367 [DEBUG] [Thread-163843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:31.367 [DEBUG] [Thread-163843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:26:31.367 [DEBUG] [Thread-163843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:31.386 [INFO] [Thread-163843] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:31.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:26:31.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:32.448 [DEBUG] [Thread-163843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:32.449 [DEBUG] [Thread-163843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:32.497 [DEBUG] [Thread-163843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:32.497 [DEBUG] [Thread-163843] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:32.507 [DEBUG] [Thread-163843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:32.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:32.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:26:32.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:26:32.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:32.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:32.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:32.538 [DEBUG] [Thread-163843] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:37.231 [DEBUG] [Thread-163845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:26:37.993 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:26:37.994 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:26:42.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:26:42.541 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:26:42.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:26:43.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 26, 10), 12.49, 42.12, 0.0, 24.79, 12.74, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:26:43.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:26:10
2025-09-29T18:26:43.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:26:43.428 [DEBUG] [Thread-163846] [transport.py] [_log()] starting thread (client mode): 0x2b9f1630
2025-09-29T18:26:43.428 [DEBUG] [Thread-163846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:43.448 [DEBUG] [Thread-163846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:26:43.448 [INFO] [Thread-163846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] Compression: none
2025-09-29T18:26:43.450 [DEBUG] [Thread-163846] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:43.466 [DEBUG] [Thread-163846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:43.466 [DEBUG] [Thread-163846] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:43.466 [DEBUG] [Thread-163846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:26:43.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:26:43.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:43.467 [DEBUG] [Thread-163846] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:43.467 [DEBUG] [Thread-163846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:43.467 [DEBUG] [Thread-163846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:43.467 [DEBUG] [Thread-163846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:26:43.467 [DEBUG] [Thread-163846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:43.480 [INFO] [Thread-163846] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:43.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:44.199 [DEBUG] [Thread-163846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:44.199 [DEBUG] [Thread-163846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:44.199 [DEBUG] [Thread-163846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:26:44.240 [DEBUG] [Thread-163846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:44.240 [DEBUG] [Thread-163846] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:44.242 [DEBUG] [Thread-163846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:44.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:44.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:26:44.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:26:44.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:26:44.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:44.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:26:44.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.684786 -999.00  +12.70  18.53     48   +2.10 1 1 1 1 1   886    0 10.15 -17.21 ----- 18.5 18.5 156.8 28.9 14.6 -26.5 14.5 -25.4 15.0 -26.1 15.3 -27.1
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.684786
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:26:44.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:26:10', tmtdew=12.49, humidity=42.12, cloud=0.0, wind=24.79, temperature=12.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:26:05.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:26:44.255 [DEBUG] [Thread-163846] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:44.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:26:44.341 [DEBUG] [Thread-163849] [transport.py] [_log()] starting thread (client mode): 0x2b922e90
2025-09-29T18:26:44.342 [DEBUG] [Thread-163849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:44.357 [DEBUG] [Thread-163849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:26:44.357 [INFO] [Thread-163849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:26:44.365 [DEBUG] [Thread-163849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:44.365 [DEBUG] [Thread-163849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:26:44.365 [DEBUG] [Thread-163849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:44.365 [DEBUG] [Thread-163849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:44.365 [DEBUG] [Thread-163849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:44.365 [DEBUG] [Thread-163849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:44.366 [DEBUG] [Thread-163849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:44.367 [DEBUG] [Thread-163849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:44.367 [DEBUG] [Thread-163849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:44.367 [DEBUG] [Thread-163849] [transport.py] [_log()] Compression: none
2025-09-29T18:26:44.367 [DEBUG] [Thread-163849] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:44.422 [DEBUG] [Thread-163849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:44.422 [DEBUG] [Thread-163849] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:44.423 [DEBUG] [Thread-163849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:26:44.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:26:44.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:44.482 [DEBUG] [Thread-163849] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:44.483 [DEBUG] [Thread-163849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:44.483 [DEBUG] [Thread-163849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:44.483 [DEBUG] [Thread-163849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:26:44.483 [DEBUG] [Thread-163849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:44.502 [INFO] [Thread-163849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:44.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:26:44.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:45.539 [DEBUG] [Thread-163849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:45.539 [DEBUG] [Thread-163849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:45.586 [DEBUG] [Thread-163849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:45.586 [DEBUG] [Thread-163849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:45.595 [DEBUG] [Thread-163849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:45.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:45.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:26:45.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:26:45.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:45.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:45.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:45.629 [DEBUG] [Thread-163849] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:52.274 [DEBUG] [Thread-163851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:26:52.666 [DEBUG] [Thread-163852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:26:55.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:26:55.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:26:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:26:56.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 26, 42), 12.41, 42.69, 0.0, 26.13, 12.67, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:26:56.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:26:42
2025-09-29T18:26:56.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:26:56.460 [DEBUG] [Thread-163853] [transport.py] [_log()] starting thread (client mode): 0x2e38c5e0
2025-09-29T18:26:56.460 [DEBUG] [Thread-163853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:26:56.481 [DEBUG] [Thread-163853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:26:56.481 [INFO] [Thread-163853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] client lang: <none>
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] server lang: <none>
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] kex follows: False
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:26:56.484 [DEBUG] [Thread-163853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:26:56.485 [DEBUG] [Thread-163853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:26:56.485 [DEBUG] [Thread-163853] [transport.py] [_log()] Compression: none
2025-09-29T18:26:56.485 [DEBUG] [Thread-163853] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:26:56.493 [DEBUG] [Thread-163853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:26:56.493 [DEBUG] [Thread-163853] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:26:56.494 [DEBUG] [Thread-163853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:26:56.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:26:56.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:26:56.496 [DEBUG] [Thread-163853] [transport.py] [_log()] userauth is OK
2025-09-29T18:26:56.496 [DEBUG] [Thread-163853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:26:56.496 [DEBUG] [Thread-163853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:26:56.496 [DEBUG] [Thread-163853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:26:56.496 [DEBUG] [Thread-163853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:26:56.513 [INFO] [Thread-163853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:26:56.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:26:57.090 [DEBUG] [Thread-163853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:26:57.091 [DEBUG] [Thread-163853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:26:57.091 [DEBUG] [Thread-163853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:26:57.131 [DEBUG] [Thread-163853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:26:57.131 [DEBUG] [Thread-163853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:26:57.136 [DEBUG] [Thread-163853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:26:57.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:26:57.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:26:57.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:26:57.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:26:57.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:26:57.159 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:26:57.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:26:57.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:26:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:26:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.685133 -999.00  +12.70  18.02     48   +2.00 1 1 1 1 1   886    0 10.23 -17.34 ----- 18.0 18.0 149.8 24.3 14.5 -26.5 14.4 -25.5 14.8 -25.7 15.3 -27.0
2025-09-29T18:26:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:26:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:26:57.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.685133
2025-09-29T18:26:57.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:26:57.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:26:57.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:26:57.162 [DEBUG] [Thread-163853] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:26:57.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:26:57.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:26:57.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:26:42', tmtdew=12.41, humidity=42.69, cloud=0.0, wind=26.13, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:26:35.491', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:26:57.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:27:07.301 [DEBUG] [Thread-163856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:27:22.355 [DEBUG] [Thread-163857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:27:37.387 [DEBUG] [Thread-163858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:27:38.134 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:27:38.135 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:27:52.413 [DEBUG] [Thread-163859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:27:52.718 [DEBUG] [Thread-163860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:28:07.446 [DEBUG] [Thread-163861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:28:22.477 [DEBUG] [Thread-163862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:28:37.508 [DEBUG] [Thread-163863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:28:38.278 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:28:38.279 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:28:52.537 [DEBUG] [Thread-163864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:28:52.767 [DEBUG] [Thread-163865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:29:07.562 [DEBUG] [Thread-163866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:29:10.203 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T18:29:20.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:29:20.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:29:20.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:29:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 28, 49), 12.37, 42.8, 0.0, 22.27, 12.57, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:29:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:28:49
2025-09-29T18:29:20.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:29:21.067 [DEBUG] [Thread-163867] [transport.py] [_log()] starting thread (client mode): 0x2b9683a0
2025-09-29T18:29:21.067 [DEBUG] [Thread-163867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:29:21.083 [DEBUG] [Thread-163867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:29:21.083 [INFO] [Thread-163867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] client lang: <none>
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] server lang: <none>
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] kex follows: False
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] Compression: none
2025-09-29T18:29:21.086 [DEBUG] [Thread-163867] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:29:21.102 [DEBUG] [Thread-163867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:29:21.103 [DEBUG] [Thread-163867] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:29:21.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:29:21.103 [DEBUG] [Thread-163867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:29:21.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:29:21.105 [DEBUG] [Thread-163867] [transport.py] [_log()] userauth is OK
2025-09-29T18:29:21.105 [DEBUG] [Thread-163867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:29:21.105 [DEBUG] [Thread-163867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:29:21.105 [DEBUG] [Thread-163867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:29:21.105 [DEBUG] [Thread-163867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:29:21.123 [INFO] [Thread-163867] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:29:21.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:29:21.832 [DEBUG] [Thread-163867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:29:21.832 [DEBUG] [Thread-163867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:29:21.832 [DEBUG] [Thread-163867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:29:21.873 [DEBUG] [Thread-163867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:29:21.873 [DEBUG] [Thread-163867] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:29:21.876 [DEBUG] [Thread-163867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:29:21.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:29:21.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:29:21.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:29:21.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:29:21.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:29:21.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:29:21.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:29:21.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:29:21.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:29:21.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.686870 -999.00  +12.50  13.50     48   +2.00 1 1 1 1 1   885    0 10.27 -16.93 ----- 13.5 13.5 158.3 25.3 14.3 -26.4 14.2 -25.3 14.6 -25.8 14.9 -26.9
2025-09-29T18:29:21.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:29:21.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:29:21.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.686870
2025-09-29T18:29:21.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:29:21.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:29:21.900 [DEBUG] [Thread-163867] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:29:21.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:29:21.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:29:21.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:29:21.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:28:49', tmtdew=12.37, humidity=42.8, cloud=0.0, wind=22.27, temperature=12.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:29:05.568', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:29:21.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:29:22.590 [DEBUG] [Thread-163870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:29:37.627 [DEBUG] [Thread-163871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:29:38.421 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:29:38.422 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:29:52.658 [DEBUG] [Thread-163872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:29:52.823 [DEBUG] [Thread-163873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:30:07.692 [DEBUG] [Thread-163874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:30:22.721 [DEBUG] [Thread-163875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:30:37.749 [DEBUG] [Thread-163876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:30:38.563 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:30:38.564 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:30:52.783 [DEBUG] [Thread-163877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:30:52.868 [DEBUG] [Thread-163878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:31:07.811 [DEBUG] [Thread-163879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:31:22.841 [DEBUG] [Thread-163880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:31:33.563 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-09-29T18:31:37.870 [DEBUG] [Thread-163881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:31:38.706 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:31:38.707 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:31:43.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:31:43.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:31:43.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:31:44.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 31, 29), 12.29, 42.89, 0.0, 22.09, 12.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:31:44.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:31:29
2025-09-29T18:31:44.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:31:44.437 [DEBUG] [Thread-163882] [transport.py] [_log()] starting thread (client mode): 0x2b9f0d60
2025-09-29T18:31:44.437 [DEBUG] [Thread-163882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:31:44.458 [DEBUG] [Thread-163882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:31:44.458 [INFO] [Thread-163882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:31:44.461 [DEBUG] [Thread-163882] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:31:44.461 [DEBUG] [Thread-163882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] client lang: <none>
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] server lang: <none>
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] kex follows: False
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] Compression: none
2025-09-29T18:31:44.462 [DEBUG] [Thread-163882] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:31:44.478 [DEBUG] [Thread-163882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:31:44.478 [DEBUG] [Thread-163882] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:31:44.479 [DEBUG] [Thread-163882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:31:44.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:31:44.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:31:44.481 [DEBUG] [Thread-163882] [transport.py] [_log()] userauth is OK
2025-09-29T18:31:44.481 [DEBUG] [Thread-163882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:31:44.481 [DEBUG] [Thread-163882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:31:44.481 [DEBUG] [Thread-163882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:31:44.481 [DEBUG] [Thread-163882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:31:44.503 [INFO] [Thread-163882] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:31:44.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:31:45.171 [DEBUG] [Thread-163882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:31:45.172 [DEBUG] [Thread-163882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:31:45.172 [DEBUG] [Thread-163882] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:31:45.212 [DEBUG] [Thread-163882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:31:45.212 [DEBUG] [Thread-163882] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:31:45.215 [DEBUG] [Thread-163882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:31:45.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:31:45.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:31:45.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:31:45.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:31:45.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:31:45.237 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:31:45.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:31:45.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:31:45.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:31:45.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.688258 -999.00  +12.50  14.41     48   +1.90 1 1 1 1 1   884    0 10.13 -19.81 ----- 14.4 14.4 154.6 21.1 14.2 -26.2 14.1 -25.3 14.3 -25.6 14.7 -26.8
2025-09-29T18:31:45.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:31:45.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:31:45.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.688258
2025-09-29T18:31:45.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:31:45.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:31:45.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:31:45.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:31:45.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:31:45.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:31:29', tmtdew=12.29, humidity=42.89, cloud=0.0, wind=22.09, temperature=12.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:31:05.491', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:31:45.239 [DEBUG] [Thread-163882] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:31:45.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:31:45.335 [DEBUG] [Thread-163885] [transport.py] [_log()] starting thread (client mode): 0x2b96aef0
2025-09-29T18:31:45.335 [DEBUG] [Thread-163885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:31:45.349 [DEBUG] [Thread-163885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:31:45.349 [INFO] [Thread-163885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:31:45.357 [DEBUG] [Thread-163885] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:31:45.357 [DEBUG] [Thread-163885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:31:45.357 [DEBUG] [Thread-163885] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:31:45.357 [DEBUG] [Thread-163885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:31:45.357 [DEBUG] [Thread-163885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] client lang: <none>
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] server lang: <none>
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] kex follows: False
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] Compression: none
2025-09-29T18:31:45.358 [DEBUG] [Thread-163885] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:31:45.414 [DEBUG] [Thread-163885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:31:45.414 [DEBUG] [Thread-163885] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:31:45.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:31:45.415 [DEBUG] [Thread-163885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:31:45.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:31:45.474 [DEBUG] [Thread-163885] [transport.py] [_log()] userauth is OK
2025-09-29T18:31:45.474 [DEBUG] [Thread-163885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:31:45.474 [DEBUG] [Thread-163885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:31:45.474 [DEBUG] [Thread-163885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:31:45.474 [DEBUG] [Thread-163885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:31:45.493 [INFO] [Thread-163885] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:31:45.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:31:45.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:31:46.483 [DEBUG] [Thread-163885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:31:46.483 [DEBUG] [Thread-163885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:31:46.531 [DEBUG] [Thread-163885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:31:46.531 [DEBUG] [Thread-163885] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:31:46.540 [DEBUG] [Thread-163885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:31:46.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:31:46.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:31:46.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:31:46.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:31:46.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:31:46.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:31:46.574 [DEBUG] [Thread-163885] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:31:52.899 [DEBUG] [Thread-163887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:31:52.933 [DEBUG] [Thread-163888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:31:56.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:31:56.577 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:31:56.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:31:57.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 31, 29), 12.29, 42.89, 0.0, 22.09, 12.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:31:57.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:31:29
2025-09-29T18:31:57.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:31:57.444 [DEBUG] [Thread-163889] [transport.py] [_log()] starting thread (client mode): 0x2e38e800
2025-09-29T18:31:57.444 [DEBUG] [Thread-163889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:31:57.463 [DEBUG] [Thread-163889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:31:57.464 [INFO] [Thread-163889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:31:57.465 [DEBUG] [Thread-163889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:31:57.465 [DEBUG] [Thread-163889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:31:57.465 [DEBUG] [Thread-163889] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:31:57.465 [DEBUG] [Thread-163889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] client lang: <none>
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] server lang: <none>
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] kex follows: False
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] Compression: none
2025-09-29T18:31:57.466 [DEBUG] [Thread-163889] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:31:57.482 [DEBUG] [Thread-163889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:31:57.483 [DEBUG] [Thread-163889] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:31:57.483 [DEBUG] [Thread-163889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:31:57.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:31:57.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:31:57.485 [DEBUG] [Thread-163889] [transport.py] [_log()] userauth is OK
2025-09-29T18:31:57.485 [DEBUG] [Thread-163889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:31:57.485 [DEBUG] [Thread-163889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:31:57.485 [DEBUG] [Thread-163889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:31:57.485 [DEBUG] [Thread-163889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:31:57.509 [INFO] [Thread-163889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:31:57.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:31:58.157 [DEBUG] [Thread-163889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:31:58.158 [DEBUG] [Thread-163889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:31:58.158 [DEBUG] [Thread-163889] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:31:58.198 [DEBUG] [Thread-163889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:31:58.199 [DEBUG] [Thread-163889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:31:58.202 [DEBUG] [Thread-163889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:31:58.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:31:58.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:31:58.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:31:58.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:31:58.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:31:58.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:31:58.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:31:58.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:31:58.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:31:58.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.688258 -999.00  +12.50  14.41     48   +1.90 1 1 1 1 1   884    0 10.13 -19.81 ----- 14.4 14.4 154.6 21.1 14.2 -26.2 14.1 -25.3 14.3 -25.6 14.7 -26.8
2025-09-29T18:31:58.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:31:58.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:31:58.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.688258
2025-09-29T18:31:58.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:31:58.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:31:58.227 [DEBUG] [Thread-163889] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:31:58.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:31:58.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:31:58.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:31:58.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:31:29', tmtdew=12.29, humidity=42.89, cloud=0.0, wind=22.09, temperature=12.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:31:05.491', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:31:58.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:31:58.319 [DEBUG] [Thread-163892] [transport.py] [_log()] starting thread (client mode): 0x2b9f0d60
2025-09-29T18:31:58.319 [DEBUG] [Thread-163892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:31:58.335 [DEBUG] [Thread-163892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:31:58.335 [INFO] [Thread-163892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:31:58.342 [DEBUG] [Thread-163892] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:31:58.342 [DEBUG] [Thread-163892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:31:58.342 [DEBUG] [Thread-163892] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] client lang: <none>
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] server lang: <none>
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] kex follows: False
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] Compression: none
2025-09-29T18:31:58.343 [DEBUG] [Thread-163892] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:31:58.402 [DEBUG] [Thread-163892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:31:58.402 [DEBUG] [Thread-163892] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:31:58.403 [DEBUG] [Thread-163892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:31:58.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:31:58.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:31:58.459 [DEBUG] [Thread-163892] [transport.py] [_log()] userauth is OK
2025-09-29T18:31:58.460 [DEBUG] [Thread-163892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:31:58.460 [DEBUG] [Thread-163892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:31:58.460 [DEBUG] [Thread-163892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:31:58.460 [DEBUG] [Thread-163892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:31:58.479 [INFO] [Thread-163892] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:31:58.479 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:31:58.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:31:59.462 [DEBUG] [Thread-163892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:31:59.462 [DEBUG] [Thread-163892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:31:59.510 [DEBUG] [Thread-163892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:31:59.510 [DEBUG] [Thread-163892] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:31:59.519 [DEBUG] [Thread-163892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:31:59.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:31:59.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:31:59.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:31:59.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:31:59.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:31:59.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:31:59.554 [DEBUG] [Thread-163892] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:07.934 [DEBUG] [Thread-163894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:32:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:32:09.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:32:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:32:10.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 32, 1), 12.29, 42.85, 0.0, 23.15, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:32:10.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:32:01
2025-09-29T18:32:10.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:32:10.446 [DEBUG] [Thread-163895] [transport.py] [_log()] starting thread (client mode): 0x2b9ced10
2025-09-29T18:32:10.447 [DEBUG] [Thread-163895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:32:10.467 [DEBUG] [Thread-163895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:32:10.467 [INFO] [Thread-163895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] client lang: <none>
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] server lang: <none>
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] kex follows: False
2025-09-29T18:32:10.471 [DEBUG] [Thread-163895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:32:10.472 [DEBUG] [Thread-163895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:32:10.472 [DEBUG] [Thread-163895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:32:10.472 [DEBUG] [Thread-163895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:32:10.472 [DEBUG] [Thread-163895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:32:10.472 [DEBUG] [Thread-163895] [transport.py] [_log()] Compression: none
2025-09-29T18:32:10.472 [DEBUG] [Thread-163895] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:32:10.492 [DEBUG] [Thread-163895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:32:10.492 [DEBUG] [Thread-163895] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:32:10.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:32:10.493 [DEBUG] [Thread-163895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:32:10.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:32:10.495 [DEBUG] [Thread-163895] [transport.py] [_log()] userauth is OK
2025-09-29T18:32:10.495 [DEBUG] [Thread-163895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:32:10.495 [DEBUG] [Thread-163895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:32:10.495 [DEBUG] [Thread-163895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:32:10.495 [DEBUG] [Thread-163895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:32:10.516 [INFO] [Thread-163895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:32:10.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:32:11.197 [DEBUG] [Thread-163895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:32:11.197 [DEBUG] [Thread-163895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:32:11.197 [DEBUG] [Thread-163895] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:32:11.238 [DEBUG] [Thread-163895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:32:11.238 [DEBUG] [Thread-163895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:32:11.241 [DEBUG] [Thread-163895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:32:11.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:32:11.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:32:11.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:32:11.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:32:11.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:32:11.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:32:11.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:32:11.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:32:11.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:32:11.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.688606 -999.00  +12.50  14.21     48   +1.90 1 1 1 1 1   884    0 10.15 -21.72 ----- 14.2 14.2 169.6 20.1 14.1 -26.3 14.1 -25.5 14.3 -25.5 14.7 -26.5
2025-09-29T18:32:11.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:32:11.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:32:11.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.688606
2025-09-29T18:32:11.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:32:11.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:32:11.267 [DEBUG] [Thread-163895] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:11.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:32:11.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:32:11.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:32:11.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:32:01', tmtdew=12.29, humidity=42.85, cloud=0.0, wind=23.15, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:31:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:32:11.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:32:11.361 [DEBUG] [Thread-163898] [transport.py] [_log()] starting thread (client mode): 0x2b968cd0
2025-09-29T18:32:11.361 [DEBUG] [Thread-163898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:32:11.377 [DEBUG] [Thread-163898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:32:11.377 [INFO] [Thread-163898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] client lang: <none>
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] server lang: <none>
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] kex follows: False
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] Compression: none
2025-09-29T18:32:11.385 [DEBUG] [Thread-163898] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:32:11.446 [DEBUG] [Thread-163898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:32:11.447 [DEBUG] [Thread-163898] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:32:11.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:32:11.448 [DEBUG] [Thread-163898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:32:11.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:32:11.505 [DEBUG] [Thread-163898] [transport.py] [_log()] userauth is OK
2025-09-29T18:32:11.505 [DEBUG] [Thread-163898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:32:11.505 [DEBUG] [Thread-163898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:32:11.506 [DEBUG] [Thread-163898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:32:11.506 [DEBUG] [Thread-163898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:32:11.525 [INFO] [Thread-163898] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:32:11.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:32:11.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:32:12.503 [DEBUG] [Thread-163898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:32:12.503 [DEBUG] [Thread-163898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:32:12.551 [DEBUG] [Thread-163898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:32:12.551 [DEBUG] [Thread-163898] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:32:12.560 [DEBUG] [Thread-163898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:32:12.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:32:12.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:32:12.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:32:12.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:32:12.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:32:12.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:32:12.593 [DEBUG] [Thread-163898] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:22.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:32:22.596 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:32:22.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:32:22.960 [DEBUG] [Thread-163900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:32:23.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 32, 1), 12.29, 42.85, 0.0, 23.15, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:32:23.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:32:01
2025-09-29T18:32:23.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:32:23.467 [DEBUG] [Thread-163901] [transport.py] [_log()] starting thread (client mode): 0x2e3dc4f0
2025-09-29T18:32:23.467 [DEBUG] [Thread-163901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:32:23.487 [DEBUG] [Thread-163901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:32:23.487 [INFO] [Thread-163901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] client lang: <none>
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] server lang: <none>
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] kex follows: False
2025-09-29T18:32:23.490 [DEBUG] [Thread-163901] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:32:23.491 [DEBUG] [Thread-163901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:32:23.491 [DEBUG] [Thread-163901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:32:23.491 [DEBUG] [Thread-163901] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:32:23.491 [DEBUG] [Thread-163901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:32:23.491 [DEBUG] [Thread-163901] [transport.py] [_log()] Compression: none
2025-09-29T18:32:23.491 [DEBUG] [Thread-163901] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:32:23.507 [DEBUG] [Thread-163901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:32:23.508 [DEBUG] [Thread-163901] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:32:23.508 [DEBUG] [Thread-163901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:32:23.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:32:23.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:32:23.510 [DEBUG] [Thread-163901] [transport.py] [_log()] userauth is OK
2025-09-29T18:32:23.510 [DEBUG] [Thread-163901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:32:23.510 [DEBUG] [Thread-163901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:32:23.510 [DEBUG] [Thread-163901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:32:23.510 [DEBUG] [Thread-163901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:32:23.536 [INFO] [Thread-163901] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:32:23.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:32:24.205 [DEBUG] [Thread-163901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:32:24.205 [DEBUG] [Thread-163901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:32:24.205 [DEBUG] [Thread-163901] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:32:24.246 [DEBUG] [Thread-163901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:32:24.246 [DEBUG] [Thread-163901] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:32:24.249 [DEBUG] [Thread-163901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:32:24.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:32:24.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:32:24.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:32:24.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:32:24.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:32:24.273 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:32:24.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:32:24.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:32:24.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:32:24.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.688606 -999.00  +12.50  14.21     48   +1.90 1 1 1 1 1   884    0 10.15 -21.72 ----- 14.2 14.2 169.6 20.1 14.1 -26.3 14.1 -25.5 14.3 -25.5 14.7 -26.5
2025-09-29T18:32:24.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:32:24.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:32:24.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.688606
2025-09-29T18:32:24.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:32:24.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:32:24.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:32:24.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:32:24.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:32:24.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:32:01', tmtdew=12.29, humidity=42.85, cloud=0.0, wind=23.15, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:31:35.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:32:24.275 [DEBUG] [Thread-163901] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:24.359 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:32:24.369 [DEBUG] [Thread-163904] [transport.py] [_log()] starting thread (client mode): 0x2b974ca0
2025-09-29T18:32:24.369 [DEBUG] [Thread-163904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:32:24.383 [DEBUG] [Thread-163904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:32:24.383 [INFO] [Thread-163904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] client lang: <none>
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] server lang: <none>
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] kex follows: False
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:32:24.391 [DEBUG] [Thread-163904] [transport.py] [_log()] Compression: none
2025-09-29T18:32:24.392 [DEBUG] [Thread-163904] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:32:24.452 [DEBUG] [Thread-163904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:32:24.452 [DEBUG] [Thread-163904] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:32:24.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:32:24.453 [DEBUG] [Thread-163904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:32:24.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:32:24.509 [DEBUG] [Thread-163904] [transport.py] [_log()] userauth is OK
2025-09-29T18:32:24.509 [DEBUG] [Thread-163904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:32:24.509 [DEBUG] [Thread-163904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:32:24.509 [DEBUG] [Thread-163904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:32:24.510 [DEBUG] [Thread-163904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:32:24.529 [INFO] [Thread-163904] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:32:24.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:32:24.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:32:25.504 [DEBUG] [Thread-163904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:32:25.504 [DEBUG] [Thread-163904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:32:25.552 [DEBUG] [Thread-163904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:32:25.552 [DEBUG] [Thread-163904] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:32:25.561 [DEBUG] [Thread-163904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:32:25.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:32:25.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:32:25.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:32:25.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:32:25.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:32:25.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:32:25.596 [DEBUG] [Thread-163904] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:35.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:32:35.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:32:35.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:32:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 32, 33), 12.34, 42.85, 0.0, 22.18, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:32:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:32:33
2025-09-29T18:32:36.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:32:36.450 [DEBUG] [Thread-163906] [transport.py] [_log()] starting thread (client mode): 0x2b9776d0
2025-09-29T18:32:36.450 [DEBUG] [Thread-163906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:32:36.470 [DEBUG] [Thread-163906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:32:36.471 [INFO] [Thread-163906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:32:36.473 [DEBUG] [Thread-163906] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:32:36.473 [DEBUG] [Thread-163906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] client lang: <none>
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] server lang: <none>
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] kex follows: False
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] Compression: none
2025-09-29T18:32:36.474 [DEBUG] [Thread-163906] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:32:36.496 [DEBUG] [Thread-163906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:32:36.496 [DEBUG] [Thread-163906] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:32:36.496 [DEBUG] [Thread-163906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:32:36.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:32:36.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:32:36.498 [DEBUG] [Thread-163906] [transport.py] [_log()] userauth is OK
2025-09-29T18:32:36.498 [DEBUG] [Thread-163906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:32:36.498 [DEBUG] [Thread-163906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:32:36.498 [DEBUG] [Thread-163906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:32:36.498 [DEBUG] [Thread-163906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:32:36.518 [INFO] [Thread-163906] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:32:36.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:32:37.194 [DEBUG] [Thread-163906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:32:37.195 [DEBUG] [Thread-163906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:32:37.195 [DEBUG] [Thread-163906] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:32:37.235 [DEBUG] [Thread-163906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:32:37.235 [DEBUG] [Thread-163906] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:32:37.238 [DEBUG] [Thread-163906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:32:37.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:32:37.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:32:37.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:32:37.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:32:37.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:32:37.262 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:32:37.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:32:37.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:32:37.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:32:37.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.688953 -999.00  +12.50  12.75     48   +1.90 1 1 1 1 1   883    0 10.22 -22.65 ----- 12.8 12.8 153.3 19.2 14.1 -26.1 14.0 -25.4 14.2 -25.7 14.7 -26.7
2025-09-29T18:32:37.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:32:37.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:32:37.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.688953
2025-09-29T18:32:37.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:32:37.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:32:37.264 [DEBUG] [Thread-163906] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:37.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:32:37.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:32:37.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:32:37.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:32:33', tmtdew=12.34, humidity=42.85, cloud=0.0, wind=22.18, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:32:05.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:32:37.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:32:37.446 [DEBUG] [Thread-163909] [transport.py] [_log()] starting thread (client mode): 0x2b976bf0
2025-09-29T18:32:37.446 [DEBUG] [Thread-163909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:32:37.460 [DEBUG] [Thread-163909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:32:37.460 [INFO] [Thread-163909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:32:37.467 [DEBUG] [Thread-163909] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] client lang: <none>
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] server lang: <none>
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] kex follows: False
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:32:37.468 [DEBUG] [Thread-163909] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:32:37.469 [DEBUG] [Thread-163909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:32:37.469 [DEBUG] [Thread-163909] [transport.py] [_log()] Compression: none
2025-09-29T18:32:37.469 [DEBUG] [Thread-163909] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:32:37.524 [DEBUG] [Thread-163909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:32:37.525 [DEBUG] [Thread-163909] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:32:37.525 [DEBUG] [Thread-163909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:32:37.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:32:37.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:32:37.581 [DEBUG] [Thread-163909] [transport.py] [_log()] userauth is OK
2025-09-29T18:32:37.581 [DEBUG] [Thread-163909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:32:37.581 [DEBUG] [Thread-163909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:32:37.581 [DEBUG] [Thread-163909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:32:37.581 [DEBUG] [Thread-163909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:32:37.601 [INFO] [Thread-163909] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:32:37.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:32:37.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:32:37.997 [DEBUG] [Thread-163911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:32:38.589 [DEBUG] [Thread-163909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:32:38.595 [DEBUG] [Thread-163909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:32:38.637 [DEBUG] [Thread-163909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:32:38.637 [DEBUG] [Thread-163909] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:32:38.646 [DEBUG] [Thread-163909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:32:38.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:32:38.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:32:38.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:32:38.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:32:38.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:32:38.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:32:38.680 [DEBUG] [Thread-163909] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:38.847 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:32:38.848 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:32:48.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:32:48.683 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:32:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:32:49.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 32, 33), 12.34, 42.85, 0.0, 22.18, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:32:49.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:32:33
2025-09-29T18:32:49.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:32:49.536 [DEBUG] [Thread-163912] [transport.py] [_log()] starting thread (client mode): 0x2e3def20
2025-09-29T18:32:49.536 [DEBUG] [Thread-163912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:32:49.556 [DEBUG] [Thread-163912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:32:49.557 [INFO] [Thread-163912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:32:49.560 [DEBUG] [Thread-163912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] client lang: <none>
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] server lang: <none>
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] kex follows: False
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] Compression: none
2025-09-29T18:32:49.561 [DEBUG] [Thread-163912] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:32:49.578 [DEBUG] [Thread-163912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:32:49.579 [DEBUG] [Thread-163912] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:32:49.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:32:49.580 [DEBUG] [Thread-163912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:32:49.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:32:49.581 [DEBUG] [Thread-163912] [transport.py] [_log()] userauth is OK
2025-09-29T18:32:49.581 [DEBUG] [Thread-163912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:32:49.582 [DEBUG] [Thread-163912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:32:49.582 [DEBUG] [Thread-163912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:32:49.582 [DEBUG] [Thread-163912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:32:49.600 [INFO] [Thread-163912] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:32:49.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:32:50.262 [DEBUG] [Thread-163912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:32:50.262 [DEBUG] [Thread-163912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:32:50.262 [DEBUG] [Thread-163912] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:32:50.303 [DEBUG] [Thread-163912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:32:50.303 [DEBUG] [Thread-163912] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:32:50.306 [DEBUG] [Thread-163912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:32:50.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:32:50.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:32:50.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:32:50.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:32:50.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:32:50.329 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:32:50.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:32:50.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:32:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:32:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.688953 -999.00  +12.50  12.75     48   +1.90 1 1 1 1 1   883    0 10.22 -22.65 ----- 12.8 12.8 153.3 19.2 14.1 -26.1 14.0 -25.4 14.2 -25.7 14.7 -26.7
2025-09-29T18:32:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:32:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:32:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.688953
2025-09-29T18:32:50.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:32:50.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:32:50.332 [DEBUG] [Thread-163912] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:50.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:32:50.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:32:50.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:32:50.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:32:33', tmtdew=12.34, humidity=42.85, cloud=0.0, wind=22.18, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:32:05.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:32:50.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:32:50.424 [DEBUG] [Thread-163915] [transport.py] [_log()] starting thread (client mode): 0x2e3dd7b0
2025-09-29T18:32:50.424 [DEBUG] [Thread-163915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:32:50.441 [DEBUG] [Thread-163915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:32:50.441 [INFO] [Thread-163915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:32:50.448 [DEBUG] [Thread-163915] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] client lang: <none>
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] server lang: <none>
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] kex follows: False
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] Compression: none
2025-09-29T18:32:50.449 [DEBUG] [Thread-163915] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:32:50.512 [DEBUG] [Thread-163915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:32:50.512 [DEBUG] [Thread-163915] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:32:50.512 [DEBUG] [Thread-163915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:32:50.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:32:50.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:32:50.568 [DEBUG] [Thread-163915] [transport.py] [_log()] userauth is OK
2025-09-29T18:32:50.568 [DEBUG] [Thread-163915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:32:50.568 [DEBUG] [Thread-163915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:32:50.568 [DEBUG] [Thread-163915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:32:50.569 [DEBUG] [Thread-163915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:32:50.591 [INFO] [Thread-163915] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:32:50.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:32:50.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:32:51.579 [DEBUG] [Thread-163915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:32:51.579 [DEBUG] [Thread-163915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:32:51.627 [DEBUG] [Thread-163915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:32:51.627 [DEBUG] [Thread-163915] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:32:51.636 [DEBUG] [Thread-163915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:32:51.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:32:51.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:32:51.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:32:51.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:32:51.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:32:51.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:32:51.671 [DEBUG] [Thread-163915] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:32:52.985 [DEBUG] [Thread-163917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:32:53.038 [DEBUG] [Thread-163918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:33:01.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:33:01.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:33:01.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:33:02.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 32, 33), 12.34, 42.85, 0.0, 22.18, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:33:02.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:32:33
2025-09-29T18:33:02.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:33:02.531 [DEBUG] [Thread-163919] [transport.py] [_log()] starting thread (client mode): 0x2b976320
2025-09-29T18:33:02.531 [DEBUG] [Thread-163919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:02.551 [DEBUG] [Thread-163919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:33:02.551 [INFO] [Thread-163919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:33:02.554 [DEBUG] [Thread-163919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:02.554 [DEBUG] [Thread-163919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:33:02.554 [DEBUG] [Thread-163919] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:02.554 [DEBUG] [Thread-163919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:02.554 [DEBUG] [Thread-163919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:02.554 [DEBUG] [Thread-163919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] Compression: none
2025-09-29T18:33:02.555 [DEBUG] [Thread-163919] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:02.572 [DEBUG] [Thread-163919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:02.572 [DEBUG] [Thread-163919] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:02.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:33:02.573 [DEBUG] [Thread-163919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:33:02.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:02.575 [DEBUG] [Thread-163919] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:02.575 [DEBUG] [Thread-163919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:02.575 [DEBUG] [Thread-163919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:02.575 [DEBUG] [Thread-163919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:33:02.575 [DEBUG] [Thread-163919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:02.599 [INFO] [Thread-163919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:02.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:03.252 [DEBUG] [Thread-163919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:03.252 [DEBUG] [Thread-163919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:03.252 [DEBUG] [Thread-163919] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:33:03.293 [DEBUG] [Thread-163919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:03.293 [DEBUG] [Thread-163919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:03.295 [DEBUG] [Thread-163919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:03.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:03.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:33:03.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:33:03.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:33:03.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:03.316 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:33:03.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:03.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:03.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:33:03.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.688953 -999.00  +12.50  12.75     48   +1.90 1 1 1 1 1   883    0 10.22 -22.65 ----- 12.8 12.8 153.3 19.2 14.1 -26.1 14.0 -25.4 14.2 -25.7 14.7 -26.7
2025-09-29T18:33:03.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:33:03.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:33:03.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.688953
2025-09-29T18:33:03.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:33:03.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:33:03.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:33:03.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:33:03.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:33:03.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:32:33', tmtdew=12.34, humidity=42.85, cloud=0.0, wind=22.18, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:32:05.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:33:03.318 [DEBUG] [Thread-163919] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:03.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:33:03.411 [DEBUG] [Thread-163922] [transport.py] [_log()] starting thread (client mode): 0x2b9cccd0
2025-09-29T18:33:03.411 [DEBUG] [Thread-163922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:03.426 [DEBUG] [Thread-163922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:33:03.426 [INFO] [Thread-163922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:33:03.433 [DEBUG] [Thread-163922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] Compression: none
2025-09-29T18:33:03.434 [DEBUG] [Thread-163922] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:03.490 [DEBUG] [Thread-163922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:03.491 [DEBUG] [Thread-163922] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:03.491 [DEBUG] [Thread-163922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:33:03.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:33:03.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:03.548 [DEBUG] [Thread-163922] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:03.548 [DEBUG] [Thread-163922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:03.548 [DEBUG] [Thread-163922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:03.548 [DEBUG] [Thread-163922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:33:03.548 [DEBUG] [Thread-163922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:03.562 [INFO] [Thread-163922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:03.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:33:03.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:04.522 [DEBUG] [Thread-163922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:04.522 [DEBUG] [Thread-163922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:04.571 [DEBUG] [Thread-163922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:04.571 [DEBUG] [Thread-163922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:04.580 [DEBUG] [Thread-163922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:04.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:04.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:33:04.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:33:04.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:04.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:04.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:04.615 [DEBUG] [Thread-163922] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:08.067 [DEBUG] [Thread-163924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:33:14.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:33:14.618 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:33:14.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:33:15.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 33, 5), 12.35, 42.84, 0.0, 22.14, 12.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:33:15.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:33:05
2025-09-29T18:33:15.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:33:15.487 [DEBUG] [Thread-163925] [transport.py] [_log()] starting thread (client mode): 0x2e3df220
2025-09-29T18:33:15.487 [DEBUG] [Thread-163925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:15.508 [DEBUG] [Thread-163925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:33:15.508 [INFO] [Thread-163925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:33:15.511 [DEBUG] [Thread-163925] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:15.511 [DEBUG] [Thread-163925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:33:15.511 [DEBUG] [Thread-163925] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:15.511 [DEBUG] [Thread-163925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] Compression: none
2025-09-29T18:33:15.512 [DEBUG] [Thread-163925] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:15.530 [DEBUG] [Thread-163925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:15.530 [DEBUG] [Thread-163925] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:15.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:33:15.531 [DEBUG] [Thread-163925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:33:15.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:15.533 [DEBUG] [Thread-163925] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:15.533 [DEBUG] [Thread-163925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:15.533 [DEBUG] [Thread-163925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:15.533 [DEBUG] [Thread-163925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:33:15.533 [DEBUG] [Thread-163925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:15.558 [INFO] [Thread-163925] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:15.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:16.211 [DEBUG] [Thread-163925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:16.211 [DEBUG] [Thread-163925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:16.211 [DEBUG] [Thread-163925] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:33:16.252 [DEBUG] [Thread-163925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:16.252 [DEBUG] [Thread-163925] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:16.254 [DEBUG] [Thread-163925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:16.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:16.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:33:16.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:33:16.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:33:16.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:16.272 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:33:16.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:16.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:33:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.689300 -999.00  +12.40  11.40     48   +1.90 1 1 1 1 1   883    0 10.19 -21.30 ----- 11.4 11.4 146.9 20.3 14.1 -26.1 14.0 -25.1 14.2 -25.5 14.6 -26.5
2025-09-29T18:33:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:33:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:33:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.689300
2025-09-29T18:33:16.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:33:16.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:33:16.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:33:16.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:33:16.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:33:16.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:33:05', tmtdew=12.35, humidity=42.84, cloud=0.0, wind=22.14, temperature=12.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:32:35.520', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:33:16.273 [DEBUG] [Thread-163925] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:16.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:33:16.358 [DEBUG] [Thread-163928] [transport.py] [_log()] starting thread (client mode): 0x2e3f9f90
2025-09-29T18:33:16.358 [DEBUG] [Thread-163928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:16.373 [DEBUG] [Thread-163928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:33:16.373 [INFO] [Thread-163928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:16.381 [DEBUG] [Thread-163928] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:16.382 [DEBUG] [Thread-163928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:16.382 [DEBUG] [Thread-163928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:16.382 [DEBUG] [Thread-163928] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:16.382 [DEBUG] [Thread-163928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:16.382 [DEBUG] [Thread-163928] [transport.py] [_log()] Compression: none
2025-09-29T18:33:16.382 [DEBUG] [Thread-163928] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:16.443 [DEBUG] [Thread-163928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:16.444 [DEBUG] [Thread-163928] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:16.444 [DEBUG] [Thread-163928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:33:16.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:33:16.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:16.500 [DEBUG] [Thread-163928] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:16.500 [DEBUG] [Thread-163928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:16.500 [DEBUG] [Thread-163928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:16.500 [DEBUG] [Thread-163928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:33:16.500 [DEBUG] [Thread-163928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:16.523 [INFO] [Thread-163928] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:16.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:33:16.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:17.567 [DEBUG] [Thread-163928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:17.567 [DEBUG] [Thread-163928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:17.615 [DEBUG] [Thread-163928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:17.615 [DEBUG] [Thread-163928] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:17.624 [DEBUG] [Thread-163928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:17.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:17.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:33:17.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:33:17.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:17.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:17.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:17.665 [DEBUG] [Thread-163928] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:23.095 [DEBUG] [Thread-163930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:33:27.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:33:27.668 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:33:27.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:33:28.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 33, 5), 12.35, 42.84, 0.0, 22.14, 12.47, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:33:28.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:33:05
2025-09-29T18:33:28.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:33:28.524 [DEBUG] [Thread-163931] [transport.py] [_log()] starting thread (client mode): 0x2e3fb2b0
2025-09-29T18:33:28.525 [DEBUG] [Thread-163931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:28.545 [DEBUG] [Thread-163931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:33:28.545 [INFO] [Thread-163931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:33:28.548 [DEBUG] [Thread-163931] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:28.548 [DEBUG] [Thread-163931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:33:28.548 [DEBUG] [Thread-163931] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:28.548 [DEBUG] [Thread-163931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:28.548 [DEBUG] [Thread-163931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:28.548 [DEBUG] [Thread-163931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] Compression: none
2025-09-29T18:33:28.549 [DEBUG] [Thread-163931] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:28.560 [DEBUG] [Thread-163931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:28.561 [DEBUG] [Thread-163931] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:28.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:33:28.563 [DEBUG] [Thread-163931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:33:28.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:28.564 [DEBUG] [Thread-163931] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:28.565 [DEBUG] [Thread-163931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:28.565 [DEBUG] [Thread-163931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:28.565 [DEBUG] [Thread-163931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:33:28.565 [DEBUG] [Thread-163931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:28.584 [INFO] [Thread-163931] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:28.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:29.231 [DEBUG] [Thread-163931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:29.231 [DEBUG] [Thread-163931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:29.232 [DEBUG] [Thread-163931] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:33:29.272 [DEBUG] [Thread-163931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:29.272 [DEBUG] [Thread-163931] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:29.276 [DEBUG] [Thread-163931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:29.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:29.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:33:29.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:33:29.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:33:29.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:29.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:33:29.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:29.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:29.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:33:29.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.689300 -999.00  +12.40  11.40     48   +1.90 1 1 1 1 1   883    0 10.19 -21.30 ----- 11.4 11.4 146.9 20.3 14.1 -26.1 14.0 -25.1 14.2 -25.5 14.6 -26.5
2025-09-29T18:33:29.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:33:29.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:33:29.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.689300
2025-09-29T18:33:29.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:33:29.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:33:29.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:33:29.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:33:29.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:33:29.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:33:05', tmtdew=12.35, humidity=42.84, cloud=0.0, wind=22.14, temperature=12.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:32:35.520', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:33:29.303 [DEBUG] [Thread-163931] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:29.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:33:29.398 [DEBUG] [Thread-163934] [transport.py] [_log()] starting thread (client mode): 0x2b977070
2025-09-29T18:33:29.398 [DEBUG] [Thread-163934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:29.413 [DEBUG] [Thread-163934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:33:29.413 [INFO] [Thread-163934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:29.421 [DEBUG] [Thread-163934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:29.422 [DEBUG] [Thread-163934] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:29.422 [DEBUG] [Thread-163934] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:29.422 [DEBUG] [Thread-163934] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:29.422 [DEBUG] [Thread-163934] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:29.422 [DEBUG] [Thread-163934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:29.422 [DEBUG] [Thread-163934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:29.422 [DEBUG] [Thread-163934] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:29.422 [DEBUG] [Thread-163934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:29.423 [DEBUG] [Thread-163934] [transport.py] [_log()] Compression: none
2025-09-29T18:33:29.423 [DEBUG] [Thread-163934] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:29.480 [DEBUG] [Thread-163934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:29.481 [DEBUG] [Thread-163934] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:29.482 [DEBUG] [Thread-163934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:33:29.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:33:29.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:29.535 [DEBUG] [Thread-163934] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:29.536 [DEBUG] [Thread-163934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:29.536 [DEBUG] [Thread-163934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:29.536 [DEBUG] [Thread-163934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:33:29.536 [DEBUG] [Thread-163934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:29.560 [INFO] [Thread-163934] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:29.560 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:33:29.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:30.504 [DEBUG] [Thread-163934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:30.504 [DEBUG] [Thread-163934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:30.552 [DEBUG] [Thread-163934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:30.552 [DEBUG] [Thread-163934] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:30.561 [DEBUG] [Thread-163934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:30.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:30.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:33:30.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:33:30.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:30.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:30.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:30.595 [DEBUG] [Thread-163934] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:38.129 [DEBUG] [Thread-163936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:33:38.990 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:33:38.990 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:33:40.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:33:40.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:33:40.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:33:41.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 33, 37), 12.41, 42.81, 0.0, 22.48, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:33:41.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:33:37
2025-09-29T18:33:41.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:33:41.458 [DEBUG] [Thread-163937] [transport.py] [_log()] starting thread (client mode): 0x2b977790
2025-09-29T18:33:41.458 [DEBUG] [Thread-163937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:41.479 [DEBUG] [Thread-163937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:33:41.479 [INFO] [Thread-163937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] Compression: none
2025-09-29T18:33:41.482 [DEBUG] [Thread-163937] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:41.496 [DEBUG] [Thread-163937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:41.496 [DEBUG] [Thread-163937] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:41.497 [DEBUG] [Thread-163937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:33:41.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:33:41.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:41.497 [DEBUG] [Thread-163937] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:41.497 [DEBUG] [Thread-163937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:41.497 [DEBUG] [Thread-163937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:41.497 [DEBUG] [Thread-163937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:33:41.498 [DEBUG] [Thread-163937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:41.507 [INFO] [Thread-163937] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:41.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:42.137 [DEBUG] [Thread-163937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:42.138 [DEBUG] [Thread-163937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:42.138 [DEBUG] [Thread-163937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:33:42.179 [DEBUG] [Thread-163937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:42.179 [DEBUG] [Thread-163937] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:42.181 [DEBUG] [Thread-163937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:42.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:42.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:33:42.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:33:42.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:33:42.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:42.205 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:33:42.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:42.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:42.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:33:42.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.689994 -999.00  +12.40  16.53     48   +1.80 1 1 1 1 1   882    0 10.05 -22.76 ----- 16.5 16.5 161.6 20.2 14.0 -26.2 13.9 -25.2 14.1 -25.5 14.5 -26.6
2025-09-29T18:33:42.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:33:42.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:33:42.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.689994
2025-09-29T18:33:42.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:33:42.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:33:42.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:33:42.207 [DEBUG] [Thread-163937] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:42.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:33:42.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:33:42.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:33:37', tmtdew=12.41, humidity=42.81, cloud=0.0, wind=22.48, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:33:35.482', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:33:42.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:33:42.304 [DEBUG] [Thread-163940] [transport.py] [_log()] starting thread (client mode): 0x2b9690f0
2025-09-29T18:33:42.304 [DEBUG] [Thread-163940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:42.319 [DEBUG] [Thread-163940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:33:42.319 [INFO] [Thread-163940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:42.327 [DEBUG] [Thread-163940] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:42.328 [DEBUG] [Thread-163940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:42.328 [DEBUG] [Thread-163940] [transport.py] [_log()] Compression: none
2025-09-29T18:33:42.328 [DEBUG] [Thread-163940] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:42.390 [DEBUG] [Thread-163940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:42.391 [DEBUG] [Thread-163940] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:42.391 [DEBUG] [Thread-163940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:33:42.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:33:42.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:42.447 [DEBUG] [Thread-163940] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:42.448 [DEBUG] [Thread-163940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:42.448 [DEBUG] [Thread-163940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:42.448 [DEBUG] [Thread-163940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:33:42.448 [DEBUG] [Thread-163940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:42.468 [INFO] [Thread-163940] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:42.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:33:42.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:43.529 [DEBUG] [Thread-163940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:43.529 [DEBUG] [Thread-163940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:43.577 [DEBUG] [Thread-163940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:43.577 [DEBUG] [Thread-163940] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:43.586 [DEBUG] [Thread-163940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:43.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:43.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:33:43.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:33:43.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:43.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:43.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:43.621 [DEBUG] [Thread-163940] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:53.077 [DEBUG] [Thread-163942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:33:53.158 [DEBUG] [Thread-163943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:33:53.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:33:53.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:33:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:33:54.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 33, 37), 12.41, 42.81, 0.0, 22.48, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:33:54.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:33:37
2025-09-29T18:33:54.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:33:54.484 [DEBUG] [Thread-163944] [transport.py] [_log()] starting thread (client mode): 0x2e38e920
2025-09-29T18:33:54.484 [DEBUG] [Thread-163944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:54.504 [DEBUG] [Thread-163944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:33:54.504 [INFO] [Thread-163944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:54.507 [DEBUG] [Thread-163944] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:54.508 [DEBUG] [Thread-163944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:54.508 [DEBUG] [Thread-163944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:54.508 [DEBUG] [Thread-163944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:54.508 [DEBUG] [Thread-163944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:54.508 [DEBUG] [Thread-163944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:54.508 [DEBUG] [Thread-163944] [transport.py] [_log()] Compression: none
2025-09-29T18:33:54.508 [DEBUG] [Thread-163944] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:54.524 [DEBUG] [Thread-163944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:54.524 [DEBUG] [Thread-163944] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:54.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:33:54.525 [DEBUG] [Thread-163944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:33:54.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:54.527 [DEBUG] [Thread-163944] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:54.527 [DEBUG] [Thread-163944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:54.527 [DEBUG] [Thread-163944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:54.528 [DEBUG] [Thread-163944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:33:54.528 [DEBUG] [Thread-163944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:54.571 [INFO] [Thread-163944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:54.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:55.247 [DEBUG] [Thread-163944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:55.247 [DEBUG] [Thread-163944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:55.247 [DEBUG] [Thread-163944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:33:55.288 [DEBUG] [Thread-163944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:55.288 [DEBUG] [Thread-163944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:55.291 [DEBUG] [Thread-163944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:55.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:55.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:33:55.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:33:55.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:33:55.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:55.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:33:55.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:55.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:55.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:33:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.689994 -999.00  +12.40  16.53     48   +1.80 1 1 1 1 1   882    0 10.05 -22.76 ----- 16.5 16.5 161.6 20.2 14.0 -26.2 13.9 -25.2 14.1 -25.5 14.5 -26.6
2025-09-29T18:33:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:33:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:33:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.689994
2025-09-29T18:33:55.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:33:55.317 [DEBUG] [Thread-163944] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:33:55.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:33:55.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:33:55.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:33:55.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:33:55.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:33:37', tmtdew=12.41, humidity=42.81, cloud=0.0, wind=22.48, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:33:35.482', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:33:55.403 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:33:55.412 [DEBUG] [Thread-163947] [transport.py] [_log()] starting thread (client mode): 0x2e3df970
2025-09-29T18:33:55.412 [DEBUG] [Thread-163947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:33:55.426 [DEBUG] [Thread-163947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:33:55.426 [INFO] [Thread-163947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:33:55.434 [DEBUG] [Thread-163947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:33:55.434 [DEBUG] [Thread-163947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] client lang: <none>
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] server lang: <none>
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] kex follows: False
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] Compression: none
2025-09-29T18:33:55.435 [DEBUG] [Thread-163947] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:33:55.491 [DEBUG] [Thread-163947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:33:55.491 [DEBUG] [Thread-163947] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:33:55.492 [DEBUG] [Thread-163947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:33:55.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:33:55.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:33:55.547 [DEBUG] [Thread-163947] [transport.py] [_log()] userauth is OK
2025-09-29T18:33:55.547 [DEBUG] [Thread-163947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:33:55.547 [DEBUG] [Thread-163947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:33:55.547 [DEBUG] [Thread-163947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:33:55.547 [DEBUG] [Thread-163947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:33:55.567 [INFO] [Thread-163947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:33:55.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:33:55.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:33:56.570 [DEBUG] [Thread-163947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:33:56.570 [DEBUG] [Thread-163947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:33:56.618 [DEBUG] [Thread-163947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:33:56.618 [DEBUG] [Thread-163947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:33:56.627 [DEBUG] [Thread-163947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:33:56.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:33:56.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:33:56.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:33:56.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:33:56.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:33:56.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:33:56.663 [DEBUG] [Thread-163947] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:06.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:34:06.665 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:34:06.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:34:07.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 33, 37), 12.41, 42.81, 0.0, 22.48, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:34:07.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:33:37
2025-09-29T18:34:07.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:34:07.509 [DEBUG] [Thread-163949] [transport.py] [_log()] starting thread (client mode): 0x2b9757e0
2025-09-29T18:34:07.509 [DEBUG] [Thread-163949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:07.530 [DEBUG] [Thread-163949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:34:07.530 [INFO] [Thread-163949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:34:07.533 [DEBUG] [Thread-163949] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:07.533 [DEBUG] [Thread-163949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:34:07.533 [DEBUG] [Thread-163949] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:07.533 [DEBUG] [Thread-163949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:07.533 [DEBUG] [Thread-163949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:07.533 [DEBUG] [Thread-163949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:07.533 [DEBUG] [Thread-163949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:07.533 [DEBUG] [Thread-163949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] Compression: none
2025-09-29T18:34:07.534 [DEBUG] [Thread-163949] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:07.549 [DEBUG] [Thread-163949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:07.549 [DEBUG] [Thread-163949] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:07.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:34:07.551 [DEBUG] [Thread-163949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:34:07.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:07.553 [DEBUG] [Thread-163949] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:07.553 [DEBUG] [Thread-163949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:07.553 [DEBUG] [Thread-163949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:07.554 [DEBUG] [Thread-163949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:34:07.554 [DEBUG] [Thread-163949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:07.583 [INFO] [Thread-163949] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:07.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:34:08.202 [DEBUG] [Thread-163951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:34:08.251 [DEBUG] [Thread-163949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:34:08.251 [DEBUG] [Thread-163949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:34:08.252 [DEBUG] [Thread-163949] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:34:08.292 [DEBUG] [Thread-163949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:34:08.293 [DEBUG] [Thread-163949] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:34:08.295 [DEBUG] [Thread-163949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:34:08.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:34:08.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:34:08.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:34:08.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:34:08.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:34:08.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:34:08.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:34:08.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:34:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:34:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.689994 -999.00  +12.40  16.53     48   +1.80 1 1 1 1 1   882    0 10.05 -22.76 ----- 16.5 16.5 161.6 20.2 14.0 -26.2 13.9 -25.2 14.1 -25.5 14.5 -26.6
2025-09-29T18:34:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:34:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:34:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.689994
2025-09-29T18:34:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:34:08.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:34:08.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:34:08.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:34:08.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:34:08.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:33:37', tmtdew=12.41, humidity=42.81, cloud=0.0, wind=22.48, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:33:35.482', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:34:08.320 [DEBUG] [Thread-163949] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:08.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:34:08.415 [DEBUG] [Thread-163953] [transport.py] [_log()] starting thread (client mode): 0x2e360460
2025-09-29T18:34:08.416 [DEBUG] [Thread-163953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:08.430 [DEBUG] [Thread-163953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:34:08.431 [INFO] [Thread-163953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:34:08.438 [DEBUG] [Thread-163953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:08.438 [DEBUG] [Thread-163953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:08.439 [DEBUG] [Thread-163953] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:08.440 [DEBUG] [Thread-163953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:08.440 [DEBUG] [Thread-163953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:08.440 [DEBUG] [Thread-163953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:08.440 [DEBUG] [Thread-163953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:08.440 [DEBUG] [Thread-163953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:08.440 [DEBUG] [Thread-163953] [transport.py] [_log()] Compression: none
2025-09-29T18:34:08.440 [DEBUG] [Thread-163953] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:08.497 [DEBUG] [Thread-163953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:08.498 [DEBUG] [Thread-163953] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:08.498 [DEBUG] [Thread-163953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:34:08.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:34:08.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:08.559 [DEBUG] [Thread-163953] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:08.559 [DEBUG] [Thread-163953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:08.559 [DEBUG] [Thread-163953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:08.559 [DEBUG] [Thread-163953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:34:08.559 [DEBUG] [Thread-163953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:08.579 [INFO] [Thread-163953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:08.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:34:08.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:34:09.584 [DEBUG] [Thread-163953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:34:09.585 [DEBUG] [Thread-163953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:34:09.633 [DEBUG] [Thread-163953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:34:09.633 [DEBUG] [Thread-163953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:34:09.641 [DEBUG] [Thread-163953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:34:09.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:34:09.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:34:09.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:34:09.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:34:09.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:34:09.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:34:09.673 [DEBUG] [Thread-163953] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:19.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:34:19.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:34:19.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:34:20.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 34, 8), 12.41, 42.79, 0.0, 20.59, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:34:20.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:34:08
2025-09-29T18:34:20.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:34:20.546 [DEBUG] [Thread-163955] [transport.py] [_log()] starting thread (client mode): 0x2b9f1870
2025-09-29T18:34:20.546 [DEBUG] [Thread-163955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:20.564 [DEBUG] [Thread-163955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:34:20.564 [INFO] [Thread-163955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] Compression: none
2025-09-29T18:34:20.567 [DEBUG] [Thread-163955] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:20.587 [DEBUG] [Thread-163955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:20.588 [DEBUG] [Thread-163955] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:20.588 [DEBUG] [Thread-163955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:34:20.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:34:20.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:20.590 [DEBUG] [Thread-163955] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:20.590 [DEBUG] [Thread-163955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:20.590 [DEBUG] [Thread-163955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:20.591 [DEBUG] [Thread-163955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:34:20.591 [DEBUG] [Thread-163955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:20.614 [INFO] [Thread-163955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:20.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:34:21.273 [DEBUG] [Thread-163955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:34:21.273 [DEBUG] [Thread-163955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:34:21.273 [DEBUG] [Thread-163955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:34:21.314 [DEBUG] [Thread-163955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:34:21.314 [DEBUG] [Thread-163955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:34:21.318 [DEBUG] [Thread-163955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:34:21.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:34:21.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:34:21.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:34:21.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:34:21.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:34:21.340 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:34:21.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:34:21.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:34:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:34:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.690342 -999.00  +12.40  16.93     48   +1.80 1 1 1 1 1   881    0 10.09 -21.80 ----- 16.9 16.9 159.8 26.0 14.0 -26.1 13.9 -25.5 14.1 -25.5 14.4 -26.7
2025-09-29T18:34:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:34:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:34:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.690342
2025-09-29T18:34:21.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:34:21.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:34:21.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:34:21.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:34:21.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:34:21.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:34:08', tmtdew=12.41, humidity=42.79, cloud=0.0, wind=20.59, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:34:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:34:21.343 [DEBUG] [Thread-163955] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:21.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:34:21.437 [DEBUG] [Thread-163958] [transport.py] [_log()] starting thread (client mode): 0x2e38f490
2025-09-29T18:34:21.437 [DEBUG] [Thread-163958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:21.453 [DEBUG] [Thread-163958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:34:21.453 [INFO] [Thread-163958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:34:21.460 [DEBUG] [Thread-163958] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:21.460 [DEBUG] [Thread-163958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:21.461 [DEBUG] [Thread-163958] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:21.462 [DEBUG] [Thread-163958] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:21.462 [DEBUG] [Thread-163958] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:21.462 [DEBUG] [Thread-163958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:21.462 [DEBUG] [Thread-163958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:21.462 [DEBUG] [Thread-163958] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:21.462 [DEBUG] [Thread-163958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:21.462 [DEBUG] [Thread-163958] [transport.py] [_log()] Compression: none
2025-09-29T18:34:21.462 [DEBUG] [Thread-163958] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:21.518 [DEBUG] [Thread-163958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:21.518 [DEBUG] [Thread-163958] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:21.519 [DEBUG] [Thread-163958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:34:21.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:34:21.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:21.575 [DEBUG] [Thread-163958] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:21.575 [DEBUG] [Thread-163958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:21.575 [DEBUG] [Thread-163958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:21.575 [DEBUG] [Thread-163958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:34:21.575 [DEBUG] [Thread-163958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:21.596 [INFO] [Thread-163958] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:21.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:34:21.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:34:22.632 [DEBUG] [Thread-163958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:34:22.632 [DEBUG] [Thread-163958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:34:22.680 [DEBUG] [Thread-163958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:34:22.681 [DEBUG] [Thread-163958] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:34:22.689 [DEBUG] [Thread-163958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:34:22.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:34:22.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:34:22.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:34:22.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:34:22.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:34:22.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:34:22.725 [DEBUG] [Thread-163958] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:23.232 [DEBUG] [Thread-163960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:34:32.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:34:32.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:34:32.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:34:33.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 34, 8), 12.41, 42.79, 0.0, 20.59, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:34:33.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:34:08
2025-09-29T18:34:33.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:34:33.591 [DEBUG] [Thread-163961] [transport.py] [_log()] starting thread (client mode): 0x2b9f00d0
2025-09-29T18:34:33.591 [DEBUG] [Thread-163961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:33.612 [DEBUG] [Thread-163961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:34:33.612 [INFO] [Thread-163961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:34:33.615 [DEBUG] [Thread-163961] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:33.615 [DEBUG] [Thread-163961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:34:33.615 [DEBUG] [Thread-163961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] Compression: none
2025-09-29T18:34:33.616 [DEBUG] [Thread-163961] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:33.633 [DEBUG] [Thread-163961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:33.633 [DEBUG] [Thread-163961] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:33.634 [DEBUG] [Thread-163961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:34:33.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:34:33.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:33.636 [DEBUG] [Thread-163961] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:33.636 [DEBUG] [Thread-163961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:33.636 [DEBUG] [Thread-163961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:33.636 [DEBUG] [Thread-163961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:34:33.636 [DEBUG] [Thread-163961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:33.660 [INFO] [Thread-163961] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:33.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:34:34.316 [DEBUG] [Thread-163961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:34:34.316 [DEBUG] [Thread-163961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:34:34.316 [DEBUG] [Thread-163961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:34:34.357 [DEBUG] [Thread-163961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:34:34.358 [DEBUG] [Thread-163961] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:34:34.361 [DEBUG] [Thread-163961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:34:34.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:34:34.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:34:34.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:34:34.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:34:34.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:34:34.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:34:34.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:34:34.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:34:34.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:34:34.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.690342 -999.00  +12.40  16.93     48   +1.80 1 1 1 1 1   881    0 10.09 -21.80 ----- 16.9 16.9 159.8 26.0 14.0 -26.1 13.9 -25.5 14.1 -25.5 14.4 -26.7
2025-09-29T18:34:34.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:34:34.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:34:34.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.690342
2025-09-29T18:34:34.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:34:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:34:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:34:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:34:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:34:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:34:08', tmtdew=12.41, humidity=42.79, cloud=0.0, wind=20.59, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:34:05.549', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:34:34.386 [DEBUG] [Thread-163961] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:34.471 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:34:34.481 [DEBUG] [Thread-163964] [transport.py] [_log()] starting thread (client mode): 0x2b923af0
2025-09-29T18:34:34.482 [DEBUG] [Thread-163964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:34.496 [DEBUG] [Thread-163964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:34:34.496 [INFO] [Thread-163964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:34:34.503 [DEBUG] [Thread-163964] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:34.504 [DEBUG] [Thread-163964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:34:34.504 [DEBUG] [Thread-163964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:34.504 [DEBUG] [Thread-163964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:34.504 [DEBUG] [Thread-163964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:34.504 [DEBUG] [Thread-163964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] Compression: none
2025-09-29T18:34:34.505 [DEBUG] [Thread-163964] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:34.561 [DEBUG] [Thread-163964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:34.562 [DEBUG] [Thread-163964] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:34.562 [DEBUG] [Thread-163964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:34:34.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:34:34.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:34.618 [DEBUG] [Thread-163964] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:34.618 [DEBUG] [Thread-163964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:34.618 [DEBUG] [Thread-163964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:34.618 [DEBUG] [Thread-163964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:34:34.618 [DEBUG] [Thread-163964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:34.637 [INFO] [Thread-163964] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:34.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:34:34.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:34:35.627 [DEBUG] [Thread-163964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:34:35.628 [DEBUG] [Thread-163964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:34:35.675 [DEBUG] [Thread-163964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:34:35.675 [DEBUG] [Thread-163964] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:34:35.684 [DEBUG] [Thread-163964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:34:35.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:34:35.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:34:35.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:34:35.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:34:35.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:34:35.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:34:35.718 [DEBUG] [Thread-163964] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:38.273 [DEBUG] [Thread-163966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:34:39.133 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:34:39.134 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:34:45.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:34:45.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:34:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:34:46.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 34, 40), 12.42, 42.27, 0.0, 21.58, 12.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:34:46.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:34:40
2025-09-29T18:34:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:34:46.567 [DEBUG] [Thread-163967] [transport.py] [_log()] starting thread (client mode): 0x2b977eb0
2025-09-29T18:34:46.567 [DEBUG] [Thread-163967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:46.586 [DEBUG] [Thread-163967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:34:46.586 [INFO] [Thread-163967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] Compression: none
2025-09-29T18:34:46.589 [DEBUG] [Thread-163967] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:46.611 [DEBUG] [Thread-163967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:46.612 [DEBUG] [Thread-163967] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:46.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:34:46.613 [DEBUG] [Thread-163967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:34:46.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:46.614 [DEBUG] [Thread-163967] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:46.615 [DEBUG] [Thread-163967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:46.615 [DEBUG] [Thread-163967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:46.615 [DEBUG] [Thread-163967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:34:46.615 [DEBUG] [Thread-163967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:46.650 [INFO] [Thread-163967] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:46.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:34:47.242 [DEBUG] [Thread-163967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:34:47.242 [DEBUG] [Thread-163967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:34:47.242 [DEBUG] [Thread-163967] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:34:47.283 [DEBUG] [Thread-163967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:34:47.283 [DEBUG] [Thread-163967] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:34:47.288 [DEBUG] [Thread-163967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:34:47.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:34:47.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:34:47.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:34:47.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:34:47.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:34:47.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:34:47.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:34:47.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:34:47.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:34:47.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.690689 -999.00  +12.40  11.40     48   +1.80 1 1 1 1 1   880    0 10.11 -21.22 ----- 11.4 11.4 155.9 15.4 13.9 -26.1 13.8 -25.4 14.1 -25.3 14.4 -26.2
2025-09-29T18:34:47.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:34:47.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:34:47.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.690689
2025-09-29T18:34:47.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:34:47.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:34:47.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:34:47.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:34:47.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:34:47.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:34:40', tmtdew=12.42, humidity=42.27, cloud=0.0, wind=21.58, temperature=12.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:34:35.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:34:47.306 [DEBUG] [Thread-163967] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:47.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:34:47.402 [DEBUG] [Thread-163970] [transport.py] [_log()] starting thread (client mode): 0x2b9f1750
2025-09-29T18:34:47.402 [DEBUG] [Thread-163970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:47.418 [DEBUG] [Thread-163970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:34:47.418 [INFO] [Thread-163970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:34:47.425 [DEBUG] [Thread-163970] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:47.426 [DEBUG] [Thread-163970] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:47.427 [DEBUG] [Thread-163970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:47.427 [DEBUG] [Thread-163970] [transport.py] [_log()] Compression: none
2025-09-29T18:34:47.427 [DEBUG] [Thread-163970] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:47.484 [DEBUG] [Thread-163970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:47.484 [DEBUG] [Thread-163970] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:47.484 [DEBUG] [Thread-163970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:34:47.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:34:47.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:47.541 [DEBUG] [Thread-163970] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:47.541 [DEBUG] [Thread-163970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:47.542 [DEBUG] [Thread-163970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:47.542 [DEBUG] [Thread-163970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:34:47.542 [DEBUG] [Thread-163970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:47.559 [INFO] [Thread-163970] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:47.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:34:47.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:34:48.548 [DEBUG] [Thread-163970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:34:48.549 [DEBUG] [Thread-163970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:34:48.596 [DEBUG] [Thread-163970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:34:48.596 [DEBUG] [Thread-163970] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:34:48.606 [DEBUG] [Thread-163970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:34:48.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:34:48.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:34:48.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:34:48.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:34:48.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:34:48.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:34:48.641 [DEBUG] [Thread-163970] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:34:53.154 [DEBUG] [Thread-163972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:34:53.301 [DEBUG] [Thread-163973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:34:58.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:34:58.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:34:58.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:34:59.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 34, 40), 12.42, 42.27, 0.0, 21.58, 12.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:34:59.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:34:40
2025-09-29T18:34:59.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:34:59.489 [DEBUG] [Thread-163974] [transport.py] [_log()] starting thread (client mode): 0x2b96b100
2025-09-29T18:34:59.489 [DEBUG] [Thread-163974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:34:59.509 [DEBUG] [Thread-163974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:34:59.509 [INFO] [Thread-163974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:34:59.512 [DEBUG] [Thread-163974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:34:59.512 [DEBUG] [Thread-163974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:34:59.512 [DEBUG] [Thread-163974] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] client lang: <none>
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] server lang: <none>
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] kex follows: False
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] Compression: none
2025-09-29T18:34:59.513 [DEBUG] [Thread-163974] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:34:59.530 [DEBUG] [Thread-163974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:34:59.530 [DEBUG] [Thread-163974] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:34:59.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:34:59.531 [DEBUG] [Thread-163974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:34:59.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:34:59.533 [DEBUG] [Thread-163974] [transport.py] [_log()] userauth is OK
2025-09-29T18:34:59.534 [DEBUG] [Thread-163974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:34:59.534 [DEBUG] [Thread-163974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:34:59.534 [DEBUG] [Thread-163974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:34:59.534 [DEBUG] [Thread-163974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:34:59.558 [INFO] [Thread-163974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:34:59.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:00.229 [DEBUG] [Thread-163974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:00.230 [DEBUG] [Thread-163974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:00.230 [DEBUG] [Thread-163974] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:35:00.270 [DEBUG] [Thread-163974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:00.270 [DEBUG] [Thread-163974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:00.273 [DEBUG] [Thread-163974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:00.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:00.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:35:00.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:35:00.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:35:00.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:00.297 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:35:00.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:00.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:00.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:35:00.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.690689 -999.00  +12.40  11.40     48   +1.80 1 1 1 1 1   880    0 10.11 -21.22 ----- 11.4 11.4 155.9 15.4 13.9 -26.1 13.8 -25.4 14.1 -25.3 14.4 -26.2
2025-09-29T18:35:00.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:35:00.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:35:00.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.690689
2025-09-29T18:35:00.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:35:00.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:35:00.299 [DEBUG] [Thread-163974] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:00.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:35:00.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:35:00.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:35:00.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:34:40', tmtdew=12.42, humidity=42.27, cloud=0.0, wind=21.58, temperature=12.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:34:35.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:35:00.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:35:00.395 [DEBUG] [Thread-163977] [transport.py] [_log()] starting thread (client mode): 0x2e362680
2025-09-29T18:35:00.395 [DEBUG] [Thread-163977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:00.413 [DEBUG] [Thread-163977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:35:00.414 [INFO] [Thread-163977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:00.421 [DEBUG] [Thread-163977] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:00.422 [DEBUG] [Thread-163977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:00.422 [DEBUG] [Thread-163977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:00.422 [DEBUG] [Thread-163977] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:00.422 [DEBUG] [Thread-163977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:00.422 [DEBUG] [Thread-163977] [transport.py] [_log()] Compression: none
2025-09-29T18:35:00.422 [DEBUG] [Thread-163977] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:00.477 [DEBUG] [Thread-163977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:00.477 [DEBUG] [Thread-163977] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:00.478 [DEBUG] [Thread-163977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:35:00.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:35:00.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:00.534 [DEBUG] [Thread-163977] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:00.534 [DEBUG] [Thread-163977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:00.534 [DEBUG] [Thread-163977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:00.535 [DEBUG] [Thread-163977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:35:00.535 [DEBUG] [Thread-163977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:00.555 [INFO] [Thread-163977] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:00.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:35:00.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:01.564 [DEBUG] [Thread-163977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:01.564 [DEBUG] [Thread-163977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:01.612 [DEBUG] [Thread-163977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:01.612 [DEBUG] [Thread-163977] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:01.621 [DEBUG] [Thread-163977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:01.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:01.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:35:01.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:35:01.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:01.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:01.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:01.656 [DEBUG] [Thread-163977] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:08.350 [DEBUG] [Thread-163979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:35:11.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:35:11.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:35:11.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:35:12.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 34, 40), 12.42, 42.27, 0.0, 21.58, 12.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:35:12.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:34:40
2025-09-29T18:35:12.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:35:12.520 [DEBUG] [Thread-163980] [transport.py] [_log()] starting thread (client mode): 0x2b9cd4e0
2025-09-29T18:35:12.521 [DEBUG] [Thread-163980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:12.540 [DEBUG] [Thread-163980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:35:12.540 [INFO] [Thread-163980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:35:12.542 [DEBUG] [Thread-163980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:12.542 [DEBUG] [Thread-163980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:35:12.542 [DEBUG] [Thread-163980] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:12.542 [DEBUG] [Thread-163980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:12.542 [DEBUG] [Thread-163980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:12.542 [DEBUG] [Thread-163980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:12.542 [DEBUG] [Thread-163980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:12.542 [DEBUG] [Thread-163980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] Compression: none
2025-09-29T18:35:12.543 [DEBUG] [Thread-163980] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:12.562 [DEBUG] [Thread-163980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:12.562 [DEBUG] [Thread-163980] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:12.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:35:12.563 [DEBUG] [Thread-163980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:35:12.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:12.565 [DEBUG] [Thread-163980] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:12.566 [DEBUG] [Thread-163980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:12.566 [DEBUG] [Thread-163980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:12.566 [DEBUG] [Thread-163980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:35:12.566 [DEBUG] [Thread-163980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:12.583 [INFO] [Thread-163980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:12.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:16.446 [DEBUG] [Thread-163980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:16.446 [DEBUG] [Thread-163980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:16.446 [DEBUG] [Thread-163980] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:35:16.488 [DEBUG] [Thread-163980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:16.488 [DEBUG] [Thread-163980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:16.490 [DEBUG] [Thread-163980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:16.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:16.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:35:16.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:35:16.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:35:16.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:16.669 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:35:16.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:16.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:16.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:35:16.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.690689 -999.00  +12.40  11.40     48   +1.80 1 1 1 1 1   880    0 10.11 -21.22 ----- 11.4 11.4 155.9 15.4 13.9 -26.1 13.8 -25.4 14.1 -25.3 14.4 -26.2
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.690689
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:35:16.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:34:40', tmtdew=12.42, humidity=42.27, cloud=0.0, wind=21.58, temperature=12.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:34:35.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:35:16.671 [DEBUG] [Thread-163980] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:16.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:35:16.756 [DEBUG] [Thread-163983] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d90
2025-09-29T18:35:16.756 [DEBUG] [Thread-163983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:16.772 [DEBUG] [Thread-163983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:35:16.772 [INFO] [Thread-163983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:16.779 [DEBUG] [Thread-163983] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:16.780 [DEBUG] [Thread-163983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:16.780 [DEBUG] [Thread-163983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:16.780 [DEBUG] [Thread-163983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:16.780 [DEBUG] [Thread-163983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:16.780 [DEBUG] [Thread-163983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:16.780 [DEBUG] [Thread-163983] [transport.py] [_log()] Compression: none
2025-09-29T18:35:16.780 [DEBUG] [Thread-163983] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:16.835 [DEBUG] [Thread-163983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:16.836 [DEBUG] [Thread-163983] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:16.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:35:16.836 [DEBUG] [Thread-163983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:35:16.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:16.893 [DEBUG] [Thread-163983] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:16.893 [DEBUG] [Thread-163983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:16.893 [DEBUG] [Thread-163983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:16.893 [DEBUG] [Thread-163983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:35:16.893 [DEBUG] [Thread-163983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:16.907 [INFO] [Thread-163983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:16.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:35:16.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:17.919 [DEBUG] [Thread-163983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:17.919 [DEBUG] [Thread-163983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:17.967 [DEBUG] [Thread-163983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:17.967 [DEBUG] [Thread-163983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:17.975 [DEBUG] [Thread-163983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:17.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:17.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:35:17.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:35:17.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:17.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:17.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:18.006 [DEBUG] [Thread-163983] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:23.378 [DEBUG] [Thread-163985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:35:28.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:35:28.009 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:35:28.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:35:28.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 35, 12), 12.4, 42.34, 0.0, 21.58, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:35:28.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:35:12
2025-09-29T18:35:28.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:35:28.863 [DEBUG] [Thread-163986] [transport.py] [_log()] starting thread (client mode): 0x2b968820
2025-09-29T18:35:28.863 [DEBUG] [Thread-163986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:28.883 [DEBUG] [Thread-163986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:35:28.883 [INFO] [Thread-163986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:28.886 [DEBUG] [Thread-163986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:28.887 [DEBUG] [Thread-163986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:28.887 [DEBUG] [Thread-163986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:28.887 [DEBUG] [Thread-163986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:28.887 [DEBUG] [Thread-163986] [transport.py] [_log()] Compression: none
2025-09-29T18:35:28.887 [DEBUG] [Thread-163986] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:28.903 [DEBUG] [Thread-163986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:28.903 [DEBUG] [Thread-163986] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:28.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:35:28.904 [DEBUG] [Thread-163986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:35:28.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:28.906 [DEBUG] [Thread-163986] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:28.906 [DEBUG] [Thread-163986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:28.906 [DEBUG] [Thread-163986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:28.906 [DEBUG] [Thread-163986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:35:28.906 [DEBUG] [Thread-163986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:28.930 [INFO] [Thread-163986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:28.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:29.539 [DEBUG] [Thread-163986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:29.539 [DEBUG] [Thread-163986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:29.539 [DEBUG] [Thread-163986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:35:29.580 [DEBUG] [Thread-163986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:29.581 [DEBUG] [Thread-163986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:29.583 [DEBUG] [Thread-163986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:29.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:29.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:35:29.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:35:29.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:35:29.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:29.608 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:35:29.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:29.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:29.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:35:29.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.691036 -999.00  +12.40  15.90     48   +1.80 1 1 1 1 1   880    0 9.93 -20.64 ----- 15.9 15.9 157.4 19.3 13.9 -26.1 13.8 -25.0 14.0 -25.5 14.4 -26.5
2025-09-29T18:35:29.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:35:29.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:35:29.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.691036
2025-09-29T18:35:29.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:35:29.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:35:29.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:35:29.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:35:29.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:35:29.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:35:12', tmtdew=12.4, humidity=42.34, cloud=0.0, wind=21.58, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:35:05.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:35:29.610 [DEBUG] [Thread-163986] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:29.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:35:29.703 [DEBUG] [Thread-163989] [transport.py] [_log()] starting thread (client mode): 0x2b977f70
2025-09-29T18:35:29.703 [DEBUG] [Thread-163989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:29.717 [DEBUG] [Thread-163989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:35:29.717 [INFO] [Thread-163989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:35:29.725 [DEBUG] [Thread-163989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:29.725 [DEBUG] [Thread-163989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:35:29.725 [DEBUG] [Thread-163989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:29.725 [DEBUG] [Thread-163989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:29.725 [DEBUG] [Thread-163989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] Compression: none
2025-09-29T18:35:29.726 [DEBUG] [Thread-163989] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:29.784 [DEBUG] [Thread-163989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:29.785 [DEBUG] [Thread-163989] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:29.785 [DEBUG] [Thread-163989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:35:29.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:35:29.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:29.843 [DEBUG] [Thread-163989] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:29.843 [DEBUG] [Thread-163989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:29.843 [DEBUG] [Thread-163989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:29.843 [DEBUG] [Thread-163989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:35:29.844 [DEBUG] [Thread-163989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:29.865 [INFO] [Thread-163989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:29.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:35:29.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:30.841 [DEBUG] [Thread-163989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:30.841 [DEBUG] [Thread-163989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:30.889 [DEBUG] [Thread-163989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:30.889 [DEBUG] [Thread-163989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:30.898 [DEBUG] [Thread-163989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:30.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:30.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:35:30.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:35:30.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:30.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:30.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:30.933 [DEBUG] [Thread-163989] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:38.408 [DEBUG] [Thread-163991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:35:40.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:35:40.935 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:35:40.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:35:41.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 35, 12), 12.4, 42.34, 0.0, 21.58, 12.42, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:35:41.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:35:12
2025-09-29T18:35:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:35:41.779 [DEBUG] [Thread-163992] [transport.py] [_log()] starting thread (client mode): 0x2b91e890
2025-09-29T18:35:41.779 [DEBUG] [Thread-163992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:41.800 [DEBUG] [Thread-163992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:35:41.800 [INFO] [Thread-163992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:35:41.803 [DEBUG] [Thread-163992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:41.803 [DEBUG] [Thread-163992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:35:41.803 [DEBUG] [Thread-163992] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] Compression: none
2025-09-29T18:35:41.804 [DEBUG] [Thread-163992] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:41.821 [DEBUG] [Thread-163992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:41.822 [DEBUG] [Thread-163992] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:41.822 [DEBUG] [Thread-163992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:35:41.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:35:41.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:41.824 [DEBUG] [Thread-163992] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:41.824 [DEBUG] [Thread-163992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:41.825 [DEBUG] [Thread-163992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:41.825 [DEBUG] [Thread-163992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:35:41.825 [DEBUG] [Thread-163992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:41.842 [INFO] [Thread-163992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:41.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:43.616 [DEBUG] [Thread-163992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:43.617 [DEBUG] [Thread-163992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:43.617 [DEBUG] [Thread-163992] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:35:43.657 [DEBUG] [Thread-163992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:43.657 [DEBUG] [Thread-163992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:43.660 [DEBUG] [Thread-163992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:43.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:43.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:35:43.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:35:43.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:35:43.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:43.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:35:43.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:43.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:43.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:35:43.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.691036 -999.00  +12.40  15.90     48   +1.80 1 1 1 1 1   880    0 9.93 -20.64 ----- 15.9 15.9 157.4 19.3 13.9 -26.1 13.8 -25.0 14.0 -25.5 14.4 -26.5
2025-09-29T18:35:43.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:35:43.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:35:43.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.691036
2025-09-29T18:35:43.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:35:43.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:35:43.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:35:43.684 [DEBUG] [Thread-163992] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:43.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:35:43.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:35:43.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:35:12', tmtdew=12.4, humidity=42.34, cloud=0.0, wind=21.58, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:35:05.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:35:43.728 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:35:43.729 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:35:43.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:35:43.781 [DEBUG] [Thread-163995] [transport.py] [_log()] starting thread (client mode): 0x2b921090
2025-09-29T18:35:43.781 [DEBUG] [Thread-163995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:43.801 [DEBUG] [Thread-163995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:35:43.801 [INFO] [Thread-163995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:43.809 [DEBUG] [Thread-163995] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:43.810 [DEBUG] [Thread-163995] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:43.810 [DEBUG] [Thread-163995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:43.810 [DEBUG] [Thread-163995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:43.810 [DEBUG] [Thread-163995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:43.810 [DEBUG] [Thread-163995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:43.810 [DEBUG] [Thread-163995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:43.810 [DEBUG] [Thread-163995] [transport.py] [_log()] Compression: none
2025-09-29T18:35:43.810 [DEBUG] [Thread-163995] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:43.872 [DEBUG] [Thread-163995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:43.873 [DEBUG] [Thread-163995] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:43.873 [DEBUG] [Thread-163995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:35:43.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:35:43.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:43.929 [DEBUG] [Thread-163995] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:43.929 [DEBUG] [Thread-163995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:43.929 [DEBUG] [Thread-163995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:43.929 [DEBUG] [Thread-163995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:35:43.929 [DEBUG] [Thread-163995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:43.949 [INFO] [Thread-163995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:43.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:35:43.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:44.910 [DEBUG] [Thread-163995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:44.910 [DEBUG] [Thread-163995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:44.958 [DEBUG] [Thread-163995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:44.958 [DEBUG] [Thread-163995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:44.967 [DEBUG] [Thread-163995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:44.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:44.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:35:44.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:35:44.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:44.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:44.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:45.001 [DEBUG] [Thread-163995] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:53.233 [DEBUG] [Thread-163997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:35:53.458 [DEBUG] [Thread-163998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:35:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:35:55.003 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:35:55.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:35:55.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 35, 44), 12.39, 42.36, 0.0, 24.76, 12.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:35:55.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:35:44
2025-09-29T18:35:55.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:35:55.885 [DEBUG] [Thread-163999] [transport.py] [_log()] starting thread (client mode): 0x2b9766e0
2025-09-29T18:35:55.886 [DEBUG] [Thread-163999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:55.904 [DEBUG] [Thread-163999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:35:55.904 [INFO] [Thread-163999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] Compression: none
2025-09-29T18:35:55.906 [DEBUG] [Thread-163999] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:55.919 [DEBUG] [Thread-163999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:55.919 [DEBUG] [Thread-163999] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:55.920 [DEBUG] [Thread-163999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:35:55.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:35:55.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:55.920 [DEBUG] [Thread-163999] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:55.920 [DEBUG] [Thread-163999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:55.920 [DEBUG] [Thread-163999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:55.920 [DEBUG] [Thread-163999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:35:55.920 [DEBUG] [Thread-163999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:55.929 [INFO] [Thread-163999] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:55.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:56.570 [DEBUG] [Thread-163999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:56.570 [DEBUG] [Thread-163999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:56.570 [DEBUG] [Thread-163999] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:35:56.611 [DEBUG] [Thread-163999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:56.611 [DEBUG] [Thread-163999] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:56.613 [DEBUG] [Thread-163999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:56.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:56.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:35:56.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:35:56.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:35:56.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:56.630 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:35:56.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:56.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:56.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:35:56.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.691383 -999.00  +12.30  22.26     48   +1.80 1 1 1 1 1   879    0 9.99 -21.83 ----- 22.3 22.3 149.4 25.2 13.8 -26.1 13.8 -25.6 13.9 -25.5 14.3 -26.4
2025-09-29T18:35:56.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:35:56.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:35:56.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.691383
2025-09-29T18:35:56.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:35:56.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:35:56.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:35:56.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:35:56.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:35:56.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:35:44', tmtdew=12.39, humidity=42.36, cloud=0.0, wind=24.76, temperature=12.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:35:35.491', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:35:56.631 [DEBUG] [Thread-163999] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:35:56.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:35:56.714 [DEBUG] [Thread-164002] [transport.py] [_log()] starting thread (client mode): 0x2b974070
2025-09-29T18:35:56.714 [DEBUG] [Thread-164002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:35:56.729 [DEBUG] [Thread-164002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:35:56.729 [INFO] [Thread-164002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:35:56.736 [DEBUG] [Thread-164002] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] client lang: <none>
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] server lang: <none>
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] kex follows: False
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] Compression: none
2025-09-29T18:35:56.737 [DEBUG] [Thread-164002] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:35:56.795 [DEBUG] [Thread-164002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:35:56.795 [DEBUG] [Thread-164002] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:35:56.795 [DEBUG] [Thread-164002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:35:56.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:35:56.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:35:56.852 [DEBUG] [Thread-164002] [transport.py] [_log()] userauth is OK
2025-09-29T18:35:56.852 [DEBUG] [Thread-164002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:35:56.852 [DEBUG] [Thread-164002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:35:56.852 [DEBUG] [Thread-164002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:35:56.852 [DEBUG] [Thread-164002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:35:56.866 [INFO] [Thread-164002] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:35:56.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:35:56.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:35:57.832 [DEBUG] [Thread-164002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:35:57.832 [DEBUG] [Thread-164002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:35:57.880 [DEBUG] [Thread-164002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:35:57.880 [DEBUG] [Thread-164002] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:35:57.888 [DEBUG] [Thread-164002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:35:57.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:35:57.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:35:57.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:35:57.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:35:57.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:35:57.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:35:57.920 [DEBUG] [Thread-164002] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:07.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:36:07.914 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:36:07.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:36:08.485 [DEBUG] [Thread-164004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:36:08.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 35, 44), 12.39, 42.36, 0.0, 24.76, 12.41, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:36:08.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:35:44
2025-09-29T18:36:08.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:36:08.762 [DEBUG] [Thread-164005] [transport.py] [_log()] starting thread (client mode): 0x2b96b790
2025-09-29T18:36:08.762 [DEBUG] [Thread-164005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:36:08.783 [DEBUG] [Thread-164005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:36:08.783 [INFO] [Thread-164005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:36:08.786 [DEBUG] [Thread-164005] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:36:08.786 [DEBUG] [Thread-164005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:36:08.786 [DEBUG] [Thread-164005] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:36:08.786 [DEBUG] [Thread-164005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:08.786 [DEBUG] [Thread-164005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:08.786 [DEBUG] [Thread-164005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:08.786 [DEBUG] [Thread-164005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:08.786 [DEBUG] [Thread-164005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] client lang: <none>
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] server lang: <none>
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] kex follows: False
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] Compression: none
2025-09-29T18:36:08.787 [DEBUG] [Thread-164005] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:36:08.800 [DEBUG] [Thread-164005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:36:08.801 [DEBUG] [Thread-164005] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:36:08.801 [DEBUG] [Thread-164005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:36:08.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:36:08.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:36:08.803 [DEBUG] [Thread-164005] [transport.py] [_log()] userauth is OK
2025-09-29T18:36:08.803 [DEBUG] [Thread-164005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:36:08.803 [DEBUG] [Thread-164005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:36:08.803 [DEBUG] [Thread-164005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:36:08.804 [DEBUG] [Thread-164005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:36:08.826 [INFO] [Thread-164005] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:36:08.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:36:09.650 [DEBUG] [Thread-164005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:36:09.650 [DEBUG] [Thread-164005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:36:09.650 [DEBUG] [Thread-164005] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:36:09.691 [DEBUG] [Thread-164005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:36:09.691 [DEBUG] [Thread-164005] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:36:09.694 [DEBUG] [Thread-164005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:36:09.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:36:09.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:36:09.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:36:09.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:36:09.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:36:09.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:36:09.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:36:09.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:36:09.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:36:09.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.691383 -999.00  +12.30  22.26     48   +1.80 1 1 1 1 1   879    0 9.99 -21.83 ----- 22.3 22.3 149.4 25.2 13.8 -26.1 13.8 -25.6 13.9 -25.5 14.3 -26.4
2025-09-29T18:36:09.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:36:09.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:36:09.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.691383
2025-09-29T18:36:09.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:36:09.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:36:09.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:36:09.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:36:09.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:36:09.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:35:44', tmtdew=12.39, humidity=42.36, cloud=0.0, wind=24.76, temperature=12.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:35:35.491', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:36:09.714 [DEBUG] [Thread-164005] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:09.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:36:09.809 [DEBUG] [Thread-164008] [transport.py] [_log()] starting thread (client mode): 0x2e3c0160
2025-09-29T18:36:09.809 [DEBUG] [Thread-164008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:36:09.824 [DEBUG] [Thread-164008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:36:09.824 [INFO] [Thread-164008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] client lang: <none>
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] server lang: <none>
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] kex follows: False
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:36:09.832 [DEBUG] [Thread-164008] [transport.py] [_log()] Compression: none
2025-09-29T18:36:09.833 [DEBUG] [Thread-164008] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:36:09.887 [DEBUG] [Thread-164008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:36:09.888 [DEBUG] [Thread-164008] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:36:09.888 [DEBUG] [Thread-164008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:36:09.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:36:09.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:36:09.944 [DEBUG] [Thread-164008] [transport.py] [_log()] userauth is OK
2025-09-29T18:36:09.944 [DEBUG] [Thread-164008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:36:09.944 [DEBUG] [Thread-164008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:36:09.944 [DEBUG] [Thread-164008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:36:09.944 [DEBUG] [Thread-164008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:36:09.963 [INFO] [Thread-164008] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:36:09.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:36:09.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:36:10.928 [DEBUG] [Thread-164008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:36:10.928 [DEBUG] [Thread-164008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:36:10.976 [DEBUG] [Thread-164008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:36:10.976 [DEBUG] [Thread-164008] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:36:10.985 [DEBUG] [Thread-164008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:36:10.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:36:10.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:36:11.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:36:11.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:36:11.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:36:11.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:36:11.019 [DEBUG] [Thread-164008] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:36:21.013 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:36:21.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:36:21.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 36, 16), 12.38, 42.37, 0.0, 23.8, 12.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:36:21.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:36:16
2025-09-29T18:36:21.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:36:21.864 [DEBUG] [Thread-164010] [transport.py] [_log()] starting thread (client mode): 0x2e38cf70
2025-09-29T18:36:21.864 [DEBUG] [Thread-164010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:36:21.884 [DEBUG] [Thread-164010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:36:21.884 [INFO] [Thread-164010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] client lang: <none>
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] server lang: <none>
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] kex follows: False
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:36:21.887 [DEBUG] [Thread-164010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:36:21.888 [DEBUG] [Thread-164010] [transport.py] [_log()] Compression: none
2025-09-29T18:36:21.888 [DEBUG] [Thread-164010] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:36:21.902 [DEBUG] [Thread-164010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:36:21.902 [DEBUG] [Thread-164010] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:36:21.902 [DEBUG] [Thread-164010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:36:21.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:36:21.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:36:21.902 [DEBUG] [Thread-164010] [transport.py] [_log()] userauth is OK
2025-09-29T18:36:21.902 [DEBUG] [Thread-164010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:36:21.902 [DEBUG] [Thread-164010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:36:21.902 [DEBUG] [Thread-164010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:36:21.902 [DEBUG] [Thread-164010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:36:21.912 [INFO] [Thread-164010] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:36:21.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:36:22.741 [DEBUG] [Thread-164010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:36:22.742 [DEBUG] [Thread-164010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:36:22.742 [DEBUG] [Thread-164010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:36:22.783 [DEBUG] [Thread-164010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:36:22.783 [DEBUG] [Thread-164010] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:36:22.785 [DEBUG] [Thread-164010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:36:22.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:36:22.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:36:22.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:36:22.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:36:22.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:36:22.805 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:36:22.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:36:22.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:36:22.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:36:22.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.691383 -999.00  +12.30  22.26     48   +1.80 1 1 1 1 1   879    0 9.99 -21.83 ----- 22.3 22.3 149.4 25.2 13.8 -26.1 13.8 -25.6 13.9 -25.5 14.3 -26.4
2025-09-29T18:36:22.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:36:22.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:36:22.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.691383
2025-09-29T18:36:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:36:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:36:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:36:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:36:22.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:36:22.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:36:16', tmtdew=12.38, humidity=42.37, cloud=0.0, wind=23.8, temperature=12.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:35:35.491', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:36:22.808 [DEBUG] [Thread-164010] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:22.893 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:36:22.902 [DEBUG] [Thread-164013] [transport.py] [_log()] starting thread (client mode): 0x2b9ca860
2025-09-29T18:36:22.903 [DEBUG] [Thread-164013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:36:22.920 [DEBUG] [Thread-164013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:36:22.920 [INFO] [Thread-164013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:36:22.927 [DEBUG] [Thread-164013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] client lang: <none>
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] server lang: <none>
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] kex follows: False
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] Compression: none
2025-09-29T18:36:22.928 [DEBUG] [Thread-164013] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:36:22.987 [DEBUG] [Thread-164013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:36:22.988 [DEBUG] [Thread-164013] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:36:22.988 [DEBUG] [Thread-164013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:36:22.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:36:22.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:36:23.044 [DEBUG] [Thread-164013] [transport.py] [_log()] userauth is OK
2025-09-29T18:36:23.044 [DEBUG] [Thread-164013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:36:23.044 [DEBUG] [Thread-164013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:36:23.044 [DEBUG] [Thread-164013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:36:23.044 [DEBUG] [Thread-164013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:36:23.063 [INFO] [Thread-164013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:36:23.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:36:23.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:36:23.525 [DEBUG] [Thread-164015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:36:24.082 [DEBUG] [Thread-164013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:36:24.082 [DEBUG] [Thread-164013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:36:24.134 [DEBUG] [Thread-164013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:36:24.134 [DEBUG] [Thread-164013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:36:24.143 [DEBUG] [Thread-164013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:36:24.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:36:24.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:36:24.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:36:24.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:36:24.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:36:24.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:36:24.177 [DEBUG] [Thread-164013] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:34.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:36:34.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:36:34.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:36:34.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 36, 16), 12.38, 42.37, 0.0, 23.8, 12.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:36:34.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:36:16
2025-09-29T18:36:34.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:36:35.032 [DEBUG] [Thread-164016] [transport.py] [_log()] starting thread (client mode): 0x2b9c9bd0
2025-09-29T18:36:35.032 [DEBUG] [Thread-164016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:36:35.052 [DEBUG] [Thread-164016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:36:35.052 [INFO] [Thread-164016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] client lang: <none>
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] server lang: <none>
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] kex follows: False
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] Compression: none
2025-09-29T18:36:35.055 [DEBUG] [Thread-164016] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:36:35.073 [DEBUG] [Thread-164016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:36:35.073 [DEBUG] [Thread-164016] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:36:35.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:36:35.073 [DEBUG] [Thread-164016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:36:35.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:36:35.074 [DEBUG] [Thread-164016] [transport.py] [_log()] userauth is OK
2025-09-29T18:36:35.074 [DEBUG] [Thread-164016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:36:35.074 [DEBUG] [Thread-164016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:36:35.074 [DEBUG] [Thread-164016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:36:35.074 [DEBUG] [Thread-164016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:36:35.084 [INFO] [Thread-164016] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:36:35.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:36:35.729 [DEBUG] [Thread-164016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:36:35.729 [DEBUG] [Thread-164016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:36:35.729 [DEBUG] [Thread-164016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:36:35.770 [DEBUG] [Thread-164016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:36:35.770 [DEBUG] [Thread-164016] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:36:35.772 [DEBUG] [Thread-164016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:36:35.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:36:35.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:36:35.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:36:35.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:36:35.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:36:35.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:36:35.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:36:35.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:36:35.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:36:35.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.691731 -999.00  +12.30  18.83     48   +1.80 1 1 1 1 1   878    0 10.01 -21.55 ----- 18.8 18.8 158.8 24.4 13.8 -26.0 13.8 -25.0 13.9 -25.5 14.2 -26.6
2025-09-29T18:36:35.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:36:35.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:36:35.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.691731
2025-09-29T18:36:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:36:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:36:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:36:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:36:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:36:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:36:16', tmtdew=12.38, humidity=42.37, cloud=0.0, wind=23.8, temperature=12.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:36:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:36:35.793 [DEBUG] [Thread-164016] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:35.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:36:35.877 [DEBUG] [Thread-164019] [transport.py] [_log()] starting thread (client mode): 0x2b91fc40
2025-09-29T18:36:35.877 [DEBUG] [Thread-164019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:36:35.891 [DEBUG] [Thread-164019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:36:35.891 [INFO] [Thread-164019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:36:35.898 [DEBUG] [Thread-164019] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:36:35.898 [DEBUG] [Thread-164019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] client lang: <none>
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] server lang: <none>
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] kex follows: False
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] Compression: none
2025-09-29T18:36:35.899 [DEBUG] [Thread-164019] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:36:35.954 [DEBUG] [Thread-164019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:36:35.955 [DEBUG] [Thread-164019] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:36:35.955 [DEBUG] [Thread-164019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:36:35.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:36:35.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:36:36.011 [DEBUG] [Thread-164019] [transport.py] [_log()] userauth is OK
2025-09-29T18:36:36.011 [DEBUG] [Thread-164019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:36:36.011 [DEBUG] [Thread-164019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:36:36.011 [DEBUG] [Thread-164019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:36:36.011 [DEBUG] [Thread-164019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:36:36.025 [INFO] [Thread-164019] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:36:36.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:36:36.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:36:37.007 [DEBUG] [Thread-164019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:36:37.007 [DEBUG] [Thread-164019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:36:37.058 [DEBUG] [Thread-164019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:36:37.058 [DEBUG] [Thread-164019] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:36:37.066 [DEBUG] [Thread-164019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:36:37.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:36:37.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:36:37.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:36:37.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:36:37.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:36:37.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:36:37.097 [DEBUG] [Thread-164019] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:38.565 [DEBUG] [Thread-164021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:36:47.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:36:47.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:36:47.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:36:47.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 36, 16), 12.38, 42.37, 0.0, 23.8, 12.39, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:36:47.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:36:16
2025-09-29T18:36:47.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:36:47.945 [DEBUG] [Thread-164022] [transport.py] [_log()] starting thread (client mode): 0x2b9c9e10
2025-09-29T18:36:47.945 [DEBUG] [Thread-164022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:36:47.964 [DEBUG] [Thread-164022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:36:47.964 [INFO] [Thread-164022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:36:47.967 [DEBUG] [Thread-164022] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:36:47.967 [DEBUG] [Thread-164022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:36:47.967 [DEBUG] [Thread-164022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:36:47.967 [DEBUG] [Thread-164022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:47.967 [DEBUG] [Thread-164022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:47.967 [DEBUG] [Thread-164022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:47.967 [DEBUG] [Thread-164022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:47.967 [DEBUG] [Thread-164022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] client lang: <none>
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] server lang: <none>
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] kex follows: False
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] Compression: none
2025-09-29T18:36:47.968 [DEBUG] [Thread-164022] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:36:47.981 [DEBUG] [Thread-164022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:36:47.981 [DEBUG] [Thread-164022] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:36:47.982 [DEBUG] [Thread-164022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:36:47.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:36:47.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:36:47.984 [DEBUG] [Thread-164022] [transport.py] [_log()] userauth is OK
2025-09-29T18:36:47.984 [DEBUG] [Thread-164022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:36:47.984 [DEBUG] [Thread-164022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:36:47.984 [DEBUG] [Thread-164022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:36:47.984 [DEBUG] [Thread-164022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:36:48.002 [INFO] [Thread-164022] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:36:48.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:36:48.808 [DEBUG] [Thread-164022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:36:48.808 [DEBUG] [Thread-164022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:36:48.808 [DEBUG] [Thread-164022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:36:48.849 [DEBUG] [Thread-164022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:36:48.849 [DEBUG] [Thread-164022] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:36:48.850 [DEBUG] [Thread-164022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:36:48.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:36:48.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:36:48.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:36:48.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:36:48.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:36:48.868 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:36:48.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.691731 -999.00  +12.30  18.83     48   +1.80 1 1 1 1 1   878    0 10.01 -21.55 ----- 18.8 18.8 158.8 24.4 13.8 -26.0 13.8 -25.0 13.9 -25.5 14.2 -26.6
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.691731
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:36:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:36:16', tmtdew=12.38, humidity=42.37, cloud=0.0, wind=23.8, temperature=12.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:36:05.558', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:36:48.869 [DEBUG] [Thread-164022] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:48.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:36:48.952 [DEBUG] [Thread-164025] [transport.py] [_log()] starting thread (client mode): 0x2b9cbcd0
2025-09-29T18:36:48.952 [DEBUG] [Thread-164025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:36:48.968 [DEBUG] [Thread-164025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:36:48.968 [INFO] [Thread-164025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] client lang: <none>
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] server lang: <none>
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] kex follows: False
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:36:48.975 [DEBUG] [Thread-164025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:36:48.976 [DEBUG] [Thread-164025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:36:48.976 [DEBUG] [Thread-164025] [transport.py] [_log()] Compression: none
2025-09-29T18:36:48.976 [DEBUG] [Thread-164025] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:36:49.030 [DEBUG] [Thread-164025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:36:49.030 [DEBUG] [Thread-164025] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:36:49.031 [DEBUG] [Thread-164025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:36:49.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:36:49.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:36:49.087 [DEBUG] [Thread-164025] [transport.py] [_log()] userauth is OK
2025-09-29T18:36:49.087 [DEBUG] [Thread-164025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:36:49.087 [DEBUG] [Thread-164025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:36:49.087 [DEBUG] [Thread-164025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:36:49.087 [DEBUG] [Thread-164025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:36:49.104 [INFO] [Thread-164025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:36:49.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:36:49.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:36:50.065 [DEBUG] [Thread-164025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:36:50.065 [DEBUG] [Thread-164025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:36:50.113 [DEBUG] [Thread-164025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:36:50.113 [DEBUG] [Thread-164025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:36:50.121 [DEBUG] [Thread-164025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:36:50.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:36:50.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:36:50.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:36:50.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:36:50.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:36:50.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:36:50.153 [DEBUG] [Thread-164025] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:36:51.675 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:36:51.676 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:36:53.312 [DEBUG] [Thread-164027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:36:53.607 [DEBUG] [Thread-164028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:37:00.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:37:00.156 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:37:00.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:37:00.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 36, 48), 12.31, 42.95, 0.0, 27.21, 12.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:37:00.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:36:48
2025-09-29T18:37:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:37:00.997 [DEBUG] [Thread-164029] [transport.py] [_log()] starting thread (client mode): 0x2b9cb3d0
2025-09-29T18:37:00.997 [DEBUG] [Thread-164029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:01.017 [DEBUG] [Thread-164029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:37:01.017 [INFO] [Thread-164029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:37:01.020 [DEBUG] [Thread-164029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:01.020 [DEBUG] [Thread-164029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:37:01.020 [DEBUG] [Thread-164029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] Compression: none
2025-09-29T18:37:01.021 [DEBUG] [Thread-164029] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:01.037 [DEBUG] [Thread-164029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:01.037 [DEBUG] [Thread-164029] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:01.038 [DEBUG] [Thread-164029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:37:01.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:37:01.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:01.040 [DEBUG] [Thread-164029] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:01.040 [DEBUG] [Thread-164029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:01.040 [DEBUG] [Thread-164029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:01.040 [DEBUG] [Thread-164029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:37:01.040 [DEBUG] [Thread-164029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:01.064 [INFO] [Thread-164029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:01.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:01.655 [DEBUG] [Thread-164029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:01.655 [DEBUG] [Thread-164029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:01.656 [DEBUG] [Thread-164029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:37:01.696 [DEBUG] [Thread-164029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:01.696 [DEBUG] [Thread-164029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:01.698 [DEBUG] [Thread-164029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:01.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:01.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:37:01.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:37:01.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:37:01.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:01.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:37:01.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:01.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:01.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:37:01.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.692078 -999.00  +12.30  14.06     48   +1.80 1 1 1 1 1   877    0 10.10 -20.08 ----- 14.1 14.1 153.4 19.4 13.8 -26.0 13.7 -25.0 13.8 -25.5 14.2 -26.2
2025-09-29T18:37:01.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:37:01.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:37:01.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.692078
2025-09-29T18:37:01.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:37:01.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:37:01.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:37:01.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:37:01.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:37:01.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:36:48', tmtdew=12.31, humidity=42.95, cloud=0.0, wind=27.21, temperature=12.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:36:35.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:37:01.717 [DEBUG] [Thread-164029] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:01.801 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:37:01.813 [DEBUG] [Thread-164032] [transport.py] [_log()] starting thread (client mode): 0x2b9c9ba0
2025-09-29T18:37:01.813 [DEBUG] [Thread-164032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:01.827 [DEBUG] [Thread-164032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:37:01.827 [INFO] [Thread-164032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:37:01.835 [DEBUG] [Thread-164032] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:01.835 [DEBUG] [Thread-164032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:37:01.835 [DEBUG] [Thread-164032] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] Compression: none
2025-09-29T18:37:01.836 [DEBUG] [Thread-164032] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:01.890 [DEBUG] [Thread-164032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:01.890 [DEBUG] [Thread-164032] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:01.890 [DEBUG] [Thread-164032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:37:01.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:37:01.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:01.947 [DEBUG] [Thread-164032] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:01.947 [DEBUG] [Thread-164032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:01.948 [DEBUG] [Thread-164032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:01.948 [DEBUG] [Thread-164032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:37:01.948 [DEBUG] [Thread-164032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:01.967 [INFO] [Thread-164032] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:01.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:37:01.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:02.948 [DEBUG] [Thread-164032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:02.948 [DEBUG] [Thread-164032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:02.996 [DEBUG] [Thread-164032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:02.996 [DEBUG] [Thread-164032] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:03.005 [DEBUG] [Thread-164032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:03.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:03.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:37:03.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:37:03.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:03.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:03.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:03.040 [DEBUG] [Thread-164032] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:08.635 [DEBUG] [Thread-164034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:37:13.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:37:13.042 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:37:13.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:37:13.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 36, 48), 12.31, 42.95, 0.0, 27.21, 12.34, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:37:13.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:36:48
2025-09-29T18:37:13.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:37:13.922 [DEBUG] [Thread-164035] [transport.py] [_log()] starting thread (client mode): 0x2b9cbbb0
2025-09-29T18:37:13.923 [DEBUG] [Thread-164035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:13.943 [DEBUG] [Thread-164035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:37:13.943 [INFO] [Thread-164035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:37:13.946 [DEBUG] [Thread-164035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] Compression: none
2025-09-29T18:37:13.947 [DEBUG] [Thread-164035] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:13.965 [DEBUG] [Thread-164035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:13.965 [DEBUG] [Thread-164035] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:13.966 [DEBUG] [Thread-164035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:37:13.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:37:13.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:13.967 [DEBUG] [Thread-164035] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:13.967 [DEBUG] [Thread-164035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:13.967 [DEBUG] [Thread-164035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:13.967 [DEBUG] [Thread-164035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:37:13.967 [DEBUG] [Thread-164035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:13.978 [INFO] [Thread-164035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:13.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:14.719 [DEBUG] [Thread-164035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:14.719 [DEBUG] [Thread-164035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:14.719 [DEBUG] [Thread-164035] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:37:14.760 [DEBUG] [Thread-164035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:14.760 [DEBUG] [Thread-164035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:14.764 [DEBUG] [Thread-164035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:14.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:14.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:37:14.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:37:14.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:37:14.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:14.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:37:14.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:14.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:37:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.692078 -999.00  +12.30  14.06     48   +1.80 1 1 1 1 1   877    0 10.10 -20.08 ----- 14.1 14.1 153.4 19.4 13.8 -26.0 13.7 -25.0 13.8 -25.5 14.2 -26.2
2025-09-29T18:37:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:37:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:37:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.692078
2025-09-29T18:37:14.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:37:14.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:37:14.789 [DEBUG] [Thread-164035] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:14.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:37:14.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:37:14.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:37:14.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:36:48', tmtdew=12.31, humidity=42.95, cloud=0.0, wind=27.21, temperature=12.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:36:35.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:37:14.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:37:14.884 [DEBUG] [Thread-164038] [transport.py] [_log()] starting thread (client mode): 0x2b9cba90
2025-09-29T18:37:14.884 [DEBUG] [Thread-164038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:14.899 [DEBUG] [Thread-164038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:37:14.899 [INFO] [Thread-164038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:37:14.906 [DEBUG] [Thread-164038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:14.907 [DEBUG] [Thread-164038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:37:14.907 [DEBUG] [Thread-164038] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:14.907 [DEBUG] [Thread-164038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:14.907 [DEBUG] [Thread-164038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:14.907 [DEBUG] [Thread-164038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:14.907 [DEBUG] [Thread-164038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:14.907 [DEBUG] [Thread-164038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:14.907 [DEBUG] [Thread-164038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] Compression: none
2025-09-29T18:37:14.908 [DEBUG] [Thread-164038] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:14.963 [DEBUG] [Thread-164038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:14.963 [DEBUG] [Thread-164038] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:14.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:37:14.964 [DEBUG] [Thread-164038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:37:14.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:15.023 [DEBUG] [Thread-164038] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:15.023 [DEBUG] [Thread-164038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:15.023 [DEBUG] [Thread-164038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:15.023 [DEBUG] [Thread-164038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:37:15.024 [DEBUG] [Thread-164038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:15.043 [INFO] [Thread-164038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:15.043 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:37:15.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:16.001 [DEBUG] [Thread-164038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:16.001 [DEBUG] [Thread-164038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:16.048 [DEBUG] [Thread-164038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:16.048 [DEBUG] [Thread-164038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:16.057 [DEBUG] [Thread-164038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:16.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:16.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:37:16.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:37:16.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:16.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:16.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:16.091 [DEBUG] [Thread-164038] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:23.685 [DEBUG] [Thread-164040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:37:26.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:37:26.094 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:37:26.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:37:26.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 37, 20), 12.3, 42.97, 0.0, 26.03, 12.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:37:26.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:37:20
2025-09-29T18:37:26.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:37:26.951 [DEBUG] [Thread-164041] [transport.py] [_log()] starting thread (client mode): 0x2b91f820
2025-09-29T18:37:26.951 [DEBUG] [Thread-164041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:26.971 [DEBUG] [Thread-164041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:37:26.972 [INFO] [Thread-164041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:26.974 [DEBUG] [Thread-164041] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:26.975 [DEBUG] [Thread-164041] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:26.975 [DEBUG] [Thread-164041] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:26.975 [DEBUG] [Thread-164041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:26.975 [DEBUG] [Thread-164041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:26.975 [DEBUG] [Thread-164041] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:26.975 [DEBUG] [Thread-164041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:26.975 [DEBUG] [Thread-164041] [transport.py] [_log()] Compression: none
2025-09-29T18:37:26.975 [DEBUG] [Thread-164041] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:26.991 [DEBUG] [Thread-164041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:26.992 [DEBUG] [Thread-164041] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:26.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:37:26.993 [DEBUG] [Thread-164041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:37:26.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:27.032 [DEBUG] [Thread-164041] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:27.033 [DEBUG] [Thread-164041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:27.033 [DEBUG] [Thread-164041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:27.033 [DEBUG] [Thread-164041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:37:27.033 [DEBUG] [Thread-164041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:27.052 [INFO] [Thread-164041] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:27.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:27.816 [DEBUG] [Thread-164041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:27.816 [DEBUG] [Thread-164041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:27.816 [DEBUG] [Thread-164041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:37:27.857 [DEBUG] [Thread-164041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:27.857 [DEBUG] [Thread-164041] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:27.860 [DEBUG] [Thread-164041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:27.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:27.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:37:27.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:37:27.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:37:27.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:27.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:37:27.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:27.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:27.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:37:27.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.692078 -999.00  +12.30  14.06     48   +1.80 1 1 1 1 1   877    0 10.10 -20.08 ----- 14.1 14.1 153.4 19.4 13.8 -26.0 13.7 -25.0 13.8 -25.5 14.2 -26.2
2025-09-29T18:37:27.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:37:27.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:37:27.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.692078
2025-09-29T18:37:27.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:37:27.884 [DEBUG] [Thread-164041] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:27.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:37:27.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:37:27.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:37:27.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:37:27.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:37:20', tmtdew=12.3, humidity=42.97, cloud=0.0, wind=26.03, temperature=12.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:36:35.539', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:37:27.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:37:27.980 [DEBUG] [Thread-164044] [transport.py] [_log()] starting thread (client mode): 0x2e3c0880
2025-09-29T18:37:27.980 [DEBUG] [Thread-164044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:27.994 [DEBUG] [Thread-164044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:37:27.994 [INFO] [Thread-164044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] Compression: none
2025-09-29T18:37:28.002 [DEBUG] [Thread-164044] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:28.059 [DEBUG] [Thread-164044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:28.059 [DEBUG] [Thread-164044] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:28.059 [DEBUG] [Thread-164044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:37:28.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:37:28.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:28.115 [DEBUG] [Thread-164044] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:28.115 [DEBUG] [Thread-164044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:28.115 [DEBUG] [Thread-164044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:28.115 [DEBUG] [Thread-164044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:37:28.116 [DEBUG] [Thread-164044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:28.139 [INFO] [Thread-164044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:28.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:37:28.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:29.153 [DEBUG] [Thread-164044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:29.153 [DEBUG] [Thread-164044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:29.201 [DEBUG] [Thread-164044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:29.201 [DEBUG] [Thread-164044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:29.209 [DEBUG] [Thread-164044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:29.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:29.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:37:29.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:37:29.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:29.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:29.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:29.244 [DEBUG] [Thread-164044] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:38.714 [DEBUG] [Thread-164046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:37:39.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:37:39.246 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:37:39.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:37:39.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 37, 20), 12.3, 42.97, 0.0, 26.03, 12.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:37:39.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:37:20
2025-09-29T18:37:39.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:37:40.092 [DEBUG] [Thread-164047] [transport.py] [_log()] starting thread (client mode): 0x2b91c070
2025-09-29T18:37:40.092 [DEBUG] [Thread-164047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:40.113 [DEBUG] [Thread-164047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:37:40.113 [INFO] [Thread-164047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:37:40.116 [DEBUG] [Thread-164047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] Compression: none
2025-09-29T18:37:40.117 [DEBUG] [Thread-164047] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:40.134 [DEBUG] [Thread-164047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:40.135 [DEBUG] [Thread-164047] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:40.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:37:40.136 [DEBUG] [Thread-164047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:37:40.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:40.137 [DEBUG] [Thread-164047] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:40.138 [DEBUG] [Thread-164047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:40.138 [DEBUG] [Thread-164047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:40.138 [DEBUG] [Thread-164047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:37:40.138 [DEBUG] [Thread-164047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:40.156 [INFO] [Thread-164047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:40.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:40.797 [DEBUG] [Thread-164047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:40.798 [DEBUG] [Thread-164047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:40.798 [DEBUG] [Thread-164047] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:37:40.838 [DEBUG] [Thread-164047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:40.838 [DEBUG] [Thread-164047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:40.841 [DEBUG] [Thread-164047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:40.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:40.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:37:40.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:37:40.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:37:40.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:40.862 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:37:40.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:40.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:40.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:37:40.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.692426 -999.00  +12.30  20.32     48   +1.80 1 1 1 1 1   876    0 10.06 -19.18 ----- 20.3 20.3 146.4 24.8 13.7 -25.9 13.6 -25.0 13.7 -25.1 14.1 -26.0
2025-09-29T18:37:40.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:37:40.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:37:40.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.692426
2025-09-29T18:37:40.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:37:40.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:37:40.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:37:40.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:37:40.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:37:40.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:37:20', tmtdew=12.3, humidity=42.97, cloud=0.0, wind=26.03, temperature=12.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:37:05.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:37:40.864 [DEBUG] [Thread-164047] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:40.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:37:40.961 [DEBUG] [Thread-164050] [transport.py] [_log()] starting thread (client mode): 0x2b91fcd0
2025-09-29T18:37:40.961 [DEBUG] [Thread-164050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:40.981 [DEBUG] [Thread-164050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:37:40.981 [INFO] [Thread-164050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:37:40.988 [DEBUG] [Thread-164050] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:40.989 [DEBUG] [Thread-164050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:40.990 [DEBUG] [Thread-164050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:40.990 [DEBUG] [Thread-164050] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:40.990 [DEBUG] [Thread-164050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:40.990 [DEBUG] [Thread-164050] [transport.py] [_log()] Compression: none
2025-09-29T18:37:40.990 [DEBUG] [Thread-164050] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:41.046 [DEBUG] [Thread-164050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:41.046 [DEBUG] [Thread-164050] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:41.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:37:41.047 [DEBUG] [Thread-164050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:37:41.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:41.107 [DEBUG] [Thread-164050] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:41.107 [DEBUG] [Thread-164050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:41.107 [DEBUG] [Thread-164050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:41.107 [DEBUG] [Thread-164050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:37:41.107 [DEBUG] [Thread-164050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:41.126 [INFO] [Thread-164050] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:41.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:37:41.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:42.133 [DEBUG] [Thread-164050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:42.133 [DEBUG] [Thread-164050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:42.181 [DEBUG] [Thread-164050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:42.181 [DEBUG] [Thread-164050] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:42.190 [DEBUG] [Thread-164050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:42.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:42.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:37:42.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:37:42.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:42.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:42.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:42.233 [DEBUG] [Thread-164050] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:52.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:37:52.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:37:52.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:37:52.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 37, 20), 12.3, 42.97, 0.0, 26.03, 12.32, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:37:52.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:37:20
2025-09-29T18:37:52.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:37:53.089 [DEBUG] [Thread-164052] [transport.py] [_log()] starting thread (client mode): 0x2b922c20
2025-09-29T18:37:53.089 [DEBUG] [Thread-164052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:53.110 [DEBUG] [Thread-164052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:37:53.110 [INFO] [Thread-164052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:37:53.113 [DEBUG] [Thread-164052] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:53.113 [DEBUG] [Thread-164052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:37:53.113 [DEBUG] [Thread-164052] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:53.113 [DEBUG] [Thread-164052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:53.113 [DEBUG] [Thread-164052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:53.113 [DEBUG] [Thread-164052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] Compression: none
2025-09-29T18:37:53.114 [DEBUG] [Thread-164052] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:53.131 [DEBUG] [Thread-164052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:53.132 [DEBUG] [Thread-164052] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:53.132 [DEBUG] [Thread-164052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:37:53.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:37:53.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:53.133 [DEBUG] [Thread-164052] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:53.133 [DEBUG] [Thread-164052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:53.133 [DEBUG] [Thread-164052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:53.133 [DEBUG] [Thread-164052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:37:53.133 [DEBUG] [Thread-164052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:53.142 [INFO] [Thread-164052] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:53.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:53.389 [DEBUG] [Thread-164054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:37:53.754 [DEBUG] [Thread-164055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:37:53.882 [DEBUG] [Thread-164052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:53.883 [DEBUG] [Thread-164052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:53.883 [DEBUG] [Thread-164052] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:37:53.923 [DEBUG] [Thread-164052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:53.923 [DEBUG] [Thread-164052] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:53.926 [DEBUG] [Thread-164052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:53.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:53.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:37:53.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:37:53.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:37:53.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:53.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:37:53.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:53.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:53.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:37:53.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.692426 -999.00  +12.30  20.32     48   +1.80 1 1 1 1 1   876    0 10.06 -19.18 ----- 20.3 20.3 146.4 24.8 13.7 -25.9 13.6 -25.0 13.7 -25.1 14.1 -26.0
2025-09-29T18:37:53.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:37:53.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:37:53.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.692426
2025-09-29T18:37:53.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:37:53.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:37:53.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:37:53.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:37:53.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:37:53.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:37:20', tmtdew=12.3, humidity=42.97, cloud=0.0, wind=26.03, temperature=12.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:37:05.606', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:37:53.954 [DEBUG] [Thread-164052] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:54.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:37:54.049 [DEBUG] [Thread-164057] [transport.py] [_log()] starting thread (client mode): 0x2b921390
2025-09-29T18:37:54.049 [DEBUG] [Thread-164057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:37:54.064 [DEBUG] [Thread-164057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:37:54.064 [INFO] [Thread-164057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] client lang: <none>
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] server lang: <none>
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] kex follows: False
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] Compression: none
2025-09-29T18:37:54.072 [DEBUG] [Thread-164057] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:37:54.129 [DEBUG] [Thread-164057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:37:54.129 [DEBUG] [Thread-164057] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:37:54.129 [DEBUG] [Thread-164057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:37:54.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:37:54.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:37:54.189 [DEBUG] [Thread-164057] [transport.py] [_log()] userauth is OK
2025-09-29T18:37:54.190 [DEBUG] [Thread-164057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:37:54.190 [DEBUG] [Thread-164057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:37:54.190 [DEBUG] [Thread-164057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:37:54.190 [DEBUG] [Thread-164057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:37:54.203 [INFO] [Thread-164057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:37:54.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:37:54.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:37:55.171 [DEBUG] [Thread-164057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:37:55.171 [DEBUG] [Thread-164057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:37:55.219 [DEBUG] [Thread-164057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:37:55.219 [DEBUG] [Thread-164057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:37:55.227 [DEBUG] [Thread-164057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:37:55.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:37:55.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:37:55.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:37:55.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:37:55.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:37:55.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:37:55.260 [DEBUG] [Thread-164057] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:37:55.884 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:37:55.886 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:38:05.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:38:05.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:38:05.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:38:05.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 37, 52), 12.3, 42.97, 0.0, 26.15, 12.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:38:05.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:37:52
2025-09-29T18:38:05.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:38:06.118 [DEBUG] [Thread-164059] [transport.py] [_log()] starting thread (client mode): 0x2b921300
2025-09-29T18:38:06.118 [DEBUG] [Thread-164059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:06.131 [DEBUG] [Thread-164059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:38:06.131 [INFO] [Thread-164059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:38:06.133 [DEBUG] [Thread-164059] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:06.133 [DEBUG] [Thread-164059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:38:06.133 [DEBUG] [Thread-164059] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:06.133 [DEBUG] [Thread-164059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:06.133 [DEBUG] [Thread-164059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] Compression: none
2025-09-29T18:38:06.134 [DEBUG] [Thread-164059] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:06.145 [DEBUG] [Thread-164059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:06.146 [DEBUG] [Thread-164059] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:06.146 [DEBUG] [Thread-164059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:38:06.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:38:06.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:06.147 [DEBUG] [Thread-164059] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:06.147 [DEBUG] [Thread-164059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:06.147 [DEBUG] [Thread-164059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:06.148 [DEBUG] [Thread-164059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:38:06.148 [DEBUG] [Thread-164059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:06.163 [INFO] [Thread-164059] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:06.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:06.786 [DEBUG] [Thread-164059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:06.786 [DEBUG] [Thread-164059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:06.786 [DEBUG] [Thread-164059] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:38:06.826 [DEBUG] [Thread-164059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:06.826 [DEBUG] [Thread-164059] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:06.828 [DEBUG] [Thread-164059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:06.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:06.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:38:06.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:38:06.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:38:06.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:06.839 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:38:06.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:06.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:06.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:38:06.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.692772 -999.00  +12.30  16.65     48   +1.80 1 1 1 1 1   874    0 10.22 -18.81 ----- 16.6 16.6 151.3 25.9 13.8 -26.0 13.7 -25.0 13.7 -25.2 14.0 -26.1
2025-09-29T18:38:06.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:38:06.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:38:06.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.692772
2025-09-29T18:38:06.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:38:06.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:38:06.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:38:06.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:38:06.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:38:06.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:37:52', tmtdew=12.3, humidity=42.97, cloud=0.0, wind=26.15, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:37:35.501', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:38:06.841 [DEBUG] [Thread-164059] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:06.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:38:06.936 [DEBUG] [Thread-164062] [transport.py] [_log()] starting thread (client mode): 0x2b91c520
2025-09-29T18:38:06.936 [DEBUG] [Thread-164062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:06.950 [DEBUG] [Thread-164062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:38:06.950 [INFO] [Thread-164062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:38:06.958 [DEBUG] [Thread-164062] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:06.958 [DEBUG] [Thread-164062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:38:06.958 [DEBUG] [Thread-164062] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:06.958 [DEBUG] [Thread-164062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:06.958 [DEBUG] [Thread-164062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:06.958 [DEBUG] [Thread-164062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] Compression: none
2025-09-29T18:38:06.959 [DEBUG] [Thread-164062] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:07.014 [DEBUG] [Thread-164062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:07.014 [DEBUG] [Thread-164062] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:07.014 [DEBUG] [Thread-164062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:38:07.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:38:07.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:07.070 [DEBUG] [Thread-164062] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:07.070 [DEBUG] [Thread-164062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:07.070 [DEBUG] [Thread-164062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:07.070 [DEBUG] [Thread-164062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:38:07.070 [DEBUG] [Thread-164062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:07.089 [INFO] [Thread-164062] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:07.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:38:07.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:08.063 [DEBUG] [Thread-164062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:08.064 [DEBUG] [Thread-164062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:08.111 [DEBUG] [Thread-164062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:08.111 [DEBUG] [Thread-164062] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:08.120 [DEBUG] [Thread-164062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:08.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:08.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:38:08.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:38:08.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:08.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:08.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:08.155 [DEBUG] [Thread-164062] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:08.798 [DEBUG] [Thread-164064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:38:18.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:38:18.158 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:38:18.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:38:18.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 37, 52), 12.3, 42.97, 0.0, 26.15, 12.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:38:18.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:37:52
2025-09-29T18:38:18.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:38:19.001 [DEBUG] [Thread-164065] [transport.py] [_log()] starting thread (client mode): 0x2b9c9e40
2025-09-29T18:38:19.001 [DEBUG] [Thread-164065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:19.022 [DEBUG] [Thread-164065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:38:19.022 [INFO] [Thread-164065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:38:19.024 [DEBUG] [Thread-164065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:19.024 [DEBUG] [Thread-164065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:38:19.024 [DEBUG] [Thread-164065] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:19.024 [DEBUG] [Thread-164065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] Compression: none
2025-09-29T18:38:19.025 [DEBUG] [Thread-164065] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:19.038 [DEBUG] [Thread-164065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:19.038 [DEBUG] [Thread-164065] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:19.039 [DEBUG] [Thread-164065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:38:19.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:38:19.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:19.040 [DEBUG] [Thread-164065] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:19.041 [DEBUG] [Thread-164065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:19.041 [DEBUG] [Thread-164065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:19.041 [DEBUG] [Thread-164065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:38:19.041 [DEBUG] [Thread-164065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:19.060 [INFO] [Thread-164065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:19.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:19.860 [DEBUG] [Thread-164065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:19.860 [DEBUG] [Thread-164065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:19.860 [DEBUG] [Thread-164065] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:38:19.901 [DEBUG] [Thread-164065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:19.901 [DEBUG] [Thread-164065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:19.903 [DEBUG] [Thread-164065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:19.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:19.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:38:19.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:38:19.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:38:19.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:19.925 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:38:19.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:19.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:19.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:38:19.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.692772 -999.00  +12.30  16.65     48   +1.80 1 1 1 1 1   874    0 10.22 -18.81 ----- 16.6 16.6 151.3 25.9 13.8 -26.0 13.7 -25.0 13.7 -25.2 14.0 -26.1
2025-09-29T18:38:19.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:38:19.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:38:19.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.692772
2025-09-29T18:38:19.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:38:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:38:19.927 [DEBUG] [Thread-164065] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:38:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:38:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:38:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:37:52', tmtdew=12.3, humidity=42.97, cloud=0.0, wind=26.15, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:37:35.501', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:38:20.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:38:20.019 [DEBUG] [Thread-164068] [transport.py] [_log()] starting thread (client mode): 0x2e3c0040
2025-09-29T18:38:20.019 [DEBUG] [Thread-164068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:20.034 [DEBUG] [Thread-164068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:38:20.034 [INFO] [Thread-164068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:38:20.042 [DEBUG] [Thread-164068] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:20.042 [DEBUG] [Thread-164068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:38:20.042 [DEBUG] [Thread-164068] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:20.042 [DEBUG] [Thread-164068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:20.042 [DEBUG] [Thread-164068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:20.042 [DEBUG] [Thread-164068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:20.042 [DEBUG] [Thread-164068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:20.042 [DEBUG] [Thread-164068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:20.043 [DEBUG] [Thread-164068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:20.043 [DEBUG] [Thread-164068] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:20.043 [DEBUG] [Thread-164068] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:20.043 [DEBUG] [Thread-164068] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:20.043 [DEBUG] [Thread-164068] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:20.043 [DEBUG] [Thread-164068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:20.043 [DEBUG] [Thread-164068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:20.043 [DEBUG] [Thread-164068] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:20.044 [DEBUG] [Thread-164068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:20.044 [DEBUG] [Thread-164068] [transport.py] [_log()] Compression: none
2025-09-29T18:38:20.044 [DEBUG] [Thread-164068] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:20.102 [DEBUG] [Thread-164068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:20.102 [DEBUG] [Thread-164068] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:20.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:38:20.103 [DEBUG] [Thread-164068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:38:20.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:20.158 [DEBUG] [Thread-164068] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:20.158 [DEBUG] [Thread-164068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:20.158 [DEBUG] [Thread-164068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:20.158 [DEBUG] [Thread-164068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:38:20.158 [DEBUG] [Thread-164068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:20.177 [INFO] [Thread-164068] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:20.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:38:20.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:21.156 [DEBUG] [Thread-164068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:21.156 [DEBUG] [Thread-164068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:21.206 [DEBUG] [Thread-164068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:21.206 [DEBUG] [Thread-164068] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:21.218 [DEBUG] [Thread-164068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:21.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:21.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:38:21.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:38:21.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:21.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:21.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:21.252 [DEBUG] [Thread-164068] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:23.842 [DEBUG] [Thread-164070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:38:31.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:38:31.255 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:38:31.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:38:31.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 38, 25), 12.27, 43.05, 0.0, 28.48, 12.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:38:31.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:38:25
2025-09-29T18:38:31.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:38:32.098 [DEBUG] [Thread-164071] [transport.py] [_log()] starting thread (client mode): 0x2b9f1660
2025-09-29T18:38:32.098 [DEBUG] [Thread-164071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:32.120 [DEBUG] [Thread-164071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:38:32.120 [INFO] [Thread-164071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:38:32.124 [DEBUG] [Thread-164071] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:32.124 [DEBUG] [Thread-164071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:38:32.124 [DEBUG] [Thread-164071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:32.124 [DEBUG] [Thread-164071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] Compression: none
2025-09-29T18:38:32.125 [DEBUG] [Thread-164071] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:32.142 [DEBUG] [Thread-164071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:32.142 [DEBUG] [Thread-164071] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:32.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:38:32.143 [DEBUG] [Thread-164071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:38:32.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:32.145 [DEBUG] [Thread-164071] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:32.145 [DEBUG] [Thread-164071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:32.145 [DEBUG] [Thread-164071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:32.145 [DEBUG] [Thread-164071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:38:32.145 [DEBUG] [Thread-164071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:32.170 [INFO] [Thread-164071] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:32.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:32.957 [DEBUG] [Thread-164071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:32.957 [DEBUG] [Thread-164071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:32.957 [DEBUG] [Thread-164071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:38:32.998 [DEBUG] [Thread-164071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:32.999 [DEBUG] [Thread-164071] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:33.002 [DEBUG] [Thread-164071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:33.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:33.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:38:33.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:38:33.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:38:33.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:33.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:38:33.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:33.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:33.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:38:33.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.692772 -999.00  +12.30  16.65     48   +1.80 1 1 1 1 1   874    0 10.22 -18.81 ----- 16.6 16.6 151.3 25.9 13.8 -26.0 13.7 -25.0 13.7 -25.2 14.0 -26.1
2025-09-29T18:38:33.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:38:33.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:38:33.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.692772
2025-09-29T18:38:33.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:38:33.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:38:33.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:38:33.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:38:33.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:38:33.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:38:25', tmtdew=12.27, humidity=43.05, cloud=0.0, wind=28.48, temperature=12.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:37:35.501', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:38:33.029 [DEBUG] [Thread-164071] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:33.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:38:33.124 [DEBUG] [Thread-164074] [transport.py] [_log()] starting thread (client mode): 0x2e38ee30
2025-09-29T18:38:33.124 [DEBUG] [Thread-164074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:33.139 [DEBUG] [Thread-164074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:38:33.139 [INFO] [Thread-164074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:38:33.147 [DEBUG] [Thread-164074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:33.147 [DEBUG] [Thread-164074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:38:33.148 [DEBUG] [Thread-164074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:33.148 [DEBUG] [Thread-164074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:33.148 [DEBUG] [Thread-164074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:33.148 [DEBUG] [Thread-164074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:33.148 [DEBUG] [Thread-164074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:33.148 [DEBUG] [Thread-164074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:33.148 [DEBUG] [Thread-164074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:33.148 [DEBUG] [Thread-164074] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] Compression: none
2025-09-29T18:38:33.149 [DEBUG] [Thread-164074] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:33.205 [DEBUG] [Thread-164074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:33.206 [DEBUG] [Thread-164074] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:33.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:38:33.207 [DEBUG] [Thread-164074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:38:33.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:33.262 [DEBUG] [Thread-164074] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:33.262 [DEBUG] [Thread-164074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:33.262 [DEBUG] [Thread-164074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:33.262 [DEBUG] [Thread-164074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:38:33.262 [DEBUG] [Thread-164074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:33.281 [INFO] [Thread-164074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:33.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:38:33.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:34.250 [DEBUG] [Thread-164074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:34.250 [DEBUG] [Thread-164074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:34.298 [DEBUG] [Thread-164074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:34.298 [DEBUG] [Thread-164074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:34.307 [DEBUG] [Thread-164074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:34.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:34.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:38:34.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:38:34.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:34.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:34.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:34.342 [DEBUG] [Thread-164074] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:38.872 [DEBUG] [Thread-164076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:38:44.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:38:44.344 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:38:44.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:38:44.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 38, 25), 12.27, 43.05, 0.0, 28.48, 12.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:38:44.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:38:25
2025-09-29T18:38:45.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:38:45.181 [DEBUG] [Thread-164077] [transport.py] [_log()] starting thread (client mode): 0x2e3dc4f0
2025-09-29T18:38:45.181 [DEBUG] [Thread-164077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:45.205 [DEBUG] [Thread-164077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:38:45.205 [INFO] [Thread-164077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:38:45.208 [DEBUG] [Thread-164077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:45.208 [DEBUG] [Thread-164077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:38:45.208 [DEBUG] [Thread-164077] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:45.208 [DEBUG] [Thread-164077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:45.208 [DEBUG] [Thread-164077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] Compression: none
2025-09-29T18:38:45.209 [DEBUG] [Thread-164077] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:45.226 [DEBUG] [Thread-164077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:45.227 [DEBUG] [Thread-164077] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:45.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:38:45.228 [DEBUG] [Thread-164077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:38:45.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:45.229 [DEBUG] [Thread-164077] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:45.230 [DEBUG] [Thread-164077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:45.230 [DEBUG] [Thread-164077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:45.230 [DEBUG] [Thread-164077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:38:45.230 [DEBUG] [Thread-164077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:45.246 [INFO] [Thread-164077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:45.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:45.903 [DEBUG] [Thread-164077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:45.903 [DEBUG] [Thread-164077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:45.903 [DEBUG] [Thread-164077] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:38:45.944 [DEBUG] [Thread-164077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:45.944 [DEBUG] [Thread-164077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:45.947 [DEBUG] [Thread-164077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:45.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:45.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:38:45.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:38:45.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:38:45.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:45.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:38:45.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:45.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:45.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:38:45.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.693119 -999.00  +12.30  16.50     48   +1.80 1 1 1 1 1   873    0 10.06 -19.20 ----- 16.5 16.5 148.7 26.4 13.7 -25.8 13.6 -25.0 13.6 -25.3 13.9 -26.0
2025-09-29T18:38:45.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:38:45.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:38:45.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.693119
2025-09-29T18:38:45.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:38:45.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:38:45.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:38:45.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:38:45.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:38:45.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:38:25', tmtdew=12.27, humidity=43.05, cloud=0.0, wind=28.48, temperature=12.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:38:05.482', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:38:45.972 [DEBUG] [Thread-164077] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:46.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:38:46.069 [DEBUG] [Thread-164080] [transport.py] [_log()] starting thread (client mode): 0x2b9c9ae0
2025-09-29T18:38:46.069 [DEBUG] [Thread-164080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:46.083 [DEBUG] [Thread-164080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:38:46.083 [INFO] [Thread-164080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:46.091 [DEBUG] [Thread-164080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:46.092 [DEBUG] [Thread-164080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:46.092 [DEBUG] [Thread-164080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:46.092 [DEBUG] [Thread-164080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:46.092 [DEBUG] [Thread-164080] [transport.py] [_log()] Compression: none
2025-09-29T18:38:46.092 [DEBUG] [Thread-164080] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:46.151 [DEBUG] [Thread-164080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:46.152 [DEBUG] [Thread-164080] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:46.152 [DEBUG] [Thread-164080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:38:46.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:38:46.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:46.213 [DEBUG] [Thread-164080] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:46.214 [DEBUG] [Thread-164080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:46.214 [DEBUG] [Thread-164080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:46.214 [DEBUG] [Thread-164080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:38:46.214 [DEBUG] [Thread-164080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:46.233 [INFO] [Thread-164080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:46.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:38:46.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:47.220 [DEBUG] [Thread-164080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:47.220 [DEBUG] [Thread-164080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:47.268 [DEBUG] [Thread-164080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:47.268 [DEBUG] [Thread-164080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:47.279 [DEBUG] [Thread-164080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:47.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:47.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:38:47.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:38:47.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:47.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:47.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:47.313 [DEBUG] [Thread-164080] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:53.464 [DEBUG] [Thread-164082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:38:53.926 [DEBUG] [Thread-164083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:38:57.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:38:57.316 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:38:57.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:38:57.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 38, 25), 12.27, 43.05, 0.0, 28.48, 12.28, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:38:57.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:38:25
2025-09-29T18:38:58.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:38:58.193 [DEBUG] [Thread-164084] [transport.py] [_log()] starting thread (client mode): 0x2b9cace0
2025-09-29T18:38:58.193 [DEBUG] [Thread-164084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:58.213 [DEBUG] [Thread-164084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:38:58.213 [INFO] [Thread-164084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:58.216 [DEBUG] [Thread-164084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:58.217 [DEBUG] [Thread-164084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:58.217 [DEBUG] [Thread-164084] [transport.py] [_log()] Compression: none
2025-09-29T18:38:58.217 [DEBUG] [Thread-164084] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:58.231 [DEBUG] [Thread-164084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:58.231 [DEBUG] [Thread-164084] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:58.232 [DEBUG] [Thread-164084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:38:58.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:38:58.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:58.233 [DEBUG] [Thread-164084] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:58.233 [DEBUG] [Thread-164084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:58.233 [DEBUG] [Thread-164084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:58.233 [DEBUG] [Thread-164084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:38:58.233 [DEBUG] [Thread-164084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:58.242 [INFO] [Thread-164084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:58.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:38:59.065 [DEBUG] [Thread-164084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:38:59.065 [DEBUG] [Thread-164084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:38:59.065 [DEBUG] [Thread-164084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:38:59.106 [DEBUG] [Thread-164084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:38:59.106 [DEBUG] [Thread-164084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:38:59.108 [DEBUG] [Thread-164084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:38:59.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:38:59.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:38:59.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:38:59.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:38:59.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:38:59.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:38:59.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:38:59.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:38:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:38:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.693119 -999.00  +12.30  16.50     48   +1.80 1 1 1 1 1   873    0 10.06 -19.20 ----- 16.5 16.5 148.7 26.4 13.7 -25.8 13.6 -25.0 13.6 -25.3 13.9 -26.0
2025-09-29T18:38:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:38:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:38:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.693119
2025-09-29T18:38:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:38:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:38:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:38:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:38:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:38:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:38:25', tmtdew=12.27, humidity=43.05, cloud=0.0, wind=28.48, temperature=12.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:38:05.482', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:38:59.127 [DEBUG] [Thread-164084] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:38:59.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:38:59.209 [DEBUG] [Thread-164087] [transport.py] [_log()] starting thread (client mode): 0x2b9cc5e0
2025-09-29T18:38:59.210 [DEBUG] [Thread-164087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:38:59.225 [DEBUG] [Thread-164087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:38:59.225 [INFO] [Thread-164087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] client lang: <none>
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] server lang: <none>
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] kex follows: False
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] Compression: none
2025-09-29T18:38:59.233 [DEBUG] [Thread-164087] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:38:59.292 [DEBUG] [Thread-164087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:38:59.292 [DEBUG] [Thread-164087] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:38:59.292 [DEBUG] [Thread-164087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:38:59.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:38:59.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:38:59.350 [DEBUG] [Thread-164087] [transport.py] [_log()] userauth is OK
2025-09-29T18:38:59.350 [DEBUG] [Thread-164087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:38:59.350 [DEBUG] [Thread-164087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:38:59.350 [DEBUG] [Thread-164087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:38:59.350 [DEBUG] [Thread-164087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:38:59.367 [INFO] [Thread-164087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:38:59.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:38:59.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:00.387 [DEBUG] [Thread-164087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:00.387 [DEBUG] [Thread-164087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:00.434 [DEBUG] [Thread-164087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:00.434 [DEBUG] [Thread-164087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:00.444 [DEBUG] [Thread-164087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:00.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:00.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:39:00.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:39:00.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:00.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:00.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:00.478 [DEBUG] [Thread-164087] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:00.523 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:39:00.524 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:39:08.966 [DEBUG] [Thread-164089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:39:10.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:39:10.481 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:39:10.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:39:11.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 38, 57), 12.26, 43.05, 0.0, 24.08, 12.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:39:11.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:38:57
2025-09-29T18:39:11.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:39:11.324 [DEBUG] [Thread-164090] [transport.py] [_log()] starting thread (client mode): 0x2b91f790
2025-09-29T18:39:11.324 [DEBUG] [Thread-164090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:39:11.344 [DEBUG] [Thread-164090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:39:11.344 [INFO] [Thread-164090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] client lang: <none>
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] server lang: <none>
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] kex follows: False
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] Compression: none
2025-09-29T18:39:11.346 [DEBUG] [Thread-164090] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:39:11.359 [DEBUG] [Thread-164090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:39:11.360 [DEBUG] [Thread-164090] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:39:11.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:39:11.360 [DEBUG] [Thread-164090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:39:11.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:39:11.362 [DEBUG] [Thread-164090] [transport.py] [_log()] userauth is OK
2025-09-29T18:39:11.362 [DEBUG] [Thread-164090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:39:11.362 [DEBUG] [Thread-164090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:39:11.363 [DEBUG] [Thread-164090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:39:11.363 [DEBUG] [Thread-164090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:39:11.383 [INFO] [Thread-164090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:39:11.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:12.208 [DEBUG] [Thread-164090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:12.208 [DEBUG] [Thread-164090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:12.209 [DEBUG] [Thread-164090] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:39:12.249 [DEBUG] [Thread-164090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:12.249 [DEBUG] [Thread-164090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:12.251 [DEBUG] [Thread-164090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:12.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:12.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:39:12.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:39:12.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:39:12.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:12.274 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:39:12.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:12.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:12.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:39:12.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.693119 -999.00  +12.30  16.50     48   +1.80 1 1 1 1 1   873    0 10.06 -19.20 ----- 16.5 16.5 148.7 26.4 13.7 -25.8 13.6 -25.0 13.6 -25.3 13.9 -26.0
2025-09-29T18:39:12.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:39:12.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:39:12.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.693119
2025-09-29T18:39:12.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:39:12.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:39:12.276 [DEBUG] [Thread-164090] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:12.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:39:12.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:39:12.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:39:12.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:38:57', tmtdew=12.26, humidity=43.05, cloud=0.0, wind=24.08, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:38:05.482', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:39:12.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:39:12.370 [DEBUG] [Thread-164093] [transport.py] [_log()] starting thread (client mode): 0x2b923400
2025-09-29T18:39:12.370 [DEBUG] [Thread-164093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:39:12.385 [DEBUG] [Thread-164093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:39:12.385 [INFO] [Thread-164093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] client lang: <none>
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] server lang: <none>
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] kex follows: False
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:39:12.393 [DEBUG] [Thread-164093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:39:12.394 [DEBUG] [Thread-164093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:39:12.394 [DEBUG] [Thread-164093] [transport.py] [_log()] Compression: none
2025-09-29T18:39:12.394 [DEBUG] [Thread-164093] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:39:12.449 [DEBUG] [Thread-164093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:39:12.450 [DEBUG] [Thread-164093] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:39:12.450 [DEBUG] [Thread-164093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:39:12.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:39:12.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:39:12.505 [DEBUG] [Thread-164093] [transport.py] [_log()] userauth is OK
2025-09-29T18:39:12.505 [DEBUG] [Thread-164093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:39:12.505 [DEBUG] [Thread-164093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:39:12.505 [DEBUG] [Thread-164093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:39:12.506 [DEBUG] [Thread-164093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:39:12.526 [INFO] [Thread-164093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:39:12.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:39:12.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:13.465 [DEBUG] [Thread-164093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:13.465 [DEBUG] [Thread-164093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:13.513 [DEBUG] [Thread-164093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:13.513 [DEBUG] [Thread-164093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:13.522 [DEBUG] [Thread-164093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:13.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:13.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:39:13.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:39:13.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:13.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:13.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:13.556 [DEBUG] [Thread-164093] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:23.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:39:23.559 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:39:23.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:39:23.995 [DEBUG] [Thread-164095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:39:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 38, 57), 12.26, 43.05, 0.0, 24.08, 12.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:39:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:38:57
2025-09-29T18:39:24.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:39:24.397 [DEBUG] [Thread-164096] [transport.py] [_log()] starting thread (client mode): 0x2b9c8880
2025-09-29T18:39:24.397 [DEBUG] [Thread-164096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:39:24.417 [DEBUG] [Thread-164096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:39:24.417 [INFO] [Thread-164096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:39:24.420 [DEBUG] [Thread-164096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] client lang: <none>
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] server lang: <none>
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] kex follows: False
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] Compression: none
2025-09-29T18:39:24.421 [DEBUG] [Thread-164096] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:39:24.436 [DEBUG] [Thread-164096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:39:24.437 [DEBUG] [Thread-164096] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:39:24.437 [DEBUG] [Thread-164096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:39:24.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:39:24.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:39:24.438 [DEBUG] [Thread-164096] [transport.py] [_log()] userauth is OK
2025-09-29T18:39:24.438 [DEBUG] [Thread-164096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:39:24.438 [DEBUG] [Thread-164096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:39:24.438 [DEBUG] [Thread-164096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:39:24.438 [DEBUG] [Thread-164096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:39:24.451 [INFO] [Thread-164096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:39:24.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:25.099 [DEBUG] [Thread-164096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:25.099 [DEBUG] [Thread-164096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:25.099 [DEBUG] [Thread-164096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:39:25.140 [DEBUG] [Thread-164096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:25.141 [DEBUG] [Thread-164096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:25.144 [DEBUG] [Thread-164096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:25.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:25.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:39:25.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:39:25.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:39:25.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:25.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:39:25.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:25.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:39:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.693814 -999.00  +12.30  18.55     48   +1.80 1 1 1 1 1   869    0 9.83 -22.45 ----- 18.6 18.6 141.0 22.1 13.6 -25.8 13.6 -25.0 13.6 -25.0 13.8 -25.8
2025-09-29T18:39:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:39:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:39:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.693814
2025-09-29T18:39:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:39:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:39:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:39:25.168 [DEBUG] [Thread-164096] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:39:25.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:39:25.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:38:57', tmtdew=12.26, humidity=43.05, cloud=0.0, wind=24.08, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:39:05.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:39:25.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:39:25.264 [DEBUG] [Thread-164099] [transport.py] [_log()] starting thread (client mode): 0x2b91d3c0
2025-09-29T18:39:25.264 [DEBUG] [Thread-164099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:39:25.282 [DEBUG] [Thread-164099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:39:25.282 [INFO] [Thread-164099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:39:25.289 [DEBUG] [Thread-164099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] client lang: <none>
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] server lang: <none>
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] kex follows: False
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] Compression: none
2025-09-29T18:39:25.290 [DEBUG] [Thread-164099] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:39:25.352 [DEBUG] [Thread-164099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:39:25.353 [DEBUG] [Thread-164099] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:39:25.353 [DEBUG] [Thread-164099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:39:25.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:39:25.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:39:25.409 [DEBUG] [Thread-164099] [transport.py] [_log()] userauth is OK
2025-09-29T18:39:25.409 [DEBUG] [Thread-164099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:39:25.409 [DEBUG] [Thread-164099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:39:25.409 [DEBUG] [Thread-164099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:39:25.409 [DEBUG] [Thread-164099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:39:25.429 [INFO] [Thread-164099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:39:25.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:39:25.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:26.454 [DEBUG] [Thread-164099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:26.454 [DEBUG] [Thread-164099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:26.502 [DEBUG] [Thread-164099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:26.502 [DEBUG] [Thread-164099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:26.511 [DEBUG] [Thread-164099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:26.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:26.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:39:26.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:39:26.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:26.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:26.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:26.545 [DEBUG] [Thread-164099] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:36.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:39:36.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:39:36.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:39:37.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 39, 29), 12.24, 43.12, 0.0, 24.31, 12.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:39:37.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:39:29
2025-09-29T18:39:37.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:39:37.451 [DEBUG] [Thread-164101] [transport.py] [_log()] starting thread (client mode): 0x2e38e5f0
2025-09-29T18:39:37.452 [DEBUG] [Thread-164101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:39:37.472 [DEBUG] [Thread-164101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:39:37.473 [INFO] [Thread-164101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:39:37.476 [DEBUG] [Thread-164101] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:39:37.476 [DEBUG] [Thread-164101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] client lang: <none>
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] server lang: <none>
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] kex follows: False
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] Compression: none
2025-09-29T18:39:37.477 [DEBUG] [Thread-164101] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:39:37.494 [DEBUG] [Thread-164101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:39:37.494 [DEBUG] [Thread-164101] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:39:37.495 [DEBUG] [Thread-164101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:39:37.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:39:37.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:39:37.497 [DEBUG] [Thread-164101] [transport.py] [_log()] userauth is OK
2025-09-29T18:39:37.497 [DEBUG] [Thread-164101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:39:37.497 [DEBUG] [Thread-164101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:39:37.497 [DEBUG] [Thread-164101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:39:37.497 [DEBUG] [Thread-164101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:39:37.521 [INFO] [Thread-164101] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:39:37.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:38.352 [DEBUG] [Thread-164101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:38.352 [DEBUG] [Thread-164101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:38.352 [DEBUG] [Thread-164101] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:39:38.393 [DEBUG] [Thread-164101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:38.393 [DEBUG] [Thread-164101] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:38.396 [DEBUG] [Thread-164101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:38.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:38.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:39:38.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:39:38.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:39:38.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:38.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:39:38.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:38.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:38.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:39:38.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.693814 -999.00  +12.30  18.55     48   +1.80 1 1 1 1 1   869    0 9.83 -22.45 ----- 18.6 18.6 141.0 22.1 13.6 -25.8 13.6 -25.0 13.6 -25.0 13.8 -25.8
2025-09-29T18:39:38.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:39:38.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:39:38.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.693814
2025-09-29T18:39:38.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:39:38.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:39:38.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:39:38.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:39:38.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:39:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:39:29', tmtdew=12.24, humidity=43.12, cloud=0.0, wind=24.31, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:39:05.530', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:39:38.422 [DEBUG] [Thread-164101] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:38.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:39:38.518 [DEBUG] [Thread-164104] [transport.py] [_log()] starting thread (client mode): 0x2b923970
2025-09-29T18:39:38.518 [DEBUG] [Thread-164104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:39:38.532 [DEBUG] [Thread-164104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:39:38.532 [INFO] [Thread-164104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:39:38.540 [DEBUG] [Thread-164104] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:39:38.540 [DEBUG] [Thread-164104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:39:38.540 [DEBUG] [Thread-164104] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:39:38.540 [DEBUG] [Thread-164104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:38.540 [DEBUG] [Thread-164104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:38.540 [DEBUG] [Thread-164104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:38.540 [DEBUG] [Thread-164104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] client lang: <none>
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] server lang: <none>
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] kex follows: False
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:39:38.541 [DEBUG] [Thread-164104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:39:38.542 [DEBUG] [Thread-164104] [transport.py] [_log()] Compression: none
2025-09-29T18:39:38.542 [DEBUG] [Thread-164104] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:39:38.597 [DEBUG] [Thread-164104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:39:38.597 [DEBUG] [Thread-164104] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:39:38.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:39:38.599 [DEBUG] [Thread-164104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:39:38.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:39:38.653 [DEBUG] [Thread-164104] [transport.py] [_log()] userauth is OK
2025-09-29T18:39:38.653 [DEBUG] [Thread-164104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:39:38.653 [DEBUG] [Thread-164104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:39:38.653 [DEBUG] [Thread-164104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:39:38.654 [DEBUG] [Thread-164104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:39:38.672 [INFO] [Thread-164104] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:39:38.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:39:38.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:39.030 [DEBUG] [Thread-164106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:39:39.646 [DEBUG] [Thread-164104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:39.646 [DEBUG] [Thread-164104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:39.694 [DEBUG] [Thread-164104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:39.694 [DEBUG] [Thread-164104] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:39.703 [DEBUG] [Thread-164104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:39.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:39.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:39:39.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:39:39.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:39.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:39.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:39.737 [DEBUG] [Thread-164104] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:39:49.740 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:39:49.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:39:50.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 39, 29), 12.24, 43.12, 0.0, 24.31, 12.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:39:50.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:39:29
2025-09-29T18:39:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:39:50.590 [DEBUG] [Thread-164107] [transport.py] [_log()] starting thread (client mode): 0x2b9cbeb0
2025-09-29T18:39:50.590 [DEBUG] [Thread-164107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:39:50.610 [DEBUG] [Thread-164107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:39:50.610 [INFO] [Thread-164107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:39:50.613 [DEBUG] [Thread-164107] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:39:50.613 [DEBUG] [Thread-164107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] client lang: <none>
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] server lang: <none>
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] kex follows: False
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:39:50.614 [DEBUG] [Thread-164107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:39:50.615 [DEBUG] [Thread-164107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:39:50.615 [DEBUG] [Thread-164107] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:39:50.615 [DEBUG] [Thread-164107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:39:50.615 [DEBUG] [Thread-164107] [transport.py] [_log()] Compression: none
2025-09-29T18:39:50.615 [DEBUG] [Thread-164107] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:39:50.632 [DEBUG] [Thread-164107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:39:50.633 [DEBUG] [Thread-164107] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:39:50.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:39:50.635 [DEBUG] [Thread-164107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:39:50.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:39:50.637 [DEBUG] [Thread-164107] [transport.py] [_log()] userauth is OK
2025-09-29T18:39:50.637 [DEBUG] [Thread-164107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:39:50.637 [DEBUG] [Thread-164107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:39:50.637 [DEBUG] [Thread-164107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:39:50.637 [DEBUG] [Thread-164107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:39:50.660 [INFO] [Thread-164107] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:39:50.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:51.312 [DEBUG] [Thread-164107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:51.313 [DEBUG] [Thread-164107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:51.313 [DEBUG] [Thread-164107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:39:51.353 [DEBUG] [Thread-164107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:51.353 [DEBUG] [Thread-164107] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:51.356 [DEBUG] [Thread-164107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:51.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:51.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:39:51.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:39:51.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:39:51.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:51.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:39:51.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:51.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:39:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.694161 -999.00  +12.20  16.03     48   +1.80 1 1 1 1 1   868    0 10.02 -22.54 ----- 16.0 16.0 140.6 25.6 13.6 -26.0 13.5 -24.9 13.5 -25.0 13.8 -25.6
2025-09-29T18:39:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:39:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:39:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.694161
2025-09-29T18:39:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:39:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:39:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:39:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:39:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:39:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:39:29', tmtdew=12.24, humidity=43.12, cloud=0.0, wind=24.31, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:39:35.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:39:51.382 [DEBUG] [Thread-164107] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:51.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:39:51.478 [DEBUG] [Thread-164110] [transport.py] [_log()] starting thread (client mode): 0x2b91d4b0
2025-09-29T18:39:51.478 [DEBUG] [Thread-164110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:39:51.492 [DEBUG] [Thread-164110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:39:51.492 [INFO] [Thread-164110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:39:51.500 [DEBUG] [Thread-164110] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:39:51.500 [DEBUG] [Thread-164110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] client lang: <none>
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] server lang: <none>
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] kex follows: False
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] Compression: none
2025-09-29T18:39:51.501 [DEBUG] [Thread-164110] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:39:51.560 [DEBUG] [Thread-164110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:39:51.561 [DEBUG] [Thread-164110] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:39:51.561 [DEBUG] [Thread-164110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:39:51.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:39:51.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:39:51.617 [DEBUG] [Thread-164110] [transport.py] [_log()] userauth is OK
2025-09-29T18:39:51.617 [DEBUG] [Thread-164110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:39:51.617 [DEBUG] [Thread-164110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:39:51.617 [DEBUG] [Thread-164110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:39:51.617 [DEBUG] [Thread-164110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:39:51.636 [INFO] [Thread-164110] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:39:51.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:39:51.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:39:52.618 [DEBUG] [Thread-164110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:39:52.619 [DEBUG] [Thread-164110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:39:52.666 [DEBUG] [Thread-164110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:39:52.667 [DEBUG] [Thread-164110] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:39:52.675 [DEBUG] [Thread-164110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:39:52.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:39:52.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:39:52.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:39:52.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:39:52.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:39:52.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:39:52.710 [DEBUG] [Thread-164110] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:39:53.522 [DEBUG] [Thread-164112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:39:54.078 [DEBUG] [Thread-164113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:40:02.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:40:02.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:40:02.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:40:03.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 39, 29), 12.24, 43.12, 0.0, 24.31, 12.24, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:40:03.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:39:29
2025-09-29T18:40:03.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:40:03.593 [DEBUG] [Thread-164114] [transport.py] [_log()] starting thread (client mode): 0x2b9cf550
2025-09-29T18:40:03.594 [DEBUG] [Thread-164114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:40:03.613 [DEBUG] [Thread-164114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:40:03.613 [INFO] [Thread-164114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:40:03.616 [DEBUG] [Thread-164114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] client lang: <none>
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] server lang: <none>
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] kex follows: False
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:40:03.617 [DEBUG] [Thread-164114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:40:03.618 [DEBUG] [Thread-164114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:40:03.618 [DEBUG] [Thread-164114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:40:03.618 [DEBUG] [Thread-164114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:40:03.618 [DEBUG] [Thread-164114] [transport.py] [_log()] Compression: none
2025-09-29T18:40:03.618 [DEBUG] [Thread-164114] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:40:03.627 [DEBUG] [Thread-164114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:40:03.627 [DEBUG] [Thread-164114] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:40:03.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:40:03.628 [DEBUG] [Thread-164114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:40:03.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:40:03.630 [DEBUG] [Thread-164114] [transport.py] [_log()] userauth is OK
2025-09-29T18:40:03.630 [DEBUG] [Thread-164114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:40:03.630 [DEBUG] [Thread-164114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:40:03.630 [DEBUG] [Thread-164114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:40:03.630 [DEBUG] [Thread-164114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:40:03.650 [INFO] [Thread-164114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:40:03.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:40:04.749 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:40:04.750 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:40:09.131 [DEBUG] [Thread-164116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-29T18:40:09.887 [DEBUG] [Thread-164114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:40:09.887 [DEBUG] [Thread-164114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:40:09.888 [DEBUG] [Thread-164114] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:40:09.928 [DEBUG] [Thread-164114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:40:09.928 [DEBUG] [Thread-164114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:40:09.930 [DEBUG] [Thread-164114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:40:09.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:40:09.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:40:09.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:40:09.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:40:09.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:40:09.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:40:09.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:40:09.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:40:09.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:40:09.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.694161 -999.00  +12.20  16.03     48   +1.80 1 1 1 1 1   868    0 10.02 -22.54 ----- 16.0 16.0 140.6 25.6 13.6 -26.0 13.5 -24.9 13.5 -25.0 13.8 -25.6
2025-09-29T18:40:09.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:40:09.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:40:09.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.694161
2025-09-29T18:40:09.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:40:09.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:40:09.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:40:09.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:40:09.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:40:09.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:39:29', tmtdew=12.24, humidity=43.12, cloud=0.0, wind=24.31, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:39:35.510', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:40:09.999 [DEBUG] [Thread-164114] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:40:10.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:40:10.082 [DEBUG] [Thread-164118] [transport.py] [_log()] starting thread (client mode): 0x2e3c2680
2025-09-29T18:40:10.082 [DEBUG] [Thread-164118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:40:10.096 [DEBUG] [Thread-164118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-29T18:40:10.096 [INFO] [Thread-164118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-29T18:40:10.104 [DEBUG] [Thread-164118] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:40:10.104 [DEBUG] [Thread-164118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-29T18:40:10.104 [DEBUG] [Thread-164118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:40:10.104 [DEBUG] [Thread-164118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:40:10.104 [DEBUG] [Thread-164118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] client lang: <none>
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] server lang: <none>
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] kex follows: False
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] Compression: none
2025-09-29T18:40:10.105 [DEBUG] [Thread-164118] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:40:10.164 [DEBUG] [Thread-164118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:40:10.164 [DEBUG] [Thread-164118] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:40:10.165 [DEBUG] [Thread-164118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-29T18:40:10.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-29T18:40:10.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:40:10.220 [DEBUG] [Thread-164118] [transport.py] [_log()] userauth is OK
2025-09-29T18:40:10.220 [DEBUG] [Thread-164118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:40:10.220 [DEBUG] [Thread-164118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:40:10.220 [DEBUG] [Thread-164118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-29T18:40:10.221 [DEBUG] [Thread-164118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:40:10.240 [INFO] [Thread-164118] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:40:10.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-29T18:40:10.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:40:11.209 [DEBUG] [Thread-164118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:40:11.209 [DEBUG] [Thread-164118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:40:11.257 [DEBUG] [Thread-164118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:40:11.257 [DEBUG] [Thread-164118] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:40:11.266 [DEBUG] [Thread-164118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:40:11.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:40:11.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-29T18:40:11.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-29T18:40:11.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:40:11.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:40:11.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:40:11.301 [DEBUG] [Thread-164118] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:40:21.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-29T18:40:21.302 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-29T18:40:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-29T18:40:21.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 29, 18, 40, 1), 12.21, 43.22, 0.0, 24.49, 12.29, 0, 0, 0, 2, 0, 0),)
2025-09-29T18:40:21.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-29 18:40:01
2025-09-29T18:40:22.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-29T18:40:22.173 [DEBUG] [Thread-164120] [transport.py] [_log()] starting thread (client mode): 0x2b9ccc40
2025-09-29T18:40:22.173 [DEBUG] [Thread-164120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-29T18:40:22.190 [DEBUG] [Thread-164120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-29T18:40:22.190 [INFO] [Thread-164120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] client lang: <none>
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] server lang: <none>
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] kex follows: False
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-29T18:40:22.192 [DEBUG] [Thread-164120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-29T18:40:22.193 [DEBUG] [Thread-164120] [transport.py] [_log()] Compression: none
2025-09-29T18:40:22.193 [DEBUG] [Thread-164120] [transport.py] [_log()] === End of kex handshake ===
2025-09-29T18:40:22.202 [DEBUG] [Thread-164120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-29T18:40:22.202 [DEBUG] [Thread-164120] [transport.py] [_log()] Switch to new keys ...
2025-09-29T18:40:22.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-29T18:40:22.202 [DEBUG] [Thread-164120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-29T18:40:22.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-29T18:40:22.203 [DEBUG] [Thread-164120] [transport.py] [_log()] userauth is OK
2025-09-29T18:40:22.203 [DEBUG] [Thread-164120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-29T18:40:22.203 [DEBUG] [Thread-164120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-29T18:40:22.203 [DEBUG] [Thread-164120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-29T18:40:22.203 [DEBUG] [Thread-164120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-29T18:40:22.218 [INFO] [Thread-164120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-29T18:40:22.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-29T18:40:22.860 [DEBUG] [Thread-164120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-29T18:40:22.860 [DEBUG] [Thread-164120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-29T18:40:22.860 [DEBUG] [Thread-164120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-29T18:40:22.901 [DEBUG] [Thread-164120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-29T18:40:22.901 [DEBUG] [Thread-164120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-29T18:40:22.902 [DEBUG] [Thread-164120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-29T18:40:22.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-29T18:40:22.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-29T18:40:22.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-29T18:40:22.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-29T18:40:22.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-29T18:40:22.914 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-29T18:40:22.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-29T18:40:22.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-29T18:40:22.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-29T18:40:22.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60947.694508 -999.00  +12.20  17.85     49   +1.80 1 1 1 1 1   865    0 10.00 -21.58 ----- 17.9 17.9 141.6 26.4 13.5 -25.7 13.5 -24.9 13.4 -24.8 13.7 -25.5
2025-09-29T18:40:22.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-29T18:40:22.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-29T18:40:22.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60947.694508
2025-09-29T18:40:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-29T18:40:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-29T18:40:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-29T18:40:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-29T18:40:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-29T18:40:22.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-29T18:40:01', tmtdew=12.21, humidity=43.22, cloud=0.0, wind=24.49, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T23:06:01', seeing=6.55, atlas_timestamp='2025-09-29T16:40:05.491', atlas_cloud=1, atlas_rain=1, zp_data=[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 2.1702499999999993, nan, nan, nan, nan, 0.6694999999999993, 0.6092499999999994, 2.5125, 2.070999999999999, nan, 2.4109999999999987, nan, nan, 1.7707499999999996, 0.4425000000000008, 2.4935, 2.79275, 2.0625, nan, nan, 2.5135000000000005, 2.3500000000000005, nan], zp_timestamp='2025-09-29T01:06:00')
2025-09-29T18:40:22.915 [DEBUG] [Thread-164120] [transport.py] [_log()] EOF in transport thread
2025-09-29T18:40:22.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-29T18:40:22.999 [DEBUG] [Thread-164123] [transport.py] [_log()] starting thread (client mode): 0x2e38d1e0
2025-09-29T18:40:22.999 [DEBUG] [Thread-164123] [transport.py] [_log()] Loca
[file cut: first 33554432 bytes kept]
[document cut: first 32640387 of 33554432 characters kept]
